Night Market Architecture Contract
Invarianti architetturali, ADR e punti deboli noti — con ambito al repository claude-night-market
Promosso
Cosa fa
Un contratto architetturale scritto per l'ecosistema di plugin claude-night-market: sei decisioni di design portanti, una tabella di invarianti che nomina lo script CI o il test che le applica, cinque punti deboli accettati e un riassunto di tutti gli ADR in docs/adr/. Si attiva quando si giudica un cambiamento di design che attraversa un confine di plugin, tocca un hook, aggiunge una skill o aggiorna una versione, e delega esplicitamente il gating a night-market-change-control. Ogni affermazione cita un ADR, un hash di commit o un file di enforcement controllato, quindi è utile solo all'interno di questo repository.
Rapporto di test
Clonato il repository e rivisto due volte una proposta di design in 4 parti — baseline in /private/tmp/.../scratchpad/nmac_baseline.md, skill-followed in nmac_skill.md — e tutti e quattro i verdetti si sono ribaltati. La baseline ha letto `requires-python = ">=3.12"` in pyproject.toml e ha APPROVATO l'uso di `datetime.UTC` in un hook del plugin; la skill lo ha RIFIUTATO perché gli hook vengono eseguiti sotto Python 3.9 dell'host da una directory cache, cosa che ho confermato in-tree (`UP017` ignorato con commento "keep timezone.utc for Python 3.9 compat" in pyproject.toml:174, guardia AST plugins/leyline/tests/test_python39_compat.py, 12 directory di hook elencate in .github/workflows/python39-compat.yml). La baseline ha anche APPROVATO la deduplicazione di tre copie di tasks_manager.py; la skill lo ha rifiutato citando ADR-0001 più i commit 054e2679 / 29961cd2 / d89a55c7 — ho recuperato tutte e cinque le patch di commit citate da GitHub (HTTP 200) e i soggetti corrispondono ("consolidate tasks_manager", "Revert...", "differentiate tasks_manag..."), e tutti i 12 percorsi di enforcement che ho controllato a campione esistono. Il frontmatter si analizza (nome + descrizione di 149 caratteri), l'installazione in una HOME isolata ha posizionato SKILL.md correttamente, nessun curl|sh / base64 / secret-exfil / testo di iniezione. Deduzioni: il riassunto della skill stessa è cambiato (afferma 17 ADR / v1.9.15 / 198 skill; oggi il repository ne ha 19 / 1.9.17 / 202) sebbene spedisca i comandi di ri-verifica che lo hanno rilevato, e la descrizione non dice mai "claude-night-market", quindi si attiverebbe erroneamente su un generico "design my checkout architecture" se installata al di fuori del repository.
Testato il: 2026-07-21 · Claude Code 2.x (agent harness)
Installazione
git clone --depth 1 https://github.com/athola/claude-night-market.git /tmp/night-market-architecture-contract-src mkdir -p ~/.claude/skills cp -R /tmp/night-market-architecture-contract-src/.claude/skills/night-market-architecture-contract ~/.claude/skills/night-market-architecture-contract # Single SKILL.md, no scripts, no deps, no API keys. # IMPORTANT SCOPE LIMIT: this skill documents the claude-night-market repo itself. # Every path it cites (docs/adr/, plugins/abstract/scripts/validate_budget.py, # scripts/check_skill_graph_drift.py, .github/workflows/python39-compat.yml ...) # only resolves when your cwd IS that repo. Installed into an unrelated project # it will still load (description says only "judging a design change") and give # you facts about someone else's codebase. Use it as a repo-local skill. # Sibling skills in the same dir: night-market-change-control (gating), # night-market-failure-archaeology (incidents), night-market-operations (commands).
Comandi e prompt di esempio
/night-market-architecture-contractInvarianti architetturali, ADR e punti deboli noti — con ambito al repository claude-night-market
Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):
Judge whether this design change breaks an invariantList the load-bearing decisions in this architectureIdentify weak points before this design change