@adityaaria/spark 6.0.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 (91) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +20 -0
  3. package/.codex-plugin/plugin.json +48 -0
  4. package/.cursor-plugin/plugin.json +23 -0
  5. package/.kimi-plugin/plugin.json +38 -0
  6. package/.opencode/INSTALL.md +115 -0
  7. package/.opencode/plugins/spark.js +139 -0
  8. package/.pi/extensions/spark.ts +121 -0
  9. package/.version-bump.json +21 -0
  10. package/CLAUDE.md +115 -0
  11. package/CODE_OF_CONDUCT.md +128 -0
  12. package/GEMINI.md +2 -0
  13. package/LICENSE +21 -0
  14. package/README.md +282 -0
  15. package/RELEASE-NOTES.md +1299 -0
  16. package/assets/app-icon.png +0 -0
  17. package/assets/spark-small.svg +1 -0
  18. package/bin/spark.js +7 -0
  19. package/docs/README.kimi.md +94 -0
  20. package/docs/README.opencode.md +170 -0
  21. package/docs/porting-to-a-new-harness.md +830 -0
  22. package/gemini-extension.json +6 -0
  23. package/hooks/hooks-codex.json +16 -0
  24. package/hooks/hooks-cursor.json +10 -0
  25. package/hooks/hooks.json +16 -0
  26. package/hooks/run-hook.cmd +46 -0
  27. package/hooks/session-start +49 -0
  28. package/hooks/session-start-codex +26 -0
  29. package/package.json +52 -0
  30. package/skills/brainstorming/SKILL.md +159 -0
  31. package/skills/brainstorming/scripts/frame-template.html +213 -0
  32. package/skills/brainstorming/scripts/helper.js +167 -0
  33. package/skills/brainstorming/scripts/server.cjs +722 -0
  34. package/skills/brainstorming/scripts/start-server.sh +209 -0
  35. package/skills/brainstorming/scripts/stop-server.sh +120 -0
  36. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  37. package/skills/brainstorming/visual-companion.md +298 -0
  38. package/skills/dispatching-parallel-agents/SKILL.md +185 -0
  39. package/skills/executing-plans/SKILL.md +70 -0
  40. package/skills/finishing-a-development-branch/SKILL.md +241 -0
  41. package/skills/receiving-code-review/SKILL.md +213 -0
  42. package/skills/requesting-code-review/SKILL.md +103 -0
  43. package/skills/requesting-code-review/code-reviewer.md +172 -0
  44. package/skills/subagent-driven-development/SKILL.md +418 -0
  45. package/skills/subagent-driven-development/implementer-prompt.md +139 -0
  46. package/skills/subagent-driven-development/scripts/review-package +44 -0
  47. package/skills/subagent-driven-development/scripts/sdd-workspace +22 -0
  48. package/skills/subagent-driven-development/scripts/task-brief +40 -0
  49. package/skills/subagent-driven-development/task-reviewer-prompt.md +188 -0
  50. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  51. package/skills/systematic-debugging/SKILL.md +296 -0
  52. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  53. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  54. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  55. package/skills/systematic-debugging/find-polluter.sh +63 -0
  56. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  57. package/skills/systematic-debugging/test-academic.md +14 -0
  58. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  59. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  60. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  61. package/skills/test-driven-development/SKILL.md +371 -0
  62. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  63. package/skills/using-git-worktrees/SKILL.md +202 -0
  64. package/skills/using-spark/SKILL.md +121 -0
  65. package/skills/using-spark/references/antigravity-tools.md +96 -0
  66. package/skills/using-spark/references/claude-code-tools.md +50 -0
  67. package/skills/using-spark/references/codex-tools.md +72 -0
  68. package/skills/using-spark/references/copilot-tools.md +49 -0
  69. package/skills/using-spark/references/gemini-tools.md +63 -0
  70. package/skills/using-spark/references/pi-tools.md +28 -0
  71. package/skills/verification-before-completion/SKILL.md +139 -0
  72. package/skills/writing-plans/SKILL.md +174 -0
  73. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  74. package/skills/writing-skills/SKILL.md +689 -0
  75. package/skills/writing-skills/anthropic-best-practices.md +1150 -0
  76. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  77. package/skills/writing-skills/graphviz-conventions.dot +172 -0
  78. package/skills/writing-skills/persuasion-principles.md +187 -0
  79. package/skills/writing-skills/render-graphs.js +168 -0
  80. package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  81. package/src/cli/index.js +26 -0
  82. package/src/cli/install.js +47 -0
  83. package/src/cli/output.js +11 -0
  84. package/src/cli/parse-args.js +46 -0
  85. package/src/cli/prompt.js +10 -0
  86. package/src/installer/adapters/common.js +59 -0
  87. package/src/installer/adapters/extension-style.js +67 -0
  88. package/src/installer/adapters/shell-hook.js +57 -0
  89. package/src/installer/detect.js +168 -0
  90. package/src/installer/errors.js +7 -0
  91. package/src/installer/registry.js +35 -0
@@ -0,0 +1,1299 @@
1
+ # SPARK Release Notes
2
+
3
+ ## v6.0.3 (2026-06-18)
4
+
5
+ ### Subagent-Driven Development
6
+
7
+ - **SDD scratch files moved out of `.git/`.** Claude Code treats `.git/` as a protected path and denies agent writes there, so an implementer subagent writing its report into `.git/sdd/` got blocked mid-run. Task briefs, implementer reports, review diffs, and the progress ledger now live in a self-ignoring `.spark/sdd/` directory in the working tree — kept out of `git status` and out of commits, and resolved per worktree by a shared `sdd-workspace` helper. One caveat: because the workspace is git-ignored working-tree scratch, `git clean -fdx` will delete the progress ledger; recover from `git log` if that happens. (#1780)
8
+
9
+ ## v6.0.2 (2026-06-16)
10
+
11
+ ### Install Fixes
12
+
13
+ - **We no longer ship the `evals` submodule.** It broke plugin installs for some users, so the eval harness now lives in its own repo, separate from the published plugin. (#1778, #1774)
14
+
15
+ ## v6.0.1 (2026-06-16)
16
+
17
+ ### Codex Fixes
18
+
19
+ - **Version display in the brainstorm companion** — packaged Codex plugins ship without a root `package.json`, so the visual companion reported its version as "unknown". `readSPARKVersion()` now falls back to `.codex-plugin/plugin.json` when `package.json` is absent.
20
+ - **Cleaner Codex plugin sync** — the sync-to-codex script now excludes `.gitmodules` and `.pre-commit-config.yaml`, keeping repo metadata out of the packaged Codex plugin.
21
+
22
+ ## v6.0.0 (2026-06-16)
23
+
24
+ SPARK 6.0 is a big release. The headline is a rewrite of how `subagent-driven-development` reviews each task — cheaper, stricter, and harder to game.
25
+
26
+ While these numbers won't hold on every harness and for every workload, in our evals, Claude Code and Codex produce similar high-quality results roughly twice as fast and while spending almost 50% fewer tokens.
27
+
28
+ It also adds three new harnesses (Kimi Code, Pi, and Antigravity), gives the brainstorming visual companion a better security model, and rewrites a number of skills' tool calls to be significantly more vendor-neutral.
29
+
30
+ ### Visible Changes
31
+
32
+ - **The two per-task reviewer prompts became one.** `spec-reviewer-prompt.md` and `code-quality-reviewer-prompt.md` are gone, replaced by a single `task-reviewer-prompt.md`. If you dispatch the old files directly, switch to the new one.
33
+ - **The legacy global worktree directory is gone.** `using-git-worktrees` and `finishing-a-development-branch` no longer use `~/.config/spark/worktrees/`. Worktrees now land in the project — an existing `.worktrees/` or `worktrees/` if you have one, otherwise a fresh `.worktrees/` — unless you say otherwise.
34
+
35
+ ### New Harness Support
36
+
37
+ SPARK now runs on three more harnesses. Each ships its own bootstrap, a tool-mapping reference, and tests, and each gets its own install section in the README.
38
+
39
+ - **Kimi Code** — a plugin manifest, install docs, and manifest tests; install from Kimi's marketplace or straight from the repo. (initial manifest by @qer)
40
+ - **Pi** — a session-start extension that registers the skills and injects the `using-spark` bootstrap. Pi has native skills, so it needs no compatibility shim.
41
+ - **Antigravity (`agy`)** — installs the plugin directly and bootstraps from the first message; verified end-to-end against the standard "make a react todo list" acceptance test.
42
+
43
+ ### Subagent-Driven Development
44
+
45
+ A long run of cost-and-quality experiments on real projects reshaped how the controller reviews each task. The old flow ran two reviewers per task and leaned on the controller's judgment for model choice and severity, and both turned out to be expensive and easy to game. The new flow runs one reviewer per task, hands work off as files instead of pasted text, and takes several judgment calls away from the controller.
46
+
47
+ - **One reviewer per task, two verdicts.** A single `task-reviewer-prompt.md` reads the task's diff once and returns both a spec-compliance verdict and a quality verdict, so one fix pass clears both. A new "can't verify from the diff" verdict flags requirements that live in untouched code, for the controller to check itself. (#1538, #1543)
48
+ - **One broad review at the end.** The run finishes with a single whole-branch review on the most capable model, instead of re-reviewing everything task by task.
49
+ - **Plans get a pre-flight read.** Before the first task, the controller checks the plan for internal conflicts — and for anything the plan asks for that a reviewer would flag as a defect — and raises it all at once, rather than stumbling into it mid-run.
50
+ - **Diffs and task text move as files.** A pasted diff parks itself permanently in the most expensive context, and a reviewer without one rebuilds it by hand — the single biggest reviewer cost. Two new scripts, `task-brief` and `review-package`, write the task text and the review diff to files for the subagent to read.
51
+ - **Every dispatch states its model.** Left to choose, controllers stopped naming a model at all — and an unnamed model quietly inherits the session's most expensive one, so one run put all 26 of its reviewers on the top tier. The templates now require a model, with guidance that reaches for cheaper tiers when the work allows.
52
+ - **The controller can't tell a reviewer what to ignore.** Real runs caught controllers coaching reviewers to skip a finding or call it "Minor at most," and the flaw shipped. Suppressing findings and pre-rating severity are now banned outright, and a defect the plan itself mandates gets reported for you to decide on rather than waved through.
53
+ - **Reviewers are read-only and skeptical of rationales.** Review no longer touches the working tree or branch — a reviewer running `git checkout` had been orphaning later commits — and an implementer's "I left this unabstracted on purpose" no longer talks a reviewer out of a real finding.
54
+ - **Stronger evidence and reporting.** Reviewers back each answer with a file and line, the implementer's report moves to a file and carries red/green evidence when TDD applies, and a progress ledger lets a controller that loses its context resume instead of redoing finished work. (#994)
55
+
56
+ ### Writing Plans
57
+
58
+ Plans now carry the structure the controller and reviewers used to re-derive on every dispatch.
59
+
60
+ - **A Global Constraints block** lists the rules that bind every task — version floors, dependency limits, naming and copy, exact values — copied in verbatim, so they actually reach the implementers and reviewers downstream.
61
+ - **A per-task Interfaces block** names exactly what each task consumes and produces, so an implementer who sees only its own task still knows its neighbors' contracts.
62
+ - **Right-sizing guidance** keeps a task at the size that earns its own test cycle and a reviewer's pass, folding setup, config, and docs into the task that needs them. In testing, a plan written this way needed one round of fixes where the control needed two to four — and the control shipped a real bug.
63
+
64
+ ### Brainstorming Visual Companion
65
+
66
+ The visual companion is a small web server the agent opens alongside the conversation. It had no authentication at all, so on a shared or remote machine anyone who could reach the port could read your brainstorm — or inject events the agent treats as your input. This release gives it a real security model and makes it survive restarts and dropped connections.
67
+
68
+ - **A per-session key now guards everything.** The agent's URL carries a one-time key, the browser tucks it into a tab-scoped cookie, and every request and WebSocket connection has to present it. This closes the door to stray local tabs and routable remote hosts alike, including the DNS-rebinding case an origin allowlist can't catch. (Closes #1014)
69
+ - **The file server stays in its sandbox.** It refuses symlinks, dotfiles, and any path that climbs out of the content directory, ignores macOS resource-fork files, and sends the usual no-store and deny-framing headers. Files that hold the session key are written owner-only.
70
+ - **The companion is offered only when it helps.** The skill raises it the first time a question would read better shown than told, as its own message, and lets a decline stand. Accepting opens your browser to the first screen. (Closes #755)
71
+ - **It survives restarts and flaky connections.** Given a project directory, the server keeps the same port and key across restarts, so an open tab simply reconnects. The page reconnects on its own, shows a live status pill, and raises a "paused" overlay while the server is down.
72
+ - **Longer idle life, safer shutdown.** The idle timeout went from 30 minutes to 4 hours, and `stop-server.sh` now confirms it owns the right process before signaling, so it never kills an unrelated `node` after a reboot. (#1703)
73
+ - **Windows launch hardening** — consolidated shell detection, and Windows now relies on the idle timeout for shutdown, since Node can't track POSIX process ownership across MSYS2.
74
+
75
+
76
+ ### Existing Harness Updates
77
+
78
+ - **Codex** now bootstraps through its own SessionStart hook rather than shared wiring, and the Codex App gained an install section and fuller tool docs (web search, `AGENTS.md`, personal skills). (#1540)
79
+ - **OpenCode** got an action-based tool mapping across its plugin, install doc, and README, plus a bootstrap-caching test.
80
+ - **Cursor**'s manifest dropped its `agents` and `commands` entries, since those directories no longer exist.
81
+
82
+ ### One Set of Skills, Every Harness
83
+
84
+ The skills used to speak Claude Code's dialect — "use the Task tool," "put it in CLAUDE.md." This release rewrites that vocabulary in terms of what you're actually doing ("dispatch a subagent," "your instructions file") and adds a per-harness reference that maps each action to the right tool, checked against each runtime. Prose that named "Claude" now says "your agent."
85
+
86
+ - **A tool reference per harness** at `skills/using-spark/references/`, covering Claude Code, Codex, Copilot, Gemini, Pi, and Antigravity.
87
+ - **`finishing-a-development-branch` went forge-neutral** — it no longer hardcodes `gh pr create`, so agents push with whatever forge tooling they have. (#1609)
88
+ - **One rename:** "Claude Search Optimization" is now "Skill Discovery Optimization," since the technique isn't Claude-specific.
89
+
90
+ ### Writing Skills
91
+
92
+ Two additions for skill authors.
93
+
94
+ - **Match the Form to the Failure** — a short table for picking the right kind of guidance. A flat "don't do X" works for discipline slips but backfires when the problem is the *shape* of an output, where a worked example does better. The table, and a tighter scope on the existing rationalization section, steer authors to the form that actually helps.
95
+ - **Micro-Test Wording** — a cheap way to check a phrasing before committing to it: sample it a handful of times against a no-guidance control and read every result by hand, treating run-to-run variance as a warning sign.
96
+
97
+ ### Testing
98
+
99
+ Skill-behavior testing moved out of `tests/` into a new `evals/` submodule built on "drill," which runs real Claude Code, Codex, and Gemini sessions and judges them with an LLM. Several in-tree bash suites retired once a stricter drill scenario covered them; the few with no equivalent stayed. From here on, `tests/` holds plugin-code tests and `evals/` holds skill-behavior tests, and `docs/testing.md` explains the split. New backends reach Antigravity, Pi, and more models, and new shell-lint and pre-commit checks guard the harness. (#1541)
100
+
101
+ ### Bug Fixes
102
+
103
+ - **systematic-debugging no longer forces every session into extended thinking.** One bullet held the exact keyword Claude Code scans for, quietly tripping the switch on every session that loaded the skill. A hyphen breaks the keyword; the text still reads. (#1283, by @Nick Galatis)
104
+ - **The Windows SessionStart hook stopped printing a write error every session** — each `printf` now routes through `cat` to absorb the broken pipe, and the output is otherwise unchanged. (#1612, reported by @silvertakana)
105
+ - **Windows foreground mode** tracks the right process and clears its owner PID on MSYS2. (by @nestorluiscamachopaz)
106
+ - **The `using-spark` bootstrap** no longer lists "debugging" as a skill that doesn't exist. (reported by @mhat)
107
+ - **The TDD skill** links the testing anti-patterns reference. (#1532, #1529; link fix #1474 by @Stable Genius)
108
+ - **`using-git-worktrees`** fixes its step numbering and drops stale Cursor references. (#1522, and by @fuleinist)
109
+ - **The Codex review skill** swaps a private in-joke for plain guidance. (#1531)
110
+
111
+ ### Documentation & Contributor Guidelines
112
+
113
+ - **A guide to porting SPARK to a new harness** (`docs/porting-to-a-new-harness.md`) lays out the three pieces every integration needs and the one rule that makes or breaks it: load the bootstrap at session start.
114
+ - **Every PR and issue now discloses how it was made** — model, harness, version, and installed plugins, or a note that it was written by hand. We weigh a contribution differently depending on what produced it. PRs also target `dev`, not `main`. The PR template, all three issue templates, and a new platform-support template carry this.
115
+
116
+ ### Contributors
117
+
118
+ Thanks to @mattvanhorn, @nawfal, @Nick Galatis, @silvertakana, @nestorluiscamachopaz, @qer, @mhat, @Stable Genius, @fuleinist, @dev_Hakaze, @robotsnh, Rahul, and @arittr.
119
+
120
+ ## v5.1.0 (2026-04-30)
121
+
122
+ ### Removals
123
+
124
+ - **Legacy slash commands removed** — `/brainstorm`, `/execute-plan`, and `/write-plan` are gone. They were deprecated stubs that did nothing but tell the user to invoke the corresponding skill. Invoke `spark:brainstorming`, `spark:executing-plans`, and `spark:writing-plans` directly instead. (#1188)
125
+ - **`spark:code-reviewer` named agent removed** — the agent was the plugin's only named agent and was used by exactly two skills, while every other reviewer/implementer subagent in the repo dispatches `general-purpose` with a prompt template alongside its skill. The agent's persona and checklist have been merged into `skills/requesting-code-review/code-reviewer.md` as a self-contained Task-dispatch template. Anyone dispatching `Task (spark:code-reviewer)` should switch to `Task (general-purpose)` with the prompt template instead. (PR #1299)
126
+ - **Integration sections removed from skills** — these were a legacy of the time before agents had native skills systems and didn't help with steering.
127
+
128
+ ### Worktree Skills Rewrite
129
+
130
+ `using-git-worktrees` and `finishing-a-development-branch` now detect when the agent is already running inside an isolated worktree and prefer the harness's native worktree controls before falling back to `git worktree`. Behavior was TDD-validated and cross-platform-checked across five harnesses. (PRI-974, PR #1121)
131
+
132
+ - **Environment detection** — both skills check `GIT_DIR != GIT_COMMON` before doing anything; if already in a linked worktree, creation is skipped entirely. A submodule guard prevents false detection.
133
+ - **Consent before creating worktrees** — `using-git-worktrees` no longer creates worktrees implicitly; the skill asks the user first. Fixes #991 (subagent-driven-development was auto-creating worktrees without consent).
134
+ - **Native tool preference (Step 1a)** — when the harness exposes its own worktree tool (e.g. Codex), the skill defers to it. The user's stated preference is respected when expressed.
135
+ - **Provenance-based cleanup** — `finishing-a-development-branch` only cleans up worktrees inside `.worktrees/` (created by spark); anything outside is left alone. Fixes #940 (Option 2 was incorrectly cleaning up worktrees), #999 (merge-then-remove ordering), and #238 (`cd` to repo root before `git worktree remove`).
136
+ - **Detached HEAD handling** — the finishing menu collapses to two options when there is no branch to merge from.
137
+ - **Hardcoded `/Users/jesse` paths** in skill examples replaced with generic placeholders. (#858, PR #1122)
138
+
139
+ ### Contributor Guidelines for AI Agents
140
+
141
+ Two new sections at the top of `CLAUDE.md` (symlinked to `AGENTS.md`) speak directly to AI agents. An audit of the last 100 closed PRs against this repo showed a 94% rejection rate driven by AI-generated slop: agents that didn't read the PR template, opened duplicates, fabricated problem descriptions, or pushed fork- or domain-specific changes upstream.
142
+
143
+ - **Pre-submission checklist** — read the PR template, search for existing PRs, verify a real problem exists, confirm the change belongs in core, and show the human partner the complete diff before submitting.
144
+ - **What we will not accept** — third-party dependencies, "compliance" rewrites of skill content, project-specific configuration, bulk PRs, speculative fixes, domain-specific skills, fork-specific changes, fabricated content, and bundled unrelated changes.
145
+ - **New harness PRs require a session transcript** — most past new-harness integrations copied skill files or wrapped with `npx skills` instead of loading the `using-spark` bootstrap at session start. The acceptance test ("Let's make a react todo list" must auto-trigger `brainstorming` in a clean session) and a complete transcript are now required.
146
+
147
+ ### Codex Plugin Mirror Tooling
148
+
149
+ New `sync-to-codex-plugin` script mirrors spark into the OpenAI Codex plugin marketplace as `prime-radiant-inc/openai-codex-plugins`. Path/user-agnostic so any team member can run it. (PR #1165)
150
+
151
+ - Clones the fork fresh into a temp directory per run, regenerates overlays inline, and opens a PR; auto-detects upstream from the script's own location and preflights `rsync`/`git`/`gh auth`/`python3`.
152
+ - `--bootstrap` flag for first-time setup; `EXCLUDES` patterns anchored to source root; `assets/` excluded.
153
+ - Mirrors `CODE_OF_CONDUCT.md`; drops the `agents/openai.yaml` overlay.
154
+ - Seeds `interface.defaultPrompt` in the mirrored `plugin.json`. (PR #1180 by @arittr)
155
+ - Codex plugin files are committed to the source repo so the sync script uses canonical versions; Codex marketplace metadata is preserved.
156
+
157
+ ### OpenCode
158
+
159
+ - **Bootstrap content cached at module level** — `getBootstrapContent()` was calling `fs.existsSync` + `fs.readFileSync` + frontmatter regex on every agent step (the `experimental.chat.messages.transform` hook fires on every step in OpenCode's agent loop). Now read once, cached for the session lifetime, with a null sentinel for the missing-file case. 15 regression tests cover cache behavior, fs call counts, the injection guard, the missing-file sentinel, and cache reset. (Fixes #1202)
160
+ - **Integration tests modernized**.
161
+ - **Install caveats clarified** in the README.
162
+
163
+ ### Code Review Consolidation
164
+
165
+ `requesting-code-review` is now self-contained: the persona, checklist, and dispatch template live in `skills/requesting-code-review/code-reviewer.md` and the skill dispatches `Task (general-purpose)` directly. (PR #1299)
166
+
167
+ - **Single source of truth** — the persona/checklist that previously lived in both `agents/code-reviewer.md` and the skill's placeholder template (and drifted independently) is now one file.
168
+ - **`subagent-driven-development` follows suit** — its `code-quality-reviewer-prompt.md` now dispatches `Task (general-purpose)` instead of the named agent.
169
+ - **Behavioral test added** — `tests/claude-code/test-requesting-code-review.sh` plants real bugs (SQL injection, plaintext password handling, credential logging) into a tiny project and asserts the dispatched reviewer flags every planted issue at Critical/Important severity and refuses to approve the diff.
170
+
171
+ > Note: `tests/claude-code/test-requesting-code-review.sh` and `tests/claude-code/test-document-review-system.sh` (mentioned later in this document) were lifted into drill scenarios on 2026-05-06 and removed from `tests/`. See `evals/scenarios/code-review-catches-planted-bugs.yaml` and `evals/scenarios/spec-reviewer-catches-planted-flaws.yaml`. The references above and below are preserved as dated artifacts of the work this section describes.
172
+ - **Codex and Copilot workaround docs trimmed** — the "Named agent dispatch" sections in `references/codex-tools.md` and `references/copilot-tools.md` documented how to flatten a named agent into a generic dispatch. With no named agents shipping, the workaround is unnecessary; both sections were dropped.
173
+
174
+ ### Subagent-Driven Development
175
+
176
+ - **No more pause every 3 tasks** — the "review after each batch (3 tasks)" cadence in `requesting-code-review` (originally for `executing-plans`) was leaking into `subagent-driven-development`. Replaced with "each task or at natural checkpoints" plus an explicit continuous-execution directive.
177
+ - **SDD integration test now runs its assertions** — three independent bugs caused the test to silently bail before printing any verification results: an unresolved `..` segment in the working-dir path, a `set -euo pipefail` interaction with `find | sort | head -1` (SIGPIPE on the producer killed the script), and a missing `--plugin-dir` on the `claude -p` invocation that caused the test to load the installed plugin instead of the working tree. All three fixed; six verification tests now actually run against a real end-to-end SDD run.
178
+
179
+ ### Cursor
180
+
181
+ - **Windows SessionStart hook** routed through `run-hook.cmd` instead of invoking the extensionless `session-start` script directly. Fixes Windows opening the file in an editor instead of running it. Also removed an accidental UTF-8 BOM from `hooks-cursor.json`.
182
+
183
+ ### Gemini CLI
184
+
185
+ - **Subagent dispatch mapping** — Gemini's `Task` dispatch now maps to `@agent-name` / `@generalist`, with parallel subagent dispatch documented for independent tasks.
186
+
187
+ ### Skills
188
+
189
+ - **Terminology cleanups** across skill content.
190
+
191
+ ### Documentation & Install
192
+
193
+ - **Factory Droid installation instructions** added to README.
194
+ - **Quickstart install links** in README. (PR #1293 by @arittr)
195
+ - **Codex plugin install guidance** updated. (PR #1288 by @arittr)
196
+ - **Codex `wait` mapping corrected** to `wait_agent` in the tools reference.
197
+ - **Install order reorganized**; Codex install instructions cleaned up.
198
+ - **Removed vestigial `CHANGELOG.md`** in favor of `RELEASE-NOTES.md` as the single source. (PR #1163 by @shaanmajid)
199
+ - **Discord invite link** fixed; release announcements link and a detailed Discord description added to the Community section.
200
+
201
+ ### Community
202
+
203
+ - @shaanmajid — vestigial `CHANGELOG.md` removal (PR #1163)
204
+ - @arittr — README quickstart install links (#1293), Codex plugin install guidance (#1288), `sync-to-codex-plugin` `interface.defaultPrompt` seed (#1180)
205
+
206
+ ## v5.0.7 (2026-03-31)
207
+
208
+ ### GitHub Copilot CLI Support
209
+
210
+ - **SessionStart context injection** — Copilot CLI v1.0.11 added support for `additionalContext` in sessionStart hook output. The session-start hook now detects the `COPILOT_CLI` environment variable and emits the SDK-standard `{ "additionalContext": "..." }` format, giving Copilot CLI users the full spark bootstrap at session start. (Original fix by @culinablaz in PR #910)
211
+ - **Tool mapping** — added `references/copilot-tools.md` with the full Claude Code to Copilot CLI tool equivalence table
212
+ - **Skill and README updates** — added Copilot CLI to the `using-spark` skill's platform instructions and README installation section
213
+
214
+ ### OpenCode Fixes
215
+
216
+ - **Skills path consistency** — the bootstrap text no longer advertises a misleading `configDir/skills/spark/` path that didn't match the runtime path. The agent should use the native `skill` tool, not navigate to files by path. Tests now use consistent paths derived from a single source of truth. (#847, #916)
217
+ - **Bootstrap as user message** — moved bootstrap injection from `experimental.chat.system.transform` to `experimental.chat.messages.transform`, prepending to the first user message instead of adding a system message. Avoids token bloat from system messages repeated every turn (#750) and fixes compatibility with Qwen and other models that break on multiple system messages (#894).
218
+
219
+ ## v5.0.6 (2026-03-24)
220
+
221
+ ### Inline Self-Review Replaces Subagent Review Loops
222
+
223
+ The subagent review loop (dispatching a fresh agent to review plans/specs) doubled execution time (~25 min overhead) without measurably improving plan quality. Regression testing across 5 versions with 5 trials each showed identical quality scores regardless of whether the review loop ran.
224
+
225
+ - **brainstorming** — replaced Spec Review Loop (subagent dispatch + 3-iteration cap) with inline Spec Self-Review checklist: placeholder scan, internal consistency, scope check, ambiguity check
226
+ - **writing-plans** — replaced Plan Review Loop (subagent dispatch + 3-iteration cap) with inline Self-Review checklist: spec coverage, placeholder scan, type consistency
227
+ - **writing-plans** — added explicit "No Placeholders" section defining plan failures (TBD, vague descriptions, undefined references, "similar to Task N")
228
+ - Self-review catches 3-5 real bugs per run in ~30s instead of ~25 min, with comparable defect rates to the subagent approach
229
+
230
+ ### Brainstorm Server
231
+
232
+ - **Session directory restructured** — the brainstorm server session directory now contains two peer subdirectories: `content/` (HTML files served to the browser) and `state/` (events, server-info, pid, log). Previously, server state and user interaction data were stored alongside served content, making them accessible over HTTP. The `screen_dir` and `state_dir` paths are both included in the server-started JSON. (Reported by 吉田仁)
233
+
234
+ ### Bug Fixes
235
+
236
+ - **Owner-PID lifecycle fixes** — the brainstorm server's owner-PID monitoring had two bugs causing false shutdowns within 60 seconds: (1) EPERM from cross-user PIDs (Tailscale SSH, etc.) was treated as "process dead", and (2) on WSL the grandparent PID resolves to a short-lived subprocess that exits before the first lifecycle check. Fixed by treating EPERM as "alive" and validating the owner PID at startup — if it's already dead, monitoring is disabled and the server relies on the 30-minute idle timeout. This also removes the Windows/MSYS2-specific carve-out from `start-server.sh` since the server now handles it generically. (#879)
237
+ - **writing-skills** — corrected false claim that SKILL.md frontmatter supports "only two fields"; now says "two required fields" and links to the agentskills.io specification for all supported fields (PR #882 by @arittr)
238
+
239
+ ### Codex App Compatibility
240
+
241
+ - **codex-tools** — added named agent dispatch mapping documenting how to translate Claude Code's named agent types to Codex's `spawn_agent` with worker roles (PR #647 by @arittr)
242
+ - **codex-tools** — added environment detection and Codex App finishing sections for worktree-aware skills (by @arittr)
243
+ - **Design spec** — added Codex App compatibility design spec (PRI-823) covering read-only environment detection, worktree-safe skill behavior, and sandbox fallback patterns (by @arittr)
244
+
245
+ ## v5.0.5 (2026-03-17)
246
+
247
+ ### Bug Fixes
248
+
249
+ - **Brainstorm server ESM fix** — renamed `server.js` → `server.cjs` so the brainstorming server starts correctly on Node.js 22+ where the root `package.json` `"type": "module"` caused `require()` to fail. (PR #784 by @sarbojitrana, fixes #774, #780, #783)
250
+ - **Brainstorm owner-PID on Windows** — skip PID lifecycle monitoring on Windows/MSYS2 where the PID namespace is invisible to Node.js, preventing the server from self-terminating after 60 seconds. (#770, docs from PR #768 by @lucasyhzlu-debug)
251
+ - **stop-server.sh reliability** — verify the server process actually died before reporting success. SIGTERM + 2s wait + SIGKILL fallback. (#723)
252
+
253
+ ### Changed
254
+
255
+ - **Execution handoff** — restore user choice between subagent-driven and inline execution after plan writing. Subagent-driven is recommended but no longer mandatory.
256
+
257
+ ## v5.0.4 (2026-03-16)
258
+
259
+ ### Review Loop Refinements
260
+
261
+ Dramatically reduces token usage and speeds up spec and plan reviews by eliminating unnecessary review passes and tightening reviewer focus.
262
+
263
+ - **Single whole-plan review** — plan reviewer now reviews the complete plan in one pass instead of chunk-by-chunk. Removed all chunk-related concepts (`## Chunk N:` headings, 1000-line chunk limits, per-chunk dispatch).
264
+ - **Raised the bar for blocking issues** — both spec and plan reviewer prompts now include a "Calibration" section: only flag issues that would cause real problems during implementation. Minor wording, stylistic preferences, and formatting quibbles should not block approval.
265
+ - **Reduced max review iterations** — from 5 to 3 for both spec and plan review loops. If the reviewer is calibrated correctly, 3 rounds is plenty.
266
+ - **Streamlined reviewer checklists** — spec reviewer trimmed from 7 categories to 5; plan reviewer from 7 to 4. Removed formatting-focused checks (task syntax, chunk size) in favor of substance (buildability, spec alignment).
267
+
268
+ ### OpenCode
269
+
270
+ - **One-line plugin install** — OpenCode plugin now auto-registers the skills directory via a `config` hook. No symlinks or `skills.paths` config needed. Install is just adding one line to `opencode.json`. (PR #753)
271
+ - **Added `package.json`** so OpenCode can install spark as an npm package from git.
272
+
273
+ ### Bug Fixes
274
+
275
+ - **Verify server actually stopped** — `stop-server.sh` now confirms the process is dead before reporting success. SIGTERM + 2s wait + SIGKILL fallback. Reports failure if the process survives. (PR #751)
276
+ - **Generic agent language** — brainstorm companion waiting page now says "the agent" instead of "Claude".
277
+
278
+ ## v5.0.3 (2026-03-15)
279
+
280
+ ### Cursor Support
281
+
282
+ - **Cursor hooks** — added `hooks/hooks-cursor.json` with Cursor's camelCase format (`sessionStart`, `version: 1`) and updated `.cursor-plugin/plugin.json` to reference it. Fixed platform detection in `session-start` to check `CURSOR_PLUGIN_ROOT` first (Cursor may also set `CLAUDE_PLUGIN_ROOT`). (Based on PR #709)
283
+
284
+ ### Bug Fixes
285
+
286
+ - **Stop firing SessionStart hook on `--resume`** — the startup hook was re-injecting context on resumed sessions, which already have the context in their conversation history. The hook now fires only on `startup`, `clear`, and `compact`.
287
+ - **Bash 5.3+ hook hang** — replaced heredoc (`cat <<EOF`) with `printf` in `hooks/session-start`. Fixes indefinite hang on macOS with Homebrew bash 5.3+ caused by a bash regression with large variable expansion in heredocs. (#572, #571)
288
+ - **POSIX-safe hook script** — replaced `${BASH_SOURCE[0]:-$0}` with `$0` in `hooks/session-start`. Fixes "Bad substitution" error on Ubuntu/Debian where `/bin/sh` is dash. (#553)
289
+ - **Portable shebangs** — replaced `#!/bin/bash` with `#!/usr/bin/env bash` in all shell scripts. Fixes execution on NixOS, FreeBSD, and macOS with Homebrew bash where `/bin/bash` is outdated or missing. (#700)
290
+ - **Brainstorm server on Windows** — auto-detect Windows/Git Bash (`OSTYPE=msys*`, `MSYSTEM`) and switch to foreground mode, fixing silent server failure caused by `nohup`/`disown` process reaping. (#737)
291
+ - **Codex docs fix** — replaced deprecated `collab` flag with `multi_agent` in Codex documentation. (PR #749)
292
+
293
+ ## v5.0.2 (2026-03-11)
294
+
295
+ ### Zero-Dependency Brainstorm Server
296
+
297
+ **Removed all vendored node_modules — server.js is now fully self-contained**
298
+
299
+ - Replaced Express/Chokidar/WebSocket dependencies with zero-dependency Node.js server using built-in `http`, `fs`, and `crypto` modules
300
+ - Removed ~1,200 lines of vendored `node_modules/`, `package.json`, and `package-lock.json`
301
+ - Custom WebSocket protocol implementation (RFC 6455 framing, ping/pong, proper close handshake)
302
+ - Native `fs.watch()` file watching replaces Chokidar
303
+ - Full test suite: HTTP serving, WebSocket protocol, file watching, and integration tests
304
+
305
+ ### Brainstorm Server Reliability
306
+
307
+ - **Auto-exit after 30 minutes idle** — server shuts down when no clients are connected, preventing orphaned processes
308
+ - **Owner process tracking** — server monitors the parent harness PID and exits when the owning session dies
309
+ - **Liveness check** — skill verifies server is responsive before reusing an existing instance
310
+ - **Encoding fix** — proper `<meta charset="utf-8">` on served HTML pages
311
+
312
+ ### Subagent Context Isolation
313
+
314
+ - All delegation skills (brainstorming, dispatching-parallel-agents, requesting-code-review, subagent-driven-development, writing-plans) now include context isolation principle
315
+ - Subagents receive only the context they need, preventing context window pollution
316
+
317
+ ## v5.0.1 (2026-03-10)
318
+
319
+ ### Agentskills Compliance
320
+
321
+ **Brainstorm-server moved into skill directory**
322
+
323
+ - Moved `lib/brainstorm-server/` → `skills/brainstorming/scripts/` per the [agentskills.io](https://agentskills.io) specification
324
+ - All `${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/` references replaced with relative `scripts/` paths
325
+ - Skills are now fully portable across platforms — no platform-specific env vars needed to locate scripts
326
+ - `lib/` directory removed (was the last remaining content)
327
+
328
+ ### New Features
329
+
330
+ **Gemini CLI extension**
331
+
332
+ - Native Gemini CLI extension support via `gemini-extension.json` and `GEMINI.md` at repo root
333
+ - `GEMINI.md` @imports `using-spark` skill and tool mapping table at session start
334
+ - Gemini CLI tool mapping reference (`skills/using-spark/references/gemini-tools.md`) — translates Claude Code tool names (Read, Write, Edit, Bash, etc.) to Gemini CLI equivalents (read_file, write_file, replace, etc.)
335
+ - Documents Gemini CLI limitations: no subagent support, skills fall back to `executing-plans`
336
+ - Extension root at repo root for cross-platform compatibility (avoids Windows symlink issues)
337
+ - Install instructions added to README
338
+
339
+ ### Improvements
340
+
341
+ **Multi-platform brainstorm server launch**
342
+
343
+ - Per-platform launch instructions in visual-companion.md: Claude Code (default mode), Codex (auto-foreground via `CODEX_CI`), Gemini CLI (`--foreground` with `is_background`), and fallback for other environments
344
+ - Server now writes startup JSON to `$SCREEN_DIR/.server-info` so agents can find the URL and port even when stdout is hidden by background execution
345
+
346
+ **Brainstorm server dependencies bundled**
347
+
348
+ - `node_modules` vendored into the repo so the brainstorm server works immediately on fresh plugin installs without requiring `npm` at runtime
349
+ - Removed `fsevents` from bundled deps (macOS-only native binary; chokidar falls back gracefully without it)
350
+ - Fallback auto-install via `npm install` if `node_modules` is missing
351
+
352
+ **OpenCode tool mapping fix**
353
+
354
+ - `TodoWrite` → `todowrite` (was incorrectly mapped to `update_plan`); verified against OpenCode source
355
+
356
+ ### Bug Fixes
357
+
358
+ **Windows/Linux: single quotes break SessionStart hook** (#577, #529, #644, PR #585)
359
+
360
+ - Single quotes around `${CLAUDE_PLUGIN_ROOT}` in hooks.json fail on Windows (cmd.exe doesn't recognize single quotes as path delimiters) and on Linux (single quotes prevent variable expansion)
361
+ - Fix: replaced single quotes with escaped double quotes — works across macOS bash, Windows cmd.exe, Windows Git Bash, and Linux, with and without spaces in paths
362
+ - Verified on Windows 11 (NT 10.0.26200.0) with Claude Code 2.1.72 and Git for Windows
363
+
364
+ **Brainstorming spec review loop skipped** (#677)
365
+
366
+ - The spec review loop (dispatch spec-document-reviewer subagent, iterate until approved) existed in the prose "After the Design" section but was missing from the checklist and process flow diagram
367
+ - Since agents follow the diagram and checklist more reliably than prose, the spec review step was being skipped entirely
368
+ - Added step 7 (spec review loop) to the checklist and corresponding nodes to the dot graph
369
+ - Tested with `claude --plugin-dir` and `claude-session-driver`: worker now correctly dispatches the reviewer
370
+
371
+ **Cursor install command** (PR #676)
372
+
373
+ - Fixed Cursor install command in README: `/plugin-add` → `/add-plugin` (confirmed via Cursor 2.5 release announcement)
374
+
375
+ **User review gate in brainstorming** (#565)
376
+
377
+ - Added explicit user review step between spec completion and writing-plans handoff
378
+ - User must approve the spec before implementation planning begins
379
+ - Checklist, process flow, and prose updated with the new gate
380
+
381
+ **Session-start hook emits context only once per platform**
382
+
383
+ - Hook now detects whether it's running in Claude Code or another platform
384
+ - Emits `hookSpecificOutput` for Claude Code, `additional_context` for others — prevents double context injection
385
+
386
+ **Linting fix in token analysis script**
387
+
388
+ - `except:` → `except Exception:` in `tests/claude-code/analyze-token-usage.py`
389
+
390
+ ### Maintenance
391
+
392
+ **Removed dead code**
393
+
394
+ - Deleted `lib/skills-core.js` and its test (`tests/opencode/test-skills-core.js`) — unused since February 2026
395
+ - Removed skills-core existence check from `tests/opencode/test-plugin-loading.sh`
396
+
397
+ ### Community
398
+
399
+ - @karuturi — Claude Code official marketplace install instructions (PR #610)
400
+ - @mvanhorn — session-start hook dual-emit fix, OpenCode tool mapping fix
401
+ - @daniel-graham — linting fix for bare except
402
+ - PR #585 author — Windows/Linux hooks quoting fix
403
+
404
+ ---
405
+
406
+ ## v5.0.0 (2026-03-09)
407
+
408
+ ### Breaking Changes
409
+
410
+ **Specs and plans directory restructured**
411
+
412
+ - Specs (brainstorming output) now save to `docs/spark/specs/YYYY-MM-DD-<topic>-design.md`
413
+ - Plans (writing-plans output) now save to `docs/spark/plans/YYYY-MM-DD-<feature-name>.md`
414
+ - User preferences for spec/plan locations override these defaults
415
+ - All internal skill references, test files, and example paths updated to match
416
+ - Migration: move existing files from `docs/plans/` to new locations if desired
417
+
418
+ **Subagent-driven development mandatory on capable harnesses**
419
+
420
+ Writing-plans no longer offers a choice between subagent-driven and executing-plans. On harnesses with subagent support (Claude Code, Codex), subagent-driven-development is required. Executing-plans is reserved for harnesses without subagent capability, and now tells the user that SPARK works better on a subagent-capable platform.
421
+
422
+ **Executing-plans no longer batches**
423
+
424
+ Removed the "execute 3 tasks then stop for review" pattern. Plans now execute continuously, stopping only for blockers.
425
+
426
+ **Slash commands deprecated**
427
+
428
+ `/brainstorm`, `/write-plan`, and `/execute-plan` now show deprecation notices pointing users to the corresponding skills. Commands will be removed in the next major release.
429
+
430
+ ### New Features
431
+
432
+ **Visual brainstorming companion**
433
+
434
+ Optional browser-based companion for brainstorming sessions. When a topic would benefit from visuals, the brainstorming skill offers to show mockups, diagrams, comparisons, and other content in a browser window alongside terminal conversation.
435
+
436
+ - `lib/brainstorm-server/` — WebSocket server with browser helper library, session management scripts, and dark/light themed frame template ("SPARK Brainstorming" with GitHub link)
437
+ - `skills/brainstorming/visual-companion.md` — Progressive disclosure guide for server workflow, screen authoring, and feedback collection
438
+ - Brainstorming skill adds a visual companion decision point to its process flow: after exploring project context, the skill evaluates whether upcoming questions involve visual content and offers the companion in its own message
439
+ - Per-question decision: even after accepting, each question is evaluated for whether browser or terminal is more appropriate
440
+ - Integration tests in `tests/brainstorm-server/`
441
+
442
+ **Document review system**
443
+
444
+ Automated review loops for spec and plan documents using subagent dispatch:
445
+
446
+ - `skills/brainstorming/spec-document-reviewer-prompt.md` — Reviewer checks completeness, consistency, architecture, and YAGNI
447
+ - `skills/writing-plans/plan-document-reviewer-prompt.md` — Reviewer checks spec alignment, task decomposition, file structure, and file size
448
+ - Brainstorming dispatches spec reviewer after writing the design doc
449
+ - Writing-plans includes chunk-based plan review loop after each section
450
+ - Review loops repeat until approved or escalate after 5 iterations
451
+ - End-to-end tests in `tests/claude-code/test-document-review-system.sh`
452
+ - Design spec and implementation plan in `docs/spark/`
453
+
454
+ **Architecture guidance across the skill pipeline**
455
+
456
+ Design-for-isolation and file-size-awareness guidance added to brainstorming, writing-plans, and subagent-driven-development:
457
+
458
+ - **Brainstorming** — New sections: "Design for isolation and clarity" (clear boundaries, well-defined interfaces, independently testable units) and "Working in existing codebases" (follow existing patterns, targeted improvements only)
459
+ - **Writing-plans** — New "File Structure" section: map out files and responsibilities before defining tasks. New "Scope Check" backstop: catch multi-subsystem specs that should have been decomposed during brainstorming
460
+ - **SDD implementer** — New "Code Organization" section (follow plan's file structure, report concerns about growing files) and "When You're in Over Your Head" escalation guidance
461
+ - **SDD code quality reviewer** — Now checks architecture, unit decomposition, plan conformance, and file growth
462
+ - **Spec/plan reviewers** — Architecture and file size added to review criteria
463
+ - **Scope assessment** — Brainstorming now assesses whether a project is too large for a single spec. Multi-subsystem requests are flagged early and decomposed into sub-projects, each with its own spec → plan → implementation cycle
464
+
465
+ **Subagent-driven development improvements**
466
+
467
+ - **Model selection** — Guidance for choosing model capability by task type: cheap models for mechanical implementation, standard for integration, capable for architecture and review
468
+ - **Implementer status protocol** — Subagents now report DONE, DONE_WITH_CONCERNS, BLOCKED, or NEEDS_CONTEXT. Controller handles each status appropriately: re-dispatching with more context, upgrading model capability, breaking tasks apart, or escalating to human
469
+
470
+ ### Improvements
471
+
472
+ **Instruction priority hierarchy**
473
+
474
+ Added explicit priority ordering to using-spark:
475
+
476
+ 1. User's explicit instructions (CLAUDE.md, AGENTS.md, direct requests) — highest priority
477
+ 2. SPARK skills — override default system behavior
478
+ 3. Default system prompt — lowest priority
479
+
480
+ If CLAUDE.md or AGENTS.md says "don't use TDD" and a skill says "always use TDD," the user's instructions win.
481
+
482
+ **SUBAGENT-STOP gate**
483
+
484
+ Added `<SUBAGENT-STOP>` block to using-spark. Subagents dispatched for specific tasks now skip the skill instead of activating the 1% rule and invoking full skill workflows.
485
+
486
+ **Multi-platform improvements**
487
+
488
+ - Codex tool mapping moved to progressive disclosure reference file (`references/codex-tools.md`)
489
+ - Platform Adaptation pointer added so non-Claude-Code platforms can find tool equivalents
490
+ - Plan headers now address "agentic workers" instead of "Claude" specifically
491
+ - Collab feature requirement documented in `docs/README.codex.md`
492
+
493
+ **Writing-plans template updates**
494
+
495
+ - Plan steps now use checkbox syntax (`- [ ] **Step N:**`) for progress tracking
496
+ - Plan header references both subagent-driven-development and executing-plans with platform-aware routing
497
+
498
+ ---
499
+
500
+ ## v4.3.1 (2026-02-21)
501
+
502
+ ### Added
503
+
504
+ **Cursor support**
505
+
506
+ SPARK now works with Cursor's plugin system. Includes a `.cursor-plugin/plugin.json` manifest and Cursor-specific installation instructions in the README. The SessionStart hook output now includes an `additional_context` field alongside the existing `hookSpecificOutput.additionalContext` for Cursor hook compatibility.
507
+
508
+ ### Fixed
509
+
510
+ **Windows: Restored polyglot wrapper for reliable hook execution (#518, #504, #491, #487, #466, #440)**
511
+
512
+ Claude Code's `.sh` auto-detection on Windows was prepending `bash` to the hook command, breaking execution. The fix:
513
+
514
+ - Renamed `session-start.sh` to `session-start` (extensionless) so auto-detection doesn't interfere
515
+ - Restored `run-hook.cmd` polyglot wrapper with multi-location bash discovery (standard Git for Windows paths, then PATH fallback)
516
+ - Exits silently if no bash is found rather than erroring
517
+ - On Unix, the wrapper runs the script directly via `exec bash`
518
+ - Uses POSIX-safe `dirname "$0"` path resolution (works on dash/sh, not just bash)
519
+
520
+ This fixes SessionStart failures on Windows with spaces in paths, missing WSL, `set -euo pipefail` fragility on MSYS, and backslash mangling.
521
+
522
+ ## v4.3.0 (2026-02-12)
523
+
524
+ This fix should dramatically improve spark skills compliance and should reduce the chances of Claude entering its native plan mode unintentionally.
525
+
526
+ ### Changed
527
+
528
+ **Brainstorming skill now enforces its workflow instead of describing it**
529
+
530
+ Models were skipping the design phase and jumping straight to implementation skills like frontend-design, or collapsing the entire brainstorming process into a single text block. The skill now uses hard gates, a mandatory checklist, and a graphviz process flow to enforce compliance:
531
+
532
+ - `<HARD-GATE>`: no implementation skills, code, or scaffolding until design is presented and user approves
533
+ - Explicit checklist (6 items) that must be created as tasks and completed in order
534
+ - Graphviz process flow with `writing-plans` as the only valid terminal state
535
+ - Anti-pattern callout for "this is too simple to need a design" — the exact rationalization models use to skip the process
536
+ - Design section sizing based on section complexity, not project complexity
537
+
538
+ **Using-spark workflow graph intercepts EnterPlanMode**
539
+
540
+ Added an `EnterPlanMode` intercept to the skill flow graph. When the model is about to enter Claude's native plan mode, it checks whether brainstorming has happened and routes through the brainstorming skill instead. Plan mode is never entered.
541
+
542
+ ### Fixed
543
+
544
+ **SessionStart hook now runs synchronously**
545
+
546
+ Changed `async: true` to `async: false` in hooks.json. When async, the hook could fail to complete before the model's first turn, meaning using-spark instructions weren't in context for the first message.
547
+
548
+ ## v4.2.0 (2026-02-05)
549
+
550
+ ### Breaking Changes
551
+
552
+ **Codex: Replaced bootstrap CLI with native skill discovery**
553
+
554
+ The `spark-codex` bootstrap CLI, Windows `.cmd` wrapper, and related bootstrap content file have been removed. Codex now uses native skill discovery via `~/.agents/skills/spark/` symlink, so the old `use_skill`/`find_skills` CLI tools are no longer needed.
555
+
556
+ Installation is now just clone + symlink (documented in INSTALL.md). No Node.js dependency required. The old `~/.codex/skills/` path is deprecated.
557
+
558
+ ### Fixes
559
+
560
+ **Windows: Fixed Claude Code 2.1.x hook execution (#331)**
561
+
562
+ Claude Code 2.1.x changed how hooks execute on Windows: it now auto-detects `.sh` files in commands and prepends `bash`. This broke the polyglot wrapper pattern because `bash "run-hook.cmd" session-start.sh` tries to execute the `.cmd` file as a bash script.
563
+
564
+ Fix: hooks.json now calls session-start.sh directly. Claude Code 2.1.x handles the bash invocation automatically. Also added .gitattributes to enforce LF line endings for shell scripts (fixes CRLF issues on Windows checkout).
565
+
566
+ **Windows: SessionStart hook runs async to prevent terminal freeze (#404, #413, #414, #419)**
567
+
568
+ The synchronous SessionStart hook blocked the TUI from entering raw mode on Windows, freezing all keyboard input. Running the hook async prevents the freeze while still injecting spark context.
569
+
570
+ **Windows: Fixed O(n^2) `escape_for_json` performance**
571
+
572
+ The character-by-character loop using `${input:$i:1}` was O(n^2) in bash due to substring copy overhead. On Windows Git Bash this took 60+ seconds. Replaced with bash parameter substitution (`${s//old/new}`) which runs each pattern as a single C-level pass — 7x faster on macOS, dramatically faster on Windows.
573
+
574
+ **Codex: Fixed Windows/PowerShell invocation (#285, #243)**
575
+
576
+ - Windows doesn't respect shebangs, so directly invoking the extensionless `spark-codex` script triggered an "Open with" dialog. All invocations now prefixed with `node`.
577
+ - Fixed `~/` path expansion on Windows — PowerShell doesn't expand `~` when passed as an argument to `node`. Changed to `$HOME` which expands correctly in both bash and PowerShell.
578
+
579
+ **Codex: Fixed path resolution in installer**
580
+
581
+ Used `fileURLToPath()` instead of manual URL pathname parsing to correctly handle paths with spaces and special characters on all platforms.
582
+
583
+ **Codex: Fixed stale skills path in writing-skills**
584
+
585
+ Updated `~/.codex/skills/` reference (deprecated) to `~/.agents/skills/` for native discovery.
586
+
587
+ ### Improvements
588
+
589
+ **Worktree isolation now required before implementation**
590
+
591
+ Added `using-git-worktrees` as a required skill for both `subagent-driven-development` and `executing-plans`. Implementation workflows now explicitly require setting up an isolated worktree before starting work, preventing accidental work directly on main.
592
+
593
+ **Main branch protection softened to require explicit consent**
594
+
595
+ Instead of prohibiting main branch work entirely, the skills now allow it with explicit user consent. More flexible while still ensuring users are aware of the implications.
596
+
597
+ **Simplified installation verification**
598
+
599
+ Removed `/help` command check and specific slash command list from verification steps. Skills are primarily invoked by describing what you want to do, not by running specific commands.
600
+
601
+ **Codex: Clarified subagent tool mapping in bootstrap**
602
+
603
+ Improved documentation of how Codex tools map to Claude Code equivalents for subagent workflows.
604
+
605
+ ### Tests
606
+
607
+ - Added worktree requirement test for subagent-driven-development
608
+ - Added main branch red flag warning test
609
+ - Fixed case sensitivity in skill recognition test assertions
610
+
611
+ ---
612
+
613
+ ## v4.1.1 (2026-01-23)
614
+
615
+ ### Fixes
616
+
617
+ **OpenCode: Standardized on `plugins/` directory per official docs (#343)**
618
+
619
+ OpenCode's official documentation uses `~/.config/opencode/plugins/` (plural). Our docs previously used `plugin/` (singular). While OpenCode accepts both forms, we've standardized on the official convention to avoid confusion.
620
+
621
+ Changes:
622
+ - Renamed `.opencode/plugin/` to `.opencode/plugins/` in repo structure
623
+ - Updated all installation docs (INSTALL.md, README.opencode.md) across all platforms
624
+ - Updated test scripts to match
625
+
626
+ **OpenCode: Fixed symlink instructions (#339, #342)**
627
+
628
+ - Added explicit `rm` before `ln -s` (fixes "file already exists" errors on reinstall)
629
+ - Added missing skills symlink step that was absent from INSTALL.md
630
+ - Updated from deprecated `use_skill`/`find_skills` to native `skill` tool references
631
+
632
+ ---
633
+
634
+ ## v4.1.0 (2026-01-23)
635
+
636
+ ### Breaking Changes
637
+
638
+ **OpenCode: Switched to native skills system**
639
+
640
+ SPARK for OpenCode now uses OpenCode's native `skill` tool instead of custom `use_skill`/`find_skills` tools. This is a cleaner integration that works with OpenCode's built-in skill discovery.
641
+
642
+ **Migration required:** Skills must be symlinked to `~/.config/opencode/skills/spark/` (see updated installation docs).
643
+
644
+ ### Fixes
645
+
646
+ **OpenCode: Fixed agent reset on session start (#226)**
647
+
648
+ The previous bootstrap injection method using `session.prompt({ noReply: true })` caused OpenCode to reset the selected agent to "build" on first message. Now uses `experimental.chat.system.transform` hook which modifies the system prompt directly without side effects.
649
+
650
+ **OpenCode: Fixed Windows installation (#232)**
651
+
652
+ - Removed dependency on `skills-core.js` (eliminates broken relative imports when file is copied instead of symlinked)
653
+ - Added comprehensive Windows installation docs for cmd.exe, PowerShell, and Git Bash
654
+ - Documented proper symlink vs junction usage for each platform
655
+
656
+ **Claude Code: Fixed Windows hook execution for Claude Code 2.1.x**
657
+
658
+ Claude Code 2.1.x changed how hooks execute on Windows: it now auto-detects `.sh` files in commands and prepends `bash `. This broke the polyglot wrapper pattern because `bash "run-hook.cmd" session-start.sh` tries to execute the .cmd file as a bash script.
659
+
660
+ Fix: hooks.json now calls session-start.sh directly. Claude Code 2.1.x handles the bash invocation automatically. Also added .gitattributes to enforce LF line endings for shell scripts (fixes CRLF issues on Windows checkout).
661
+
662
+ ---
663
+
664
+ ## v4.0.3 (2025-12-26)
665
+
666
+ ### Improvements
667
+
668
+ **Strengthened using-spark skill for explicit skill requests**
669
+
670
+ Addressed a failure mode where Claude would skip invoking a skill even when the user explicitly requested it by name (e.g., "subagent-driven-development, please"). Claude would think "I know what that means" and start working directly instead of loading the skill.
671
+
672
+ Changes:
673
+ - Updated "The Rule" to say "Invoke relevant or requested skills" instead of "Check for skills" - emphasizing active invocation over passive checking
674
+ - Added "BEFORE any response or action" - the original wording only mentioned "response" but Claude would sometimes take action without responding first
675
+ - Added reassurance that invoking a wrong skill is okay - reduces hesitation
676
+ - Added new red flag: "I know what that means" → Knowing the concept ≠ using the skill
677
+
678
+ **Added explicit skill request tests**
679
+
680
+ New test suite in `tests/explicit-skill-requests/` that verifies Claude correctly invokes skills when users request them by name. Includes single-turn and multi-turn test scenarios.
681
+
682
+ ## v4.0.2 (2025-12-23)
683
+
684
+ ### Fixes
685
+
686
+ **Slash commands now user-only**
687
+
688
+ Added `disable-model-invocation: true` to all three slash commands (`/brainstorm`, `/execute-plan`, `/write-plan`). Claude can no longer invoke these commands via the Skill tool—they're restricted to manual user invocation only.
689
+
690
+ The underlying skills (`spark:brainstorming`, `spark:executing-plans`, `spark:writing-plans`) remain available for Claude to invoke autonomously. This change prevents confusion when Claude would invoke a command that just redirects to a skill anyway.
691
+
692
+ ## v4.0.1 (2025-12-23)
693
+
694
+ ### Fixes
695
+
696
+ **Clarified how to access skills in Claude Code**
697
+
698
+ Fixed a confusing pattern where Claude would invoke a skill via the Skill tool, then try to Read the skill file separately. The `using-spark` skill now explicitly states that the Skill tool loads skill content directly—no need to read files.
699
+
700
+ - Added "How to Access Skills" section to `using-spark`
701
+ - Changed "read the skill" → "invoke the skill" in instructions
702
+ - Updated slash commands to use fully qualified skill names (e.g., `spark:brainstorming`)
703
+
704
+ **Added GitHub thread reply guidance to receiving-code-review** (h/t @ralphbean)
705
+
706
+ Added a note about replying to inline review comments in the original thread rather than as top-level PR comments.
707
+
708
+ **Added automation-over-documentation guidance to writing-skills** (h/t @EthanJStark)
709
+
710
+ Added guidance that mechanical constraints should be automated, not documented—save skills for judgment calls.
711
+
712
+ ## v4.0.0 (2025-12-17)
713
+
714
+ ### New Features
715
+
716
+ **Two-stage code review in subagent-driven-development**
717
+
718
+ Subagent workflows now use two separate review stages after each task:
719
+
720
+ 1. **Spec compliance review** - Skeptical reviewer verifies implementation matches spec exactly. Catches missing requirements AND over-building. Won't trust implementer's report—reads actual code.
721
+
722
+ 2. **Code quality review** - Only runs after spec compliance passes. Reviews for clean code, test coverage, maintainability.
723
+
724
+ This catches the common failure mode where code is well-written but doesn't match what was requested. Reviews are loops, not one-shot: if reviewer finds issues, implementer fixes them, then reviewer checks again.
725
+
726
+ Other subagent workflow improvements:
727
+ - Controller provides full task text to workers (not file references)
728
+ - Workers can ask clarifying questions before AND during work
729
+ - Self-review checklist before reporting completion
730
+ - Plan read once at start, extracted to TodoWrite
731
+
732
+ New prompt templates in `skills/subagent-driven-development/`:
733
+ - `implementer-prompt.md` - Includes self-review checklist, encourages questions
734
+ - `spec-reviewer-prompt.md` - Skeptical verification against requirements
735
+ - `code-quality-reviewer-prompt.md` - Standard code review
736
+
737
+ **Debugging techniques consolidated with tools**
738
+
739
+ `systematic-debugging` now bundles supporting techniques and tools:
740
+ - `root-cause-tracing.md` - Trace bugs backward through call stack
741
+ - `defense-in-depth.md` - Add validation at multiple layers
742
+ - `condition-based-waiting.md` - Replace arbitrary timeouts with condition polling
743
+ - `find-polluter.sh` - Bisection script to find which test creates pollution
744
+ - `condition-based-waiting-example.ts` - Complete implementation from real debugging session
745
+
746
+ **Testing anti-patterns reference**
747
+
748
+ `test-driven-development` now includes `testing-anti-patterns.md` covering:
749
+ - Testing mock behavior instead of real behavior
750
+ - Adding test-only methods to production classes
751
+ - Mocking without understanding dependencies
752
+ - Incomplete mocks that hide structural assumptions
753
+
754
+ **Skill test infrastructure**
755
+
756
+ Three new test frameworks for validating skill behavior:
757
+
758
+ `tests/skill-triggering/` - Validates skills trigger from naive prompts without explicit naming. Tests 6 skills to ensure descriptions alone are sufficient.
759
+
760
+ `tests/claude-code/` - Integration tests using `claude -p` for headless testing. Verifies skill usage via session transcript (JSONL) analysis. Includes `analyze-token-usage.py` for cost tracking.
761
+
762
+ `tests/subagent-driven-dev/` - End-to-end workflow validation with two complete test projects:
763
+ - `go-fractals/` - CLI tool with Sierpinski/Mandelbrot (10 tasks)
764
+ - `svelte-todo/` - CRUD app with localStorage and Playwright (12 tasks)
765
+
766
+ ### Major Changes
767
+
768
+ **DOT flowcharts as executable specifications**
769
+
770
+ Rewrote key skills using DOT/GraphViz flowcharts as the authoritative process definition. Prose becomes supporting content.
771
+
772
+ **The Description Trap** (documented in `writing-skills`): Discovered that skill descriptions override flowchart content when descriptions contain workflow summaries. Claude follows the short description instead of reading the detailed flowchart. Fix: descriptions must be trigger-only ("Use when X") with no process details.
773
+
774
+ **Skill priority in using-spark**
775
+
776
+ When multiple skills apply, process skills (brainstorming, debugging) now explicitly come before implementation skills. "Build X" triggers brainstorming first, then domain skills.
777
+
778
+ **brainstorming trigger strengthened**
779
+
780
+ Description changed to imperative: "You MUST use this before any creative work—creating features, building components, adding functionality, or modifying behavior."
781
+
782
+ ### Breaking Changes
783
+
784
+ **Skill consolidation** - Six standalone skills merged:
785
+ - `root-cause-tracing`, `defense-in-depth`, `condition-based-waiting` → bundled in `systematic-debugging/`
786
+ - `testing-skills-with-subagents` → bundled in `writing-skills/`
787
+ - `testing-anti-patterns` → bundled in `test-driven-development/`
788
+ - `sharing-skills` removed (obsolete)
789
+
790
+ ### Other Improvements
791
+
792
+ - **render-graphs.js** - Tool to extract DOT diagrams from skills and render to SVG
793
+ - **Rationalizations table** in using-spark - Scannable format including new entries: "I need more context first", "Let me explore first", "This feels productive"
794
+ - **docs/testing.md** - Guide to testing skills with Claude Code integration tests
795
+
796
+ ---
797
+
798
+ ## v3.6.2 (2025-12-03)
799
+
800
+ ### Fixed
801
+
802
+ - **Linux Compatibility**: Fixed polyglot hook wrapper (`run-hook.cmd`) to use POSIX-compliant syntax
803
+ - Replaced bash-specific `${BASH_SOURCE[0]:-$0}` with standard `$0` on line 16
804
+ - Resolves "Bad substitution" error on Ubuntu/Debian systems where `/bin/sh` is dash
805
+ - Fixes #141
806
+
807
+ ---
808
+
809
+ ## v3.5.1 (2025-11-24)
810
+
811
+ ### Changed
812
+
813
+ - **OpenCode Bootstrap Refactor**: Switched from `chat.message` hook to `session.created` event for bootstrap injection
814
+ - Bootstrap now injects at session creation via `session.prompt()` with `noReply: true`
815
+ - Explicitly tells the model that using-spark is already loaded to prevent redundant skill loading
816
+ - Consolidated bootstrap content generation into shared `getBootstrapContent()` helper
817
+ - Cleaner single-implementation approach (removed fallback pattern)
818
+
819
+ ---
820
+
821
+ ## v3.5.0 (2025-11-23)
822
+
823
+ ### Added
824
+
825
+ - **OpenCode Support**: Native JavaScript plugin for OpenCode.ai
826
+ - Custom tools: `use_skill` and `find_skills`
827
+ - Message insertion pattern for skill persistence across context compaction
828
+ - Automatic context injection via chat.message hook
829
+ - Auto re-injection on session.compacted events
830
+ - Three-tier skill priority: project > personal > spark
831
+ - Project-local skills support (`.opencode/skills/`)
832
+ - Shared core module (`lib/skills-core.js`) for code reuse with Codex
833
+ - Automated test suite with proper isolation (`tests/opencode/`)
834
+ - Platform-specific documentation (`docs/README.opencode.md`, `docs/README.codex.md`)
835
+
836
+ ### Changed
837
+
838
+ - **Refactored Codex Implementation**: Now uses shared `lib/skills-core.js` ES module
839
+ - Eliminates code duplication between Codex and OpenCode
840
+ - Single source of truth for skill discovery and parsing
841
+ - Codex successfully loads ES modules via Node.js interop
842
+
843
+ - **Improved Documentation**: Rewrote README to explain problem/solution clearly
844
+ - Removed duplicate sections and conflicting information
845
+ - Added complete workflow description (brainstorm → plan → execute → finish)
846
+ - Simplified platform installation instructions
847
+ - Emphasized skill-checking protocol over automatic activation claims
848
+
849
+ ---
850
+
851
+ ## v3.4.1 (2025-10-31)
852
+
853
+ ### Improvements
854
+
855
+ - Optimized spark bootstrap to eliminate redundant skill execution. The `using-spark` skill content is now provided directly in session context, with clear guidance to use the Skill tool only for other skills. This reduces overhead and prevents the confusing loop where agents would execute `using-spark` manually despite already having the content from session start.
856
+
857
+ ## v3.4.0 (2025-10-30)
858
+
859
+ ### Improvements
860
+
861
+ - Simplified `brainstorming` skill to return to original conversational vision. Removed heavyweight 6-phase process with formal checklists in favor of natural dialogue: ask questions one at a time, then present design in 200-300 word sections with validation. Keeps documentation and implementation handoff features.
862
+
863
+ ## v3.3.1 (2025-10-28)
864
+
865
+ ### Improvements
866
+
867
+ - Updated `brainstorming` skill to require autonomous recon before questioning, encourage recommendation-driven decisions, and prevent agents from delegating prioritization back to humans.
868
+ - Applied writing clarity improvements to `brainstorming` skill following Strunk's "Elements of Style" principles (omitted needless words, converted negative to positive form, improved parallel construction).
869
+
870
+ ### Bug Fixes
871
+
872
+ - Clarified `writing-skills` guidance so it points to the correct agent-specific personal skill directories (`~/.claude/skills` for Claude Code, `~/.codex/skills` for Codex).
873
+
874
+ ## v3.3.0 (2025-10-28)
875
+
876
+ ### New Features
877
+
878
+ **Experimental Codex Support**
879
+ - Added unified `spark-codex` script with bootstrap/use-skill/find-skills commands
880
+ - Cross-platform Node.js implementation (works on Windows, macOS, Linux)
881
+ - Namespaced skills: `spark:skill-name` for spark skills, `skill-name` for personal
882
+ - Personal skills override spark skills when names match
883
+ - Clean skill display: shows name/description without raw frontmatter
884
+ - Helpful context: shows supporting files directory for each skill
885
+ - Tool mapping for Codex: TodoWrite→update_plan, subagents→manual fallback, etc.
886
+ - Bootstrap integration with minimal AGENTS.md for automatic startup
887
+ - Complete installation guide and bootstrap instructions specific to Codex
888
+
889
+ **Key differences from Claude Code integration:**
890
+ - Single unified script instead of separate tools
891
+ - Tool substitution system for Codex-specific equivalents
892
+ - Simplified subagent handling (manual work instead of delegation)
893
+ - Updated terminology: "SPARK skills" instead of "Core skills"
894
+
895
+ ### Files Added
896
+ - `.codex/INSTALL.md` - Installation guide for Codex users
897
+ - `.codex/spark-bootstrap.md` - Bootstrap instructions with Codex adaptations
898
+ - `.codex/spark-codex` - Unified Node.js executable with all functionality
899
+
900
+ **Note:** Codex support is experimental. The integration provides core spark functionality but may require refinement based on user feedback.
901
+
902
+ ## v3.2.3 (2025-10-23)
903
+
904
+ ### Improvements
905
+
906
+ **Updated using-spark skill to use Skill tool instead of Read tool**
907
+ - Changed skill invocation instructions from Read tool to Skill tool
908
+ - Updated description: "using Read tool" → "using Skill tool"
909
+ - Updated step 3: "Use the Read tool" → "Use the Skill tool to read and run"
910
+ - Updated rationalization list: "Read the current version" → "Run the current version"
911
+
912
+ The Skill tool is the proper mechanism for invoking skills in Claude Code. This update corrects the bootstrap instructions to guide agents toward the correct tool.
913
+
914
+ ### Files Changed
915
+ - Updated: `skills/using-spark/SKILL.md` - Changed tool references from Read to Skill
916
+
917
+ ## v3.2.2 (2025-10-21)
918
+
919
+ ### Improvements
920
+
921
+ **Strengthened using-spark skill against agent rationalization**
922
+ - Added EXTREMELY-IMPORTANT block with absolute language about mandatory skill checking
923
+ - "If even 1% chance a skill applies, you MUST read it"
924
+ - "You do not have a choice. You cannot rationalize your way out."
925
+ - Added MANDATORY FIRST RESPONSE PROTOCOL checklist
926
+ - 5-step process agents must complete before any response
927
+ - Explicit "responding without this = failure" consequence
928
+ - Added Common Rationalizations section with 8 specific evasion patterns
929
+ - "This is just a simple question" → WRONG
930
+ - "I can check files quickly" → WRONG
931
+ - "Let me gather information first" → WRONG
932
+ - Plus 5 more common patterns observed in agent behavior
933
+
934
+ These changes address observed agent behavior where they rationalize around skill usage despite clear instructions. The forceful language and pre-emptive counter-arguments aim to make non-compliance harder.
935
+
936
+ ### Files Changed
937
+ - Updated: `skills/using-spark/SKILL.md` - Added three layers of enforcement to prevent skill-skipping rationalization
938
+
939
+ ## v3.2.1 (2025-10-20)
940
+
941
+ ### New Features
942
+
943
+ **Code reviewer agent now included in plugin**
944
+ - Added `spark:code-reviewer` agent to plugin's `agents/` directory
945
+ - Agent provides systematic code review against plans and coding standards
946
+ - Previously required users to have personal agent configuration
947
+ - All skill references updated to use namespaced `spark:code-reviewer`
948
+ - Fixes #55
949
+
950
+ ### Files Changed
951
+ - New: `agents/code-reviewer.md` - Agent definition with review checklist and output format
952
+ - Updated: `skills/requesting-code-review/SKILL.md` - References to `spark:code-reviewer`
953
+ - Updated: `skills/subagent-driven-development/SKILL.md` - References to `spark:code-reviewer`
954
+
955
+ ## v3.2.0 (2025-10-18)
956
+
957
+ ### New Features
958
+
959
+ **Design documentation in brainstorming workflow**
960
+ - Added Phase 4: Design Documentation to brainstorming skill
961
+ - Design documents now written to `docs/plans/YYYY-MM-DD-<topic>-design.md` before implementation
962
+ - Restores functionality from original brainstorming command that was lost during skill conversion
963
+ - Documents written before worktree setup and implementation planning
964
+ - Tested with subagent to verify compliance under time pressure
965
+
966
+ ### Breaking Changes
967
+
968
+ **Skill reference namespace standardization**
969
+ - All internal skill references now use `spark:` namespace prefix
970
+ - Updated format: `spark:test-driven-development` (previously just `test-driven-development`)
971
+ - Affects all REQUIRED SUB-SKILL, RECOMMENDED SUB-SKILL, and REQUIRED BACKGROUND references
972
+ - Aligns with how skills are invoked using the Skill tool
973
+ - Files updated: brainstorming, executing-plans, subagent-driven-development, systematic-debugging, testing-skills-with-subagents, writing-plans, writing-skills
974
+
975
+ ### Improvements
976
+
977
+ **Design vs implementation plan naming**
978
+ - Design documents use `-design.md` suffix to prevent filename collisions
979
+ - Implementation plans continue using existing `YYYY-MM-DD-<feature-name>.md` format
980
+ - Both stored in `docs/plans/` directory with clear naming distinction
981
+
982
+ ## v3.1.1 (2025-10-17)
983
+
984
+ ### Bug Fixes
985
+
986
+ - **Fixed command syntax in README** (#44) - Updated all command references to use correct namespaced syntax (`/spark:brainstorm` instead of `/brainstorm`). Plugin-provided commands are automatically namespaced by Claude Code to avoid conflicts between plugins.
987
+
988
+ ## v3.1.0 (2025-10-17)
989
+
990
+ ### Breaking Changes
991
+
992
+ **Skill names standardized to lowercase**
993
+ - All skill frontmatter `name:` fields now use lowercase kebab-case matching directory names
994
+ - Examples: `brainstorming`, `test-driven-development`, `using-git-worktrees`
995
+ - All skill announcements and cross-references updated to lowercase format
996
+ - This ensures consistent naming across directory names, frontmatter, and documentation
997
+
998
+ ### New Features
999
+
1000
+ **Enhanced brainstorming skill**
1001
+ - Added Quick Reference table showing phases, activities, and tool usage
1002
+ - Added copyable workflow checklist for tracking progress
1003
+ - Added decision flowchart for when to revisit earlier phases
1004
+ - Added comprehensive AskUserQuestion tool guidance with concrete examples
1005
+ - Added "Question Patterns" section explaining when to use structured vs open-ended questions
1006
+ - Restructured Key Principles as scannable table
1007
+
1008
+ **Anthropic best practices integration**
1009
+ - Added `skills/writing-skills/anthropic-best-practices.md` - Official Anthropic skill authoring guide
1010
+ - Referenced in writing-skills SKILL.md for comprehensive guidance
1011
+ - Provides patterns for progressive disclosure, workflows, and evaluation
1012
+
1013
+ ### Improvements
1014
+
1015
+ **Skill cross-reference clarity**
1016
+ - All skill references now use explicit requirement markers:
1017
+ - `**REQUIRED BACKGROUND:**` - Prerequisites you must understand
1018
+ - `**REQUIRED SUB-SKILL:**` - Skills that must be used in workflow
1019
+ - `**Complementary skills:**` - Optional but helpful related skills
1020
+ - Removed old path format (`skills/collaboration/X` → just `X`)
1021
+ - Updated Integration sections with categorized relationships (Required vs Complementary)
1022
+ - Updated cross-reference documentation with best practices
1023
+
1024
+ **Alignment with Anthropic best practices**
1025
+ - Fixed description grammar and voice (fully third-person)
1026
+ - Added Quick Reference tables for scanning
1027
+ - Added workflow checklists Claude can copy and track
1028
+ - Appropriate use of flowcharts for non-obvious decision points
1029
+ - Improved scannable table formats
1030
+ - All skills well under 500-line recommendation
1031
+
1032
+ ### Bug Fixes
1033
+
1034
+ - **Re-added missing command redirects** - Restored `commands/brainstorm.md` and `commands/write-plan.md` that were accidentally removed in v3.0 migration
1035
+ - Fixed `defense-in-depth` name mismatch (was `Defense-in-Depth-Validation`)
1036
+ - Fixed `receiving-code-review` name mismatch (was `Code-Review-Reception`)
1037
+ - Fixed `commands/brainstorm.md` reference to correct skill name
1038
+ - Removed references to non-existent related skills
1039
+
1040
+ ### Documentation
1041
+
1042
+ **writing-skills improvements**
1043
+ - Updated cross-referencing guidance with explicit requirement markers
1044
+ - Added reference to Anthropic's official best practices
1045
+ - Improved examples showing proper skill reference format
1046
+
1047
+ ## v3.0.1 (2025-10-16)
1048
+
1049
+ ### Changes
1050
+
1051
+ We now use Anthropic's first-party skills system!
1052
+
1053
+ ## v2.0.2 (2025-10-12)
1054
+
1055
+ ### Bug Fixes
1056
+
1057
+ - **Fixed false warning when local skills repo is ahead of upstream** - The initialization script was incorrectly warning "New skills available from upstream" when the local repository had commits ahead of upstream. The logic now correctly distinguishes between three git states: local behind (should update), local ahead (no warning), and diverged (should warn).
1058
+
1059
+ ## v2.0.1 (2025-10-12)
1060
+
1061
+ ### Bug Fixes
1062
+
1063
+ - **Fixed session-start hook execution in plugin context** (#8, PR #9) - The hook was failing silently with "Plugin hook error" preventing skills context from loading. Fixed by:
1064
+ - Using `${BASH_SOURCE[0]:-$0}` fallback when BASH_SOURCE is unbound in Claude Code's execution context
1065
+ - Adding `|| true` to handle empty grep results gracefully when filtering status flags
1066
+
1067
+ ---
1068
+
1069
+ # SPARK v2.0.0 Release Notes
1070
+
1071
+ ## Overview
1072
+
1073
+ SPARK v2.0 makes skills more accessible, maintainable, and community-driven through a major architectural shift.
1074
+
1075
+ The headline change is **skills repository separation**: all skills, scripts, and documentation have moved from the plugin into a dedicated repository ([adityaaria/SPARK-skills](https://github.com/adityaaria/SPARK-skills)). This transforms spark from a monolithic plugin into a lightweight shim that manages a local clone of the skills repository. Skills auto-update on session start. Users fork and contribute improvements via standard git workflows. The skills library versions independently from the plugin.
1076
+
1077
+ Beyond infrastructure, this release adds nine new skills focused on problem-solving, research, and architecture. We rewrote the core **using-skills** documentation with imperative tone and clearer structure, making it easier for Claude to understand when and how to use skills. **find-skills** now outputs paths you can paste directly into the Read tool, eliminating friction in the skills discovery workflow.
1078
+
1079
+ Users experience seamless operation: the plugin handles cloning, forking, and updating automatically. Contributors find the new architecture makes improving and sharing skills trivial. This release lays the foundation for skills to evolve rapidly as a community resource.
1080
+
1081
+ ## Breaking Changes
1082
+
1083
+ ### Skills Repository Separation
1084
+
1085
+ **The biggest change:** Skills no longer live in the plugin. They've been moved to a separate repository at [adityaaria/SPARK-skills](https://github.com/adityaaria/SPARK-skills).
1086
+
1087
+ **What this means for you:**
1088
+
1089
+ - **First install:** Plugin automatically clones skills to `~/.config/spark/skills/`
1090
+ - **Forking:** During setup, you'll be offered the option to fork the skills repo (if `gh` is installed)
1091
+ - **Updates:** Skills auto-update on session start (fast-forward when possible)
1092
+ - **Contributing:** Work on branches, commit locally, submit PRs to upstream
1093
+ - **No more shadowing:** Old two-tier system (personal/core) replaced with single-repo branch workflow
1094
+
1095
+ **Migration:**
1096
+
1097
+ If you have an existing installation:
1098
+ 1. Your old `~/.config/spark/.git` will be backed up to `~/.config/spark/.git.bak`
1099
+ 2. Old skills will be backed up to `~/.config/spark/skills.bak`
1100
+ 3. Fresh clone of adityaaria/SPARK-skills will be created at `~/.config/spark/skills/`
1101
+
1102
+ ### Removed Features
1103
+
1104
+ - **Personal spark overlay system** - Replaced with git branch workflow
1105
+ - **setup-personal-spark hook** - Replaced by initialize-skills.sh
1106
+
1107
+ ## New Features
1108
+
1109
+ ### Skills Repository Infrastructure
1110
+
1111
+ **Automatic Clone & Setup** (`lib/initialize-skills.sh`)
1112
+ - Clones adityaaria/SPARK-skills on first run
1113
+ - Offers fork creation if GitHub CLI is installed
1114
+ - Sets up upstream/origin remotes correctly
1115
+ - Handles migration from old installation
1116
+
1117
+ **Auto-Update**
1118
+ - Fetches from tracking remote on every session start
1119
+ - Auto-merges with fast-forward when possible
1120
+ - Notifies when manual sync needed (branch diverged)
1121
+ - Uses pulling-updates-from-skills-repository skill for manual sync
1122
+
1123
+ ### New Skills
1124
+
1125
+ **Problem-Solving Skills** (`skills/problem-solving/`)
1126
+ - **collision-zone-thinking** - Force unrelated concepts together for emergent insights
1127
+ - **inversion-exercise** - Flip assumptions to reveal hidden constraints
1128
+ - **meta-pattern-recognition** - Spot universal principles across domains
1129
+ - **scale-game** - Test at extremes to expose fundamental truths
1130
+ - **simplification-cascades** - Find insights that eliminate multiple components
1131
+ - **when-stuck** - Dispatch to right problem-solving technique
1132
+
1133
+ **Research Skills** (`skills/research/`)
1134
+ - **tracing-knowledge-lineages** - Understand how ideas evolved over time
1135
+
1136
+ **Architecture Skills** (`skills/architecture/`)
1137
+ - **preserving-productive-tensions** - Keep multiple valid approaches instead of forcing premature resolution
1138
+
1139
+ ### Skills Improvements
1140
+
1141
+ **using-skills (formerly getting-started)**
1142
+ - Renamed from getting-started to using-skills
1143
+ - Complete rewrite with imperative tone (v4.0.0)
1144
+ - Front-loaded critical rules
1145
+ - Added "Why" explanations for all workflows
1146
+ - Always includes /SKILL.md suffix in references
1147
+ - Clearer distinction between rigid rules and flexible patterns
1148
+
1149
+ **writing-skills**
1150
+ - Cross-referencing guidance moved from using-skills
1151
+ - Added token efficiency section (word count targets)
1152
+ - Improved CSO (Claude Search Optimization) guidance
1153
+
1154
+ **sharing-skills**
1155
+ - Updated for new branch-and-PR workflow (v2.0.0)
1156
+ - Removed personal/core split references
1157
+
1158
+ **pulling-updates-from-skills-repository** (new)
1159
+ - Complete workflow for syncing with upstream
1160
+ - Replaces old "updating-skills" skill
1161
+
1162
+ ### Tools Improvements
1163
+
1164
+ **find-skills**
1165
+ - Now outputs full paths with /SKILL.md suffix
1166
+ - Makes paths directly usable with Read tool
1167
+ - Updated help text
1168
+
1169
+ **skill-run**
1170
+ - Moved from scripts/ to skills/using-skills/
1171
+ - Improved documentation
1172
+
1173
+ ### Plugin Infrastructure
1174
+
1175
+ **Session Start Hook**
1176
+ - Now loads from skills repository location
1177
+ - Shows full skills list at session start
1178
+ - Prints skills location info
1179
+ - Shows update status (updated successfully / behind upstream)
1180
+ - Moved "skills behind" warning to end of output
1181
+
1182
+ **Environment Variables**
1183
+ - `SPARK_SKILLS_ROOT` set to `~/.config/spark/skills`
1184
+ - Used consistently throughout all paths
1185
+
1186
+ ## Bug Fixes
1187
+
1188
+ - Fixed duplicate upstream remote addition when forking
1189
+ - Fixed find-skills double "skills/" prefix in output
1190
+ - Removed obsolete setup-personal-spark call from session-start
1191
+ - Fixed path references throughout hooks and commands
1192
+
1193
+ ## Documentation
1194
+
1195
+ ### README
1196
+ - Updated for new skills repository architecture
1197
+ - Prominent link to spark-skills repo
1198
+ - Updated auto-update description
1199
+ - Fixed skill names and references
1200
+ - Updated Meta skills list
1201
+
1202
+ ### Testing Documentation
1203
+ - Added comprehensive testing checklist (`docs/TESTING-CHECKLIST.md`)
1204
+ - Created local marketplace config for testing
1205
+ - Documented manual testing scenarios
1206
+
1207
+ ## Technical Details
1208
+
1209
+ ### File Changes
1210
+
1211
+ **Added:**
1212
+ - `lib/initialize-skills.sh` - Skills repo initialization and auto-update
1213
+ - `docs/TESTING-CHECKLIST.md` - Manual testing scenarios
1214
+ - `.claude-plugin/marketplace.json` - Local testing config
1215
+
1216
+ **Removed:**
1217
+ - `skills/` directory (82 files) - Now in adityaaria/SPARK-skills
1218
+ - `scripts/` directory - Now in adityaaria/SPARK-skills/skills/using-skills/
1219
+ - `hooks/setup-personal-spark.sh` - Obsolete
1220
+
1221
+ **Modified:**
1222
+ - `hooks/session-start.sh` - Use skills from ~/.config/spark/skills
1223
+ - `commands/brainstorm.md` - Updated paths to SPARK_SKILLS_ROOT
1224
+ - `commands/write-plan.md` - Updated paths to SPARK_SKILLS_ROOT
1225
+ - `commands/execute-plan.md` - Updated paths to SPARK_SKILLS_ROOT
1226
+ - `README.md` - Complete rewrite for new architecture
1227
+
1228
+ ### Commit History
1229
+
1230
+ This release includes:
1231
+ - 20+ commits for skills repository separation
1232
+ - PR #1: Amplifier-inspired problem-solving and research skills
1233
+ - PR #2: Personal spark overlay system (later replaced)
1234
+ - Multiple skill refinements and documentation improvements
1235
+
1236
+ ## Upgrade Instructions
1237
+
1238
+ ### Fresh Install
1239
+
1240
+ ```bash
1241
+ # In Claude Code
1242
+ /plugin marketplace add adityaaria/SPARK-marketplace
1243
+ /plugin install spark@spark-marketplace
1244
+ ```
1245
+
1246
+ The plugin handles everything automatically.
1247
+
1248
+ ### Upgrading from v1.x
1249
+
1250
+ 1. **Backup your personal skills** (if you have any):
1251
+ ```bash
1252
+ cp -r ~/.config/spark/skills ~/spark-skills-backup
1253
+ ```
1254
+
1255
+ 2. **Update the plugin:**
1256
+ ```bash
1257
+ /plugin update spark
1258
+ ```
1259
+
1260
+ 3. **On next session start:**
1261
+ - Old installation will be backed up automatically
1262
+ - Fresh skills repo will be cloned
1263
+ - If you have GitHub CLI, you'll be offered the option to fork
1264
+
1265
+ 4. **Migrate personal skills** (if you had any):
1266
+ - Create a branch in your local skills repo
1267
+ - Copy your personal skills from backup
1268
+ - Commit and push to your fork
1269
+ - Consider contributing back via PR
1270
+
1271
+ ## What's Next
1272
+
1273
+ ### For Users
1274
+
1275
+ - Explore the new problem-solving skills
1276
+ - Try the branch-based workflow for skill improvements
1277
+ - Contribute skills back to the community
1278
+
1279
+ ### For Contributors
1280
+
1281
+ - Skills repository is now at https://github.com/adityaaria/SPARK-skills
1282
+ - Fork → Branch → PR workflow
1283
+ - See skills/meta/writing-skills/SKILL.md for TDD approach to documentation
1284
+
1285
+ ## Known Issues
1286
+
1287
+ None at this time.
1288
+
1289
+ ## Credits
1290
+
1291
+ - Problem-solving skills inspired by Amplifier patterns
1292
+ - Community contributions and feedback
1293
+ - Extensive testing and iteration on skill effectiveness
1294
+
1295
+ ---
1296
+
1297
+ **Full Changelog:** https://github.com/adityaaria/SPARK/compare/dd013f6...main
1298
+ **Skills Repository:** https://github.com/adityaaria/SPARK-skills
1299
+ **Issues:** https://github.com/adityaaria/SPARK/issues