Install
openclaw skills install @athola/nm-pensive-architecture-reviewopenclaw skills install @athola/nm-pensive-architecture-reviewNight Market Skill — ported from claude-night-market/pensive. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
arch-review:context-established)arch-review:adr-audit)arch-review:interaction-mapping)arch-review:principle-checks)arch-review:risks-actions)Run pytest plugins/pensive/tests/skills/test_architecture_review.py to verify review logic.
Architecture assessment against ADRs and design principles.
/architecture-review
Load modules based on review scope:
modules/adr-audit.md (~400 tokens): ADR verification and documentation.modules/coupling-analysis.md (~450 tokens): Dependency analysis and boundary violations.modules/principle-checks.md (~500 tokens): Code quality, security, and performance.modules/fpf-methodology.md (~800 tokens): FPF (Functional, Practical, Foundation) multi-perspective review methodology.Load all modules for full reviews. For focused reviews, load only relevant modules.
arch-review:context-established: Repository, branch, motivation.arch-review:adr-audit: ADR verification and new ADR needs.arch-review:interaction-mapping: Module coupling analysis.arch-review:invariant-check: Invariant conflict detection and 3-option analysis.arch-review:principle-checks: LoD, security, performance.arch-review:risks-actions: Recommendation and follow-ups.arch-review:context-established)Confirm repository and branch:
pwd
git status -sb
Document:
arch-review:adr-audit)Load: modules/adr-audit.md
arch-review:interaction-mapping)Load: modules/coupling-analysis.md
arch-review:invariant-check)Before checking principles, identify whether the changes conflict with existing design invariants. This is the highest-judgment step in architecture review — models get this wrong more often than any other call.
Identify existing invariants:
# Detect boundary crossings in changed files
git diff --name-only | while read f; do
head -20 "$f" 2>/dev/null | rg "^(import|from|use |require)" || true
done
When a conflict is detected:
Do NOT recommend a resolution. Present the three options and escalate to human judgment:
| Option | When Right | When Wrong |
|---|---|---|
| Preserve invariant (reject feature) | Invariant simplifies many things; feature is marginal | Feature is genuinely needed and invariant is stale |
| Layer on top (add inelegantly) | Feature is needed; invariant still valuable; imperfection is OK | Layering creates a maintenance trap that will compound |
| Revise invariant (change the design) | Genuine new learning invalidates the original reasoning | You're "cleaning up" a decision you don't fully understand |
Output format:
### Invariant Conflicts
[I1] **[Invariant name]** — [what decision it represents]
- **Conflict**: [what change clashes]
- **Options**: Preserve / Layer / Revise
- **Recommendation**: ESCALATE TO HUMAN
- **Risk if wrong**: [what compounds]
Why this matters: Bad invariant decisions compound. After a few wrong calls the codebase becomes unsalvageable. This is a judgment problem, not a context problem — the agent should surface it, not solve it.
arch-review:principle-checks)Load: modules/principle-checks.md
arch-review:risks-actions)Summarize using imbue:diff-analysis/modules/risk-assessment-framework:
List follow-ups with owners and dates.
Provide recommendation: