Architecture review lens
Skill event4u-app/agent-config/src/skills/architecture-review-lens
Use when a diff may break system boundaries, dependency direction, or cross-service contracts — fifth judge dispatched by /review-changes alongside the four standard judges.From its SKILL.md
npx -y skills add event4u-app/agent-config --skill architecture-review-lensAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
architecture-review-lens
Fifth judge in the
/review-changesfamily. Reviews a diff for architectural fit, not correctness, security, tests, or style. Catches what the other four miss: layer violations, wrong dependency direction, leaking abstractions, and broken cross-service contracts. Sibling ofjudge-bug-hunteret al. — never overlaps.
When to use
/review-changesdispatches its "architecture" slice to this skill.- A reviewer asks "does this belong here?", "should this be in the domain layer?", or "is this leaking storage details?".
- A diff adds a cross-service call, event, or contract.
Do NOT use when:
- The diff is documentation-only or a formatting-only change.
- The concern is correctness — route to
judge-bug-hunter. - The concern is security — route to
judge-security-auditor. - The concern is naming or DRY — route to
judge-code-quality. - The concern is whether to make the architectural change — route
to
decision-recordfirst.
Procedure
1. Anchor on the system shape
Read the codebase's stated architecture (ADRs, AGENTS.md, module docs). If no shape is documented, infer it from folder structure and surface the gap. You are judging the diff against the stated shape, not a fantasy ideal.
2. Inspect each changed file for fit
For every changed file, answer:
| Question | Smell when "no" |
|---|---|
| Does this file live in the right layer? | Layer violation |
| Are imports flowing in the allowed direction? | Inverted dependency |
| Does this leak a storage / framework detail? | Leaky abstraction |
| Is the public API of the module still the same? | Contract drift |
| Does a cross-service call respect its contract? | Contract break |
Each smell is a finding with a file:line citation.
3. Check the seams
Pay special attention to:
- New public methods on existing classes.
- New imports that cross module boundaries.
- New events, queue messages, or HTTP calls.
- Removed deprecation warnings or feature flags.
Cross-module / cross-service additions are the highest-leverage findings — surface them even at low individual severity.
4. Issue a verdict per the judge contract
| Verdict | When |
|---|---|
apply | No architectural concerns; diff fits the stated shape |
revise | Findings exist; diff lands after the listed fixes |
reject | Architectural shape itself must be reconsidered (rare) |
reject requires citing which ADR or stated shape would need to
change — never reject for taste.
5. Validate the verdict
Verify before emitting: every finding has a file:line citation and
a smell label from the taxonomy; the verdict matches the worst
finding (revise if any finding exists, apply only when none);
reject cites the ADR or stated shape that would need to change.
Ensure no finding restates a concern owned by another judge.
Output format
The verdict block carries these ordered fields:
Judge:— fixed valuearchitecture-review-lensModel:andTarget:— model id from.agent-settings.ymland diff rangeVerdict:— exactly one ofapply/revise/rejectIssues:— numbered list, each withfile:line, smell label, suggested fix
Judge: architecture-review-lens
Model: <model id from .agent-settings.yml>
Target: <branch / diff range>
Verdict: apply | revise | reject
Issues:
1. 🔴 <finding> file:line
Smell: layer-violation | inverted-dep | leak | contract-drift | contract-break
Suggested fix: <one sentence>
2. 🟡 ...
3. 🟢 ...
Gotcha
- The stated shape may be wrong. If the diff has a sound reason to
break it, do NOT raise a finding — recommend an ADR via
decision-recordand approve the diff. - "Could be split into more files" is style, not architecture; route
to
judge-code-quality. - A finding with no file:line citation is a vibe; reject your own finding before issuing it.
Do NOT
- Do NOT review correctness, security, tests, or style — those are other judges.
- Do NOT issue
rejectwithout naming the ADR or stated shape that would need to change. - Do NOT raise findings against the current architecture if the diff did not introduce them; this is a diff-judge, not a codebase-audit.
- Do NOT merge findings with another judge's output — the user needs to see which lens raised each one.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most review quality skills give in ~1.1k tokens
Counted across 1,048 of the 1,783 authors here whose files we hold, read 2026-08-07
- Ask questions one at a timein 81 of 1048, across 64 files
- Provide a recommended answer for each questionin 73 of 1048, across 50 files
- Explore the codebase instead of asking answerable questionsin 66 of 1048, across 42 files
- Resolve dependencies between decisions one-by-onein 42 of 1048, across 17 files
- Interview the user relentlessly about the planin 38 of 1048, across 13 files
- Order findings by severityin 31 of 1048
- Resolve each branch of the decision treein 27 of 1048, across 5 files
- Run a grilling sessionin 26 of 1048, across 5 files
- Update CONTEXT.md immediately when a term is resolvedin 26 of 1048, across 11 files
- Propose precise canonical terms for vague languagein 25 of 1048, across 7 files
- Create documentation files lazilyin 24 of 1048, across 5 files
- Assign severity to every findingin 24 of 1048
Said here and by no other author read
- judge the diff against the stated architecture
- infer architecture from folder structure if undocumented
- assign each architectural smell a finding with a citation
- flag cross-module or cross-service additions at any severity
- select a verdict matching the worst finding
- cite the specific architecture decision for a reject verdict
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.