@skyf0xx/hedgehog 6.2.6 → 6.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/agents/bootstrap.md +1 -1
- package/src/agents/planner.md +31 -15
- package/src/hosts/gemini/gemini-extension.json +1 -1
- package/vendor-skills/BMAD/ATTRIBUTION.md +14 -1
- package/vendor-skills/BMAD/core-skills/bmad-brainstorming/customize.toml +11 -0
- package/vendor-skills/BMAD/core-skills/bmad-brainstorming/references/finalize.md +2 -2
- package/vendor-skills/BMAD/core-skills/bmad-brainstorming/references/mode-autonomous.md +1 -1
package/package.json
CHANGED
package/src/agents/bootstrap.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bootstrap
|
|
3
|
-
description: Use once per invocation, at the start of a new Hedgehog project, to land the workspace for whichever core `planner` selected at Phase 0 — the first real workspace this project gets, since `init` with no explicit core flag lands the shared agents/skills/build-graph payload and leaves the workspace to bootstrap. Reads the chosen core's own bootstrap skill, installed from that core's package, and follows it: how many steps Bootstrap takes and what each one lands are that skill's to state, not this agent's. Not for per-phase/per-module work — that's the core's own loop skill and its agents. Skip entirely if the core's workspace already exists, per the already-ran check the core's bootstrap skill opens with.
|
|
3
|
+
description: Use once per invocation, at the start of a new Hedgehog project, to land the workspace for whichever core `planner` selected at Phase 0 — the first real workspace this project gets, since `init` with no explicit core flag lands the shared agents/skills/build-graph payload and leaves the workspace to bootstrap. Reads the chosen core's own bootstrap skill, installed from that core's package, and follows it: how many steps Bootstrap takes and what each one lands are that skill's to state, not this agent's. Not for per-phase/per-module work — that's the core's own loop skill and its agents. Skip entirely if the core's workspace already exists, per the already-ran check the core's bootstrap skill opens with. Never dispatched for copywriting — that core ships no bootstrap skill; `init --copywriting` lands its whole workspace at install time, and its own planning intake runs `hedgehog plan` directly instead of handing off here.
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: green
|
|
6
6
|
tools: Read, Glob, Grep, Edit, Write, Bash
|
package/src/agents/planner.md
CHANGED
|
@@ -21,7 +21,9 @@ You run on two paths, and Workflow step 2 decides which:
|
|
|
21
21
|
|
|
22
22
|
- **First run** (the graph holds no intents): **Phase 0 — core
|
|
23
23
|
selection**, the gate below, then **Phase 1 — planning intake** in the
|
|
24
|
-
shape the chosen core defines, then the `bootstrap` handoff
|
|
24
|
+
shape the chosen core defines, then the `bootstrap` handoff — except
|
|
25
|
+
copywriting, which has no bootstrap skill and whose planning intake
|
|
26
|
+
runs `hedgehog plan` itself; see step 9.
|
|
25
27
|
- **Re-entry** (the graph already holds intents): new scope entering play
|
|
26
28
|
on a project that's already been built or is mid-build, on a core with
|
|
27
29
|
a module axis to add an intent to (full-stack-app, authored). The core
|
|
@@ -88,7 +90,8 @@ memory of what a core is. Read every entry before choosing; the first
|
|
|
88
90
|
plausible match is not the answer until the rest have been ruled out.
|
|
89
91
|
A core whose `when` fits and whose `flag` is listed is chosen by name
|
|
90
92
|
and handed to `bootstrap`, which installs that core's package and
|
|
91
|
-
follows the bootstrap skill it ships
|
|
93
|
+
follows the bootstrap skill it ships — except copywriting, which ships
|
|
94
|
+
no bootstrap skill; see step 9.
|
|
92
95
|
|
|
93
96
|
**Before matching against `when` paragraphs, ask up to three
|
|
94
97
|
clarifying questions if the description alone doesn't already settle
|
|
@@ -272,7 +275,12 @@ the first-run shape; on re-entry, run `hedgehog-planning-intake`'s
|
|
|
272
275
|
full-stack-app before that Phase 0 begins. `hedgehog-copywriting-loop`
|
|
273
276
|
owns `.hedgehog/copy/00-brief.md` and this core's own Confirm & Lock
|
|
274
277
|
stage; `.hedgehog/BMAD/` is written by the shared Phase 0 in
|
|
275
|
-
`hedgehog-planning-intake`.
|
|
278
|
+
`hedgehog-planning-intake`. This core's own Confirm & Lock runs
|
|
279
|
+
`hedgehog plan` itself and does not hand off to `bootstrap` — its
|
|
280
|
+
workspace (`scripts/check-copy/` and `core.yaml`) is already fully
|
|
281
|
+
installed by `init --copywriting`, before planning intake ever starts,
|
|
282
|
+
and this core ships no bootstrap skill. Step 9 below does not apply to
|
|
283
|
+
it; the core's own loop skill picks up from here directly.
|
|
276
284
|
- **`deepseek-harness`** → no BMAD shelf runs on this core, and none of
|
|
277
285
|
`hedgehog-planning-intake` applies. Intake is mechanical, owned
|
|
278
286
|
entirely by `hedgehog-dsh-loop`'s own Planning intake section: confirm
|
|
@@ -487,6 +495,10 @@ as full-stack-app's Auth/Queue/Mobile trio.
|
|
|
487
495
|
run**, don't run `plan` yet — no core is installed until step 9's
|
|
488
496
|
`bootstrap` handoff lands one, and `plan` requires `core.yaml` to
|
|
489
497
|
exist. Leave the written intents `proposed` and continue to step 8.
|
|
498
|
+
**Copywriting is the one exception**: its own Confirm & Lock (see the
|
|
499
|
+
core-specific procedures above) already ran `hedgehog plan` as part
|
|
500
|
+
of step 6, since its `core.yaml` is on disk before planning intake
|
|
501
|
+
ever starts — nothing left to defer here.
|
|
490
502
|
8. **Commit planning intake's output as one commit** — not on the
|
|
491
503
|
adoption re-entry path, where `hedgehog-adopt` already committed its
|
|
492
504
|
own work as `chore(planning): adopt change` (step 2). Elsewhere:
|
|
@@ -502,18 +514,22 @@ as full-stack-app's Auth/Queue/Mobile trio.
|
|
|
502
514
|
only). Write these with the `no-history-in-output` skill: current
|
|
503
515
|
state only, no narration of the intake conversation. This is planning
|
|
504
516
|
intake's own unit of work, landed before `bootstrap` touches anything.
|
|
505
|
-
9. **First run only,
|
|
506
|
-
`bootstrap` agent** once the commit
|
|
507
|
-
core's workspace (and, for
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
`bootstrap
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
+
9. **First run only, not on the brownfield path, and not on
|
|
518
|
+
copywriting — hand off to the `bootstrap` agent** once the commit
|
|
519
|
+
lands. It scaffolds the chosen core's workspace (and, for
|
|
520
|
+
full-stack-app, whichever add-ons are on; for pwa-app, whichever of
|
|
521
|
+
sync/remote entities is on) before any build step starts. Once that
|
|
522
|
+
workspace exists, `core.yaml` exists too — this is the point at which
|
|
523
|
+
the `hedgehog plan` step 7 deferred on a first run can finally
|
|
524
|
+
succeed. `bootstrap` runs it before closing (see `bootstrap.md`'s
|
|
525
|
+
"Closing Bootstrap"), so the intents planner wrote are compiled into
|
|
526
|
+
tasks before the core's loop skill picks anything up. On re-entry on
|
|
527
|
+
any other core the workspace already exists and step 7 already ran
|
|
528
|
+
`plan`: hand straight to that core's loop skill instead, which picks
|
|
529
|
+
the new work up from `hedgehog next`. **On copywriting**, first run or
|
|
530
|
+
not, there is no `bootstrap` handoff at all — its own Confirm & Lock
|
|
531
|
+
already ran `plan` (see the core-specific procedures above); hand
|
|
532
|
+
straight to `hedgehog-copywriting-loop` instead.
|
|
517
533
|
10. **Return a summary**: which core (naming it as authored or adopted,
|
|
518
534
|
if it is), the intents added (or subject statement, for
|
|
519
535
|
landing-page), any open questions.
|
|
@@ -66,8 +66,21 @@ meaning this directory (`vendor-skills/BMAD/`) — used to address the shared
|
|
|
66
66
|
scripts (`{bmad-root}/scripts/memlog.py`, etc.) without reaching outside
|
|
67
67
|
this vendored tree.
|
|
68
68
|
|
|
69
|
+
## Local changes (not upstream)
|
|
70
|
+
|
|
71
|
+
- `core-skills/bmad-brainstorming/customize.toml` and
|
|
72
|
+
`core-skills/bmad-brainstorming/references/{mode-autonomous,finalize}.md`
|
|
73
|
+
carry a `keepsake_format` workflow key (`"html"` default,
|
|
74
|
+
`"markdown-only"` opt-out) not present upstream: Ideate-for-me and
|
|
75
|
+
headless mode otherwise auto-generate an HTML keepsake with no way to
|
|
76
|
+
opt out in advance, which is unwanted work on a project whose
|
|
77
|
+
deliverables are markdown/prose only (skyf0xx/hedgehog#386). A
|
|
78
|
+
re-vendor pass must re-apply this key to the freshly-fetched files
|
|
79
|
+
rather than letting it silently disappear.
|
|
80
|
+
|
|
69
81
|
## Re-vendoring
|
|
70
82
|
|
|
71
83
|
Pinned deliberately. Re-vendoring against a newer BMAD-METHOD commit is a
|
|
72
84
|
manual act: repeat the fetch against the new ref, re-apply the strip step
|
|
73
|
-
above, and update this file's pinned
|
|
85
|
+
above, re-apply "Local changes" above, and update this file's pinned
|
|
86
|
+
commit and date.
|
|
@@ -60,6 +60,17 @@ favorite_techniques = []
|
|
|
60
60
|
# description = "Start from the compliance constraint and brainstorm what becomes possible only because of it — turn the rule into a generative frame rather than a limit."
|
|
61
61
|
additional_techniques = []
|
|
62
62
|
|
|
63
|
+
# Format for the Ideate-for-me / headless default artifact. "html" (default)
|
|
64
|
+
# auto-generates the imaginative HTML keepsake with no asking. "markdown-only"
|
|
65
|
+
# skips it and produces the intent doc (brainstorm-intent.md) instead — for a
|
|
66
|
+
# project whose deliverables are markdown/prose only, where an HTML file is
|
|
67
|
+
# unwanted work rather than a bonus. Facilitator and Creative Partner modes
|
|
68
|
+
# are unaffected either way: every artifact there is already opt-in.
|
|
69
|
+
#
|
|
70
|
+
# Example (set in team/user override TOML, e.g. a copywriting-core project):
|
|
71
|
+
# keepsake_format = "markdown-only"
|
|
72
|
+
keepsake_format = "html"
|
|
73
|
+
|
|
63
74
|
# Session output location. The running log and any final artifacts land inside
|
|
64
75
|
# `{output_dir}/{output_folder_name}/`. `{topic_slug}` is filled from the session
|
|
65
76
|
# topic so each topic gets its own folder — a user can brainstorm several topics
|
|
@@ -13,11 +13,11 @@ Record the insights and chosen directions with `uv run {bmad-root}/scripts/memlo
|
|
|
13
13
|
|
|
14
14
|
## Artifacts
|
|
15
15
|
|
|
16
|
-
In **Ideate for me** (and headless), the imaginative HTML keepsake is the deliverable you promised — produce it automatically, no asking; the other artifacts below stay opt-in. In **Facilitator** and **Creative Partner**, every artifact is opt-in
|
|
16
|
+
In **Ideate for me** (and headless), check `{workflow.keepsake_format}`. When it's `"html"` (the default), the imaginative HTML keepsake is the deliverable you promised — produce it automatically, no asking; the other artifacts below stay opt-in. When it's `"markdown-only"`, skip the HTML keepsake entirely and produce the intent doc instead, with no ask — a project setting this override has already decided HTML is unwanted work, not a preference to re-confirm per session. In **Facilitator** and **Creative Partner**, every artifact is opt-in regardless of `keepsake_format`: each is a fresh, token-expensive generation, so ask what they want — recommend the HTML keepsake as the default unless `keepsake_format` is `"markdown-only"`, in which case don't offer it — and generate only what they choose. Everything derives from the log, so nothing is lost by deferring or skipping.
|
|
17
17
|
|
|
18
18
|
**Delegate each artifact to a subagent.** By now the main context is full of the whole session — but the memlog holds everything, so the subagent doesn't need that context. Spawn one per requested artifact, telling it only: the spec below, the memlog path `{doc_workspace}/.memlog.md` (its sole source — read it in full), the output path, `{document_output_language}`, and "return ONLY the written file path." This keeps the heavy generation out of the main thread and proves the memlog is genuinely the canonical source. (Subagents can't spawn subagents — run these from here.)
|
|
19
19
|
|
|
20
|
-
- **Imaginative HTML keepsake (recommended default).** A single self-contained `brainstorm.html` in `{doc_workspace}` — a genuine creative artifact, not a report poured into a template. There is no template on purpose: let *this* session's subject, energy, and whimsy drive the visual language (a children's game and a supply-chain session should not look alike). Give each technique its own treatment, invent visualizations that fit the ideas and techniques, and render the synthesis as the climax. Inline all CSS and any JS; no external dependencies. Open it once complete.
|
|
20
|
+
- **Imaginative HTML keepsake (recommended default, skipped when `{workflow.keepsake_format}` is `"markdown-only"`).** A single self-contained `brainstorm.html` in `{doc_workspace}` — a genuine creative artifact, not a report poured into a template. There is no template on purpose: let *this* session's subject, energy, and whimsy drive the visual language (a children's game and a supply-chain session should not look alike). Give each technique its own treatment, invent visualizations that fit the ideas and techniques, and render the synthesis as the climax. Inline all CSS and any JS; no external dependencies. Open it once complete.
|
|
21
21
|
- **Intent doc.** A succinct `brainstorm-intent.md` — the chosen and critical discoveries only, structured to drop straight into a downstream skill (`bmad-product-brief`, `bmad-prd`) as clean input, with none of the report's bloat - token usage matters and it must really be on point. Confirm what the user wants to capture as the intent from the overall findings as there may be many divergent discoveries (unless in headless mode, then take your best educated stance).
|
|
22
22
|
- **Offer other options they might want from it also based on context** — a pitch, a one-pager, a task list — produced from the same source. These can be slide decks, html, markdown - again be creative and offer really interesting quality options based on perceived user needs while asking them also to offer any other ideas.
|
|
23
23
|
|
|
@@ -4,7 +4,7 @@ The user handed you the topic and wants to see what you come up with on your own
|
|
|
4
4
|
|
|
5
5
|
- **Run a real divergent session yourself.** If the user supplied techniques (e.g. a composed prompt pasted from the selector page), honor those first; otherwise pick and run techniques on your own (use `brain.py` as in `## Choosing Techniques`, but *you* choose — no menu for the user). Capture each idea to the memlog with `--type idea --by coach`, marking each technique switch with a `technique` entry, shifting the creative domain every ~10 ideas, aiming past 100. Push past the obvious.
|
|
6
6
|
- **Don't pepper the user with questions** — this is your run. One quick confirm of topic and goal up front is plenty.
|
|
7
|
-
- **When it's mined out, synthesize and produce the keepsake.** Go to `## Wrap-Up` (`references/finalize.md`): record the insights, mark the memlog complete, and **auto-generate the imaginative HTML keepsake — don't ask first; the keepsake is the result you promised to show them
|
|
7
|
+
- **When it's mined out, synthesize and produce the keepsake.** Go to `## Wrap-Up` (`references/finalize.md`): record the insights, mark the memlog complete, and **auto-generate the imaginative HTML keepsake — don't ask first; the keepsake is the result you promised to show them** — unless `{workflow.keepsake_format}` is `"markdown-only"`, in which case skip the HTML keepsake and produce the intent doc instead, also with no asking. Offer the other artifacts (intent doc, etc.) after.
|
|
8
8
|
- **Then, because a human is here, offer to keep going together.** They may want to push an idea further or react to what you found — if so, switch into **Facilitator** or **Creative Partner** (load that frame), **record the switch in the memlog** so a resume restores the new stance — `uv run {bmad-root}/scripts/memlog.py set --workspace {doc_workspace} --key mode --value <facilitator|partner>` — and continue from the same memlog.
|
|
9
9
|
|
|
10
10
|
This is the interactive sibling of headless mode (`references/headless.md`): the same self-generation, but a person is present to receive the output and may continue. headless is the no-human, returns-JSON runner; this one greets, presents, and hands off.
|