@erclx/aitk 0.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 (359) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/claude/.claude-plugin/plugin.json +19 -0
  4. package/claude/skills/bash-script/SKILL.md +96 -0
  5. package/claude/skills/bash-script/references/patterns.md +349 -0
  6. package/claude/skills/ci-workflow/SKILL.md +52 -0
  7. package/claude/skills/ci-workflow/references/workflows.md +74 -0
  8. package/claude/skills/claude-address-review/SKILL.md +107 -0
  9. package/claude/skills/claude-autoship/SKILL.md +137 -0
  10. package/claude/skills/claude-design-extract/SKILL.md +69 -0
  11. package/claude/skills/claude-design-propose/SKILL.md +75 -0
  12. package/claude/skills/claude-diagram/SKILL.md +126 -0
  13. package/claude/skills/claude-docs/SKILL.md +204 -0
  14. package/claude/skills/claude-feature/REQUIREMENT.md +35 -0
  15. package/claude/skills/claude-feature/SKILL.md +148 -0
  16. package/claude/skills/claude-groundwork/SKILL.md +148 -0
  17. package/claude/skills/claude-groundwork/references/folder-format.md +107 -0
  18. package/claude/skills/claude-memory-capture/SKILL.md +80 -0
  19. package/claude/skills/claude-memory-review/REQUIREMENT.md +37 -0
  20. package/claude/skills/claude-memory-review/SKILL.md +206 -0
  21. package/claude/skills/claude-orchestrate/SKILL.md +125 -0
  22. package/claude/skills/claude-pr-review/SKILL.md +150 -0
  23. package/claude/skills/claude-review/SKILL.md +136 -0
  24. package/claude/skills/claude-roadmap/SKILL.md +61 -0
  25. package/claude/skills/claude-roadmap/references/roadmap.md +52 -0
  26. package/claude/skills/claude-screencast/SKILL.md +160 -0
  27. package/claude/skills/claude-seed-sync/SKILL.md +141 -0
  28. package/claude/skills/claude-slides-draft/SKILL.md +62 -0
  29. package/claude/skills/claude-standards-audit/REQUIREMENT.md +33 -0
  30. package/claude/skills/claude-standards-audit/SKILL.md +79 -0
  31. package/claude/skills/claude-standards-audit/references/branch.md +49 -0
  32. package/claude/skills/claude-standards-audit/references/pr.md +124 -0
  33. package/claude/skills/claude-tasks/SKILL.md +123 -0
  34. package/claude/skills/claude-ui-test/SKILL.md +75 -0
  35. package/claude/skills/claude-ux-audit/SKILL.md +78 -0
  36. package/claude/skills/claude-worktree/SKILL.md +79 -0
  37. package/claude/skills/cli-script/SKILL.md +47 -0
  38. package/claude/skills/cli-script/references/template.md +43 -0
  39. package/claude/skills/create-rule/SKILL.md +68 -0
  40. package/claude/skills/create-skill/REQUIREMENT.md +30 -0
  41. package/claude/skills/create-skill/SKILL.md +24 -0
  42. package/claude/skills/create-snippet/SKILL.md +28 -0
  43. package/claude/skills/create-snippet/references/snippets.md +57 -0
  44. package/claude/skills/create-standard/SKILL.md +31 -0
  45. package/claude/skills/create-standard/references/standard.md +52 -0
  46. package/claude/skills/docs-sync/SKILL.md +87 -0
  47. package/claude/skills/git-branch/REQUIREMENT.md +38 -0
  48. package/claude/skills/git-branch/SKILL.md +60 -0
  49. package/claude/skills/git-branch/references/branch.md +49 -0
  50. package/claude/skills/git-commit/REQUIREMENT.md +33 -0
  51. package/claude/skills/git-commit/SKILL.md +51 -0
  52. package/claude/skills/git-commit/references/commit.md +63 -0
  53. package/claude/skills/git-followup/REQUIREMENT.md +38 -0
  54. package/claude/skills/git-followup/SKILL.md +35 -0
  55. package/claude/skills/git-issue/REQUIREMENT.md +38 -0
  56. package/claude/skills/git-issue/SKILL.md +69 -0
  57. package/claude/skills/git-issue/references/issue.md +84 -0
  58. package/claude/skills/git-pr/REQUIREMENT.md +37 -0
  59. package/claude/skills/git-pr/SKILL.md +119 -0
  60. package/claude/skills/git-pr/references/branch.md +49 -0
  61. package/claude/skills/git-pr/references/pr.md +124 -0
  62. package/claude/skills/git-ship/REQUIREMENT.md +34 -0
  63. package/claude/skills/git-ship/SKILL.md +39 -0
  64. package/claude/skills/git-split/REQUIREMENT.md +38 -0
  65. package/claude/skills/git-split/SKILL.md +160 -0
  66. package/claude/skills/git-split/references/branch.md +49 -0
  67. package/claude/skills/git-split/references/pr.md +124 -0
  68. package/claude/skills/git-stage/REQUIREMENT.md +36 -0
  69. package/claude/skills/git-stage/SKILL.md +74 -0
  70. package/claude/skills/git-stage/references/commit.md +63 -0
  71. package/claude/skills/git-worktree/REQUIREMENT.md +37 -0
  72. package/claude/skills/git-worktree/SKILL.md +120 -0
  73. package/claude/skills/migration-claude-md/SKILL.md +74 -0
  74. package/claude/skills/migration-context/SKILL.md +93 -0
  75. package/claude/skills/migration-standards/SKILL.md +75 -0
  76. package/claude/skills/project-commands/SKILL.md +73 -0
  77. package/claude/skills/session-resume/SKILL.md +36 -0
  78. package/claude/skills/setup-gov/SKILL.md +71 -0
  79. package/claude/skills/setup-indexes/SKILL.md +148 -0
  80. package/claude/skills/setup-init/SKILL.md +114 -0
  81. package/claude/skills/setup-plugins/SKILL.md +81 -0
  82. package/claude/skills/setup-plugins/references/plugin-catalog.md +53 -0
  83. package/claude/skills/setup-verify/SKILL.md +51 -0
  84. package/claude/skills/systematic-debugging/SKILL.md +70 -0
  85. package/claude/skills/toolkit-cli/SKILL.md +38 -0
  86. package/claude/skills/toolkit-feedback/SKILL.md +80 -0
  87. package/claude/skills/toolkit-operator/SKILL.md +45 -0
  88. package/claude/skills/toolkit-triage/SKILL.md +63 -0
  89. package/claude/skills/youtube-transcripts/SKILL.md +34 -0
  90. package/docs/agents.md +371 -0
  91. package/docs/ai-workflow.md +157 -0
  92. package/docs/index.md +20 -0
  93. package/docs/operating-model.md +106 -0
  94. package/docs/target-projects.md +183 -0
  95. package/docs/visual-design-workflow.md +136 -0
  96. package/docs/zshrc-aliases.md +65 -0
  97. package/governance/rules/claude/500-prose.md +12 -0
  98. package/governance/rules/claude/510-context.md +16 -0
  99. package/governance/rules/claude/520-wireframes.md +12 -0
  100. package/governance/rules/claude/530-requirements.md +11 -0
  101. package/governance/rules/claude/540-architecture.md +11 -0
  102. package/governance/rules/claude/550-design.md +11 -0
  103. package/governance/rules/claude/555-tasks.md +12 -0
  104. package/governance/rules/claude/560-diagrams.md +11 -0
  105. package/governance/rules/claude/570-skill.md +18 -0
  106. package/governance/rules/claude/580-readme.md +11 -0
  107. package/governance/rules/claude/590-rule-authoring.md +12 -0
  108. package/governance/rules/core/000-constitution.md +30 -0
  109. package/governance/rules/core/010-testing.md +35 -0
  110. package/governance/rules/core/020-concurrency.md +22 -0
  111. package/governance/rules/core/030-error-handling.md +31 -0
  112. package/governance/rules/core/040-performance.md +20 -0
  113. package/governance/rules/core/050-logging.md +20 -0
  114. package/governance/rules/core/060-naming.md +19 -0
  115. package/governance/rules/core/070-planning.md +13 -0
  116. package/governance/rules/core/080-config-comments.md +22 -0
  117. package/governance/rules/framework/200-react.md +51 -0
  118. package/governance/rules/framework/210-astro.md +41 -0
  119. package/governance/rules/framework/220-fastapi.md +43 -0
  120. package/governance/rules/framework/230-nextjs.md +48 -0
  121. package/governance/rules/framework/250-tailwind.md +32 -0
  122. package/governance/rules/framework/260-shadcn.md +34 -0
  123. package/governance/rules/lang/100-typescript.md +40 -0
  124. package/governance/rules/lang/110-python.md +42 -0
  125. package/governance/rules/lib/300-testing-ts.md +38 -0
  126. package/governance/rules/lib/310-zod.md +25 -0
  127. package/governance/rules/lib/320-tanstack-query.md +32 -0
  128. package/governance/rules/lib/330-testing-py.md +44 -0
  129. package/governance/rules/lib/340-pydantic.md +38 -0
  130. package/governance/rules/lib/350-security-web.md +31 -0
  131. package/governance/rules/ui/400-ui.md +34 -0
  132. package/governance/rules/ui/410-a11y.md +44 -0
  133. package/governance/rules/ui/420-forms.md +34 -0
  134. package/governance/rules/ui/430-ux-completeness.md +62 -0
  135. package/governance/stacks/astro.toml +2 -0
  136. package/governance/stacks/base.toml +2 -0
  137. package/governance/stacks/node.toml +2 -0
  138. package/governance/stacks/python-fastapi.toml +2 -0
  139. package/governance/stacks/python.toml +2 -0
  140. package/governance/stacks/react.toml +2 -0
  141. package/package.json +67 -0
  142. package/scripts/config.sh +11 -0
  143. package/scripts/core/bootstrap.sh +81 -0
  144. package/scripts/core/check-plugin-boundary.sh +45 -0
  145. package/scripts/core/check-skill-paths.sh +25 -0
  146. package/scripts/core/clean.sh +36 -0
  147. package/scripts/core/install-check.sh +93 -0
  148. package/scripts/core/regen-claude-copies.sh +26 -0
  149. package/scripts/core/regen-indexes.sh +10 -0
  150. package/scripts/core/regen-skill-references.sh +27 -0
  151. package/scripts/core/snapshot.sh +132 -0
  152. package/scripts/core/update.sh +35 -0
  153. package/scripts/core/verify.sh +201 -0
  154. package/scripts/docs/list.sh +129 -0
  155. package/scripts/gov/list.sh +234 -0
  156. package/scripts/lib/frontmatter.sh +30 -0
  157. package/scripts/lib/gov.sh +14 -0
  158. package/scripts/lib/sandbox-fixtures.sh +109 -0
  159. package/scripts/lib/sandbox-git.sh +73 -0
  160. package/scripts/lib/tooling.sh +24 -0
  161. package/scripts/lib/ui.sh +173 -0
  162. package/scripts/lib/worktree.sh +20 -0
  163. package/scripts/manage-sandbox.sh +453 -0
  164. package/scripts/snippets/create.sh +156 -0
  165. package/scripts/standards/list.sh +91 -0
  166. package/scripts/tooling/create.sh +109 -0
  167. package/scripts/tooling/ref.sh +141 -0
  168. package/scripts/tooling/verify.sh +179 -0
  169. package/snippets/claude/decision-memo.md +39 -0
  170. package/snippets/claude/feature-recap.md +19 -0
  171. package/snippets/claude/figma-steps.md +18 -0
  172. package/snippets/claude/orchestrator-resume.md +23 -0
  173. package/snippets/claude/orchestrator-sweep.md +10 -0
  174. package/snippets/compact-summary.md +5 -0
  175. package/snippets/create-snippet.md +7 -0
  176. package/snippets/decision-help.md +6 -0
  177. package/snippets/meta-prompt.md +14 -0
  178. package/snippets/research-prompt.md +7 -0
  179. package/snippets/session-notes.md +11 -0
  180. package/snippets/snippets.toml +6 -0
  181. package/snippets/step-by-step.md +10 -0
  182. package/snippets/web-research.md +21 -0
  183. package/src/claude/gitignore.ts +51 -0
  184. package/src/claude/seeds-list.ts +47 -0
  185. package/src/claude/seeds.ts +124 -0
  186. package/src/claude/settings.ts +151 -0
  187. package/src/cli-run.ts +43 -0
  188. package/src/cli.ts +111 -0
  189. package/src/commands/claude.ts +349 -0
  190. package/src/commands/design.ts +39 -0
  191. package/src/commands/docs.ts +59 -0
  192. package/src/commands/feedback-format.ts +23 -0
  193. package/src/commands/feedback.ts +103 -0
  194. package/src/commands/gov.ts +268 -0
  195. package/src/commands/indexes.ts +182 -0
  196. package/src/commands/init.ts +117 -0
  197. package/src/commands/pass-through.ts +39 -0
  198. package/src/commands/sandbox.ts +315 -0
  199. package/src/commands/slides.ts +106 -0
  200. package/src/commands/snippets.ts +236 -0
  201. package/src/commands/standards.ts +89 -0
  202. package/src/commands/sync.ts +211 -0
  203. package/src/commands/tasks.ts +185 -0
  204. package/src/commands/tooling.ts +432 -0
  205. package/src/commands/transcripts.ts +48 -0
  206. package/src/commands/wiki.ts +101 -0
  207. package/src/copy.ts +30 -0
  208. package/src/design/parse.ts +79 -0
  209. package/src/design/render.ts +170 -0
  210. package/src/docs/read.ts +59 -0
  211. package/src/exec.ts +17 -0
  212. package/src/frontmatter.ts +13 -0
  213. package/src/github-format.ts +13 -0
  214. package/src/github.ts +20 -0
  215. package/src/gov/adapter.ts +73 -0
  216. package/src/gov/install.ts +103 -0
  217. package/src/gov/payload.ts +39 -0
  218. package/src/gov/stacks.ts +124 -0
  219. package/src/indexes/frontmatter.ts +46 -0
  220. package/src/indexes/regen.ts +84 -0
  221. package/src/indexes/render.ts +181 -0
  222. package/src/indexes/walk.ts +111 -0
  223. package/src/init/flags.ts +66 -0
  224. package/src/init/plan.ts +128 -0
  225. package/src/init/run.ts +46 -0
  226. package/src/init/steps.ts +91 -0
  227. package/src/sandbox/coverage.ts +115 -0
  228. package/src/sandbox/expect.ts +412 -0
  229. package/src/slides/layouts.ts +391 -0
  230. package/src/slides/open.ts +18 -0
  231. package/src/slides/parse.ts +84 -0
  232. package/src/slides/render.ts +88 -0
  233. package/src/slides/styles.ts +44 -0
  234. package/src/snippets/adapter.ts +34 -0
  235. package/src/snippets/categories.ts +59 -0
  236. package/src/snippets/install.ts +125 -0
  237. package/src/snippets/list.ts +32 -0
  238. package/src/snippets/presets.ts +50 -0
  239. package/src/standards/adapter.ts +51 -0
  240. package/src/standards/index-refresh.ts +44 -0
  241. package/src/standards/install.ts +52 -0
  242. package/src/sync/check.ts +269 -0
  243. package/src/sync/engine.ts +416 -0
  244. package/src/sync/git.ts +204 -0
  245. package/src/sync/stamp.ts +202 -0
  246. package/src/sync/target.ts +79 -0
  247. package/src/sync/workflow.ts +201 -0
  248. package/src/target.ts +43 -0
  249. package/src/tasks/archive.ts +304 -0
  250. package/src/tooling/gitignore.ts +122 -0
  251. package/src/tooling/inject.ts +214 -0
  252. package/src/tooling/list.ts +39 -0
  253. package/src/tooling/manifest.ts +178 -0
  254. package/src/tooling/package.ts +166 -0
  255. package/src/tooling/scan.ts +186 -0
  256. package/src/transcripts/fetch.ts +156 -0
  257. package/src/transcripts/metadata.ts +54 -0
  258. package/src/transcripts/vtt.ts +114 -0
  259. package/src/ui.ts +187 -0
  260. package/src/wiki/init.ts +85 -0
  261. package/standards/architecture.md +41 -0
  262. package/standards/bundled/branch.md +49 -0
  263. package/standards/bundled/commit.md +63 -0
  264. package/standards/bundled/issue.md +84 -0
  265. package/standards/bundled/pr.md +124 -0
  266. package/standards/bundled/roadmap.md +52 -0
  267. package/standards/bundled/snippets.md +57 -0
  268. package/standards/bundled/standard.md +52 -0
  269. package/standards/context.md +132 -0
  270. package/standards/design.md +31 -0
  271. package/standards/diagrams.md +55 -0
  272. package/standards/index.md +21 -0
  273. package/standards/prose.md +122 -0
  274. package/standards/readme.md +163 -0
  275. package/standards/requirements.md +61 -0
  276. package/standards/rule.md +79 -0
  277. package/standards/skill.md +257 -0
  278. package/standards/tasks.md +140 -0
  279. package/standards/versioning.md +47 -0
  280. package/standards/wireframes.md +67 -0
  281. package/tooling/astro/configs/astro.config.mjs +17 -0
  282. package/tooling/astro/configs/eslint.config.js +79 -0
  283. package/tooling/astro/configs/playwright.config.ts +25 -0
  284. package/tooling/astro/configs/tsconfig.json +12 -0
  285. package/tooling/astro/configs/vitest.config.ts +22 -0
  286. package/tooling/astro/manifest.toml +32 -0
  287. package/tooling/astro/reference.md +60 -0
  288. package/tooling/base/configs/.editorconfig +5 -0
  289. package/tooling/base/configs/.github/pull_request_template.md +18 -0
  290. package/tooling/base/configs/.github/workflows/verify.yml +35 -0
  291. package/tooling/base/configs/.husky/commit-msg +1 -0
  292. package/tooling/base/configs/.husky/post-merge +61 -0
  293. package/tooling/base/configs/.husky/post-rewrite +21 -0
  294. package/tooling/base/configs/.husky/pre-commit +1 -0
  295. package/tooling/base/configs/.husky/pre-push +1 -0
  296. package/tooling/base/configs/.prettierrc +12 -0
  297. package/tooling/base/configs/.shellcheckrc +1 -0
  298. package/tooling/base/configs/.vscode/extensions.json +9 -0
  299. package/tooling/base/configs/.vscode/settings.json +3 -0
  300. package/tooling/base/configs/commitlint.config.js +11 -0
  301. package/tooling/base/configs/scripts/clean.sh +45 -0
  302. package/tooling/base/configs/scripts/update.sh +49 -0
  303. package/tooling/base/configs/scripts/verify.sh +64 -0
  304. package/tooling/base/manifest.toml +32 -0
  305. package/tooling/base/reference.md +114 -0
  306. package/tooling/base/seeds/.claude/context/ci.md +27 -0
  307. package/tooling/base/seeds/.claude/context/development.md +32 -0
  308. package/tooling/base/seeds/.cspell/project-terms.txt +0 -0
  309. package/tooling/base/seeds/.cspell/tech-stack.txt +19 -0
  310. package/tooling/base/seeds/.lintstagedrc +8 -0
  311. package/tooling/base/seeds/.prettierignore +0 -0
  312. package/tooling/base/seeds/cspell.json +20 -0
  313. package/tooling/claude/manifest.toml +11 -0
  314. package/tooling/claude/reference.md +62 -0
  315. package/tooling/claude/seeds/.claude/ARCHITECTURE.md +13 -0
  316. package/tooling/claude/seeds/.claude/DESIGN.md +62 -0
  317. package/tooling/claude/seeds/.claude/REQUIREMENTS.md +18 -0
  318. package/tooling/claude/seeds/.claude/context/index.md +8 -0
  319. package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +43 -0
  320. package/tooling/claude/seeds/.claude/hooks/scratch-guard.sh +45 -0
  321. package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +61 -0
  322. package/tooling/claude/seeds/.claude/hooks/tasks-index.sh +60 -0
  323. package/tooling/claude/seeds/.claude/settings.json +39 -0
  324. package/tooling/claude/seeds/.claude/tasks/index.md +8 -0
  325. package/tooling/claude/seeds/.claude/wireframes/index.md +8 -0
  326. package/tooling/claude/seeds/CLAUDE.md +87 -0
  327. package/tooling/claude/user/settings.template.json +10 -0
  328. package/tooling/claude/user/statusline-command.sh +53 -0
  329. package/tooling/python/configs/.coveragerc +14 -0
  330. package/tooling/python/configs/.python-version +1 -0
  331. package/tooling/python/configs/mypy.ini +6 -0
  332. package/tooling/python/configs/pytest.ini +4 -0
  333. package/tooling/python/configs/ruff.toml +15 -0
  334. package/tooling/python/configs/scripts/verify.sh +77 -0
  335. package/tooling/python/manifest.toml +16 -0
  336. package/tooling/python/reference.md +66 -0
  337. package/tooling/python/seeds/.cspell/tech-stack.txt +19 -0
  338. package/tooling/python/seeds/tests/test_smoke.py +2 -0
  339. package/tooling/vite-react/configs/playwright.config.ts +25 -0
  340. package/tooling/vite-react/configs/tsconfig.json +35 -0
  341. package/tooling/vite-react/configs/vite.config.ts +14 -0
  342. package/tooling/vite-react/configs/vitest.config.ts +26 -0
  343. package/tooling/vite-react/manifest.toml +21 -0
  344. package/tooling/vite-react/reference.md +55 -0
  345. package/tooling/vite-react/seeds/.cspell/project-terms.txt +1 -0
  346. package/tooling/vite-react/seeds/.cspell/tech-stack.txt +1 -0
  347. package/tooling/web/configs/.github/workflows/verify.yml +134 -0
  348. package/tooling/web/configs/.vscode/extensions.json +13 -0
  349. package/tooling/web/configs/.vscode/settings.json +10 -0
  350. package/tooling/web/configs/e2e/home.spec.ts +6 -0
  351. package/tooling/web/configs/e2e/screenshot.ts +41 -0
  352. package/tooling/web/configs/eslint.config.js +82 -0
  353. package/tooling/web/configs/scripts/screenshot.sh +28 -0
  354. package/tooling/web/configs/scripts/verify.sh +80 -0
  355. package/tooling/web/configs/src/test/setup.ts +8 -0
  356. package/tooling/web/manifest.toml +57 -0
  357. package/tooling/web/reference.md +95 -0
  358. package/tooling/web/seeds/.cspell/tech-stack.txt +18 -0
  359. package/tsconfig.json +14 -0
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: toolkit-operator
3
+ description: Front door to the toolkit in a target project. Orients on the toolkit's own docs and live `aitk` catalogs, then runs or routes any toolkit operation from a plain-language intent. Use when you want one entry point instead of picking a specific setup or sync skill, or when asked to "use the toolkit", "what can the toolkit do", "sync my standards", "install rules", or "help me set up this project". User-invoked only. Defers first-time scaffold to setup-init and seed drift to claude-seed-sync.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Toolkit operator
8
+
9
+ Front door to the toolkit. Orient first, then run the simplest operation that satisfies the intent or hand off to the owning skill. Never bypass `aitk` to edit managed files by hand.
10
+
11
+ ## Orient
12
+
13
+ Run these from the target project root, in parallel, before acting:
14
+
15
+ - `aitk docs list`: the index of toolkit reference docs
16
+ - `aitk docs agents`: the CLI command catalog and invocation contract
17
+ - `aitk docs target-projects`: the scaffold, add-a-domain, and sync lifecycle
18
+
19
+ Load a domain doc with `aitk docs <topic>` only when the intent touches that domain. Read the live catalog for any domain you act on with `aitk <domain> list --json`. Never hardcode stack, rule, snippet, or standards names.
20
+
21
+ ## Route
22
+
23
+ Map the stated intent to one lifecycle phase, then act:
24
+
25
+ - First-time scaffold of a fresh project: hand off to `setup-init`
26
+ - Governance rules for the project stack: hand off to `setup-gov`
27
+ - Bootstrap the `index.md` system: hand off to `setup-indexes`
28
+ - Seed or standards drift in `CLAUDE.md` or `.claude/` preambles: hand off to `claude-seed-sync`
29
+ - Install one snippet, standard, or rule: run the domain `install` command
30
+ - Sync one domain or every installed domain: run `aitk <domain> sync` or `aitk sync`
31
+ - Browse what is available: run `aitk <domain> list`
32
+
33
+ ## Execute
34
+
35
+ For operations this skill runs directly:
36
+
37
+ - Read the catalog first with `aitk <domain> list --json`, then match against project context
38
+ - Run the CLI with `AITK_NON_INTERACTIVE=1` so it skips prompts. The tool permission dialog is the confirmation gate.
39
+ - Report the command run and what changed. Emit the full relative path for any file written.
40
+
41
+ ## Boundaries
42
+
43
+ - Run `aitk`. Never reimplement its install or sync logic, and never edit managed files like rules, configs, or seeds by hand.
44
+ - Hand off the deep flows. Do not duplicate `setup-init` detection or `claude-seed-sync` part-diffing inline.
45
+ - Resolve names from catalogs at runtime. A hardcoded name is a bug.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: toolkit-triage
3
+ description: Triage open GitHub issues labeled `feedback` in the toolkit repo. List them, pick one, classify it as a direct fix or plan-worthy work, route to the right skill, and link the issue for close-out. Use when asked to "triage toolkit feedback", "work through the feedback issues", "process feedback issues", or "what feedback is open". Do NOT use to file new feedback (that is `toolkit-feedback`), or for general GitHub issue triage unrelated to toolkit feedback.
4
+ ---
5
+
6
+ # Toolkit triage
7
+
8
+ Consume the feedback queue that `aitk feedback --github` fills. Turn an open `feedback` issue into a scoped fix or a plan, then link the issue so merge closes it.
9
+
10
+ Run from the toolkit repo root. This skill reads GitHub issues, not local `.claude/review/` files. Those are ephemeral session scratch. The durable, cross-project queue is GitHub.
11
+
12
+ ## Guards
13
+
14
+ - If `gh` is not on PATH, stop: `❌ gh CLI not found. Install it to read feedback issues.`
15
+ - If `gh auth status` fails, stop: `❌ gh is not authenticated. Run gh auth login.`
16
+ - If no open `feedback` issues exist, stop: `✅ No open feedback issues.`
17
+
18
+ ## Step 1: list the queue
19
+
20
+ Fetch open feedback issues:
21
+
22
+ ```bash
23
+ gh issue list --label feedback --state open --json number,title,url --jq '.[] | "#\(.number)\t\(.title)\t\(.url)"'
24
+ ```
25
+
26
+ Print each as a numbered line with its issue number, title, and URL. Do not open bodies yet. Ask which to triage, and accept "all" to work them in order.
27
+
28
+ ## Step 2: read and classify
29
+
30
+ For each picked issue, read the body:
31
+
32
+ ```bash
33
+ gh issue view <n> --json title,body,labels --jq '"\(.title)\n\n\(.body)"'
34
+ ```
35
+
36
+ Classify against the toolkit's own surfaces. Score in this order and stop at the first match:
37
+
38
+ 1. **Direct fix.** One surface, one file, no architectural choice. A typo, a stale reference, a one-line rule or doc correction, a single wording fix. Route straight to the edit.
39
+ 2. **Plan-worthy.** Multiple files, a new skill or rule, a behavior change, or a cross-surface move. Route to `claude-feature`.
40
+ 3. **Needs clarification.** The observed and expected behavior conflict or the surface is unnamed. Comment on the issue asking for the missing detail, then skip it.
41
+
42
+ State the class and the one-line reason per issue before routing. Do not batch unrelated fixes into one branch.
43
+
44
+ ## Step 3: route
45
+
46
+ - Direct fix: rename the branch to a conventional name (invoke `git-branch`), make the edit, then open the PR with `git-pr`.
47
+ - Plan-worthy: invoke `claude-feature` with the issue body as the feature description. Let it write the plan and stop. Hand the plan slug back to the user. Do not implement.
48
+ - Needs clarification: `gh issue comment <n> --body "<one question>"`, then move on.
49
+
50
+ Match one issue to one branch and one PR. A single feedback issue is a single unit of work.
51
+
52
+ ## Step 4: close-out
53
+
54
+ Link every fix back to its issue so the queue drains on merge.
55
+
56
+ - For a PR-backed fix, add a `Closes #<n>` line to the PR body so GitHub closes the issue on merge. When `git-pr` regenerates the body, keep that line.
57
+ - For a fix that ships without a PR, close it directly: `gh issue close <n> --comment "Fixed in <commit or PR url>."`
58
+ - For a plan-worthy route, leave the issue open. It closes when the resulting PR merges with its `Closes #<n>` line.
59
+
60
+ ## Notes
61
+
62
+ - The `feedback` label is what `aitk feedback --github` and the `toolkit-feedback.yml` issue form both apply. An issue without it does not surface here by design.
63
+ - This skill routes, it does not reimplement. `claude-feature` owns planning, `git-pr` owns the PR body, `git-branch` owns the branch name. Do not duplicate their logic.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: youtube-transcripts
3
+ description: Fetches a YouTube video transcript with metadata frontmatter into the current repo via `aitk transcripts`. Use when the user pastes a YouTube URL and asks to grab the transcript, pull captions, or save a transcript for context. Do NOT use for downloading the video file, summarizing a transcript that already exists, or non-YouTube links.
4
+ ---
5
+
6
+ # YouTube transcripts
7
+
8
+ Turn a pasted YouTube URL into a markdown file with YAML frontmatter and a cleaned prose body. The `aitk transcripts` command owns the fetch, VTT cleanup, and frontmatter. Do not reimplement that logic. See `.claude/context/transcripts.md` for the output format and field list.
9
+
10
+ ## Guards
11
+
12
+ - If no URL is provided, stop: `❌ No URL. Paste a YouTube link to fetch.`
13
+ - If the link is not a YouTube URL, stop: `❌ Not a YouTube URL. This skill fetches YouTube captions only.`
14
+
15
+ ## Prerequisite
16
+
17
+ The command shells out to the `yt-dlp` binary. If a run fails with a `yt-dlp not found` message, tell the user to install it from `https://github.com/yt-dlp/yt-dlp` and stop. Do not attempt to install it.
18
+
19
+ ## Run
20
+
21
+ From the project root, fetch the URL:
22
+
23
+ ```bash
24
+ aitk transcripts <url>
25
+ ```
26
+
27
+ - Pass `--keep-timestamps` when the user wants `[mm:ss]` markers per line instead of prose.
28
+ - Pass `--out <dir>` to override the output directory. The default is `transcripts/` in the current directory.
29
+ - The written file path prints to stdout. Surface it back to the user as a full relative path so it is clickable.
30
+
31
+ ## After the fetch
32
+
33
+ - When the run reports `has_transcript: false`, tell the user the video has no auto-captions. The file still exists with frontmatter for later use.
34
+ - Do not summarize or annotate the transcript unless the user asks. Fetching and reading are separate requests.
package/docs/agents.md ADDED
@@ -0,0 +1,371 @@
1
+ ---
2
+ title: Agents
3
+ description: CLI catalog and invocation rules for agents
4
+ category: Agent surface
5
+ ---
6
+
7
+ # Agents
8
+
9
+ CLI catalog and invocation rules for agents working in this repository.
10
+
11
+ This doc is an index of what an agent can run and how to run it cleanly from a script. It does not cover domain behavior. Read `CLAUDE.md` for project behaviors and load the matching `.claude/skills/aitk-*` skill when working inside a domain.
12
+
13
+ ## Invocation rules
14
+
15
+ See `CLAUDE.md` design principles. They apply to every command below.
16
+
17
+ ## Output shape
18
+
19
+ Every CLI command renders into one of two framed shapes. Data goes to stdout. UI and logs go to stderr. Help output is the exception. It prints to stdout so it can be piped and grepped.
20
+
21
+ ### Data shape (lists, runs, errors)
22
+
23
+ ```plaintext
24
+
25
+ │ aitk <domain>
26
+
27
+ ├ Section
28
+ │ ✓ item
29
+ │ ✓ item
30
+
31
+ ```
32
+
33
+ Rules:
34
+
35
+ - `┌` opens the frame on stderr
36
+ - `│ aitk <domain>` is the command banner, one per invocation
37
+ - `├ Section` headers introduce groups of items. `log_step` produces the blank `│` spacer before each.
38
+ - `└` closes the frame on stderr, wired via `trap close_timeline EXIT`
39
+ - Errors render as `│ ✗ message` inside the same frame. Never emit a lone error line without a frame.
40
+
41
+ ### Help shape
42
+
43
+ ```plaintext
44
+
45
+ ├ Usage: aitk <domain> [command]
46
+
47
+ │ Commands:
48
+ │ ...
49
+
50
+ ```
51
+
52
+ Help skips the banner. The `Usage:` line sits directly on `├`. Help writes to stdout because `--help` is documentation, not runtime UI.
53
+
54
+ ### JSON and `--names` modes
55
+
56
+ `--json` and `--names` keep stdout clean and machine-readable. The frame still renders on stderr (open, banner, close) so the stream discipline is consistent across modes. Consumers that only read stdout see pure data.
57
+
58
+ ## Command catalog
59
+
60
+ Full help: `aitk <command> --help`.
61
+
62
+ ### Project-level
63
+
64
+ | Command | Purpose |
65
+ | ------------------------ | ---------------------------------------------------------------------------------------------- |
66
+ | `aitk init [path]` | Bootstrap a project with selected toolkit domains |
67
+ | `aitk sync [path]` | Sync all installed domains in a target project |
68
+ | `aitk sync --check` | Report toolkit drift without writing (`--json`, `--exit-code`) |
69
+ | `aitk sandbox [cat:cmd]` | Run sandbox scenarios (interactive or routed) |
70
+ | `aitk sandbox reset` | Reset sandbox to baseline |
71
+ | `aitk sandbox clean` | Wipe the sandbox |
72
+ | `aitk sandbox check` | Score a provisioned sandbox against a scenario expectation (`--json` for the verdict) |
73
+ | `aitk sandbox coverage` | Report which scenarios declare expectations (`--json`, `--strict`) |
74
+ | `aitk indexes regen` | Regenerate `index.md` files from sibling frontmatter |
75
+ | `aitk docs [topic]` | Emit toolkit reference docs (`list`, or a topic by name) |
76
+ | `aitk design render` | Render `.claude/DESIGN.md` tokens to HTML and CSS |
77
+ | `aitk slides render` | Render a `.claude/SLIDES.md` source into a PowerPoint deck |
78
+ | `aitk slides list` | List the available slide layouts (`--json` for the catalog) |
79
+ | `aitk feedback` | Write toolkit feedback from stdin to `.claude/review/`, or open a GitHub issue with `--github` |
80
+ | `aitk transcripts <url>` | Fetch a YouTube transcript with metadata frontmatter (needs `yt-dlp`) |
81
+ | `aitk tasks archive` | Move a shipped task off the board, clear its ordering row, and regenerate the index |
82
+
83
+ ### Domain commands
84
+
85
+ Each domain exposes a consistent shape where applicable: `list`, `install`, `sync`, `create`.
86
+
87
+ | Domain | Subcommands |
88
+ | ----------- | ---------------------------------------------------------------------- |
89
+ | `tooling` | `list`, `sync`, `ref`, `create`, `verify`, `inject`, `prune-gitignore` |
90
+ | `snippets` | `list`, `install`, `sync`, `create` |
91
+ | `standards` | `list`, `install`, `sync` |
92
+ | `gov` | `list`, `install`, `sync`, `build` |
93
+ | `claude` | `init`, `sync`, `seeds list`, `setup [dest]` |
94
+ | `wiki` | `init` |
95
+ | `design` | `render` |
96
+ | `slides` | `render`, `list` |
97
+ | `tasks` | `archive` |
98
+
99
+ Common patterns:
100
+
101
+ - `list --json` → machine-readable catalog on stdout.
102
+ - `install <name> <path>` → install a specific entry into a target project.
103
+ - `sync <path>` → reapply all installed entries in a target project.
104
+ - `create [name]` → scaffold a new authoring entry in this repo.
105
+
106
+ `aitk gov sync` updates only rules already present under `.claude/rules/` and
107
+ never adds new ones. A rule the toolkit does not ship is left alone, which is
108
+ how project-authored rules survive. It also removes a stale `.claude/GOV.md`
109
+ from the retired build. Use `aitk gov install` to add rules.
110
+
111
+ `aitk standards sync` matches by filename against `.claude/standards/` and
112
+ regenerates that folder's `index.md` on every completed run. It is the one sync
113
+ that refuses under `AITK_NON_INTERACTIVE=1` when drift exists, logging a warning
114
+ and exiting 0 without writing, because standards are seeds a project edits. Run
115
+ it interactively, or use the `claude-seed-sync` skill for a per-section audit
116
+ that preserves customizations.
117
+
118
+ `aitk snippets sync` behaves the same way against `.claude/snippets/`. It
119
+ matches by path relative to that directory, so a snippet the toolkit no longer
120
+ ships, or one authored directly in the target, is reported and skipped rather
121
+ than deleted. It is not preset-aware, so a project that installed `essentials`
122
+ does not grow new snippets on a sync. Use `aitk snippets install` to add them.
123
+
124
+ `aitk gov install` and `aitk snippets install` require their first argument
125
+ under `AITK_NON_INTERACTIVE=1`. Both used to fall back to an interactive picker
126
+ that resolved to its first option headlessly, so `aitk gov install` with no
127
+ stack installed whichever stack sorted first and `aitk snippets install` with no
128
+ category installed every category. Each now reports the valid names on stderr
129
+ and exits 1. Every documented agent path already passes the argument, including
130
+ `aitk init`. The confirm-then-apply prompt after it still resolves to `Yes`
131
+ headlessly, so a call that names its stack or category is unchanged.
132
+
133
+ `aitk gov install` also refuses the toolkit root as a target, matching
134
+ `aitk snippets install`. Both resolve the target before anything else, so a path
135
+ that does not exist fails rather than being scaffolded.
136
+
137
+ `aitk sync` runs every installed domain sync, then offers to commit the result
138
+ and open a pull request. Under `AITK_NON_INTERACTIVE=1` it applies the domain
139
+ syncs and then refuses the git workflow, reporting the branch and commit it
140
+ would have created and exiting 0. Nothing is staged, committed, or pushed
141
+ headlessly. Run it interactively to reach the commit and pull request options.
142
+ It also refuses a target whose working tree is dirty, so commit or stash first.
143
+
144
+ `aitk sync --check` reports drift and writes nothing, so it needs no clean tree
145
+ and is safe to run at any time. Each file is classified as `stale` when it still
146
+ matches what the toolkit installed, `customized` when the project edited it,
147
+ `stranded` when it sits at a path the toolkit no longer installs to, `orphaned`
148
+ when the project authored it, or `drifted` when no stamp covers it. Use `--json`
149
+ for the machine-readable report and `--exit-code` to fail a CI job. Orphaned
150
+ files are excluded from that exit code, since a project-authored rule never
151
+ converges. Attribution needs `.claude/aitk.json`, which every install and sync
152
+ writes. Without it, every difference reports as `drifted`.
153
+
154
+ Each domain carries its own toolkit anchor in that file, so syncing one domain
155
+ never advances the revision another measures from, and each reports the upstream
156
+ commits touching its own source path. The `covers` field names the domains a
157
+ target has actually stamped, so a domain that was never stamped is legible
158
+ rather than reading as a clean one.
159
+
160
+ `aitk init` installs up to six core domains and reports each one independently. A
161
+ domain that fails does not abort the run, so the command finishes the rest and
162
+ exits 1 naming the failures. Passing any flag skips the confirmation prompt,
163
+ which is what makes it scriptable. `--stack` defaults to `base`, and the default
164
+ does not read as a passed flag, so a bare `aitk init` installs governance and
165
+ still prompts. `--skip` takes `wiki`, `standards`, and `governance`, and warns
166
+ without aborting on any other value.
167
+
168
+ `aitk tooling inject` and `aitk tooling prune-gitignore` are the unguarded
169
+ primitives beneath `sync`. They apply one stack with no scan and no prompt, and
170
+ they deliberately skip the check that rejects `claude`, which is how `aitk
171
+ claude` drives its own stack through them. Use `sync` unless you are scripting
172
+ provisioning. Both frame their own output, so pass `--nested` when calling from
173
+ inside an already-open frame.
174
+
175
+ ### Sandbox scenarios
176
+
177
+ Scenarios live under `scripts/sandbox/`, one folder per category. `scripts/sandbox/fixtures/` is the exception, holding file content that scenarios stage rather than scenarios of its own, so both pickers filter it out. Route non-interactively with `SANDBOX_SCENARIO`:
178
+
179
+ ```bash
180
+ SANDBOX_SCENARIO=sync aitk sandbox infra:tooling
181
+ ```
182
+
183
+ Scenario categories: `infra:*` (domain flows), `git:*`, `scaffold:*`. `create` scenarios require interactive input and loop on empty input, so skip them in automated runs.
184
+
185
+ ### Scenario expectations
186
+
187
+ `aitk sandbox check <category>:<command> [arm]` scores a provisioned sandbox against the arm's `expect.toml`, printing a verdict on stderr and, with `--json`, the same verdict as a record on stdout.
188
+
189
+ ```bash
190
+ aitk sandbox check claude:docs drift --json
191
+ ```
192
+
193
+ | Flag | Effect |
194
+ | ------------------- | ---------------------------------------------------------- |
195
+ | `--envelope <file>` | Read `is_error`, `num_turns`, and denials from a run |
196
+ | `--writes <file>` | Newline-delimited paths the session wrote, for write scope |
197
+ | `--json` | Emit the verdict record on stdout |
198
+ | `--strict` | Exit 1 on `unchecked` instead of 0 |
199
+
200
+ The verdict `state` is `pass`, `fail`, or `unchecked`. An arm with no `expect.toml` is `unchecked` and exits 0, so the harness stays usable while expectations roll out. A declaration that exists but asserts nothing is a failure, since an expectation file that asserts nothing passes every run.
201
+
202
+ Omitting `--writes` or `--envelope` does not silently drop the assertion kinds that need them. Write scope and the turn ceiling report as unchecked and appear in the count, so the standalone command cannot claim more coverage than it had. A verdict never reports `pass` with zero assertions.
203
+
204
+ Exit 0 means `pass` or `unchecked`. Exit 1 means `fail`, or a caller error: a malformed target, or a sandbox that was never provisioned. A missing sandbox reports as an error rather than a failed verdict, because failing every path assertion would read as a skill that did nothing. `--strict` moves `unchecked` to exit 1 for a caller that has finished arming its scenarios.
205
+
206
+ ### Scenario coverage
207
+
208
+ `aitk sandbox coverage` reports which scenarios declare expectations and which only provision a state. It reads the fixture tree, so it needs no provisioned sandbox and runs nothing.
209
+
210
+ ```bash
211
+ aitk sandbox coverage --json
212
+ ```
213
+
214
+ | Flag | Effect |
215
+ | ---------- | ------------------------------------------------- |
216
+ | `--json` | Emit the coverage record on stdout |
217
+ | `--strict` | Exit 1 while any scenario declares no expectation |
218
+
219
+ The record carries every scenario with the arms that declare, plus `totalScenarios`, `armedScenarios`, and `armedArms`. Scenarios and arms count separately, since several arms can share one scenario and dividing one by the other overstates the rollout.
220
+
221
+ `scripts/sandbox/run.sh` calls this after a headless run and merges the verdict into the envelope it prints. It also writes that merged record to `.claude/.tmp/sandbox-runs/<target>-<arm>-<timestamp>.json` with a `writes` array appended, and logs the path on stderr. Both fields are what a later re-score needs, since `--envelope` and `--writes` read files the run deletes on exit. Stdout carries the same bytes it did before the record existed.
222
+
223
+ ## Docs
224
+
225
+ `aitk docs` emits the toolkit's own reference docs so an agent in a target project can orient without the toolkit source checked out. The CLI resolves `docs/` and `.claude/context/` from its install root, and which of the two it finds depends on how the CLI was installed. A registry install carries `docs/` alone, since `.claude/` is not published. A clone or a linked worktree carries both.
226
+
227
+ - `aitk docs list [--json]` lists the downstream catalog: the consumer-facing `docs/` surface plus per-domain narrative from `.claude/context/` when that root is present. Toolkit-internal context entries (`ci`, `development`, `extensions`, `sandbox`) are dropped. From a registry install the context section is absent rather than empty.
228
+ - `aitk docs <topic>` prints one doc to stdout, resolved by exact name from `docs/` first, then `.claude/context/`. Any doc the install carries is reachable by name, including the toolkit-internal topics the list omits.
229
+
230
+ Data prints to stdout and the frame to stderr, so `aitk docs <topic> > out.md` captures clean markdown. With no topic and no verb, `aitk docs` runs `list`. An unknown topic names the available topics on stderr and exits 1.
231
+
232
+ Only a `---` block opening on the first line counts as frontmatter, so a document body carrying horizontal rules emits whole.
233
+
234
+ ## Indexes
235
+
236
+ `aitk indexes regen` rewrites `index.md` files from sibling frontmatter. With no positional paths, it walks the current directory. With paths, each resolves by walking up to the nearest indexed ancestor, bounded by `--root`. Duplicates dedupe. The whole-repo walk prunes `.git`, `node_modules`, and anything `.gitignore` covers via `git check-ignore`.
237
+
238
+ A positional path is not filtered that way, because the walk-up resolves on the filesystem and never consults git. That is the only way to regenerate an index inside a gitignored folder, and it is how `.claude/tasks/` stays current.
239
+
240
+ | Option | Behavior |
241
+ | --------------- | ---------------------------------------------------------------- |
242
+ | `--dry-run` | Report which indexes would change without writing |
243
+ | `--json` | Emit a machine-readable record per index on stdout |
244
+ | `--root <path>` | Walk-up boundary when positional paths are passed (default: CWD) |
245
+ | `--no-stage` | Skip the auto `git add` on modified indexes |
246
+
247
+ Exit codes: `0` clean, `1` frontmatter error or missing index, `2` drift found in `--dry-run`.
248
+
249
+ When positional paths are passed inside a git repo, modified `index.md` files are staged so lint-staged and Claude `PostToolUse` hooks commit the regenerated catalog. Whole-repo walks never auto-stage, and neither does a path git ignores, since staging one always fails and the warning would fire on every edit.
250
+
251
+ Skills can parse drift without branching on exit code:
252
+
253
+ ```bash
254
+ aitk indexes regen --dry-run --json | jq '.results[] | select(.action == "would-write")'
255
+ ```
256
+
257
+ For the system rationale, frontmatter contract, when to adopt, and bootstrap path, see `.claude/context/indexes.md`.
258
+
259
+ ## Tasks
260
+
261
+ `aitk tasks archive` moves a shipped task from `.claude/tasks/` into `.claude/.tmp/task-archive/`, drops its row from `priority.md`, and regenerates the board index. The three run as one unit, so the attended and unattended callers cannot archive differently.
262
+
263
+ Name the task by its filename stem, or by the pull request it carries:
264
+
265
+ ```bash
266
+ aitk tasks archive v28.1-trigger-escalation
267
+ aitk tasks archive --pull-request 673 --json
268
+ ```
269
+
270
+ | Option | Behavior |
271
+ | -------------------- | ------------------------------------------------------------ |
272
+ | `--pull-request <n>` | Select the task whose `Pull request:` line names this number |
273
+ | `--json` | Emit a machine-readable record on stdout |
274
+ | `--root <path>` | Board root, defaulting to the main worktree |
275
+
276
+ Exit codes: `0` archived, `1` refused. Every gate is a refusal rather than a warning, because `.husky/post-merge` calls this with nobody watching. The `reason` field carries which gate fired: `no-board`, `no-match`, `ambiguous`, `no-outcomes`, `open-outcomes`, or `plan-unswept`.
277
+
278
+ The board is shared scratch at the main worktree root, so `--root` defaults to the first entry of `git worktree list` rather than the working directory. A linked worktree archives against the same board every other session reads.
279
+
280
+ Skills branch on the reason rather than on the exit code:
281
+
282
+ ```bash
283
+ aitk tasks archive --pull-request 673 --json | jq -r 'if .ok then .task else .reason end'
284
+ ```
285
+
286
+ For the board format, the `Pull request:` line, and the archive rules, see `.claude/standards/tasks.md`.
287
+
288
+ ## Runtime catalogs
289
+
290
+ Use these to discover what's available instead of hardcoding names.
291
+
292
+ | Command | Returns |
293
+ | ------------------------------- | -------------------------------------------- |
294
+ | `aitk tooling list --json` | Stacks, extends chain, dep and script counts |
295
+ | `aitk snippets list --json` | Presets and categories with their slugs |
296
+ | `aitk standards list --json` | Standards docs |
297
+ | `aitk gov list --json` | Governance stacks and rule sets |
298
+ | `aitk claude seeds list --json` | Seed doc sources with content |
299
+ | `aitk docs list --json` | Consumer docs plus per-domain context |
300
+
301
+ Every catalog serializes through `JSON.stringify`, so a name carrying a quote
302
+ emits valid JSON. `aitk tooling list` and `aitk snippets list` previously built
303
+ their output with `printf` and no escaping.
304
+
305
+ `aitk claude seeds list` reads the same plan `aitk claude init` applies, so the
306
+ listing and the install cannot disagree. It now reports
307
+ `.claude/context/index.md`, which `init` has always installed and the listing
308
+ never named, and it emits the project-level `CLAUDE.md` last rather than first.
309
+
310
+ ## Non-interactive examples
311
+
312
+ ```bash
313
+ # Create a new tooling stack
314
+ AITK_NON_INTERACTIVE=1 aitk tooling create astro
315
+
316
+ # Sync a stack into a target project
317
+ AITK_NON_INTERACTIVE=1 aitk tooling sync astro /path/to/project
318
+
319
+ # Install a governance stack (the stack argument is required headlessly)
320
+ AITK_NON_INTERACTIVE=1 aitk gov install astro --add 260-shadcn /path/to/project
321
+
322
+ # Update installed governance rules, dropping a retired .claude/GOV.md
323
+ AITK_NON_INTERACTIVE=1 aitk gov sync /path/to/project
324
+
325
+ # Concatenate installed rules into a paste payload
326
+ AITK_NON_INTERACTIVE=1 aitk gov build /path/to/project
327
+
328
+ # Sync a monorepo subtree, skipping the base layer the repo root already owns
329
+ AITK_NON_INTERACTIVE=1 aitk tooling sync vite-react /path/to/repo/frontend --skip base
330
+
331
+ # Verify a stack end-to-end in a throwaway scaffold
332
+ aitk tooling verify vite-react
333
+
334
+ # Apply one stack without scanning or prompting, for scripted provisioning
335
+ aitk tooling inject base /path/to/project
336
+ aitk tooling inject base /path/to/project --configs --seeds
337
+
338
+ # Drop managed gitignore entries a manifest no longer declares
339
+ # Prints the number removed on stdout, diagnostics on stderr
340
+ aitk tooling prune-gitignore base /path/to/project
341
+
342
+ # Install a snippet preset
343
+ AITK_NON_INTERACTIVE=1 aitk snippets install essentials /path/to/project
344
+
345
+ # Update snippets already installed, leaving project-authored ones alone
346
+ AITK_NON_INTERACTIVE=1 aitk snippets sync /path/to/project
347
+
348
+ # Report standards drift without applying it, which is what headless does here
349
+ AITK_NON_INTERACTIVE=1 aitk standards sync /path/to/project
350
+
351
+ # Copy every standard into a target, overwriting what is there
352
+ AITK_NON_INTERACTIVE=1 aitk standards install /path/to/project
353
+
354
+ # Bootstrap a project. Any flag suppresses the confirmation prompt
355
+ AITK_NON_INTERACTIVE=1 aitk init --stack astro --skip wiki /path/to/project
356
+
357
+ # Run every domain sync. The git workflow is refused headlessly, so nothing is pushed
358
+ AITK_NON_INTERACTIVE=1 aitk sync /path/to/project
359
+
360
+ # Scaffold .claude/wiki/ with a stub index. The target must already exist
361
+ AITK_NON_INTERACTIVE=1 aitk wiki init /path/to/project
362
+
363
+ # Run a sandbox scenario non-interactively
364
+ SANDBOX_SCENARIO=sync aitk sandbox infra:tooling
365
+ ```
366
+
367
+ ## Related
368
+
369
+ - `CLAUDE.md`: project behaviors and design principles
370
+ - `.claude/skills/aitk-*`: domain-scoped guidance for editing work
371
+ - `docs/index.md`: full docs directory