@codepassion/skills 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +6 -1
  2. package/SKILLS.md +6 -1
  3. package/bin/c9n-skills.js +28 -3
  4. package/install.sh +25 -2
  5. package/package.json +1 -1
  6. package/skills/c9n/SKILL.md +279 -0
  7. package/skills/c9n-pipeline/SKILL.md +128 -0
  8. package/skills/c9n-pipeline/templates/Dockerfile.api +49 -0
  9. package/skills/c9n-pipeline/templates/Dockerfile.service +45 -0
  10. package/skills/c9n-pipeline/templates/Dockerfile.web +50 -0
  11. package/skills/c9n-pipeline/templates/dockerignore +18 -0
  12. package/skills/c9n-pipeline/templates/workflows/_build-job.partial.yml +13 -0
  13. package/skills/c9n-pipeline/templates/workflows/_deploy-job.partial.yml +17 -0
  14. package/skills/c9n-pipeline/templates/workflows/_migration-check.partial.yml +16 -0
  15. package/skills/c9n-pipeline/templates/workflows/ci.yml +38 -0
  16. package/skills/c9n-pipeline/templates/workflows/deployment.yml +21 -0
  17. package/skills/c9n-sentry/REFERENCE.md +172 -0
  18. package/skills/c9n-sentry/SKILL.md +53 -0
  19. package/skills/c9n-spec/SKILL.md +92 -0
  20. package/skills/c9n-spec/templates/.github/pull_request_template.md +29 -0
  21. package/skills/c9n-spec/templates/AGENTS.md +179 -0
  22. package/skills/c9n-spec/templates/CLAUDE.md +6 -0
  23. package/skills/c9n-spec/templates/CONTEXT.md +53 -0
  24. package/skills/c9n-spec/templates/DESIGN.md +73 -0
  25. package/skills/c9n-spec/templates/docs/SRS.md +37 -0
  26. package/skills/c9n-spec/templates/docs/adr/0001-spec-driven-iso29110-docs.md +44 -0
  27. package/skills/c9n-spec/templates/docs/adr/_TEMPLATE.md +26 -0
  28. package/skills/c9n-spec/templates/docs/agents/domain.md +43 -0
  29. package/skills/c9n-spec/templates/docs/agents/issue-tracker.md +22 -0
  30. package/skills/c9n-spec/templates/docs/agents/triage-labels.md +27 -0
  31. package/skills/c9n-spec/templates/docs/architecture.md +50 -0
  32. package/skills/c9n-spec/templates/docs/features/_TEMPLATE.md +34 -0
  33. package/skills/c9n-spec/templates/docs/test-plan.md +30 -0
  34. package/skills/c9n-spec/templates/docs/traceability.md +27 -0
@@ -0,0 +1,179 @@
1
+ # AGENTS.md
2
+
3
+ AI-assisted development context for the **{{PROJECT_NAME}}** repo.
4
+
5
+ > This is the canonical agent file. `CLAUDE.md` is a one-line pointer to it. Codex, Cursor,
6
+ > OpenCode, and Claude Code all read this file.
7
+
8
+ ## Spec-Driven Development Protocol (read first)
9
+
10
+ This repo follows a spec-driven, ISO/IEC 29110-aligned documentation system (Software
11
+ Implementation work products). This section is the **canonical source** — agents MUST follow it.
12
+ The repo is authoritative.
13
+
14
+ ### Doc map
15
+
16
+ | File | ISO 29110 work product | Holds |
17
+ | ---------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
18
+ | `AGENTS.md` / `CLAUDE.md` | — (agent protocol) | This protocol + stack + patterns |
19
+ | [`CONTEXT.md`](CONTEXT.md) | Domain glossary | Ubiquitous language only — no implementation |
20
+ | [`DESIGN.md`](DESIGN.md) | — (visual design system) | UI design language: color/type/component **intent & rules** (values in code) |
21
+ | [`docs/SRS.md`](docs/SRS.md) | Requirements Specification | Master registry: features + requirement IDs + system NFRs |
22
+ | [`docs/architecture.md`](docs/architecture.md) | Software Design | System map, module boundaries, data model, integrations |
23
+ | [`docs/traceability.md`](docs/traceability.md) | Traceability Record | Master index: requirement → design → test |
24
+ | [`docs/test-plan.md`](docs/test-plan.md) | Test Cases & Procedures | Master test strategy |
25
+ | `docs/adr/NNNN-*.md` | Architecture Decisions | One ADR per hard-to-reverse decision |
26
+ | `docs/features/<name>.md` | Per-feature deep doc | Sections: Requirements · Design · Test Plan · Test Cases · Traceability |
27
+
28
+ **Master-then-split (two levels):** a feature starts as a section in the master files →
29
+ graduates to its own `docs/features/<name>.md` when it outgrows the section → graduates to a
30
+ folder `docs/features/<name>/` (one file per section) only when a _section_ outgrows one file.
31
+ Default to the smallest form that fits.
32
+
33
+ **Feature ID:** every functional feature has a unique **short-code** — a 2–4 letter
34
+ human-readable mnemonic (`PAY`, `INV`, `AUTH`). The short-code _is_ the feature ID; it prefixes
35
+ all the feature's child IDs. Short-codes are **append-only** — pick a fresh, unused one for a new
36
+ feature (check `docs/SRS.md`), and never reuse one even after a feature is removed. `docs/SRS.md`
37
+ is the authoritative registry.
38
+
39
+ **Child IDs:** feature-prefixed, append-only — `PAY-REQ-001` (requirement), `PAY-TC-001` (test
40
+ case). Never reuse or renumber.
41
+
42
+ **"Design" disambiguation:** `DESIGN.md` = **visual** design (UI). The `## Design` sections in
43
+ `docs/features/*.md` and `docs/architecture.md` = **software** design (engineering). Different
44
+ layers — don't conflate them.
45
+
46
+ ### Approval gates (no code before blueprint)
47
+
48
+ A new feature passes three sequential gates, each needing the owner's sign-off:
49
+
50
+ 1. **SRS approved** — the _what_ (requirements + acceptance criteria).
51
+ 2. **Design + Test Plan approved** — the _how_ + how we'll prove it.
52
+ 3. **Code** — only now. The PR links the approved docs.
53
+
54
+ ### Definition of Ready (before touching code)
55
+
56
+ 1. Read [`CONTEXT.md`](CONTEXT.md) (glossary) and [`docs/architecture.md`](docs/architecture.md) (system map).
57
+ 2. Identify the feature; read its `docs/features/<name>.md` (or its master SRS section).
58
+ 3. For **UI work**, also read [`DESIGN.md`](DESIGN.md) first.
59
+ 4. For a **new feature**, Gate 1 **and** Gate 2 must already be approved. **No production code
60
+ before Gate 2 sign-off.**
61
+
62
+ ### Definition of Done (before opening the PR)
63
+
64
+ Apply the **behavior-change rule**: update docs **iff** the change alters observable behavior, a
65
+ requirement, an interface, or a test outcome.
66
+
67
+ | Change kind | Doc action |
68
+ | -------------------------------------------- | -------------------------------------------------------------- |
69
+ | New/changed requirement | Update SRS + traceability + test cases |
70
+ | Behavior/architecture change | Update design (+ ADR if hard-to-reverse) + affected test cases |
71
+ | Bug fix toward spec | Add a regression test case |
72
+ | Visual _intent_ change | Update `DESIGN.md` |
73
+ | Token _value_ change in Tailwind/CSS | No doc update (`DESIGN.md` references values, never copies) |
74
+ | Refactor / rename / dep-bump / typo / format | No doc update (code-only PR) |
75
+
76
+ The `.github/pull_request_template.md` checklist is the merge gate.
77
+
78
+ ### Reverse-documentation policy
79
+
80
+ Existing shipped modules each get an **as-built stub** in `docs/features/` (reverse-documented
81
+ from code, **not grilled** — requirements describe current behavior at low confidence, no test
82
+ cases). When a module is next touched, **deepen its stub** to the full chain (acceptance criteria
83
+ + Test Cases + Traceability) for the part you change — don't try to deepen the whole stub at once.
84
+ New features still get the full chain up front via the gates.
85
+
86
+ ## C9N engineering conventions (referenced, not duplicated)
87
+
88
+ These follow the Code Passion skill family — the single source of truth. Don't restate the rules
89
+ here; consult the skill:
90
+
91
+ | Topic | Skill |
92
+ | ---------------- | --------------------------- |
93
+ | Commit messages | `c9n-commit-messages` |
94
+ | Git branching | `c9n-git-branching` |
95
+ | Pull requests | `c9n-pull-requests` |
96
+ | Code review | `c9n-code-review` |
97
+ | Clean Code (TS) | `c9n-clean-code-typescript` |
98
+ | ESLint / types | `c9n-typescript-eslint` |
99
+ | Formatting | `c9n-code-formatting` |
100
+ | SemVer / deploy | `c9n-semver-deployment` |
101
+
102
+ Install: `npx @codepassion/skills install claude`.
103
+
104
+ ## Tech Stack
105
+
106
+ C9N defaults — trim rows this project doesn't use.
107
+
108
+ | Layer | Technology |
109
+ | ---------- | ------------------------------------------------ |
110
+ | Runtime | Bun |
111
+ | API | ElysiaJS |
112
+ | Frontend | Next.js / React (or Astro) |
113
+ | Database | PostgreSQL via Drizzle ORM |
114
+ | Storage | Supabase Storage + Auth |
115
+ | Build | Turborepo (monorepo) |
116
+ | Validation | Zod (shared with Drizzle via drizzle-zod) |
117
+ | Lint | ESLint + Prettier (no semicolons, double quotes) |
118
+ | Commits | Conventional Commits (commitlint + Husky) |
119
+
120
+ ## Project Structure
121
+
122
+ <!-- Describe the actual repo layout here. C9N monorepo default: -->
123
+
124
+ ```text
125
+ {{PROJECT_NAME}}/
126
+ apps/
127
+ api/ -- backend (if any)
128
+ web/ -- frontend (if any)
129
+ packages/
130
+ database/ -- Drizzle ORM schemas + client
131
+ ...
132
+ ```
133
+
134
+ <!-- =========================================================================
135
+ API MODULE PATTERNS — delete this whole section for a web-only repo.
136
+ ========================================================================= -->
137
+
138
+ ## API Module Structure (delete if no backend)
139
+
140
+ Each feature lives under `apps/api/src/modules/<feature>/`:
141
+
142
+ ```text
143
+ modules/<feature>/
144
+ models/ -- Zod schemas + types as namespace exports
145
+ use-cases/ -- Business logic as abstract static classes
146
+ services/ -- External API / infrastructure integrations
147
+ models.ts -- Barrel export
148
+ use-cases.ts -- Barrel export
149
+ constants.ts -- Shared constants
150
+ types.ts -- Shared TS interfaces
151
+ index.ts -- Elysia route definitions
152
+ ```
153
+
154
+ ### Key patterns
155
+
156
+ - **Models** — Zod `namespace` pattern; error messages as `z.literal()` so they're both
157
+ type-safe constants and response schema.
158
+ - **Use cases** — `abstract class` with a public `static execute(...)`; private `static` helpers
159
+ hold the how. `execute()` reads like a table of contents (each line a clear step), no inline
160
+ env-extraction/conditional-throw/DB-query.
161
+ - **Services** — same abstract-static shape, wrapping external integrations.
162
+ - **Routes** — `new Elysia({ prefix })`; `throw status(404, "...")` for HTTP errors.
163
+ - **Enum value objects** — `as const satisfies Record<string, T>` for type-safe dot access.
164
+
165
+ <!-- ===================== END deletable API section ===================== -->
166
+
167
+ ## Environment Variables
168
+
169
+ <!-- List required env vars and which module/package consumes each. -->
170
+
171
+ | Variable | Used by |
172
+ | -------------- | ------- |
173
+ | `DATABASE_URL` | … |
174
+
175
+ ## Code Style
176
+
177
+ Per `c9n-code-formatting` + `c9n-typescript-eslint`: no semicolons, double quotes, no trailing
178
+ commas. Barrel exports per subdirectory. Use the project's error-reporting path (e.g.
179
+ `Sentry.captureException`) — no `console.error`/`console.log` for errors.
@@ -0,0 +1,6 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ The canonical agent context for this repo is **AGENTS.md** (cross-tool standard). The import
4
+ below pulls it into Claude Code's memory so the spec-driven protocol auto-loads.
5
+
6
+ @AGENTS.md
@@ -0,0 +1,53 @@
1
+ # {{PROJECT_NAME}} — Domain Glossary & Project Context
2
+
3
+ > **Glossary only — no implementation detail.** This file is the ubiquitous language of the
4
+ > project: what each term *means*. Code, schemas, and decisions live elsewhere (`docs/`). Keep it
5
+ > a dictionary, not a spec. Produced/maintained via `/grill-with-docs`.
6
+
7
+ ## Actors
8
+
9
+ <!-- Who interacts with the system, and how they authenticate / what they can do. -->
10
+
11
+ ### <Actor>
12
+
13
+ - …
14
+
15
+ ## Core Entities
16
+
17
+ <!-- The nouns of the domain. For each: code term, customer-facing term, definition,
18
+ statuses/lifecycle, key fields. Example shape below — replace it. -->
19
+
20
+ ### <Entity> (<local-language term if any>)
21
+
22
+ - **Code term:** `<table_name>` (database), `/<route>` (API)
23
+ - **Customer-facing term:** "…"
24
+ - **Definition:** …
25
+ - **Statuses:** … → … → …
26
+ - **Lifecycle:** … → … → …
27
+
28
+ ## External Integrations
29
+
30
+ <!-- Third-party services and what they do for the domain — not how they're wired. -->
31
+
32
+ ### <Service>
33
+
34
+ - …
35
+
36
+ ## Data Model (Key Relationships)
37
+
38
+ ```
39
+ <Entity A> → <Entity B> (1:N)
40
+
41
+ ```
42
+
43
+ ## Key Business Decisions
44
+
45
+ <!-- Domain rules a newcomer would get wrong. One line each. -->
46
+
47
+ - …
48
+
49
+ ## Glossary Hygiene
50
+
51
+ - When output names a domain concept, use the term **as defined here** — don't drift to synonyms.
52
+ - If a needed concept isn't here yet: either you're inventing language the project doesn't use
53
+ (reconsider) or there's a real gap (resolve it via `/grill-with-docs`).
@@ -0,0 +1,73 @@
1
+ # DESIGN.md — {{PROJECT_NAME}} Visual Design System
2
+
3
+ Visual design language for AI-assisted UI generation. This governs the **web app**.
4
+
5
+ > **This file is intent + rules, not a token dump.** Raw token _values_ live in code and are the
6
+ > source of truth — never copy them here (they would drift). This file documents what code can't
7
+ > express: when to use what, and why.
8
+
9
+ ## Source of truth (read these for values)
10
+
11
+ | What | File |
12
+ | ----------------------------------- | ------------------------------------- |
13
+ | Palette, breakpoints, fonts, radius | `<tailwind.config.*>` |
14
+ | Semantic tokens (light/dark CSS) | `<globals.css>` |
15
+ | shadcn config | `<components.json>` |
16
+ | Component inventory | `<src/components/>` |
17
+
18
+ When generating UI, read the files above for exact values. Use this document for the rules below.
19
+
20
+ ---
21
+
22
+ ## Brand intent
23
+
24
+ <!-- One paragraph: what the product is, the feeling, the guiding aesthetic principle. -->
25
+
26
+ Guiding principles:
27
+
28
+ - **<Principle>** — …
29
+
30
+ ## Color usage rules
31
+
32
+ - **Semantic first.** Build with semantic tokens (`background`, `foreground`, `primary`, `muted`,
33
+ `accent`, `border`, `ring`) so light/dark mode works automatically. Reach for raw primitives
34
+ only for brand moments the semantic set can't express.
35
+ - **<Accent> = brand accent.** Primary CTAs, active states, key numbers. Used sparingly.
36
+ - **Destructive is functional, not decorative** — errors and irreversible actions only.
37
+
38
+ ## Typography rules
39
+
40
+ - **<Display face> for headings, <body face> for everything else.** Map new headings to an
41
+ existing tier; don't re-roll heading styles.
42
+ - **<Locale> note** — every text style must render the primary language cleanly; verify with real
43
+ content, not Latin placeholder.
44
+
45
+ ## Layout & spacing
46
+
47
+ - **Mobile-first** against the project breakpoints.
48
+ - Use the grid utilities for gutters/rhythm rather than ad-hoc padding.
49
+ - Radius is consistent — derive from the `--radius` token.
50
+
51
+ ## Components
52
+
53
+ - **shadcn is the base layer.** Extend primitives; don't fork them. Domain components compose them.
54
+ - **Match the existing component vocabulary** before inventing a new one — check the inventory.
55
+
56
+ ## Dark mode
57
+
58
+ Class-based. Both themes fully defined in code. Always build with semantic tokens; never hardcode
59
+ a hex that only works in one theme.
60
+
61
+ ---
62
+
63
+ ## Maintenance (behavior-change rule for design)
64
+
65
+ | Change | Action |
66
+ | ----------------------------------------------------------------- | ----------- |
67
+ | **Visual _intent_** changes (accent role, type-pairing, aesthetic) | Update this file |
68
+ | A **token _value_** changes in config/CSS | Code-only — no update here |
69
+ | New reusable component pattern with usage rules | Add a line under Components |
70
+
71
+ This file is a standing reference (like `CONTEXT.md`), not a gated per-feature work product. It is
72
+ **visual** design only; **software** design lives in `docs/architecture.md` and the `## Design`
73
+ sections of `docs/features/*.md`. See `AGENTS.md › Spec-Driven Development Protocol`.
@@ -0,0 +1,37 @@
1
+ # Software Requirements Specification (SRS) — Master Registry
2
+
3
+ ISO/IEC 29110 Requirements Specification work product. This is the **registry** of all features
4
+ and their requirement IDs. A feature starts as a section here; when it outgrows a section it
5
+ graduates to a single file `docs/features/<name>.md` (with a one-line pointer below); only when a
6
+ section within that file outgrows one file does it split into a `docs/features/<name>/` folder.
7
+
8
+ This registry is also the authoritative list of **feature IDs**: each feature's `Short-code` is
9
+ its unique ID (2–4 letter mnemonic) and prefixes all its requirement/test IDs. Short-codes are
10
+ append-only — a new feature picks a fresh, unused code; never reuse one. See
11
+ [`AGENTS.md`](../AGENTS.md) for the full ID convention and approval gates.
12
+
13
+ ---
14
+
15
+ ## Feature registry
16
+
17
+ | Feature | Short-code | Status | SRS location |
18
+ | ------- | ---------- | ------ | ------------ |
19
+ | <Example feature> | `EX` | Draft → SRS in progress | _(this file)_ |
20
+
21
+ > **As-built stubs** are reverse-documented from code, not grilled — requirements describe current
22
+ > behavior at low confidence and carry no test cases yet. Deepen a stub to the full chain
23
+ > (acceptance criteria + Test Cases + Traceability) when its module is next touched.
24
+
25
+ ---
26
+
27
+ ## Non-functional requirements (system-wide)
28
+
29
+ Each NFR is tagged **[verified]** (confirmed against the code as-built) or **[target]** (the
30
+ intended rule, not yet fully enforced — gap noted). Don't promote a target to verified without
31
+ checking the code.
32
+
33
+ | ID | Requirement | State |
34
+ | ------------- | ----------- | ----- |
35
+ | `SYS-NFR-001` | <e.g. errors reported via the central error path; no console.* for errors> | **[target]** |
36
+
37
+ Append new system-wide NFRs here; never renumber existing ones.
@@ -0,0 +1,44 @@
1
+ # ADR 0001 — Spec-Driven, ISO/IEC 29110-Aligned, Agent-Readable Documentation
2
+
3
+ - **Status:** Accepted
4
+ - **Date:** {{DATE}}
5
+ - **Deciders:** {{DECIDER}}
6
+
7
+ ## Context
8
+
9
+ AI agents (and humans) repeatedly lose context on a codebase: unstructured prompts, specs living
10
+ disconnected from code, and no gate between "idea" and "production code." We want spec-driven
11
+ development — approve a blueprint before code — with a recognized standard behind it. As a small
12
+ team (VSE), **ISO/IEC 29110** (Basic Profile, Software Implementation process) fits exactly.
13
+
14
+ ## Decision
15
+
16
+ Adopt a repo-resident `docs/` system as the single source of truth:
17
+
18
+ - Authoritative work products in `docs/` (PR-reviewed alongside code).
19
+ - ISO 29110 SI work products only: SRS, Architecture, Traceability, Test Cases. PM work products
20
+ stay in the issue tracker / project tools.
21
+ - Master-then-split organization; feature-prefixed append-only IDs (`PAY-REQ-001`).
22
+ - Three sequential approval gates (SRS → Design + Test Plan → Code).
23
+ - Enforcement by convention: Definition of Ready / Definition of Done in `AGENTS.md`, with the PR
24
+ template checklist as the merge gate. No hooks initially.
25
+ - Behavior-change rule decides when a change must update docs.
26
+ - Reverse-documentation: every existing module gets an **as-built stub** (requirements only, low
27
+ confidence, no test cases), deepened to the full chain when the module is next touched.
28
+
29
+ ## Consequences
30
+
31
+ **Positive:** Specs and code never drift (same PR); agents have a deterministic read-before
32
+ target; traceability satisfies the standard; predictable, low-hallucination changes.
33
+
34
+ **Negative / trade-offs considered:**
35
+
36
+ - Convention over hooks → relies on discipline + PR checklist (chosen for flexibility; hooks
37
+ remain a later backstop).
38
+ - Per-feature deep docs are lazy → the as-is system is only shallowly mapped until touched
39
+ (accepted to avoid documenting frozen code).
40
+
41
+ ## Alternatives rejected
42
+
43
+ - Specs living outside the repo (drift from code, invisible in PRs).
44
+ - Full deep reverse-scan of all modules up front (weeks documenting stable code).
@@ -0,0 +1,26 @@
1
+ # ADR NNNN — <Short title of the decision>
2
+
3
+ - **Status:** Proposed | Accepted | Superseded by ADR-XXXX
4
+ - **Date:** YYYY-MM-DD
5
+ - **Deciders:** <names>
6
+
7
+ > Only write an ADR when **all three** hold: (1) hard to reverse, (2) surprising without context,
8
+ > (3) the result of a real trade-off with genuine alternatives. Otherwise skip it.
9
+
10
+ ## Context
11
+
12
+ <!-- The forces at play: what problem, what constraints, what made this a real decision. -->
13
+
14
+ ## Decision
15
+
16
+ <!-- What we chose, stated plainly. -->
17
+
18
+ ## Consequences
19
+
20
+ **Positive:** …
21
+
22
+ **Negative / trade-offs considered:** …
23
+
24
+ ## Alternatives rejected
25
+
26
+ - <Alternative> — <why not>.
@@ -0,0 +1,43 @@
1
+ # Domain Docs
2
+
3
+ How the engineering skills should consume this repo's domain documentation when exploring the
4
+ codebase.
5
+
6
+ This repo is **single-context**: one `CONTEXT.md` + `docs/adr/` at the root.
7
+
8
+ ## Before exploring, read these
9
+
10
+ - **`CONTEXT.md`** at the repo root — the ubiquitous-language glossary.
11
+ - **`docs/adr/`** — read ADRs that touch the area you're about to work in.
12
+
13
+ > Note: this repo also runs a spec-driven, ISO/IEC 29110-aligned doc system (see `AGENTS.md`). For
14
+ > feature work, also consult `docs/SRS.md`, `docs/architecture.md`, and the relevant
15
+ > `docs/features/<name>.md` per the protocol in `AGENTS.md`.
16
+
17
+ If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest
18
+ creating them upfront. The producer skill (`/grill-with-docs`) creates them lazily when terms or
19
+ decisions actually get resolved.
20
+
21
+ ## File structure
22
+
23
+ ```text
24
+ /
25
+ ├── CONTEXT.md
26
+ ├── docs/adr/
27
+ │ └── 0001-spec-driven-iso29110-docs.md
28
+ └── apps/, packages/
29
+ ```
30
+
31
+ ## Use the glossary's vocabulary
32
+
33
+ When your output names a domain concept (an issue title, a refactor proposal, a hypothesis, a test
34
+ name), use the term as defined in `CONTEXT.md`. Don't drift to synonyms the glossary avoids.
35
+
36
+ If the concept you need isn't in the glossary yet, that's a signal — either you're inventing
37
+ language the project doesn't use (reconsider) or there's a real gap (note it for `/grill-with-docs`).
38
+
39
+ ## Flag ADR conflicts
40
+
41
+ If your output contradicts an existing ADR, surface it explicitly rather than silently overriding:
42
+
43
+ > _Contradicts ADR-0001 (spec-driven ISO 29110 docs) — but worth reopening because…_
@@ -0,0 +1,22 @@
1
+ # Issue tracker: GitHub
2
+
3
+ Issues and PRDs for this repo live as GitHub issues. Use the `gh` CLI for all operations.
4
+
5
+ ## Conventions
6
+
7
+ - **Create an issue**: `gh issue create --title "..." --body "..."`. Use a heredoc for multi-line bodies.
8
+ - **Read an issue**: `gh issue view <number> --comments`.
9
+ - **List issues**: `gh issue list --state open --json number,title,body,labels,comments --jq '[.[] | {number, title, body, labels: [.labels[].name], comments: [.comments[].body]}]'` with appropriate `--label` and `--state` filters.
10
+ - **Comment on an issue**: `gh issue comment <number> --body "..."`
11
+ - **Apply / remove labels**: `gh issue edit <number> --add-label "..."` / `--remove-label "..."`
12
+ - **Close**: `gh issue close <number> --comment "..."`
13
+
14
+ Infer the repo from `git remote -v` — `gh` does this automatically when run inside a clone.
15
+
16
+ ## When a skill says "publish to the issue tracker"
17
+
18
+ Create a GitHub issue.
19
+
20
+ ## When a skill says "fetch the relevant ticket"
21
+
22
+ Run `gh issue view <number> --comments`.
@@ -0,0 +1,27 @@
1
+ # Triage Labels
2
+
3
+ The skills speak in terms of five canonical triage roles. This file maps those roles to the actual
4
+ label strings used in this repo's issue tracker.
5
+
6
+ | Canonical role | Label in our tracker | Meaning |
7
+ | ----------------- | -------------------- | ---------------------------------------- |
8
+ | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
9
+ | `needs-info` | `needs-info` | Waiting on reporter for more information |
10
+ | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
11
+ | `ready-for-human` | `ready-for-human` | Requires human implementation |
12
+ | `wontfix` | `wontfix` | Will not be actioned |
13
+
14
+ When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label
15
+ string from this table. Edit the right-hand column to match whatever vocabulary you actually use.
16
+
17
+ ## Label provisioning
18
+
19
+ Create the labels on first use:
20
+
21
+ ```bash
22
+ gh label create needs-triage --description "Maintainer needs to evaluate" --color FBCA04
23
+ gh label create needs-info --description "Waiting on reporter" --color D4C5F9
24
+ gh label create ready-for-agent --description "Fully specified, AFK-ready" --color 0E8A16
25
+ gh label create ready-for-human --description "Needs human implementation" --color 1D76DB
26
+ gh label create wontfix --description "Will not be actioned" --color CCCCCC
27
+ ```
@@ -0,0 +1,50 @@
1
+ # Software Architecture — {{PROJECT_NAME}}
2
+
3
+ ISO/IEC 29110 Software Design work product (system level). This is the **as-is map** of the
4
+ shipped system: module boundaries, data model, and integration points. Per-feature design detail
5
+ lives in the `## Design` section of `docs/features/<name>.md`. Decisions with lasting consequences
6
+ are recorded as ADRs in `docs/adr/`.
7
+
8
+ ---
9
+
10
+ ## System context
11
+
12
+ <!-- One paragraph: runtime, apps, datastore, external integrations. Then a context diagram. -->
13
+
14
+ ```
15
+ <Actor> ─→ <Frontend> ─→ <API> ─→ <Database>
16
+ ├─→ <Integration A>
17
+ └─→ <Integration B>
18
+ ```
19
+
20
+ ## Module map
21
+
22
+ | Module | Prefix / location | Responsibility |
23
+ | ------ | ----------------- | -------------- |
24
+ | `<module>` | `/<route>` | … |
25
+
26
+ ## Module conventions
27
+
28
+ <!-- The shape every module follows. C9N API default: models/ (Zod namespaces) ·
29
+ use-cases/ (abstract static classes, execute() as a table of contents) ·
30
+ services/ (external integrations) · barrel exports · index.ts (routes).
31
+ See AGENTS.md for the full pattern. -->
32
+
33
+ ## Data model (key relationships)
34
+
35
+ ```
36
+ <Entity A> → <Entity B> (1:N)
37
+
38
+ ```
39
+
40
+ ## Integration boundaries
41
+
42
+ | Integration | Direction | Notes |
43
+ | ----------- | --------- | ----- |
44
+ | <Service> | out / in | … |
45
+
46
+ ## Per-feature design
47
+
48
+ Per-feature design lives in the `## Design` section of each `docs/features/<name>.md`. The
49
+ complete, authoritative list of features (with short-codes and links) is the registry in
50
+ [`SRS.md`](SRS.md) — not duplicated here.
@@ -0,0 +1,34 @@
1
+ # <Feature Name> (`<SHORT-CODE>`)
2
+
3
+ > Per-feature deep doc. Short-code is the feature ID and prefixes every child ID
4
+ > (`<SHORT-CODE>-REQ-001`, `<SHORT-CODE>-TC-001`) — append-only, never renumber. Register the
5
+ > feature + short-code in [`../SRS.md`](../SRS.md). See [`../../AGENTS.md`](../../AGENTS.md) for
6
+ > the protocol and approval gates.
7
+
8
+ ## 1. Requirements
9
+
10
+ <!-- The _what_. Acceptance-criteria-grade once Gate 1 is approved. -->
11
+
12
+ | ID | Requirement | Acceptance criteria |
13
+ | ------------------- | ----------- | ------------------- |
14
+ | `<SHORT-CODE>-REQ-001` | … | … |
15
+
16
+ ## 2. Design
17
+
18
+ <!-- The _how_ (software design). Module(s), data flow, key decisions. Link ADRs if any. -->
19
+
20
+ ## 3. Test Plan
21
+
22
+ <!-- How we prove it: levels, scope, what's unit vs integration vs E2E. -->
23
+
24
+ ## 4. Test Cases
25
+
26
+ | ID | Scenario | Input | Expected | Traces to |
27
+ | ------------------ | -------- | ----- | -------- | --------- |
28
+ | `<SHORT-CODE>-TC-001` | … | … | … | `<SHORT-CODE>-REQ-001` |
29
+
30
+ ## 5. Traceability
31
+
32
+ | Requirement | Design element | Test cases |
33
+ | ------------------- | -------------- | ---------- |
34
+ | `<SHORT-CODE>-REQ-001` | § 2 <section> | `<SHORT-CODE>-TC-001` |
@@ -0,0 +1,30 @@
1
+ # Test Plan — Master Strategy
2
+
3
+ ISO/IEC 29110 Test Cases & Procedures work product (system level). Defines how the system is
4
+ proven. Per-feature cases live in the `## Test Cases` section of `docs/features/<name>.md`.
5
+
6
+ ---
7
+
8
+ ## Test levels
9
+
10
+ | Level | Scope | Where |
11
+ | ------------ | ------------------------------------- | ------------------- |
12
+ | Unit | Use cases / services in isolation | <app> test suite |
13
+ | Integration | Route → use case → DB, external mocks | <app> test suite |
14
+ | Manual / E2E | End-to-end user flows | Documented per feature |
15
+
16
+ ## Conventions
17
+
18
+ - Test case IDs: `<FEATURE>-TC-NNN`, append-only (see [`AGENTS.md`](../AGENTS.md)).
19
+ - Each test case names: scenario, input, expected, and the requirement it traces to.
20
+ - A bug fix toward spec adds a **regression** test case rather than editing the SRS.
21
+
22
+ ## Per-feature plans
23
+
24
+ > **Characterization baselines.** As-built modules carry 🧪 _characterization_ cases — derived
25
+ > from the code to lock in **current behavior** for regression, not grilled specs. Promote a
26
+ > module to a grilled spec (acceptance criteria) when it is next deliberately changed.
27
+
28
+ | Feature | Plan | Cases |
29
+ | --------- | ----------------------------------------------- | ---------------------------------------------- |
30
+ | <Example> | [`features/<name>.md § 3`](features/<name>.md#3-test-plan) | [`§ 4`](features/<name>.md#4-test-cases) |
@@ -0,0 +1,27 @@
1
+ # Traceability Record — Master Index
2
+
3
+ ISO/IEC 29110 Traceability Record. Bidirectional links from each requirement to its design element
4
+ and test cases. Per-feature matrices live in the `## Traceability` section of
5
+ `docs/features/<name>.md`; this file indexes them and holds system-wide links.
6
+
7
+ Every behavior-changing requirement MUST appear here with at least one test case.
8
+
9
+ ---
10
+
11
+ ## Per-feature traceability
12
+
13
+ | Feature | Matrix |
14
+ | ------- | ------ |
15
+ | <Example> | [`features/<name>.md § 5`](features/<name>.md#5-traceability) |
16
+
17
+ > 🧪 = **characterization baseline** (cases lock current behavior). Promote to a grilled spec when
18
+ > the module is next deliberately changed.
19
+
20
+ ## How to read a matrix
21
+
22
+ | Requirement | Design element | Test cases |
23
+ | ------------- | -------------------------- | -------------------------- |
24
+ | `EX-REQ-001` | `<name>.md § 2 <section>` | `EX-TC-001`, `EX-TC-002` |
25
+
26
+ - **Forward:** requirement → which design implements it → which tests prove it.
27
+ - **Backward:** a failing `EX-TC-006` → the requirement it guards (`EX-REQ-003`).