Night 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.
bash
/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:
bash
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:
bash
# 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:
OptionWhen RightWhen WrongPreserve invariant (reject feature)Invariant simplifies many things; feature is marginalFeature is genuinely needed and invariant is staleLayer on top (add inelegantly)Feature is needed; invariant still valuable; imperfection is OKLayering creates a maintenance trap that will compoundRevise invariant (change the design)Genuine new learning invalidates the original reasoningYou're "cleaning up" a decision you don't fully understand
Output format:
markdown
### 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: