@skyf0xx/hedgehog 6.2.8 → 6.2.10
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/bin/cli.mjs
CHANGED
|
@@ -2250,8 +2250,12 @@ async function verifyCommand(args) {
|
|
|
2250
2250
|
}
|
|
2251
2251
|
|
|
2252
2252
|
// Fires once per project — see community.mjs. Deliberately last: after
|
|
2253
|
-
// the gate's own output, not before it.
|
|
2254
|
-
|
|
2253
|
+
// the gate's own output, not before it. Suppressed by HEDGEHOG_NO_COMMUNITY_PROMPT
|
|
2254
|
+
// for ephemeral workflows (temp-dir installs with no persistent .hedgehog/ to track
|
|
2255
|
+
// cooldown state) that would otherwise re-fire on every invocation.
|
|
2256
|
+
const starJustShown = process.env.HEDGEHOG_NO_COMMUNITY_PROMPT
|
|
2257
|
+
? false
|
|
2258
|
+
: await shouldPromptForStar(DEST_ROOT, { intentComplete: result.intentComplete });
|
|
2255
2259
|
if (starJustShown) {
|
|
2256
2260
|
console.log(formatStarPrompt());
|
|
2257
2261
|
console.log('');
|
|
@@ -2262,7 +2266,8 @@ async function verifyCommand(args) {
|
|
|
2262
2266
|
// just showed the star prompt for the first time. See
|
|
2263
2267
|
// shouldPromptForShowcase for why `starJustShown` has to come from
|
|
2264
2268
|
// here rather than being re-derived from state.
|
|
2265
|
-
if (
|
|
2269
|
+
if (!process.env.HEDGEHOG_NO_COMMUNITY_PROMPT &&
|
|
2270
|
+
(await shouldPromptForShowcase(DEST_ROOT, { intentComplete: result.intentComplete, starJustShown }))) {
|
|
2266
2271
|
console.log(formatShowcasePrompt());
|
|
2267
2272
|
console.log('');
|
|
2268
2273
|
}
|
package/package.json
CHANGED
package/src/agents/planner.md
CHANGED
|
@@ -62,16 +62,17 @@ present bypassing it as an equally-weighted option alongside following
|
|
|
62
62
|
it — that smuggles the bypass in as the path of least resistance instead
|
|
63
63
|
of surfacing the actual conflict.
|
|
64
64
|
|
|
65
|
-
"Don't ask clarifying questions" is the common case, and on full-stack-app
|
|
66
|
-
|
|
67
|
-
it: **compressed intake**
|
|
68
|
-
the conflict first,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
"Don't ask clarifying questions" is the common case, and on full-stack-app,
|
|
66
|
+
pwa-app, an authored core, or copywriting it has a defined destination
|
|
67
|
+
once the user has chosen it: **compressed intake**
|
|
68
|
+
(`hedgehog-planning-intake`'s Phase 0). Surface the conflict first,
|
|
69
|
+
exactly as above — compressed intake is what the user's answer can
|
|
70
|
+
select, never what you recommend to avoid the conversation. Say what it
|
|
71
|
+
costs when you name it: one batched round of questions instead of the
|
|
72
|
+
shelf, a thinner archive, and an architecture (on an authored core)
|
|
73
|
+
designed from a brief rather than elicited drivers. Landing-page has no
|
|
74
|
+
such destination — see that skill for why — so there the conflict is
|
|
75
|
+
surfaced and resolved with the user, not routed.
|
|
75
76
|
|
|
76
77
|
## Phase 0 — which core applies
|
|
77
78
|
|
package/src/registry/fetch.mjs
CHANGED
|
@@ -41,6 +41,12 @@ export const CORE_CACHE_ROOT = join(homedir(), '.hedgehog', 'cores');
|
|
|
41
41
|
// exercised end to end before it is published.
|
|
42
42
|
const SOURCE_ENV = 'HEDGEHOG_CORE_SOURCE';
|
|
43
43
|
|
|
44
|
+
// Skip cache (both reads and writes) when set; every invocation gets a fresh
|
|
45
|
+
// npm pack with no persistence to ~/.hedgehog/cores/. Useful when the
|
|
46
|
+
// caller's use of the fetched core is ephemeral or when accurate npm
|
|
47
|
+
// download stats are needed.
|
|
48
|
+
const NO_CACHE_ENV = 'HEDGEHOG_CORE_NO_CACHE';
|
|
49
|
+
|
|
44
50
|
const exists = (p) =>
|
|
45
51
|
access(p, constants.F_OK).then(
|
|
46
52
|
() => true,
|
|
@@ -83,6 +89,13 @@ export async function fetchCore(entry) {
|
|
|
83
89
|
throw err;
|
|
84
90
|
}
|
|
85
91
|
|
|
92
|
+
// When NO_CACHE_ENV is set, skip cache entirely and return the staged
|
|
93
|
+
// extraction directly, leaving staged.tmp in place (since staged.root
|
|
94
|
+
// lives inside it).
|
|
95
|
+
if (process.env[NO_CACHE_ENV]) {
|
|
96
|
+
return { ...read, root: staged.root, version };
|
|
97
|
+
}
|
|
98
|
+
|
|
86
99
|
// Another install may have cached this exact version between the pack
|
|
87
100
|
// and now; its copy is as good as this one, so keep it and drop ours.
|
|
88
101
|
if (await exists(cached)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hedgehog-planning-intake
|
|
3
|
-
description: Use on any core for first-run planning intake — Phase 0 runs the vendored BMAD-METHOD planning shelf, shared by every core, and Phase 1 (mining `04-prd.md` into intent records plus the Add-ons/sync-and-remote-entities decision) is full-stack-app's and pwa-app's shared procedure — identical mechanics, a different decision at step 5/8. Phase 0 also defines compressed intake, the path a user's explicit "just build it" choice takes on full-stack-app, pwa-app, and
|
|
3
|
+
description: Use on any core for first-run planning intake — Phase 0 runs the vendored BMAD-METHOD planning shelf, shared by every core, and Phase 1 (mining `04-prd.md` into intent records plus the Add-ons/sync-and-remote-entities decision) is full-stack-app's and pwa-app's shared procedure — identical mechanics, a different decision at step 5/8. Phase 0 also defines compressed intake, the path a user's explicit "just build it" choice takes on full-stack-app, pwa-app, authored, and copywriting cores: one batched round of questions in place of the shelf, writing a thinned archive at the same paths so Phase 1 (or, on copywriting, that core's own mining step), `ux-planner`, and the Re-entry pass all keep their documented source. Also use for the Re-entry pass, which mines new scope into additional intents without re-running the shelf, on any core with a module axis to add an intent to (full-stack-app, pwa-app, authored) — landing-page has none, so its own new-scope path runs through `hedgehog-landing-loop`'s Correction Protocol instead. Invoked by the `planner` agent, which decides the path; don't run standalone. landing-page runs this skill's Phase 0 on first run, then mines the same archive through `hedgehog-landing-loop`'s own planning-intake section, that core's counterpart to this skill's Phase 1. copywriting runs this skill's Phase 0 the same way (full or compressed), then mines the same archive through `hedgehog-copywriting-loop`'s own planning-intake section into a what/audience/register brief — no module axis, so its own new-scope path runs through that loop's Correction Protocol rather than the Re-entry pass below. An authored core runs this skill's Phase 0, then `hedgehog-core-design`, then this skill's Phase 1 mining against the designed layer sequence. A brownfield adoption (`hedgehog-adopt`) never runs this skill's shelf at all — the drivers BMAD elicits are already settled facts of a repo that already exists.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Hedgehog Planning Intake
|
|
@@ -102,7 +102,7 @@ states the source repo, pinned version (`vendor-skills/BMAD/ATTRIBUTION.md` has
|
|
|
102
102
|
the pinned commit), date, which intake mode ran (`full`, below, or
|
|
103
103
|
`compressed`), and which skills ran.
|
|
104
104
|
|
|
105
|
-
### Compressed intake (full-stack-app, pwa-app, authored core)
|
|
105
|
+
### Compressed intake (full-stack-app, pwa-app, authored core, copywriting)
|
|
106
106
|
|
|
107
107
|
A user who opens with "just build it" — no clarifying questions — is
|
|
108
108
|
asking for something Phase 0's live elicitation can't give them.
|
|
@@ -132,6 +132,38 @@ trigger in the user's brief, or asked directly in that one round.
|
|
|
132
132
|
Compressed intake compresses BMAD's elicitation, never `planner`'s gate;
|
|
133
133
|
a boolean left as a guess is the same error here as on a full run.
|
|
134
134
|
|
|
135
|
+
**On copywriting**, the batched round covers exactly what
|
|
136
|
+
`hedgehog-copywriting-loop`'s own mining step needs and can't infer from
|
|
137
|
+
the user's request: what's being written (the concrete piece), the
|
|
138
|
+
audience, and the register. There's no Add-ons-shaped decision here —
|
|
139
|
+
copywriting has no module axis and no boolean gate, so the round is
|
|
140
|
+
smaller than full-stack-app's or pwa-app's: three questions, or fewer
|
|
141
|
+
where the request already answers one. A short, low-stakes piece (a
|
|
142
|
+
single UI microcopy string, a one-off product-announcement paragraph) is
|
|
143
|
+
the case this mode exists for — the acceptance criterion this issue
|
|
144
|
+
names is a batched round in place of the full shelf for exactly that
|
|
145
|
+
shape of request, not a lighter version of the shelf itself.
|
|
146
|
+
|
|
147
|
+
Write a thinned archive at the same paths `hedgehog-copywriting-loop`'s
|
|
148
|
+
mining step (its planning-intake section, step 2) already reads —
|
|
149
|
+
`02-brief.md` and `03-prfaq.md`, not the PRD or UX spec, since
|
|
150
|
+
copywriting's mining draws from those two, never `04-prd.md`:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
.hedgehog/BMAD/
|
|
154
|
+
00-manifest.md # mode: compressed, date, what the batched round asked
|
|
155
|
+
02-brief.md # what's being written + audience, from the brief + batched round
|
|
156
|
+
03-prfaq.md # register, from the brief + batched round
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
`01-brainstorming.md`, `04-prd.md`, `05-ux-spec/`, and `06-research.md`
|
|
160
|
+
are not written, for the same reason full-stack-app's compressed intake
|
|
161
|
+
skips its own unused files: `00-manifest.md` naming them as not-run is
|
|
162
|
+
the record. `hedgehog-copywriting-loop`'s mining step reads whichever
|
|
163
|
+
files the archive holds exactly as it does on a full run — it draws from
|
|
164
|
+
`02-brief.md` and `03-prfaq.md` either way, so a thinned archive changes
|
|
165
|
+
nothing about how that step runs, only how much material informed it.
|
|
166
|
+
|
|
135
167
|
Write the manifest and the PRD always, and the experience spec where the
|
|
136
168
|
brief gives it something to say — at the same path and in the same
|
|
137
169
|
layout:
|