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.
- package/package.json +4 -2
- package/templates/AGENTS.md.template +68 -0
- package/templates/README.md +64 -0
- package/templates/adapters/aider/CONVENTIONS.md.template +11 -0
- package/templates/adapters/amp/README.md +13 -0
- package/templates/adapters/claude/CLAUDE.md.template +11 -0
- package/templates/adapters/codex/README.md +12 -0
- package/templates/adapters/continue/.continue/rules/00-doctrina.md.template +11 -0
- package/templates/adapters/copilot/.github/copilot-instructions.md.template +11 -0
- package/templates/adapters/cursor/.cursor/rules/00-doctrina.mdc.template +16 -0
- package/templates/adapters/devin/README.md +14 -0
- package/templates/adapters/factory/README.md +13 -0
- package/templates/adapters/gemini/GEMINI.md.template +11 -0
- package/templates/adapters/jules/README.md +13 -0
- package/templates/adapters/windsurf/.windsurfrules.template +11 -0
- package/templates/change/design.md.template +24 -0
- package/templates/change/proposal.md.template +26 -0
- package/templates/change/spec-delta.md.template +20 -0
- package/templates/change/tasks.md.template +17 -0
- package/templates/decision.md.template +56 -0
- package/templates/doctrina/changes/.gitkeep +0 -0
- package/templates/doctrina/changes/archive/.gitkeep +0 -0
- package/templates/doctrina/decisions/.gitkeep +0 -0
- package/templates/doctrina/index.json.template +18 -0
- package/templates/doctrina/product.md.template +31 -0
- package/templates/doctrina/skills/.gitkeep +0 -0
- package/templates/doctrina/specs/.gitkeep +0 -0
- package/templates/doctrina/templates/.gitkeep +0 -0
- package/templates/hooks/pre-commit.sample +7 -0
- package/templates/hooks/watch.sample +21 -0
- package/templates/skill.md.template +49 -0
- package/templates/spec-bug.md.template +40 -0
- 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.
|
|
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,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
|
+
-
|