@skyf0xx/hedgehog 2.0.5 → 2.0.7

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyf0xx/hedgehog",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "Install the Hedgehog build discipline (agents + skills) into a repo.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -93,7 +93,18 @@ directly while writing, not as a pass after:
93
93
  `landing-systems`'s voice spec and token system, `landing-sequencer`'s
94
94
  section list and beat structure — not a summary of any of them.
95
95
  2. Write the headline plus 2 backups, each usable against the subject
96
- statement's single job.
96
+ statement's single job. **The reader wants an outcome, not the
97
+ mechanism that produces it** — the headline's grammatical subject must
98
+ be what the reader gets (what changes for them, what they now have or
99
+ no longer have to worry about), not the product, feature, or mechanism
100
+ that delivers it. A headline built from the subject statement's own
101
+ phrasing ("ZenBin is one cryptographic trust primitive...") tends to
102
+ smuggle the mechanism into the subject position by default — naming it
103
+ is not the same as leading with it. Demote the mechanism one level: it
104
+ belongs in the subhead or the sentence right after, earning its
105
+ specificity once the outcome has already landed. If a backup headline
106
+ only works because the reader already knows what the mechanism is
107
+ for, it's failing this test, not passing it narrowly.
97
108
  3. Write each section's copy in `landing-sequencer`'s order, to its
98
109
  assigned beat.
99
110
  4. Write CTA text, checked against the token system's CTA styling intent
@@ -119,6 +130,16 @@ directly while writing, not as a pass after:
119
130
  - The headline and every section trace to a named adjective or the
120
131
  subject statement — a line that could run on a competitor's page
121
132
  unchanged (the swap test, applied to copy specifically) gets rewritten.
133
+ - **The headline's subject is the reader's outcome, not the mechanism.**
134
+ Read only the headline, with no subhead for context: does it state
135
+ what the reader gets, or does it name the thing that gets it to them?
136
+ "One signature. Three uses." fails this (the signature is the
137
+ subject); "Your agent's work outlives the session that made it."
138
+ passes (the outcome is the subject, and "signature" doesn't need to
139
+ appear at all). If the headline's first noun phrase is the product,
140
+ the feature, or the underlying mechanism rather than the change in the
141
+ reader's situation, rewrite it before presenting — don't let it pass
142
+ because it's otherwise on-voice and traceable.
122
143
 
123
144
  ## Constraints
124
145
 
@@ -27,7 +27,8 @@ literally.
27
27
 
28
28
  **In:** raw brief (from `planner`'s planning intake,
29
29
  `.hedgehog/chain/00-brief.md`)
30
- **Out:** one-paragraph subject/audience/job statement
30
+ **Out:** one-paragraph subject/audience/job statement, confirmed by the
31
+ user before Step 2 starts
31
32
 
32
33
  Name the concrete subject, its audience, and the page's single job. If
33
34
  the brief doesn't pin this down, state the assumption explicitly rather
@@ -35,6 +36,28 @@ than proceeding on vagueness — an unstated assumption here is the single
35
36
  most expensive thing to get wrong, since every later phase inherits it
36
37
  silently.
37
38
 
39
+ **Plain-verb check (run before presenting the statement):** restate the
40
+ subject in one sentence using only the concrete verb a builder would use
41
+ describing it out loud — no abstraction noun ("primitive," "mechanism,"
42
+ "infrastructure layer") standing in for the verb. If that plain-verb
43
+ sentence doesn't foreground the same verb as the formal subject
44
+ statement, the statement has already been abstracted past what the user
45
+ actually said — tighten it, or if there's a genuine choice between
46
+ leading with the action versus the mechanism behind it, that's not yours
47
+ to resolve silently.
48
+
49
+ **Confirm the statement before Step 2.** Show the user the subject/
50
+ audience/job statement in plain language — not the finished prose, the
51
+ one-line "here's the big idea" version — and get explicit go-ahead before
52
+ any adjective work is built on it. This is a hard stop, the same weight
53
+ as planning intake's own Confirm & Lock: every phase from here through
54
+ `landing-copywriter` inherits this framing silently, and by the time
55
+ copy is reviewed at phase 9, correcting the framing means unwinding
56
+ multiple committed phases via the Correction Protocol instead of one
57
+ quick revision now. A revision at this point is just another pass at
58
+ Step 1, not a Correction Protocol entry, since nothing downstream exists
59
+ yet.
60
+
38
61
  ### Step 2 — Brand Anthropologist
39
62
 
40
63
  **In:** subject statement
@@ -84,15 +107,24 @@ adjective is meant to fade rather than hold constant throughout the page.
84
107
  1. Read `.hedgehog/chain/00-brief.md` (written by `planner` at planning
85
108
  intake). If it's missing or thin, stop and flag it back — you don't
86
109
  re-run planning intake yourself.
87
- 2. Run step 1 (subject/audience/job).
88
- 3. Run steps 2–3 (Brand Anthropologist, Psychologist), informed by the
89
- subject statement.
90
- 4. Run step 4c (Perfumer) against the completed sort from step 3.
91
- 5. Self-test (below) before presenting.
92
- 6. Commit the combined artifact as `feat(landing): strategy`.
110
+ 2. Run step 1 (subject/audience/job), including its plain-verb check.
111
+ 3. **Confirm step 1's statement with the user. Wait for explicit
112
+ go-ahead before proceeding to step 2** — this is a hard stop, not a
113
+ formality; nothing downstream exists yet, so a revision here is free.
114
+ 4. Run steps 2–3 (Brand Anthropologist, Psychologist), informed by the
115
+ confirmed subject statement.
116
+ 5. Run step 4c (Perfumer) against the completed sort from step 3.
117
+ 6. Self-test (below) before presenting the combined artifact.
118
+ 7. Commit the combined artifact as `feat(landing): strategy`.
93
119
 
94
120
  ## Self-test
95
121
 
122
+ - The subject statement was confirmed by the user before step 2 started
123
+ — not drafted and assumed. If it wasn't, stop now and go back for
124
+ confirmation rather than letting adjective work compound on an
125
+ unconfirmed framing.
126
+ - The plain-verb check was run and passed (or the framing choice — action
127
+ vs. mechanism — was put to the user explicitly, not resolved silently).
96
128
  - Every adjective has a named opposite. An adjective without one isn't
97
129
  falsifiable — send it back through step 2.
98
130
  - Every adjective is sorted into exactly one of visceral/behavioral/
@@ -147,6 +147,15 @@ one working-tree pass and needs splitting back into per-phase commits.
147
147
 
148
148
  ## Phase Transition Checks
149
149
 
150
+ Before `landing-strategist`'s step 2 (Brand Anthropologist) starts,
151
+ confirm step 1's subject/audience/job statement has been shown to and
152
+ confirmed by the user — not just drafted. This is the cheapest point in
153
+ the whole chain to correct the core framing (nothing downstream exists
154
+ yet); every phase after it inherits that framing silently, and by the
155
+ time `landing-copywriter` is reviewed at phase 9, a wrong framing means
156
+ unwinding four committed phases via the Correction Protocol instead of
157
+ one free revision here.
158
+
150
159
  Before `landing-critic` starts, confirm `landing-copywriter`'s copy has
151
160
  been presented to and confirmed by the user, not just written —
152
161
  `landing-critic`'s traceability audit reads confirmed copy, not a draft