Skip to content
AI & Agents
Skill

/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.

From plugin
ai-agent-skills
16510 skills7 commands
Install
$ npx -y skills add wednesday-solutions/ai-agent-skills --skill brownfield-drift --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/brownfield-drift

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

brownfield-drift.SKILL.md
name: brownfield-drift
description: 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.
permissions:
  allow:
    - Bash(wednesday-skills drift *)
    - Bash(git log *)

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

1. Run `wednesday-skills drift` via Bash tool 2. Report violations with:

  • The specific edge that violates the rule
  • The commit that introduced it (when available)
  • The suggested fix per PLAN.md intent

3. For PR reviews: run `wednesday-skills drift --since <base-commit>` to only report new violations 4. 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 | |------|----------------| | `forbidden` | Import from A → B that should never exist | | `ownership` | Logic pattern appearing outside its designated owner | | `no-direct-import` | Direct import between services that should use API | | `no-cycle` | 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)
Read more
Ships withai-agent-skills

Transform any repository into an AI-aware, intelligent environment — a codebase that any AI agent can jump into on day one without making junior-level mistakes.

Get the whole plugin