Ai-agent-skills brownfield-drift
Enforces architecture boundaries defined in PLAN.md. Use when a PR crosses module/service boundaries, when the dev asks "are we following the architecture?", or as a scheduled architecture health check. Not for querying what a module does — use brownfield-chat for that.
install
source · Clone the upstream repo
git clone https://github.com/wednesday-solutions/ai-agent-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/wednesday-solutions/ai-agent-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/brownfield-drift" ~/.claude/skills/wednesday-solutions-ai-agent-skills-brownfield-drift && rm -rf "$T"
manifest:
skills/brownfield-drift/SKILL.mdsource content
When to use
- Dev asks "are we following the architecture?" or "is this a valid change?"
- PR touches files near module boundaries or service interfaces
- Weekly architecture health check
- Any cross-service import was just added
When NOT to use
- "What does module X do?" → use brownfield-chat
- "What breaks if I change X?" → use brownfield-chat
- Graph coverage is low on a file → use brownfield-fix (it fills gaps before editing)
- No PLAN.md exists — drift requires machine-readable boundaries in PLAN.md
What to do
- Run
via Bash toolwednesday-skills drift - Report violations with:
- The specific edge that violates the rule
- The commit that introduced it (when available)
- The suggested fix per PLAN.md intent
- For PR reviews: run
to only report new violationswednesday-skills drift --since <base-commit> - For a single rule:
wednesday-skills drift --rule <rule-name>
Adding constraints to PLAN.md
If the project has no constraints block, add one to PLAN.md:
{ "boundaries": [ { "rule": "frontend-never-imports-db", "description": "Frontend components must never import DB layer directly", "from": "src/app/**", "to": "src/lib/db/**", "type": "forbidden" }, { "rule": "no-circular-deps", "description": "No circular dependencies anywhere", "scope": "**", "type": "no-cycle" } ] }
Violation types
| Type | What it catches |
|---|---|
| Import from A → B that should never exist |
| Logic pattern appearing outside its designated owner |
| Direct import between services that should use API |
| Circular dependency between modules |
Never
- Auto-fix boundary violations — always ask the dev first
- Flag existing violations on a PR that did not introduce them (use
)--since - Run on projects without machine-readable PLAN.md constraints
- Report the same violation twice in one review session
CLI reference
wednesday-skills drift # full check wednesday-skills drift --rule frontend-never-imports-db # single rule wednesday-skills drift --since abc1234 # new drift only (for PR review)