ad-drift
SkillFiles & storageRead-only drift audit — compare AGENTS.md, ARCHITECTURE.md, and ADR statuses against what the code actually does. Outputs a drift list, never writes files. Use when the user wants to audit, review for drift, sanity-check, or report inconsistencies between the repo's docs and its code.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the ad-drift skill
What this skill tells your AI
The instructions your AI receives, as published by alexandremendoncaalvaro/corridorkey-runtime in .agents/skills/ad-drift/SKILL.md and read by ahel’s review.
<background_information> Read-only. Produces a drift list comparing the repo's operational docs against what the code actually does. Writes nothing — the user decides whether to fix the spec or the code. </background_information>
Step 2 — run checks.
AGENTS.md drift (if present):
- Stack — does the listed stack match
package.json/pyproject.toml/Cargo.toml/go.mod/ equivalent? - Setup/build/test commands — do they match
package.json#scripts,Makefile, orpyproject.toml? - Quality gates — do referenced hook configs exist (
.husky/,.pre-commit-config.yaml,.github/workflows/)? - Repository layout — do referenced directories exist?
- Pre-approved commands — anything in the list missing from the toolchain?
ARCHITECTURE.md drift (if present):
- Layers and boundaries — do the named directories exist? Sample 1–2 files per layer; are imports respecting the stated boundaries?
- Patterns — sample one handler / one repository / one entry point. Do they follow the documented pattern?
- No
## Active ADRssection — ARCHITECTURE.md must not duplicate thedoc/adr/directory index per ADR-0030 §2.
ADR drift (if doc/adr/ exists):
- Numbering — gaps or duplicates in
doc/adr/NNNN-*.md? - Status field — every ADR has one of
proposed | accepted | deprecated | superseded by ADR-NNNN. - Superseded chains — every "superseded by ADR-NNNN" target exists.
Spec drift (if doc/specs/ exists; structural integrity only — does NOT deep-audit spec text against code, deferred per ADR-0011):
- Numbering — gaps or duplicates in
doc/specs/NNNN-*.md? - Status field — every spec has one of
draft | accepted | shipped | superseded by SPEC-NNNN. - Superseded chains — every "superseded by SPEC-NNNN" target exists.
- Reciprocity — every task with non-empty
Spec refpoints to a spec that exists; every accepted/shipped spec has at least one entry in its Related → Tasks list. - No checkbox UI — per ADR-0030 §1, Spec is decision-record (not tracking). Functional Requirements / Non-functional Requirements / Success Criteria must use plain bullets, not
- [ ]checkboxes; implementation tracking lives in per-Spec tasks. - Status / task aggregate alignment — when every task referencing a spec is done, the spec's Status should be
shipped. A spec with all tasks done but Status: accepted is drift between work-unit completion and feature-level claim.
Documentation discipline drift (WORKFLOW.md §2 / ADR-0008). Audit narrative documents — README.md, AGENTS.md / CLAUDE.md, ARCHITECTURE.md, DESIGN.md, and prose pages under doc/ that are not lifecycle-managed artifacts under doc/product/, doc/specs/, doc/adr/, or doc/tasks/:
- Emoji — any present? Rule 3 forbids emoji anywhere (docs, code, comments, commits, skill outputs).
- Dates / version stamps /
DRAFTmarkers / changelog blocks in narrative documents — Rule 2 forbids these. Lifecycle-managed artifacts underdoc/product/,doc/specs/,doc/adr/, anddoc/tasks/are exempt. - Business context first — does the first paragraph answer why the document exists, before what and how? Rule 4.
- Scope duplication — does the document copy material that is canonically owned by another file? Rule 5 requires linking, not copying.
- Speculation — phrases like "we might", "in the future", "could be added", or roadmaps without an ADR / task reference. Rule 1 forbids unfounded plans.
Source code (sample, not exhaustive — flag findings, not every match):
- Orphan
TODO/FIXME— Rule 7. A reference to a GitHub Issue or adoc/tasks/NNNN-*.mdtask file makes it not orphan. - Commented-out code blocks — Rule 7. Removed code lives in git history.
Single-responsibility drift (ADR-0030 / WORKFLOW §2 rules #9–#12):
- Definition-layer tracking UI (Rule #9) — grep
^- \[ \]/^- \[x\]inside AGENTS.md, WORKFLOW.md, ARCHITECTURE.md, GUIDELINES.md, CONTEXT.md,doc/product/*.md. Definition documents must not carry per-item checkbox UI. Fenced code-block examples (PR-body templates, etc.) are illustrative, not pillar tracking. - Directory-as-index duplication (Rule #10) — flag sections that re-state another layer's index:
## Active ADRsinside ARCHITECTURE.md or AGENTS.md; multi-bullet## Architectural Principlesdigests paraphrasing each ADR; PRD## Related → ADRsbullet lists enumerating the kit's ADR ledger. - Kit-state in WORKFLOW.md (Rule #12) — grep
ADR-[0-9]{4}in WORKFLOW.md. Universal philosophy must not cite kit-specific ADR numbers (downstream installs lackdoc/adr/). Literature citations and genericdoc/adr/references are allowed. - Cross-references that are decoration (Rule #11) — sample inline
per ADR-NNNNrefs in narrative documents and apply the load-bearing test: deletion leaves the surrounding statement intact → decoration; flag.
Step 3 — output. One line per finding, formatted:
[file or section]: spec says X, code says Y. Suggested resolution: change spec / change code / discuss.
Group by artifact. If a category has no drift, print one line: AGENTS.md — no drift. etc. If an audited artifact does not exist, say so explicitly rather than reporting zero findings. The Documentation discipline drift category groups findings under Documentation discipline — <category>: ....
If something the user says contradicts what the code shows, surface the conflict. Don't silently trust the user; don't silently trust the code.
<output_contract> A drift list, no file written. Read-only operation. Empty result is reported explicitly ("no drift found across audited artifacts"), not silently. Missing artifacts are flagged, not skipped. </output_contract>
Next
- Address each finding with one of the three resolutions named in the format ("change spec / change code / discuss").
- For findings that require implementation:
/ad-taskto scaffold the fix. - For workflow drift (where am I, what's stuck):
/ad-next. - For kit-version drift (state file behind current kit):
agentic update.
Signals
- GitHub stars
- 747
- Forks
- 20
- Last commit
- Aug 2026
Others that do the same job
Advanced
- Catalog kind
- skill
- Gateway key
ad-drift- Source
- github.com/alexandremendoncaalvaro/corridorkey-runtime