@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,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Pull request reference
|
|
3
|
+
description: Pull request title and body conventions
|
|
4
|
+
consumers: git-split, git-pr, claude-standards-audit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Pull request reference
|
|
8
|
+
|
|
9
|
+
## Title
|
|
10
|
+
|
|
11
|
+
- Format: `<type>(<scope>): <subject>`
|
|
12
|
+
- Casing: lowercase for `<type>`, `<scope>`, and first word of `<subject>`
|
|
13
|
+
- Length: 72 characters maximum
|
|
14
|
+
|
|
15
|
+
## Content
|
|
16
|
+
|
|
17
|
+
- Use imperative mood for all content (`add`, `fix`, `refactor`)
|
|
18
|
+
- Do not start with "This PR," "This commit," "Included are," or "I have"
|
|
19
|
+
- Do not use buzzwords (`seamless`, `robust`, `game-changer`, `enhanced`)
|
|
20
|
+
- Do not describe historical behavior or unchanged code. Describe new behavior only.
|
|
21
|
+
- Do not include future promises or speculative documentation
|
|
22
|
+
- Do not explain obvious changes (formatting, renaming variables)
|
|
23
|
+
- Do not duplicate commit messages verbatim
|
|
24
|
+
|
|
25
|
+
## Sections
|
|
26
|
+
|
|
27
|
+
- `## Summary`: 1-2 sentences following `<Action Verb> <Direct Object> to <Result>`, expand for clarity if needed
|
|
28
|
+
- `## Key Changes`: name actual files, functions, or modules (e.g., `AuthService.verify()` not "auth handler"). Always use bullet points, never prose.
|
|
29
|
+
- `## Technical Context` (optional): 1-2 lines of architectural reasoning explaining why, not what
|
|
30
|
+
- Omit Technical Context for docs, config, or trivial changes
|
|
31
|
+
- Use bullet points for multiple reasons, one sentence for a single reason
|
|
32
|
+
- `## Testing` (optional): specify exact commands or test cases run
|
|
33
|
+
- Omit Testing for docs, config, or trivial sync changes
|
|
34
|
+
- Use checkboxes, never prose. See Testing discipline for which box gets ticked.
|
|
35
|
+
- `## For the reviewer` (optional): what the reviewer should confirm, one bullet per request
|
|
36
|
+
- Visuals: include only when they clarify architecture, UI, or complex logic flows
|
|
37
|
+
|
|
38
|
+
## Testing discipline
|
|
39
|
+
|
|
40
|
+
- Run the check before writing its line. A `- [ ]` reports a check that has not run rather than one that is planned.
|
|
41
|
+
- Tick the box and state the observed result. `- [x] npm test passes, 42 tests` beats `- [ ] run npm test`.
|
|
42
|
+
- Quote the count or output the run reported, never a figure carried from elsewhere.
|
|
43
|
+
- Leave a box unchecked only when a human is required, and name which human and why on the same line.
|
|
44
|
+
- Human-only covers visual or aesthetic judgment, anything needing credentials or a live third-party service, anything needing a second machine or a fresh OS, and judgment about whether a boundary or an abstraction reads correctly. The agent runs everything else.
|
|
45
|
+
- Put a request for the reviewer under `## For the reviewer`. It is a request rather than unfinished testing, so it never appears as an unchecked Testing box.
|
|
46
|
+
|
|
47
|
+
## Formatting
|
|
48
|
+
|
|
49
|
+
- End every bullet point with a period
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
|
|
53
|
+
### Template
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Summary
|
|
57
|
+
|
|
58
|
+
<Action Verb> <Direct Object> to <Result>.
|
|
59
|
+
|
|
60
|
+
## Key Changes
|
|
61
|
+
|
|
62
|
+
- <Verb> <specific component/file/function> (<reason if non-obvious>)
|
|
63
|
+
- <Verb> <specific component/file/function>
|
|
64
|
+
|
|
65
|
+
## Technical Context
|
|
66
|
+
|
|
67
|
+
- <Architectural reasoning explaining why, not what>
|
|
68
|
+
|
|
69
|
+
## Testing
|
|
70
|
+
|
|
71
|
+
- [x] <Command run> <observed result>
|
|
72
|
+
- [x] <Edge case verified> <what was observed>
|
|
73
|
+
- [ ] <Human-only check> (<which human, why>)
|
|
74
|
+
|
|
75
|
+
## For the reviewer
|
|
76
|
+
|
|
77
|
+
- <What the reviewer should confirm>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Correct
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## Summary
|
|
84
|
+
|
|
85
|
+
Update auth middleware to enforce jwt expiration checks. # imperative + direct object + result
|
|
86
|
+
|
|
87
|
+
## Key Changes
|
|
88
|
+
|
|
89
|
+
- Add `verifyExpiration()` to `src/auth/validators.ts`. # specific function + file path
|
|
90
|
+
- Refactor `AuthService.authenticate()` to handle 401 codes. # named component + clear change
|
|
91
|
+
|
|
92
|
+
## Technical Context
|
|
93
|
+
|
|
94
|
+
- Migration to stateless session management for horizontal scalability. # why, not what
|
|
95
|
+
|
|
96
|
+
## Testing
|
|
97
|
+
|
|
98
|
+
- [x] `npm run test:auth` passes, 42 tests. # command run + observed result
|
|
99
|
+
- [x] Expired token rejected with a 401 against a local server. # edge case + what happened
|
|
100
|
+
- [ ] Staging smoke test (release owner, needs staging credentials). # unchecked + which human + why
|
|
101
|
+
|
|
102
|
+
## For the reviewer
|
|
103
|
+
|
|
104
|
+
- Confirm the 401 and 403 split reads correctly for the public API. # a request, not a test result
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Incorrect
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Summary
|
|
111
|
+
|
|
112
|
+
This PR updates the authentication system to be more robust. # "This PR" opener + buzzword
|
|
113
|
+
|
|
114
|
+
## Key Changes
|
|
115
|
+
|
|
116
|
+
- Updated auth middleware files # vague, no specific component, no period
|
|
117
|
+
- The old system used to check tokens differently # describes historical behavior
|
|
118
|
+
|
|
119
|
+
## Testing
|
|
120
|
+
|
|
121
|
+
- Tested manually # no specific command or case
|
|
122
|
+
- [ ] `npm run test:auth` # unchecked box for a check the agent can run
|
|
123
|
+
- [ ] Reviewer confirms the error split reads correctly # a reviewer request, belongs under `## For the reviewer`
|
|
124
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Roadmap reference
|
|
3
|
+
description: Shape and content rules for .claude/ROADMAP.md
|
|
4
|
+
consumers: claude-roadmap
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Roadmap reference
|
|
8
|
+
|
|
9
|
+
Applies to `.claude/ROADMAP.md`. Sequences the scope from `.claude/REQUIREMENTS.md` into ordered versions, each a usable increment. Update when the sequence changes or a version ships. The roadmap is committed because the sequence and its rationale are shared strategic truth a fresh session needs, unlike `.claude/tasks/`, which is ephemeral scratch.
|
|
10
|
+
|
|
11
|
+
The roadmap is one scannable table. That is what keeps it distinct from `.claude/tasks/`: the roadmap is an overview read at a glance, while tasks are worked one file at a time.
|
|
12
|
+
|
|
13
|
+
## What goes in
|
|
14
|
+
|
|
15
|
+
- One row per version, ordered top to bottom by sequence
|
|
16
|
+
- A status per version: active, next in line, or deferred
|
|
17
|
+
- The observable outcome each version delivers, as a short phrase
|
|
18
|
+
- The features a version groups, by name, drawn from the MVP list in `.claude/REQUIREMENTS.md`
|
|
19
|
+
- The version each row depends on, and a short why
|
|
20
|
+
|
|
21
|
+
## What does not go in
|
|
22
|
+
|
|
23
|
+
- Task breakdown, checkboxes, or per-feature file lists. Those live in `.claude/tasks/` and `.claude/plans/`.
|
|
24
|
+
- Implementation detail, API names, or component references
|
|
25
|
+
- Rationale for tech choices. That belongs in `.claude/ARCHITECTURE.md`.
|
|
26
|
+
- Sentence-long cells. Keep each cell terse so the table stays scannable.
|
|
27
|
+
|
|
28
|
+
## Format
|
|
29
|
+
|
|
30
|
+
One table. Columns, in order:
|
|
31
|
+
|
|
32
|
+
- `Version`: the `vX.Y` phase label. Phase-label format is governed by `standards/versioning.md`.
|
|
33
|
+
- `Status`: `Now` for the active version, `Next` for sequenced upcoming versions, `Later` for deferred themes.
|
|
34
|
+
- `Outcome`: what the user can do once this version ships, as a phrase.
|
|
35
|
+
- `Features`: the feature names this version groups, comma-separated.
|
|
36
|
+
- `Depends on`: the version this one needs and a short why, or `none` when independent.
|
|
37
|
+
|
|
38
|
+
## Template
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
# Roadmap
|
|
42
|
+
|
|
43
|
+
| Version | Status | Outcome | Features | Depends on |
|
|
44
|
+
| ------- | ------ | -------- | -------------------- | ------------------ |
|
|
45
|
+
| v0.1 | Now | <phrase> | <feature>, <feature> | none |
|
|
46
|
+
| v0.2 | Next | <phrase> | <feature> | v0.1, for <reason> |
|
|
47
|
+
| v0.3 | Later | <phrase> | <feature> | none |
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Lifecycle
|
|
51
|
+
|
|
52
|
+
The roadmap sequences a finite, known scope. When the last version ships, the scope is exhausted and the project cuts a semver release per `standards/versioning.md`. Later work arrives as discrete items, a fresh requirements pass or tracked issues, rather than extending the original roadmap without end.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Snippet reference
|
|
3
|
+
description: Snippet reference and authoring conventions
|
|
4
|
+
consumers: create-snippet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Snippet reference
|
|
8
|
+
|
|
9
|
+
## What a snippet is
|
|
10
|
+
|
|
11
|
+
A snippet is a short, focused prompt stored as a plain markdown file. Invoke one to insert a prepared instruction into any AI chat without retyping it. Each snippet covers one purpose. If a prompt needs headers or multiple goals, use a system prompt instead.
|
|
12
|
+
|
|
13
|
+
## Invocation channels
|
|
14
|
+
|
|
15
|
+
- Chrome extension: type `>slug` in a supported chat UI (claude.ai, gemini.google.com) to insert the snippet text inline
|
|
16
|
+
- Claude Code terminal: prefix the install path with `@` (e.g. `@.claude/snippets/claude/feature`)
|
|
17
|
+
- Snippets install preserving the source folder structure. A snippet at `claude/edit.md` installs as `.claude/snippets/claude/edit.md` and is invoked as `@.claude/snippets/claude/edit`
|
|
18
|
+
|
|
19
|
+
## Use patterns
|
|
20
|
+
|
|
21
|
+
- Run-as-is: invoke and send immediately. The snippet is self-contained and needs no extra context.
|
|
22
|
+
- Invoke-then-add-context: invoke the snippet, then append specifics in the same message (e.g. invoke `claude-feature`, then add the feature name or extra constraints)
|
|
23
|
+
- Invoke-on-history: invoke after a discussion. The snippet uses prior conversation as implicit context with no additional input needed (e.g. invoke `claude-figma` after discussing a design).
|
|
24
|
+
|
|
25
|
+
## Authoring
|
|
26
|
+
|
|
27
|
+
- One focused purpose per snippet. If it needs headers or multiple goals, use a system prompt instead.
|
|
28
|
+
- Self-contained. No references to external files or assumed prior context.
|
|
29
|
+
- No user fill-in placeholders. If a value depends on context, the user adds it after invocation.
|
|
30
|
+
- Plain markdown only. No YAML frontmatter, no headers, no nested structure.
|
|
31
|
+
- Filename is the slug: kebab-case, no capitals, no underscores
|
|
32
|
+
|
|
33
|
+
## Structure
|
|
34
|
+
|
|
35
|
+
- Lead with a verb. Open with an imperative that states the job immediately.
|
|
36
|
+
- One instruction per sentence. Do not stack multiple actions into one sentence.
|
|
37
|
+
- For sequential steps, use a numbered list with one action per item.
|
|
38
|
+
- When the output has a fixed shape, show it in a fenced code block with a language identifier.
|
|
39
|
+
- Put constraints and exclusions last, not inline with the main instructions.
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
### Correct
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
I want to implement the following. Scan relevant files and list conflicts. Do not implement. # user adds feature after invocation
|
|
47
|
+
Scan relevant files and list conflicts. Do not implement. # run-as-is, no context needed
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Incorrect
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
I want to implement: <feature or task name> # redundant fill-in, add context after invocation instead
|
|
54
|
+
See ARCHITECTURE.md before starting. # external dependency, not self-contained
|
|
55
|
+
|
|
56
|
+
## Overview\n## Steps # headers belong in a system prompt, not a snippet
|
|
57
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Standard reference
|
|
3
|
+
description: Shape and content rules for authoring a standard
|
|
4
|
+
consumers: create-standard
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Standard reference
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
A standard is a target-facing authoring convention for one document type. It installs into a project under `.claude/standards/` and is consumed by skills and developers alike. One standard governs one doc type. Split unrelated conventions into separate files.
|
|
12
|
+
|
|
13
|
+
## Frontmatter
|
|
14
|
+
|
|
15
|
+
- Start the file with a frontmatter block carrying `title` and `description`.
|
|
16
|
+
- `title`: names the doc type in sentence case, suffixed `reference` (`Commit reference`, `Branch reference`).
|
|
17
|
+
- `description`: one line naming what the standard covers. It becomes the index link label on install.
|
|
18
|
+
|
|
19
|
+
## Structure
|
|
20
|
+
|
|
21
|
+
- Use sentence case for every heading.
|
|
22
|
+
- Flat `##` rule groups for a single-topic standard. Group `##` headers by concern for a multi-topic one.
|
|
23
|
+
- When one `##` section covers more than one sub-concern, split its bullets into `###` subgroups, one subgroup per sub-concern. A flat bullet list under an `##` covers a single sub-concern. Roughly seven bullets is a signal to split, not a hard cap.
|
|
24
|
+
- Order groups from the most-used rule down to the edge case.
|
|
25
|
+
|
|
26
|
+
## Rules
|
|
27
|
+
|
|
28
|
+
- Write rules as imperative bullets: one rule per bullet, one concern per group.
|
|
29
|
+
- State the forbidden shape rather than enumerating allowed options, so a rule survives new categories.
|
|
30
|
+
- Cut any rule that resists a crisp one-line phrasing.
|
|
31
|
+
- Do not pad with filler prose. Every line earns its place as a usable reference entry.
|
|
32
|
+
|
|
33
|
+
## Success criterion
|
|
34
|
+
|
|
35
|
+
- State what a conforming artifact achieves, not only what shape it takes. A standard that specifies structure exhaustively and success nowhere cannot be argued against, only edited on taste.
|
|
36
|
+
- Write the criterion as a small set of questions the artifact must answer, or a task a reader must be able to complete from it. Keep it checkable by a person in one sitting.
|
|
37
|
+
- Place it near the top, above the shape rules it governs. The shape rules are the means and the criterion is the test.
|
|
38
|
+
- Say that an artifact failing the criterion is non-conforming even when it satisfies every shape rule. Without that line the criterion reads as advice.
|
|
39
|
+
- Add a criterion to an existing standard when that standard is next exercised, not in a sweep. A criterion written without a failure to point at is the taste-based edit this section exists to prevent, so a standard with no criterion yet is a known gap rather than a violation.
|
|
40
|
+
|
|
41
|
+
## Changing a standard
|
|
42
|
+
|
|
43
|
+
- Change a standard on a failure, not on a finding. A finding is that the docs say X or a paper suggests Y. A failure is a conforming artifact that satisfied every shape rule and still missed the success criterion.
|
|
44
|
+
- Park findings wherever the project tracks pending work, or in the standard's own backlog section when it tracks none. They are hypotheses to test, not instructions to apply.
|
|
45
|
+
- Cite the failing artifact in the change that fixes it, so the next reader can tell which rules were paid for by evidence.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
- Include examples only where a rule is non-obvious. A self-evident rule needs none.
|
|
50
|
+
- When shown, label them `### Correct` and `### Incorrect` with an inline `# reason` on each entry.
|
|
51
|
+
- Keep to two or three entries. Show the pattern, not a catalog.
|
|
52
|
+
- Keep each entry a short one-liner or command. Do not write multi-line correct and incorrect function blocks.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Context entry reference
|
|
3
|
+
description: Shape and content rules for .claude/context/<domain>.md entries
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Context entry reference
|
|
7
|
+
|
|
8
|
+
Applies to per-domain narrative entries under `.claude/context/`. Skip for `index.md`, which is regenerated by `aitk indexes regen`.
|
|
9
|
+
|
|
10
|
+
## Organizing principle
|
|
11
|
+
|
|
12
|
+
Weight the entry toward what cannot be re-derived from the repo. That single rule sorts every section below.
|
|
13
|
+
|
|
14
|
+
- Folder structure is re-derivable with `ls`. Cheap to regenerate, expensive to maintain by hand. Cap it hard.
|
|
15
|
+
- Command surfaces are re-derivable with `--help` and already live in the CLI reference under `docs/`. Duplicating flag lists creates a second source of truth that drifts.
|
|
16
|
+
- Decisions and gotchas cannot be re-derived at any price. They are the reason the folder exists.
|
|
17
|
+
|
|
18
|
+
## What a working entry looks like
|
|
19
|
+
|
|
20
|
+
An entry works when a session can read it and answer three questions without opening source:
|
|
21
|
+
|
|
22
|
+
- Where do things live in this domain?
|
|
23
|
+
- Why are they that way?
|
|
24
|
+
- How do I add one more of what this domain holds?
|
|
25
|
+
|
|
26
|
+
An entry that fails these is non-conforming regardless of whether it satisfies every section and ordering rule below. Shape is the means. These three questions are the test.
|
|
27
|
+
|
|
28
|
+
## Frontmatter
|
|
29
|
+
|
|
30
|
+
- `title` (required): sentence case, names the domain (`Web`, `API`, `Agents`).
|
|
31
|
+
- `description` (required): one line describing what the domain covers.
|
|
32
|
+
|
|
33
|
+
Both fields feed `.claude/context/index.md` when regenerated.
|
|
34
|
+
|
|
35
|
+
## Required sections
|
|
36
|
+
|
|
37
|
+
- `## Overview`: two to four lines. What the domain owns and where its boundary sits.
|
|
38
|
+
- `## Layout`: one line per folder in owns-X form. Folders only, never files.
|
|
39
|
+
- Form: ``- `scripts/lib/` owns shared bash functions sourced by domain scripts``. Do not list every file under that folder with a description each.
|
|
40
|
+
- Implementation detail moves to `## Decisions`, `## Hidden contracts`, or `## Gotchas`.
|
|
41
|
+
- Omit the section when the domain owns no paths in the repo, as with a domain covering external tools. Inventing a line to satisfy the heading is the padding banned below.
|
|
42
|
+
|
|
43
|
+
## Expected sections
|
|
44
|
+
|
|
45
|
+
Include whenever the domain has content for them. Never pad an entry with an empty heading.
|
|
46
|
+
|
|
47
|
+
- `## Decisions`: non-obvious choices and the reasoning behind them. The highest-value section in the folder and the one most often missing.
|
|
48
|
+
- `## Gotchas`: workarounds, things tried and rejected, scar tissue worth preserving.
|
|
49
|
+
|
|
50
|
+
## Optional sections
|
|
51
|
+
|
|
52
|
+
Pick by what the domain is. Add domain-specific headings as needed.
|
|
53
|
+
|
|
54
|
+
- `## CLI`: the command surface, only when the domain has one, and only as a list of what each verb does. Flags and JSON shapes stay in the CLI reference under `docs/`, linked rather than restated.
|
|
55
|
+
- `## Workflow` or `## Adding a <thing>`: the procedure for the domain's most common task. Most sessions arrive asking how to add one more of the thing the domain holds.
|
|
56
|
+
- `## Hidden contracts`: invariants the code does not self-document (shape constraints, skip rules, header semantics). Use `## Decisions` when the reader needs the reasoning rather than the invariant itself.
|
|
57
|
+
|
|
58
|
+
## Ordering
|
|
59
|
+
|
|
60
|
+
- Order sections `Overview`, `Layout`, `Decisions`, `Gotchas`, then everything else.
|
|
61
|
+
- Entries get read top-down and often partially, so irreducible content sits above recoverable content.
|
|
62
|
+
|
|
63
|
+
## The development entry
|
|
64
|
+
|
|
65
|
+
Only the `development` entry carries this section. It is not a general-purpose heading for other domains.
|
|
66
|
+
|
|
67
|
+
- `## Scripts`: a table of run commands (command plus purpose). The single discoverable surface for how to run the project. Keep run commands here, not scattered across `CLAUDE.md`.
|
|
68
|
+
|
|
69
|
+
## What goes in
|
|
70
|
+
|
|
71
|
+
- Per-domain narrative on how the code is structured and why
|
|
72
|
+
- Decisions specific to the domain. Broader cross-domain decisions belong in `.claude/ARCHITECTURE.md`.
|
|
73
|
+
- Constraints, gotchas, things tried and rejected
|
|
74
|
+
- Domain-specific conventions that do not fit a `paths:`-scoped rule
|
|
75
|
+
|
|
76
|
+
## What does not go in
|
|
77
|
+
|
|
78
|
+
- Exhaustive file trees with a description per file. Name folders and their responsibility under `## Layout` instead.
|
|
79
|
+
- Restated `--help` output, flag tables, or JSON shapes.
|
|
80
|
+
- A catalog a `list` command already returns. Link the command instead, so the entry cannot drift from it.
|
|
81
|
+
- Function-level documentation for implementation modules. Read the code. The exception is the public surface of a shared utility module, where the entry is how a session finds an existing helper instead of duplicating it.
|
|
82
|
+
- Rules. Those go in `.claude/rules/<scope>.md` with a `paths:` glob.
|
|
83
|
+
- Tutorials or human onboarding. Those go in `docs/` if a public audience exists.
|
|
84
|
+
- Generated content (API references). Generate, do not write by hand.
|
|
85
|
+
- Anything already in `.claude/REQUIREMENTS.md` or `.claude/ARCHITECTURE.md`.
|
|
86
|
+
|
|
87
|
+
## Length
|
|
88
|
+
|
|
89
|
+
- Aim for one entry per domain. There is no hard cap. Length is a symptom, not the defect.
|
|
90
|
+
- Past roughly 150 lines, check two things before adding more: whether the entry still covers a single domain, and whether it has filled with content `ls` or `--help` reproduces. Fix whichever is true rather than trimming to hit a number.
|
|
91
|
+
- Never cut a `## Decisions` or `## Gotchas` entry to shorten a file. Cut a `## Layout` or `## CLI` section instead.
|
|
92
|
+
- Split into a folder (`.claude/context/<domain>/<sub-area>.md`) when a domain has three or more sub-areas that do not fit cleanly in one file. That split is the natural ceiling.
|
|
93
|
+
|
|
94
|
+
## Examples
|
|
95
|
+
|
|
96
|
+
### Template
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
---
|
|
100
|
+
title: API
|
|
101
|
+
description: HTTP layer structure, route ownership, and request validation
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
# API
|
|
105
|
+
|
|
106
|
+
## Overview
|
|
107
|
+
|
|
108
|
+
Owns the HTTP surface end to end: routing, request validation, and response
|
|
109
|
+
serialization. Business logic lives in `src/services/` and is called from here,
|
|
110
|
+
never the reverse.
|
|
111
|
+
|
|
112
|
+
## Layout
|
|
113
|
+
|
|
114
|
+
- `src/routes/` owns the HTTP layer and request parsing
|
|
115
|
+
- `src/services/` owns business logic with no HTTP concerns
|
|
116
|
+
- `src/db/` owns persistence and schema migrations
|
|
117
|
+
|
|
118
|
+
## Decisions
|
|
119
|
+
|
|
120
|
+
- Validation happens at the route boundary using a schema library. Services trust their inputs.
|
|
121
|
+
- Pagination uses opaque cursor tokens, never offset+limit. Cursor format stays opaque to clients.
|
|
122
|
+
|
|
123
|
+
## Gotchas
|
|
124
|
+
|
|
125
|
+
- The `/health` endpoint skips auth middleware. Liveness probes from the orchestrator do not carry tokens.
|
|
126
|
+
- Database connection pool caps at 50. Concurrent requests over that block until a connection frees.
|
|
127
|
+
|
|
128
|
+
## Hidden contracts
|
|
129
|
+
|
|
130
|
+
- Route handlers return a plain object. The serializer wraps it in `{ data, meta }`. Handlers never wrap manually.
|
|
131
|
+
- Cursor tokens are base64-encoded JSON of `{ id, sort }`. Any handler that issues a cursor must use the shared encoder.
|
|
132
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Design reference
|
|
3
|
+
description: Shape and content rules for .claude/DESIGN.md
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Design reference
|
|
7
|
+
|
|
8
|
+
Applies to `.claude/DESIGN.md`. Captures visual intent and the decisions behind how things look, not a style guide, component spec, or framework reference. Update when a visual decision is made or a rule changes.
|
|
9
|
+
|
|
10
|
+
## What goes in
|
|
11
|
+
|
|
12
|
+
- Tokens described as intent ("mid gray, muted text"), not computed values. Exact values live in code.
|
|
13
|
+
- Layout constraints and sizing rules not obvious from wireframes
|
|
14
|
+
- Visual rules a developer could get wrong without guidance
|
|
15
|
+
- Non-obvious omissions ("no motion", "no custom icons") that prevent scope creep
|
|
16
|
+
|
|
17
|
+
## What does not go in
|
|
18
|
+
|
|
19
|
+
- CSS classes, computed values, component filenames, and prop names. Those live in code.
|
|
20
|
+
- UX copy and interaction flows. Those live in the wireframes.
|
|
21
|
+
- Anything that needs updating every time the code is refactored
|
|
22
|
+
|
|
23
|
+
## Format
|
|
24
|
+
|
|
25
|
+
- Use tables for token systems, one row per token. Use short bullets for component rules, one decision per line.
|
|
26
|
+
- Plain English over technical notation. If a section could be removed and the developer would still build correctly from wireframes and code alone, remove it.
|
|
27
|
+
- Keep table headers and role names intact so the render tooling can parse the token tables.
|
|
28
|
+
|
|
29
|
+
## Sections
|
|
30
|
+
|
|
31
|
+
Use `## Personality`, `## Color`, `## Typography`, `## Spacing`, `## Borders`, `## Motion`, and `## Iconography`. The token tables carry fixed headers the renderer reads.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Diagram reference
|
|
3
|
+
description: Conventions for Mermaid diagrams in .claude/DIAGRAMS.md
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Diagram reference
|
|
7
|
+
|
|
8
|
+
Applies to Mermaid diagrams in `.claude/DIAGRAMS.md`. Goal: diagrams that render cleanly in narrow-column renderers (VS Code preview, GitHub PR view, Cursor) and read pedagogically without surrounding prose.
|
|
9
|
+
|
|
10
|
+
## Layout
|
|
11
|
+
|
|
12
|
+
- Declare `flowchart TB` by default. Mermaid ignores a subgraph's direction whenever that subgraph links outward, and an architecture diagram links across its subgraphs as the normal case, so top-bottom is a declaration rather than a guarantee.
|
|
13
|
+
- Restructure a diagram that renders diagonal or left-to-right. Repeating the direction keyword does not fix it.
|
|
14
|
+
- Render a component, context, or pipeline diagram taller than wide. A `sequenceDiagram` is wide by construction and is exempt.
|
|
15
|
+
- Do not let independent nodes render in a row. A row of siblings reads as a sequential chain and asserts a pipeline the system does not have.
|
|
16
|
+
- Do not converge many edges on one node from one side. A crossing bundle is unreadable whatever it encodes.
|
|
17
|
+
- Keep node labels short. Three or four words max. Detail goes in the paragraph below the diagram.
|
|
18
|
+
- Use `<br/>` for a second short line on a node when the label is two ideas, never for a sentence.
|
|
19
|
+
- Subgraphs are for grouping unrelated lanes (offline versus online, browser versus server). Do not subgraph a single linear flow.
|
|
20
|
+
|
|
21
|
+
## Budgets
|
|
22
|
+
|
|
23
|
+
- Hold a diagram to roughly 5 to 10 nodes. Split it past 15.
|
|
24
|
+
- Watch edge count harder than node count. It binds first, and a diagram whose edges outnumber its nodes is already too dense to read.
|
|
25
|
+
- Treat a diagram that cannot be described in one sentence as two diagrams.
|
|
26
|
+
- Warn rather than refuse on a budget, and name the split that would fix it. These numbers come from published Mermaid practice rather than from a measurement in this repository, so a hard refusal on them will be wrong sometimes and unarguable when it is.
|
|
27
|
+
|
|
28
|
+
## Accessibility
|
|
29
|
+
|
|
30
|
+
- Give every diagram `accTitle` and `accDescr`. `accTitle` names what the diagram answers. `accDescr` states the structure in one sentence for a reader who cannot see the render.
|
|
31
|
+
|
|
32
|
+
## Verification
|
|
33
|
+
|
|
34
|
+
- Judge a diagram from its rendered image, not from its source. Direction, sibling rows, and edge bundles are visible only in the output.
|
|
35
|
+
- Render to PNG. An SVG export reads back as markup with no recoverable spatial meaning.
|
|
36
|
+
- Apply four tests as a reviewer, the same ones the author applied: direction held, no sibling row reading as a chain, no crossing edge bundle, taller than wide outside a sequence diagram.
|
|
37
|
+
- State which verification was skipped when no renderer is available. A diagram written without a render is still shippable, and one reported as verified without a render is not.
|
|
38
|
+
|
|
39
|
+
## Narrative
|
|
40
|
+
|
|
41
|
+
- Build a narrative arc across the file, not a parallel list of unrelated views. Start with the whole system in five or six boxes. Drill into one phase per section.
|
|
42
|
+
- Order sections chronologically when possible: framing, then setup, then a query travels through, then measurement.
|
|
43
|
+
- One H2 per diagram. The H2 names what the diagram answers, not what it shows ("How the corpus gets populated", not "Corpus ingestion").
|
|
44
|
+
|
|
45
|
+
## Explanation
|
|
46
|
+
|
|
47
|
+
- One to three short paragraphs below each diagram. Plain English, pedagogical, no marketing copy.
|
|
48
|
+
- Lead with what the diagram shows. Follow with why this shape was chosen and what alternative was rejected, when the choice was non-obvious.
|
|
49
|
+
- Reference one or two specific code paths the reader can open. Do not enumerate every file.
|
|
50
|
+
- Do not duplicate prose between sections. Each paragraph earns its line.
|
|
51
|
+
|
|
52
|
+
## Maintenance
|
|
53
|
+
|
|
54
|
+
- When the system changes (new layer, new provider, new deploy posture), audit `.claude/DIAGRAMS.md` in the same PR. A diagram showing a defunct host or library is worse than no diagram.
|
|
55
|
+
- Mermaid blocks are inside fenced code, so the prose-standards hook ignores them. The explanation paragraph below is still prose. Follow `standards/prose.md`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Standards
|
|
3
|
+
subtitle: Reference docs for consistent authoring across the toolkit and target projects.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Standards
|
|
7
|
+
|
|
8
|
+
Reference docs for consistent authoring across the toolkit and target projects.
|
|
9
|
+
|
|
10
|
+
- [Architecture reference](architecture.md): Shape and content rules for .claude/ARCHITECTURE.md
|
|
11
|
+
- [Context entry reference](context.md): Shape and content rules for .claude/context/<domain>.md entries
|
|
12
|
+
- [Design reference](design.md): Shape and content rules for .claude/DESIGN.md
|
|
13
|
+
- [Diagram reference](diagrams.md): Conventions for Mermaid diagrams in .claude/DIAGRAMS.md
|
|
14
|
+
- [Prose reference](prose.md): Voice, structure, formatting, and language rules for reference markdown
|
|
15
|
+
- [Readme reference](readme.md): Readme structure and content conventions
|
|
16
|
+
- [Requirements reference](requirements.md): Shape and content rules for .claude/REQUIREMENTS.md
|
|
17
|
+
- [Governance rule reference](rule.md): Rule frontmatter, body shape, and voice for .claude/rules files
|
|
18
|
+
- [Claude skill reference](skill.md): Claude skill structure and authoring rules
|
|
19
|
+
- [Tasks reference](tasks.md): Folder layout, filename convention, and content rules for .claude/tasks/
|
|
20
|
+
- [Versioning reference](versioning.md): Phase label vs semver discipline across tasks, PRs, commits, and tags
|
|
21
|
+
- [Wireframe reference](wireframes.md): Shape and content rules for .claude/wireframes/<surface>.md files
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Prose reference
|
|
3
|
+
description: Voice, structure, formatting, and language rules for reference markdown
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Prose reference
|
|
7
|
+
|
|
8
|
+
Applies to markdown reference docs, READMEs, and inline documentation in repos. It is the default voice for `.md` files and yields to any surface with its own voice, such as blogs, emails, changelogs, or commit messages.
|
|
9
|
+
|
|
10
|
+
## Voice
|
|
11
|
+
|
|
12
|
+
- Write for a developer who is scanning, not studying. Every sentence should be understandable on first read.
|
|
13
|
+
- Use active voice. Default to present tense unless past or future tense is factually correct.
|
|
14
|
+
- Prioritize direct verbs and plain words, using the minimum necessary. Write `use` not `utilize`, `help` not `facilitate`, `is` not `serves as`.
|
|
15
|
+
- Vary sentence length and opening structure to break uniform cadence. Do not start consecutive sentences the same way.
|
|
16
|
+
- Use substantive connectives where flow matters, but never add words solely for rhythm. Terse reference prose needs no padding.
|
|
17
|
+
- Be direct on established facts. Hedge on genuinely uncertain claims.
|
|
18
|
+
- Assume developer-level technical knowledge. Skip hand-holding explanations.
|
|
19
|
+
- Keep paragraphs to four sentences or fewer. Split longer blocks at the next logical boundary.
|
|
20
|
+
|
|
21
|
+
## Structure
|
|
22
|
+
|
|
23
|
+
### Headings
|
|
24
|
+
|
|
25
|
+
- H1 for document title, H2 for main sections, H3 for subsections
|
|
26
|
+
- Use sentence case for all headings (H1, H2, H3)
|
|
27
|
+
- Proper nouns and product names retain their casing in headings
|
|
28
|
+
|
|
29
|
+
### Paragraphs and lists
|
|
30
|
+
|
|
31
|
+
- Front-load key information in each paragraph. Keep paragraphs concise and scannable.
|
|
32
|
+
- Every sentence must provide new information. Cut redundant context.
|
|
33
|
+
- Use prose by default. Reserve bullets for discrete, unrelated items.
|
|
34
|
+
- Keep bullets tight. If a bullet needs more than a couple of sentences, it belongs in prose.
|
|
35
|
+
|
|
36
|
+
## Formatting
|
|
37
|
+
|
|
38
|
+
### Lists
|
|
39
|
+
|
|
40
|
+
- Use dashes (`-`) not asterisks (`*`) for bulleted lists
|
|
41
|
+
- Do not end single-sentence or fragment bullets with a period. Use periods when a bullet has two or more sentences.
|
|
42
|
+
- For key path lists, use colon format: `- \`src/\`: description`. Never use an em dash.
|
|
43
|
+
- Do not introduce a list with a "Here are the X:" or "The following X:" lead-in
|
|
44
|
+
|
|
45
|
+
### Code and identifiers
|
|
46
|
+
|
|
47
|
+
- Wrap commands, API names, file paths, and code identifiers in backticks
|
|
48
|
+
- Use a language identifier on all fenced code blocks (`markdown`, `typescript`, `plaintext`). Never use a bare ` ``` `
|
|
49
|
+
- In ASCII tree diagrams, use `←` for inline annotations. Never use `#`.
|
|
50
|
+
|
|
51
|
+
### Punctuation
|
|
52
|
+
|
|
53
|
+
- Do not use em dashes (`—`) or semicolons (`;`). Rewrite or restructure the sentence to avoid them.
|
|
54
|
+
- Do not use parenthetical asides in prose (`the config (which is optional) controls...`). Split into its own sentence or drop it. Parentheses in rule definitions for grouping examples are fine.
|
|
55
|
+
|
|
56
|
+
### Emphasis and dividers
|
|
57
|
+
|
|
58
|
+
- Do not over-format with excessive bold, italic, or header usage
|
|
59
|
+
- Do not use horizontal rules or dividers (`---`) in body content. The `---` delimiters of a YAML frontmatter block at the top of the file are allowed.
|
|
60
|
+
|
|
61
|
+
### Links and file references
|
|
62
|
+
|
|
63
|
+
- Use descriptive anchor text for links. Avoid `click here` or `read more`.
|
|
64
|
+
- Wrap file references in backticks by default. Use a labeled markdown link (`[label](path)`) only on rendered-for-human surfaces (`README.md`, `docs/`) for cross-folder navigation. Never repeat the path verbatim as the label.
|
|
65
|
+
|
|
66
|
+
## Language
|
|
67
|
+
|
|
68
|
+
- Use American English spelling. Prefer `-ize` over `-ise`, `-or` over `-our`, `-er` over `-re` (`organize`, `analyze`, `summarize`, `recognize`, `behavior`, `color`, `center`)
|
|
69
|
+
- Do not use marketing buzzwords (`seamless`, `robust`, `powerful`, `revolutionary`, `enhanced`, `allows`, `leverage`)
|
|
70
|
+
- Do not use vague qualifiers (`simply`, `just`, `easily`, `quickly`, `very`, `really`)
|
|
71
|
+
- Open a sentence with its subject and action, not filler (`Note that`, `Basically`), a hollow connective (`That being said`, `It's worth noting`), or a gerund windup (`Leveraging the API...`). Substantive transitions that carry a real relationship are fine.
|
|
72
|
+
- Do not use the negative parallelism pattern (`It's not X, it's Y`, `not because X, but because Y`)
|
|
73
|
+
- Do not pad verb phrases or delay the action. Write the shortest form (`in order to` → `to`, `ensure that X is set` → `set X`, `By doing X, you can Y` → state Y directly).
|
|
74
|
+
- Do not address the reader as a participant (`Let's`, `Here's`, `Here are`). State the content directly.
|
|
75
|
+
- Commit to a position. Do not hedge in clusters (`It might be worth considering`) or use false balance (`While X is true, Y is also important`). Recommend, or state the tradeoff.
|
|
76
|
+
|
|
77
|
+
## Frontmatter descriptions
|
|
78
|
+
|
|
79
|
+
When frontmatter carries a short `title` or `description` used for catalog display:
|
|
80
|
+
|
|
81
|
+
- `title`: sentence case, identifies the file uniquely against its siblings in the same catalog. Proper nouns retain their casing. No trailing period.
|
|
82
|
+
- `description`: sentence case, names the specific topics covered so a reader can decide whether to open the file. Lead with concrete subjects, strip filler like "guide to", "overview of", or "documentation about". No trailing period, no leading article (`the`, `a`).
|
|
83
|
+
- Do not mechanically reuse the H1 as the description.
|
|
84
|
+
|
|
85
|
+
## Examples
|
|
86
|
+
|
|
87
|
+
Each pair shows a banned pattern and its fix.
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
Bad: The configuration file serves as the central hub for all build settings.
|
|
91
|
+
Good: Configuration lives in `vite.config.ts`.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
Bad: In order to configure the server, you'll need to ensure that the port is set.
|
|
96
|
+
Good: Set `port` in the server config.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
Bad: It's not just a cache. It's a system for intelligent memory management.
|
|
101
|
+
Good: The cache is an LRU store. It evicts the least-recently-used entry when full.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
Bad: Leveraging the retry mechanism, developers can build more resilient integrations.
|
|
106
|
+
Good: Use the `retry` option for failed webhooks. Set `maxRetries` to 3.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
Bad: It might be worth considering whether to enable caching.
|
|
111
|
+
Good: Enable caching for read-heavy endpoints. Skip it for writes.
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
Bad: See [.claude/context/retrieval.md](.claude/context/retrieval.md) for the retrieval flow.
|
|
116
|
+
Good: See `.claude/context/retrieval.md` for the retrieval flow.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
Bad: Read [docs/development.md](docs/development.md) before contributing.
|
|
121
|
+
Good: Read the [development guide](docs/development.md) before contributing.
|
|
122
|
+
```
|