codebyplan 1.5.1 → 1.8.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 (205) hide show
  1. package/dist/cli.js +4462 -748
  2. package/package.json +5 -1
  3. package/templates/.gitkeep +0 -0
  4. package/templates/README.md +20 -0
  5. package/templates/agents/cbp-cc-executor.md +213 -0
  6. package/templates/agents/cbp-database-agent.md +229 -0
  7. package/templates/agents/cbp-improve-claude.md +245 -0
  8. package/templates/agents/cbp-improve-round.md +284 -0
  9. package/templates/agents/cbp-mechanical-edits.md +111 -0
  10. package/templates/agents/cbp-research.md +282 -0
  11. package/templates/agents/cbp-round-executor.md +604 -0
  12. package/templates/agents/cbp-security-agent.md +134 -0
  13. package/templates/agents/cbp-task-check.md +213 -0
  14. package/templates/agents/cbp-task-planner.md +582 -0
  15. package/templates/agents/cbp-test-e2e-agent.md +363 -0
  16. package/templates/agents/cbp-testing-qa-agent.md +400 -0
  17. package/templates/context/mcp-docs.md +139 -0
  18. package/templates/hooks/README.md +236 -0
  19. package/templates/hooks/cbp-auto-test-hooks.sh +44 -0
  20. package/templates/hooks/cbp-lint-format-on-edit.sh +159 -0
  21. package/templates/hooks/cbp-maestro-yaml-validate.sh +100 -0
  22. package/templates/hooks/cbp-mcp-migration-guard.sh +32 -0
  23. package/templates/hooks/cbp-mcp-round-sync.sh +79 -0
  24. package/templates/hooks/cbp-mcp-worktree-inject.sh +76 -0
  25. package/templates/hooks/cbp-notify.sh +68 -0
  26. package/templates/hooks/cbp-plugin-dispatch.sh +29 -0
  27. package/templates/hooks/cbp-pre-commit-quality-gate.sh +204 -0
  28. package/templates/hooks/cbp-statusline.sh +347 -0
  29. package/templates/hooks/cbp-subagent-statusline.sh +182 -0
  30. package/templates/hooks/cbp-test-coverage-gate.sh +144 -0
  31. package/templates/hooks/cbp-test-hooks.sh +320 -0
  32. package/templates/hooks/hooks.json +85 -0
  33. package/templates/hooks/validate-context-usage.sh +59 -0
  34. package/templates/hooks/validate-git-commit.sh +78 -0
  35. package/templates/hooks/validate-git-stash-deny.sh +32 -0
  36. package/templates/hooks/validate-structure-lengths.sh +57 -0
  37. package/templates/hooks/validate-structure-lib.sh +104 -0
  38. package/templates/hooks/validate-structure-patterns.sh +54 -0
  39. package/templates/hooks/validate-structure-scope.sh +33 -0
  40. package/templates/hooks/validate-structure-smoke.sh +95 -0
  41. package/templates/hooks/validate-structure-templates.sh +34 -0
  42. package/templates/hooks/validate-structure.sh +69 -0
  43. package/templates/rules/.gitkeep +0 -0
  44. package/templates/rules/README.md +47 -0
  45. package/templates/rules/context-file-loading.md +52 -0
  46. package/templates/rules/scope-vocabulary.md +64 -0
  47. package/templates/rules/todo-backend.md +109 -0
  48. package/templates/settings.project.base.json +55 -0
  49. package/templates/settings.user.base.json +25 -0
  50. package/templates/skills/cbp-build-cc-agent/SKILL.md +139 -0
  51. package/templates/skills/cbp-build-cc-agent/examples/read-only-reviewer.md +32 -0
  52. package/templates/skills/cbp-build-cc-agent/examples/with-hooks.md +41 -0
  53. package/templates/skills/cbp-build-cc-agent/examples/with-skills-preload.md +25 -0
  54. package/templates/skills/cbp-build-cc-agent/reference/cbp-quality.md +153 -0
  55. package/templates/skills/cbp-build-cc-agent/reference/frontmatter-fields.md +37 -0
  56. package/templates/skills/cbp-build-cc-agent/reference/permission-modes.md +18 -0
  57. package/templates/skills/cbp-build-cc-agent/scripts/validate-agent.sh +67 -0
  58. package/templates/skills/cbp-build-cc-agent/templates/agent.md +66 -0
  59. package/templates/skills/cbp-build-cc-claude-file/SKILL.md +178 -0
  60. package/templates/skills/cbp-build-cc-claude-file/examples/minimal-project.md +33 -0
  61. package/templates/skills/cbp-build-cc-claude-file/examples/monorepo-with-imports.md +39 -0
  62. package/templates/skills/cbp-build-cc-claude-file/reference/imports.md +72 -0
  63. package/templates/skills/cbp-build-cc-claude-file/reference/what-belongs.md +39 -0
  64. package/templates/skills/cbp-build-cc-claude-file/templates/project-claude-md.md +48 -0
  65. package/templates/skills/cbp-build-cc-claude-file/templates/user-claude-md.md +22 -0
  66. package/templates/skills/cbp-build-cc-memory/SKILL.md +201 -0
  67. package/templates/skills/cbp-build-cc-memory/examples/feedback-memory.md +11 -0
  68. package/templates/skills/cbp-build-cc-memory/examples/project-memory.md +11 -0
  69. package/templates/skills/cbp-build-cc-memory/examples/reference-memory.md +13 -0
  70. package/templates/skills/cbp-build-cc-memory/examples/user-memory.md +14 -0
  71. package/templates/skills/cbp-build-cc-memory/reference/memory-types.md +59 -0
  72. package/templates/skills/cbp-build-cc-memory/reference/when-to-save.md +62 -0
  73. package/templates/skills/cbp-build-cc-memory/templates/MEMORY-index.md +4 -0
  74. package/templates/skills/cbp-build-cc-memory/templates/memory-entry.md +15 -0
  75. package/templates/skills/cbp-build-cc-mode/SKILL.md +99 -0
  76. package/templates/skills/cbp-build-cc-rule/SKILL.md +176 -0
  77. package/templates/skills/cbp-build-cc-rule/examples/global-rule.md +19 -0
  78. package/templates/skills/cbp-build-cc-rule/examples/scoped-rule.md +41 -0
  79. package/templates/skills/cbp-build-cc-rule/reference/paths-patterns.md +48 -0
  80. package/templates/skills/cbp-build-cc-rule/templates/rule.md +32 -0
  81. package/templates/skills/cbp-build-cc-settings/SKILL.md +220 -0
  82. package/templates/skills/cbp-build-cc-settings/examples/hooks-config.json +64 -0
  83. package/templates/skills/cbp-build-cc-settings/examples/permissions-config.json +34 -0
  84. package/templates/skills/cbp-build-cc-settings/examples/sandbox-config.json +42 -0
  85. package/templates/skills/cbp-build-cc-settings/reference/cbp-conventions.md +104 -0
  86. package/templates/skills/cbp-build-cc-settings/reference/permission-rules.md +61 -0
  87. package/templates/skills/cbp-build-cc-settings/reference/scope-precedence.md +73 -0
  88. package/templates/skills/cbp-build-cc-settings/reference/settings-fields.md +166 -0
  89. package/templates/skills/cbp-build-cc-settings/templates/settings.json +23 -0
  90. package/templates/skills/cbp-build-cc-settings/templates/settings.local.json +10 -0
  91. package/templates/skills/cbp-build-cc-skill/SKILL.md +154 -0
  92. package/templates/skills/cbp-build-cc-skill/examples/dynamic-context.md +31 -0
  93. package/templates/skills/cbp-build-cc-skill/examples/fork-skill.md +22 -0
  94. package/templates/skills/cbp-build-cc-skill/examples/knowledge-skill.md +25 -0
  95. package/templates/skills/cbp-build-cc-skill/examples/task-skill.md +29 -0
  96. package/templates/skills/cbp-build-cc-skill/reference/cbp-quality.md +157 -0
  97. package/templates/skills/cbp-build-cc-skill/reference/frontmatter-fields.md +35 -0
  98. package/templates/skills/cbp-build-cc-skill/reference/string-substitutions.md +60 -0
  99. package/templates/skills/cbp-build-cc-skill/scripts/validate-skill.sh +90 -0
  100. package/templates/skills/cbp-build-cc-skill/templates/skill.md +51 -0
  101. package/templates/skills/cbp-checkpoint-check/SKILL.md +156 -0
  102. package/templates/skills/cbp-checkpoint-complete/SKILL.md +109 -0
  103. package/templates/skills/cbp-checkpoint-create/SKILL.md +287 -0
  104. package/templates/skills/cbp-checkpoint-end/SKILL.md +241 -0
  105. package/templates/skills/cbp-checkpoint-update/SKILL.md +115 -0
  106. package/templates/skills/cbp-frontend-a11y/SKILL.md +109 -0
  107. package/templates/skills/cbp-frontend-a11y/reference/aria-roles-states.md +130 -0
  108. package/templates/skills/cbp-frontend-a11y/reference/contrast-visual.md +122 -0
  109. package/templates/skills/cbp-frontend-a11y/reference/keyboard-patterns.md +154 -0
  110. package/templates/skills/cbp-frontend-a11y/reference/semantic-html.md +111 -0
  111. package/templates/skills/cbp-frontend-design/SKILL.md +145 -0
  112. package/templates/skills/cbp-frontend-design/reference/nextjs-scss.md +118 -0
  113. package/templates/skills/cbp-frontend-design/reference/rn-expo.md +101 -0
  114. package/templates/skills/cbp-frontend-design/reference/tauri-react.md +82 -0
  115. package/templates/skills/cbp-frontend-ui/SKILL.md +262 -0
  116. package/templates/skills/cbp-frontend-ui/reference/ui-label-maps.md +42 -0
  117. package/templates/skills/cbp-frontend-ui/reference/ui-layout-patterns.md +105 -0
  118. package/templates/skills/cbp-frontend-ui/reference/variant-defaults.md +149 -0
  119. package/templates/skills/cbp-frontend-ux/SKILL.md +181 -0
  120. package/templates/skills/cbp-git-branch-feat-create/SKILL.md +115 -0
  121. package/templates/skills/cbp-git-commit/SKILL.md +278 -0
  122. package/templates/skills/cbp-git-worktree-create/SKILL.md +226 -0
  123. package/templates/skills/cbp-git-worktree-remove/SKILL.md +145 -0
  124. package/templates/skills/cbp-merge-main/SKILL.md +228 -0
  125. package/templates/skills/cbp-round-check/SKILL.md +104 -0
  126. package/templates/skills/cbp-round-end/SKILL.md +183 -0
  127. package/templates/skills/cbp-round-end/reference/findings-presentation.md +44 -0
  128. package/templates/skills/cbp-round-end/reference/inline-fallback.md +35 -0
  129. package/templates/skills/cbp-round-execute/SKILL.md +211 -0
  130. package/templates/skills/cbp-round-execute/reference/inline-fallback.md +59 -0
  131. package/templates/skills/cbp-round-input/SKILL.md +165 -0
  132. package/templates/skills/cbp-round-start/SKILL.md +222 -0
  133. package/templates/skills/cbp-round-update/SKILL.md +163 -0
  134. package/templates/skills/cbp-session-end/SKILL.md +187 -0
  135. package/templates/skills/cbp-session-start/SKILL.md +155 -0
  136. package/templates/skills/cbp-ship/SKILL.md +332 -0
  137. package/templates/skills/cbp-ship/reference/changesets-overview.md +120 -0
  138. package/templates/skills/cbp-ship/reference/eas-cli-overview.md +60 -0
  139. package/templates/skills/cbp-ship/reference/gh-cli-overview.md +135 -0
  140. package/templates/skills/cbp-ship/reference/gh-cli-shipment-commands.md +283 -0
  141. package/templates/skills/cbp-ship/reference/npm-publish-monorepo.md +252 -0
  142. package/templates/skills/cbp-ship/reference/npm-publish-oidc-trusted.md +157 -0
  143. package/templates/skills/cbp-ship/reference/npm-publish-overview.md +171 -0
  144. package/templates/skills/cbp-ship/reference/preflight-checklist.md +88 -0
  145. package/templates/skills/cbp-ship/reference/railway-nestjs-deployment.md +169 -0
  146. package/templates/skills/cbp-ship/reference/railway-overview.md +120 -0
  147. package/templates/skills/cbp-ship/reference/railway-troubleshooting.md +168 -0
  148. package/templates/skills/cbp-ship/reference/release-please-overview.md +99 -0
  149. package/templates/skills/cbp-ship/reference/surface-expo-eas.md +155 -0
  150. package/templates/skills/cbp-ship/reference/surface-npm.md +180 -0
  151. package/templates/skills/cbp-ship/reference/surface-railway.md +152 -0
  152. package/templates/skills/cbp-ship/reference/surface-supabase.md +178 -0
  153. package/templates/skills/cbp-ship/reference/surface-tauri.md +138 -0
  154. package/templates/skills/cbp-ship/reference/surface-vercel.md +124 -0
  155. package/templates/skills/cbp-ship/reference/surface-vscode-ext.md +144 -0
  156. package/templates/skills/cbp-ship/reference/surfaces.md +60 -0
  157. package/templates/skills/cbp-ship/reference/testflight-automation.md +215 -0
  158. package/templates/skills/cbp-ship/reference/testflight-internal-vs-external.md +69 -0
  159. package/templates/skills/cbp-ship/reference/testflight-overview.md +98 -0
  160. package/templates/skills/cbp-ship/reference/versioning.md +116 -0
  161. package/templates/skills/cbp-ship/scripts/detect-surfaces.sh +217 -0
  162. package/templates/skills/cbp-ship/scripts/verify-expo-eas.sh +35 -0
  163. package/templates/skills/cbp-ship/scripts/verify-npm.sh +21 -0
  164. package/templates/skills/cbp-ship/scripts/verify-railway.sh +41 -0
  165. package/templates/skills/cbp-ship/scripts/verify-supabase.sh +19 -0
  166. package/templates/skills/cbp-ship/scripts/verify-tauri.sh +24 -0
  167. package/templates/skills/cbp-ship/scripts/verify-vercel.sh +32 -0
  168. package/templates/skills/cbp-ship/scripts/verify-vscode-ext.sh +25 -0
  169. package/templates/skills/cbp-ship/templates/eas.json +66 -0
  170. package/templates/skills/cbp-ship/templates/railway.toml +15 -0
  171. package/templates/skills/cbp-ship/templates/release-please-config.json +17 -0
  172. package/templates/skills/cbp-ship/templates/vercel.json +19 -0
  173. package/templates/skills/cbp-ship/templates/vscodeignore +21 -0
  174. package/templates/skills/cbp-ship/templates/workflow-changesets.yml +41 -0
  175. package/templates/skills/cbp-ship/templates/workflow-eas-submit.yml +53 -0
  176. package/templates/skills/cbp-ship/templates/workflow-npm-publish.yml +36 -0
  177. package/templates/skills/cbp-ship/templates/workflow-release-please.yml +21 -0
  178. package/templates/skills/cbp-ship/templates/workflow-tauri-release.yml +69 -0
  179. package/templates/skills/cbp-ship/templates/workflow-vsce-publish.yml +31 -0
  180. package/templates/skills/cbp-ship-configure/SKILL.md +296 -0
  181. package/templates/skills/cbp-ship-configure/reference/expo-mobile.md +204 -0
  182. package/templates/skills/cbp-ship-configure/reference/npm-package.md +165 -0
  183. package/templates/skills/cbp-ship-configure/reference/railway-backend.md +199 -0
  184. package/templates/skills/cbp-ship-configure/reference/supabase.md +200 -0
  185. package/templates/skills/cbp-ship-configure/reference/tauri-desktop.md +181 -0
  186. package/templates/skills/cbp-ship-configure/reference/vercel.md +117 -0
  187. package/templates/skills/cbp-ship-configure/reference/vscode-ext.md +155 -0
  188. package/templates/skills/cbp-ship-main/SKILL.md +65 -0
  189. package/templates/skills/cbp-supabase-branch-check/SKILL.md +337 -0
  190. package/templates/skills/cbp-supabase-branch-check/reference/dag-steps.md +29 -0
  191. package/templates/skills/cbp-supabase-migrate/SKILL.md +314 -0
  192. package/templates/skills/cbp-supabase-migrate/reference/advisor-triage.md +70 -0
  193. package/templates/skills/cbp-supabase-migrate/reference/cli-fallback.md +87 -0
  194. package/templates/skills/cbp-supabase-migrate/reference/preflight-dry-run.md +58 -0
  195. package/templates/skills/cbp-supabase-setup/SKILL.md +239 -0
  196. package/templates/skills/cbp-supabase-setup/reference/branching-setup.md +121 -0
  197. package/templates/skills/cbp-supabase-setup/reference/cli-fallback.md +109 -0
  198. package/templates/skills/cbp-task-check/SKILL.md +166 -0
  199. package/templates/skills/cbp-task-complete/SKILL.md +206 -0
  200. package/templates/skills/cbp-task-complete/reference/checkpoint-done-branching.md +48 -0
  201. package/templates/skills/cbp-task-complete/reference/next-step-heuristic.md +56 -0
  202. package/templates/skills/cbp-task-create/SKILL.md +167 -0
  203. package/templates/skills/cbp-task-start/SKILL.md +239 -0
  204. package/templates/skills/cbp-task-testing/SKILL.md +277 -0
  205. package/templates/skills/cbp-todo/SKILL.md +97 -0
@@ -0,0 +1,104 @@
1
+ ---
2
+ scope: org-shared
3
+ ---
4
+
5
+ # Settings Authoring Conventions
6
+
7
+ Read this before creating or updating `.claude/settings.json` or `.claude/settings.local.json`. This file adds CBP-specific constraints on top of the official Claude Code settings spec.
8
+
9
+ ## Two-File Model (CBP Convention)
10
+
11
+ | File | Synced | Committed | Contains |
12
+ | ----------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------------------------- |
13
+ | `.claude/settings.json` | No (git-tracked only) | Yes | Global + repo-merged: hooks, statusLine, `permissions.deny`, `permissions.ask`, attribution |
14
+ | `.claude/settings.local.json` | No | No (gitignored) | Local-only: `permissions.allow` (personal), MCP config, `autoMemoryDirectory` |
15
+
16
+ **Runtime precedence:** Claude Code merges both; `settings.local.json` takes precedence for scalars, and arrays concatenate across scopes.
17
+
18
+ ## What Goes Where
19
+
20
+ | Setting | File | Why |
21
+ | --------------------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
22
+ | `hooks` | `settings.json` | Team-shared lifecycle scripts |
23
+ | `permissions.deny` | `settings.json` | Team security baseline — block secrets, destructive ops |
24
+ | `permissions.ask` | `settings.json` | Team-shared confirmation gates |
25
+ | `permissions.allow` | `settings.local.json` | Personal — pre-approved commands for your workflow |
26
+ | `statusLine` | `settings.json` | Team-shared status bar |
27
+ | `attribution.commit` / `attribution.pr` | `settings.json` | Policy (CBP = empty strings, no co-author) |
28
+ | `env` (non-secret) | `settings.json` | Team telemetry, feature flags |
29
+ | `env` (secrets) | Neither — use `.env.local` | Never commit secrets |
30
+ | `mcpServers` | `settings.local.json` | Personal MCP endpoints |
31
+ | `autoMemoryDirectory` | `settings.local.json` or `~/.claude/settings.json` | Runtime **rejects** this key from project settings |
32
+ | `enabledPlugins` | `settings.local.json` | Personal plugin choice |
33
+
34
+ ## CBP Policy Defaults
35
+
36
+ These values are part of the CBP baseline and should not be weakened:
37
+
38
+ ```json
39
+ {
40
+ "attribution": { "commit": "", "pr": "" },
41
+ "permissions": {
42
+ "defaultMode": "bypassPermissions",
43
+ "deny": ["Bash(rm -rf /:*)", "Bash(rm -rf ~:*)", "Bash(rm -rf /*:*)"],
44
+ "ask": [
45
+ "Bash(git reset:*)",
46
+ "Bash(git clean:*)",
47
+ "Bash(git push --force:*)",
48
+ "Bash(git push -f:*)",
49
+ "Bash(git checkout -- :*)",
50
+ "Bash(git add .:*)",
51
+ "Bash(git add -A:*)",
52
+ "Bash(rm -rf:*)",
53
+ "Bash(pnpm add:*)",
54
+ "Bash(pnpm install:*)",
55
+ "Bash(npm install:*)",
56
+ "Bash(npm i:*)",
57
+ "Bash(npx add:*)"
58
+ ]
59
+ }
60
+ }
61
+ ```
62
+
63
+ | Rule | Reason |
64
+ | ----------------------------------------------------------- | -------------------------------------------------- |
65
+ | `attribution.commit` = `""` | No Claude / AI mention in commits (CBP git policy) |
66
+ | `permissions.deny` covers `rm -rf` of root paths | Catastrophic blast radius |
67
+ | `permissions.ask` covers destructive git + package installs | Requires explicit user approval |
68
+
69
+ ## File Authority
70
+
71
+ `settings.json` is git-tracked and local to the repo. Direct edits are the authoritative change — commit changes you want to keep.
72
+
73
+ `settings.local.json` is never committed. It's yours.
74
+
75
+ ## Required `$schema` Line
76
+
77
+ Always include:
78
+
79
+ ```json
80
+ { "$schema": "https://json.schemastore.org/claude-code-settings.json", ... }
81
+ ```
82
+
83
+ Enables editor autocomplete + validation. The published schema lags the CLI, so a warning on a new field is not necessarily invalid.
84
+
85
+ ## When to Use Which Scope
86
+
87
+ | Goal | Scope |
88
+ | --------------------------------------- | ---------------------------------------------- |
89
+ | Add a team-shared pre-commit hook | `settings.json` |
90
+ | Block a new dangerous Bash pattern | `settings.json` (`permissions.deny`) |
91
+ | Pre-approve a command you run often | `settings.local.json` (`permissions.allow`) |
92
+ | Point auto-memory at a custom directory | `settings.local.json` (project-scope rejected) |
93
+ | Enable personal plugin | `settings.local.json` |
94
+ | Add MCP server endpoint | `settings.local.json` |
95
+
96
+ ## Common Mistakes
97
+
98
+ | Mistake | Fix |
99
+ | ------------------------------------------------------ | -------------------------------------------------- |
100
+ | Putting `autoMemoryDirectory` in `settings.json` | Runtime rejects it — move to `settings.local.json` |
101
+ | Personal `permissions.allow` in `settings.json` | Team doesn't want your personal allowlist |
102
+ | Committing secrets in `env` | Use `.env.local` instead |
103
+ | Weakening CBP defaults (removing deny rules) | Don't — get team sign-off first |
104
+ | Adding hooks without `scope:` header in the `.sh` file | Hook file needs `# @scope: org-shared` comment |
@@ -0,0 +1,61 @@
1
+ # Permission Rule Syntax
2
+
3
+ Source: official Claude Code settings and permissions specs.
4
+
5
+ ## Form
6
+
7
+ ```
8
+ Tool # matches all uses of the tool
9
+ Tool(specifier) # matches uses matching the specifier
10
+ ```
11
+
12
+ Evaluated in order: **deny → ask → allow**. First matching rule wins.
13
+
14
+ ## Quick reference
15
+
16
+ | Rule | Effect |
17
+ |------|--------|
18
+ | `Bash` | All Bash commands |
19
+ | `Bash(npm run *)` | Commands starting with `npm run` |
20
+ | `Bash(git push *)` | Commands starting with `git push` |
21
+ | `Read` | All file reads |
22
+ | `Read(./.env)` | Read of `.env` in project root |
23
+ | `Read(./.env.*)` | Any `.env.*` file |
24
+ | `Read(./secrets/**)` | Anything under `./secrets/` |
25
+ | `Edit(./build/**)` | Writes under `./build/` |
26
+ | `WebFetch` | All web fetches |
27
+ | `WebFetch(domain:example.com)` | Fetches to example.com |
28
+ | `Agent(Explore)` | Spawning the Explore subagent |
29
+ | `Skill(commit)` | Invoking the commit skill (exact match) |
30
+ | `Skill(review-pr *)` | Invoking review-pr with any args |
31
+
32
+ ## Path conventions
33
+
34
+ For `Read(...)` and `Edit(...)` specifiers:
35
+
36
+ | Prefix | Meaning |
37
+ |--------|---------|
38
+ | `./` or no prefix | Project-relative (relative to working dir) |
39
+ | `//` | Absolute path |
40
+ | `~/` | Home directory |
41
+ | `**` | Recursive glob |
42
+ | `*` | Single-segment wildcard |
43
+
44
+ ⚠️ Sandbox filesystem paths use *different* conventions — there, `/path` is absolute. See the sandbox section of the Claude Code settings spec.
45
+
46
+ ## Bash specificity
47
+
48
+ `Bash(foo *)` matches commands starting with `foo `. It is **not** a full shell parser — it's prefix matching after expansion of `*`. So:
49
+
50
+ - `Bash(git diff *)` matches `git diff HEAD` but not `git diff HEAD` (double space)
51
+ - Users can bypass loose patterns with command substitution. Don't rely on Bash patterns for security; use `deny` for hard blocks
52
+
53
+ ## Array merging
54
+
55
+ `allow`, `ask`, `deny` **merge across scopes** (concatenate + dedupe). Managed + user + project + local all contribute. You cannot remove a higher-scope entry by leaving it off at a lower scope.
56
+
57
+ ## Deny wins
58
+
59
+ - `deny` > `ask` > `allow`
60
+ - Managed `deny` cannot be weakened by lower scopes
61
+ - Use `deny` for secrets regardless of what any other scope says
@@ -0,0 +1,73 @@
1
+ # Scope Precedence & Merging
2
+
3
+ Source: official Claude Code settings spec — *Settings precedence*.
4
+
5
+ ## Priority order (highest first)
6
+
7
+ 1. **Managed** (server-managed > MDM/OS > file-based > HKCU)
8
+ 2. **Command-line flags** (`--permission-mode`, etc.)
9
+ 3. **Local project** — `.claude/settings.local.json`
10
+ 4. **Shared project** — `.claude/settings.json`
11
+ 5. **User** — `~/.claude/settings.json`
12
+
13
+ ## Scalars vs arrays
14
+
15
+ ### Scalars (higher scope WINS outright)
16
+
17
+ | Example | Effect |
18
+ |---------|--------|
19
+ | `model` | Managed value replaces user value |
20
+ | `defaultMode` | Highest scope wins, no merge |
21
+ | `autoUpdatesChannel` | Highest scope wins |
22
+ | `language` | Highest scope wins |
23
+
24
+ ### Arrays (MERGE: concatenate + dedupe)
25
+
26
+ | Example | Effect |
27
+ |---------|--------|
28
+ | `permissions.allow` / `ask` / `deny` | All scopes contribute |
29
+ | `sandbox.filesystem.allowWrite` / `denyWrite` / `denyRead` | All scopes merge |
30
+ | `sandbox.network.allowedDomains` / `deniedDomains` | All scopes merge |
31
+ | `allowedHttpHookUrls` | All scopes merge |
32
+ | `httpHookAllowedEnvVars` | All scopes merge |
33
+ | `claudeMdExcludes` | All scopes merge |
34
+ | `companyAnnouncements` | All scopes merge |
35
+ | `additionalDirectories` | All scopes merge |
36
+
37
+ You cannot *remove* an array entry from a higher scope by omitting it lower.
38
+
39
+ ## Managed-only keys
40
+
41
+ Some keys are read **only** from managed settings — set in any other scope, they're ignored:
42
+
43
+ - `allowManagedHooksOnly`
44
+ - `allowManagedMcpServersOnly`
45
+ - `allowManagedPermissionRulesOnly`
46
+ - `allowedChannelPlugins`
47
+ - `channelsEnabled`
48
+ - `blockedMarketplaces`, `strictKnownMarketplaces`
49
+ - `forceRemoteSettingsRefresh`
50
+ - `pluginTrustMessage`
51
+
52
+ ## Project-forbidden keys
53
+
54
+ Some keys are ignored when placed in `.claude/settings.json` (team-shared) to prevent shared repos from doing hostile things:
55
+
56
+ - `autoMemoryDirectory` — shared repo cannot redirect memory writes
57
+ - `autoMode` — shared repo cannot reshape the auto-mode classifier
58
+ - `useAutoModeDuringPlan` — not read from shared project settings
59
+ - `skipDangerousModePermissionPrompt` — shared repo cannot auto-bypass
60
+
61
+ These work from user, local, or managed scope only.
62
+
63
+ ## Verify active settings
64
+
65
+ ```
66
+ /status # inside a Claude Code session
67
+ ```
68
+
69
+ Shows each active layer, its origin (file / plist / registry / remote), and flags file-parse errors.
70
+
71
+ ## Backups
72
+
73
+ Claude Code auto-backs-up settings files on change, keeping the last 5 versions.
@@ -0,0 +1,166 @@
1
+ # settings.json Field Reference
2
+
3
+ Source: official Claude Code settings spec. Grouped by category. All fields are optional.
4
+
5
+ ## Permissions & modes
6
+
7
+ | Key | Purpose |
8
+ |-----|---------|
9
+ | `permissions.allow` | Pre-approve tool rules |
10
+ | `permissions.ask` | Force confirmation for these rules |
11
+ | `permissions.deny` | Block these rules outright |
12
+ | `permissions.additionalDirectories` | Extra dirs Claude may touch (no config discovery) |
13
+ | `permissions.defaultMode` | Default permission mode at session start |
14
+ | `disableBypassPermissionsMode` | `"disable"` to prevent `--dangerously-skip-permissions` |
15
+ | `skipDangerousModePermissionPrompt` | Skip the bypass confirmation |
16
+
17
+ ## Hooks
18
+
19
+ | Key | Purpose |
20
+ |-----|---------|
21
+ | `hooks` | Event → matcher → command mappings |
22
+ | `disableAllHooks` | Kill switch |
23
+ | `allowedHttpHookUrls` | URL allowlist for HTTP hooks |
24
+ | `httpHookAllowedEnvVars` | Env var allowlist HTTP hooks may interpolate |
25
+ | `allowManagedHooksOnly` | Managed-only: only managed/SDK/managed-plugin hooks run |
26
+
27
+ ## Sandbox (mac/linux/WSL2)
28
+
29
+ | Key | Purpose |
30
+ |-----|---------|
31
+ | `sandbox.enabled` | Turn on sandboxing |
32
+ | `sandbox.failIfUnavailable` | Exit rather than degrade |
33
+ | `sandbox.autoAllowBashIfSandboxed` | Auto-approve Bash when sandboxed |
34
+ | `sandbox.excludedCommands` | Run these outside the sandbox |
35
+ | `sandbox.allowUnsandboxedCommands` | Allow the `dangerouslyDisableSandbox` escape hatch |
36
+ | `sandbox.filesystem.allowWrite` / `denyWrite` / `allowRead` / `denyRead` | Path controls |
37
+ | `sandbox.network.allowedDomains` / `deniedDomains` | Domain allow/deny |
38
+ | `sandbox.network.allowLocalBinding` | Listen on localhost |
39
+ | `sandbox.network.allowUnixSockets` / `allowAllUnixSockets` | Socket policy |
40
+ | `sandbox.network.httpProxyPort` / `socksProxyPort` | BYO proxy ports |
41
+
42
+ ## Attribution
43
+
44
+ | Key | Purpose |
45
+ |-----|---------|
46
+ | `attribution.commit` | Commit trailer (empty string hides) |
47
+ | `attribution.pr` | PR body attribution (empty string hides) |
48
+
49
+ ## Env & models
50
+
51
+ | Key | Purpose |
52
+ |-----|---------|
53
+ | `env` | Per-session environment variables |
54
+ | `model` | Override default model |
55
+ | `modelOverrides` | Map model IDs (e.g. Bedrock profile ARNs) |
56
+ | `availableModels` | Restrict which models `/model` exposes |
57
+ | `effortLevel` | Persist effort across sessions |
58
+ | `alwaysThinkingEnabled` | Extended thinking on by default |
59
+ | `showThinkingSummaries` | Show thinking summaries |
60
+
61
+ ## Memory & rules
62
+
63
+ | Key | Purpose |
64
+ |-----|---------|
65
+ | `autoMemoryEnabled` | Toggle auto memory |
66
+ | `autoMemoryDirectory` | Custom auto-memory path (user/local/policy only) |
67
+ | `claudeMdExcludes` | Glob excludes for CLAUDE.md files |
68
+
69
+ ## Plugins
70
+
71
+ | Key | Purpose |
72
+ |-----|---------|
73
+ | `enabledPlugins` | `{"plugin@marketplace": true/false}` |
74
+ | `extraKnownMarketplaces` | Extra marketplace sources |
75
+ | `strictKnownMarketplaces` | Managed-only allowlist |
76
+ | `blockedMarketplaces` | Managed-only blocklist |
77
+ | `pluginTrustMessage` | Managed-only trust message |
78
+
79
+ ## MCP
80
+
81
+ | Key | Purpose |
82
+ |-----|---------|
83
+ | `enableAllProjectMcpServers` | Auto-approve `.mcp.json` servers |
84
+ | `enabledMcpjsonServers` / `disabledMcpjsonServers` | Explicit MCP control |
85
+ | `allowedMcpServers` / `deniedMcpServers` / `allowManagedMcpServersOnly` | Managed-only MCP gating |
86
+
87
+ ## Channels (Team/Enterprise)
88
+
89
+ | Key | Purpose |
90
+ |-----|---------|
91
+ | `channelsEnabled` | Managed-only switch |
92
+ | `allowedChannelPlugins` | Managed-only allowlist |
93
+
94
+ ## UI / UX
95
+
96
+ | Key | Purpose |
97
+ |-----|---------|
98
+ | `statusLine` | Custom status line command |
99
+ | `tui` | `"fullscreen"` or `"default"` |
100
+ | `viewMode` | Default transcript view |
101
+ | `spinnerTipsEnabled` / `spinnerTipsOverride` / `spinnerVerbs` | Spinner look |
102
+ | `language` | Preferred response language |
103
+ | `prefersReducedMotion` | Reduce animations |
104
+ | `companyAnnouncements` | Startup banner strings |
105
+
106
+ ## Updates & versions
107
+
108
+ | Key | Purpose |
109
+ |-----|---------|
110
+ | `autoUpdatesChannel` | `"stable"` or `"latest"` |
111
+ | `minimumVersion` | Floor for updates |
112
+
113
+ ## Fast mode / background tasks
114
+
115
+ | Key | Purpose |
116
+ |-----|---------|
117
+ | `fastModePerSessionOptIn` | Require opt-in per session |
118
+ | `useAutoModeDuringPlan` | Auto mode during plan mode |
119
+ | `disableAutoMode` | Kill auto mode entirely |
120
+
121
+ ## Sessions & persistence
122
+
123
+ | Key | Purpose |
124
+ |-----|---------|
125
+ | `cleanupPeriodDays` | Transcript TTL |
126
+ | `feedbackSurveyRate` | Quality survey probability |
127
+ | `awaySummaryEnabled` | Away-return session recap |
128
+
129
+ ## Worktrees (monorepo)
130
+
131
+ | Key | Purpose |
132
+ |-----|---------|
133
+ | `worktree.symlinkDirectories` | Dirs to symlink (e.g. `node_modules`) |
134
+ | `worktree.sparsePaths` | Sparse-checkout paths |
135
+
136
+ ## Auth & login
137
+
138
+ | Key | Purpose |
139
+ |-----|---------|
140
+ | `apiKeyHelper` | Script generating API key |
141
+ | `forceLoginMethod` | `"claudeai"` or `"console"` |
142
+ | `forceLoginOrgUUID` | Organization lock |
143
+ | `awsAuthRefresh` / `awsCredentialExport` | Bedrock helpers |
144
+
145
+ ## File suggestion
146
+
147
+ | Key | Purpose |
148
+ |-----|---------|
149
+ | `fileSuggestion` | Custom `@` autocomplete command |
150
+ | `respectGitignore` | `@` picker respects `.gitignore` |
151
+
152
+ ## Miscellaneous
153
+
154
+ | Key | Purpose |
155
+ |-----|---------|
156
+ | `agent` | Run main thread as a named subagent |
157
+ | `outputStyle` | Custom output style |
158
+ | `plansDirectory` | Where plans live |
159
+ | `defaultShell` | `"bash"` or `"powershell"` |
160
+ | `disableSkillShellExecution` | Block `!`-command injection |
161
+ | `skipWebFetchPreflight` | Skip WebFetch safety check |
162
+ | `includeGitInstructions` | Include built-in git instructions |
163
+ | `voiceEnabled` | Enable push-to-talk dictation |
164
+ | `sshConfigs` | Desktop SSH connections |
165
+ | `otelHeadersHelper` | Dynamic OTel headers |
166
+ | `disableDeepLinkRegistration` | Block `claude-cli://` protocol handler |
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "permissions": {
4
+ "allow": [
5
+ "Bash(git status *)",
6
+ "Bash(git diff *)",
7
+ "Bash(git log *)"
8
+ ],
9
+ "deny": [
10
+ "WebFetch",
11
+ "Bash(curl *)",
12
+ "Read(./.env)",
13
+ "Read(./.env.*)",
14
+ "Read(./secrets/**)"
15
+ ]
16
+ },
17
+ "env": {},
18
+ "hooks": {},
19
+ "attribution": {
20
+ "commit": "",
21
+ "pr": ""
22
+ }
23
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "permissions": {
4
+ "allow": [
5
+ "Bash(pnpm *)",
6
+ "Bash(jq *)",
7
+ "Read(~/.zshrc)"
8
+ ]
9
+ }
10
+ }
@@ -0,0 +1,154 @@
1
+ ---
2
+ scope: org-shared
3
+ name: cbp-build-cc-skill
4
+ description: Build a Claude Code skill at .claude/skills/{name}/SKILL.md following the official skills spec — frontmatter, supporting files (templates, examples, reference, scripts), invocation control, argument substitution, dynamic context, fork-to-subagent, allowed-tools.
5
+ argument-hint: "[skill-name] [--scope=project|user] [--fork] [--disable-model-invocation]"
6
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(chmod *)
7
+ effort: xhigh
8
+ ---
9
+
10
+ # Build Claude Code Skill
11
+
12
+ Create a Claude Code skill following the official Claude Code skills spec. Uses every feature the runtime supports: frontmatter, supporting files, argument substitution, dynamic context injection, forked subagent execution, pre-approved tools.
13
+
14
+ **CBP authoring quality** (one-responsibility discipline, pipeline clarity, approval gates, auto-trigger vs wait, command follow-up format; hook warns at 300 lines, blocks at 600): read [reference/cbp-quality.md](reference/cbp-quality.md) before writing.
15
+
16
+ ## Arguments
17
+
18
+ `$ARGUMENTS` — skill name (kebab-case, required). Flags: `--scope=project|user` (default `project`), `--fork` (add `context: fork`), `--disable-model-invocation` (manual-only).
19
+
20
+ ## When to Use
21
+
22
+ - You keep pasting the same playbook/checklist into chat
23
+ - A section of CLAUDE.md has grown into a procedure rather than a fact
24
+ - You want a reusable workflow accessible via `/skill-name`
25
+ - You need a step-by-step task that can accept arguments
26
+
27
+ **Skills vs subagents vs CLAUDE.md** (per official docs):
28
+
29
+ | Mechanism | Runs in | Loads when | Use for |
30
+ | --------- | ------------------------ | --------------------------- | ---------------------------------------- |
31
+ | CLAUDE.md | main context | every session | Facts Claude needs every conversation |
32
+ | Skill | main context (or forked) | on invocation or auto-match | Reusable workflows and prompts |
33
+ | Subagent | isolated context | on delegation | Self-contained tasks with verbose output |
34
+
35
+ ## Instructions
36
+
37
+ ### Step 1 — Validate inputs
38
+
39
+ - Name is kebab-case, max 64 chars, lowercase + digits + hyphens only
40
+ - Reject collisions with bundled skills (`/simplify`, `/batch`, `/debug`, `/loop`, `/claude-api`, `/init`, `/review`, `/security-review`)
41
+ - Reject if the skill directory already exists unless the user asked to update
42
+
43
+ ### Step 2 — Pick scope
44
+
45
+ | Scope | Path | Available to |
46
+ | ------- | ---------------------------------- | ----------------- |
47
+ | project | `.claude/skills/{name}/SKILL.md` | This project only |
48
+ | user | `~/.claude/skills/{name}/SKILL.md` | All your projects |
49
+
50
+ Default: `project`. Higher priorities (enterprise/personal/project/plugin) are documented for reference but this skill only writes project or user.
51
+
52
+ ### Step 3 — Create the directory structure
53
+
54
+ ```
55
+ {scope-path}/{name}/
56
+ ├── SKILL.md # Required. Main instructions
57
+ ├── templates/ # Optional. Copy-and-fill templates
58
+ ├── examples/ # Optional. Reference examples
59
+ ├── reference/ # Optional. Detailed docs — loaded only when linked
60
+ └── scripts/ # Optional. Executable helpers
61
+ ```
62
+
63
+ Only create subfolders you'll actually fill. Reference each supporting file from `SKILL.md` using relative paths so Claude knows when to load it.
64
+
65
+ ### Step 4 — Classify the skill
66
+
67
+ Pick the pattern that fits. This drives frontmatter choices:
68
+
69
+ | Pattern | Description | Frontmatter |
70
+ | ----------- | ------------------------------------------ | ----------------------------------------------------------------------- |
71
+ | Reference | Conventions/patterns Claude applies inline | plain `name` + `description` |
72
+ | Task | Step-by-step action with side effects | add `disable-model-invocation: true` |
73
+ | Knowledge | Background context, not actionable | add `user-invocable: false` |
74
+ | Forked | Runs in a subagent for isolation | add `context: fork` + `agent: Explore\|Plan\|general-purpose\|<custom>` |
75
+ | Path-scoped | Only loads when matching files are in play | add `paths: ["glob/**"]` |
76
+
77
+ Concrete templates: [examples/task-skill.md](examples/task-skill.md), [examples/knowledge-skill.md](examples/knowledge-skill.md), [examples/fork-skill.md](examples/fork-skill.md), [examples/dynamic-context.md](examples/dynamic-context.md).
78
+
79
+ ### Step 5 — Fill the frontmatter
80
+
81
+ Read `${CLAUDE_SKILL_DIR}/templates/skill.md` as the canonical frontmatter. Fill only the fields you need — every field except `description` is optional, and even `description` falls back to the first markdown paragraph.
82
+
83
+ Full field table: [reference/frontmatter-fields.md](reference/frontmatter-fields.md).
84
+
85
+ Key fields by use case:
86
+
87
+ | Use case | Fields |
88
+ | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
89
+ | Manual-only workflow | `disable-model-invocation: true` |
90
+ | Hide from `/` menu | `user-invocable: false` |
91
+ | Pre-approve tools | `allowed-tools: Bash(git add *) Bash(git commit *)` |
92
+ | Accept arguments | `argument-hint: [file] [mode]`, optionally `arguments: [file mode]` for named `$file`/`$mode` |
93
+ | Set model/effort (always required for plugin skills) | `model: sonnet`, `effort: xhigh` — defaults for plugin skills. Lower (`haiku`/`low` or Opus/`high`) only as a documented exception per [/cbp-build-cc-mode](../build-cc-mode/SKILL.md). `model: inherit` is NOT permitted |
94
+ | Path-scoped auto-load | `paths: ["src/api/**/*.ts"]` |
95
+ | Fork to subagent | `context: fork`, `agent: Explore` |
96
+
97
+ ### Step 6 — Write the body
98
+
99
+ Structure the markdown body:
100
+
101
+ 1. **Title + one-line purpose**
102
+ 2. **Numbered instructions** — concrete, verifiable steps
103
+ 3. **Argument substitution** if the skill takes input (see [reference/string-substitutions.md](reference/string-substitutions.md))
104
+ 4. **Dynamic context blocks** — see [examples/dynamic-context.md](examples/dynamic-context.md) for both inline and fenced shell-substitution syntax. Disabled globally when settings.json sets `disableSkillShellExecution: true`.
105
+ 5. **Additional resources** section linking to supporting files
106
+
107
+ Keep `SKILL.md` under 500 lines. Push detailed reference to `reference/*.md` and load on demand.
108
+
109
+ > Note for skill authors: do NOT write the literal bang-backtick or triple-backtick-bang trigger sequences inside prose in your own SKILL.md body — the runtime parses them as shell substitutions during invocation. When documenting the feature, link to an example file (as this skill does) rather than spelling the trigger inline.
110
+
111
+ ### Step 7 — Add supporting files
112
+
113
+ Reference every supporting file from `SKILL.md` so Claude knows when to read it:
114
+
115
+ ```markdown
116
+ ## Additional resources
117
+
118
+ - Fill the template at [templates/skill.md](templates/skill.md)
119
+ - See [examples/task-skill.md](examples/task-skill.md) for a side-effecting workflow
120
+ - Frontmatter reference: [reference/frontmatter-fields.md](reference/frontmatter-fields.md)
121
+ - Run `bash "${CLAUDE_SKILL_DIR}/scripts/do-work.sh"` for the bundled helper
122
+ ```
123
+
124
+ Scripts are executed, not loaded into context — use them for heavy lifting.
125
+
126
+ ### Step 8 — Validate
127
+
128
+ ```bash
129
+ bash "${CLAUDE_SKILL_DIR}/scripts/validate-skill.sh" "{scope-path}/{name}/SKILL.md"
130
+ ```
131
+
132
+ Checks: name matches directory, frontmatter parses, no invalid fields, arg-hint syntax.
133
+
134
+ ### Step 9 — Test
135
+
136
+ - Live change detection picks up edits within the current session
137
+ - Invoke directly: `/{name}` (if `user-invocable` is not `false`)
138
+ - Ask Claude a question matching the `description` to test auto-invocation
139
+ - Use `/doctor` or `/context` to confirm the skill is discovered
140
+
141
+ ## Integration
142
+
143
+ - **Triggered by**: user invocation
144
+ - **Reads**: `${CLAUDE_SKILL_DIR}/templates/*.md`, `${CLAUDE_SKILL_DIR}/reference/*.md`
145
+ - **Writes**: `.claude/skills/{name}/**/*` or `~/.claude/skills/{name}/**/*`
146
+ - **Related skills**: `/cbp-build-cc-agent` (forked execution target), `/cbp-build-cc-rule` (for always-loaded constraints), `/cbp-build-cc-settings` (for `disableSkillShellExecution` and permissions on `Skill(name)`), `/cbp-build-cc-mode` (canonical model/effort matrix — audit or apply)
147
+
148
+ ## Key Rules
149
+
150
+ - Rendered `SKILL.md` content enters the conversation once when invoked and stays until compaction — write standing instructions, not one-time steps
151
+ - Preloaded subagent skills cannot have `disable-model-invocation: true`
152
+ - `context: fork` is only meaningful when the skill body contains an actionable task; otherwise the subagent receives guidelines with no prompt
153
+ - Descriptions front-load key use case: `description` + `when_to_use` cap at 1,536 chars in the skill listing
154
+ - `paths:` scoping applies when Claude reads files matching the globs, not on every tool use
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: pr-summary
3
+ description: Summarize changes in the current pull request
4
+ context: fork
5
+ agent: Explore
6
+ allowed-tools: Bash(gh *)
7
+ ---
8
+
9
+ ## Pull request context
10
+
11
+ - PR metadata: !`gh pr view --json title,body,author,labels`
12
+ - PR diff: !`gh pr diff`
13
+ - Changed files: !`gh pr diff --name-only`
14
+ - PR comments: !`gh pr view --comments`
15
+
16
+ ## Environment
17
+
18
+ ```!
19
+ node --version
20
+ pnpm --version
21
+ git rev-parse --abbrev-ref HEAD
22
+ ```
23
+
24
+ ## Your task
25
+
26
+ Using the context above, produce a one-page PR summary:
27
+
28
+ 1. **What changed** — 2-3 bullets
29
+ 2. **Why it changed** — inferred from PR body and commits
30
+ 3. **Risk areas** — files touched that affect shared infrastructure
31
+ 4. **Suggested reviewers** — based on CODEOWNERS and recent blame
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: deep-research
3
+ description: Research a topic thoroughly using the Explore agent, without polluting the main conversation with search results.
4
+ context: fork
5
+ agent: Explore
6
+ argument-hint: [topic]
7
+ ---
8
+
9
+ Research $ARGUMENTS thoroughly:
10
+
11
+ 1. Find relevant files using Glob and Grep
12
+ 2. Read and analyze the code
13
+ 3. Look for related tests, docs, and configuration
14
+ 4. Summarize findings with specific file:line references
15
+
16
+ Return:
17
+
18
+ - **Summary** — one paragraph
19
+ - **Key files** — list of paths with purpose
20
+ - **Entry points** — where the code is called from
21
+ - **Related tests** — paths to existing coverage
22
+ - **Open questions** — ambiguities worth raising with the user