agentsclimarketplace

A1 reconcile

Skill N3URAL-A1/a1-specforge/skills/a1-reconcile

Spec-vs-implementation drift detection — checks whether what a spec promised actually exists in the code. Produces a drift report classifying findings as MISSING (spec asks, code lacks), EXTRA (code has, spec silent), DIVERGED (signatures/paths differ), or STALE (spec updated after last code touch). Four phases: Scope → Parse → Probe → Report. State persisted in the drift report's YAML frontmatter (scoped → parsed → probed → reported). Reports stored repo-local (external vault via `A1_VAULT_ROOT`, e.g. Obsidian) at projects/<slug>/drift-<YYYY-MM-DD>[-N].md. Three modes: single (one spec), project (all specs), vault-sync (weekly cron). MUST trigger when the user says: "drift check", "spec vs implementation", "spec vs code", "reconcile <project>" (alias: "reconcile <projekt>"), "a1-reconcile", "is the code still in sync with the spec", "spec-drift", "does the code still match the spec" (alias: "passt der code noch zur spec"), "implementation drift", "what did we ship vs what we specified", "pre-release audit", "do spec and code still agree" (alias: "stimmt spec und code noch überein"), "did I build everything in the spec" (alias: "habe ich alles gebaut was in der spec steht"), or any request to verify spec/code alignment. Orchestrates sub-agents (a1-marco-mapper for structural probing, Alex for architecture-level DIVERGED); read-only — never modifies project code or specs. Do NOT activate for: generic codebase audits without spec anchor (use a1-analyze), structural spec↔plan consistency (use a1-checklist --only 9,10), bug reports (use a1-fix), new feature work (use a1-new-feature), or PR review (use Reinhard directly).From its SKILL.md

Install
npx -y skills add N3URAL-A1/a1-specforge --skill a1-reconcile

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.1 KB, as published. Nobody here has run it

a1-reconcile — Spec ↔ Code Drift Detection (Scope → Report)

Language: English-first; German trigger aliases supported.

This skill is a thin orchestrator. The phase logic lives in workflows/. The shared CLI helper (<repo>/_shared/a1-tools.cjs reconcile) handles deterministic file ops (slot calculation, spec parsing, frontmatter updates, drift append, listing). Sub-agents do the probing in Phase 3.

When to use

Activate when the user wants to verify that what a spec promised actually got built — and is still in the code. Typical cases: pre-release audit ("did we ship what we specified?"), weekly vault-sync ("which projects have drifted?"), post-refactor sanity check ("did we accidentally remove anything the spec still requires?").

If the user wants a generic project audit without spec anchor, use a1-analyze. If they want the structural spec↔plan check (FR coverage, frontmatter link), use a1-checklist (checks #9/#10). If they want to fix the drift, hand off to a1-fix or a1-new-feature after the report.

Phases

#PhaseWorkflowStatus after
1Scopeworkflows/01-scope.mdscoped
2Parseworkflows/02-parse.mdparsed
3Probeworkflows/03-probe.mdprobed
4Reportworkflows/04-report.mdreported

Terminal non-completion status: cancelled. Cancelled reports keep their slot.

Retro: Phase 4 (Report) closes with a mandatory Retro — see workflows/04-report.md — feeding a1-evolve's pattern clustering.

Trigger modes

ModeWhat gets reconciledTypical caller
singleOne spec (--spec <###-slug>)Dev wants to verify their own feature
projectAll specs of one projectPre-release audit, before stamping shipped
vault-syncAll specs across all projects in the vaultWeekly cron / vault hygiene

The mode is set in Phase 1 and recorded in frontmatter (scope_mode, scope_targets[]). Probe and Report iterate over scope_targets.

Drift classes

Each finding in the report is classified into exactly one of:

ClassDefinitionTypical hand-off
MISSINGSpec requires an artifact (file/function/endpoint), code does not contain ita1-fix or implementation task
EXTRACode contains an artifact related to the feature but not referenced in the speca1-new-feature (update spec) or remove code
DIVERGEDBoth exist but signature/path/structure differs from what the spec statedManual inspection + targeted edit
STALESpec status: shipped and spec updated is newer than the last code commit touching the referenced areaRe-verify or re-implement

Routing — pick the right phase

  1. If the user provides a drift-report path: read frontmatter status.
  2. If no drift report exists yet: start Phase 1 (Scope) — clarify mode and targets, then create the report file via a1-tools reconcile init.
  3. Otherwise route by status:
    • scoped → Phase 2 (Parse)
    • parsed → Phase 3 (Probe)
    • probed → Phase 4 (Report)
    • reported → done; offer to start a new reconcile or hand off
    • cancelled → no work; confirm and stop

State mechanics

State is persisted in the drift-report's YAML frontmatter. Update it via the shared CLI helper, never with raw string-replace on the file:

node <repo>/_shared/a1-tools.cjs reconcile update-status \
  "projects/<slug>/drift-<YYYY-MM-DD>.md" <new-status> \
  [--phase-data '<json>']

The helper performs an atomic frontmatter rewrite (read → modify → write-temp → rename) and appends a phase_history entry with completion timestamp.

Drifts are appended one at a time via:

node <repo>/_shared/a1-tools.cjs reconcile add-drift \
  "<drift-path>" <MISSING|EXTRA|DIVERGED|STALE> "<artifact>" "<description>" \
  [--recommendation "<text>"] [--spec-ref "<FR-###>"] [--code-ref "<path:line>"]

Storage

All artifacts default repo-local; external vault via A1_VAULT_ROOT (e.g. Obsidian):

  • Drift reports: projects/<slug>/drift-<YYYY-MM-DD>[-N].md

Suffixes -2, -3 are appended for second, third, ... reports on the same day. The helper reconcile next-slot returns the next free slot.

For vault-sync mode, a single dated report aggregates all projects: projects/_vault-sync/drift-<YYYY-MM-DD>[-N].md — same suffix logic.

Learning store defaults to repo-local .a1/learnings/; set A1_VAULT_ROOT to use an external vault (e.g. Obsidian).

Agent integration

PhaseAgent(s)Source
1 Scope— (the skill itself)—
2 Parse— (CLI helper only)_shared/a1-tools.cjs reconcile parse-spec
3 Probea1-marco-mapper, Alex (optional, for architecture-level DIVERGED)agents/*-link.md
4 Report— (the skill itself)—

Sub-agents in Phase 3 receive a probe brief (templates/agent-probe-brief.md) listing every spec-referenced artifact with its expected location. They MUST return drift findings in JSON, classified into MISSING / EXTRA / DIVERGED / STALE. Free prose is rejected and re-asked once.

Sub-agents are read-only. They never modify project files, never edit the spec, never touch the drift report. If they want a change, it goes into recommendation of a drift finding.

Hard rules

  • Never edit the drift-report frontmatter directly with Edit/Write — always use a1-tools reconcile ....
  • Never modify the spec from this skill. The spec is the anchor; reconcile reads it.
  • Never modify project code from this skill. Drift findings drive hand-offs; the actual fix runs through a1-fix / a1-new-feature after the user decides.
  • Phase 2 (Parse) runs without sub-agents. Acceptance-Criteria + artifact references are extracted deterministically by the CLI.
  • Phase 3 (Probe) dispatches sub-agents in parallel when targets are independent (multi-tool-call with several Agent invocations in one turn).
  • Sub-agents in Phase 3 must follow the Output-Contract: {class: MISSING|EXTRA|DIVERGED|STALE, artifact, spec_ref, code_ref, description, recommendation}. Free-prose is rejected and re-asked once.
  • The skill NEVER auto-activates a1-fix or a1-new-feature. It proposes in suggested_next:; the user decides.
  • User-facing output language: see _shared/language-policy.md (artifacts English, conversation in the user's language).
  • One question per turn in Phase 1. Max 2 clarifying questions.
  • Reports in cancelled status keep their date+suffix slot.
  • For vault-sync mode, the skill is allowed to skip projects that have no spec under projects/<slug>/spec/ — record them in the report's skipped_projects[] with a reason.

Hand-offs (out of scope for this skill)

  • Implementation gaps surfaced as MISSING → a1-new-feature (if scope is whole new functionality) or a1-fix (if surgical).
  • DIVERGED findings → manual inspection by the user, then a1-fix for the edit. The skill proposes; it does not auto-route.
  • EXTRA findings → user decides: update spec via a1-new-feature (Phase 3 Clarify) or remove the code via a1-fix.
  • STALE findings → re-run a1-reconcile against the new spec version, or trigger a fresh a1-analyze if the drift looks structural.
  • Final launch-readiness audit: Tobi.

Versions

  • v1 (2026-05-13): initial build. 6 CLI subcommands, 4 phases, 4 drift classes, 3 trigger modes.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.