haac-aikit 0.12.0 → 0.14.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/README.md +17 -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/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/{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/dist/cli.mjs +199 -111
- 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/software-architect.md +0 -42
package/README.md
CHANGED
|
@@ -27,9 +27,24 @@ aikit add --html
|
|
|
27
27
|
| **`/decide`** | Picking between 2-4 technical options | `docs/decisions/<date>-<slug>.html` |
|
|
28
28
|
| **`/directions`** | Exploring visual design variants | `docs/directions/<date>-<slug>.html` |
|
|
29
29
|
| **`/roadmap`** | Handing an implementation plan to an implementer | `docs/roadmaps/<date>-<slug>.html` |
|
|
30
|
+
| **`/design`** *(opt-in: `aikit add design`)* | Codifying the project's design language as a contract | `DESIGN.md` + `docs/design/index.html` |
|
|
30
31
|
|
|
31
32
|
Each command writes one self-contained HTML file — no build step, no CDN, commit and share the link. Built on [Thariq Shihipar's "Unreasonable Effectiveness of HTML for Claude Code"](https://thariqs.github.io/html-effectiveness/).
|
|
32
33
|
|
|
34
|
+
### Does `/design` actually help?
|
|
35
|
+
|
|
36
|
+
We ran the same four prompts twice — once with the skill installed, once freestyle. Same model, same inputs.
|
|
37
|
+
|
|
38
|
+
| The ask | With `/design` | Without |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| "Read my homepage HTML, build a DESIGN.md" | **86%** | 71% |
|
|
41
|
+
| "Just synthesize one — here's the vibe" | **86%** | 43% |
|
|
42
|
+
| "Tweak the primary color, leave the rest alone" | 100% | 100% |
|
|
43
|
+
| "Build it from this screenshot" | **100%** | 57% |
|
|
44
|
+
| **Average across all four** | **93%** | 68% |
|
|
45
|
+
|
|
46
|
+
**+25 points on average.** The freestyle AI usually misses three things: marker-bounded sections (so `/design refine` can't surgically update later), hex codes inside backticks (the showroom's color pickers can't bind to them), and parts of the brief — "no gray" turned into five shades of gray. `/design` bakes all three in.
|
|
47
|
+
|
|
33
48
|
## What else you get
|
|
34
49
|
|
|
35
50
|
- **Cross-tool fan-out.** Skills, agents, hooks, and MCP servers fan out per selected tool in its native format. Pick `--tools=cursor` and get `.cursor/rules/` + `.cursor/hooks.json` + `.cursor/mcp.json`. Pick `--tools=codex` and get `.codex/agents/*.toml` + `.codex/config.toml` with MCP servers.
|
|
@@ -54,6 +69,8 @@ Full reference: `aikit --help`. Detailed audit per tool: [`AUDIT.md`](AUDIT.md).
|
|
|
54
69
|
|
|
55
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.
|
|
56
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
|
+
|
|
57
74
|
- Site: <https://hamad-center.github.io/haac-aikit/>
|
|
58
75
|
- Try / discuss: [issue #1](https://github.com/Hamad-Center/haac-aikit/issues/1)
|
|
59
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,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
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: directions
|
|
3
|
-
description: Use when the user
|
|
3
|
+
description: Use when the user types "/directions <surface>", "show me design directions for X", or "explore visual options for the empty state / hero / dashboard card" — 2-4 rendered visual takes side-by-side on one self-contained HTML page with a light/dark toggle. Output: `docs/directions/YYYY-MM-DD-<slug>.html`. Opt-in only.
|
|
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
|