architecture-review
Read-only architecture-reviewer agent that checks a change set against layering rules, with a read-only Bash guard.
Tags
Compatibility
- Claude Code ≥ 2.1.318
- Windows
- macOS
- verified on 2.1.318
Install
In a Claude Code session
User
Run in a Claude Code session:
/plugin install architecture-review --marketplace lindigo-design/devdigest-marketplaceThe first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.
Choose Install for you (user scope)
Project
Run in a Claude Code session:
/plugin install architecture-review --marketplace lindigo-design/devdigest-marketplaceThe first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.
Choose Install for all collaborators on this repository (project scope)
Then, in your terminal, record the marketplace in the repository for collaborators (running it again is harmless):
claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project
The commands write this .claude/settings.json:
{
"enabledPlugins": {
"architecture-review@lindigo-devdigest": true,
"engineering-paved-path@lindigo-devdigest": true
},
"extraKnownMarketplaces": {
"lindigo-devdigest": {
"source": {
"source": "github",
"repo": "lindigo-design/devdigest-marketplace"
}
}
}
}Commit it:
git add .claude/settings.jsonCollaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318. Hooks need Node.js on PATH.
If Claude Code reports the plugin as enabled but not installed, run this once:
claude plugin install architecture-review@lindigo-devdigest --scope projectLocal
Run in a Claude Code session:
/plugin install architecture-review --marketplace lindigo-design/devdigest-marketplaceThe first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.
Choose Install for you, in this repo only (local scope)
.claude/settings.local.json is personal and is not committed.
In your terminal
User
Run in your terminal:
claude plugin install architecture-review --marketplace lindigo-design/devdigest-marketplaceRestart Claude Code, or run /reload-plugins in an open session, to load it.
Project
Run in your terminal:
claude plugin marketplace add lindigo-design/devdigest-marketplace --scope projectclaude plugin install architecture-review@lindigo-devdigest --scope projectRestart Claude Code, or run /reload-plugins in an open session, to load it.
The commands write this .claude/settings.json:
{
"enabledPlugins": {
"architecture-review@lindigo-devdigest": true,
"engineering-paved-path@lindigo-devdigest": true
},
"extraKnownMarketplaces": {
"lindigo-devdigest": {
"source": {
"source": "github",
"repo": "lindigo-design/devdigest-marketplace"
}
}
}
}Commit it:
git add .claude/settings.jsonCollaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318. Hooks need Node.js on PATH.
If Claude Code reports the plugin as enabled but not installed, run this once:
claude plugin install architecture-review@lindigo-devdigest --scope projectLocal
Run in your terminal:
claude plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace --scope localRestart Claude Code, or run /reload-plugins in an open session, to load it.
.claude/settings.local.json is personal and is not committed.
Also installs, at the same scope: engineering-paved-path ^1.0
Adds ~160 tokens to every session. With its dependencies: ~506 tokens.
Components
Agent · 1
- architecture-reviewer
Reviews a change set (git range or working tree) read-only for violations of architectural boundaries. Delegate before merging, or at the end of a plan run, to check backend onion rings, frontend layering and import direction, cross-package boundaries and the project's documented architecture rules. Returns VERDICT PASS or FAIL with findings that each carry a rule id, a changed file:line, confidence of at least 80, evidence and a fix pointer; pre-existing violations are listed apart. Cannot edit files; Bash is limited by a hook to read-only git. Not for code style, performance, test quality or security review.
@agent-architecture-review:architecture-reviewermention it, or Claude delegates to it when relevantPreloads: onion-architecture (engineering-paved-path), frontend-ui-architecture (engineering-paved-path)
Hook · 1
- bash-guard
Read-only Bash guard for architecture-reviewer: allows only read-only git commands inside the repository.
PreToolUse · Bashruns automatically
Try it after install
Check that it loaded
In a session, type / and look for
/architecture-review:List installed plugins with their version, scope and status:
claude plugin listSee its components and what it adds to every session:
claude plugin details architecture-review
Call it
Agents: mention
@agent-architecture-review:architecture-reviewerYou can also name the agent in plain words, or let Claude delegate when a request matches its description. To run a whole session as the agent:
claude --agent architecture-review:architecture-reviewerHooks run automatically; there is nothing to call.
Examples from the README
@agent-architecture-review:architecture-reviewer Review my working tree against origin/mainA report with
VERDICT: PASSorFAIL, the scope (files by area), the layout it found, findings, pre-existing violations, unverified claims and what it could not check.@agent-architecture-review:architecture-reviewer base: main head: feature/invoices scope: src/modules/invoicesThe same report for one branch range, limited to the given paths.
Manage
Update this plugin
In a Claude Code session
/plugin → Installed → architecture-review → Update now
In your terminal
User
claude plugin update architecture-review@lindigo-devdigestProject
claude plugin update architecture-review@lindigo-devdigest --scope projectLocal
claude plugin update architecture-review@lindigo-devdigest --scope localFrom the terminal, restart Claude Code after the update.
Update every plugin from this marketplace
In a Claude Code session
/plugin → Marketplaces → lindigo-devdigest → Update marketplace
In your terminal
Use a Claude Code session.
claude plugin marketplace update without a name only refreshes the listings; it installs no new versions.
Turn on auto-update
In a Claude Code session
/plugin → Marketplaces → lindigo-devdigest → Enable auto-update
In your terminal
Or add autoUpdate to the marketplace entry in your settings file:
{
"extraKnownMarketplaces": {
"lindigo-devdigest": {
"source": {
"source": "github",
"repo": "lindigo-design/devdigest-marketplace"
},
"autoUpdate": true
}
}
}Auto-update is off by default for this marketplace.
Disable
In a Claude Code session
/plugin disable architecture-review@lindigo-devdigestIn your terminal
User
claude plugin disable architecture-review@lindigo-devdigestProject
claude plugin disable architecture-review@lindigo-devdigest --scope projectLocal
claude plugin disable architecture-review@lindigo-devdigest --scope localWhile a plugin that depends on it is enabled (sdd-engineering), Claude Code refuses and prints the command that disables both in order.
Enable
In a Claude Code session
/plugin enable architecture-review@lindigo-devdigestIn your terminal
User
claude plugin enable architecture-review@lindigo-devdigestProject
claude plugin enable architecture-review@lindigo-devdigest --scope projectLocal
claude plugin enable architecture-review@lindigo-devdigest --scope localUninstall
In a Claude Code session
/plugin uninstall architecture-review@lindigo-devdigestIn your terminal
User
claude plugin uninstall architecture-review@lindigo-devdigest --pruneProject
claude plugin uninstall architecture-review@lindigo-devdigest --scope project --pruneLocal
claude plugin uninstall architecture-review@lindigo-devdigest --scope local --prune--prune also removes the dependencies that were installed with it and that no other plugin needs.
For a plugin the project enables, Claude Code asks: disable it for you only, or uninstall it for everyone.
Pin this release
In a Claude Code session
Use the terminal.
In your terminal
User
claude plugin marketplace remove lindigo-devdigestclaude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0claude plugin install architecture-review@lindigo-devdigestProject
claude plugin marketplace remove lindigo-devdigestclaude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0claude plugin install architecture-review@lindigo-devdigest --scope projectLocal
claude plugin marketplace remove lindigo-devdigestclaude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0claude plugin install architecture-review@lindigo-devdigest --scope localA pin applies to the whole catalog, not only to this plugin. Removing the marketplace uninstalls every plugin installed from it and deletes their saved data, so reinstall the others afterwards. To unpin, run the same commands without #architecture-review--v1.1.0.
Latest change
1.1.02026-11-11
Added
- Eval suite
evals/:architecture-reviewerstarts on a pre-merge layering review and not on an unrelated request (deterministictool_usedgraders; run withclaude plugin eval).
architecture-review
A read-only architecture-reviewer agent that checks whether a change keeps your architectural boundaries: backend layering, frontend structure, cross-package imports and the rules your project documents. Findings come with a rule, a changed file:line, evidence and a fix pointer. A hook keeps its shell access to read-only git.
Install
/plugin marketplace add lindigo-design/devdigest-marketplace
/plugin install architecture-review@lindigo-devdigest
Installs engineering-paved-path with it. sdd-engineering installs both.
How to use
| You type | You get |
|---|---|
@agent-architecture-review:architecture-reviewer Review my working tree against origin/main |
A report with VERDICT: PASS or FAIL, the scope (files by area), the layout it found, findings, pre-existing violations, unverified claims and what it could not check. |
@agent-architecture-review:architecture-reviewer base: main head: feature/invoices scope: src/modules/invoices |
The same report for one branch range, limited to the given paths. |
@agent-architecture-review:architecture-reviewer Review the diff. Layer checker output: <paste> |
Checker violations become findings with confidence 100; the agent cannot run the checker itself. |
Each finding looks like this:
- [high] onion/rule-2 · src/modules/orders/domain/order.ts:14 · confidence 95
evidence: import { db } from "../../../db/client";
rule: onion-architecture → Hard rules
fix: move the query behind a repository port (onion-architecture examples § Repository)
VERDICT: FAIL means at least one critical or high finding. Only changed lines can carry findings; older violations are listed under PRE-EXISTING and never block.
In the SDD workflow, sdd-engineering's run-plan runs this agent on the full diff when every task has passed.
Components
| Type | Name | Purpose |
|---|---|---|
| agent | architecture-reviewer |
Read-only architecture review; preloads engineering-paved-path:onion-architecture and engineering-paved-path:frontend-ui-architecture. |
| hook | bash-guard |
PreToolUse on Bash: while architecture-reviewer runs, allows only cd inside the repository and read-only git; everything else is blocked with a reason. |
Agents are namespaced: @agent-architecture-review:<agent>.
Permissions
- The agent has
Read,Grep,Glob,Bash;Write,Edit,NotebookEdit,AgentandSkillare disallowed. - The hook is session-wide. Plugin hooks run for every
Bashcall once the plugin is enabled.bash-guardchecks theagent_typeof the caller and does nothing unless it isarchitecture-review:architecture-reviewer, so your own commands and other agents are not affected. - The hook needs
nodeonPATHand runs${CLAUDE_PLUGIN_ROOT}/hooks/bash-guard.mjs. Its self-test:node hooks/self-test.mjs. - It cannot run your layer checker (that is not read-only git). It tells you the command to run and uses the output if you pass it in.
Dependencies
| Plugin | Range | Why |
|---|---|---|
engineering-paved-path |
^1.0 |
the two architecture skills the agent preloads |
Evals
evals/ checks behaviour, not only the manifest: a pre-merge layering request starts architecture-reviewer, an unrelated one does not. The graders are deterministic (tool_used); the agent runs call the model, so a run is paid and CI does not run it.
claude plugin eval ./plugins/architecture-review --runs 1 --ablation none
Later
security-reviewer: waits for thesecurityskill, whose licence is not confirmed yet.pr-self-reviewwith a push gate.
Licence
MIT, see LICENSE. The agent and hook are adapted from an MIT-licensed course project (© 2026 Ivan Lapa); sources.json records their origin and CHANGELOG.md the source commit.
See CHANGELOG.md and COMPATIBILITY.md.
Compatibility notes
- Claude Code
- ≥ 2.1.318 (declared minimum; verified on 2.1.318, the CI pin)
- OS
- Windows 10/11, macOS