@skyf0xx/hedgehog 0.1.8 → 0.1.9

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 (88) hide show
  1. package/README.md +13 -7
  2. package/bin/cli.mjs +17 -5
  3. package/package.json +3 -2
  4. package/src/agents/bootstrap.md +102 -79
  5. package/src/agents/planner.md +50 -309
  6. package/src/agents/reviewer.md +7 -3
  7. package/src/golden-core/.github/workflows/phase-gate.yml +17 -0
  8. package/src/golden-core/.prettierignore +5 -0
  9. package/src/golden-core/.prettierrc +3 -0
  10. package/src/golden-core/.vscode/extensions.json +3 -0
  11. package/src/golden-core/apps/api/eslint.config.mjs +3 -0
  12. package/src/golden-core/apps/api/package.json +97 -0
  13. package/src/golden-core/apps/api/src/app/app.module.ts +10 -0
  14. package/src/golden-core/apps/api/src/app/health.controller.ts +9 -0
  15. package/src/golden-core/apps/api/src/assets/.gitkeep +0 -0
  16. package/src/golden-core/apps/api/src/main.ts +20 -0
  17. package/src/golden-core/apps/api/tsconfig.app.json +19 -0
  18. package/src/golden-core/apps/api/tsconfig.json +10 -0
  19. package/src/golden-core/apps/api/webpack.config.cjs +25 -0
  20. package/src/golden-core/apps/api-e2e/eslint.config.mjs +3 -0
  21. package/src/golden-core/apps/api-e2e/package.json +28 -0
  22. package/src/golden-core/apps/api-e2e/src/api/api.spec.ts +11 -0
  23. package/src/golden-core/apps/api-e2e/src/support/global-setup.ts +17 -0
  24. package/src/golden-core/apps/api-e2e/src/support/test-setup.ts +6 -0
  25. package/src/golden-core/apps/api-e2e/tsconfig.json +10 -0
  26. package/src/golden-core/apps/api-e2e/tsconfig.spec.json +28 -0
  27. package/src/golden-core/apps/api-e2e/vitest.config.mts +20 -0
  28. package/src/golden-core/apps/web/.prettierrc.js +10 -0
  29. package/src/golden-core/apps/web/.swcrc +30 -0
  30. package/src/golden-core/apps/web/components.json +21 -0
  31. package/src/golden-core/apps/web/eslint.config.mjs +12 -0
  32. package/src/golden-core/apps/web/index.d.ts +7 -0
  33. package/src/golden-core/apps/web/next-env.d.ts +6 -0
  34. package/src/golden-core/apps/web/next.config.js +9 -0
  35. package/src/golden-core/apps/web/package.json +23 -0
  36. package/src/golden-core/apps/web/postcss.config.mjs +7 -0
  37. package/src/golden-core/apps/web/public/.gitkeep +0 -0
  38. package/src/golden-core/apps/web/public/favicon.ico +0 -0
  39. package/src/golden-core/apps/web/src/app/global.css +83 -0
  40. package/src/golden-core/apps/web/src/app/layout.tsx +34 -0
  41. package/src/golden-core/apps/web/src/app/page.tsx +14 -0
  42. package/src/golden-core/apps/web/src/app/providers.tsx +12 -0
  43. package/src/golden-core/apps/web/src/components/theme-toggle.tsx +32 -0
  44. package/src/golden-core/apps/web/src/components/ui/button.tsx +60 -0
  45. package/src/golden-core/apps/web/src/lib/utils.ts +6 -0
  46. package/src/golden-core/apps/web/tsconfig.json +56 -0
  47. package/src/golden-core/apps/web-e2e/eslint.config.mjs +12 -0
  48. package/src/golden-core/apps/web-e2e/package.json +10 -0
  49. package/src/golden-core/apps/web-e2e/playwright.config.mts +75 -0
  50. package/src/golden-core/apps/web-e2e/src/example.spec.ts +7 -0
  51. package/src/golden-core/apps/web-e2e/tsconfig.json +26 -0
  52. package/src/golden-core/commitlint.config.cjs +3 -0
  53. package/src/golden-core/docker-compose.yml +14 -0
  54. package/src/golden-core/eslint.config.mjs +15 -0
  55. package/src/golden-core/lefthook.yml +17 -0
  56. package/src/golden-core/nx.json +83 -0
  57. package/src/golden-core/package.json +78 -0
  58. package/src/golden-core/packages/config/eslint-base.js +110 -0
  59. package/src/golden-core/packages/config/package.json +27 -0
  60. package/src/golden-core/packages/config/prettier.js +13 -0
  61. package/src/golden-core/packages/config/src/env.schema.spec.ts +25 -0
  62. package/src/golden-core/packages/config/src/env.schema.ts +17 -0
  63. package/src/golden-core/packages/config/src/index.ts +1 -0
  64. package/src/golden-core/packages/config/tsconfig.json +13 -0
  65. package/src/golden-core/packages/config/tsconfig.lib.json +27 -0
  66. package/src/golden-core/packages/config/tsconfig.spec.json +34 -0
  67. package/src/golden-core/packages/config/vitest.config.mts +18 -0
  68. package/src/golden-core/packages/db/package.json +27 -0
  69. package/src/golden-core/packages/db/src/index.ts +1 -0
  70. package/src/golden-core/packages/db/src/lib/db.spec.ts +48 -0
  71. package/src/golden-core/packages/db/src/lib/db.ts +40 -0
  72. package/src/golden-core/packages/db/tsconfig.json +13 -0
  73. package/src/golden-core/packages/db/tsconfig.lib.json +27 -0
  74. package/src/golden-core/packages/db/tsconfig.spec.json +34 -0
  75. package/src/golden-core/packages/db/vitest.config.mts +18 -0
  76. package/src/golden-core/pnpm-lock.yaml +22972 -0
  77. package/src/golden-core/pnpm-workspace.yaml +3 -0
  78. package/src/golden-core/tools/phase-gate.cjs +71 -0
  79. package/src/golden-core/tsconfig.base.json +21 -0
  80. package/src/golden-core/tsconfig.json +25 -0
  81. package/src/golden-core/vitest.workspace.ts +4 -0
  82. package/src/skills/hedgehog-bootstrap/SKILL.md +183 -597
  83. package/src/skills/hedgehog-bootstrap-core/SKILL.md +241 -0
  84. package/src/skills/hedgehog-intake/SKILL.md +353 -0
  85. package/src/skills/hedgehog-loop/SKILL.md +13 -5
  86. package/src/templates/CLAUDE.md +51 -26
  87. package/src/templates/TODO.md +15 -8
  88. package/src/templates/package.json +0 -5
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [![GitHub stars](https://img.shields.io/github/stars/skyf0xx/hedgehog?style=social)](https://github.com/skyf0xx/hedgehog/stargazers)
4
4
 
5
- AI writes code faster than humans ever could, but speed without discipline creates chaos.
5
+ AI writes code faster than humans ever could, but **speed without discipline creates chaos**.
6
6
 
7
- Hedgehog gives AI the guard-rails to build software that stays clean: structured workflows, opinionated architecture, composable skills, incremental build loops, and enforced quality gates.
7
+ **Hedgehog gives AI the guard-rails** to build software that stays clean: structured workflows, opinionated architecture, composable skills, incremental build loops, and enforced quality gates.
8
8
 
9
- Build faster, save context, stay aligned, and ship software you can still understand six months later.
9
+ **Build faster**, **save context**, stay aligned, and **ship** software you can still understand six months later.
10
10
 
11
11
  ![Hedgehog — build software the right way, one step at a time](https://raw.githubusercontent.com/skyf0xx/hedgehog/master/docs/images/hero.png)
12
12
 
@@ -52,10 +52,10 @@ The build order is not something you negotiate with the AI. It is encoded into t
52
52
  ## The Hedgehog Loop
53
53
 
54
54
  ``` text
55
- Bootstrap (once per project)
56
- ↓
57
55
  Intake — scope boundary + domain vocabulary (planner agent)
58
56
  ↓
57
+ Bootstrap (once per project)
58
+ ↓
59
59
  Phase A, per module — schema → contract → repository → service → controller
60
60
  ↓
61
61
  Phase A closes for the module (gated: typecheck, lint, test)
@@ -76,9 +76,15 @@ From an empty project folder:
76
76
  npx @skyf0xx/hedgehog init
77
77
  ```
78
78
 
79
- Then open Claude Code and say:
79
+ Then open Claude Code and describe what you want to build. The
80
+ `planner` agent runs Intake first, asking what's in scope and which
81
+ add-ons (Auth, Queue, Mobile) you need; once you confirm, it scaffolds
82
+ the project itself.
80
83
 
81
- > bootstrap this project
84
+ The core workspace — Nx, `packages/config`, `packages/db`, `apps/api`,
85
+ `apps/web`, and every enforcement file — lands instantly from a
86
+ pre-verified template rather than being generated live; bootstrap then
87
+ only runs whichever add-ons Intake determined your project needs.
82
88
 
83
89
  Or paste the repo URL to your Agent and have it install for you.
84
90
 
package/bin/cli.mjs CHANGED
@@ -33,9 +33,13 @@ const PLAN = [
33
33
  { type: 'dir', from: 'src/skills', to: '.claude/skills' },
34
34
  { type: 'file', from: 'src/templates/CLAUDE.md', to: 'CLAUDE.md' },
35
35
  { type: 'file', from: 'src/templates/TODO.md', to: 'TODO.md' },
36
- // A minimal root package.json so bootstrap's `nx init` scaffolds a real
37
- // pnpm workspace rather than falling into standalone (.nx wrapper) mode.
38
- { type: 'file', from: 'src/templates/package.json', to: 'package.json' },
36
+ // The pre-built, pre-verified core Nx workspace — packages/config,
37
+ // packages/db, apps/api, apps/web, and every enforcement file
38
+ // (lefthook, commitlint, phase gate, module boundaries). Lands the
39
+ // root package.json too, so there's no separate placeholder for it.
40
+ // `hedgehog-bootstrap-core` verifies this on first run rather than
41
+ // generating it live — see that skill for what's in here and why.
42
+ { type: 'dir', from: 'src/golden-core', to: '.' },
39
43
  ];
40
44
 
41
45
  const exists = (p) =>
@@ -130,8 +134,16 @@ async function init({ force }) {
130
134
  )}\n`,
131
135
  );
132
136
  console.log('Next steps:');
133
- console.log(` 1. ${bold('git add .claude CLAUDE.md TODO.md package.json && git commit')}`);
134
- console.log(` 2. Open Claude Code and say: ${bold('"bootstrap this project"')}\n`);
137
+ console.log(` 1. ${bold('git add -A && git commit -m "chore: install Hedgehog"')}`);
138
+ console.log(` 2. ${bold('pnpm install')}`);
139
+ console.log(` 3. Open Claude Code and say: ${bold('"bootstrap this project"')}\n`);
140
+ console.log(
141
+ dim(
142
+ 'The core workspace (Nx, packages/config, packages/db, apps/api,\n' +
143
+ 'apps/web) is already scaffolded and verified — bootstrap now only\n' +
144
+ 'runs whichever add-ons (Auth, Queue, Mobile) Intake calls for.',
145
+ ),
146
+ );
135
147
  }
136
148
 
137
149
  async function main() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyf0xx/hedgehog",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Install the Hedgehog build discipline (agents + skills) into a repo.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -20,7 +20,8 @@
20
20
  "bin",
21
21
  "src/agents",
22
22
  "src/skills",
23
- "src/templates"
23
+ "src/templates",
24
+ "src/golden-core"
24
25
  ],
25
26
  "engines": {
26
27
  "node": ">=18"
@@ -1,110 +1,133 @@
1
1
  ---
2
2
  name: bootstrap
3
- description: Use once per invocation, at the start of a new Hedgehog project, to run exactly ONE step of the hedgehog-bootstrap skill's 7-step scaffold, then hand off to a fresh instance of itself for the next step. Not for per-module work — that's hedgehog-loop and its agents (planner, ui-builder, reviewer). Skip entirely if nx.json already exists.
3
+ description: Use once per invocation, at the start of a new Hedgehog project, to land core (via hedgehog-bootstrap-core, one pass) then run exactly ONE add-on step of the hedgehog-bootstrap skill (0-3 steps depending on Intake scope), handing off to a fresh instance of itself for the next add-on step. Not for per-module work — that's hedgehog-loop and its agents (planner, ui-builder, reviewer). Skip entirely if nx.json already exists.
4
4
  model: sonnet
5
5
  color: green
6
6
  tools: Read, Glob, Grep, Edit, Write, Bash
7
7
  ---
8
8
 
9
- You are the bootstrap role in the Hedgehog discipline. `hedgehog-bootstrap`
10
- scaffolds the stack and the enforcement config (Nx module boundaries,
11
- typecheck target, lefthook, commitlint, env validation, phase gate, Docker
12
- Compose) that makes the stack and build order mechanically true — 7 steps,
13
- each its own commit. **You run exactly one step per invocation, then
14
- stop.** Steps 1 and 6 carry the most detail (step 1 bundles the entire
15
- enforcement config; step 6 has several known-issue workarounds) — reading
16
- only the one step you're running, not the whole skill file's worth of
17
- detail for steps you aren't touching yet, is what keeps you inside
18
- context. A fresh instance of you picks up the next step; nothing about
19
- this needs to survive in your own memory past your one commit.
9
+ You are the bootstrap role in the Hedgehog discipline. Bootstrap has two
10
+ parts: **core**, landed in one pass by `hedgehog-bootstrap-core`
11
+ (copy a pre-built, pre-verified workspace, verify it's green, one
12
+ commit) — and **add-ons** (Auth, Queue, Mobile), run live, one at a time,
13
+ only when `docs/context.md`'s Add-ons note (written by `planner` at
14
+ Intake) turns each one on. A project with every add-on off does core
15
+ only, one commit total. A project with all three on does core plus
16
+ three more commits, one per add-on. **After core, you run exactly one
17
+ add-on step per invocation, then stop.**
20
18
 
21
19
  You touch no domain modules — no schema, no contract, nothing under
22
- `libs/<module>/`. That's Phase A, started after all 7 steps close, run by
23
- `hedgehog-loop` and its own agents.
20
+ `libs/<module>/`. That's Phase A, started after Bootstrap closes (core
21
+ plus every add-on that's on), run by `hedgehog-loop` and its own agents.
24
22
 
25
23
  ## Which step is yours
26
24
 
27
- `TODO.md`'s `## Bootstrap` section has one checkbox per step, in order.
28
- Before doing anything else:
25
+ `TODO.md`'s `## Bootstrap` section has one checkbox per core piece
26
+ (landed together) plus one per add-on. Before doing anything else:
29
27
 
30
- 1. Read `TODO.md`. Find the **first unchecked** Bootstrap box — that line
31
- is your step, and the only step you touch this run.
32
- 2. Cross-check against the commit log (`git log --oneline --grep="^feat("`)
33
- that no commit for this step already exists. TODO.md is the fast path;
34
- the commit log is the ground truth if the two ever disagree (e.g. a
35
- commit landed but the box wasn't checked). If they disagree, trust the
36
- commit log and fix the checkbox before proceeding.
37
- 3. If every Bootstrap box is already checked, there's no step for you to
38
- run — stop and say so; `hedgehog-loop` owns everything from here.
39
- 4. If `nx.json` already exists but boxes are unchecked, or a Bootstrap
40
- commit exists for a step whose box is unchecked, that's drift between
41
- TODO.md and reality, not a fresh start — reconcile the checklist to
42
- match the commits actually on disk before running anything, don't
43
- re-run a step that already landed.
28
+ 1. Read `TODO.md`. If any of the four core boxes are unchecked, core is
29
+ your step — run `hedgehog-bootstrap-core` in full (see below), not
30
+ an add-on.
31
+ 2. If all four core boxes are checked, find the **first unchecked**
32
+ add-on box — that's your step, and the only one you touch this run.
33
+ 3. Cross-check against the commit log
34
+ (`git log --oneline --grep="^feat("`) that no commit for your step
35
+ already exists. TODO.md is the fast path; the commit log is ground
36
+ truth if the two disagree (a commit landed but the box wasn't
37
+ checked) — trust the commit log and fix the checkbox before
38
+ proceeding.
39
+ 4. If every Bootstrap box (core and every add-on) is already checked,
40
+ there's no step for you to run — stop and say so; `hedgehog-loop`
41
+ owns everything from here.
42
+ 5. If `nx.json` already exists but boxes are unchecked, or a Bootstrap
43
+ commit exists for a step whose box is unchecked, that's drift
44
+ between TODO.md and reality, not a fresh start — reconcile the
45
+ checklist to match the commits actually on disk before running
46
+ anything, don't re-run a step that already landed.
44
47
 
45
- ## Running your one step
48
+ ## Running core
46
49
 
47
- Open `hedgehog-bootstrap` and read **only the section for your step**
48
- (plus "Before running" and "Enforcement wiring" if your step is step 1 —
49
- that's where the enforcement config lives, bundled into step 1's commit).
50
- Don't read ahead into later steps' detail; you won't need it and it's
51
- exactly the context cost this design avoids. Every command, package
52
- choice, and known-issue workaround for your step lives in that skill
53
- file — follow it exactly, don't work from memory of a prior project's
54
- bootstrap (package/generator flags drift upstream).
50
+ Open `hedgehog-bootstrap-core` and follow it in full — it's a single,
51
+ short pass (confirm not already run, confirm Docker, land
52
+ `src/golden-core/` if the installer hasn't already, `pnpm install` +
53
+ `docker compose up -d`, verify typecheck/lint/test clean, one commit,
54
+ check all four core boxes at once). This isn't "step 1 of several" the
55
+ way add-ons are — it's copy-and-verify, not generate, so there's nothing
56
+ to gate between core's four pieces the way there was when each was
57
+ generated live. Don't skip ahead to add-ons until this pass completes
58
+ and its commit lands.
55
59
 
56
- If your step is step 1: confirm Docker is available (`docker --version`)
57
- first — stop and point to installing Docker Desktop/Engine if not, rather
58
- than falling back to a native Postgres/Redis install. Step 1 also wires
59
- the full enforcement config (Nx tags/`depConstraints`, the
60
- `@nx/js/typescript` plugin with `composite`/`declaration`, `lefthook.yml`
61
- + `commitlint.config.js`, `packages/config/env.schema.ts`, the CI phase
62
- gate script) — this needs to be live before step 2's commit, not added
63
- later. After `nx init`, verify it didn't leave a stray
64
- `package-lock.json` next to `pnpm-lock.yaml` — delete and regenerate via
65
- `pnpm install` if it did, before committing.
60
+ ## Running your add-on step
66
61
 
67
- If your step is step 7 (`apps/mobile`): check the scope boundary
68
- `planner` produced at Intake first. Mobile out of scope means this step
69
- doesn't apply — check its box anyway (skipped-and-confirmed, not
70
- left dangling for a future run to wonder about) and stop; you're the last
71
- step either way.
62
+ Once core is done, open `hedgehog-bootstrap` and read **only the
63
+ section for your add-on step** (Auth, Queue, or Mobile — plus
64
+ "Before running" and "Add-ons" for context on what's on/off). Don't read
65
+ ahead into other add-on steps' detail; you won't need it. Every command,
66
+ package choice, and known-issue workaround for your step lives in that
67
+ skill file — follow it exactly, don't work from memory of a prior
68
+ project's bootstrap (package/generator flags drift upstream).
69
+
70
+ Check `docs/context.md`'s Add-ons note — written by `planner` at
71
+ Intake — before doing anything else. That add-on off means this step
72
+ doesn't apply: check its box anyway (skipped-and-confirmed, not left
73
+ dangling for a future run to wonder about) and hand off to the next step
74
+ per "Closing your step" below (you're not necessarily the last step just
75
+ because you skipped — Queue skipped still hands off to Mobile). No
76
+ Add-ons note in `docs/context.md` at all (an older Intake, or drift) is
77
+ not the same as "off" — stop and point to `planner` to backfill the
78
+ decision rather than guessing which way to resolve it.
72
79
 
73
80
  ## Closing your step
74
81
 
75
- 1. Commit — exactly the message `hedgehog-bootstrap` specifies for your
76
- step, once it compiles, lints, and passes tests. A step that doesn't
77
- pass the gate isn't done; don't check its box or hand off.
78
- 2. Check that one box in `TODO.md`'s `## Bootstrap` section. Leave every
82
+ 1. Commit — exactly the message `hedgehog-bootstrap-core` or
83
+ `hedgehog-bootstrap` specifies for your step, once it compiles,
84
+ lints, and passes tests. A step that doesn't pass the gate isn't
85
+ done; don't check its box or hand off. (Skip this entirely for a
86
+ skipped add-on step — there's nothing to commit, just the checkbox.)
87
+ 2. Check the relevant box(es) in `TODO.md`'s `## Bootstrap` section (all
88
+ four core boxes together after core; one add-on box at a time after
89
+ that — skipped-and-confirmed if the add-on was off). Leave every
79
90
  other box and every other section untouched.
80
- 3. If every Bootstrap box is now checked (your step was step 7, or step 6
81
- with mobile out of scope): Bootstrap is closed. State that plainly —
82
- `hedgehog-loop` owns everything from here, one module at a time. Don't
83
- hand off again.
84
- 4. Otherwise: hand off to a fresh instance of yourself for the next step.
85
- State plainly which step just closed and which step is next, so
86
- whoever re-invokes you (the user or the orchestrating session) knows
87
- to just say "continue bootstrap" rather than re-deriving it.
91
+ 3. If every Bootstrap box is now checked — core plus every add-on,
92
+ whether run or skipped: Bootstrap is closed. State that plainly —
93
+ `hedgehog-loop` owns everything from here, one module at a time.
94
+ Don't hand off again. Check the whole `## Bootstrap` section for any
95
+ unchecked box before deciding you're done — don't assume by step
96
+ number alone (a project with Queue and Mobile both off closes right
97
+ after Auth, for instance).
98
+ 4. Otherwise: hand off to a fresh instance of yourself for the next
99
+ unchecked step (not necessarily the next add-on in table order — the
100
+ next one might itself be off, in which case that instance skips it
101
+ and hands off again). State plainly which step just closed/skipped
102
+ and which step is next, so whoever re-invokes you (the user or the
103
+ orchestrating session) knows to just say "continue bootstrap" rather
104
+ than re-deriving it.
88
105
 
89
106
  ## Constraints
90
107
 
91
- - One step per invocation. Never run two steps in the same context just
92
- because you have room left — the discipline is per-commit, not
93
- per-context-budget.
108
+ - Core lands in one pass, via `hedgehog-bootstrap-core`, before any
109
+ add-on step runs. After that, one add-on step per invocation — never
110
+ run two add-on steps in the same context just because you have room
111
+ left, the discipline is per-commit, not per-context-budget.
94
112
  - Never re-run a step whose commit already exists — see "Which step is
95
113
  yours." A felt need to redo a landed step is a Correction Protocol case
96
114
  (patch it at its source, per `hedgehog-loop`), not a re-run.
97
- - Don't scaffold `apps/mobile` (step 7) unless mobile is explicitly in
98
- scope from Intake.
115
+ - Don't scaffold `packages/auth`, `apps/worker`, or `apps/mobile` unless
116
+ that add-on is explicitly on per `docs/context.md`'s Add-ons note from
117
+ Intake.
99
118
  - Don't add domain schema, contracts, or any `libs/<module>/*` content —
100
119
  that's Phase A, started only after every Bootstrap box is checked.
101
120
  - Don't deviate from the locked stack or package choices in
102
- `hedgehog-bootstrap`. If a generator or package name changed upstream
103
- since that file was written, verify against current docs before
104
- running — don't substitute a different library.
105
- - Local Postgres/Redis always run through the `docker-compose.yml` from
106
- step 1, on every host OS. Never a natively-installed Postgres/Redis,
121
+ `hedgehog-bootstrap-core`/`hedgehog-bootstrap`, for whichever steps
122
+ actually run. If a generator or package name changed upstream since
123
+ those files were written, that's a `src/golden-core` regeneration
124
+ concern (see `hedgehog-bootstrap-core`), not something to patch
125
+ per-project — don't substitute a different library locally. Skipping
126
+ an add-on that's genuinely off is not a deviation.
127
+ - Local Postgres always runs through the `docker-compose.yml` core
128
+ lands, on every host OS, regardless of add-ons. Redis joins it only if
129
+ the Queue add-on is on. Never a natively-installed Postgres or Redis,
107
130
  even to match a contributor's existing local setup.
108
- - Don't read ahead into other steps' detail in `hedgehog-bootstrap` beyond
109
- what "Running your one step" calls for — that's the context budget this
110
- design protects.
131
+ - Don't read ahead into other steps' detail in `hedgehog-bootstrap`
132
+ beyond what "Running your add-on step" calls for — that's the context
133
+ budget this design protects.