@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.
- package/LICENSE +21 -0
- package/README.md +99 -0
- package/claude/.claude-plugin/plugin.json +19 -0
- package/claude/skills/bash-script/SKILL.md +96 -0
- package/claude/skills/bash-script/references/patterns.md +349 -0
- package/claude/skills/ci-workflow/SKILL.md +52 -0
- package/claude/skills/ci-workflow/references/workflows.md +74 -0
- package/claude/skills/claude-address-review/SKILL.md +107 -0
- package/claude/skills/claude-autoship/SKILL.md +137 -0
- package/claude/skills/claude-design-extract/SKILL.md +69 -0
- package/claude/skills/claude-design-propose/SKILL.md +75 -0
- package/claude/skills/claude-diagram/SKILL.md +126 -0
- package/claude/skills/claude-docs/SKILL.md +204 -0
- package/claude/skills/claude-feature/REQUIREMENT.md +35 -0
- package/claude/skills/claude-feature/SKILL.md +148 -0
- package/claude/skills/claude-groundwork/SKILL.md +148 -0
- package/claude/skills/claude-groundwork/references/folder-format.md +107 -0
- package/claude/skills/claude-memory-capture/SKILL.md +80 -0
- package/claude/skills/claude-memory-review/REQUIREMENT.md +37 -0
- package/claude/skills/claude-memory-review/SKILL.md +206 -0
- package/claude/skills/claude-orchestrate/SKILL.md +125 -0
- package/claude/skills/claude-pr-review/SKILL.md +150 -0
- package/claude/skills/claude-review/SKILL.md +136 -0
- package/claude/skills/claude-roadmap/SKILL.md +61 -0
- package/claude/skills/claude-roadmap/references/roadmap.md +52 -0
- package/claude/skills/claude-screencast/SKILL.md +160 -0
- package/claude/skills/claude-seed-sync/SKILL.md +141 -0
- package/claude/skills/claude-slides-draft/SKILL.md +62 -0
- package/claude/skills/claude-standards-audit/REQUIREMENT.md +33 -0
- package/claude/skills/claude-standards-audit/SKILL.md +79 -0
- package/claude/skills/claude-standards-audit/references/branch.md +49 -0
- package/claude/skills/claude-standards-audit/references/pr.md +124 -0
- package/claude/skills/claude-tasks/SKILL.md +123 -0
- package/claude/skills/claude-ui-test/SKILL.md +75 -0
- package/claude/skills/claude-ux-audit/SKILL.md +78 -0
- package/claude/skills/claude-worktree/SKILL.md +79 -0
- package/claude/skills/cli-script/SKILL.md +47 -0
- package/claude/skills/cli-script/references/template.md +43 -0
- package/claude/skills/create-rule/SKILL.md +68 -0
- package/claude/skills/create-skill/REQUIREMENT.md +30 -0
- package/claude/skills/create-skill/SKILL.md +24 -0
- package/claude/skills/create-snippet/SKILL.md +28 -0
- package/claude/skills/create-snippet/references/snippets.md +57 -0
- package/claude/skills/create-standard/SKILL.md +31 -0
- package/claude/skills/create-standard/references/standard.md +52 -0
- package/claude/skills/docs-sync/SKILL.md +87 -0
- package/claude/skills/git-branch/REQUIREMENT.md +38 -0
- package/claude/skills/git-branch/SKILL.md +60 -0
- package/claude/skills/git-branch/references/branch.md +49 -0
- package/claude/skills/git-commit/REQUIREMENT.md +33 -0
- package/claude/skills/git-commit/SKILL.md +51 -0
- package/claude/skills/git-commit/references/commit.md +63 -0
- package/claude/skills/git-followup/REQUIREMENT.md +38 -0
- package/claude/skills/git-followup/SKILL.md +35 -0
- package/claude/skills/git-issue/REQUIREMENT.md +38 -0
- package/claude/skills/git-issue/SKILL.md +69 -0
- package/claude/skills/git-issue/references/issue.md +84 -0
- package/claude/skills/git-pr/REQUIREMENT.md +37 -0
- package/claude/skills/git-pr/SKILL.md +119 -0
- package/claude/skills/git-pr/references/branch.md +49 -0
- package/claude/skills/git-pr/references/pr.md +124 -0
- package/claude/skills/git-ship/REQUIREMENT.md +34 -0
- package/claude/skills/git-ship/SKILL.md +39 -0
- package/claude/skills/git-split/REQUIREMENT.md +38 -0
- package/claude/skills/git-split/SKILL.md +160 -0
- package/claude/skills/git-split/references/branch.md +49 -0
- package/claude/skills/git-split/references/pr.md +124 -0
- package/claude/skills/git-stage/REQUIREMENT.md +36 -0
- package/claude/skills/git-stage/SKILL.md +74 -0
- package/claude/skills/git-stage/references/commit.md +63 -0
- package/claude/skills/git-worktree/REQUIREMENT.md +37 -0
- package/claude/skills/git-worktree/SKILL.md +120 -0
- package/claude/skills/migration-claude-md/SKILL.md +74 -0
- package/claude/skills/migration-context/SKILL.md +93 -0
- package/claude/skills/migration-standards/SKILL.md +75 -0
- package/claude/skills/project-commands/SKILL.md +73 -0
- package/claude/skills/session-resume/SKILL.md +36 -0
- package/claude/skills/setup-gov/SKILL.md +71 -0
- package/claude/skills/setup-indexes/SKILL.md +148 -0
- package/claude/skills/setup-init/SKILL.md +114 -0
- package/claude/skills/setup-plugins/SKILL.md +81 -0
- package/claude/skills/setup-plugins/references/plugin-catalog.md +53 -0
- package/claude/skills/setup-verify/SKILL.md +51 -0
- package/claude/skills/systematic-debugging/SKILL.md +70 -0
- package/claude/skills/toolkit-cli/SKILL.md +38 -0
- package/claude/skills/toolkit-feedback/SKILL.md +80 -0
- package/claude/skills/toolkit-operator/SKILL.md +45 -0
- package/claude/skills/toolkit-triage/SKILL.md +63 -0
- package/claude/skills/youtube-transcripts/SKILL.md +34 -0
- package/docs/agents.md +371 -0
- package/docs/ai-workflow.md +157 -0
- package/docs/index.md +20 -0
- package/docs/operating-model.md +106 -0
- package/docs/target-projects.md +183 -0
- package/docs/visual-design-workflow.md +136 -0
- package/docs/zshrc-aliases.md +65 -0
- package/governance/rules/claude/500-prose.md +12 -0
- package/governance/rules/claude/510-context.md +16 -0
- package/governance/rules/claude/520-wireframes.md +12 -0
- package/governance/rules/claude/530-requirements.md +11 -0
- package/governance/rules/claude/540-architecture.md +11 -0
- package/governance/rules/claude/550-design.md +11 -0
- package/governance/rules/claude/555-tasks.md +12 -0
- package/governance/rules/claude/560-diagrams.md +11 -0
- package/governance/rules/claude/570-skill.md +18 -0
- package/governance/rules/claude/580-readme.md +11 -0
- package/governance/rules/claude/590-rule-authoring.md +12 -0
- package/governance/rules/core/000-constitution.md +30 -0
- package/governance/rules/core/010-testing.md +35 -0
- package/governance/rules/core/020-concurrency.md +22 -0
- package/governance/rules/core/030-error-handling.md +31 -0
- package/governance/rules/core/040-performance.md +20 -0
- package/governance/rules/core/050-logging.md +20 -0
- package/governance/rules/core/060-naming.md +19 -0
- package/governance/rules/core/070-planning.md +13 -0
- package/governance/rules/core/080-config-comments.md +22 -0
- package/governance/rules/framework/200-react.md +51 -0
- package/governance/rules/framework/210-astro.md +41 -0
- package/governance/rules/framework/220-fastapi.md +43 -0
- package/governance/rules/framework/230-nextjs.md +48 -0
- package/governance/rules/framework/250-tailwind.md +32 -0
- package/governance/rules/framework/260-shadcn.md +34 -0
- package/governance/rules/lang/100-typescript.md +40 -0
- package/governance/rules/lang/110-python.md +42 -0
- package/governance/rules/lib/300-testing-ts.md +38 -0
- package/governance/rules/lib/310-zod.md +25 -0
- package/governance/rules/lib/320-tanstack-query.md +32 -0
- package/governance/rules/lib/330-testing-py.md +44 -0
- package/governance/rules/lib/340-pydantic.md +38 -0
- package/governance/rules/lib/350-security-web.md +31 -0
- package/governance/rules/ui/400-ui.md +34 -0
- package/governance/rules/ui/410-a11y.md +44 -0
- package/governance/rules/ui/420-forms.md +34 -0
- package/governance/rules/ui/430-ux-completeness.md +62 -0
- package/governance/stacks/astro.toml +2 -0
- package/governance/stacks/base.toml +2 -0
- package/governance/stacks/node.toml +2 -0
- package/governance/stacks/python-fastapi.toml +2 -0
- package/governance/stacks/python.toml +2 -0
- package/governance/stacks/react.toml +2 -0
- package/package.json +67 -0
- package/scripts/config.sh +11 -0
- package/scripts/core/bootstrap.sh +81 -0
- package/scripts/core/check-plugin-boundary.sh +45 -0
- package/scripts/core/check-skill-paths.sh +25 -0
- package/scripts/core/clean.sh +36 -0
- package/scripts/core/install-check.sh +93 -0
- package/scripts/core/regen-claude-copies.sh +26 -0
- package/scripts/core/regen-indexes.sh +10 -0
- package/scripts/core/regen-skill-references.sh +27 -0
- package/scripts/core/snapshot.sh +132 -0
- package/scripts/core/update.sh +35 -0
- package/scripts/core/verify.sh +201 -0
- package/scripts/docs/list.sh +129 -0
- package/scripts/gov/list.sh +234 -0
- package/scripts/lib/frontmatter.sh +30 -0
- package/scripts/lib/gov.sh +14 -0
- package/scripts/lib/sandbox-fixtures.sh +109 -0
- package/scripts/lib/sandbox-git.sh +73 -0
- package/scripts/lib/tooling.sh +24 -0
- package/scripts/lib/ui.sh +173 -0
- package/scripts/lib/worktree.sh +20 -0
- package/scripts/manage-sandbox.sh +453 -0
- package/scripts/snippets/create.sh +156 -0
- package/scripts/standards/list.sh +91 -0
- package/scripts/tooling/create.sh +109 -0
- package/scripts/tooling/ref.sh +141 -0
- package/scripts/tooling/verify.sh +179 -0
- package/snippets/claude/decision-memo.md +39 -0
- package/snippets/claude/feature-recap.md +19 -0
- package/snippets/claude/figma-steps.md +18 -0
- package/snippets/claude/orchestrator-resume.md +23 -0
- package/snippets/claude/orchestrator-sweep.md +10 -0
- package/snippets/compact-summary.md +5 -0
- package/snippets/create-snippet.md +7 -0
- package/snippets/decision-help.md +6 -0
- package/snippets/meta-prompt.md +14 -0
- package/snippets/research-prompt.md +7 -0
- package/snippets/session-notes.md +11 -0
- package/snippets/snippets.toml +6 -0
- package/snippets/step-by-step.md +10 -0
- package/snippets/web-research.md +21 -0
- package/src/claude/gitignore.ts +51 -0
- package/src/claude/seeds-list.ts +47 -0
- package/src/claude/seeds.ts +124 -0
- package/src/claude/settings.ts +151 -0
- package/src/cli-run.ts +43 -0
- package/src/cli.ts +111 -0
- package/src/commands/claude.ts +349 -0
- package/src/commands/design.ts +39 -0
- package/src/commands/docs.ts +59 -0
- package/src/commands/feedback-format.ts +23 -0
- package/src/commands/feedback.ts +103 -0
- package/src/commands/gov.ts +268 -0
- package/src/commands/indexes.ts +182 -0
- package/src/commands/init.ts +117 -0
- package/src/commands/pass-through.ts +39 -0
- package/src/commands/sandbox.ts +315 -0
- package/src/commands/slides.ts +106 -0
- package/src/commands/snippets.ts +236 -0
- package/src/commands/standards.ts +89 -0
- package/src/commands/sync.ts +211 -0
- package/src/commands/tasks.ts +185 -0
- package/src/commands/tooling.ts +432 -0
- package/src/commands/transcripts.ts +48 -0
- package/src/commands/wiki.ts +101 -0
- package/src/copy.ts +30 -0
- package/src/design/parse.ts +79 -0
- package/src/design/render.ts +170 -0
- package/src/docs/read.ts +59 -0
- package/src/exec.ts +17 -0
- package/src/frontmatter.ts +13 -0
- package/src/github-format.ts +13 -0
- package/src/github.ts +20 -0
- package/src/gov/adapter.ts +73 -0
- package/src/gov/install.ts +103 -0
- package/src/gov/payload.ts +39 -0
- package/src/gov/stacks.ts +124 -0
- package/src/indexes/frontmatter.ts +46 -0
- package/src/indexes/regen.ts +84 -0
- package/src/indexes/render.ts +181 -0
- package/src/indexes/walk.ts +111 -0
- package/src/init/flags.ts +66 -0
- package/src/init/plan.ts +128 -0
- package/src/init/run.ts +46 -0
- package/src/init/steps.ts +91 -0
- package/src/sandbox/coverage.ts +115 -0
- package/src/sandbox/expect.ts +412 -0
- package/src/slides/layouts.ts +391 -0
- package/src/slides/open.ts +18 -0
- package/src/slides/parse.ts +84 -0
- package/src/slides/render.ts +88 -0
- package/src/slides/styles.ts +44 -0
- package/src/snippets/adapter.ts +34 -0
- package/src/snippets/categories.ts +59 -0
- package/src/snippets/install.ts +125 -0
- package/src/snippets/list.ts +32 -0
- package/src/snippets/presets.ts +50 -0
- package/src/standards/adapter.ts +51 -0
- package/src/standards/index-refresh.ts +44 -0
- package/src/standards/install.ts +52 -0
- package/src/sync/check.ts +269 -0
- package/src/sync/engine.ts +416 -0
- package/src/sync/git.ts +204 -0
- package/src/sync/stamp.ts +202 -0
- package/src/sync/target.ts +79 -0
- package/src/sync/workflow.ts +201 -0
- package/src/target.ts +43 -0
- package/src/tasks/archive.ts +304 -0
- package/src/tooling/gitignore.ts +122 -0
- package/src/tooling/inject.ts +214 -0
- package/src/tooling/list.ts +39 -0
- package/src/tooling/manifest.ts +178 -0
- package/src/tooling/package.ts +166 -0
- package/src/tooling/scan.ts +186 -0
- package/src/transcripts/fetch.ts +156 -0
- package/src/transcripts/metadata.ts +54 -0
- package/src/transcripts/vtt.ts +114 -0
- package/src/ui.ts +187 -0
- package/src/wiki/init.ts +85 -0
- package/standards/architecture.md +41 -0
- package/standards/bundled/branch.md +49 -0
- package/standards/bundled/commit.md +63 -0
- package/standards/bundled/issue.md +84 -0
- package/standards/bundled/pr.md +124 -0
- package/standards/bundled/roadmap.md +52 -0
- package/standards/bundled/snippets.md +57 -0
- package/standards/bundled/standard.md +52 -0
- package/standards/context.md +132 -0
- package/standards/design.md +31 -0
- package/standards/diagrams.md +55 -0
- package/standards/index.md +21 -0
- package/standards/prose.md +122 -0
- package/standards/readme.md +163 -0
- package/standards/requirements.md +61 -0
- package/standards/rule.md +79 -0
- package/standards/skill.md +257 -0
- package/standards/tasks.md +140 -0
- package/standards/versioning.md +47 -0
- package/standards/wireframes.md +67 -0
- package/tooling/astro/configs/astro.config.mjs +17 -0
- package/tooling/astro/configs/eslint.config.js +79 -0
- package/tooling/astro/configs/playwright.config.ts +25 -0
- package/tooling/astro/configs/tsconfig.json +12 -0
- package/tooling/astro/configs/vitest.config.ts +22 -0
- package/tooling/astro/manifest.toml +32 -0
- package/tooling/astro/reference.md +60 -0
- package/tooling/base/configs/.editorconfig +5 -0
- package/tooling/base/configs/.github/pull_request_template.md +18 -0
- package/tooling/base/configs/.github/workflows/verify.yml +35 -0
- package/tooling/base/configs/.husky/commit-msg +1 -0
- package/tooling/base/configs/.husky/post-merge +61 -0
- package/tooling/base/configs/.husky/post-rewrite +21 -0
- package/tooling/base/configs/.husky/pre-commit +1 -0
- package/tooling/base/configs/.husky/pre-push +1 -0
- package/tooling/base/configs/.prettierrc +12 -0
- package/tooling/base/configs/.shellcheckrc +1 -0
- package/tooling/base/configs/.vscode/extensions.json +9 -0
- package/tooling/base/configs/.vscode/settings.json +3 -0
- package/tooling/base/configs/commitlint.config.js +11 -0
- package/tooling/base/configs/scripts/clean.sh +45 -0
- package/tooling/base/configs/scripts/update.sh +49 -0
- package/tooling/base/configs/scripts/verify.sh +64 -0
- package/tooling/base/manifest.toml +32 -0
- package/tooling/base/reference.md +114 -0
- package/tooling/base/seeds/.claude/context/ci.md +27 -0
- package/tooling/base/seeds/.claude/context/development.md +32 -0
- package/tooling/base/seeds/.cspell/project-terms.txt +0 -0
- package/tooling/base/seeds/.cspell/tech-stack.txt +19 -0
- package/tooling/base/seeds/.lintstagedrc +8 -0
- package/tooling/base/seeds/.prettierignore +0 -0
- package/tooling/base/seeds/cspell.json +20 -0
- package/tooling/claude/manifest.toml +11 -0
- package/tooling/claude/reference.md +62 -0
- package/tooling/claude/seeds/.claude/ARCHITECTURE.md +13 -0
- package/tooling/claude/seeds/.claude/DESIGN.md +62 -0
- package/tooling/claude/seeds/.claude/REQUIREMENTS.md +18 -0
- package/tooling/claude/seeds/.claude/context/index.md +8 -0
- package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +43 -0
- package/tooling/claude/seeds/.claude/hooks/scratch-guard.sh +45 -0
- package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +61 -0
- package/tooling/claude/seeds/.claude/hooks/tasks-index.sh +60 -0
- package/tooling/claude/seeds/.claude/settings.json +39 -0
- package/tooling/claude/seeds/.claude/tasks/index.md +8 -0
- package/tooling/claude/seeds/.claude/wireframes/index.md +8 -0
- package/tooling/claude/seeds/CLAUDE.md +87 -0
- package/tooling/claude/user/settings.template.json +10 -0
- package/tooling/claude/user/statusline-command.sh +53 -0
- package/tooling/python/configs/.coveragerc +14 -0
- package/tooling/python/configs/.python-version +1 -0
- package/tooling/python/configs/mypy.ini +6 -0
- package/tooling/python/configs/pytest.ini +4 -0
- package/tooling/python/configs/ruff.toml +15 -0
- package/tooling/python/configs/scripts/verify.sh +77 -0
- package/tooling/python/manifest.toml +16 -0
- package/tooling/python/reference.md +66 -0
- package/tooling/python/seeds/.cspell/tech-stack.txt +19 -0
- package/tooling/python/seeds/tests/test_smoke.py +2 -0
- package/tooling/vite-react/configs/playwright.config.ts +25 -0
- package/tooling/vite-react/configs/tsconfig.json +35 -0
- package/tooling/vite-react/configs/vite.config.ts +14 -0
- package/tooling/vite-react/configs/vitest.config.ts +26 -0
- package/tooling/vite-react/manifest.toml +21 -0
- package/tooling/vite-react/reference.md +55 -0
- package/tooling/vite-react/seeds/.cspell/project-terms.txt +1 -0
- package/tooling/vite-react/seeds/.cspell/tech-stack.txt +1 -0
- package/tooling/web/configs/.github/workflows/verify.yml +134 -0
- package/tooling/web/configs/.vscode/extensions.json +13 -0
- package/tooling/web/configs/.vscode/settings.json +10 -0
- package/tooling/web/configs/e2e/home.spec.ts +6 -0
- package/tooling/web/configs/e2e/screenshot.ts +41 -0
- package/tooling/web/configs/eslint.config.js +82 -0
- package/tooling/web/configs/scripts/screenshot.sh +28 -0
- package/tooling/web/configs/scripts/verify.sh +80 -0
- package/tooling/web/configs/src/test/setup.ts +8 -0
- package/tooling/web/manifest.toml +57 -0
- package/tooling/web/reference.md +95 -0
- package/tooling/web/seeds/.cspell/tech-stack.txt +18 -0
- 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
|