← All pluginsPlugin

architecture-review

Read-only architecture-reviewer agent that checks a change set against layering rules, with a read-only Bash guard.

Compatibility

  • Claude Code ≥ 2.1.318
  • Windows
  • macOS
  • verified on 2.1.318

Install

Who gets it

In a Claude Code session

User

  1. Run in a Claude Code session:

    /plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you (user scope)

Project

  1. Run in a Claude Code session:

    /plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for all collaborators on this repository (project scope)

  4. 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.json

Collaborators 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 project

Local

  1. Run in a Claude Code session:

    /plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you, in this repo only (local scope)

.claude/settings.local.json is personal and is not committed.

In your terminal

User

  1. Run in your terminal:

    claude plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

Project

  1. Run in your terminal:

    claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project
    claude plugin install architecture-review@lindigo-devdigest --scope project
  2. Restart 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.json

Collaborators 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 project

Local

  1. Run in your terminal:

    claude plugin install architecture-review --marketplace lindigo-design/devdigest-marketplace --scope local
  2. Restart 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-reviewer mention it, or Claude delegates to it when relevant

    Preloads: 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 · Bash runs 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 list
  • See its components and what it adds to every session:

    claude plugin details architecture-review

Call it

  • Agents: mention @agent-architecture-review:architecture-reviewer

    You 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-reviewer

  • Hooks run automatically; there is nothing to call.

Examples from the README

  • @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.

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-devdigest

Project

claude plugin update architecture-review@lindigo-devdigest --scope project

Local

claude plugin update architecture-review@lindigo-devdigest --scope local

From 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-devdigest

In your terminal

User

claude plugin disable architecture-review@lindigo-devdigest

Project

claude plugin disable architecture-review@lindigo-devdigest --scope project

Local

claude plugin disable architecture-review@lindigo-devdigest --scope local

While 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-devdigest

In your terminal

User

claude plugin enable architecture-review@lindigo-devdigest

Project

claude plugin enable architecture-review@lindigo-devdigest --scope project

Local

claude plugin enable architecture-review@lindigo-devdigest --scope local

Uninstall

In a Claude Code session

/plugin uninstall architecture-review@lindigo-devdigest

In your terminal

User

claude plugin uninstall architecture-review@lindigo-devdigest --prune

Project

claude plugin uninstall architecture-review@lindigo-devdigest --scope project --prune

Local

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-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0
claude plugin install architecture-review@lindigo-devdigest

Project

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0
claude plugin install architecture-review@lindigo-devdigest --scope project

Local

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#architecture-review--v1.1.0
claude plugin install architecture-review@lindigo-devdigest --scope local

A 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-reviewer starts on a pre-merge layering review and not on an unrelated request (deterministic tool_used graders; run with claude plugin eval).

Full changelog on GitHub

README.md

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, Agent and Skill are disallowed.
  • The hook is session-wide. Plugin hooks run for every Bash call once the plugin is enabled. bash-guard checks the agent_type of the caller and does nothing unless it is architecture-review:architecture-reviewer, so your own commands and other agents are not affected.
  • The hook needs node on PATH and 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 the security skill, whose licence is not confirmed yet.
  • pr-self-review with 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

COMPATIBILITY.md on GitHub