@forgeailab/create-spark 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.claude/skills/architecture-cutline/SKILL.md +96 -0
  2. package/.claude/skills/board-review/SKILL.md +77 -0
  3. package/.claude/skills/code-review/SKILL.md +76 -0
  4. package/.claude/skills/execute-task/SKILL.md +80 -0
  5. package/.claude/skills/idea-sharpen/SKILL.md +65 -0
  6. package/.claude/skills/implementation-brief/SKILL.md +87 -0
  7. package/.claude/skills/mvp-board/SKILL.md +95 -0
  8. package/.claude/skills/mvp-grill/SKILL.md +60 -0
  9. package/.claude/skills/mvp-spec/SKILL.md +78 -0
  10. package/.claude/skills/new-pack/SKILL.md +156 -0
  11. package/.claude/skills/next-task/SKILL.md +65 -0
  12. package/.claude/skills/pack-add/SKILL.md +64 -0
  13. package/.claude/skills/pack-resolve/SKILL.md +67 -0
  14. package/.claude/skills/parallel-execution/SKILL.md +68 -0
  15. package/.claude/skills/qa-verify/SKILL.md +77 -0
  16. package/.claude/skills/risk-check/SKILL.md +88 -0
  17. package/.claude/skills/sync-board/SKILL.md +76 -0
  18. package/.claude/skills/ux-theme/SKILL.md +93 -0
  19. package/.codex/skills/architecture-cutline/SKILL.md +94 -0
  20. package/.codex/skills/board-review/SKILL.md +75 -0
  21. package/.codex/skills/code-review/SKILL.md +73 -0
  22. package/.codex/skills/execute-task/SKILL.md +76 -0
  23. package/.codex/skills/idea-sharpen/SKILL.md +63 -0
  24. package/.codex/skills/implementation-brief/SKILL.md +85 -0
  25. package/.codex/skills/mvp-board/SKILL.md +93 -0
  26. package/.codex/skills/mvp-grill/SKILL.md +58 -0
  27. package/.codex/skills/mvp-spec/SKILL.md +76 -0
  28. package/.codex/skills/new-pack/SKILL.md +153 -0
  29. package/.codex/skills/next-task/SKILL.md +64 -0
  30. package/.codex/skills/pack-add/SKILL.md +62 -0
  31. package/.codex/skills/pack-resolve/SKILL.md +65 -0
  32. package/.codex/skills/parallel-execution/SKILL.md +66 -0
  33. package/.codex/skills/qa-verify/SKILL.md +74 -0
  34. package/.codex/skills/risk-check/SKILL.md +86 -0
  35. package/.codex/skills/sync-board/SKILL.md +72 -0
  36. package/.codex/skills/ux-theme/SKILL.md +91 -0
  37. package/package.json +8 -5
  38. package/scripts/sync-skills.ts +223 -0
  39. /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.