Releases: me-cedric/agent-compass
Release list
v0.9.2
Added
- OpenSpec is a first-class layout. The compass documented the spec-kit
quartet (spec,plan,tasks,checklist) and said nothing about OpenSpec,
so a host whose contract lives indocs/openspec/got guidance for a layout it
does not use — andspec-validation-mapreported every one of its capabilities
as missing a plan, which is the wrong question rather than a finding.
docs/workflows/openspec.mdis the reference: the
twelve workflows, the status gate, the vocabulary mapped onto spec-kit's, and
the nine rules.spec-driven-development.mdnow resolves the layout before the
first write instead of assuming one. openspec-guardenforces the chain thatopenspec validatecannot see.
Validate asks whether the files present are well-formed; the guard asks whether
the files that should be present are. Eight checks —root,config,chain,
deltas,stale,workflows,ready,orphans— plus a
.openspec-guard.jsonratchet for changes that predate a gate, where an entry
that now passes is itself a failure. Three of them come from real faults found
in a host on the first run: a change that had held a proposal and nothing else
for four days while the gate reported23 passed, an empty second root left by
a move that made the CLI answerNo changes existon six active changes, and
six of the twelve agent workflows never installed —verify, the pre-archive
gate, among them.openspec-lifecycleskill and anopenspecprofile, detected from the
resolved root, so a host with an OpenSpec root gets the procedure and the gate
and a host without one gets neither.templates/specs/openspec-config.example.yaml. A rule in the root's
config.yamlreaches the agent throughopenspec instructionsat the moment it
writes that artifact, which lands where the same sentence inAGENTS.mddoes
not. The template shows therules.<artifact>andoperations.<op>.guidance
shape — and the guard checks it, because an unquoted": "in a list item makes
the whole document fail to parse and the CLI then reports an empty project.- Nine knowledge instincts, harvested from two host projects:
openspec-artifact-chain,
cap-as-ratchet-with-baseline,
generated-file-whole-run,
build-success-needs-an-artifact,
evidence-needs-a-control,
untrusted-text-inside-a-fence,
no-undo-write-needs-a-receipt,
test-proves-presence-not-truth,
worktree-base-before-work,
parallel-locale-artifacts,
andchangelog-entry-in-the-same-task.
Changed
spec-validation-mapdetects its layout and says which one it read. On an
OpenSpec root it reports one row per active change and a capability
traceability table; on a spec-kit layout it reports the quartet as before.
--spec-kitforces the old reading.- One resolver for the OpenSpec root, in
scripts/lib/openspec.mjs, read by the
guard, the map and profile detection. The declaration in
agent-compass.commands.json(paths.openspec) wins over convention; the
commands template now carries apathsblock for it.
v0.9.1
Fixed
- A stale install is no longer silent. An install is a snapshot of a pin, so
it now records one:.agent/external-skills.json(or
~/.agent-compass/external-skills.jsonfor--global) holds the source, the
commit it came from, the skills, and the targets.external-skills --check
compares that against the current pins offline, and--upgradere-installs
every record at the current pin. The check runs on three paths without being
asked — the session-start hook,recommend, andinstall --doctor— because
for the operational corpus a moved pin means the safety gate and the
argv-secret narrowings were regenerated, which is not cosmetic. - A tracked package version is now part of the verified contract.
anydoc
had moved0.1.9→0.2.3while its commit pin looked current, leaving the
convert-documents-to-markdownskill telling agents to run a version four
releases old. A reference source can now declarepackageandversion:
--verifyfails when any local file (including atool_versionfrontmatter
field) pins a different version, and--updaterewrites every occurrence when
the pin moves. - Refreshed the four stale source pins —
taste-skill,caveman,
i-have-adhd, andanydoc. All nine sources are now current, and the anydoc
package pin advanced to0.2.3in the skill along with it.
v0.9.0
Fixed
releaseis idempotent. A second run for the same version inserted a second,
empty## [<version>]heading, and the changelog extractor then matched the
empty one — so every forge release got aRelease v<version>placeholder body
instead of the notes. It now leaves an existing section alone.
Changed
- No external skill is stored in this repository any more. All nine sources
moved to"strategy": "reference", which removed 166 vendored skill folders
andskills/upstream-lock.json. The registry keeps the pin, the licence, the
full upstream inventory, and a newrecommendedfield holding Agent Compass's
own curation — 146 of 163 operational skills, 3 of 20 caveman skills, 10 of 13
design skills. Nothing about the update lifecycle changed: one cached
--check-updatescovers all nine, and--verifystill runs offline. - The operational safety adapter moved from vendoring time to install time.
The corpus was vendored so Agent Compass could rewrite it — a safety gate on
every skill and eight passages with the secret taken out ofargv. Tracking it
would have lost that, soscripts/lib/upstream-skills.mjsnow runs inside the
installer instead. No uncorrected copy exists anywhere, an override whose
upstream target was reworded still fails rather than being dropped, and the
guarantee is now asserted against install output for all 146 skills. - One install path for local and tracked skills.
skills-sync --onlyroutes
each requested name to the local copy or the tracked source automatically, and
stack profiles name external skills in anexternalfield thatselectAssets
merges intoskills.recommend,adopt, andsetup-wizardtherefore behave
exactly as they did when the skills were vendored — a caller passes one list and
never needs to know which kind a name is.global-setup --styledoes the same
user-wide. skillsanswers for a tracked skill.agent-compass skills <name>reports
the source, pin, licence, pack membership, and install command for a skill that
is not on disk;--grepmatches a hyphenated slug from a spaced query
("github actions" findsgithub-actions);--pack <id>reports the pack and
how to install it.convert-documents-to-markdownis now compass-authored guidance for the pinned
@firecrawl/anydocCLI rather than a copy of the upstream skill. Theanydoc
source stays tracked so the version pin remains visible.- Retired
check-skill-qualityand thelint:skill-qualitygate. What they
guarded is now covered byupstream-skills --verifyplus the install-output
tests.
Added
-
external-skills— one installer for Claude Code, Codex, and Copilot.
Fetches a tracked source at its pin and writes.claude/skills/and
.agents/skills/, plus a.github/instructions/file because Copilot has no
skills directory.--globalinstalls user-wide,--recommendedtakes the
compass curation,--skill <a,b>or--alltake a selection,--dryshows the
plan. Executable payloads are refused unless--allow-scriptsis passed, and
each source's licence notice — including PolyForm's verbatimRequired Notice
line — is written beside the install. -
Compass-authored routers replacing the deleted copies:
operational-skills,
design-taste-skills, and
working-style-skills— each carrying
the curation reasoning that used to be implicit in which folders existed. -
Pointer documents: operational-skills.md
(the eight narrowings in full) and
style-and-design-skills.md. -
compass-external-sourcemission skill. The guided path for adding,
listing, curating, refreshing, or removing a tracked source: the licence gate
runs first (no licence means refuse; a use restriction is escalated, not
absorbed), then the registry entry, the computed inventory, the pointer
document, the narrowings, the fit wiring, and the tests. Routed from
MISSIONS.md. -
Native mobile coverage, tracked instead of copied. Two published skill
corpora are now registered inskills/upstream-sources.json:
android/skills(21 skills, Apache-2.0,
Google LLC) and
dpearson2699/swift-ios-skills
(86 skills, PolyForm Perimeter 1.0.0). Neither is vendored. The Apple corpus
carries a noncompete term, and Agent Compass redistributes skills to host
projects, so copying it would engage that term; the Android corpus ships its
own installer and keeps its mirrored documentation fresher than a mirror would.
See ADR 002. -
A third source strategy,
reference. A reference source is pinned,
update-checked, and documented, but owns no local file. It records aninstall
command, aninventoryRoot, aninventoryDoc,pointers, and the
upstreamSkillsinventory at the pinned commit.upstream-skills --verify
fails offline when a pointer disappears, stops naming its repository, or when
the generated inventory block drifts.upstream-skills --update <id>re-reads
the inventory from the new tree withgit ls-treeandgit show, moves the
pin, rewrites the inventory block, and prints added and removed upstream
skills — copying nothing and executing nothing. Both new sources join the
existing cached--check-updatespath with no separate command. -
native-mobile-skillsskill. Routes a native Android or Apple-platform
task to the vendor skill that covers it, installs it with the vendor's own
installer, and keeps the compass gates in force: validation on the real
toolchain, an emulator or simulator screenshot for a screen change, and no
third-party skill relaxing §4. Self-contained, so it still routes after
skills-synccopies it into a host without the compass tree. -
android-composeandswift-iosstack presets, with detection.
detectStacksnow recognises an Android Gradle plugin,AndroidManifest.xml,
an Xcode project or workspace,Package.swift, andPodfile— and holds back
when Expo, React Native, or Flutter is present, because those toolkits generate
theandroid/andios/trees rather than owning them. A Gradle build only
counts as Android when a build file applies an Android plugin, so a Kotlin
service does not match. -
platform-skill-before-memoryinstinct. Why recall fails on a
yearly-release platform, and which of the two failure modes reaches review.
v0.8.1
Fixed
- Every externally sourced skill now carries its MIT notice. The
LICENSE
file reached only the first skill of each multi-skill source, and none of the
146 skills of the operational corpus. A host that installs one skill folder
therefore received MIT content without the notice the terms require. 152 skill
folders gained the file, and the safety gate acceptsLICENSEbeside
SKILL.mdwhile it still refuses every executable payload. - The session-start update hook finds a vendored compass again. It searched
docs/agent-compass/scripts/alone, so a host that vendors anywhere else got
no notice. It now searches the common locations and honours
AGENT_COMPASS_HOME. A host that installs skill folders alone, and carries no
compass tree, still leaves quietly. - The external source cache is ignored wherever it is written. The
.gitignoreentry held a slash, which anchors a pattern to the directory of
the.gitignore. It therefore never matched
docs/agent-compass/.agent/.upstream-source-check.json. The pattern is now
unanchored, and migration0.8.1widens it for a host that already took the
anchored form.
v0.8.0
Added
- A pinned external-source registry, cached update notices, reviewed refresh
commands, and provider startup hooks now keep externally sourced skills
traceable and easy to update without automatic merges. convert-documents-to-markdownadds a pinned, local document-ingestion
fallback for office files and text PDFs.codebase-to-specsdrafts explicitly inferred specifications, decision
records, and architecture sketches from an existing codebase for human review.
Changed
- Four stale external skill sources were refreshed to their reviewed remote
heads while local safety metadata and guidance were preserved. diagram-to-adranddiagram-to-likec4supersede the Excalidraw-only skills.
They add draw.io, embedded draw.io SVG, Mermaid, and appropriate BPMN support.
v0.7.9
Fixed
- An evidence bundle no longer asks to be committed.
.agent/evidence/and
.agent/changes/join the generated artifacts the gitignore template already
lists. Both hold copied screenshots, so a host that adopted that template would
otherwise have carried megabytes of regenerable images into its history on the
first run. Publish a bundle as a CI artifact instead.
v0.7.8
Added
agent-compass evidencebuilds the artifact a completion claim owes. It
collects every JUnit report and screenshot into a self-contained bundle at
.agent/evidence/—index.htmlfor a human,summary.mdfor the pull
request — and the status is binary: complete only when nothing failed and the
promised screenshots exist. Configure it with theevidencekey of
agent-compass.commands.json. Without that key it discovers the files and
says so in the report, because a discovered count is a weaker claim than a
declared one.- A before/after report for a spec'd change.
evidence --change <slug> --phase startrecords the proof and a SHA-256 snapshot of the workspace;
--phase finishre-runs, diffs the snapshot, lists the changed and tested
files, reads the acceptance criteria out of the spec, and renders the before
and after screenshots side by side under.agent/changes/<slug>/. It is a
gate: it exits non-zero unless the after-proof is complete and something
actually changed, so a green suite over an empty diff cannot pass. docs/guidelines/definition-of-done.md. The formalism behind the
Completion Gate: theAUTO/PR/REVIEW/N/Aproof types, the rule
that no level compensates another, the blocking conditions, the actions an
agent may never take against a test, and an exception procedure that needs an
owner and a deadline and then expires.docs/guidelines/accessibility.md, the first accessibility rules in the
compass, plus thekeyboard-path-before-doneinstinct. An automated audit
reads the rendered tree; it cannot tell you that Tab skips your new button.specs/change-spec-template.md, whose## Acceptance criteriaand
## Expected proof scenariosheadings are read literally by the change
report, and theevidence-outlives-the-claiminstinct.
Changed
docs/guidelines/testing-tdd.mdgained the proof half of testing: a fixed
screen-profile matrix, the difference between regenerable execution evidence
and committed visual baselines that only a human may update, the evidence
commands, and the forbidden anti-patterns.
Fixed
code-intel statusreports an indexed repository as indexed. The project
listing is read for a root path under five key names, and
codebase-memory-mcp0.10.5 returns the one that was missing,root_path.
Every status read therefore ended on "this repository indexed: no", whatever
the graph held.doctornever read that field and was correct throughout.
v0.7.7
Fixed
- The Windows install path works.
agent-compass code-intel installnow
downloads and runsinstall.ps1throughpwshorpowershellinstead of
refusing with "POSIX-only". Upstream parses$args, not aparam()block, so
the flag is--skip-configon both platforms — the manual command previously
printed-SkipConfig, which PowerShell would have ignored while the installer
rewrote every agent's configuration. - Windows executable discovery looks in
%LOCALAPPDATA%\Programs\codebase-memory-mcp
and itsbin\subdirectory, the realinstall.ps1default, instead of the
POSIX~/.local/bin.PATHsplits on;on Windows and:elsewhere. Every
platform difference is now a pure function of(platform, env)and the whole
matrix is tested from any host. - POSIX install falls back to
wgetwhencurlis absent, and a host with
neither fails with the missing tool named plus the exact manual command. The
downloaded installer is removed afterwards instead of being left in the
temporary directory. agent-compass mcp-probeno longer reports the code-intelligence MCP example
as a readiness gap on hosts that never opted in. The example ships to every
host as a catalogue entry; it is probed once the host selects the layer.
Added
docs/tooling/codebase-memory.mdgains a platform matrix, Windows
troubleshooting rows, and a worked false-positive example: a real
detect_changesrun on this repository returned an unrelated shell function
among eight impacted symbols, with nothing marking the row as wrong.
v0.7.6
Added
-
Structural code intelligence via
codebase-memory-mcp(optional). A new
agent-compass code-intelcommand (status,install,configure,setup,
doctor) installs the CBM binary with--skip-configand lets Agent Compass
keep ownership of provider and MCP configuration.scripts/lib/codebase-memory.mjs
is the single place that finds, reads, installs, and configures the binary.
Setup enablesauto_indexandauto_watch, creates
.mcp/codebase-memory.example.jsonfrom the new template, ignores the
generated.codebase-memory/graph, and records
"codeIntelligence": "codebase-memory"in the answers file. -
AGENTS.md§1b Codebase navigation: query the code graph before broad
grep, read the exact files it returns, and never turn one query into an
exhaustive or negative claim without checking index coverage and corroborating
in source. Adds the four-source table (code, docs/ADRs, graph, projectmem),
the query hierarchy, token-discipline rules, and the ADR-ownership rule that
keepsdocs/decisions/canonical against CBM's ownmanage_adrfeature. -
docs/tooling/codebase-memory.md— purpose, when not to use it, install, CLI,
MCP, auto-index/watch, cache and ignore policy, the opt-in shared graph
artifact, the projectmem split, ADR ownership,depgraphcomparison,
troubleshooting, update/uninstall, and privacy. -
Doctor,
recommend,mcp-probe, and the setup wizard now know the layer.
Repo-level facts (ignore rule, MCP example) are required once a host selects
it; machine-level facts stay advisory so a plain clone and CI never fail.
Five eval scenarios cover navigation, impact, fallback, durable history, and
the negative-claim rule. -
A release request now ends at a published forge release, not at a pushed
tag.AGENTS.md§10 names the three artifacts a release owes: the version in
the project files, the tag on every remote, and the published release on every
remote forge.scripts/release.mjsgains--release, which implies--push,
uses the changelog section of the version as the release body, publishes once
per repository behind the remotes, and treats an existing release as success.
v0.7.5
Added
- A release request means publish.
AGENTS.md§10 now states that "push a
release", "release a patch", "release a new version", or "cut a release" is
the explicit ask that the safety rule requires, and that it authorizes the
whole chain: bump, validate, commit, tag, then push the commit and the tag to
every remote thatgit remotelists. A local tag alone is not a release.
scripts/release.mjsgains--pushto run that push in one command, and
docs/workflows/releasing.mdreplaces theorigin-only push with a loop over
every remote. - Three behaviour rules in
AGENTS.md§2 that no rule covered before: answer a
question instead of implementing it; act on cheap reversible in-scope work and
fix a defect you find rather than reporting it back; run independent work in
parallel with one writer per file.AGENTS.md§4 adds the all-items rule —
deliver every item, or name the exact blocker in one sentence.
Fixed
scripts/release.mjsnow bumps the twoREADME.mdversion markers with
package.jsonandCHANGELOG.md.scripts/check-release.mjsrequires those
markers, sonpm run lint:releaseused to fail on every release until a
person edited the file by hand.