Skip to content

Releases: me-cedric/agent-compass

v0.9.2

Choose a tag to compare

@me-cedric me-cedric released this 31 Aug 16:29

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 in docs/openspec/ got guidance for a layout it
    does not use — and spec-validation-map reported every one of its capabilities
    as missing a plan, which is the wrong question rather than a finding.
    docs/workflows/openspec.md is the reference: the
    twelve workflows, the status gate, the vocabulary mapped onto spec-kit's, and
    the nine rules. spec-driven-development.md now resolves the layout before the
    first write instead of assuming one.
  • openspec-guard enforces the chain that openspec validate cannot 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.json ratchet 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 reported 23 passed, an empty second root left by
    a move that made the CLI answer No changes exist on six active changes, and
    six of the twelve agent workflows never installed — verify, the pre-archive
    gate, among them.
  • openspec-lifecycle skill and an openspec profile, 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.yaml reaches the agent through openspec instructions at the moment it
    writes that artifact, which lands where the same sentence in AGENTS.md does
    not. The template shows the rules.<artifact> and operations.<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,
    and changelog-entry-in-the-same-task.

Changed

  • spec-validation-map detects 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-kit forces 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 a paths block for it.

v0.9.1

Choose a tag to compare

@me-cedric me-cedric released this 23 Aug 22:05

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.json for --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 --upgrade re-installs
    every record at the current pin. The check runs on three paths without being
    asked — the session-start hook, recommend, and install --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 moved 0.1.90.2.3 while its commit pin looked current, leaving the
    convert-documents-to-markdown skill telling agents to run a version four
    releases old. A reference source can now declare package and version:
    --verify fails when any local file (including a tool_version frontmatter
    field) pins a different version, and --update rewrites every occurrence when
    the pin moves.
  • Refreshed the four stale source pins — taste-skill, caveman,
    i-have-adhd, and anydoc. All nine sources are now current, and the anydoc
    package pin advanced to 0.2.3 in the skill along with it.

v0.9.0

Choose a tag to compare

@me-cedric me-cedric released this 23 Aug 21:51

Fixed

  • release is 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 a Release 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
    and skills/upstream-lock.json. The registry keeps the pin, the licence, the
    full upstream inventory, and a new recommended field 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-updates covers all nine, and --verify still 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 of argv. Tracking it
    would have lost that, so scripts/lib/upstream-skills.mjs now 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 --only routes
    each requested name to the local copy or the tracked source automatically, and
    stack profiles name external skills in an external field that selectAssets
    merges into skills. recommend, adopt, and setup-wizard therefore 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 --style does the same
    user-wide.
  • skills answers 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; --grep matches a hyphenated slug from a spaced query
    ("github actions" finds github-actions); --pack <id> reports the pack and
    how to install it.
  • convert-documents-to-markdown is now compass-authored guidance for the pinned
    @firecrawl/anydoc CLI rather than a copy of the upstream skill. The anydoc
    source stays tracked so the version pin remains visible.
  • Retired check-skill-quality and the lint:skill-quality gate. What they
    guarded is now covered by upstream-skills --verify plus 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. --global installs user-wide, --recommended takes the
    compass curation, --skill <a,b> or --all take a selection, --dry shows the
    plan. Executable payloads are refused unless --allow-scripts is passed, and
    each source's licence notice — including PolyForm's verbatim Required 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-source mission 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 in skills/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 an install
    command, an inventoryRoot, an inventoryDoc, pointers, and the
    upstreamSkills inventory 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 with git ls-tree and git 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-updates path with no separate command.

  • native-mobile-skills skill. 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-sync copies it into a host without the compass tree.

  • android-compose and swift-ios stack presets, with detection.
    detectStacks now recognises an Android Gradle plugin, AndroidManifest.xml,
    an Xcode project or workspace, Package.swift, and Podfile — and holds back
    when Expo, React Native, or Flutter is present, because those toolkits generate
    the android/ and ios/ 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-memory instinct. Why recall fails on a
    yearly-release platform, and which of the two failure modes reaches review.

v0.8.1

Choose a tag to compare

@me-cedric me-cedric released this 19 Aug 15:37

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 accepts LICENSE beside
    SKILL.md while 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
    .gitignore entry 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 migration 0.8.1 widens it for a host that already took the
    anchored form.

v0.8.0

Choose a tag to compare

@me-cedric me-cedric released this 19 Aug 10:59

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-markdown adds a pinned, local document-ingestion
    fallback for office files and text PDFs.
  • codebase-to-specs drafts 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-adr and diagram-to-likec4 supersede the Excalidraw-only skills.
    They add draw.io, embedded draw.io SVG, Mermaid, and appropriate BPMN support.

v0.7.9

Choose a tag to compare

@me-cedric me-cedric released this 19 Aug 10:55

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

Choose a tag to compare

@me-cedric me-cedric released this 19 Aug 10:55

Added

  • agent-compass evidence builds the artifact a completion claim owes. It
    collects every JUnit report and screenshot into a self-contained bundle at
    .agent/evidence/index.html for a human, summary.md for the pull
    request — and the status is binary: complete only when nothing failed and the
    promised screenshots exist. Configure it with the evidence key 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 start records the proof and a SHA-256 snapshot of the workspace;
    --phase finish re-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: the AUTO / PR / REVIEW / N/A proof 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 the keyboard-path-before-done instinct. An automated audit
    reads the rendered tree; it cannot tell you that Tab skips your new button.
  • specs/change-spec-template.md, whose ## Acceptance criteria and
    ## Expected proof scenarios headings are read literally by the change
    report, and the evidence-outlives-the-claim instinct.

Changed

  • docs/guidelines/testing-tdd.md gained 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 status reports an indexed repository as indexed. The project
    listing is read for a root path under five key names, and
    codebase-memory-mcp 0.10.5 returns the one that was missing, root_path.
    Every status read therefore ended on "this repository indexed: no", whatever
    the graph held. doctor never read that field and was correct throughout.

v0.7.7

Choose a tag to compare

@me-cedric me-cedric released this 15 Aug 16:33

Fixed

  • The Windows install path works. agent-compass code-intel install now
    downloads and runs install.ps1 through pwsh or powershell instead of
    refusing with "POSIX-only". Upstream parses $args, not a param() block, so
    the flag is --skip-config on 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 its bin\ subdirectory, the real install.ps1 default, instead of the
    POSIX ~/.local/bin. PATH splits 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 wget when curl is 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-probe no 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.md gains a platform matrix, Windows
    troubleshooting rows, and a worked false-positive example: a real
    detect_changes run on this repository returned an unrelated shell function
    among eight impacted symbols, with nothing marking the row as wrong.

v0.7.6

Choose a tag to compare

@me-cedric me-cedric released this 15 Aug 16:24

Added

  • Structural code intelligence via codebase-memory-mcp (optional). A new
    agent-compass code-intel command (status, install, configure, setup,
    doctor) installs the CBM binary with --skip-config and 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 enables auto_index and auto_watch, creates
    .mcp/codebase-memory.example.json from 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
    keeps docs/decisions/ canonical against CBM's own manage_adr feature.

  • 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, depgraph comparison,
    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.mjs gains --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

Choose a tag to compare

@me-cedric me-cedric released this 15 Aug 00:08

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 that git remote lists. A local tag alone is not a release.
    scripts/release.mjs gains --push to run that push in one command, and
    docs/workflows/releasing.md replaces the origin-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.mjs now bumps the two README.md version markers with
    package.json and CHANGELOG.md. scripts/check-release.mjs requires those
    markers, so npm run lint:release used to fail on every release until a
    person edited the file by hand.