doctrina-cli 0.1.0 → 0.1.1

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 (33) hide show
  1. package/package.json +4 -2
  2. package/templates/AGENTS.md.template +68 -0
  3. package/templates/README.md +64 -0
  4. package/templates/adapters/aider/CONVENTIONS.md.template +11 -0
  5. package/templates/adapters/amp/README.md +13 -0
  6. package/templates/adapters/claude/CLAUDE.md.template +11 -0
  7. package/templates/adapters/codex/README.md +12 -0
  8. package/templates/adapters/continue/.continue/rules/00-doctrina.md.template +11 -0
  9. package/templates/adapters/copilot/.github/copilot-instructions.md.template +11 -0
  10. package/templates/adapters/cursor/.cursor/rules/00-doctrina.mdc.template +16 -0
  11. package/templates/adapters/devin/README.md +14 -0
  12. package/templates/adapters/factory/README.md +13 -0
  13. package/templates/adapters/gemini/GEMINI.md.template +11 -0
  14. package/templates/adapters/jules/README.md +13 -0
  15. package/templates/adapters/windsurf/.windsurfrules.template +11 -0
  16. package/templates/change/design.md.template +24 -0
  17. package/templates/change/proposal.md.template +26 -0
  18. package/templates/change/spec-delta.md.template +20 -0
  19. package/templates/change/tasks.md.template +17 -0
  20. package/templates/decision.md.template +56 -0
  21. package/templates/doctrina/changes/.gitkeep +0 -0
  22. package/templates/doctrina/changes/archive/.gitkeep +0 -0
  23. package/templates/doctrina/decisions/.gitkeep +0 -0
  24. package/templates/doctrina/index.json.template +18 -0
  25. package/templates/doctrina/product.md.template +31 -0
  26. package/templates/doctrina/skills/.gitkeep +0 -0
  27. package/templates/doctrina/specs/.gitkeep +0 -0
  28. package/templates/doctrina/templates/.gitkeep +0 -0
  29. package/templates/hooks/pre-commit.sample +7 -0
  30. package/templates/hooks/watch.sample +21 -0
  31. package/templates/skill.md.template +49 -0
  32. package/templates/spec-bug.md.template +40 -0
  33. package/templates/spec.md.template +52 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doctrina-cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Doctrina CLI — spec-driven, AGENTS.md-native framework for multi-agent AI development.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -18,10 +18,12 @@
18
18
  "doctrina": "./src/index.js"
19
19
  },
20
20
  "scripts": {
21
- "test": "node --test"
21
+ "test": "node --test",
22
+ "prepack": "node scripts/copy-templates.js"
22
23
  },
23
24
  "files": [
24
25
  "src",
26
+ "templates",
25
27
  "README.md"
26
28
  ],
27
29
  "engines": {
@@ -0,0 +1,68 @@
1
+ # AGENTS.md — {{PROJECT_NAME}}
2
+
3
+ Operational source of truth for AI coding agents working in this
4
+ repository. Follows the open AGENTS.md standard.
5
+
6
+ ## What this repo is
7
+
8
+ {{PROJECT_DESCRIPTION}}
9
+
10
+ This repository uses the Doctrina framework for spec-driven, AGENTS.md
11
+ native multi-agent development. The full framework artifacts live under
12
+ `.doctrina/`.
13
+
14
+ ## Stack and tooling
15
+
16
+ <!-- Replace with the project's actual stack. Keep this section short. -->
17
+ - Runtime:
18
+ - Package manager:
19
+ - Test runner:
20
+ - Linter / formatter:
21
+
22
+ ## Commands
23
+
24
+ <!-- Use exact, copy-pasteable commands. Avoid prose. -->
25
+ ```
26
+ # install
27
+ # build
28
+ # test
29
+ # lint
30
+ ```
31
+
32
+ ## Repository structure
33
+
34
+ <!-- Outline the top-level directories an agent needs to know about. -->
35
+
36
+ ## Conventions and boundaries
37
+
38
+ - Specs in `.doctrina/specs/<capability>/spec.md` are the current truth.
39
+ - ADRs in `.doctrina/decisions/` are immutable; supersede instead of edit.
40
+ - Active change proposals live in `.doctrina/changes/<id>/`.
41
+ - Archived changes in `.doctrina/changes/archive/` are out of the default
42
+ read path; consult only when explicitly debugging history.
43
+
44
+ ## How to read context efficiently
45
+
46
+ 1. Read this `AGENTS.md`.
47
+ 2. Read `.doctrina/product.md`.
48
+ 3. Read the relevant `.doctrina/specs/<capability>/spec.md`.
49
+ 4. Read any open `.doctrina/changes/<id>/`.
50
+ 5. Read `.doctrina/decisions/` filtered by `Status: accepted`.
51
+ 6. If the task matches a skill in `.doctrina/skills/`, load the
52
+ relevant skill on demand (read its `description:` / `when:`
53
+ frontmatter; load the full body only when the trigger fires).
54
+
55
+ Keep this file under 150 lines. Density beats prose. Use exact commands.
56
+
57
+ ## Definition of done
58
+
59
+ A change is done when:
60
+ - All tasks in the change's `tasks.md` are checked.
61
+ - Deltas have been merged into affected spec files.
62
+ - The change folder has been moved to `.doctrina/changes/archive/`.
63
+ - Any architectural decisions are recorded as ADRs with `Status: accepted`.
64
+ - `.doctrina/index.json` has been updated.
65
+
66
+ ## What never goes in this file
67
+
68
+ Tutorials, project history, secrets, generated content, session notes.
@@ -0,0 +1,64 @@
1
+ # Doctrina templates
2
+
3
+ Canonical scaffolds consumed by the `doctrina` CLI.
4
+
5
+ ## Placeholder syntax
6
+
7
+ Templates use `{{TOKEN}}` — double curly braces around an uppercase,
8
+ digit, and underscore token. Substitution is a single global string
9
+ replace. No conditionals, loops, or includes.
10
+
11
+ ## Canonical tokens
12
+
13
+ | Token | Meaning | Default if not supplied |
14
+ |-------|---------|-------------------------|
15
+ | `{{PROJECT_NAME}}` | Human-readable project name | basename of target directory |
16
+ | `{{PROJECT_DESCRIPTION}}` | One-sentence description | empty string |
17
+ | `{{DATE}}` | YYYY-MM-DD of init or artifact creation | system date |
18
+ | `{{CAPABILITY}}` | Slug for a new capability spec | required, no default |
19
+ | `{{CHANGE_ID}}` | Change folder identifier | required, no default |
20
+ | `{{CHANGE_TITLE}}` | Short change title | required, no default |
21
+ | `{{DECISION_NUMBER}}` | Zero-padded ADR number (e.g. `0007`) | next available |
22
+ | `{{DECISION_TITLE}}` | ADR title | required, no default |
23
+ | `{{DECISION_SLUG}}` | kebab-case slug derived from `{{DECISION_TITLE}}` | derived |
24
+ | `{{AGENTS_MD_PATH}}` | Path to root `AGENTS.md` from the adapter location | per adapter |
25
+
26
+ CLI authors and template authors share this vocabulary. Adding a token
27
+ requires extending the templates spec at `.doctrina/specs/templates/spec.md`.
28
+
29
+ ## Inventory (v0)
30
+
31
+ ```
32
+ README.md this file
33
+ AGENTS.md.template root rules for the target repo
34
+ doctrina/ the .doctrina/ skeleton
35
+ product.md.template
36
+ index.json.template
37
+ specs/.gitkeep
38
+ changes/.gitkeep
39
+ changes/archive/.gitkeep
40
+ decisions/.gitkeep
41
+ templates/.gitkeep
42
+ spec.md.template one capability spec
43
+ change/
44
+ proposal.md.template
45
+ tasks.md.template
46
+ design.md.template
47
+ spec-delta.md.template
48
+ decision.md.template one ADR (Nygard/MADR)
49
+ adapters/
50
+ claude/CLAUDE.md.template
51
+ codex/README.md
52
+ cursor/rules/00-doctrina.mdc.template
53
+ ```
54
+
55
+ ## Adapter strategy
56
+
57
+ | Agent | What gets installed | Why |
58
+ |-------|--------------------|-----|
59
+ | `claude` | `CLAUDE.md` at project root with `@AGENTS.md` import | Claude Code reads `CLAUDE.md` natively and supports `@file` includes. |
60
+ | `codex` | nothing | OpenAI Codex CLI reads `AGENTS.md` natively; an adapter file would only add drift surface. |
61
+ | `cursor` | `.cursor/rules/00-doctrina.mdc` with `alwaysApply: true` | Cursor's `.mdc` rules live in a dedicated directory; the file is a thin pointer. |
62
+
63
+ Adapter files stay under 30 lines so they cannot meaningfully drift from
64
+ `AGENTS.md` and so they do not pay a noticeable per-turn token tax.
@@ -0,0 +1,11 @@
1
+ # CONVENTIONS.md — {{PROJECT_NAME}}
2
+
3
+ Aider reads this file as read-only context (CONVENTIONS.md is
4
+ loaded automatically and cached). This project routes all
5
+ operational rules through the open AGENTS.md standard.
6
+
7
+ See `{{AGENTS_MD_PATH}}` for the canonical operational source of
8
+ truth. The Doctrina framework artifacts (specs, decisions,
9
+ changes) live under `.doctrina/`.
10
+
11
+ Read order is documented in AGENTS.md.
@@ -0,0 +1,13 @@
1
+ # Sourcegraph Amp adapter
2
+
3
+ Sourcegraph Amp reads `AGENTS.md` natively as part of its
4
+ support for the open AGENTS.md standard (per the Linux
5
+ Foundation's December 2025 announcement). No adapter file is
6
+ installed for Amp.
7
+
8
+ This directory exists so the templates inventory is symmetric
9
+ across supported agents, and so future Amp-specific affordances
10
+ have an obvious home.
11
+
12
+ If you are reading this because `doctrina init --agent amp` did
13
+ not create any files: that is the intended behaviour.
@@ -0,0 +1,11 @@
1
+ # CLAUDE.md — {{PROJECT_NAME}}
2
+
3
+ This project uses the open AGENTS.md standard as the single source of
4
+ truth for agent-readable rules. The canonical file is at the repository
5
+ root; this `CLAUDE.md` is a thin pointer so Claude Code's auto-loading
6
+ picks it up.
7
+
8
+ @{{AGENTS_MD_PATH}}
9
+
10
+ The Doctrina framework artifacts (specs, decisions, changes) live under
11
+ `.doctrina/`. Read order is documented in `AGENTS.md`.
@@ -0,0 +1,12 @@
1
+ # Codex CLI adapter
2
+
3
+ OpenAI Codex CLI reads `AGENTS.md` natively (Codex is one of the
4
+ reference implementations of the open AGENTS.md standard). No adapter
5
+ file is installed for Codex.
6
+
7
+ This directory exists so the templates inventory is symmetric across
8
+ supported agents, and so future Codex-specific affordances (for example
9
+ custom subagent definitions) have an obvious home.
10
+
11
+ If you are reading this because `doctrina init --agent codex` did not
12
+ create any files: that is the intended behaviour.
@@ -0,0 +1,11 @@
1
+ # Doctrina pointer — {{PROJECT_NAME}}
2
+
3
+ This project uses the open AGENTS.md standard as the single source of
4
+ truth for agent-readable rules. Before answering or editing, read the
5
+ canonical file at `{{AGENTS_MD_PATH}}`.
6
+
7
+ The Doctrina framework artifacts (specs, decisions, changes) live
8
+ under `.doctrina/`. Read order is documented in AGENTS.md.
9
+
10
+ Do not duplicate rules in this file. If a rule belongs in AGENTS.md,
11
+ put it there.
@@ -0,0 +1,11 @@
1
+ # Copilot instructions — {{PROJECT_NAME}}
2
+
3
+ This repository uses the open AGENTS.md standard as the single source
4
+ of truth for agent-readable rules. Before suggesting code or
5
+ completions, consult the canonical file at `{{AGENTS_MD_PATH}}`.
6
+
7
+ The Doctrina framework artifacts (specs, decisions, changes) live
8
+ under `.doctrina/`. Read order is documented in AGENTS.md.
9
+
10
+ Do not duplicate rules here. If a rule belongs in AGENTS.md, put it
11
+ there.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Doctrina canonical rules — always read AGENTS.md first
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Doctrina pointer rule
7
+
8
+ This project uses the open AGENTS.md standard as the single source of
9
+ truth for agent-readable rules. Before answering or editing, read the
10
+ canonical file at `{{AGENTS_MD_PATH}}`.
11
+
12
+ The Doctrina framework artifacts (specs, decisions, changes) live under
13
+ `.doctrina/`. Read order is documented in `AGENTS.md`.
14
+
15
+ Do not duplicate rules here. If a rule belongs in AGENTS.md, put it
16
+ there and re-read this project.
@@ -0,0 +1,14 @@
1
+ # Cognition Devin adapter
2
+
3
+ Cognition Devin reads `AGENTS.md` natively as part of its
4
+ support for the open AGENTS.md standard (per the Linux
5
+ Foundation's December 2025 announcement). No adapter file is
6
+ installed for Devin.
7
+
8
+ This directory exists so the templates inventory is symmetric
9
+ across supported agents, and so future Devin-specific
10
+ affordances (custom session configs, for example) have an
11
+ obvious home.
12
+
13
+ If you are reading this because `doctrina init --agent devin`
14
+ did not create any files: that is the intended behaviour.
@@ -0,0 +1,13 @@
1
+ # Factory AI adapter
2
+
3
+ Factory AI reads `AGENTS.md` natively as part of its support
4
+ for the open AGENTS.md standard (per the Linux Foundation's
5
+ December 2025 announcement). No adapter file is installed for
6
+ Factory.
7
+
8
+ This directory exists so the templates inventory is symmetric
9
+ across supported agents, and so future Factory-specific
10
+ affordances have an obvious home.
11
+
12
+ If you are reading this because `doctrina init --agent factory`
13
+ did not create any files: that is the intended behaviour.
@@ -0,0 +1,11 @@
1
+ # GEMINI.md — {{PROJECT_NAME}}
2
+
3
+ This project uses the open AGENTS.md standard as the single source of
4
+ truth for agent-readable rules. The canonical file is at the
5
+ repository root; this `GEMINI.md` is a thin pointer so Gemini CLI's
6
+ auto-loading picks it up.
7
+
8
+ See `{{AGENTS_MD_PATH}}` for the operational rules.
9
+
10
+ The Doctrina framework artifacts (specs, decisions, changes) live
11
+ under `.doctrina/`. Read order is documented in AGENTS.md.
@@ -0,0 +1,13 @@
1
+ # Google Jules adapter
2
+
3
+ Google Jules (autonomous coding agent) reads `AGENTS.md`
4
+ natively as part of its support for the open AGENTS.md standard
5
+ (per the Linux Foundation's December 2025 announcement). No
6
+ adapter file is installed for Jules.
7
+
8
+ This directory exists so the templates inventory is symmetric
9
+ across supported agents, and so future Jules-specific
10
+ affordances have an obvious home.
11
+
12
+ If you are reading this because `doctrina init --agent jules`
13
+ did not create any files: that is the intended behaviour.
@@ -0,0 +1,11 @@
1
+ # Windsurf rules — {{PROJECT_NAME}}
2
+
3
+ This project uses the open AGENTS.md standard as the single source of
4
+ truth for agent-readable rules. Before answering or editing, read the
5
+ canonical file at `{{AGENTS_MD_PATH}}`.
6
+
7
+ The Doctrina framework artifacts (specs, decisions, changes) live
8
+ under `.doctrina/`. Read order is documented in AGENTS.md.
9
+
10
+ Do not duplicate rules in this file. If a rule belongs in AGENTS.md,
11
+ put it there.
@@ -0,0 +1,24 @@
1
+ # Design — Change {{CHANGE_ID}}
2
+
3
+ <!--
4
+ Optional, but recommended for any change with non-trivial design choices.
5
+ If this change is mechanical (a renamed field, a typo fix), delete this
6
+ file rather than leaving it empty.
7
+ -->
8
+
9
+ ## Approach
10
+
11
+ <!-- The chosen approach in one or two paragraphs. -->
12
+
13
+ ## Alternatives considered
14
+
15
+ <!-- The shortlist of approaches you rejected and why. -->
16
+
17
+ ## Trade-offs and risks
18
+
19
+ <!-- What this design costs and where it can break. -->
20
+
21
+ ## Decisions to record as ADRs
22
+
23
+ <!-- List any architectural decisions surfaced by this change that should
24
+ become their own ADR. Empty if none. -->
@@ -0,0 +1,26 @@
1
+ # Change {{CHANGE_ID}} — {{CHANGE_TITLE}}
2
+
3
+ - **Status:** proposed
4
+ - **Date:** {{DATE}}
5
+ - **Owner:**
6
+ - **Affects specs:**
7
+
8
+ ## Why
9
+
10
+ <!-- The user-visible or technical reason this change exists. -->
11
+
12
+ ## What
13
+
14
+ <!-- The shape of the change: artifacts created or modified, specs affected. -->
15
+
16
+ ## Scope boundaries
17
+
18
+ <!-- Anything adjacent that this change deliberately does NOT touch. -->
19
+
20
+ ## Verification
21
+
22
+ <!-- How you will know the change is correctly applied. -->
23
+
24
+ ## Open questions
25
+
26
+ <!-- List unresolved decisions. Empty if none. -->
@@ -0,0 +1,20 @@
1
+ # Spec Delta — capability: {{CAPABILITY}}
2
+
3
+ **Operation:** ADDED | MODIFIED | REMOVED
4
+ **Target spec on apply:** `.doctrina/specs/{{CAPABILITY}}/spec.md`
5
+
6
+ <!--
7
+ For ADDED: include the full new spec body below. On apply, the body is
8
+ written verbatim to the target path.
9
+
10
+ For MODIFIED: include only the sections that change, with clear
11
+ before/after markers. On apply, the maintainer merges the delta into the
12
+ existing spec by hand or with the CLI.
13
+
14
+ For REMOVED: the body may be empty; on apply, the target spec file is
15
+ deleted and the capability is recorded in the change archive only.
16
+ -->
17
+
18
+ ---
19
+
20
+ <!-- delta body below -->
@@ -0,0 +1,17 @@
1
+ # Tasks — Change {{CHANGE_ID}}
2
+
3
+ <!--
4
+ Each task is a single checkable item. Keep tasks small (under a few hours
5
+ of work). The change is done when every box is checked, including the
6
+ three closing steps at the bottom.
7
+ -->
8
+
9
+ - [ ]
10
+ - [ ]
11
+ - [ ]
12
+
13
+ ## Closing steps
14
+
15
+ - [ ] Apply the change: merge each delta into the corresponding spec.
16
+ - [ ] Archive the change folder to `.doctrina/changes/archive/{{DATE}}-{{CHANGE_ID}}/`.
17
+ - [ ] Update `.doctrina/index.json` with new or modified artifacts.
@@ -0,0 +1,56 @@
1
+ # ADR {{DECISION_NUMBER}} — {{DECISION_TITLE}}
2
+
3
+ - **Status:** proposed
4
+ - **Date:** {{DATE}}
5
+ - **Deciders:**
6
+ - **Supersedes:** —
7
+ - **Superseded by:** —
8
+
9
+ ## Context
10
+
11
+ <!--
12
+ The forces at play: business goals, technical constraints, prior
13
+ decisions, options ruled out before deliberation. Reader should
14
+ understand WHY this decision is being made now, not just what was
15
+ chosen.
16
+ -->
17
+
18
+ ## Decision
19
+
20
+ <!--
21
+ What was decided. Active voice. State the choice plainly. If the
22
+ decision has scope limits, state them.
23
+ -->
24
+
25
+ ## Alternatives considered
26
+
27
+ <!--
28
+ The shortlist of approaches that were on the table. For each, a sentence
29
+ on why it was not chosen. Even rejected alternatives carry value: they
30
+ prevent the next reader from re-running the same debate.
31
+ -->
32
+
33
+ 1.
34
+ 2.
35
+
36
+ ## Consequences
37
+
38
+ **Positive**
39
+
40
+ -
41
+
42
+ **Negative**
43
+
44
+ -
45
+
46
+ **Neutral**
47
+
48
+ -
49
+
50
+ <!--
51
+ Once this ADR is accepted, do not edit it. To change the decision,
52
+ create a new ADR that supersedes this one and update the "Superseded by"
53
+ header above to point at the new ADR. Status transitions:
54
+ proposed -> accepted | rejected
55
+ accepted -> deprecated | superseded by NNNN
56
+ -->
File without changes
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema_version": "0.1.0",
3
+ "project": "{{PROJECT_NAME}}",
4
+ "framework_version": "0.0.0",
5
+ "last_updated": "{{DATE}}",
6
+ "artifacts": {
7
+ "product": {
8
+ "path": ".doctrina/product.md",
9
+ "status": "active",
10
+ "version": "0.1.0",
11
+ "last_updated": "{{DATE}}"
12
+ },
13
+ "specs": [],
14
+ "decisions": [],
15
+ "changes": [],
16
+ "changes_archive": []
17
+ }
18
+ }
@@ -0,0 +1,31 @@
1
+ # {{PROJECT_NAME}} — Product
2
+
3
+ ## Vision
4
+
5
+ <!-- One short paragraph: what this project exists to do, for whom, why now. -->
6
+
7
+ ## Problem
8
+
9
+ <!-- The specific user pain or technical gap this project addresses. -->
10
+
11
+ ## Target users
12
+
13
+ <!-- Who benefits. Be specific; avoid "everyone". -->
14
+
15
+ ## Scope
16
+
17
+ In scope:
18
+
19
+ -
20
+
21
+ Out of scope (deferred or rejected):
22
+
23
+ -
24
+
25
+ ## Non-goals
26
+
27
+ <!-- Explicit things this project will NOT try to be. -->
28
+
29
+ ## Success criteria
30
+
31
+ <!-- How you will know this project is working. Prefer measurable signals. -->
File without changes
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env sh
2
+ # Doctrina pre-commit hook.
3
+ # Installed by `doctrina hooks install`. Runs validate and blocks the
4
+ # commit if it exits non-zero. Edit freely after install; the CLI will
5
+ # not overwrite without --force.
6
+
7
+ doctrina validate
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env sh
2
+ # Doctrina on-save watcher (sample).
3
+ #
4
+ # Re-runs `doctrina validate` whenever a Markdown file under
5
+ # .doctrina/ or docs/ changes. Pair with `doctrina hooks install` for
6
+ # pre-commit validation; this script gives you the on-save loop too.
7
+ #
8
+ # Requires a path watcher to be installed. Two common choices:
9
+ #
10
+ # entr (POSIX, portable) https://github.com/eradman/entr
11
+ # fswatch (macOS / Linux / BSD) https://github.com/emcrisostomo/fswatch
12
+ #
13
+ # Edit the body below to match your watcher of choice. The CLI does
14
+ # not install or run this script — wire it into your dev setup
15
+ # (a Make target, an npm script, a tmux pane) by hand.
16
+
17
+ # entr example (default):
18
+ find .doctrina docs -name '*.md' 2>/dev/null | entr -c doctrina validate
19
+
20
+ # fswatch example (uncomment to use):
21
+ # fswatch -o .doctrina docs | xargs -n1 -I{} doctrina validate
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: {{SKILL_NAME}}
3
+ description: <one-sentence summary of what this skill helps the agent do>
4
+ when: <one-sentence trigger — when the agent should load this skill>
5
+ ---
6
+
7
+ # Skill — {{SKILL_NAME}}
8
+
9
+ ## When to use this skill
10
+
11
+ <!--
12
+ Be specific about the trigger. Examples that DO work:
13
+ - The agent is asked to add or modify a database migration.
14
+ - The agent is reviewing a PR that touches public API surface.
15
+ - The agent is investigating a production incident.
16
+
17
+ Examples that DON'T work (too vague):
18
+ - "Whenever the agent is coding."
19
+ - "Anytime there is a problem."
20
+ -->
21
+
22
+ ## Procedure
23
+
24
+ <!--
25
+ Step-by-step. Exact commands beat advice. Verifiable checks beat
26
+ adjectives. Same rules as AGENTS.md.
27
+ -->
28
+
29
+ 1.
30
+ 2.
31
+ 3.
32
+
33
+ ## Anti-patterns
34
+
35
+ <!--
36
+ Things this skill exists to prevent. Be concrete: a real failure
37
+ mode you have seen.
38
+ -->
39
+
40
+ -
41
+
42
+ ## Related material
43
+
44
+ <!--
45
+ Cross-links to the spec, ADR, or other artifacts that this skill
46
+ references or extends.
47
+ -->
48
+
49
+ - [Workflow](../../docs/en/workflow.md)
@@ -0,0 +1,40 @@
1
+ # Bug spec — {{CAPABILITY}}
2
+
3
+ **Capability:** {{CAPABILITY}}
4
+ **Type:** bug
5
+ **Status:** active
6
+ **Last updated:** {{DATE}}
7
+ **Version:** 0.1.0
8
+
9
+ ## Current behaviour
10
+
11
+ <!--
12
+ What the system does today, exactly. Reproduce the wrong path.
13
+ Include input, observed output, and any error messages.
14
+ -->
15
+
16
+ ## Expected behaviour
17
+
18
+ <!--
19
+ What it should do instead, exactly. Be specific about inputs and
20
+ outputs that change.
21
+ -->
22
+
23
+ ## Unchanged behaviour
24
+
25
+ <!--
26
+ What must keep working. The guard-rail that prevents "fix the bug,
27
+ break two adjacent features". Reference the capabilities, flows,
28
+ or files this bug fix must NOT alter.
29
+ -->
30
+
31
+ ## Acceptance criteria
32
+
33
+ <!-- Observable signals the bug is fixed and the guard-rails hold. -->
34
+
35
+ 1.
36
+ 2.
37
+
38
+ ## Out of scope
39
+
40
+ <!-- Adjacent issues this fix deliberately does not address. -->
@@ -0,0 +1,52 @@
1
+ # Spec — {{CAPABILITY}}
2
+
3
+ **Capability:** {{CAPABILITY}}
4
+ **Status:** active
5
+ **Last updated:** {{DATE}}
6
+ **Version:** 0.1.0
7
+
8
+ ## Purpose
9
+
10
+ <!-- One paragraph: what this capability does and why it exists. -->
11
+
12
+ ## Requirements (EARS)
13
+
14
+ <!--
15
+ Easy Approach to Requirements Syntax. Use one of the five forms per item:
16
+
17
+ - Ubiquitous: The system shall <action>.
18
+ - Event-driven: When <trigger>, the system shall <action>.
19
+ - State-driven: While <state>, the system shall <action>.
20
+ - Unwanted-behavior: The system shall not <action> [when <trigger>].
21
+ - Optional: Where <feature available>, the system may <action>.
22
+ -->
23
+
24
+ ### Ubiquitous
25
+
26
+ -
27
+
28
+ ### Event-driven
29
+
30
+ -
31
+
32
+ ### State-driven
33
+
34
+ -
35
+
36
+ ### Unwanted-behavior (must-not)
37
+
38
+ -
39
+
40
+ ### Optional
41
+
42
+ -
43
+
44
+ ## Acceptance criteria
45
+
46
+ <!-- Concrete, observable signals that the capability is correctly implemented. -->
47
+
48
+ 1.
49
+
50
+ ## Out of scope for this spec
51
+
52
+ -