@forgeailab/create-spark 0.1.2 → 0.2.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/.claude/skills/architecture-cutline/SKILL.md +96 -0
- package/.claude/skills/board-review/SKILL.md +77 -0
- package/.claude/skills/code-review/SKILL.md +76 -0
- package/.claude/skills/execute-task/SKILL.md +80 -0
- package/.claude/skills/idea-sharpen/SKILL.md +65 -0
- package/.claude/skills/implementation-brief/SKILL.md +87 -0
- package/.claude/skills/mvp-board/SKILL.md +95 -0
- package/.claude/skills/mvp-grill/SKILL.md +60 -0
- package/.claude/skills/mvp-spec/SKILL.md +78 -0
- package/.claude/skills/new-pack/SKILL.md +156 -0
- package/.claude/skills/next-task/SKILL.md +65 -0
- package/.claude/skills/pack-add/SKILL.md +64 -0
- package/.claude/skills/pack-resolve/SKILL.md +67 -0
- package/.claude/skills/parallel-execution/SKILL.md +68 -0
- package/.claude/skills/qa-verify/SKILL.md +77 -0
- package/.claude/skills/risk-check/SKILL.md +88 -0
- package/.claude/skills/sync-board/SKILL.md +76 -0
- package/.claude/skills/ux-theme/SKILL.md +93 -0
- package/.codex/skills/architecture-cutline/SKILL.md +94 -0
- package/.codex/skills/board-review/SKILL.md +75 -0
- package/.codex/skills/code-review/SKILL.md +73 -0
- package/.codex/skills/execute-task/SKILL.md +76 -0
- package/.codex/skills/idea-sharpen/SKILL.md +63 -0
- package/.codex/skills/implementation-brief/SKILL.md +85 -0
- package/.codex/skills/mvp-board/SKILL.md +93 -0
- package/.codex/skills/mvp-grill/SKILL.md +58 -0
- package/.codex/skills/mvp-spec/SKILL.md +76 -0
- package/.codex/skills/new-pack/SKILL.md +153 -0
- package/.codex/skills/next-task/SKILL.md +64 -0
- package/.codex/skills/pack-add/SKILL.md +62 -0
- package/.codex/skills/pack-resolve/SKILL.md +65 -0
- package/.codex/skills/parallel-execution/SKILL.md +66 -0
- package/.codex/skills/qa-verify/SKILL.md +74 -0
- package/.codex/skills/risk-check/SKILL.md +86 -0
- package/.codex/skills/sync-board/SKILL.md +72 -0
- package/.codex/skills/ux-theme/SKILL.md +91 -0
- package/package.json +8 -5
- package/packs/README.md +22 -24
- package/packs/ai-anthropic/files/lib/anthropic.ts +46 -3
- package/packs/ai-anthropic/pack.toml +2 -3
- package/packs/auth-better-auth/files/app/api/auth/[...all]/route.ts +2 -2
- package/packs/auth-better-auth/files/lib/auth.ts +40 -1
- package/packs/auth-better-auth/pack.toml +1 -5
- package/packs/auth-better-auth-pg/files/app/api/auth/[...all]/route.ts +2 -2
- package/packs/auth-better-auth-pg/files/lib/auth.ts +40 -1
- package/packs/auth-better-auth-pg/pack.toml +1 -5
- package/packs/payments-stripe/files/lib/stripe.ts +104 -6
- package/packs/payments-stripe/pack.toml +1 -5
- package/packs/sync-zero/files/components/ZeroProvider.tsx +11 -1
- package/packs/sync-zero/files/lib/zero/client.ts +3 -3
- package/packs/sync-zero/files/lib/zero/schema.ts +15 -2
- package/packs/sync-zero/pack.toml +0 -4
- package/scripts/sync-skills.ts +223 -0
- /package/templates/nextjs/{anvil.config.json → spark.config.json} +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mvp-board
|
|
3
|
+
description: Convert the spec and architecture into an executable Markdown board of epics and tasks. Use when the user says "build the board", "break this into tasks", "what should I build first?", or after `.ai/product-spec.md` and `.ai/architecture.md` are in place. Do NOT use to update an existing board after code changes — that is `/sync-board`.
|
|
4
|
+
# Generated from .claude/skills/mvp-board/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: mvp-board
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Produce `.ai/board.md` — the cockpit for the whole project. Every task is sized for one Claude Code session, has acceptance criteria, and declares whether it can run in parallel.
|
|
12
|
+
|
|
13
|
+
This is the most important artifact in the system. The board is truth; chat is steering.
|
|
14
|
+
|
|
15
|
+
## Recommended model
|
|
16
|
+
|
|
17
|
+
Opus 4.7 or GPT-5.5.
|
|
18
|
+
|
|
19
|
+
## Inputs
|
|
20
|
+
|
|
21
|
+
Read these (required):
|
|
22
|
+
|
|
23
|
+
- `.ai/product-spec.md`
|
|
24
|
+
- `.ai/architecture.md`
|
|
25
|
+
|
|
26
|
+
Read if they exist:
|
|
27
|
+
|
|
28
|
+
- `.ai/ux-theme.md`
|
|
29
|
+
- `.ai/decision-log.md`
|
|
30
|
+
|
|
31
|
+
If spec or architecture is missing, stop and tell the user.
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
|
|
35
|
+
- Every task must fit in one focused execution session. If a task touches more than ~5 files or has more than 3 acceptance criteria, split it.
|
|
36
|
+
- Every task must declare **Depends on** and **Parallel-safe**. No exceptions.
|
|
37
|
+
- Order tasks so the **core flow comes online first**, then polish. Auth and dashboards are not core — the user's primary action is.
|
|
38
|
+
- Mark explicit non-tasks for things the spec ruled out, so they do not silently re-enter scope.
|
|
39
|
+
- Use stable IDs (e.g. `AUTH-001`, `FEED-002`) so other skills can reference them.
|
|
40
|
+
|
|
41
|
+
## Output format
|
|
42
|
+
|
|
43
|
+
Write `.ai/board.md`:
|
|
44
|
+
|
|
45
|
+
```md
|
|
46
|
+
# MVP Board
|
|
47
|
+
|
|
48
|
+
## Rules
|
|
49
|
+
- Only execute one task at a time unless marked parallel-safe.
|
|
50
|
+
- Every task must have acceptance criteria.
|
|
51
|
+
- Completed tasks must list changed files and verification result.
|
|
52
|
+
- New discoveries become new tasks, not silent scope expansion.
|
|
53
|
+
|
|
54
|
+
## Status legend
|
|
55
|
+
Clarifying | Approved for planning | Approved for execution | In progress | Needs review | Validated | Blocked | Cut from MVP
|
|
56
|
+
|
|
57
|
+
New tasks start in `Clarifying`. They only move to `Approved for execution` via `/board-review`. Execution skills must refuse to act on tasks not in `Approved for execution`.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## EPIC 1: <name>
|
|
62
|
+
|
|
63
|
+
### TASK <ID>: <short title>
|
|
64
|
+
Status: Clarifying
|
|
65
|
+
Priority: P0 | P1 | P2
|
|
66
|
+
Agent owner: planner | sonnet | reviewer
|
|
67
|
+
Human owner: <name or @handle>
|
|
68
|
+
Depends on: <ID> | none
|
|
69
|
+
Parallel-safe: yes | no
|
|
70
|
+
Risk: low | medium | high
|
|
71
|
+
Validation state: not started | code-reviewed | qa-verified | both
|
|
72
|
+
Linked PR: <url or none>
|
|
73
|
+
Demo URL: <url or none>
|
|
74
|
+
|
|
75
|
+
Acceptance criteria:
|
|
76
|
+
- [ ] <observable>
|
|
77
|
+
- [ ] <observable>
|
|
78
|
+
|
|
79
|
+
Files likely touched:
|
|
80
|
+
- <path>
|
|
81
|
+
|
|
82
|
+
Execution prompt:
|
|
83
|
+
Use `/implementation-brief <ID>`, then `/execute-task <ID>`, then `/code-review <ID>` and `/qa-verify`.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
(repeat for every task)
|
|
88
|
+
|
|
89
|
+
## Cut from MVP
|
|
90
|
+
- <thing>: <reason>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
After writing, recommend `/board-review` as the next step. Tasks must not move to execution until reviewed and approved.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mvp-grill
|
|
3
|
+
description: Grill a rough product idea with sharp questions until it is buildable. Use when the user says "I want to build X", "help me make an MVP", "is this idea good?", or hands over a vague concept. Do NOT use once `.ai/product-spec.md` already exists — switch to `/mvp-spec` or `/architecture-cutline` instead.
|
|
4
|
+
# Generated from .claude/skills/mvp-grill/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: mvp-grill
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Turn a messy idea into something concrete enough to plan. You are a skeptical product partner, not a cheerleader. Ask only the questions that change scope or architecture.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Opus 4.7 or GPT-5.5. This is a planning task — do not delegate to a fast executor.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these if they exist:
|
|
20
|
+
|
|
21
|
+
- `.ai/product-spec.md`
|
|
22
|
+
- `.ai/decision-log.md`
|
|
23
|
+
|
|
24
|
+
If `.ai/product-spec.md` already has a target user, core loop, and MVP features, stop and tell the user the idea is past the grilling stage.
|
|
25
|
+
|
|
26
|
+
## Rules
|
|
27
|
+
|
|
28
|
+
- Max **5 questions per round**. Wait for answers before the next round.
|
|
29
|
+
- Only ask questions that change scope, architecture, or the definition of "done." Skip cosmetic or curious questions.
|
|
30
|
+
- Force a real answer. If the user dodges, ask a sharper version.
|
|
31
|
+
- Stop grilling once you can write a coherent one-sentence product, target user, core loop, and MVP feature list. Then write to `.ai/decision-log.md` and recommend `/mvp-spec`.
|
|
32
|
+
- Never write code or scaffold files in this skill.
|
|
33
|
+
|
|
34
|
+
## Question pool (pick the highest-leverage 5 each round)
|
|
35
|
+
|
|
36
|
+
- Who exactly is the target user? Be specific — not "developers" but "indie hackers shipping their first paid SaaS."
|
|
37
|
+
- What is the one painful thing they do today that this replaces?
|
|
38
|
+
- What is the single most important user action in the product?
|
|
39
|
+
- What is the first use case that must work end-to-end?
|
|
40
|
+
- What can be faked manually for v1 (no automation, no integration)?
|
|
41
|
+
- Where does the data come from?
|
|
42
|
+
- Is auth required for v1, or can it be skipped?
|
|
43
|
+
- Is payment required for v1?
|
|
44
|
+
- What does "done" mean for the first release?
|
|
45
|
+
- What must absolutely NOT be built yet?
|
|
46
|
+
- What is the launch constraint (date, demo, audience)?
|
|
47
|
+
- What is the success metric you would actually check?
|
|
48
|
+
|
|
49
|
+
## Output format
|
|
50
|
+
|
|
51
|
+
After each round, return:
|
|
52
|
+
|
|
53
|
+
1. **Summary so far** — what you have locked in.
|
|
54
|
+
2. **Open questions** — up to 5, numbered, sharp.
|
|
55
|
+
3. **Gaps** — what is still too vague to plan around.
|
|
56
|
+
4. **Next** — either "answer the questions above" or "ready for `/mvp-spec`".
|
|
57
|
+
|
|
58
|
+
When grilling ends, append a short entry to `.ai/decision-log.md` capturing the locked-in answers.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mvp-spec
|
|
3
|
+
description: Convert a grilled idea into a single concise MVP specification that an executor can build from. Use when the user says "write the spec", "let's lock the MVP", or after `/mvp-grill` has settled the open questions. Do NOT use if `.ai/product-spec.md` already exists and is current — edit it directly or run `/risk-check` first.
|
|
4
|
+
# Generated from .claude/skills/mvp-spec/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: mvp-spec
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Produce `.ai/product-spec.md` — the single source of truth for what the MVP is. Technical enough that Sonnet/Claude Code can execute without guessing, short enough to fit in working memory.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Opus 4.7 or GPT-5.5.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these if they exist:
|
|
20
|
+
|
|
21
|
+
- `.ai/decision-log.md` (this is the input — do not re-grill)
|
|
22
|
+
- existing `.ai/product-spec.md` (update in place rather than rewrite)
|
|
23
|
+
|
|
24
|
+
If the decision log is missing the answers needed, stop and tell the user to run `/mvp-grill` first. Do not invent answers.
|
|
25
|
+
|
|
26
|
+
## Rules
|
|
27
|
+
|
|
28
|
+
- One spec, one MVP slice. If the user wants v1 and v2, write v1 only.
|
|
29
|
+
- Every section must fit on one screen. If it does not, you are over-specifying.
|
|
30
|
+
- **Non-goals are mandatory.** A spec without a non-goals list always leaks scope.
|
|
31
|
+
- Acceptance criteria must be checkable, not aspirational.
|
|
32
|
+
- Do not pick a stack here — that is `/architecture-cutline`'s job.
|
|
33
|
+
- Do not write tasks here — that is `/mvp-board`'s job.
|
|
34
|
+
|
|
35
|
+
## Output format
|
|
36
|
+
|
|
37
|
+
Write `.ai/product-spec.md` with exactly these sections:
|
|
38
|
+
|
|
39
|
+
```md
|
|
40
|
+
# Product Spec — <name>
|
|
41
|
+
|
|
42
|
+
## 1. One-sentence product
|
|
43
|
+
<who it is for, what it does, what they get>
|
|
44
|
+
|
|
45
|
+
## 2. Target user
|
|
46
|
+
<specific persona, not a category>
|
|
47
|
+
|
|
48
|
+
## 3. Core user journey
|
|
49
|
+
<3–7 numbered steps from open-app to win>
|
|
50
|
+
|
|
51
|
+
## 4. MVP feature list
|
|
52
|
+
- <feature>: <one-line description>
|
|
53
|
+
(keep this list aggressively short)
|
|
54
|
+
|
|
55
|
+
## 5. Non-goals
|
|
56
|
+
- <thing we will NOT build for MVP>
|
|
57
|
+
(at least 5 entries; this section is mandatory)
|
|
58
|
+
|
|
59
|
+
## 6. Data model
|
|
60
|
+
<entities and their key fields, no SQL>
|
|
61
|
+
|
|
62
|
+
## 7. Screens / pages
|
|
63
|
+
- <route>: <purpose>
|
|
64
|
+
|
|
65
|
+
## 8. Integrations
|
|
66
|
+
<auth, payments, third-party APIs, or "none">
|
|
67
|
+
|
|
68
|
+
## 9. Risks
|
|
69
|
+
<technical, product, or scope risks — 3–5 bullets>
|
|
70
|
+
|
|
71
|
+
## 10. Acceptance criteria
|
|
72
|
+
- [ ] <observable, testable statement>
|
|
73
|
+
(these are what makes MVP "done")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
After writing, return a short summary and recommend `/architecture-cutline` next.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: new-pack
|
|
3
|
+
description: Scaffold a new local feature-pack directory under `packs/` with a minimal manifest, empty files and skills directories, and an empty task stub. Prompts for install mode (`copy` or `hybrid`); a `hybrid` pack additionally scaffolds a companion `libs/spark-<name>/` workspace package and writes a `[runtime_package]` block into the new manifest. Use when a needed capability has no v1 pack.
|
|
4
|
+
# Generated from .claude/skills/new-pack/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: new-pack
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Create a minimal pack skeleton that a human or executor can fill in later. This skill only scaffolds the pack directory (and, in `hybrid` mode, a companion workspace package under `libs/`); it does not implement the integration.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Sonnet 4.6 or GPT-5 family executor.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Required from the user:
|
|
20
|
+
|
|
21
|
+
- `<name>` — pack directory name, for example `realtime-supabase`
|
|
22
|
+
- `category=<category>` — one of the v1 category values
|
|
23
|
+
- `mode=<mode>` — install mode, either `copy` or `hybrid`
|
|
24
|
+
|
|
25
|
+
If any of these values is missing, ask for it before writing files. When asking for `mode`, explain the difference:
|
|
26
|
+
|
|
27
|
+
- `copy` — pack ships its full runtime logic as files copied into the consumer project. The user owns the code in place. This is the right default for stable framework glue (config files, route handlers, env wiring).
|
|
28
|
+
- `hybrid` — pack ships only thin wiring files and imports its runtime logic from a versioned npm helper package `@forgeailab/spark-<name>` published from `libs/spark-<name>/`. Choose this when the logic is the same across every consumer project and bug fixes should land in one place.
|
|
29
|
+
|
|
30
|
+
## Valid categories
|
|
31
|
+
|
|
32
|
+
- `db`
|
|
33
|
+
- `auth`
|
|
34
|
+
- `payments`
|
|
35
|
+
- `email`
|
|
36
|
+
- `ui`
|
|
37
|
+
- `ai`
|
|
38
|
+
- `infra`
|
|
39
|
+
- `testing`
|
|
40
|
+
- `deploy`
|
|
41
|
+
- `analytics`
|
|
42
|
+
- `storage`
|
|
43
|
+
|
|
44
|
+
## Rules
|
|
45
|
+
|
|
46
|
+
- Validate that `<name>` is a single directory segment. Reject names containing `/`, `..`, spaces, or shell metacharacters.
|
|
47
|
+
- Validate that `packs/<name>/` does not already exist. If it exists, stop and report the collision.
|
|
48
|
+
- Validate that `category` is exactly one of the allowed categories above.
|
|
49
|
+
- Validate that `mode` is exactly `copy` or `hybrid`.
|
|
50
|
+
- Pack scaffold (both modes) creates only these paths:
|
|
51
|
+
- `packs/<name>/pack.toml`
|
|
52
|
+
- `packs/<name>/files/`
|
|
53
|
+
- `packs/<name>/skills/`
|
|
54
|
+
- `packs/<name>/tasks.yaml`
|
|
55
|
+
- Additionally in `hybrid` mode, validate that `libs/spark-<name>/` does not already exist, then create the companion workspace package:
|
|
56
|
+
- `libs/spark-<name>/package.json`
|
|
57
|
+
- `libs/spark-<name>/tsconfig.json`
|
|
58
|
+
- `libs/spark-<name>/src/index.ts`
|
|
59
|
+
- `libs/spark-<name>/test/index.test.ts`
|
|
60
|
+
- `libs/spark-<name>/README.md`
|
|
61
|
+
- `tasks.yaml` must be an empty stub file.
|
|
62
|
+
- Leave `provides`, `requires`, and `conflicts` empty. Do not guess capability tags.
|
|
63
|
+
- The pack's `[dependencies].runtime` MUST NOT redeclare the helper package — the CLI adds it implicitly from `[runtime_package]`.
|
|
64
|
+
|
|
65
|
+
## `pack.toml` skeleton — `copy` mode
|
|
66
|
+
|
|
67
|
+
Write this manifest, replacing `<name>` and `<category>`:
|
|
68
|
+
|
|
69
|
+
```toml
|
|
70
|
+
name = "<name>"
|
|
71
|
+
version = "0.1.0"
|
|
72
|
+
category = "<category>"
|
|
73
|
+
description = "TODO: describe what this pack adds."
|
|
74
|
+
provides = []
|
|
75
|
+
requires = []
|
|
76
|
+
conflicts = []
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## `pack.toml` skeleton — `hybrid` mode
|
|
80
|
+
|
|
81
|
+
In `hybrid` mode, the manifest gains a `[runtime_package]` table pointing at the companion helper:
|
|
82
|
+
|
|
83
|
+
```toml
|
|
84
|
+
name = "<name>"
|
|
85
|
+
version = "0.1.0"
|
|
86
|
+
category = "<category>"
|
|
87
|
+
description = "TODO: describe what this pack adds."
|
|
88
|
+
provides = []
|
|
89
|
+
requires = []
|
|
90
|
+
conflicts = []
|
|
91
|
+
|
|
92
|
+
[runtime_package]
|
|
93
|
+
package = "@forgeailab/spark-<name>"
|
|
94
|
+
version = "^0.1"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## `libs/spark-<name>/` skeleton — `hybrid` mode only
|
|
98
|
+
|
|
99
|
+
`package.json`:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"name": "@forgeailab/spark-<name>",
|
|
104
|
+
"version": "0.1.0",
|
|
105
|
+
"type": "module",
|
|
106
|
+
"main": "./src/index.ts",
|
|
107
|
+
"types": "./src/index.ts",
|
|
108
|
+
"sideEffects": false,
|
|
109
|
+
"devDependencies": {
|
|
110
|
+
"bun-types": "latest",
|
|
111
|
+
"typescript": "latest"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`tsconfig.json`:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"extends": "../../tsconfig.base.json",
|
|
121
|
+
"include": ["src/**/*", "test/**/*"]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
`src/index.ts`: empty `export {};` placeholder.
|
|
126
|
+
`test/index.test.ts`: minimal `test('placeholder', () => expect(true).toBe(true));`.
|
|
127
|
+
`README.md`: one-line description plus a "Why is this in libs/ vs packages/?" note (it is a library consumers import from, not internal CLI plumbing).
|
|
128
|
+
|
|
129
|
+
## Output format
|
|
130
|
+
|
|
131
|
+
After creating the skeleton, return:
|
|
132
|
+
|
|
133
|
+
```md
|
|
134
|
+
## New pack scaffolded
|
|
135
|
+
|
|
136
|
+
- Pack: `<name>`
|
|
137
|
+
- Category: `<category>`
|
|
138
|
+
- Install mode: `<mode>`
|
|
139
|
+
- Created:
|
|
140
|
+
- `packs/<name>/pack.toml`
|
|
141
|
+
- `packs/<name>/files/`
|
|
142
|
+
- `packs/<name>/skills/`
|
|
143
|
+
- `packs/<name>/tasks.yaml`
|
|
144
|
+
<!-- hybrid mode only -->
|
|
145
|
+
- `libs/spark-<name>/package.json`
|
|
146
|
+
- `libs/spark-<name>/tsconfig.json`
|
|
147
|
+
- `libs/spark-<name>/src/index.ts`
|
|
148
|
+
- `libs/spark-<name>/test/index.test.ts`
|
|
149
|
+
- `libs/spark-<name>/README.md`
|
|
150
|
+
|
|
151
|
+
Next: fill in `provides`, `requires`, files, tasks, and any pack-shipped skills before installing it.
|
|
152
|
+
In hybrid mode, also implement the runtime helper under `libs/spark-<name>/src/` and re-run `bun install`.
|
|
153
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: next-task
|
|
3
|
+
description: Pick the next best board task to work on, with the reasoning. Use when the user says "what should I do next?", "what's next?", or after `/sync-board` finishes. Do NOT use to plan a whole batch — that is `/parallel-execution`.
|
|
4
|
+
# Generated from .claude/skills/next-task/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: next-task
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Recommend the single next task (or smallest parallel batch) the user should execute now, based on the current state of the board.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Opus 4.7 or GPT-5.5. Picking the next move is a planning call.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these (required):
|
|
20
|
+
|
|
21
|
+
- `.ai/board.md`
|
|
22
|
+
- `.ai/product-spec.md`
|
|
23
|
+
|
|
24
|
+
Read if available:
|
|
25
|
+
|
|
26
|
+
- `.ai/architecture.md`
|
|
27
|
+
- `.ai/execution-log.md`
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
|
|
31
|
+
Decision order, in priority:
|
|
32
|
+
|
|
33
|
+
1. **Unblock the core user flow first.** The user's primary action in the spec must work end-to-end before anything else.
|
|
34
|
+
2. **Prefer tasks whose dependencies are satisfied.** A task with unmet `Depends on:` is not eligible.
|
|
35
|
+
3. **Prefer tasks with clear acceptance criteria** over vague ones.
|
|
36
|
+
4. **Batch parallel-safe tasks** only when the user explicitly asked for parallelism.
|
|
37
|
+
5. **Schedule QA after every feature batch**, not at the end of the project.
|
|
38
|
+
6. **Do not pick polish before core works.** Empty states and copy come after the loop is alive.
|
|
39
|
+
|
|
40
|
+
Only recommend tasks in status `Approved for execution`. If nothing is approved, recommend `/board-review` instead.
|
|
41
|
+
|
|
42
|
+
## Output format
|
|
43
|
+
|
|
44
|
+
```md
|
|
45
|
+
## Next recommended
|
|
46
|
+
|
|
47
|
+
### Task
|
|
48
|
+
- <TASK-ID>: <title>
|
|
49
|
+
|
|
50
|
+
### Why now
|
|
51
|
+
<one line — usually one of: "unblocks core flow", "prerequisites just landed", "highest-risk path">
|
|
52
|
+
|
|
53
|
+
### Dependencies satisfied
|
|
54
|
+
- <DEP-ID>: <status> ✓
|
|
55
|
+
|
|
56
|
+
### Risk
|
|
57
|
+
<low | medium | high — and the specific risk if not low>
|
|
58
|
+
|
|
59
|
+
### Suggested execution
|
|
60
|
+
Run `/implementation-brief <TASK-ID>`, then `/execute-task <TASK-ID>`.
|
|
61
|
+
|
|
62
|
+
### Alternative
|
|
63
|
+
<one other reasonable pick + one-line reason, or "none — this is the clear next step">
|
|
64
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pack-add
|
|
3
|
+
description: Safely install feature packs by dry-running `spark add`, showing the plan, waiting for explicit approval, running the real install, and syncing the board. Use when the user asks to add one or more packs.
|
|
4
|
+
# Generated from .claude/skills/pack-add/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: pack-add
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Install packs through the board-aware workflow: dry-run first, show the plan, get explicit confirmation, install, then sync the board so seeded tasks appear.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Sonnet 4.6 or GPT-5 family executor.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these if present:
|
|
20
|
+
|
|
21
|
+
- `spark.config.json`
|
|
22
|
+
- `.ai/architecture.md`
|
|
23
|
+
- `.ai/board.md`
|
|
24
|
+
- `.spark/state.json`
|
|
25
|
+
|
|
26
|
+
The user must provide one or more pack names. If no pack is named, stop and ask for the pack list or recommend `/pack-resolve`.
|
|
27
|
+
|
|
28
|
+
## Rules
|
|
29
|
+
|
|
30
|
+
- Always run `spark add <pack...> --dry-run` before any real install.
|
|
31
|
+
- Present the dry-run diff or plan to the user in compact form: packs, dependencies, files, env vars, skills, and board tasks.
|
|
32
|
+
- Wait for explicit confirmation before installing. Accept only clear approval such as "yes", "approved", or "install".
|
|
33
|
+
- If the dry-run fails, stop. Do not attempt the real install.
|
|
34
|
+
- If the user declines or gives an ambiguous answer, stop with no filesystem changes.
|
|
35
|
+
- On approval, run `spark add <pack...>` with the same pack arguments as the dry-run.
|
|
36
|
+
- After a successful install, invoke `/sync-board` so seeded tasks are reflected in `.ai/board.md`.
|
|
37
|
+
- Do not mark any seeded task `Approved for execution` or `Validated`; board-review and review skills own those transitions.
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
1. Confirm the pack arguments exactly as provided.
|
|
42
|
+
2. Run `spark add <pack...> --dry-run`.
|
|
43
|
+
3. Summarize the plan and ask the user for explicit approval.
|
|
44
|
+
4. If approved, run `spark add <pack...>`.
|
|
45
|
+
5. If install succeeds, run `/sync-board`.
|
|
46
|
+
6. Report the installed packs, changed files summary, and board sync result.
|
|
47
|
+
|
|
48
|
+
## Output format
|
|
49
|
+
|
|
50
|
+
Before approval:
|
|
51
|
+
|
|
52
|
+
- Dry-run command
|
|
53
|
+
- Planned pack order
|
|
54
|
+
- Files/env/skills/tasks summary
|
|
55
|
+
- Confirmation question
|
|
56
|
+
|
|
57
|
+
After install:
|
|
58
|
+
|
|
59
|
+
- Install command
|
|
60
|
+
- Result
|
|
61
|
+
- `/sync-board` result
|
|
62
|
+
- Any follow-up tasks or blockers
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pack-resolve
|
|
3
|
+
description: Recommend the right scaffold template and concrete feature packs from `.ai/product-spec.md` and `.ai/architecture.md`. Annotates each recommended pack as `copy` or `hybrid` based on whether its manifest declares `[runtime_package]`. Use when the user asks which packs to install, wants a scaffold/preset recommendation, or scope changed after architecture. This skill only plans; it never installs.
|
|
4
|
+
# Generated from .claude/skills/pack-resolve/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: pack-resolve
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Recommend a scaffold template and a concrete pack set from the current product spec and architecture. The output should be directly actionable, but this skill must not execute any install.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Opus 4.7 or GPT-5.5.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these (required):
|
|
20
|
+
|
|
21
|
+
- `.ai/product-spec.md`
|
|
22
|
+
- `.ai/architecture.md`
|
|
23
|
+
|
|
24
|
+
Read these if present:
|
|
25
|
+
|
|
26
|
+
- `templates/*/template.toml`
|
|
27
|
+
- `packs/*/pack.toml`
|
|
28
|
+
- `presets/*.toml`
|
|
29
|
+
- `spark.config.json`
|
|
30
|
+
|
|
31
|
+
If the spec or architecture is missing, stop and tell the user to run `/mvp-spec` and `/architecture-cutline` first.
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
|
|
35
|
+
- Do not run `bunx create-spark`, `spark add`, or `spark preset`. This is a planning skill only.
|
|
36
|
+
- Resolve from the registry, not from memory. Pack names must come from `packs/*/pack.toml`; templates must come from `templates/*/template.toml`.
|
|
37
|
+
- Prefer the smallest pack set that satisfies the spec and architecture. Do not install "usual SaaS" packs unless the capability is actually required.
|
|
38
|
+
- Group packs by manifest `category`, and map each pack to the capability tags it provides or satisfies.
|
|
39
|
+
- Annotate each recommended pack as either `copy` or `hybrid`. The classification is derived from the pack's `pack.toml`: presence of a `[runtime_package]` table means `hybrid`; absence means `copy`. Readers must immediately see which packs ship a versioned runtime helper they will import from versus which copy source files into the project.
|
|
40
|
+
- Respect `requires`, `conflicts`, `compatible_scaffolds`, and `requires_runtime` when recommending a set.
|
|
41
|
+
- If a needed capability has no v1 pack, name the gap explicitly and suggest `/new-pack`. Do not invent a pack name or include the missing capability in the command.
|
|
42
|
+
- If the best-fit template has `status = "planned"`, still recommend it as the destination, write `planned, not yet implemented`, suggest `nextjs` as the interim alternative, and make the final command use the executable interim path.
|
|
43
|
+
- If a preset exactly matches the recommended fresh-project pack set, the final command may be `bunx create-spark <name> --template <t> --preset <p>`. Otherwise, or when resolving for an existing project, the final command must be `spark add <pack...>` using only real pack names from the registry.
|
|
44
|
+
- The final answer must end with exactly one fenced `sh` command block and no text after it.
|
|
45
|
+
|
|
46
|
+
## Capability hints
|
|
47
|
+
|
|
48
|
+
Use these only as hints; the registry still wins:
|
|
49
|
+
|
|
50
|
+
- Paid SaaS: `db`, `auth`, `payments`, `email`, `ui-kit`, `deploy-target`.
|
|
51
|
+
- Internal tool: `db`, `auth`, `ui-kit`, optionally `local-runtime`.
|
|
52
|
+
- AI workflow: `ai-sdk`, optional `db`, optional `ui-kit`.
|
|
53
|
+
- Documentation site: `mdx-content` template capability; `astro-starlight` may be the destination but is planned in v1.
|
|
54
|
+
- Realtime/client-first sync: `sync`; if the requested capability is broader than the v1 `sync-zero` pack covers, name the gap.
|
|
55
|
+
|
|
56
|
+
## Output format
|
|
57
|
+
|
|
58
|
+
Return these sections:
|
|
59
|
+
|
|
60
|
+
- `## Scaffold` — recommended template, status, why it fits, and interim alternative if the best fit is planned.
|
|
61
|
+
- `## Packs` — grouped by category. Each bullet must be `<pack-name> (<copy|hybrid>)` followed by `provides:` and the capability tags. Example: `auth-better-auth (hybrid) — provides: auth, session, oauth`.
|
|
62
|
+
- `## Gaps` — missing capabilities and a `/new-pack` suggestion, or `none`.
|
|
63
|
+
- `## Command` — the last section, containing exactly one executable fenced `sh` block.
|
|
64
|
+
|
|
65
|
+
Do not put any other fenced command block anywhere in the response.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: parallel-execution
|
|
3
|
+
description: Decide which board tasks can safely run at the same time and group them into execution batches. Use when the user says "what can run in parallel?", "batch the board", "can I spin up multiple agents?", or after `.ai/board.md` is built. Do NOT use as a license to fan out everything — the output may be one batch.
|
|
4
|
+
# Generated from .claude/skills/parallel-execution/SKILL.md — DO NOT EDIT directly
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: parallel-execution
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Read the board and produce ordered execution batches where every task inside a batch is safe to run in parallel. Conflicts are detected up front, not at merge time.
|
|
12
|
+
|
|
13
|
+
## Recommended model
|
|
14
|
+
|
|
15
|
+
Opus 4.7 or GPT-5.5. This is dependency analysis — do not rush it.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these (required):
|
|
20
|
+
|
|
21
|
+
- `.ai/board.md`
|
|
22
|
+
- `.ai/architecture.md`
|
|
23
|
+
|
|
24
|
+
## Rules
|
|
25
|
+
|
|
26
|
+
- A batch is parallel-safe only if **no two tasks share**:
|
|
27
|
+
- the same files (likely-edit lists)
|
|
28
|
+
- the same database schema migration
|
|
29
|
+
- the same route or layout
|
|
30
|
+
- the same shared component
|
|
31
|
+
- the same migration / config file
|
|
32
|
+
- If two tasks conflict, the later one moves to the next batch.
|
|
33
|
+
- Foundations (schema, routing skeleton, theme tokens) usually go alone in Batch 1.
|
|
34
|
+
- Integration / QA / deployment tasks usually go alone in the last batch.
|
|
35
|
+
- Prefer **fewer, safer batches** over many micro-batches.
|
|
36
|
+
- It is fine for the answer to be "no parallelism — run sequentially."
|
|
37
|
+
|
|
38
|
+
## Output format
|
|
39
|
+
|
|
40
|
+
```md
|
|
41
|
+
## Execution batches
|
|
42
|
+
|
|
43
|
+
### Batch 1 — foundations
|
|
44
|
+
- <TASK-ID>: <title>
|
|
45
|
+
- <TASK-ID>: <title>
|
|
46
|
+
Why parallel-safe: <one line>
|
|
47
|
+
|
|
48
|
+
### Batch 2 — feature work
|
|
49
|
+
- ...
|
|
50
|
+
|
|
51
|
+
### Batch 3 — integration / QA
|
|
52
|
+
- ...
|
|
53
|
+
|
|
54
|
+
## Conflicts detected
|
|
55
|
+
- <TASK-A> ⇄ <TASK-B>: <shared resource>
|
|
56
|
+
|
|
57
|
+
## Recommended execution mode
|
|
58
|
+
- Sequential: <which tasks>
|
|
59
|
+
- Parallel with worktrees / subagents: <which tasks>
|
|
60
|
+
- Background: <which tasks, if any>
|
|
61
|
+
|
|
62
|
+
## Notes for the executor
|
|
63
|
+
- <e.g. "DB migration must finish before Batch 2 starts">
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
After returning the plan, recommend `/execute-task <ID>` for the first batch.
|