Releases: bufferBrew/craftsman
Release list
v0.10.0
Added
-
/craftsman:discover <vague idea>: a requirements-discovery interview that turns an
underspecified request into a numbered, testable spec. It exists because the shallow end of
ideation-firstwas the only option — 3–5 questions and a three-line brief, with no way to invoke
it deliberately, so a substantially open request ("build a notifications system") got the same
treatment as a merely fuzzy one.The work is split across two surfaces because of a hard constraint: a subagent cannot conduct an
interview. It receives one cold prompt and returns one result, which is whyorchestratoralready
has to bounce underspecified features back to its caller. So the interview runs in the main thread
as a command, and only the half a subagent is genuinely good at — reading the codebase — is
delegated. -
requirements-analystagent (read-only: Read/Glob/Grep, Opus): drafts the clarifying questions a
request leaves unanswered, grounded in prior art and existing abstractions rather than a generic
checklist. Every question carries afile:lineor an explicit "gap" label, plus an assumption
default so the interview never stalls on a declined question; questions the code already settles
come back as constraints instead. Capped at 10–20 questions — past that, it is asking things the
codebase already answers. It never asks the user anything itself and never writes files.
Changed
-
ideation-first: now runs at two depths. Quick is unchanged and still the default (3–5
questions, one per turn, Scope brief). Deep grounds 10–20 questions in the analyst's dossier and
asks them in 3–4 sequenced rounds of 2–4 questions viaAskUserQuestion— a deliberate
divergence from the one-question-per-turn rule, which is right for five questions and punishing for
fifteen. What the rule actually protects is that later questions adapt to earlier answers, and
sequenced rounds preserve that; batching all fifteen at once does not.Deep mode ends by writing a numbered requirements spec (
R1,R2, … each with an acceptance
criterion, sotesterandreviewercan trace coverage back to a requirement) at
docs/requirements/<slug>.md— proposed, shown in full, and written only on confirmation, per the
same ask-before-writing rule/craftsman:initfollows. The Scope brief is still emitted inline
at both depths and remains the machine handoff the planner and the orchestrator's ideation gate
consume; the spec file is additive, and the brief gained aSpec:line pointing at it.New explicit rule: expand the questions, bound the scope. Deep mode raises error states, empty
states, migration, and offline behavior — then still recommends the smallest build that satisfies
the request, with everything surfaced but unagreed recorded under Out of scope. A deep interview
that ends with a bigger scope than a quick one has failed; it should end with the same scope, held
with more confidence and a longer out-of-scope list. Without this, deep mode would have quietly
contradictedsmallest-change-first. -
orchestrator: the ideation gate now accepts either an inline Scope brief or a path to a
requirements spec, and instructs the planner to read the spec when one is named. Availability table
gainsrequirements-analyst. -
/craftsman:orchestrate: the ideation-gate step routes substantially open requests to deep mode
rather than a three-line brief. -
userpromptsubmit-task-router: the feature-shaped nudge names/craftsman:discoverfor
substantially open requests. Still one nudge per prompt; no newcasebranch.
Fixed
session-startannounced "Seven skills" and "Five commands" — both already wrong before this
release (8 and 6), and both invisible to CI: the count validator skips any line containing
"commands" when checking skills, and only matches the literal phrase "N slash commands" for
commands. The whole reminder is a single line, so both slipped through every check. The skill list
was also missingui-craftand the command list was missing/craftsman:orchestrate— a session
therefore started without being told two components existed.
v0.9.0
Added
/craftsman:orchestrate <task>: a slash command for the full pipeline. The orchestrator was the
only major entry point without one, so it never appeared in the/menu — every other command
(init,quick,doctor,review,security) did. It runs the orchestrator's discipline in
the main thread rather than dispatching the agent as a subagent, for two reasons:
orchestration is subagent dispatch and nesting that is unreliable, and the ideation gate needs
interactive Q&A that a subagent cannot hold (as a subagent,orchestratormust bounce
underspecified features back to its caller).@craftsman:orchestratorstill works for running
the pipeline in its own context.
Fixed
- Agent invocation is documented as
@craftsman:<name>throughout. Plugin agents are namespaced,
so the bare@<name>form the docs taught —@orchestratorin both READMEs,docs/use-cases.md,
and theideation-firstskill — matches nothing in the agent picker, making the orchestrator look
like it wasn't installed. Note:craftsman-demo.svgstill shows@orchestratorin its rendered
terminal text; correcting it requires regenerating the asset.
v0.8.0
Added
- Automatic skill-routing hooks so craftsman skills surface from task shape instead of a manual
check. Four new event-driven hooks, all self-contained (they reference onlycraftsman:*skills
and this plugin's own agents, never another plugin) and quiet by default (a nudge fires only on a
real signal):userpromptsubmit-task-router(routes the prompt to the matching agent/skill by
task shape — bug, feature, refactor, security, release, CI, testing, docs, version-control),
pretooluse-git-guard(commit-craft hint ongit commit/push/tag&gh pr),
pretooluse-edit-guard(file-pattern skill hints forKNOWN_ISSUES.md/test/workflow files, and
drops the session marker the close-out hook reads), andstop-closeout(nudges
caveats-and-status once after real edits, then self-deletes its marker — loop-safe via both the
marker andstop_hook_active). - New hook events wired in
hooks.json:UserPromptSubmitandStop(previously only
SessionStart+PreToolUse).
Changed
orchestrator: gate and repair hardening. Adds a handoff contract — every dispatched agent
must close withSTATUS/FILES CHANGED/VERIFIED BY/EVIDENCE/CAVEATS, and gates are checked
against that block rather than the agent's prose, so a missing evidence line now fails the gate
instead of passing on confidence. The repair loop escalates rather than retrying: attempt 2
routes to a different agent (debuggerfor build/test failures,plannerfor review findings)
before re-implementing. The parallelism rule now forbids two file-writing agents running
concurrently (the old "different output artifacts" wording permitted it) and states that parallel
dispatch means multipleAgentcalls in one message. Also: one-sentence scope restatement and a
new-dependency stop before pipeline selection, a bugfix requirement that the regression test fail
before the fix and pass after,Files changed/Verification runlines on the report, and an
explicit "never commit, push, branch, or open a PR unless asked" constraint.session-start: added a proactive lead-in to checkenvironment-quirks.mdbefore retrying a
failed command, and to prefer graphify for navigation whengraphify-out/graph.jsonexists.run-hook.cmd: reworded to drop the superpowers-plugin attribution — the dispatcher and the
whole plugin depend on no other plugin being installed.- README: new "Automatic skill routing (hooks)" section documenting the six hooks, plus the four
routing ideas (skill chaining, parallel analysis, negative filtering, contextual caching) that
are intentionally model/orchestrator behaviors rather than hooks.
v0.7.0
Added
/craftsman:doctor --fix: opt-in remediation for the three detected silent-failure conditions.
Default (no-arg) behavior is unchanged — diagnostic only. With--fix, each repair is shown and
confirmed (y/n) before it runs, then the check is re-run to verify: Git Bash via
winget install Git.Git(lands on the standard path the hook dispatcher already probes, so no
PATH edit), graphify graph viagraphify ., and the Windows python3 Store-stub via
winget install Python.Python.3.12(flagged as a partial fix — the Store app-execution alias may
still need disabling). Falls back to manual install links wherewingetis unavailable.
v0.5.1
Added
- Terminal-style demo image (
craftsman-demo.svg) on the root README showing an orchestrator
bugfix run end to end. CONTRIBUTING.md: local testing via--plugin-dir, validation requirements, component
conventions,run-hook.cmdpolyglot editing rules, and versioning/changelog process.docs/use-cases.md: four worked scenarios (minimal diffs, recurring-bug recall via graphify,
ask-first scaffolding, honest completion).- GitHub issue templates (bug report, feature request) and a Discussions contact link.
Changed
- Restructured both READMEs to lead with the value proposition: a "Why craftsman" problem/solution
table, a 30-second start, and status badges (CI, version, license). Reference content unchanged;
the plugin README's Quick start section merged into the new 30-second start.
Full changelog: https://github.com/bufferBrew/craftsman/blob/main/CHANGELOG.md