forgedock 1.0.22 → 1.1.1

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 (46) hide show
  1. package/README.md +217 -218
  2. package/bin/cinema.mjs +320 -0
  3. package/bin/engine/phases.mjs +148 -0
  4. package/bin/engine/projector.mjs +32 -0
  5. package/bin/engine/reconcile.mjs +11 -0
  6. package/bin/engine/runlog.mjs +79 -0
  7. package/bin/engine/state.mjs +27 -0
  8. package/bin/engine-cli.mjs +50 -0
  9. package/bin/engine.mjs +138 -0
  10. package/bin/forgedock.mjs +464 -1491
  11. package/bin/journey.mjs +783 -0
  12. package/bin/runner.mjs +80 -13
  13. package/bin/settings-hook.mjs +112 -0
  14. package/bin/tui.mjs +6 -3
  15. package/commands/autopilot.md +4 -4
  16. package/commands/deploy-info.md +5 -3
  17. package/commands/design-bench.md +1 -0
  18. package/commands/design-render-critique-loop.md +1 -0
  19. package/commands/design.md +1 -0
  20. package/commands/forge-stats.md +1 -0
  21. package/commands/issue.md +1 -1
  22. package/commands/orchestrate.md +27 -9
  23. package/commands/quality-gate.md +80 -34
  24. package/commands/review-pr-agents.md +7 -7
  25. package/commands/review-pr.md +21 -4
  26. package/commands/work-on/build/implement.md +16 -4
  27. package/commands/work-on/build/validate.md +38 -1
  28. package/commands/work-on/build.md +27 -9
  29. package/commands/work-on/close.md +2 -2
  30. package/commands/work-on/review.md +24 -0
  31. package/commands/work-on-monolithic.md +1 -0
  32. package/commands/work-on.md +45 -3
  33. package/docs/BRAND.md +6 -2
  34. package/docs/CONFIG.md +39 -34
  35. package/docs/site/.vitepress/config.mjs +85 -0
  36. package/docs/site/getting-started.md +15 -8
  37. package/docs/site/index.md +1 -1
  38. package/docs/superpowers/plans/2026-07-03-cinematic-onboarding-tui.md +2339 -0
  39. package/docs/superpowers/plans/2026-07-03-durable-execution-engine.md +1223 -0
  40. package/docs/superpowers/specs/2026-07-03-cinematic-onboarding-tui-design.md +157 -0
  41. package/docs/superpowers/specs/2026-07-03-durable-execution-engine-design.md +194 -0
  42. package/package.json +10 -4
  43. package/scripts/verify-env-vars.sh +18 -2
  44. package/scripts/verify-host-headers.sh +4 -4
  45. package/scripts/verify-route-registration.sh +2 -2
  46. package/scripts/worktree-lifecycle.sh +202 -0
@@ -835,7 +835,17 @@ esac
835
835
 
836
836
  <!-- FORGE:PHASE_COMPLETE — Entering Phase 3 (Build). See Universal Phase Dispatcher: sub-phases 3A–3M execute in sequence. No sub-phase completion is terminal. -->
837
837
 
838
- **Skip if**: `<!-- FORGE:BUILDER -->` exists.
838
+ **Skip if**: `<!-- FORGE:BUILDER:COMPLETE -->` is present in a BUILDER comment. <!-- Added: forge#1305 — require completion marker, not mere presence of BUILDER annotation -->
839
+
840
+ **Partial build detection**: If `<!-- FORGE:BUILDER -->` exists BUT `<!-- FORGE:BUILDER:COMPLETE -->` is ABSENT → the build was interrupted after implement.md Phase I6 (comment posted) but before validate.md Phase V5 (commit). Delete the partial comment and restart Phase 3 from the top: <!-- Added: forge#1305 -->
841
+ ```bash
842
+ PARTIAL_ID=$(gh api repos/{GH_REPO}/issues/{NUMBER}/comments \
843
+ --jq '[.[] | select(.body | contains("FORGE:BUILDER") and (contains("FORGE:BUILDER:COMPLETE") | not))] | last | .id // ""')
844
+ if [ -n "$PARTIAL_ID" ]; then
845
+ gh api repos/{GH_REPO}/issues/comments/$PARTIAL_ID -X DELETE
846
+ echo "Deleted partial FORGE:BUILDER comment (no FORGE:BUILDER:COMPLETE) — restarting build"
847
+ fi
848
+ ```
839
849
 
840
850
  **CRITICAL: You MUST execute ALL sub-phases 3A–3M in order. Sub-phases 3C.5 (context) and 3C.6 (architect) are skipped ONLY for TRIVIAL tasks and Investigation tasks — see Phase 3B for classification. For STANDARD and COMPLEX tasks they post mandatory `FORGE:CONTEXT` and `FORGE:ARCHITECT` comments that Phase 3F reads as its primary input. Skipping them without a TRIVIAL/Investigation classification degrades build quality and causes review findings. After each sub-phase, continue to the next — no sub-phase is terminal.**
841
851
 
@@ -857,9 +867,9 @@ gh issue view {NUMBER} {GH_FLAG} --json number,title,body,labels,state,milestone
857
867
  gh api repos/{GH_REPO}/issues/{NUMBER}/comments \
858
868
  --jq '.[] | select(.body | contains("FORGE:INVESTIGATOR")) | .body'
859
869
 
860
- # Check if build already completed
870
+ # Check if build already completed (require FORGE:BUILDER:COMPLETE — not just FORGE:BUILDER)
861
871
  gh api repos/{GH_REPO}/issues/{NUMBER}/comments \
862
- --jq '.[] | select(.body | contains("FORGE:BUILDER")) | .body'
872
+ --jq '.[] | select(.body | contains("FORGE:BUILDER:COMPLETE")) | .body'
863
873
 
864
874
  # Check for existing COMPLEXITY_BAND from a prior run (resume path)
865
875
  EXISTING_FAST_PATH=$(gh api repos/{GH_REPO}/issues/{NUMBER}/comments \
@@ -1181,6 +1191,14 @@ esac
1181
1191
  **Determine source branch**:
1182
1192
  - Review-finding → parse `**Code branch**: \`{branch}\`` from issue body; branch from `origin/{branch}`
1183
1193
  - **Milestone review-finding hybrid lane** (Code branch matches `milestone/*`): High-risk lane. NEVER use `git merge` to resolve conflicts — use `git rebase` or `git cherry-pick` only. If conflicts can't be resolved without merge, post comment, add `needs-human`, STOP.
1194
+ - **Missing ref fallback**: After parsing, verify the Code branch still exists on remote. If not (e.g., the source PR's head branch was deleted post-merge before a corrected stamp took effect), fall back to `PR_BASE` (the lane default) and note the fallback:
1195
+ ```bash
1196
+ SOURCE_BRANCH="{CODE_BRANCH_FROM_ISSUE_BODY}"
1197
+ if ! git ls-remote --exit-code origin "$SOURCE_BRANCH" >/dev/null 2>&1; then
1198
+ echo "WARNING: Code branch '$SOURCE_BRANCH' not found on remote — falling back to PR_BASE '$PR_BASE'"
1199
+ SOURCE_BRANCH="$PR_BASE"
1200
+ fi
1201
+ ```
1184
1202
  - Feature lane (has milestone) → branch from `origin/{PR_BASE}` (PR_BASE now set above)
1185
1203
  - Fast lane (no milestone) → branch from `origin/{PR_BASE}` (PR_BASE = `{STAGING_BRANCH}`)
1186
1204
 
@@ -1289,6 +1307,11 @@ if iteration == max_iterations AND not PASS:
1289
1307
 
1290
1308
  All tool commands are read from `forge.yaml → verification.commands`. When a key is absent, the step logs `SKIPPED — not configured in verification.commands` and continues rather than silently passing.
1291
1309
 
1310
+ **Track skipped checks** — initialize before any check runs:
1311
+ ```bash
1312
+ VERIFICATION_SKIPPED_CHECKS=""
1313
+ ```
1314
+
1292
1315
  **Python**:
1293
1316
  ```bash
1294
1317
  cd {WORKTREE_PATH}
@@ -1298,6 +1321,7 @@ if [ -n "$PYTHON_FORMAT" ]; then
1298
1321
  eval "$PYTHON_FORMAT" 2>&1
1299
1322
  else
1300
1323
  echo "SKIPPED — python.format not configured in verification.commands"
1324
+ VERIFICATION_SKIPPED_CHECKS="${VERIFICATION_SKIPPED_CHECKS:+$VERIFICATION_SKIPPED_CHECKS, }python.format"
1301
1325
  fi
1302
1326
 
1303
1327
  # Compile check always runs (no config needed — catches syntax errors)
@@ -1317,6 +1341,7 @@ if [ -n "$TS_FORMAT" ]; then
1317
1341
  eval "$TS_FORMAT" 2>&1
1318
1342
  else
1319
1343
  echo "SKIPPED — typescript.format not configured in verification.commands"
1344
+ VERIFICATION_SKIPPED_CHECKS="${VERIFICATION_SKIPPED_CHECKS:+$VERIFICATION_SKIPPED_CHECKS, }typescript.format"
1320
1345
  fi
1321
1346
 
1322
1347
  if [ -n "$TS_TYPECHECK" ]; then
@@ -1327,6 +1352,7 @@ elif [ -n "$TS_BUILD" ]; then
1327
1352
  TS_EXIT=$?
1328
1353
  else
1329
1354
  echo "SKIPPED — typescript.typecheck and typescript.build not configured in verification.commands"
1355
+ VERIFICATION_SKIPPED_CHECKS="${VERIFICATION_SKIPPED_CHECKS:+$VERIFICATION_SKIPPED_CHECKS, }typescript.typecheck/build"
1330
1356
  TS_EXIT=0
1331
1357
  fi
1332
1358
  ```
@@ -1468,12 +1494,20 @@ Check off completed items, mark phases complete, add PR references.
1468
1494
 
1469
1495
  ### 3M: Post implementation comment
1470
1496
  ```bash
1497
+ # Compute verification status from VERIFICATION_SKIPPED_CHECKS (set in Phase 3H)
1498
+ if [ -z "$VERIFICATION_SKIPPED_CHECKS" ]; then
1499
+ VERIFICATION_STATUS="✅ All configured verification commands passed"
1500
+ else
1501
+ VERIFICATION_STATUS="⚠ Verification NOT run: ${VERIFICATION_SKIPPED_CHECKS} — verification.commands not configured for these checks"
1502
+ fi
1503
+
1471
1504
  gh issue comment {NUMBER} {GH_FLAG} --body "<!-- FORGE:BUILDER -->
1472
1505
  ## Implementation Complete
1473
1506
 
1474
1507
  **Branch**: \`{BRANCH}\`
1475
1508
  **Commits**: {COMMIT_SHA(S)}
1476
1509
  **Files changed**: {COUNT}
1510
+ **Verification Status**: ${VERIFICATION_STATUS}
1477
1511
 
1478
1512
  ### Approach
1479
1513
  {what was built, key decisions}
@@ -1887,6 +1921,13 @@ This check is **audit-only** — it annotates the trajectory for visibility. It
1887
1921
  Post `<!-- FORGE:TRAJECTORY -->` comment with phase-by-phase results table:
1888
1922
 
1889
1923
  ```bash
1924
+ # Compute verification row from VERIFICATION_SKIPPED_CHECKS (set in Phase 3H)
1925
+ if [ -z "$VERIFICATION_SKIPPED_CHECKS" ]; then
1926
+ VERIFICATION_ROW="✅ Ran"
1927
+ else
1928
+ VERIFICATION_ROW="⚠ Skipped — verification.commands not configured for: ${VERIFICATION_SKIPPED_CHECKS}"
1929
+ fi
1930
+
1890
1931
  gh issue comment {NUMBER} {GH_FLAG} --body "<!-- FORGE:TRAJECTORY -->
1891
1932
  ## Pipeline Trajectory — #{NUMBER}
1892
1933
 
@@ -1897,6 +1938,7 @@ gh issue comment {NUMBER} {GH_FLAG} --body "<!-- FORGE:TRAJECTORY -->
1897
1938
  | Phase 2: Decomposition | ⏭ Skipped | {reason} |
1898
1939
  | Phase 3: Build | ✅ Complete | Branch: \`{BRANCH}\` |
1899
1940
  | Phase 3G: Quality Gate | ✅ Gate passed | {iterations} iterations |
1941
+ | Phase 3H: Verification | ${VERIFICATION_ROW} | |
1900
1942
  | Phase 4–5: Review + PR | {REVIEW_ROW} | PR #{PR_NUMBER} → \`{PR_BASE}\` |
1901
1943
  | Phase 6: Close | ✅ Complete | Issue closed |
1902
1944
 
package/docs/BRAND.md CHANGED
@@ -6,7 +6,10 @@ Status of reserved and blocked brand handles across platforms.
6
6
 
7
7
  | Domain | Status |
8
8
  |--------|--------|
9
- | `forgedock.dev` | **Owned** — canonical marketing and App URL |
9
+ | `forgedock.dev` | **Unverified** — live content (2026-07-04) is a third-party product unrelated to ForgeDock; registrar verification pending. Do not use as a public-facing link until resolved. |
10
+ | `forgedock.io` | **Parked** — Porkbun parked page, HTTP-only (HTTPS does not connect). Not controlled by RapierCraft Studios. Do not use as a public-facing link. |
11
+
12
+ > **Rule**: No public ForgeDock surface (npm homepage, repo description, plugin manifests, docs) may point at a domain until its live content is verified as controlled by RapierCraft Studios.
10
13
 
11
14
  ## npm
12
15
 
@@ -45,7 +48,8 @@ Social handle registration is an operational task. Reserve handles before public
45
48
 
46
49
  | Platform | Action |
47
50
  |----------|--------|
48
- | Domain | Done |
51
+ | Domain (forgedock.dev) | Unverified — registrar check pending; do not use as live surface |
52
+ | Domain (forgedock.io) | Parked — not controlled by RapierCraft Studios; do not use as live surface |
49
53
  | npm | Done |
50
54
  | GitHub org slug | Blocked — use variant for App slug |
51
55
  | Social handles | Reserve before L1 public launch |
package/docs/CONFIG.md CHANGED
@@ -12,18 +12,26 @@ echo "forge.yaml" >> .gitignore # if your credentials path is sensitive
12
12
 
13
13
  ---
14
14
 
15
- ## CLI Flags for `init`
15
+ ## CLI Flags
16
16
 
17
- `npx forgedock init` accepts two optional flags that change how configuration is generated:
17
+ `--verbose` and `--fast` apply to both `npx forgedock` (the full install journey) and `npx forgedock init` (config-only regeneration); `--manual` and `--minimal` apply to `init` only:
18
18
 
19
19
  | Flag | Behavior |
20
20
  |------|----------|
21
- | `--manual` | Skips AI autopilot enrichment entirely. Presents the annotated review screen with detection baseline values only (no AI-enriched suggestions). Detection still runs to provide defaults — you review and edit the raw inferred values on the same single-screen interface. |
22
- | `--verbose` | Surfaces each field's detection source and confidence rationale during the init flow. Helpful for understanding where ForgeDock inferred values from (e.g. `git remote`, `package.json`, `gh api`). |
21
+ | `--manual` | `npx forgedock init` only. Skips the annotated review screen and asks plain, one-field-at-a-time prompts instead, pre-filled with the detected values as defaults. |
22
+ | `--minimal` | `npx forgedock init` only. Skips detection enrichment and the review screen entirely, and writes a short `forge.yaml` containing only the three required sections (`project`, `paths`, `branches`) with detected values. |
23
+ | `--verbose` | Shows each field's detection source and confidence rationale on the review screen (e.g. `git remote`, `package.json`, `gh api`), instead of only flagging low-confidence fields. |
24
+ | `--fast` | Skips the animation/motion frames and jumps straight to the static screens. |
23
25
 
24
- The two flags can be combined: `npx forgedock init --manual --verbose` shows the annotated review screen with detection baseline values and field provenance at each entry.
26
+ **Environment variables:**
25
27
 
26
- The default (`npx forgedock init` with no flags) remains the zero-question autopilot: AI enrichment fills in everything it can, and you review the result on a single annotated screen.
28
+ | Variable | Behavior |
29
+ |----------|----------|
30
+ | `FORGE_NO_MOTION=1` | Same effect as `--fast` — disables animation frames. Color is unaffected. |
31
+ | `NO_COLOR=1` | Disables ANSI color output only. Motion is unaffected (monochrome choreography). |
32
+ | Non-TTY / piped output (or `CI=1`) | Plain sequential log: no color **and** no animation. |
33
+
34
+ The default (no flags) is the annotated review screen: detection runs, AI enrichment fills in what it can (when an API key is available), and you review the result on a single screen — Enter accepts everything, low-confidence fields are flagged with a `# TODO(forgedock:<field>)` comment if left unedited.
27
35
 
28
36
  ---
29
37
 
@@ -686,46 +694,43 @@ Downstream consumers read `field.value` for the raw value and `field.confidence`
686
694
 
687
695
  ---
688
696
 
689
- ## CLAUDE.md Integration
697
+ ## SessionStart Hook Integration
690
698
 
691
- ForgeDock can inject a managed usage block into your project's `CLAUDE.md` so every Claude Code session opened in the repo automatically knows that ForgeDock drives development here and which commands to use.
699
+ ForgeDock does **not** write anything into your project's `CLAUDE.md` or `AGENTS.md`. Instead, `npx forgedock` registers a `SessionStart` hook in `~/.claude/settings.json` — a small script that runs at the start of every Claude Code session and prints ForgeDock's context straight to that session, without touching any file in your repo.
692
700
 
693
701
  ### How It Works
694
702
 
695
- Running `npx forgedock init` or `npx forgedock integrate` writes a marker-bounded block into `CLAUDE.md`:
696
-
697
- ```
698
- <!-- BEGIN FORGEDOCK -->
699
- ## ForgeDock — Autonomous Development Pipeline
700
- ...command index and conventions...
701
- <!-- END FORGEDOCK -->
702
- ```
703
+ The hook resolves the current directory's state and reacts accordingly:
703
704
 
704
- The block is **idempotent** — re-running replaces only the managed section and leaves all other `CLAUDE.md` content untouched. If `CLAUDE.md` does not exist, it is created.
705
+ | State | Behavior |
706
+ |-------|----------|
707
+ | `managed-active` (`forge.yaml` present, not opted out) | Prints a summary of `forge.yaml` (project, repo, branches) plus the available pipeline commands |
708
+ | `managed-active`, no `forge.yaml` yet | Suggests running `npx forgedock init` |
709
+ | `managed-optedout` | Completely silent — no output |
710
+ | `unmanaged` | Prints a one-time, suppressible nudge to run `npx forgedock enable` |
705
711
 
706
- If `AGENTS.md` already exists in the project root, the same block is mirrored into it.
712
+ The hook entry is registered idempotently: re-installing (`npx forgedock update`) will not duplicate it, and unrelated hooks or settings in `~/.claude/settings.json` are left untouched. If `settings.json` is malformed, the installer skips writing rather than risk corrupting it.
707
713
 
708
714
  ### Commands
709
715
 
710
716
  | Command | Action |
711
717
  |---------|--------|
712
- | `npx forgedock init` | Generates `forge.yaml` **and** injects the CLAUDE.md block |
713
- | `npx forgedock integrate` | Injects/refreshes the block without modifying `forge.yaml` |
718
+ | `npx forgedock` / `npx forgedock install` | Registers the SessionStart hook (along with installing commands and writing `forge.yaml`) |
719
+ | `npx forgedock update` | Re-registers the hook (relink only — does not touch `forge.yaml`) |
720
+ | `npx forgedock uninstall` | Removes the hook entry from `settings.json` |
714
721
 
715
722
  ### Opting Out
716
723
 
717
- To prevent ForgeDock from managing the block, remove the `<!-- BEGIN FORGEDOCK -->` / `<!-- END FORGEDOCK -->` markers from `CLAUDE.md`. Without the markers, subsequent runs will append a new block rather than replacing one — so if you want to opt out permanently, delete or omit the markers **and** do not run `integrate` again.
718
-
719
- Alternatively, keep the markers but edit the content between them freely — ForgeDock will replace that section on the next run, so any manual edits inside the markers will be overwritten.
720
-
721
- ### Re-generating
722
-
723
- The command index inside the block is auto-generated from the `description:` frontmatter in each `commands/*.md` file. To refresh it after a ForgeDock update:
724
+ Per-directory, independent of the global hook registration. Each command acts on the current working directory — run it inside the project directory:
724
725
 
725
726
  ```bash
726
- npx forgedock integrate
727
+ npx forgedock disable # the current directory goes silent (managed-optedout)
728
+ npx forgedock enable # re-activate the current directory
729
+ npx forgedock status # show the current directory's resolved state
727
730
  ```
728
731
 
732
+ See [Per-Directory State Registry](#per-directory-state-registry) below for how opt-out state is tracked.
733
+
729
734
  ---
730
735
 
731
736
  ## Per-Directory State Registry
@@ -788,22 +793,22 @@ If you downgrade to a build older than PR #467 **and** your project is accessed
788
793
  - The one-time "Enable ForgeDock here?" nudge may reappear once.
789
794
  - No data is lost. No crash. Fail-open behaviour holds throughout.
790
795
 
791
- **Recovery**: after downgrading, re-apply your opt-out with the older build:
796
+ **Recovery**: after downgrading, re-apply your opt-out with the older build (run inside the project directory):
792
797
 
793
798
  ```bash
794
- npx forgedock disable [dir]
799
+ npx forgedock disable
795
800
  ```
796
801
 
797
802
  This re-writes the entry under the key form the older build expects.
798
803
 
799
804
  ### Managing Opt-Out State
800
805
 
801
- Use the `forgedock enable` and `forgedock disable` commands to add or remove a directory from the opt-out set:
806
+ Use the `forgedock enable` and `forgedock disable` commands to add or remove a directory from the opt-out set. Each command acts on the current working directory by default — run it inside the project directory, or pass an explicit path:
802
807
 
803
808
  ```bash
804
- npx forgedock enable [dir] # Remove directory from opt-out set (default: cwd)
805
- npx forgedock disable [dir] # Add directory to opt-out set (default: cwd)
806
- npx forgedock status [dir] # Show resolved state for a directory
809
+ npx forgedock enable [dir] # Remove a directory from the opt-out set (default: cwd)
810
+ npx forgedock disable [dir] # Add a directory to the opt-out set (default: cwd)
811
+ npx forgedock status [dir] # Show a directory's resolved state (default: cwd)
807
812
  ```
808
813
 
809
814
  ---
@@ -0,0 +1,85 @@
1
+ import { defineConfig } from 'vitepress'
2
+
3
+ export default defineConfig({
4
+ title: 'ForgeDock',
5
+ description: 'Autonomous AI development pipeline that uses GitHub as a structured knowledge graph for Claude Code agents.',
6
+ lang: 'en-US',
7
+
8
+ // Deploy to GitHub Pages at /
9
+ base: '/',
10
+
11
+ head: [
12
+ ['link', { rel: 'icon', href: '/favicon.ico' }],
13
+ ['meta', { name: 'theme-color', content: '#7C3AED' }],
14
+ ['meta', { property: 'og:type', content: 'website' }],
15
+ ['meta', { property: 'og:site_name', content: 'ForgeDock' }],
16
+ ],
17
+
18
+ themeConfig: {
19
+ logo: 'https://avatars.githubusercontent.com/in/3731547?s=40',
20
+ siteTitle: 'ForgeDock',
21
+
22
+ nav: [
23
+ { text: 'Quick Start', link: '/getting-started' },
24
+ { text: 'Commands', link: '/command-reference' },
25
+ { text: 'Annotations', link: '/annotations-explained' },
26
+ {
27
+ text: 'GitHub',
28
+ link: 'https://github.com/RapierCraftStudios/ForgeDock',
29
+ },
30
+ ],
31
+
32
+ sidebar: [
33
+ {
34
+ text: 'Get Started',
35
+ items: [
36
+ { text: 'Quick Start', link: '/getting-started' },
37
+ { text: 'How It Works', link: '/how-it-works' },
38
+ { text: 'Troubleshooting', link: '/troubleshooting' },
39
+ ],
40
+ },
41
+ {
42
+ text: 'Reference',
43
+ items: [
44
+ { text: 'Command Reference', link: '/command-reference' },
45
+ { text: 'Command Learning Path', link: '/command-learning-path' },
46
+ { text: 'FORGE Annotation Protocol', link: '/forge-annotation-protocol' },
47
+ { text: 'Annotations Explained', link: '/annotations-explained' },
48
+ ],
49
+ },
50
+ {
51
+ text: 'Guides',
52
+ items: [
53
+ { text: 'ForgeDock vs. Manual Workflows', link: '/vs-manual-workflows' },
54
+ ],
55
+ },
56
+ ],
57
+
58
+ socialLinks: [
59
+ { icon: 'github', link: 'https://github.com/RapierCraftStudios/ForgeDock' },
60
+ { icon: 'npm', link: 'https://www.npmjs.com/package/forgedock' },
61
+ ],
62
+
63
+ footer: {
64
+ message: 'Released under the AGPL-3.0 License.',
65
+ copyright: 'Copyright © 2024–2026 RapierCraft Studios',
66
+ },
67
+
68
+ editLink: {
69
+ pattern: 'https://github.com/RapierCraftStudios/ForgeDock/edit/main/docs/site/:path',
70
+ text: 'Edit this page on GitHub',
71
+ },
72
+
73
+ search: {
74
+ provider: 'local',
75
+ },
76
+
77
+ outline: {
78
+ level: [2, 3],
79
+ },
80
+ },
81
+
82
+ markdown: {
83
+ lineNumbers: false,
84
+ },
85
+ })
@@ -71,24 +71,31 @@ ForgeDock Doctor — Installation Health Check
71
71
  All checks passed. ForgeDock installation is healthy.
72
72
  ```
73
73
 
74
- It exits `0` when everything passes and `1` if any check fails, so you can also use it in CI. The `forge.yaml` and GitHub-label checks will fully pass once you finish Step 2 below — re-run `doctor` any time your setup feels off.
74
+ It exits `0` when everything passes and `1` if any check fails, so you can also use it in CI.
75
75
 
76
76
  > Prefer a quick spot-check? `ls ~/.claude/commands/ | grep -E "work-on|review-pr|quality-gate"` should list `work-on.md`, `review-pr.md`, and `quality-gate.md`.
77
77
 
78
78
  ---
79
79
 
80
- ## Step 2: Configure Your Repository
80
+ ## Step 2: Your Config Is Already There
81
81
 
82
- ForgeDock reads a single `forge.yaml` in your project root. **Start minimal** — only the `project`, `paths`, and `branches` sections are required. Everything else is optional and falls back to sensible defaults; add sections as you need them.
83
-
84
- The fastest way to get a working config is the `--minimal` flag, which scans your repo and writes just the required sections with detected values:
82
+ `npx forgedock` in Step 1 ran the full install journey — including repo detection and a reviewed `forge.yaml` — so there's no separate config step to run. If you need to redo detection later (moved the repo, renamed a branch), or want a leaner config with just the required sections, re-run:
85
83
 
86
84
  ```bash
87
85
  cd /path/to/your/project
88
86
  npx forgedock init --minimal
89
87
  ```
90
88
 
91
- This produces a short, readable `forge.yaml` like the one below — this is essentially ForgeDock's own real-world config:
89
+ **Optional: enrich the config.** Once `forge.yaml` exists, open Claude Code in your project directory and run `/forgedock-init` to fill in the optional sections that plain detection can't infer:
90
+
91
+ - Project board connection (GitHub Projects v2)
92
+ - Satellite repo routing (multi-repo setups)
93
+ - Review context (tech stack, known pitfalls)
94
+ - Service URLs for health checks
95
+
96
+ `/forgedock-init` completes an existing `forge.yaml` — it won't create one from scratch.
97
+
98
+ **Minimal `forge.yaml` example:**
92
99
 
93
100
  ```yaml
94
101
  project:
@@ -110,7 +117,7 @@ That's the whole config. Run `npx forgedock doctor` to confirm it's valid.
110
117
 
111
118
  > **The three required sections are `project`, `paths`, and `branches`** — `npx forgedock init --minimal` auto-detects `paths` for you (so worktrees land in the right place) and you rarely need to touch it. Everything else (project board, review context, verification commands, multi-repo routing) is optional and falls back to sensible defaults. Browse [`forge.yaml.example`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/forge.yaml.example) and [`docs/CONFIG.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/CONFIG.md) when you're ready to customize.
112
119
 
113
- **Prefer guided, AI-powered setup?** Open Claude Code in your project directory and run `/forgedock-init` instead — it scans your repo and fills in the optional sections (repo owner/name, worktree path, branch strategy, project board) for you. Plain `npx forgedock init` (no flag) generates the full annotated template with every optional section commented out.
120
+ **Prefer guided, AI-powered setup?** Open Claude Code in your project directory and run `/forgedock-init` instead — it scans your repo and fills in the optional sections (repo owner/name, worktree path, branch strategy, project board) for you.
114
121
 
115
122
  ---
116
123
 
@@ -200,7 +207,7 @@ The symlink wasn't created. Re-run `npx forgedock` and check `ls ~/.claude/comma
200
207
 
201
208
  **`forge.yaml` not found**
202
209
 
203
- Run `/forgedock-init` in your project directory inside Claude Code, or copy `forge.yaml.example` from the ForgeDock repo and edit it.
210
+ Run `npx forgedock init` in your project directory to generate it, or copy `forge.yaml.example` from the ForgeDock repo and edit it. Once it exists, `/forgedock-init` inside Claude Code can fill in the optional sections.
204
211
 
205
212
  **`gh` auth errors**
206
213
 
@@ -37,7 +37,7 @@ No more coordinating between agent sessions. No more lost context. No more start
37
37
 
38
38
  - [GitHub Repository](https://github.com/RapierCraftStudios/ForgeDock)
39
39
  - [npm Package](https://www.npmjs.com/package/forgedock)
40
- - [Configuration Reference](../CONFIG.md)
40
+ - [Configuration Reference](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/CONFIG.md)
41
41
  - [Report an Issue](https://github.com/RapierCraftStudios/ForgeDock/issues/new)
42
42
 
43
43
  ---