@imix-js/taproot 0.6.0 → 0.7.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 (50) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/index.js +62 -35
  3. package/dist/adapters/index.js.map +1 -1
  4. package/dist/cli.js +8 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/commithook.js +7 -1
  7. package/dist/commands/commithook.js.map +1 -1
  8. package/dist/commands/init.d.ts +4 -2
  9. package/dist/commands/init.js +94 -38
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/truth-sign.js +3 -1
  12. package/dist/commands/truth-sign.js.map +1 -1
  13. package/dist/commands/update.js +156 -27
  14. package/dist/commands/update.js.map +1 -1
  15. package/dist/core/config.js +9 -4
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/core/configuration.d.ts +4 -3
  18. package/dist/core/configuration.js +7 -5
  19. package/dist/core/configuration.js.map +1 -1
  20. package/dist/core/fs-walker.js +1 -1
  21. package/dist/core/fs-walker.js.map +1 -1
  22. package/dist/core/paths.d.ts +6 -0
  23. package/dist/core/paths.js +12 -0
  24. package/dist/core/paths.js.map +1 -0
  25. package/dist/core/test-cache.js +1 -1
  26. package/dist/core/test-cache.js.map +1 -1
  27. package/dist/core/version-check.d.ts +9 -0
  28. package/dist/core/version-check.js +43 -0
  29. package/dist/core/version-check.js.map +1 -0
  30. package/dist/validators/structure-rules.js +1 -1
  31. package/dist/validators/structure-rules.js.map +1 -1
  32. package/docs/agents.md +2 -2
  33. package/docs/architecture.md +3 -3
  34. package/docs/cli.md +7 -7
  35. package/docs/configuration.md +6 -6
  36. package/docs/patterns.md +7 -7
  37. package/docs/security.md +4 -4
  38. package/docs/workflows.md +1 -1
  39. package/package.json +1 -1
  40. package/skills/backlog.md +7 -7
  41. package/skills/behaviour.md +2 -2
  42. package/skills/bug.md +2 -2
  43. package/skills/commit.md +3 -3
  44. package/skills/discover-truths.md +7 -7
  45. package/skills/guide.md +1 -1
  46. package/skills/implement.md +5 -5
  47. package/skills/ineed.md +4 -4
  48. package/skills/refine.md +3 -3
  49. package/skills/review-all.md +2 -2
  50. package/skills/status.md +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"structure-rules.js","sourceRoot":"","sources":["../../src/validators/structure-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,UAAU,qBAAqB,CAAC,IAAgB;IACpD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,0CAA0C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACjF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,gEAAgE;SACnG,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC;IACjD,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IACzE,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;YAC/C,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,qBAAqB,IAAI,CAAC,IAAI,qEAAqE,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,MAAM,YAAY,UAAU,EAAE;SACtM,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;YAC5C,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,0BAA0B,IAAI,CAAC,IAAI,0DAA0D,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,UAAU,EAAE;SAC5M,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,uBAAuB;QAAE,OAAO,EAAE,CAAC;IAC5C,qEAAqE;IACrE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,WAAW,IAAI,CAAC,IAAI,oEAAoE;SAClG,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,6DAA6D;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,CAAC;YACN,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,IAAI,wBAAwB;SACrE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAgB;IACtD,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,CAAC;YACN,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,sBAAsB;YAChC,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,wFAAwF;gBAC/F,yFAAyF;gBACzF,qFAAqF;SACxF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,OAA4B;IAE5B,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEhC,UAAU,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"structure-rules.js","sourceRoot":"","sources":["../../src/validators/structure-rules.ts"],"names":[],"mappings":"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"}
package/docs/agents.md CHANGED
@@ -52,12 +52,12 @@ After `taproot init --agent claude --with-skills`, skills are available as `/tr-
52
52
 
53
53
  ### How skills work
54
54
 
55
- Skills are portable markdown files installed to `.taproot/skills/`. They are not IDE plugins or extensions — any agent that can read files can follow a skill. The Claude Code adapter generates `.claude/commands/tr-*.md` files that reference the skills; invoking `/tr-intent` tells Claude to load and follow `skills/intent.md`.
55
+ Skills are portable markdown files installed to `taproot/agent/skills/`. They are not IDE plugins or extensions — any agent that can read files can follow a skill. The Claude Code adapter generates `.claude/commands/tr-*.md` files that reference the skills; invoking `/tr-intent` tells Claude to load and follow `taproot/agent/skills/intent.md`.
56
56
 
57
57
  This means:
58
58
  - Skills work even if the Claude Code extension is updated or changed
59
59
  - You can read any skill file to understand exactly what the agent will do
60
- - You can customise a skill by editing its file in `.taproot/skills/`
60
+ - You can customise a skill by editing its file in `taproot/agent/skills/`
61
61
  - Skills stay in sync with Taproot via `taproot update`
62
62
 
63
63
  ### Updating skills
@@ -22,9 +22,9 @@ Architectural decisions, constraints, and patterns for the taproot codebase. Eve
22
22
 
23
23
  **No global mutable state** — No module-level variables that accumulate state across calls. Functions that need shared state receive it as parameters.
24
24
 
25
- **`taproot/` contains only requirement documents** Skills, config, and framework files live in `.taproot/`. Never mix framework files into the requirements hierarchy.
25
+ **Unified `taproot/` directory layout** — All taproot content lives under `taproot/`: requirement documents in `taproot/specs/` (or directly under `taproot/` with a custom `root:` setting), agent skills and docs in `taproot/agent/`, and global truths in `taproot/global-truths/`. Settings live at `taproot/settings.yaml`. The `.taproot/` directory is reserved for gitignored runtime scratch only (session state, test result cache, truth-check sessions).
26
26
 
27
- **`taproot/_sessions/` is the scratch space for agent session state** Skills that persist resumable session data (phase progress, confirmed items, open questions) write to `taproot/_sessions/<skill-name>-status.md`. This folder is not a formal hierarchy document and is excluded from `taproot validate-structure`. Use `_sessions/`, not `_brainstorms/` the latter implies ideation rather than structured state.
27
+ **`.taproot/` is runtime scratch, not content** Files written by CLI invocations that should not be committed (session state, `.truth-check-session`, `.test-results/`) go in `.taproot/`. Add `.taproot/` to `.gitignore`. Never place spec documents, skill files, or configuration there.
28
28
 
29
29
  **Markdown is the schema** — All hierarchy documents (intent.md, usecase.md, impl.md) must be valid CommonMark. No proprietary extensions.
30
30
 
@@ -50,4 +50,4 @@ Core modules must not import from commands. Commands may import from core, valid
50
50
 
51
51
  ## Testing
52
52
 
53
- Integration tests use real temporary directories (`mkdtempSync`) — no mocking the filesystem. Config in tests must be written to `.taproot/settings.yaml` (not `.taproot/settings.yaml`).
53
+ Integration tests use real temporary directories (`mkdtempSync`) — no mocking the filesystem. Config in tests must be written to `taproot/settings.yaml` (matching the layout that `taproot init` now creates).
package/docs/cli.md CHANGED
@@ -12,7 +12,7 @@ The Taproot CLI handles setup, validation, and reporting. It does not generate c
12
12
  taproot init [--with-hooks] [--with-ci github|gitlab] [--with-skills] [--agent claude|cursor|copilot|windsurf|generic|all] [--template webapp|book-authoring|cli-tool] [--force]
13
13
  ```
14
14
 
15
- Initializes Taproot in the current directory. Creates `taproot/` and `.taproot/settings.yaml` if they don't exist, then installs whichever integrations you request.
15
+ Initializes Taproot in the current directory. Creates `taproot/` with `specs/`, `global-truths/`, and `agent/` subdirectories; writes `taproot/settings.yaml`. Then installs whichever integrations you request.
16
16
 
17
17
  When run on an empty project (no `taproot/` directory yet), the command prompts: **"Start from a template? [y/N]"** — entering `y` presents a list of starter hierarchies to choose from.
18
18
 
@@ -21,10 +21,10 @@ When run on an empty project (no `taproot/` directory yet), the command prompts:
21
21
  | `--with-hooks` | Installs `.git/hooks/pre-commit` running `taproot commithook` |
22
22
  | `--with-ci github` | Generates `.github/workflows/taproot.yml` with validate-structure, validate-format, and check-orphans |
23
23
  | `--with-ci gitlab` | Generates a `taproot-validate` job in `.gitlab-ci.yml` |
24
- | `--with-skills` | Copies skill definitions to `.taproot/skills/`. Implied by `--agent claude` — only needed if you want skills without a Claude adapter. |
24
+ | `--with-skills` | Copies skill definitions to `taproot/agent/skills/`. Implied by `--agent claude` — only needed if you want skills without a Claude adapter. |
25
25
  | `--agent <name>` | Generates agent adapter files (see [Agent Setup](agents.md)) |
26
- | `--template <type>` | Skip the prompt and apply a starter template directly (`webapp`, `book-authoring`, or `cli-tool`). Copies the starter's `taproot/` hierarchy and `.taproot/settings.yaml` into the project. |
27
- | `--force` | When used with `--template`, overwrites an existing `.taproot/settings.yaml` with the template's version. |
26
+ | `--template <type>` | Skip the prompt and apply a starter template directly (`webapp`, `book-authoring`, or `cli-tool`). Copies the starter's `taproot/` hierarchy and `taproot/settings.yaml` into the project. |
27
+ | `--force` | When used with `--template`, overwrites an existing `taproot/settings.yaml` with the template's version. |
28
28
 
29
29
  Running `taproot init` again on an existing project is safe — it skips files that already exist and reports `exists` for each.
30
30
 
@@ -38,7 +38,7 @@ Refreshes installed agent adapters and skills to the current version. Run this a
38
38
 
39
39
  The update command also:
40
40
  - Removes stale artefacts from older Taproot layouts (e.g., the pre-v0.1 `taproot/skills/` directory)
41
- - Refreshes `.taproot/docs/` with the current taproot documentation (patterns, architecture, security, etc.) so agent skills have up-to-date reference material
41
+ - Refreshes `taproot/agent/docs/` with the current taproot documentation (patterns, architecture, security, etc.) so agent skills have up-to-date reference material
42
42
  - Runs a cross-link refresh: adds missing `## Behaviours <!-- taproot-managed -->` sections to `intent.md` files and `## Implementations <!-- taproot-managed -->` sections to `usecase.md` files, then appends any missing child links and prunes any links to non-existent files
43
43
  - Migrates old `taproot validate-structure` / `taproot validate-format` pre-commit hooks to the newer `taproot commithook` format
44
44
 
@@ -174,7 +174,7 @@ taproot dod [impl-path] [--dry-run] [--rerun-tests]
174
174
  taproot dod <impl-path> --resolve <condition> --note "<text>" [--resolve <condition> --note "<text>" ...]
175
175
  ```
176
176
 
177
- Runs all configured DoD conditions from `.taproot/settings.yaml` against the specified implementation (or all implementations if no path is given). If all conditions pass and an `impl-path` is provided, marks the impl `complete`, records the results in `## DoD Resolutions`, and automatically advances the parent `usecase.md` state from `specified` to `implemented` if it hasn't been already.
177
+ Runs all configured DoD conditions from `taproot/settings.yaml` against the specified implementation (or all implementations if no path is given). If all conditions pass and an `impl-path` is provided, marks the impl `complete`, records the results in `## DoD Resolutions`, and automatically advances the parent `usecase.md` state from `specified` to `implemented` if it hasn't been already.
178
178
 
179
179
  Use `--resolve`/`--note` to record agent resolutions for agent-driven conditions (e.g. `document-current`, `check-if-affected`, `check-if-affected-by`). Multiple pairs can be supplied in a single invocation — conditions are paired with notes by position.
180
180
 
@@ -204,7 +204,7 @@ The hook uses a three-tier classification, where the implementation tier is dete
204
204
  | Source files found in map but `impl.md` NOT staged | **Blocked** — "Stage `impl.md` alongside your source files. No implementation commit should proceed without its traceability record." |
205
205
  | No tracked source files, no hierarchy or impl files | No checks; commit proceeds |
206
206
 
207
- The DoR gate prevents committing an implementation record before the behaviour is fully specified. The DoD gate prevents marking an implementation complete without passing the quality checks defined in `.taproot/settings.yaml`.
207
+ The DoR gate prevents committing an implementation record before the behaviour is fully specified. The DoD gate prevents marking an implementation complete without passing the quality checks defined in `taproot/settings.yaml`.
208
208
 
209
209
  **Truth consistency check:** when hierarchy files are staged and `taproot/global-truths/` exists, the hook validates that a truth-check session marker (`.taproot/.truth-check-session`) is present and matches the current staged content. This marker is written by `taproot truth-sign`, which `/tr-commit` calls after the agent approves the truth check. Committing hierarchy files directly with `git commit` (bypassing `/tr-commit`) will be blocked if applicable truths exist.
210
210
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Quick discovery
4
4
 
5
- - **In your project:** `.taproot/CONFIGURATION.md` — installed and refreshed by `taproot update`, documents all `settings.yaml` options with examples and whether each requires re-running `taproot update`
6
- - **From the CLI:** `taproot --help` includes a footer pointing to `.taproot/settings.yaml` and `.taproot/CONFIGURATION.md`
5
+ - **In your project:** `taproot/agent/CONFIGURATION.md` — installed and refreshed by `taproot update`, documents all `settings.yaml` options with examples and whether each requires re-running `taproot update`
6
+ - **From the CLI:** `taproot --help` includes a footer pointing to `taproot/settings.yaml` and `taproot/agent/CONFIGURATION.md`
7
7
  - **Full reference:** this document
8
8
 
9
- ## `.taproot/settings.yaml`
9
+ ## `taproot/settings.yaml`
10
10
 
11
11
  Created by `taproot init`. All settings have defaults — you only need to add what you want to override.
12
12
 
@@ -70,7 +70,7 @@ The `definitionOfDone` list controls what `taproot dod` checks and what the pre-
70
70
  | `document-current: <description>` | Agent-verified: the agent checks whether the described documentation is current and applies updates if needed. |
71
71
  | `check-if-affected: <file>` | Agent-verified: the agent reviews whether the given file needed updating as a result of this implementation and applies changes if needed. |
72
72
  | `check-if-affected-by: <behaviour-path>` | Agent-verified: the agent reads the referenced behaviour spec and determines whether it applies to this implementation — verifying compliance if it does, recording "not applicable" if it does not. Use for cross-cutting requirements that every implementation of a given type must satisfy (e.g. every new skill must satisfy `human-integration/contextual-next-steps`). |
73
- | `check: <free-form question>` | Agent-verified: the agent reads the question, reasons whether the answer is yes, no, or not applicable for this specific implementation, and takes any indicated action (e.g. adds an entry to `.taproot/settings.yaml`, documents a new pattern). The two default entries in `.taproot/settings.yaml` cover the most common meta-questions. |
73
+ | `check: <free-form question>` | Agent-verified: the agent reads the question, reasons whether the answer is yes, no, or not applicable for this specific implementation, and takes any indicated action (e.g. adds an entry to `taproot/settings.yaml`, documents a new pattern). The two default entries in `taproot/settings.yaml` cover the most common meta-questions. |
74
74
  | `run: <command>` | Custom shell command. Exit 0 = pass, any other exit code = fail. |
75
75
 
76
76
  You can give any condition a custom name with `name: <label>`, which is used in DoD reports:
@@ -92,7 +92,7 @@ Results are recorded in the `## DoD Resolutions` section of `impl.md`. The secti
92
92
 
93
93
  ### Built-in cross-cutting DoD conditions
94
94
 
95
- Taproot's own `.taproot/settings.yaml` ships with several `check-if-affected-by` conditions that enforce project-wide quality rules. These serve as reference examples:
95
+ Taproot's own `taproot/settings.yaml` ships with several `check-if-affected-by` conditions that enforce project-wide quality rules. These serve as reference examples:
96
96
 
97
97
  | Condition | What it enforces |
98
98
  |-----------|-----------------|
@@ -121,7 +121,7 @@ autonomous: true # all sessions in this repo run without confirmation prompts
121
121
  - Test failures or hook rejections are recorded in `impl.md` (impl marked `needs-rework`) and the agent stops — the developer returns to a clear failure report
122
122
 
123
123
  **Three activation mechanisms (in order of scope):**
124
- 1. `autonomous: true` in `.taproot/settings.yaml` — repo-wide, all sessions
124
+ 1. `autonomous: true` in `taproot/settings.yaml` — repo-wide, all sessions
125
125
  2. `TAPROOT_AUTONOMOUS=1` environment variable — per process invocation
126
126
  3. `--autonomous` flag on a skill invocation (e.g. `/tr-implement path/ --autonomous`) — per skill
127
127
 
package/docs/patterns.md CHANGED
@@ -8,10 +8,10 @@ Reusable patterns for extending and enforcing the taproot hierarchy. Each patter
8
8
 
9
9
  **Problem:** You have an architectural rule that should apply to every implementation — not just a one-time concern, but a standing requirement. Examples: every skill must include a session hygiene signal; every skill that produces output must present a **What's next?** block; every implementation must satisfy a security review checklist. Writing this rule in a README or CLAUDE.md makes it aspirational. You want it enforced automatically, at commit time, for every new implementation.
10
10
 
11
- **Pattern:** Define the rule as a behaviour spec (`usecase.md`), then add a `check-if-affected-by` entry to `.taproot/settings.yaml`.
11
+ **Pattern:** Define the rule as a behaviour spec (`usecase.md`), then add a `check-if-affected-by` entry to `taproot/settings.yaml`.
12
12
 
13
13
  ```yaml
14
- # .taproot/settings.yaml
14
+ # taproot/settings.yaml
15
15
  definitionOfDone:
16
16
  - check-if-affected-by: skill-architecture/context-engineering
17
17
  ```
@@ -37,7 +37,7 @@ When the DoD runner encounters this condition, it instructs the agent to:
37
37
  **How to add a new cross-cutting constraint:**
38
38
 
39
39
  1. Write the spec — `/tr-behaviour taproot/<your-intent>/ "<rule>"` — define what compliance looks like, what non-compliance looks like, and how to resolve it
40
- 2. Add to `.taproot/settings.yaml`:
40
+ 2. Add to `taproot/settings.yaml`:
41
41
  ```yaml
42
42
  definitionOfDone:
43
43
  - check-if-affected-by: <intent-slug>/<behaviour-slug>
@@ -95,11 +95,11 @@ The agent is asked: "Does this implementation require changes to `<file>`?" If y
95
95
 
96
96
  **Problem:** You have a one-off question the agent should reason about at DoD (or DoR) time — something too project-specific to warrant a full behaviour spec, but important enough to enforce at every commit. Examples: "should this story be split?", "does this change affect the public API contract?", "is there a simpler approach we haven't considered?".
97
97
 
98
- **Pattern:** Add a `check:` entry to `definitionOfDone` (or `definitionOfReady`) in `.taproot/settings.yaml`.
98
+ **Pattern:** Add a `check:` entry to `definitionOfDone` (or `definitionOfReady`) in `taproot/settings.yaml`.
99
99
 
100
100
  ```yaml
101
101
  definitionOfDone:
102
- - check: "does this story introduce a cross-cutting concern that warrants a new check-if-affected-by or check-if-affected entry in .taproot/settings.yaml?"
102
+ - check: "does this story introduce a cross-cutting concern that warrants a new check-if-affected-by or check-if-affected entry in taproot/settings.yaml?"
103
103
  - check: "does this story reveal a reusable pattern worth documenting in docs/patterns.md?"
104
104
  ```
105
105
 
@@ -114,7 +114,7 @@ The agent reads the question text, reasons whether the answer is yes, no, or not
114
114
 
115
115
  | Question | Action if yes |
116
116
  |---|---|
117
- | `does this story introduce a cross-cutting concern that warrants a new check-if-affected-by or check-if-affected entry in .taproot/settings.yaml?` | Agent adds the entry to `.taproot/settings.yaml` |
117
+ | `does this story introduce a cross-cutting concern that warrants a new check-if-affected-by or check-if-affected entry in taproot/settings.yaml?` | Agent adds the entry to `taproot/settings.yaml` |
118
118
  | `does this story reveal a reusable pattern worth documenting in docs/patterns.md?` | Agent adds a pattern entry to `docs/patterns.md` |
119
119
 
120
120
  ---
@@ -131,7 +131,7 @@ The agent reads the question text, reasons whether the answer is yes, no, or not
131
131
  Before following any steps, check whether autonomous mode is active:
132
132
  - `TAPROOT_AUTONOMOUS=1` is set in the environment, **or**
133
133
  - `--autonomous` was passed as an argument to this skill invocation, **or**
134
- - `.taproot/settings.yaml` contains `autonomous: true`
134
+ - `taproot/settings.yaml` contains `autonomous: true`
135
135
 
136
136
  If any of these is true, **autonomous mode is active** — apply the autonomous notes at each step where they appear. If none is true, autonomous mode is **inactive** — show confirmation prompts as normal.
137
137
  ```
package/docs/security.md CHANGED
@@ -9,9 +9,9 @@ This document describes taproot's security model, applicable threat categories,
9
9
  Taproot has two security boundaries that must be explicitly trusted:
10
10
 
11
11
  **`settings.yaml` — Executable Configuration**
12
- The `definitionOfDone` and `definitionOfReady` check entries are executed as shell commands via `spawnSync(..., { shell: true })` in `dod-runner.ts` / `dor-runner.ts`. This is an intentional design — equivalent to `package.json` scripts. The trust boundary is: whoever controls `.taproot/settings.yaml` controls what shell commands run during gate evaluation.
12
+ The `definitionOfDone` and `definitionOfReady` check entries are executed as shell commands via `spawnSync(..., { shell: true })` in `dod-runner.ts` / `dor-runner.ts`. This is an intentional design — equivalent to `package.json` scripts. The trust boundary is: whoever controls `taproot/settings.yaml` controls what shell commands run during gate evaluation.
13
13
 
14
- **`.taproot/skills/` — Agent Instructions**
14
+ **`taproot/agent/skills/` — Agent Instructions**
15
15
  Skill files (`.md`) are loaded and delivered as instructions to AI agents. Whoever controls skill content controls agent behaviour. A compromised skill file is a direct agent instruction injection vector.
16
16
 
17
17
  Both boundaries are intentional; neither should be changed. Both must be consciously managed.
@@ -67,14 +67,14 @@ Recommended controls for taproot's own CI and for projects using taproot:
67
67
 
68
68
  ## Skill Security Guidelines
69
69
 
70
- All skill files (`.taproot/skills/*.md`, `skills/*.md`) must follow these rules:
70
+ All skill files (`taproot/agent/skills/*.md`, `skills/*.md`) must follow these rules:
71
71
 
72
72
  1. **No shell execution without validation** — do not instruct agents to run shell commands unless the input is validated or the command is fully static
73
73
  2. **No hardcoded credentials or tokens** — skill files are committed to version control and distributed via npm; credentials in skills are a public disclosure
74
74
  3. **Least-privilege for agent instructions** — request only the permissions and actions the skill genuinely needs; avoid open-ended "do whatever is needed" patterns
75
75
  4. **No sensitive data in output** — do not instruct agents to echo or log content from `settings.yaml` commands (raw command strings, exit output)
76
76
 
77
- Every change to a skill file triggers the DoD skill review condition (see `.taproot/settings.yaml`).
77
+ Every change to a skill file triggers the DoD skill review condition (see `taproot/settings.yaml`).
78
78
 
79
79
  ---
80
80
 
package/docs/workflows.md CHANGED
@@ -144,7 +144,7 @@ After building up several specs, some domain terms and business rules will recur
144
144
  /tr-discover-truths
145
145
  ```
146
146
 
147
- The skill scans all `intent.md` and `usecase.md` files, identifies recurring terms, business rules, and conventions not yet defined in `taproot/global-truths/`, and presents them as candidates. For each candidate you choose: **promote** (routes to `/tr-ineed` → define-truth), **backlog** (saves to `.taproot/backlog.md` for later), **skip** (reappears next run), or **dismiss** (permanently suppressed).
147
+ The skill scans all `intent.md` and `usecase.md` files, identifies recurring terms, business rules, and conventions not yet defined in `taproot/global-truths/`, and presents them as candidates. For each candidate you choose: **promote** (routes to `/tr-ineed` → define-truth), **backlog** (saves to `taproot/agent/backlog.md` for later), **skip** (reappears next run), or **dismiss** (permanently suppressed).
148
148
 
149
149
  Truth discovery also runs as a final pass inside `/tr-review-all`, appending a `## Truth Candidates` section to the review report.
150
150
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imix-js/taproot",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "AI-driven specs, enforced at commit time. Code without traceability doesn't merge.",
5
5
  "type": "module",
6
6
  "bin": {
package/skills/backlog.md CHANGED
@@ -14,14 +14,14 @@ Capture ideas, findings, and deferred work mid-session with a single command —
14
14
 
15
15
  1. Detect that an argument was provided.
16
16
  2. If the argument is blank or whitespace only: warn *"Nothing to capture — provide a description."* and stop.
17
- 3. Create `.taproot/backlog.md` if absent. Append the item:
17
+ 3. Create `taproot/agent/backlog.md` if absent. Append the item:
18
18
  `- [YYYY-MM-DD] <idea>` using today's date.
19
19
  4. Confirm in one line: *"✓ Captured: <idea>"*
20
20
  No follow-up response required from the developer — the session continues.
21
21
 
22
22
  ### Triage mode (no argument)
23
23
 
24
- 1. Read `.taproot/backlog.md`.
24
+ 1. Read `taproot/agent/backlog.md`.
25
25
  - If absent or contains no standard items: report *"Backlog is empty. Use `/tr-backlog <idea>` to capture something."* and stop.
26
26
 
27
27
  2. Present all standard items as a numbered list (FIFO order, oldest first):
@@ -36,8 +36,8 @@ Capture ideas, findings, and deferred work mid-session with a single command —
36
36
  3. Offer: `D <n>` discard · `P <n>` promote to /tr-ineed · `A <n>` analyze · `done` finish
37
37
 
38
38
  4. Accept commands one at a time:
39
- - **`D <n>`** — remove item n from `.taproot/backlog.md`. Confirm: *"✓ Discarded #n"*. Redisplay the updated numbered list.
40
- - **`P <n>` promote to /tr-ineed** — remove item n from `.taproot/backlog.md`. Invoke `/tr-ineed` with the item text. On return, redisplay the updated numbered list.
39
+ - **`D <n>`** — remove item n from `taproot/agent/backlog.md`. Confirm: *"✓ Discarded #n"*. Redisplay the updated numbered list.
40
+ - **`P <n>` promote to /tr-ineed** — remove item n from `taproot/agent/backlog.md`. Invoke `/tr-ineed` with the item text. On return, redisplay the updated numbered list.
41
41
  - **`A <n>` analyze** — produce a structured analysis of the item:
42
42
  - A short description of what the item is or could be (2–4 sentences)
43
43
  - A complexity signal: **simple** / **moderate** / **significant**
@@ -46,7 +46,7 @@ Capture ideas, findings, and deferred work mid-session with a single command —
46
46
  - **`done`** — end triage. Items not acted on are kept implicitly.
47
47
 
48
48
  5. After `done`: *"Triage complete — X discarded, Y promoted, Z kept."*
49
- If any non-standard lines were skipped: *"Skipped N non-standard line(s) — they remain in `.taproot/backlog.md`."*
49
+ If any non-standard lines were skipped: *"Skipped N non-standard line(s) — they remain in `taproot/agent/backlog.md`."*
50
50
 
51
51
  If the developer exits without `done`: unprocessed items remain unchanged. If any actions were taken, show the summary; otherwise continue naturally.
52
52
 
@@ -60,7 +60,7 @@ Capture ideas, findings, and deferred work mid-session with a single command —
60
60
 
61
61
  ## Output
62
62
 
63
- **Capture:** item written to `.taproot/backlog.md`, one-line confirmation.
63
+ **Capture:** item written to `taproot/agent/backlog.md`, one-line confirmation.
64
64
  **Triage:** backlog updated in place; promoted items handed to `/tr-ineed`; completion summary shown.
65
65
 
66
66
  ## CLI Dependencies
@@ -73,4 +73,4 @@ None.
73
73
  - Item format: `- [YYYY-MM-DD] <text>`. Items are presented FIFO (oldest first) during triage.
74
74
  - Items promoted via `[P]` are removed from the backlog before `/tr-ineed` is invoked. If the developer abandons the `/tr-ineed` discovery, re-capture the item with `/tr-backlog <idea>`.
75
75
  - This is a scratchpad, not a project management tool — no priority, labels, or status tracking.
76
- - Storage is `.taproot/backlog.md` — a committed markdown file inside the taproot config directory, versioned with the project.
76
+ - Storage is `taproot/agent/backlog.md` — a committed markdown file inside the taproot config directory, versioned with the project.
@@ -15,14 +15,14 @@ Define a UseCase (observable system behaviour) under an intent or another behavi
15
15
  - If `parent` contains `intent.md`: read the intent to understand the goal and success criteria.
16
16
  - If `parent` contains `usecase.md`: read the parent behaviour — this new behaviour is a sub-behaviour.
17
17
 
18
- 1a. **Pattern check** — If `.taproot/docs/patterns.md` exists, scan the behaviour description for semantic matches. Match signals:
18
+ 1a. **Pattern check** — If `taproot/agent/docs/patterns.md` exists, scan the behaviour description for semantic matches. Match signals:
19
19
  - "apply to all / every implementation / every skill" → `check-if-affected-by`
20
20
  - "enforce a rule / architectural constraint / agents should follow" → `check-if-affected-by`
21
21
  - "keep docs current / enforce documentation quality" → `document-current`
22
22
  - "every new feature must update X" → `check-if-affected: X`
23
23
 
24
24
  If a match is found, **interrupt before asking clarifying questions**:
25
- > "Before I write this spec — that sounds like the **`<pattern-name>`** pattern. <one-line description>. See `.taproot/docs/patterns.md`."
25
+ > "Before I write this spec — that sounds like the **`<pattern-name>`** pattern. <one-line description>. See `taproot/agent/docs/patterns.md`."
26
26
  > **[A] Use this pattern now** — I'll guide you through applying it instead of writing a spec
27
27
  > **[B] Continue writing the spec** — the spec is distinct from the pattern
28
28
 
package/skills/bug.md CHANGED
@@ -35,10 +35,10 @@ Diagnose a defect through structured root cause analysis (5-Why) and delegate to
35
35
 
36
36
  - **No (clearly one-off** — typo, isolated misconfiguration, external incident): note this and continue to step 5.
37
37
  - **Yes**: propose prevention across one or more of:
38
- - A new DoR or DoD condition to add to `.taproot/settings.yaml`
38
+ - A new DoR or DoD condition to add to `taproot/settings.yaml`
39
39
  - An update to `docs/architecture.md`, `docs/security.md`, or `docs/patterns.md`
40
40
 
41
- If a satisfactory measure is found: present it — e.g. *"I'll add `check-if-affected-by: <gate>` to `.taproot/settings.yaml`"* or *"I'll add to `docs/security.md`: `<constraint>`"* — and wait for actor confirmation.
41
+ If a satisfactory measure is found: present it — e.g. *"I'll add `check-if-affected-by: <gate>` to `taproot/settings.yaml`"* or *"I'll add to `docs/security.md`: `<constraint>`"* — and wait for actor confirmation.
42
42
  - On **confirm**: apply the change, then continue to step 5.
43
43
  - On **reject**: record the recurrence concern in the implicated impl.md `## Notes` and continue to step 5.
44
44
 
package/skills/commit.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Before following any steps, check whether autonomous mode is active:
6
6
  - `TAPROOT_AUTONOMOUS=1` is set in the environment, **or**
7
7
  - `--autonomous` was passed as an argument to this skill invocation, **or**
8
- - `.taproot/settings.yaml` contains `autonomous: true`
8
+ - `taproot/settings.yaml` contains `autonomous: true`
9
9
 
10
10
  If any of these is true, **autonomous mode is active** — apply autonomous notes where they appear. If none is true, show confirmation prompts as normal.
11
11
 
@@ -35,7 +35,7 @@ Execute the full commit procedure: classify the commit type, run the appropriate
35
35
 
36
36
  **Autonomous mode:** stage all relevant files and proceed directly without waiting for confirmation.
37
37
 
38
- 4. Read `.taproot/settings.yaml` to identify all configured `definitionOfDone` and `definitionOfReady` conditions. If the file does not exist or has no `definitionOfDone`/`definitionOfReady` sections, note: "No user-configured conditions — baseline hook checks only." and proceed to the appropriate sub-flow below.
38
+ 4. Read `taproot/settings.yaml` to identify all configured `definitionOfDone` and `definitionOfReady` conditions. If the file does not exist or has no `definitionOfDone`/`definitionOfReady` sections, note: "No user-configured conditions — baseline hook checks only." and proceed to the appropriate sub-flow below.
39
39
 
40
40
  5. Execute the sub-flow matching the commit type:
41
41
 
@@ -78,7 +78,7 @@ Execute the full commit procedure: classify the commit type, run the appropriate
78
78
 
79
79
  1. Verify parent `usecase.md` is in `specified`, `implemented`, or `complete` state. If it is in `draft` or `proposed` state, report: "Cannot declare implementation — parent `usecase.md` is in `<state>` state. Run `/tr-refine <usecase-path>` to complete the spec first." Stop.
80
80
 
81
- 2. Read `.taproot/settings.yaml` `definitionOfReady` entries. For each `check-if-affected-by` or `check:` condition, write an entry directly into `## DoR Resolutions` in the impl.md. There is no `taproot dor` CLI — write entries by hand:
81
+ 2. Read `taproot/settings.yaml` `definitionOfReady` entries. For each `check-if-affected-by` or `check:` condition, write an entry directly into `## DoR Resolutions` in the impl.md. There is no `taproot dor` CLI — write entries by hand:
82
82
  ```
83
83
  condition: <name> | note: <reasoning> | resolved: <date>
84
84
  ```
@@ -13,9 +13,9 @@ Scan the taproot hierarchy for implicit facts — recurring terms, business rule
13
13
  Before following any steps, check whether autonomous mode is active:
14
14
  - `TAPROOT_AUTONOMOUS=1` is set in the environment, **or**
15
15
  - `--autonomous` was passed as an argument to this skill invocation, **or**
16
- - `.taproot/settings.yaml` contains `autonomous: true`
16
+ - `taproot/settings.yaml` contains `autonomous: true`
17
17
 
18
- If any of these is true, **autonomous mode is active** — skip interactive prompts and defer all candidates to `.taproot/backlog.md` as "truth candidate: `<term>`" entries, then report the summary.
18
+ If any of these is true, **autonomous mode is active** — skip interactive prompts and defer all candidates to `taproot/agent/backlog.md` as "truth candidate: `<term>`" entries, then report the summary.
19
19
 
20
20
  ## Steps
21
21
 
@@ -31,7 +31,7 @@ If any of these is true, **autonomous mode is active** — skip interactive prom
31
31
 
32
32
  3. Read all files in `taproot/global-truths/` (excluding `intent.md` and subdirectory `usecase.md` files — truth files are files that are NOT named `intent.md` or `usecase.md`). Collect defined terms and rules from them.
33
33
 
34
- 4. Read `.taproot/backlog.md` if it exists. Extract all lines matching `reviewed — not a truth: <term>` — these are permanently dismissed candidates. Build a suppression list from them.
34
+ 4. Read `taproot/agent/backlog.md` if it exists. Extract all lines matching `reviewed — not a truth: <term>` — these are permanently dismissed candidates. Build a suppression list from them.
35
35
 
36
36
  ### Phase 3 — Identify Candidates
37
37
 
@@ -89,11 +89,11 @@ If any of these is true, **autonomous mode is active** — skip interactive prom
89
89
  - No record written; candidate reappears on next discovery run
90
90
 
91
91
  **Backlog [B]:**
92
- - Append to `.taproot/backlog.md`: `- [YYYY-MM-DD] truth candidate: <term>`
92
+ - Append to `taproot/agent/backlog.md`: `- [YYYY-MM-DD] truth candidate: <term>`
93
93
  - Move to next candidate
94
94
 
95
95
  **Dismiss [D]:**
96
- - Append to `.taproot/backlog.md`: `- [YYYY-MM-DD] reviewed — not a truth: <term>`
96
+ - Append to `taproot/agent/backlog.md`: `- [YYYY-MM-DD] reviewed — not a truth: <term>`
97
97
  - This entry suppresses the candidate on all future discovery runs
98
98
  - Move to next candidate
99
99
 
@@ -113,7 +113,7 @@ If any of these is true, **autonomous mode is active** — skip interactive prom
113
113
  ## Output
114
114
 
115
115
  - Zero or more truth files created in `taproot/global-truths/` (via `/tr-ineed` → define-truth)
116
- - `.taproot/backlog.md` updated with any backlogged or dismissed candidates
116
+ - `taproot/agent/backlog.md` updated with any backlogged or dismissed candidates
117
117
  - Summary report: N promoted, N skipped, N backlogged, N dismissed
118
118
 
119
119
  ## CLI Dependencies
@@ -125,5 +125,5 @@ None.
125
125
  - Truth files in `taproot/global-truths/` are any files that are NOT named `intent.md` or `usecase.md`. They may have any name (e.g. `glossary.md`, `pricing-rules.md`, `entity-model.md`).
126
126
  - "Recurring" means 2 or more specs — not just repeated within a single spec.
127
127
  - Skip generic language-level words ("the", "a", "is", "not") and taproot structural terms ("intent", "behaviour", "usecase", "implementation") — these are not domain truths.
128
- - Dismissed entries in `.taproot/backlog.md` are matched by the literal string "reviewed — not a truth: `<term>`" — the suppression logic is substring-match on the candidate term.
128
+ - Dismissed entries in `taproot/agent/backlog.md` are matched by the literal string "reviewed — not a truth: `<term>`" — the suppression logic is substring-match on the candidate term.
129
129
  - This skill is read-only on the hierarchy — it never modifies `intent.md` or `usecase.md` files directly.
package/skills/guide.md CHANGED
@@ -107,7 +107,7 @@ ineed → intent → behaviour → implement → trace → status
107
107
  **What's next?**
108
108
  [A] `/tr-ineed` — capture your first (or next) requirement
109
109
  [B] `/tr-status` — see the current project health at a glance
110
- [C] `/tr-backlog` — triage captured ideas (only if `.taproot/backlog.md` is non-empty)
110
+ [C] `/tr-backlog` — triage captured ideas (only if `taproot/agent/backlog.md` is non-empty)
111
111
 
112
112
  ## Output
113
113
 
@@ -14,7 +14,7 @@ Implement a behaviour spec: write the code, write the tests, create the `impl.md
14
14
  Before following any steps, check whether autonomous mode is active:
15
15
  - `TAPROOT_AUTONOMOUS=1` is set in the environment, **or**
16
16
  - `--autonomous` was passed as an argument to this skill invocation, **or**
17
- - `.taproot/settings.yaml` contains `autonomous: true`
17
+ - `taproot/settings.yaml` contains `autonomous: true`
18
18
 
19
19
  If any of these is true, **autonomous mode is active** — apply the autonomous notes at each step where they appear. If none is true, autonomous mode is **inactive** — show confirmation prompts as normal.
20
20
 
@@ -36,14 +36,14 @@ If any of these is true, **autonomous mode is active** — apply the autonomous
36
36
  - Read each applicable file; apply defined terms and conventions when choosing the implementation approach, naming, and design decisions
37
37
  - If the implementation plan contradicts an applicable truth, surface the conflict before proceeding: "This implementation contradicts `global-truths/<file>`: `<excerpt>`. [A] update plan to align, [B] update the truth, [C] proceed with the conflict noted."
38
38
 
39
- 4. **Pattern check + plan mode.** Before proposing the plan: if `.taproot/docs/patterns.md` exists, scan the behaviour description and any design notes for semantic matches. Match signals:
39
+ 4. **Pattern check + plan mode.** Before proposing the plan: if `taproot/agent/docs/patterns.md` exists, scan the behaviour description and any design notes for semantic matches. Match signals:
40
40
  - "applies to all implementations / cross-cutting concern" → `check-if-affected-by`
41
41
  - "enforce a rule on all future work" → `check-if-affected-by`
42
42
  - "keep a file in sync / update X on every change" → `check-if-affected: X`
43
43
 
44
44
  If a match is found, surface it before the plan:
45
- > "Before the plan — this looks like it could use the **`<pattern-name>`** pattern rather than a custom implementation. See `.taproot/docs/patterns.md`."
46
- > **[A] Use the pattern** — apply it via `.taproot/settings.yaml` instead of writing source code
45
+ > "Before the plan — this looks like it could use the **`<pattern-name>`** pattern rather than a custom implementation. See `taproot/agent/docs/patterns.md`."
46
+ > **[A] Use the pattern** — apply it via `taproot/settings.yaml` instead of writing source code
47
47
  > **[B] Continue with implementation** — the custom implementation is intentional
48
48
 
49
49
  Then **propose the implementation plan:**
@@ -102,7 +102,7 @@ If any of these is true, **autonomous mode is active** — apply the autonomous
102
102
  6. **Declaration commit** — commit `impl.md`, `discussion.md` (if written), and any `usecase.md` link-section update together (no source files):
103
103
 
104
104
  Before committing:
105
- - Read `.taproot/settings.yaml` and note the `definitionOfReady` conditions — these are the checks the hook will run. If the file has no `definitionOfReady` section, only baseline DoR checks run.
105
+ - Read `taproot/settings.yaml` and note the `definitionOfReady` conditions — these are the checks the hook will run. If the file has no `definitionOfReady` section, only baseline DoR checks run.
106
106
  - There is no standalone `taproot dor` command — DoR runs automatically via the pre-commit hook when impl.md is staged without source files (this is a **declaration commit**). Resolve any agent-driven DoR conditions (e.g. `check-if-affected-by`) in impl.md under `## DoR Resolutions` before staging.
107
107
 
108
108
  ```
package/skills/ineed.md CHANGED
@@ -27,7 +27,7 @@ Route a natural language requirement to the right place in the taproot hierarchy
27
27
  - **[B]**: proceed to pattern check below.
28
28
  - **[C]** or no global truth signal: proceed to pattern check below.
29
29
 
30
- 0a. **Pattern check** — If `.taproot/docs/patterns.md` exists, scan the stated requirement for semantic matches against the patterns listed there. Match signals:
30
+ 0a. **Pattern check** — If `taproot/agent/docs/patterns.md` exists, scan the stated requirement for semantic matches against the patterns listed there. Match signals:
31
31
  - "apply to all / every implementation / every skill / everywhere" → `check-if-affected-by`
32
32
  - "guide agents / architecture rules / agents should follow / enforce a rule" → `check-if-affected-by`
33
33
  - "enforce documentation / docs must stay current / keep docs accurate" → `document-current`
@@ -35,14 +35,14 @@ Route a natural language requirement to the right place in the taproot hierarchy
35
35
  - "research before building / check if a library exists / look up how to implement" → research-first (`/tr-research`)
36
36
 
37
37
  If a match is found, **interrupt before proceeding**:
38
- > "Before I route this — that sounds like the **`<pattern-name>`** pattern. <one-line description>. See `.taproot/docs/patterns.md` for how to use it."
38
+ > "Before I route this — that sounds like the **`<pattern-name>`** pattern. <one-line description>. See `taproot/agent/docs/patterns.md` for how to use it."
39
39
  > **[A] Use this pattern now** — I'll guide you through applying it
40
40
  > **[B] Continue as a new requirement** — route and spec it normally
41
41
 
42
- - **[A]**: read the relevant section of `.taproot/docs/patterns.md` and guide the user through applying the pattern directly. Do not create a new hierarchy entry.
42
+ - **[A]**: read the relevant section of `taproot/agent/docs/patterns.md` and guide the user through applying the pattern directly. Do not create a new hierarchy entry.
43
43
  - **[B]** or no match: proceed to step 1.
44
44
 
45
- If multiple patterns match, list all before asking. If `.taproot/docs/patterns.md` is absent, skip silently.
45
+ If multiple patterns match, list all before asking. If `taproot/agent/docs/patterns.md` is absent, skip silently.
46
46
 
47
47
  1. **Classify the requirement** — Load `taproot/OVERVIEW.md` if it exists; if not, walk `taproot/` and read each `intent.md`. Use this hierarchy map to decide which path to take:
48
48
 
package/skills/refine.md CHANGED
@@ -11,14 +11,14 @@ Update a behaviour spec (`usecase.md`) based on what was learned during or after
11
11
 
12
12
  ## Steps
13
13
 
14
- 0. **Pattern check** — If `.taproot/docs/patterns.md` exists, scan the `finding` input for semantic matches. Match signals:
14
+ 0. **Pattern check** — If `taproot/agent/docs/patterns.md` exists, scan the `finding` input for semantic matches. Match signals:
15
15
  - "applies to all / every implementation should" → `check-if-affected-by`
16
16
  - "enforce a rule / architectural constraint" → `check-if-affected-by`
17
17
  - "docs should stay current / keep X updated" → `document-current` or `check-if-affected: X`
18
18
 
19
19
  If a match is found, **interrupt before reading the spec**:
20
- > "Before I refine this — that finding sounds like the **`<pattern-name>`** pattern. <one-line description>. See `.taproot/docs/patterns.md`."
21
- > **[A] Apply the pattern** — configure it in `.taproot/settings.yaml` instead of editing the spec
20
+ > "Before I refine this — that finding sounds like the **`<pattern-name>`** pattern. <one-line description>. See `taproot/agent/docs/patterns.md`."
21
+ > **[A] Apply the pattern** — configure it in `taproot/settings.yaml` instead of editing the spec
22
22
  > **[B] Continue refining** — the spec change is the right approach
23
23
 
24
24
  - **[A]**: guide through applying the pattern. Do not modify `usecase.md`.
@@ -68,7 +68,7 @@ Run a comprehensive review of an entire subtree — an intent and all its descen
68
68
 
69
69
  8. **Truth discovery pass** — if `taproot/global-truths/` exists and the hierarchy has 3 or more readable `intent.md`/`usecase.md` files (excluding `global-truths/`):
70
70
 
71
- Run the same scan as `/tr-discover-truths` (Phase 2–3 of that skill): collect candidates not already defined in `global-truths/` and not suppressed by `.taproot/backlog.md` dismissed entries.
71
+ Run the same scan as `/tr-discover-truths` (Phase 2–3 of that skill): collect candidates not already defined in `global-truths/` and not suppressed by `taproot/agent/backlog.md` dismissed entries.
72
72
 
73
73
  If candidates are found, append to the report:
74
74
 
@@ -86,7 +86,7 @@ Run a comprehensive review of an entire subtree — an intent and all its descen
86
86
 
87
87
  **If [P]:** invoke `/tr-discover-truths` inline; return here when it completes.
88
88
 
89
- **If [D]:** append each candidate to `.taproot/backlog.md` as `- [YYYY-MM-DD] truth candidate: <term>`.
89
+ **If [D]:** append each candidate to `taproot/agent/backlog.md` as `- [YYYY-MM-DD] truth candidate: <term>`.
90
90
 
91
91
  If no candidates found (hierarchy consistent with existing truths), append to report:
92
92
  ```
package/skills/status.md CHANGED
@@ -78,13 +78,13 @@ Generated: <date>
78
78
  [B] `/tr-refine taproot/<intent>/<behaviour>/` — add missing tests
79
79
  [C] `/tr-plan` — pick a different next item
80
80
 
81
- - **If no specific items were found** (healthy project): check whether `.taproot/backlog.md` exists and contains items. Show the generic fallback menu:
81
+ - **If no specific items were found** (healthy project): check whether `taproot/agent/backlog.md` exists and contains items. Show the generic fallback menu:
82
82
 
83
83
  **What's next?**
84
84
  [A] `/tr-plan` — pick the next behaviour to implement
85
85
  [B] `/tr-ineed` — route a new requirement into the hierarchy
86
86
  [C] `/tr-review-all` — deeper semantic review of specs
87
- [D] `/tr-backlog` — triage captured ideas (only if `.taproot/backlog.md` is non-empty)
87
+ [D] `/tr-backlog` — triage captured ideas (only if `taproot/agent/backlog.md` is non-empty)
88
88
 
89
89
  ## Output
90
90