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.
- package/README.md +2 -0
- package/catalog/agents/tier1/orchestrator.md +17 -10
- package/catalog/agents/tier1/pr-describer.md +3 -1
- package/catalog/agents/tier2/backend.md +7 -3
- package/catalog/agents/tier2/frontend.md +8 -4
- package/catalog/agents/tier2/mobile.md +9 -5
- package/catalog/commands/commit-push-pr.md +15 -9
- package/catalog/commands/commit.md +6 -16
- package/catalog/commands/decide.md +5 -14
- package/catalog/commands/design.md +26 -38
- package/catalog/commands/directions.md +6 -19
- package/catalog/commands/docs.md +6 -14
- package/catalog/commands/roadmap.md +10 -21
- package/catalog/commands/security-review.md +10 -29
- package/catalog/commands/ship.md +17 -11
- package/catalog/skills/tier1/{brainstorming.md → brainstorming/SKILL.md} +3 -1
- package/catalog/skills/tier1/{codebase-exploration.md → codebase-exploration/SKILL.md} +15 -3
- package/catalog/skills/tier1/{decide.md → decide/SKILL.md} +6 -1
- package/catalog/skills/tier1/{directions.md → directions/SKILL.md} +6 -1
- package/catalog/skills/tier1/docs/SKILL.md +180 -0
- package/catalog/skills/tier1/{executing-plans.md → executing-plans/SKILL.md} +16 -5
- package/catalog/skills/tier1/requesting-code-review/SKILL.md +51 -0
- package/catalog/skills/tier1/{roadmap.md → roadmap/SKILL.md} +7 -2
- package/catalog/skills/tier1/{systematic-debugging.md → systematic-debugging/SKILL.md} +7 -1
- package/catalog/skills/tier1/{test-driven-development.md → test-driven-development/SKILL.md} +14 -1
- package/catalog/skills/tier1/{using-git-worktrees.md → using-git-worktrees/SKILL.md} +13 -4
- package/catalog/skills/tier1/verification-before-completion/SKILL.md +57 -0
- package/catalog/skills/tier1/writing-commits/SKILL.md +61 -0
- package/catalog/skills/tier1/writing-plans/SKILL.md +49 -0
- package/catalog/skills/tier2/{api-design.md → api-design/SKILL.md} +7 -1
- package/catalog/skills/tier2/{dependency-hygiene.md → dependency-hygiene/SKILL.md} +17 -1
- package/catalog/skills/tier2/design/SKILL.md +123 -0
- package/catalog/skills/tier2/{dispatching-parallel-agents.md → dispatching-parallel-agents/SKILL.md} +11 -2
- package/catalog/skills/tier2/{finishing-a-development-branch.md → finishing-a-development-branch/SKILL.md} +10 -1
- package/catalog/skills/tier2/{incident-response.md → incident-response/SKILL.md} +8 -1
- package/catalog/skills/tier2/{performance-profiling.md → performance-profiling/SKILL.md} +8 -1
- package/catalog/skills/tier2/{receiving-code-review.md → receiving-code-review/SKILL.md} +7 -3
- package/catalog/skills/tier2/{refactoring-simplify.md → refactoring-simplify/SKILL.md} +13 -6
- package/catalog/skills/tier2/{security-review.md → security-review/SKILL.md} +14 -1
- package/catalog/skills/tier2/software-architect/SKILL.md +75 -0
- package/catalog/skills/tier2/spec-kit/SKILL.md +117 -0
- package/catalog/skills/tier2/spec-kit/references/constitution.md +160 -0
- package/catalog/skills/tier2/spec-kit/references/examples/mission.md +26 -0
- package/catalog/skills/tier2/spec-kit/references/examples/plan.md +50 -0
- package/catalog/skills/tier2/spec-kit/references/examples/requirements.md +53 -0
- package/catalog/skills/tier2/spec-kit/references/examples/roadmap.md +45 -0
- package/catalog/skills/tier2/spec-kit/references/examples/tech-stack.md +38 -0
- package/catalog/skills/tier2/spec-kit/references/examples/validation.md +38 -0
- package/catalog/skills/tier2/spec-kit/references/feature-spec.md +217 -0
- package/catalog/skills/tier2/{writing-pull-requests.md → writing-pull-requests/SKILL.md} +15 -2
- package/catalog/templates/design/starter-DESIGN.md +65 -53
- package/catalog/templates/design/template.html +437 -605
- package/dist/cli.mjs +216 -124
- package/dist/cli.mjs.map +1 -1
- package/package.json +1 -1
- package/catalog/skills/tier1/docs.md +0 -81
- package/catalog/skills/tier1/requesting-code-review.md +0 -37
- package/catalog/skills/tier1/verification-before-completion.md +0 -46
- package/catalog/skills/tier1/writing-commits.md +0 -52
- package/catalog/skills/tier1/writing-plans.md +0 -42
- package/catalog/skills/tier2/design.md +0 -108
- 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:
|
|
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
|
-
-
|
|
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
|
-
- `
|
|
29
|
-
- `
|
|
30
|
-
- `
|
|
31
|
-
- `
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
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
|
|
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
|
|
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] → [
|
|
48
|
+
[backend] → [orchestrator | user]
|
|
45
49
|
Summary: [what was built/changed]
|
|
46
50
|
Artifacts: [files modified, migrations written]
|
|
47
|
-
Next:
|
|
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`
|
|
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] → [
|
|
48
|
+
[frontend] → [orchestrator | user]
|
|
45
49
|
Summary: [what was built/changed]
|
|
46
50
|
Artifacts: [files modified]
|
|
47
|
-
Next:
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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] → [
|
|
47
|
+
[mobile] → [orchestrator | user]
|
|
44
48
|
Summary: [what was built/changed]
|
|
45
49
|
Artifacts: [files modified]
|
|
46
|
-
Next:
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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:
|
|
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
|
-
|
|
26
|
+
|
|
27
|
+
5. **Report** the PR URL.
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
Stage changed files
|
|
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`
|
|
4
|
-
2.
|
|
5
|
-
3.
|
|
6
|
-
4. Commit
|
|
7
|
-
|
|
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
|
|
4
|
+
`/decide $ARGUMENTS`
|
|
5
5
|
|
|
6
|
-
|
|
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
|
-
|
|
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`
|
|
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
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- `/design
|
|
10
|
-
- `/design refine
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
2. **
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
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
|
|
4
|
+
`/directions $ARGUMENTS`
|
|
5
5
|
|
|
6
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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.
|
package/catalog/commands/docs.md
CHANGED
|
@@ -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
|
|
4
|
+
`/docs $ARGUMENTS`
|
|
5
5
|
|
|
6
|
-
|
|
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
|
-
|
|
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
|
|
4
|
+
`/roadmap $ARGUMENTS`
|
|
5
5
|
|
|
6
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3
|
+
## Usage
|
|
4
|
+
`/security-review $ARGUMENTS`
|
|
4
5
|
|
|
5
|
-
|
|
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
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
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
|
-
|
|
15
|
-
|
|
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.
|
package/catalog/commands/ship.md
CHANGED
|
@@ -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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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`
|
|
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** (
|
|
16
|
+
8. **Publish** (matches package manager):
|
|
15
17
|
```bash
|
|
16
|
-
npm publish --dry-run
|
|
17
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
-
##
|
|
55
|
-
|
|
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
|
|
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
|