haac-aikit 0.13.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +2 -0
  2. package/catalog/agents/tier1/orchestrator.md +17 -10
  3. package/catalog/agents/tier1/pr-describer.md +3 -1
  4. package/catalog/agents/tier2/backend.md +7 -3
  5. package/catalog/agents/tier2/frontend.md +8 -4
  6. package/catalog/agents/tier2/mobile.md +9 -5
  7. package/catalog/commands/commit-push-pr.md +15 -9
  8. package/catalog/commands/commit.md +6 -16
  9. package/catalog/commands/decide.md +5 -14
  10. package/catalog/commands/design.md +26 -38
  11. package/catalog/commands/directions.md +6 -19
  12. package/catalog/commands/docs.md +6 -14
  13. package/catalog/commands/roadmap.md +10 -21
  14. package/catalog/commands/security-review.md +10 -29
  15. package/catalog/commands/ship.md +17 -11
  16. package/catalog/skills/tier1/{brainstorming.md → brainstorming/SKILL.md} +3 -1
  17. package/catalog/skills/tier1/{codebase-exploration.md → codebase-exploration/SKILL.md} +15 -3
  18. package/catalog/skills/tier1/{decide.md → decide/SKILL.md} +6 -1
  19. package/catalog/skills/tier1/{directions.md → directions/SKILL.md} +6 -1
  20. package/catalog/skills/tier1/docs/SKILL.md +180 -0
  21. package/catalog/skills/tier1/{executing-plans.md → executing-plans/SKILL.md} +16 -5
  22. package/catalog/skills/tier1/requesting-code-review/SKILL.md +51 -0
  23. package/catalog/skills/tier1/{roadmap.md → roadmap/SKILL.md} +7 -2
  24. package/catalog/skills/tier1/{systematic-debugging.md → systematic-debugging/SKILL.md} +7 -1
  25. package/catalog/skills/tier1/{test-driven-development.md → test-driven-development/SKILL.md} +14 -1
  26. package/catalog/skills/tier1/{using-git-worktrees.md → using-git-worktrees/SKILL.md} +13 -4
  27. package/catalog/skills/tier1/verification-before-completion/SKILL.md +57 -0
  28. package/catalog/skills/tier1/writing-commits/SKILL.md +61 -0
  29. package/catalog/skills/tier1/writing-plans/SKILL.md +49 -0
  30. package/catalog/skills/tier2/{api-design.md → api-design/SKILL.md} +7 -1
  31. package/catalog/skills/tier2/{dependency-hygiene.md → dependency-hygiene/SKILL.md} +17 -1
  32. package/catalog/skills/tier2/design/SKILL.md +123 -0
  33. package/catalog/skills/tier2/{dispatching-parallel-agents.md → dispatching-parallel-agents/SKILL.md} +11 -2
  34. package/catalog/skills/tier2/{finishing-a-development-branch.md → finishing-a-development-branch/SKILL.md} +10 -1
  35. package/catalog/skills/tier2/{incident-response.md → incident-response/SKILL.md} +8 -1
  36. package/catalog/skills/tier2/{performance-profiling.md → performance-profiling/SKILL.md} +8 -1
  37. package/catalog/skills/tier2/{receiving-code-review.md → receiving-code-review/SKILL.md} +7 -3
  38. package/catalog/skills/tier2/{refactoring-simplify.md → refactoring-simplify/SKILL.md} +13 -6
  39. package/catalog/skills/tier2/{security-review.md → security-review/SKILL.md} +14 -1
  40. package/catalog/skills/tier2/software-architect/SKILL.md +75 -0
  41. package/catalog/skills/tier2/spec-kit/SKILL.md +117 -0
  42. package/catalog/skills/tier2/spec-kit/references/constitution.md +160 -0
  43. package/catalog/skills/tier2/spec-kit/references/examples/mission.md +26 -0
  44. package/catalog/skills/tier2/spec-kit/references/examples/plan.md +50 -0
  45. package/catalog/skills/tier2/spec-kit/references/examples/requirements.md +53 -0
  46. package/catalog/skills/tier2/spec-kit/references/examples/roadmap.md +45 -0
  47. package/catalog/skills/tier2/spec-kit/references/examples/tech-stack.md +38 -0
  48. package/catalog/skills/tier2/spec-kit/references/examples/validation.md +38 -0
  49. package/catalog/skills/tier2/spec-kit/references/feature-spec.md +217 -0
  50. package/catalog/skills/tier2/{writing-pull-requests.md → writing-pull-requests/SKILL.md} +15 -2
  51. package/catalog/templates/design/starter-DESIGN.md +65 -53
  52. package/catalog/templates/design/template.html +437 -605
  53. package/dist/cli.mjs +216 -124
  54. package/dist/cli.mjs.map +1 -1
  55. package/package.json +1 -1
  56. package/catalog/skills/tier1/docs.md +0 -81
  57. package/catalog/skills/tier1/requesting-code-review.md +0 -37
  58. package/catalog/skills/tier1/verification-before-completion.md +0 -46
  59. package/catalog/skills/tier1/writing-commits.md +0 -52
  60. package/catalog/skills/tier1/writing-plans.md +0 -42
  61. package/catalog/skills/tier2/design.md +0 -108
  62. package/catalog/skills/tier2/software-architect.md +0 -42
package/README.md CHANGED
@@ -69,6 +69,8 @@ Full reference: `aikit --help`. Detailed audit per tool: [`AUDIT.md`](AUDIT.md).
69
69
 
70
70
  Pre-1.0. Expect breaking changes between minor versions. **0.12.0** ships with cross-tool parity for 6 of 7 tools (Aider has no native rule loader; we ship a skills index in `CONVENTIONS.md` instead). All blockers from the [pre-publish audit](audits/) have been fixed.
71
71
 
72
+ > **Heads up (0.14.0):** skills migrated to folder format — `.claude/skills/<name>/SKILL.md` instead of `.claude/skills/<name>.md`. Re-run `aikit sync` after upgrading; see [CHANGELOG](CHANGELOG.md#0140---2026-05-16) for migration notes.
73
+
72
74
  - Site: <https://hamad-center.github.io/haac-aikit/>
73
75
  - Try / discuss: [issue #1](https://github.com/Hamad-Center/haac-aikit/issues/1)
74
76
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: orchestrator
3
- description: Decomposes complex tasks into sub-tasks and dispatches specialist agents. Pure coordinator — never writes implementation code directly. Use when a task spans multiple concerns or could benefit from parallel execution.
3
+ description: Use proactively when a task spans backend, frontend, and/or mobile concerns, or when sub-tasks can run in parallel. Pure coordinator — never writes implementation code. Delegates to the backend / frontend / mobile / pr-describer subagents (via the Task tool) and synthesises their results.
4
4
  model: claude-sonnet-4-6
5
5
  tools:
6
- - Agent
6
+ - Task
7
7
  - Read
8
8
  ---
9
9
 
@@ -11,6 +11,8 @@ tools:
11
11
 
12
12
  You are a pure dispatcher. Your role is to decompose tasks, assign them to the right specialist agents, and synthesise their results. You do not write implementation code yourself.
13
13
 
14
+ You are **read-only** and have **no memory** of the parent conversation. The parent must brief you with: the user's goal, the relevant file paths, and any constraints. If the brief is missing context, return `Status: NEEDS_CONTEXT` with a specific list of what you need — do not guess.
15
+
14
16
  ## When you are invoked
15
17
 
16
18
  A task too large or complex for a single agent has been handed to you.
@@ -25,13 +27,18 @@ A task too large or complex for a single agent has been handed to you.
25
27
  - Mark sequential vs. parallel dependencies
26
28
 
27
29
  3. **Assign to specialists** (one task at a time, sequentially unless genuinely parallel):
28
- - `planner` — needs an implementation plan
29
- - `researcher` — needs codebase or web research
30
- - `implementer` — needs code written
31
- - `reviewer` — needs a review
32
- - `tester` — needs tests written or run
33
- - `security-auditor` needs a security sweep
34
- - `devops` needs CI/CD, Docker, or deploy config
30
+ - `backend` — server-side work: APIs, DB schemas, auth, queues, integrations *(tier2, opt-in)*
31
+ - `frontend` — UI components, CSS, accessibility, browser performance *(tier2, opt-in)*
32
+ - `mobile` — React Native / Flutter, platform-specific work *(tier2, opt-in)*
33
+ - `pr-describer` — diff PR title + Summary + Test plan *(always installed)*
34
+
35
+ **Specialist availability is not guaranteed.** `backend`, `frontend`, and `mobile` are tier2 and may not be installed in this project. Before dispatching, check that the agent exists by inspecting `.claude/agents/` (Read or LS). If the specialist isn't installed, either:
36
+ (a) dispatch the **general-purpose** agent with the same brief, or
37
+ (b) return `Status: NEEDS_CONTEXT` asking the user to run `aikit add <agent>` for the missing specialist.
38
+
39
+ For research, planning, review, testing, security sweeps, and CI work, the parent should invoke the matching **skill** directly rather than dispatching a subagent — see `codebase-exploration`, `writing-plans`, `requesting-code-review`, `test-driven-development`, `security-review`, `dependency-hygiene`.
40
+
41
+ For genuinely concurrent dispatches, follow the `dispatching-parallel-agents` skill — issue multiple `Task` calls in one message.
35
42
 
36
43
  4. **Brief each agent fully**: include file paths, relevant context, expected output format, and any constraints. The agent has no memory of this conversation.
37
44
 
@@ -48,6 +55,6 @@ Status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
48
55
  ```
49
56
 
50
57
  ## Rules
51
- - Do not write code. If you find yourself writing implementation, stop and dispatch an implementer.
58
+ - Do not write code. If you find yourself writing implementation, stop and dispatch the matching specialist (`backend`, `frontend`, or `mobile`).
52
59
  - Do not dispatch agents for trivial tasks (a single file read, a one-line change). Handle those yourself.
53
60
  - If sub-tasks are sequential, do not send them in parallel.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pr-describer
3
- description: Reads `git diff` against the base branch and writes a conventional-commit-styled PR title (≤70 chars) and a Summary + Test Plan body. Use this when opening a PR; use `changelog-curator` for release notes across multiple commits.
3
+ description: Reads `git diff` against the base branch and writes a conventional-commit-styled PR title (≤70 chars) and a Summary + Test Plan body. Use this when opening a PR. For multi-commit release notes, invoke the `writing-pull-requests` skill with explicit version scope rather than this agent.
4
4
  model: claude-haiku-4-5
5
5
  tools:
6
6
  - Read
@@ -11,6 +11,8 @@ tools:
11
11
 
12
12
  You turn diffs into PR descriptions. You do not edit code.
13
13
 
14
+ You are **read-only** on the repo and have **no memory** of the parent conversation. Output is the PR title + body only — you do **not** run `gh pr create`. The caller does that. Brief yourself from the diff and `git log` output; if the dispatch message doesn't say which base branch to compare against, auto-detect via `git symbolic-ref refs/remotes/origin/HEAD`.
15
+
14
16
  ## When you are invoked
15
17
 
16
18
  The user is about to open a PR and needs a title + body.
@@ -15,6 +15,10 @@ tools:
15
15
 
16
16
  You are a backend specialist. You focus on correctness, data consistency, performance, and security in server-side systems.
17
17
 
18
+ You are **write-capable** (Edit / Write / Bash) and have **no memory** of the parent conversation. Brief yourself from the file paths the caller provides. Before returning `Status: DONE`, run the project's test suite and report pass/fail. If the brief is missing context, return `Status: NEEDS_CONTEXT` with a specific list of what you need.
19
+
20
+ See also: `api-design`, `dependency-hygiene`, `security-review`, `test-driven-development`.
21
+
18
22
  ## Domain expertise
19
23
 
20
24
  - **APIs**: REST, GraphQL, tRPC — endpoint design, versioning, validation
@@ -41,9 +45,9 @@ You are a backend specialist. You focus on correctness, data consistency, perfor
41
45
  ## Handoff format
42
46
 
43
47
  ```
44
- [backend] → [reviewer | tester | orchestrator]
48
+ [backend] → [orchestrator | user]
45
49
  Summary: [what was built/changed]
46
50
  Artifacts: [files modified, migrations written]
47
- Next: [review / test / migrate]
48
- Status: DONE | DONE_WITH_CONCERNS
51
+ Next: run the project's test suite (npm test / pytest / cargo test) / apply migration / hand back to orchestrator
52
+ Status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
49
53
  ```
@@ -15,6 +15,10 @@ tools:
15
15
 
16
16
  You are a frontend specialist. You focus on UI components, accessibility, performance, and browser-specific behaviour.
17
17
 
18
+ You are **write-capable** (Edit / Write / Bash) and have **no memory** of the parent conversation. Brief yourself from the component / route paths the caller provides. Before returning `Status: DONE`, run the project's test suite and report pass/fail. If the brief is missing context, return `Status: NEEDS_CONTEXT` with a specific list of what you need.
19
+
20
+ See also: `directions`, `decide`, `dependency-hygiene`, `test-driven-development`.
21
+
18
22
  ## Domain expertise
19
23
 
20
24
  - **React/Next.js**: hooks, server/client components, RSC patterns
@@ -29,7 +33,7 @@ You are a frontend specialist. You focus on UI components, accessibility, perfor
29
33
  - Components are presentation-only when possible
30
34
  - Use `const` function components, not class components
31
35
  - No inline styles for anything that can be expressed as a class
32
- - Images: always specify `width` and `height`; use `next/image` or equivalent
36
+ - Images: always specify `width` and `height`; use the framework's image-optimisation primitive (`next/image`, `@astrojs/image`, `nuxt/image`, etc.) — never raw `<img>` for non-decorative content
33
37
 
34
38
  ## When you receive a task
35
39
 
@@ -41,9 +45,9 @@ You are a frontend specialist. You focus on UI components, accessibility, perfor
41
45
  ## Handoff format
42
46
 
43
47
  ```
44
- [frontend] → [reviewer | tester | orchestrator]
48
+ [frontend] → [orchestrator | user]
45
49
  Summary: [what was built/changed]
46
50
  Artifacts: [files modified]
47
- Next: [review / test / deploy]
48
- Status: DONE | DONE_WITH_CONCERNS
51
+ Next: run the project's test suite / visual review / hand back to orchestrator
52
+ Status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
49
53
  ```
@@ -15,6 +15,10 @@ tools:
15
15
 
16
16
  You are a mobile specialist. You focus on platform differences, performance on constrained devices, and the app store submission requirements.
17
17
 
18
+ You are **write-capable** (Edit / Write / Bash) and have **no memory** of the parent conversation. Brief yourself from the platform / module paths the caller provides. Before returning `Status: DONE`, verify the build succeeds on both targets and request the user device-test before sign-off. If the brief is missing context, return `Status: NEEDS_CONTEXT` with a specific list of what you need.
19
+
20
+ See also: `dependency-hygiene`, `test-driven-development`.
21
+
18
22
  ## Domain expertise
19
23
 
20
24
  - **React Native**: navigation, native modules, Expo vs bare workflow
@@ -25,9 +29,9 @@ You are a mobile specialist. You focus on platform differences, performance on c
25
29
 
26
30
  ## Constraints
27
31
 
28
- - Test on both iOS and Android before marking done
32
+ - Verify the build succeeds on both iOS and Android targets; request the user device-test before sign-off
29
33
  - Consider: low-bandwidth network conditions (3G, intermittent)
30
- - Consider: older OS versions (iOS 15+, Android 10+) unless told otherwise
34
+ - Honour the project's declared minimums in `Info.plist` / `build.gradle` never assume baseline OS versions
31
35
  - App store guidelines: no undocumented private API usage
32
36
 
33
37
  ## When you receive a task
@@ -40,9 +44,9 @@ You are a mobile specialist. You focus on platform differences, performance on c
40
44
  ## Handoff format
41
45
 
42
46
  ```
43
- [mobile] → [reviewer | tester | orchestrator]
47
+ [mobile] → [orchestrator | user]
44
48
  Summary: [what was built/changed]
45
49
  Artifacts: [files modified]
46
- Next: [review / test on device / submit]
47
- Status: DONE | DONE_WITH_CONCERNS
50
+ Next: verify build on both targets / request device test / hand back to orchestrator
51
+ Status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
48
52
  ```
@@ -1,10 +1,17 @@
1
1
  Commit all staged changes, push to the current branch, and open a pull request.
2
2
 
3
- 1. Run the `/commit` flow (stage, draft message, commit).
4
- 2. Push: `git push -u origin HEAD`
5
- 3. Open a PR using the writing-pull-requests skill:
6
- - Title: ≤70 chars, Conventional Commits format
7
- - Body: Summary bullets + Test plan checklist
3
+ Uses the `writing-commits` and `writing-pull-requests` skills; gated by `verification-before-completion`. `$ARGUMENTS` may supply the PR title; otherwise draft one from the diff.
4
+
5
+ 0. **Verification gate** invoke the `verification-before-completion` skill. Detect the test command from the project manifest (`package.json` → `npm test` / `pnpm test`, `Cargo.toml` → `cargo test`, `pyproject.toml` → `pytest`, `go.mod` → `go test ./...`). If tests fail, **STOP** and report — do not commit broken code.
6
+
7
+ 1. **Branch guard** — if `git branch --show-current` returns `main` / `master`, refuse and ask the user to create a feature branch first (naming convention: `type/short-description`).
8
+
9
+ 2. **Commit** — run the `/commit` flow (stage, draft message via `writing-commits` skill, commit).
10
+
11
+ 3. **Push** — `git push -u origin HEAD` (no `--force`; if the remote already has commits, stop and surface the conflict).
12
+
13
+ 4. **Open PR** — invoke the `writing-pull-requests` skill. Title is `$ARGUMENTS` if provided, otherwise drafted from the diff (≤70 chars, Conventional Commits format). Body:
14
+
8
15
  ```bash
9
16
  gh pr create --title "type(scope): description" --body "$(cat <<'EOF'
10
17
  ## Summary
@@ -12,10 +19,9 @@ gh pr create --title "type(scope): description" --body "$(cat <<'EOF'
12
19
 
13
20
  ## Test plan
14
21
  - [ ] [how to verify]
15
- - [ ] Full suite passes: `npm test`
16
-
17
- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
22
+ - [ ] Full suite passes: <detected test command>
18
23
  EOF
19
24
  )"
20
25
  ```
21
- 4. Report the PR URL.
26
+
27
+ 5. **Report** the PR URL.
@@ -1,17 +1,7 @@
1
- Stage changed files, draft a Conventional Commits message, and commit using the writing-commits skill.
1
+ Stage changed files and commit using the `writing-commits` skill. `$ARGUMENTS` may supply the commit message; otherwise draft one from the diff.
2
2
 
3
- 1. Run `git status` to see what's changed.
4
- 2. Run `git diff --staged` confirm no secrets, debug logs, or `.env*` files.
5
- 3. Draft the commit message in this format: `type(scope): description` (≤72 chars, imperative mood).
6
- 4. Commit using HEREDOC format:
7
- ```bash
8
- git commit -m "$(cat <<'EOF'
9
- type(scope): description
10
-
11
- [optional body explaining WHY]
12
-
13
- Co-Authored-By: Claude <noreply@anthropic.com>
14
- EOF
15
- )"
16
- ```
17
- 5. Report: commit hash + message.
3
+ 1. Run `git status` + `git diff --staged`; confirm no secrets, debug logs, or `.env*` files.
4
+ 2. Apply `writing-commits` skill rules (Conventional Commits, ≤72 chars, imperative, body explains WHY).
5
+ 3. If the change touches `src/` or `test/`, recommend `verification-before-completion` (run the project's test command) before committing.
6
+ 4. Commit via HEREDOC; co-author = current Claude model name.
7
+ 5. Report commit hash + message.
@@ -1,24 +1,15 @@
1
1
  Generate a single rich HTML decision page using the `decide` skill.
2
2
 
3
3
  ## Usage
4
- `/decide <topic>`
4
+ `/decide $ARGUMENTS`
5
5
 
6
- Example: `/decide auth strategy: session cookies vs JWT vs Clerk`.
6
+ `$ARGUMENTS` is the decision topic + options (e.g. `auth strategy: session cookies vs JWT vs Clerk`).
7
7
 
8
8
  ## Steps
9
-
10
9
  1. **Confirm the options** with the user before writing. Say back: *"Decision page on `<topic>` with options `A`, `B`, `C` — okay? My pick will be `<X>` because `<one-sentence reason>`."* Wait for yes.
11
-
12
- 2. **Read the template** at `.aikit/templates/decide/template.html`. Copy its structure verbatim design tokens, layout grid, callout patterns, voice + a11y conventions.
13
-
14
- 3. **Gather concrete inputs** for each option: real cost numbers, real performance figures, real code snippets if relevant. Don't fill cards with hand-waved pros/cons — use facts.
15
-
16
- 4. **Apply the voice rule** when writing prose: plain-language verb + concrete object, jargon in `<code>` chips not the reading path. Explain the technical bit like the reader is 15.
17
-
18
- 5. **Write the file** to `docs/decisions/YYYY-MM-DD-<slug>.html` (today's date, kebab-case slug).
19
-
20
- 6. **Report.** Print the file path and suggest `open docs/decisions/YYYY-MM-DD-<slug>.html` (macOS) / `xdg-open` (Linux).
10
+ 2. **Invoke the `decide` skill** — it loads `.aikit/templates/decide/template.html`, design tokens, voice rules, and a11y baseline.
11
+ 3. **Write** to `docs/decisions/YYYY-MM-DD-<slug>.html` (use `date +%Y-%m-%d` for local-zone date).
12
+ 4. **Report** the file path; suggest `open` (macOS) / `xdg-open` (Linux).
21
13
 
22
14
  ## Fallback
23
-
24
15
  If `.aikit/templates/decide/template.html` is missing, run `aikit sync` first.
@@ -1,44 +1,32 @@
1
- Codify the project's visual language as a `DESIGN.md` contract + interactive HTML showroom using the `design` skill.
1
+ Codify the project's visual language as a marker-bounded `DESIGN.md` and render an interactive HTML showroom, using the `design` skill.
2
2
 
3
3
  ## Usage
4
4
 
5
- `/design` — bootstrap `DESIGN.md` at the project root (asks for screenshot / HTML / URL / brief).
6
- `/design refine <change>` — update one marker-bounded section without touching the rest.
7
-
8
- Example:
9
- - `/design` AI asks for input, then writes `DESIGN.md` + `docs/design/index.html`.
10
- - `/design refine make primary brighter, around #FF8800` → AI touches only the `colors` section.
11
-
12
- ## Steps — bootstrap (`/design`)
13
-
14
- 1. **Ask which input the user has.** Screenshot, HTML paste/path, live URL, or pure design brief. Wait for an answer.
15
-
16
- 2. **Read the starter** at `.aikit/templates/design/starter-DESIGN.md`. It already has the 5 marker-bounded sections in the right shape.
17
-
18
- 3. **Fill each section** from the user's input. Use the skill's voice rules — descriptive natural language + precise hex codes in `code` ticks, physical descriptions over Tailwind jargon, value + functional role together.
19
-
20
- 4. **Confirm before writing.** One sentence in chat: *"I'll write `DESIGN.md` at the project root and render the showroom at `docs/design/index.html`. Okay?"* Wait for explicit yes.
21
-
22
- 5. **Write `DESIGN.md`** at the project root with stable BEGIN/END markers around each of the 5 sections (`atmosphere`, `colors`, `typography`, `components`, `layout`).
23
-
24
- 6. **Render the showroom.** Read `.aikit/templates/design/template.html`, substitute the project's tokens into `--project-*` CSS custom properties and the `data-aikit-section="<id>"` content blocks, and write to `docs/design/index.html`.
25
-
26
- 7. **Report.** Print both file paths. Suggest `open docs/design/index.html` (macOS) / `xdg-open` (Linux).
27
-
28
- ## Steps refine (`/design refine <change>`)
29
-
30
- 1. **Pick exactly one section.** From `<change>`, identify which of the 5 section IDs it affects. If it spans more than one, ask which to start with.
31
-
32
- 2. **Read only that section** via `readSection(content, "<id>", "DESIGN.md")` from `src/render/markers` — never load the whole file.
33
-
34
- 3. **Propose the rewrite** in chat: show the new section body. Wait for yes.
35
-
36
- 4. **Write through the marker engine.** `writeSection(content, "<id>", newBody, "DESIGN.md")`. Anything outside the markers is preserved verbatim.
37
-
38
- 5. **Regenerate the showroom** from the updated `DESIGN.md`.
39
-
40
- 6. **Report.** Print the section ID that changed and the two file paths.
5
+ `/design $ARGUMENTS`
6
+
7
+ - **No args** → bootstrap mode. Look at the conversation context for input: a pasted screenshot, an HTML paste, a URL, or a verbal brief. If multiple input modes are present, ask which to use. Creates `DESIGN.md` at the project root and the showroom at `docs/design/index.html`.
8
+ - **`refine "<change>"`** → surgical edit mode. Identify which of the five sections (`atmosphere`, `colors`, `typography`, `components`, `layout`) the change belongs to, then update only that section via the marker engine. Examples:
9
+ - `/design refine "muted accent, like #C2664D"` updates `colors`
10
+ - `/design refine "switch headlines to a slab serif"` → updates `typography`
11
+ - `/design refine "tighter 600px content column"` → updates `layout`
12
+
13
+ ## Steps
14
+
15
+ 1. **Detect mode.** If args start with `refine`, route to refine. Otherwise bootstrap.
16
+ 2. **Invoke the `design` skill** it owns the voice rules, section structure, and marker engine wiring.
17
+ 3. **For bootstrap:**
18
+ - Confirm input mode (screenshot, HTML, URL, brief) before writing.
19
+ - Copy `.aikit/templates/design/starter-DESIGN.md` to `DESIGN.md` at project root.
20
+ - Fill each of the five sections via `writeSection` from `src/render/markers.ts`, respecting voice rules (hex codes in `code` ticks; descriptive language; no Tailwind jargon).
21
+ - Copy `.aikit/templates/design/template.html` to `docs/design/index.html`.
22
+ - Report both paths.
23
+ 4. **For refine:**
24
+ - Read the targeted section with `readSection(content, "<id>", "DESIGN.md")`.
25
+ - Synthesize the new body; apply voice rules.
26
+ - Write back with `writeSection`. Do not touch the other four sections.
27
+ - Confirm which section changed; report the diff.
28
+ 5. **Refuse cleanly** if `DESIGN.md` exists but has no markers (offer to re-bootstrap with `AskUserQuestion`), or if refine is called and no `DESIGN.md` exists yet.
41
29
 
42
30
  ## Fallback
43
31
 
44
- If `.aikit/templates/design/template.html` or `.aikit/templates/design/starter-DESIGN.md` is missing, run `aikit add design` first. The skill refuses to scaffold without the template.
32
+ If `.aikit/templates/design/` is missing (project synced before this kit version), run `aikit add design` to install companion artifacts, or `aikit sync` if the skill is already opted in.
@@ -1,29 +1,16 @@
1
1
  Render 2-4 visual design directions on a single self-contained HTML page using the `directions` skill.
2
2
 
3
3
  ## Usage
4
- `/directions <surface>`
4
+ `/directions $ARGUMENTS`
5
5
 
6
- Examples:
7
- - `/directions empty state for the projects view`
8
- - `/directions hero section for the marketing landing`
9
- - `/directions dashboard card — three density options`
6
+ `$ARGUMENTS` is the surface to design (e.g. `empty state for the projects view`, `hero section for the marketing landing`).
10
7
 
11
8
  ## Steps
12
-
13
9
  1. **Confirm the brief** with the user before writing. Say back: *"Directions page for `<surface>` with `<N>` variants emphasizing `<axes>` (e.g. minimal · illustrated · instructional). I'll render each live on light and dark stages. Okay?"* Wait for yes.
14
-
15
- 2. **Read the template** at `.aikit/templates/directions/template.html`. Copy its structure verbatimdesign tokens, sticky toolbar, artboard grid, light/dark stage flip.
16
-
17
- 3. **Pick variants that differ in strategy, not detail.** Each direction should have a one-word personality (`Minimal`, `Illustrated`, `Playful`, `Instructional`, `Editorial`, `Technical`). A 1px font tweak isn't a direction.
18
-
19
- 4. **Render, don't describe.** Each variant's stage must contain real HTML/CSS that actually displays the design. A wall of bullet points describing the variant defeats the skill.
20
-
21
- 5. **Use the user's domain language.** Real copy ("New task", "No projects yet"), not lorem ipsum.
22
-
23
- 6. **Write the file** to `docs/directions/YYYY-MM-DD-<slug>.html` (today's date, kebab-case slug from the surface).
24
-
25
- 7. **Report.** Print the file path and suggest `open docs/directions/YYYY-MM-DD-<slug>.html` (macOS) / `xdg-open` (Linux). One-sentence summary of what each variant emphasizes.
10
+ 2. **Invoke the `directions` skill** — it owns template loading, the one-word personality vocabulary, the variant-strategy rules, and the domain-language requirement.
11
+ 3. **Preserve dark-mode tokens.** The template ships light + dark CSS do not strip the `:where(:root[data-theme="dark"])` rules.
12
+ 4. **Write** to `docs/directions/YYYY-MM-DD-<slug>.html` (use `date +%Y-%m-%d` for local-zone date).
13
+ 5. **Report** the file path + one-sentence summary of what each variant emphasizes.
26
14
 
27
15
  ## Fallback
28
-
29
16
  If `.aikit/templates/directions/template.html` is missing, run `aikit sync` first.
@@ -1,27 +1,19 @@
1
1
  Update the project's HTML documentation in `docs/` using the `docs` skill.
2
2
 
3
3
  ## Usage
4
- `/docs [optional intent]`
4
+ `/docs $ARGUMENTS`
5
5
 
6
- With args: use them as the change to document (e.g. `/docs the new auth refresh flow`).
7
- Without args: infer from the last 5-10 turns of conversation what's worth documenting.
6
+ `$ARGUMENTS` is the change to document (e.g. `the new auth refresh flow`). Without args, infer from the last 5-10 turns of conversation.
8
7
 
9
8
  ## Steps
10
-
11
9
  1. **Decide what changed.** Identify (a) the doc file (`docs/<slug>.html`) and (b) the section id inside it (`overview`, `flow`, `gotchas`, etc). If no doc fits, propose creating one.
12
-
13
- 2. **Read only the affected section.** Use `readSection(content, id, filePath)` from `src/render/markers` — never load the whole file.
14
-
10
+ 2. **Invoke the `docs` skill** — it owns the section-scoped read/write helpers, theme prompts, diagram taxonomy, and starter-template fallback.
15
11
  3. **Propose before writing.** One sentence in chat:
16
12
  > *"I'll update `<section>` in `docs/<file>.html` to reflect <change>. Okay?"*
17
13
  Wait for explicit yes. No silent edits.
18
-
19
- 4. **Write through the marker engine.** `writeSection` to replace, `appendSection` for new sections. Anything outside markers is preserved verbatim.
20
-
21
- 5. **Update `docs/index.html`** if you created a new doc or materially changed an existing one — refresh the matching `summary-<slug>` section.
22
-
23
- 6. **Report.** Print the modified file paths and one-line summary of what changed.
14
+ 4. **Write through the marker engine** — anything outside `<!-- BEGIN:haac-aikit:section:<id> -->` markers is preserved verbatim.
15
+ 5. **Update `docs/index.html`** if you changed any `summary-<slug>` section content or created a new `docs/<slug>.html` file.
16
+ 6. **Report** modified file paths + one-line summary of what changed.
24
17
 
25
18
  ## Fallback
26
-
27
19
  If `.aikit/templates/docs/starter.html` is missing (project synced before this kit version), run `aikit sync` first.
@@ -1,31 +1,20 @@
1
1
  Generate a thorough single-page implementation roadmap as HTML using the `roadmap` skill.
2
2
 
3
3
  ## Usage
4
- `/roadmap <feature>`
4
+ `/roadmap $ARGUMENTS`
5
5
 
6
- Examples:
7
- - `/roadmap comment threads on task cards`
8
- - `/roadmap migrate session store from cookies to Redis`
9
- - `/roadmap add real-time presence to the editor`
6
+ `$ARGUMENTS` is the feature (e.g. `comment threads on task cards`, `migrate session store from cookies to Redis`).
10
7
 
11
8
  ## Steps
12
-
13
- 1. **Confirm the shape** with the user before writing. Say back: *"Roadmap for `<feature>`. I'll lay out ~`<N>` milestones, a data-flow diagram, mockups of `<surfaces>`, code for the migration and the `<key piece>`, and a risk table. Anything I should change before I write?"* Wait for yes.
14
-
15
- 2. **Read the template** at `.aikit/templates/roadmap/template.html`. Copy its structure verbatim — design tokens, summary strip, milestone timeline, SVG diagram pattern, mockup grid, code panel, risk table, open-questions callouts.
16
-
9
+ 1. **Confirm the shape** with the user before writing. Say back:
10
+ - *Roadmap for `<feature>`.*
11
+ - *I'll lay out `~<N>` milestones, a data-flow diagram, mockups of `<surfaces>`, code for the migration and the `<key piece>`, and a risk table.*
12
+ - *Anything to change before I write?*
13
+ Wait for yes.
14
+ 2. **Invoke the `roadmap` skill** — it owns template loading, the eight-section structure, mockup-as-HTML rules, code-block sizing, and open-questions enforcement.
17
15
  3. **Gather concrete inputs**: real package/file names, real effort estimates, real risks. If you don't know a number, ask — don't invent one.
18
-
19
- 4. **Render mockups as HTML**, not screenshots. Use the project's real domain language and component names.
20
-
21
- 5. **Code blocks are illustrative.** 15-30 lines of the load-bearing logic per block (migration + the optimistic mutation, say). Don't dump entire files.
22
-
23
- 6. **Every roadmap needs at least one open question.** If you genuinely can't think of one, state explicitly *why* the design is fully settled in a one-sentence aside.
24
-
25
- 7. **Write the file** to `docs/roadmaps/YYYY-MM-DD-<slug>.html` (today's date, kebab-case slug from the feature).
26
-
27
- 8. **Report.** Print the file path and suggest `open docs/roadmaps/YYYY-MM-DD-<slug>.html` (macOS) / `xdg-open` (Linux). One-sentence summary of milestone count, surfaces touched, and severity-high risks.
16
+ 4. **Write** to `docs/roadmaps/YYYY-MM-DD-<slug>.html` (use `date +%Y-%m-%d` for local-zone date).
17
+ 5. **Report** the file path + one-sentence summary of milestone count, surfaces touched, and severity-high risks.
28
18
 
29
19
  ## Fallback
30
-
31
20
  If `.aikit/templates/roadmap/template.html` is missing, run `aikit sync` first.
@@ -1,33 +1,14 @@
1
- Run an OWASP-aligned security sweep using the security-review skill.
1
+ Run an OWASP-aligned security sweep using the `security-review` skill.
2
2
 
3
- Check the recent changes (or the specified scope) for:
3
+ ## Usage
4
+ `/security-review $ARGUMENTS`
4
5
 
5
- **Injection (A03)**
6
- - SQL queries use parameterised statements — no string concatenation
7
- - Shell commands use execFile with arg arrays — no user data in shell strings
8
- - Template rendering sanitises HTML output
6
+ `$ARGUMENTS` is the scope (file path / glob) if provided, otherwise the diff vs the merge base.
9
7
 
10
- **Auth & session (A07)**
11
- - Tokens not in logs or error responses
12
- - Session IDs regenerated on privilege escalation
8
+ ## Steps
9
+ 1. Invoke the `security-review` skill it owns the OWASP A01/A02/A03/A06/A07 checklist, severity mapping, and ✓/⚠/✗ report format.
10
+ 2. For supply-chain findings (A06), defer to the `dependency-hygiene` skill rather than duplicating the rule here.
11
+ 3. Report the ✓/⚠/✗ summary. Any ✗ (critical) is a blocker for `/ship` and `/commit-push-pr`.
13
12
 
14
- **Sensitive data (A02)**
15
- - No hardcoded secrets, API keys, or credentials
16
- - Env vars validated at startup
17
- - No sensitive fields in console.log output
18
-
19
- **Access control (A01)**
20
- - Every route checks authorisation, not just authentication
21
- - Resource ownership verified
22
-
23
- **Supply chain (A06)**
24
- - No new dependencies without hygiene check
25
- - `npm audit` passes
26
-
27
- Output:
28
- ```
29
- Security sweep: [scope]
30
- ✓ No issues in [category]
31
- ⚠ [category]: [finding] at [file:line] — [fix]
32
- ✗ [critical] — MUST fix before merge
33
- ```
13
+ ## Note
14
+ This command is the dispatch shim. The full checklist lives in the skill so the two cannot drift.
@@ -1,21 +1,27 @@
1
- Run the full release checklist before tagging a release.
1
+ Run the full release checklist before tagging a release. `$ARGUMENTS` is the version tag (e.g. `v1.2.3`); prompt if missing.
2
2
 
3
- 1. **Tests**: `npm test` all pass, 0 failures.
4
- 2. **Types**: `tsc --noEmit` — clean.
5
- 3. **Lint**: `npm run lint` — clean.
6
- 4. **Security sweep**: run the `/security-review` command on changed files.
3
+ 0. **Verification gate** — invoke the `verification-before-completion` skill. It sets the bar that every numbered step below must clear.
4
+
5
+ 1. **Tests**: project test command — all pass, 0 failures. (`npm test` / `pnpm test` / `cargo test` / `pytest` / `go test ./...` detect from manifest.)
6
+ 2. **Types**: project typechecker — clean. (`tsc --noEmit` / `mypy` / `cargo check`.)
7
+ 3. **Lint**: project linter — clean. (`npm run lint` / `ruff check` / `cargo clippy`.)
8
+ 4. **Security sweep**: run the `/security-review` command on changed files. Any ✗ (critical) **blocks** the ship.
7
9
  5. **Changelog**: confirm CHANGELOG.md or release notes are updated.
8
- 6. **Version bump**: update `package.json` version, commit with `chore(release): vX.Y.Z`.
10
+ 6. **Version bump**: update the project's manifest (`package.json` for npm, `Cargo.toml` for Cargo, `pyproject.toml` for Poetry/PDM, `go.mod` for Go modules). Commit with `chore(release): vX.Y.Z`.
9
11
  7. **Tag**:
10
12
  ```bash
11
- git tag -a vX.Y.Z -m "Release vX.Y.Z"
13
+ git tag -a vX.Y.Z -m "Release vX.Y.Z" # use -s instead of -a if commit.gpgsign=true
12
14
  git push origin vX.Y.Z
13
15
  ```
14
- 8. **Publish** (if npm package):
16
+ 8. **Publish** (matches package manager):
15
17
  ```bash
16
- npm publish --dry-run # inspect first
17
- npm publish
18
+ # npm: npm publish --dry-run && npm publish
19
+ # Cargo: cargo publish --dry-run && cargo publish
20
+ # PyPI: python -m build && twine upload dist/*
21
+ # Go: publishing happens via tag push — step 7 already did it
18
22
  ```
19
23
  9. **Post-release**: create a GitHub release with the changelog entry.
20
24
 
21
- Only mark shipped when all 9 steps are complete.
25
+ 10. **Smoke test**: install the published artifact in a temp dir and verify `--version` matches the tagged version.
26
+
27
+ Only mark shipped when all 10 steps are complete.
@@ -1,9 +1,11 @@
1
1
  ---
2
2
  name: brainstorming
3
- description: Use when a request is ambiguous, has multiple valid approaches, or involves a product/design decision. Clarifies requirements before writing any code or making irreversible changes. Prevents wasted implementation work caused by misunderstood intent.
3
+ description: Use when a request is ambiguous or has multiple valid approaches — phrases like "make this better", "add auth", "refactor this", "clean this up", or any vague ask. Surfaces assumptions and presents 2-3 concrete options before writing code, so you don't burn implementation time on the wrong interpretation.
4
4
  version: "1.0.0"
5
5
  source: obra/superpowers
6
6
  license: MIT
7
+ allowed-tools:
8
+ - AskUserQuestion
7
9
  ---
8
10
 
9
11
  ## When to use
@@ -1,9 +1,16 @@
1
1
  ---
2
2
  name: codebase-exploration
3
- description: Use when starting work in an unfamiliar codebase or module, before editing any code, or when asked to understand how something works. Read-only reconnaissance before any editing prevents breaking changes caused by misunderstood dependencies.
3
+ description: Use when starting work in an unfamiliar codebase or module, or when the user says "how does X work?", "explain this repo", "I'm new here", or "let me understand before touching it". Read-only reconnaissance — entry points, critical path, dependencies, tests — before any edit, so you don't break code you don't understand.
4
4
  version: "1.0.0"
5
5
  source: haac-aikit
6
6
  license: MIT
7
+ allowed-tools:
8
+ - Read
9
+ - Grep
10
+ - Glob
11
+ - Bash(ls:*)
12
+ - Bash(find:*)
13
+ - Bash(rg:*)
7
14
  ---
8
15
 
9
16
  ## When to use
@@ -51,5 +58,10 @@ Understanding:
51
58
  → Ready to proceed / Need to clarify: [question]
52
59
  ```
53
60
 
54
- ## Constraint
55
- No file edits during exploration. If you discover something that needs fixing while exploring, note it but do not fix it yet complete the exploration first.
61
+ ## Anti-patterns
62
+ - **Editing during exploration.** Every fix-while-exploring discovers another unrelated "while I'm here" edit; the exploration never finishes. Note issues, fix them after.
63
+ - **Reading source before tests.** Tests show intent in one screen; source forces you to infer it across many files.
64
+ - **Skipping the dependency map** (who imports this?). Most refactor regressions come from hidden consumers.
65
+ - **Spending >5 minutes on `ls`/`cat` orientation** before naming the specific file you need to touch. Re-scope: explore *to answer a question*, not exhaustively.
66
+
67
+ When exploration ends in a bug, invoke `systematic-debugging`. When it ends in a build task, invoke `writing-plans`.
@@ -1,9 +1,14 @@
1
1
  ---
2
2
  name: decide
3
- description: Use when the user is about to make a non-trivial choice with 2-4 viable options and wants the tradeoffs visualized as a single rich HTML page they can scan, share, and commit to the project's decision log. Generates one self-contained HTML file per decision under `docs/decisions/YYYY-MM-DD-<slug>.html`. Opt-in only — do not invoke without user request.
3
+ description: Use when the user types "/decide <topic>", "use the decide skill", or "make me a decision page on X" — a non-trivial choice with 2-4 viable options that needs tradeoffs visualized as one rich HTML page. Generates a self-contained file at `docs/decisions/YYYY-MM-DD-<slug>.html`. Opt-in: do not invoke proactively.
4
4
  version: "1.0.0"
5
5
  source: haac-aikit
6
6
  license: MIT
7
+ allowed-tools:
8
+ - Read
9
+ - Write
10
+ - Bash(date:*)
11
+ - AskUserQuestion
7
12
  ---
8
13
 
9
14
  ## When to use