forgedock 1.2.0 → 1.4.0

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 (78) hide show
  1. package/README.md +8 -2
  2. package/bin/batch-runner.mjs +31 -2
  3. package/bin/engine/admission.mjs +294 -0
  4. package/bin/engine/admission.test.mjs +265 -0
  5. package/bin/engine/invariants.mjs +17 -4
  6. package/bin/engine/phases.mjs +358 -42
  7. package/bin/engine/resolve.mjs +256 -0
  8. package/bin/engine/resolve.test.mjs +149 -0
  9. package/bin/engine/state.mjs +31 -7
  10. package/bin/engine-cli.mjs +138 -2
  11. package/bin/engine.mjs +414 -21
  12. package/bin/forgedock.mjs +552 -44
  13. package/bin/hooks/interactive-engine.mjs +50 -24
  14. package/bin/hooks/pre-tool-use.mjs +189 -19
  15. package/bin/journey.mjs +109 -11
  16. package/bin/labels.json +5 -0
  17. package/bin/runner.mjs +321 -10
  18. package/bin/watch-utils.mjs +255 -0
  19. package/commands/cleanup.md +7 -3
  20. package/commands/forge-stats.md +5 -4
  21. package/commands/issue.md +5 -1
  22. package/commands/orchestrate/config.md +41 -1
  23. package/commands/orchestrate/phase-1-resolve.md +234 -8
  24. package/commands/orchestrate/phase-3-dependency.md +27 -18
  25. package/commands/orchestrate/phase-4-execution.md +223 -22
  26. package/commands/qa-sweep.md +17 -0
  27. package/commands/quality-gate.md +6 -6
  28. package/commands/replay.md +16 -2
  29. package/commands/review-pr-agents/spec-cli.md +179 -0
  30. package/commands/review-pr.md +65 -0
  31. package/commands/upgrade-deps.md +523 -0
  32. package/commands/work-on/build/validate.md +61 -1
  33. package/commands/work-on/build.md +9 -1
  34. package/commands/work-on/decompose.md +10 -1
  35. package/commands/work-on/investigate.md +22 -4
  36. package/commands/work-on/remediate.md +2 -0
  37. package/commands/work-on/review.md +40 -1
  38. package/commands/work-on.md +19 -4
  39. package/docs/AIDER.md +264 -0
  40. package/docs/AUTOPILOT-CRON.md +130 -0
  41. package/docs/CONFIG.md +156 -0
  42. package/docs/CURSOR.md +135 -0
  43. package/docs/OPENCODE.md +312 -0
  44. package/docs/demo.gif +0 -0
  45. package/docs/eval/README.md +4 -4
  46. package/docs/launch/show-hn.md +3 -3
  47. package/docs/site/architecture.md +180 -0
  48. package/docs/site/command-reference.md +17 -0
  49. package/docs/site/configuration.md +243 -0
  50. package/docs/site/for-companies.md +4 -4
  51. package/docs/site/forge-annotation-protocol.md +1 -1
  52. package/docs/site/github-is-the-memory.md +2 -2
  53. package/docs/site/how-it-works.md +1 -1
  54. package/docs/site/public/llms-full.txt +380 -0
  55. package/docs/site/public/llms.txt +35 -0
  56. package/docs/spec/eval-run-result.md +8 -4
  57. package/docs/spec/label-state-machine.md +9 -0
  58. package/docs/spec-graph-schema.md +3 -3
  59. package/package.json +3 -3
  60. package/packages/protocol/README.md +75 -0
  61. package/packages/protocol/src/card.js +114 -0
  62. package/packages/protocol/src/cli.js +4 -77
  63. package/packages/protocol/src/emit.js +5 -11
  64. package/packages/protocol/src/html-comment-escape.js +68 -0
  65. package/packages/protocol/src/index.js +3 -1
  66. package/packages/protocol/src/parse.js +19 -11
  67. package/packages/protocol/src/phases.js +105 -0
  68. package/packages/protocol/src/types.js +18 -1
  69. package/packages/protocol/src/validate.js +11 -0
  70. package/scripts/check-admission-parity.mjs +167 -0
  71. package/scripts/check-command-side-effects.sh +376 -0
  72. package/scripts/check-phase-registry-drift.mjs +96 -0
  73. package/scripts/check-spec-markers.sh +274 -0
  74. package/scripts/classify-lane.sh +29 -7
  75. package/scripts/forge-run.sh +353 -0
  76. package/templates/cross-repo-trigger.yml +282 -0
  77. package/templates/cursor/forge.mdc +148 -0
  78. package/templates/github-actions/forgedock-autopilot.yml +113 -0
@@ -25,9 +25,9 @@ The fix isn't a bigger context window. It's structured memory that survives conv
25
25
 
26
26
  ForgeDock treats GitHub as that memory layer. Every pipeline stage writes machine-readable HTML annotations to issues and PRs — FORGE:INVESTIGATOR traces root cause to a specific commit, FORGE:ARCHITECT produces a typed implementation plan, FORGE:CONTEXT surfaces known pitfalls from closed issues in the same module. The next agent reads these before doing anything. The gh CLI is the query interface; no external store, no embeddings.
27
27
 
28
- The pipeline: /work-on #42 → investigate (reads git blame, closed issues, review findings) → architect (traces all call sites, orders changes by dependency) → build → quality gate (14+ check domains) → 9-agent review → PR. Each stage writes what it found so the next stage doesn't repeat the work. After 20,000+ issues processed across real production codebases, patterns accumulate: the context phase now flags known pitfalls in a module before the builder touches it.
28
+ The pipeline: /work-on #42 → investigate (reads git blame, closed issues, review findings) → architect (traces all call sites, orders changes by dependency) → build → quality gate (14+ check domains) → 9-agent review → PR. Each stage writes what it found so the next stage doesn't repeat the work. ForgeDock builds itself with this pipeline — in its first 30 days, 693 issues filed and 603 PRs merged across the repo — and patterns accumulate: the context phase now flags known pitfalls in a module before the builder touches it.
29
29
 
30
- It's 25 markdown command specs installed via npx forgedock, no runtime server. Would love to hear what the HN community thinks about using GitHub's existing graph structure — commits, blame, cross-references — as agent memory.
30
+ It's a set of markdown command specs installed via npx forgedock, no runtime server. Would love to hear what the HN community thinks about using GitHub's existing graph structure — commits, blame, cross-references — as agent memory.
31
31
  ```
32
32
 
33
33
  **Character count**: ~1,380 characters (well within 4,000 limit)
@@ -71,7 +71,7 @@ It's 25 markdown command specs installed via npx forgedock, no runtime server. W
71
71
 
72
72
  ### "Why HTML comments for annotations?"
73
73
 
74
- > GitHub renders HTML comments invisibly to humans — the issue stays readable without noise. Agents grep for `<!-- FORGE:INVESTIGATOR -->` to find structured context fast. It's a zero-dependency protocol: no API, no schema registry, no additional auth. Any tool with `gh` CLI access can read and write annotations. The downside is parsing cost (tokens to extract fields from markdown); the [Vision section of the README](https://github.com/RapierCraftStudios/ForgeDock#vision) describes replacing this with a purpose-built graph store once the protocol is proven.
74
+ > GitHub renders HTML comments invisibly to humans — the issue stays readable without noise. Agents grep for `<!-- FORGE:INVESTIGATOR -->` to find structured context fast. It's a zero-dependency protocol: no API, no schema registry, no additional auth. Any tool with `gh` CLI access can read and write annotations. The downside is parsing cost (tokens to extract fields from markdown); the [Where it's going section of the README](https://github.com/RapierCraftStudios/ForgeDock#where-its-going) describes replacing this with a purpose-built graph store once the protocol is proven.
75
75
 
76
76
  ---
77
77
 
@@ -0,0 +1,180 @@
1
+ ---
2
+ title: "ForgeDock Architecture"
3
+ description: "How ForgeDock's autonomous pipeline works. Phase-by-phase breakdown, FORGE annotation relay, worktree isolation, and how agents reconstruct context after compaction."
4
+ ---
5
+
6
+ # ForgeDock Architecture
7
+
8
+ ForgeDock is **not an application** — it's a set of markdown command specs that get symlinked into `~/.claude/commands/` and invoked as slash commands in Claude Code. There is no runtime process. Every pipeline operation runs inside Claude Code, using GitHub as the persistence layer.
9
+
10
+ ---
11
+
12
+ ## Repository Structure
13
+
14
+ ```
15
+ commands/ # Authoritative workflow specs
16
+ work-on.md # Main orchestrator: investigate → build → review → merge
17
+ work-on/ # Sub-phases: investigate, build, review, close
18
+ build/ # Sub-sub-phases: context, architect, implement, validate
19
+ review-pr.md # PR review orchestrator
20
+ review-pr-agents.md # 9-agent review catalog
21
+ orchestrate.md # Parallel multi-issue execution
22
+ quality-gate.md # Pre-commit checks (14+ domains)
23
+ autopilot.md # Self-improvement cycle
24
+ ... # 25+ more commands
25
+
26
+ bin/ # npm installer
27
+ forgedock.mjs # npx forgedock — symlinks commands into ~/.claude/commands/
28
+
29
+ docs/ # Reference docs and this site
30
+ scripts/ # Verification scripts used by quality-gate
31
+ .agents/ # Codex adapter layer (repo-local skill overrides)
32
+ ```
33
+
34
+ ---
35
+
36
+ ## The Pipeline Relay
37
+
38
+ The core innovation is **structured context passing via GitHub annotations**. Every pipeline phase writes a `FORGE:` annotation as a GitHub issue comment. Every downstream phase reads prior annotations before acting.
39
+
40
+ ```
41
+ Issue opened
42
+ │
43
+ ▼
44
+ FORGE:INVESTIGATOR — root cause, affected files, recommendation
45
+ │
46
+ ▼
47
+ FORGE:CONTRACT — what will be built, deliverables table, acceptance criteria
48
+ │
49
+ ▼
50
+ FORGE:CONTEXT — past review findings, historical bugs, related code paths
51
+ │
52
+ ▼
53
+ FORGE:ARCHITECT — implementation plan, ordered file changes, risk assessment
54
+ │
55
+ ▼
56
+ FORGE:BUILDER — branch, commits, files changed, acceptance criteria status
57
+ │
58
+ ▼
59
+ FORGE:REVIEW — domain agent findings, severity ratings
60
+ │
61
+ ▼
62
+ FORGE:TRAJECTORY — audit trail, pipeline phase results, anomalies
63
+ ```
64
+
65
+ This relay means:
66
+ - A new session can pick up exactly where a previous one left off by reading GitHub state
67
+ - Context compaction does not lose work — the next agent re-reads annotations and continues
68
+ - The audit trail is human-readable and queryable with the `gh` CLI
69
+
70
+ ---
71
+
72
+ ## Pipeline Phases
73
+
74
+ ### Phase 0: Context Load
75
+
76
+ Reads issue number, labels, milestone, existing annotations. Determines which phase to resume from. Classifies lane (fast vs. feature) based on milestone presence.
77
+
78
+ **Fast lane**: Issues without a milestone → PR targets `staging`.
79
+ **Feature lane**: Issues with a milestone → PR targets `milestone/{slug}`.
80
+
81
+ ### Phase 1: Investigation
82
+
83
+ Validates whether the issue is real. Reads domain files, traces execution paths, git blame. Posts `FORGE:INVESTIGATOR` with verdict (CONFIRMED / PARTIAL / INVALID), root cause, affected files, and decomposition assessment.
84
+
85
+ ### Phase 2: Decomposition (conditional)
86
+
87
+ If 2+ services, 6+ files across directories, or multiple task types: creates sub-issues with dependency order. Parent issue gets `workflow:decomposed`. Each sub-issue runs its own `/work-on`.
88
+
89
+ ### Phase 3: Build
90
+
91
+ Sub-phases in order:
92
+
93
+ | Sub-phase | What Happens |
94
+ |-----------|-------------|
95
+ | 3C: Contract | Builder posts deliverables table, acceptance criteria, quality considerations |
96
+ | 3C.5: Context | Surfaces institutional memory — past review findings, historical bugs, related code paths |
97
+ | 3C.6: Architect | Traces ALL affected code paths, sequences implementation order, assesses risk |
98
+ | 3F: Implement | Writes code in isolated git worktree per the architect plan |
99
+ | 3G: Quality Gate | 14-category pre-commit check (runs up to 3 iterations) |
100
+ | 3H: Format | Language-specific formatting and type checking |
101
+ | 3K: Commit | Conventional commit with issue reference |
102
+ | 3M: Builder comment | Posts `FORGE:BUILDER` with branch, commits, acceptance criteria status |
103
+
104
+ ### Phase 4: PR Creation
105
+
106
+ Pushes branch, creates PR targeting the correct base branch. Updates issue to `workflow:in-review`.
107
+
108
+ ### Phase 5: Auto-Review
109
+
110
+ Invokes `/review-pr --auto-merge`. 9 domain agents (security, billing, database, concurrency, auth, frontend, API, performance, infrastructure) review the PR. Critical/HIGH findings become separate GitHub issues. PR merges if no blocking findings.
111
+
112
+ ### Phase 6: Close & Cleanup
113
+
114
+ Closes the issue, sets `workflow:merged`, removes worktree and local branch. If issue is a sub-issue, checks off the item in the parent tracker.
115
+
116
+ ### Phase 7: Trajectory Log
117
+
118
+ Posts `FORGE:TRAJECTORY` with phase-by-phase results table for pipeline health monitoring.
119
+
120
+ ---
121
+
122
+ ## Git Worktree Isolation
123
+
124
+ Every build phase creates an isolated git worktree:
125
+
126
+ ```bash
127
+ git worktree add .claude/worktrees/feat-my-feature-42 \
128
+ -b feat/my-feature-42 origin/staging
129
+ ```
130
+
131
+ Benefits:
132
+ - Build operations never dirty the main working tree
133
+ - Multiple issues can be built in parallel without branch conflicts
134
+ - Worktree is removed in Phase 6 after merge
135
+
136
+ ---
137
+
138
+ ## Quality Gate
139
+
140
+ The quality gate checks code before commit across 14+ domains:
141
+
142
+ - **Logic**: null checks, off-by-one errors, unreachable code
143
+ - **Auth**: auth guards on all state-changing routes
144
+ - **Database**: N+1 queries, missing indexes, raw SQL injection surface
145
+ - **Security**: hardcoded credentials, injection vectors, CSRF exposure
146
+ - **Frontend**: proxy wiring, missing error boundaries, a11y regressions
147
+ - **Infrastructure**: Docker ownership, port binding, env var sync
148
+ - **API contracts**: response shape changes, SDK literal sync
149
+ - **Tests**: coverage gaps, missing edge cases
150
+
151
+ Each finding is rated HIGH / MEDIUM / LOW. HIGH findings are blocking. The gate runs up to 3 iterations.
152
+
153
+ ---
154
+
155
+ ## Compaction Resilience
156
+
157
+ Claude Code compacts context mid-session. ForgeDock is designed to survive this:
158
+
159
+ 1. **Write to GitHub after every significant step** — annotations are the durable state
160
+ 2. **Re-read GitHub at the start of each phase** — never assume in-memory context
161
+ 3. **Universal dispatcher** — any session can re-read issue labels and comments and determine exactly which phase to resume
162
+
163
+ A new `/work-on 42` invocation after compaction reads the existing `FORGE:INVESTIGATOR`, `FORGE:CONTRACT`, `FORGE:ARCHITECT`, and `FORGE:BUILDER` comments and jumps straight to Phase 4 (PR creation) or Phase 5 (review) without re-running earlier phases.
164
+
165
+ ---
166
+
167
+ ## Command Specs Are Prompts
168
+
169
+ The `.md` files in `commands/` are detailed prompt engineering documents — some exceed 50KB. They constrain LLM behavior at every step:
170
+
171
+ - **Phase boundaries** are explicit with entry conditions and exit actions
172
+ - **Universal continuation rule** prevents premature stopping after intermediate results
173
+ - **Structured output requirements** (e.g., `<!-- INVESTIGATION:COMPLETE -->` marker) are machine-readable gates that downstream phases check before proceeding
174
+ - **Domain-specific rules** (INFRA footguns, type invariant verification, sibling pattern sweeps) encode institutional memory directly into the prompt
175
+
176
+ ---
177
+
178
+ ## Contributing
179
+
180
+ The pipeline dogfoods itself. Bug reports, improvements, and new command specs all flow through `/work-on`. See [CONTRIBUTING.md](https://github.com/RapierCraftStudios/ForgeDock/blob/main/CONTRIBUTING.md) and [devdocs/project/architecture.md](https://github.com/RapierCraftStudios/ForgeDock/blob/main/devdocs/project/architecture.md) for the full strategic context.
@@ -453,6 +453,23 @@ Measures pipeline performance, correlates with prompt changes, and proposes impr
453
453
 
454
454
  ---
455
455
 
456
+ ### `/upgrade-deps`
457
+
458
+ **Autonomous dependency upgrade pipeline.**
459
+
460
+ Detects outdated packages, triages them by semver risk, creates GitHub issues for eligible upgrades, and runs each through `/work-on` — so every upgrade gets investigation, compatibility verification, quality gate, review, and merge rather than a blind version bump. Major upgrades are flagged for human review unless `--allow-major` is passed.
461
+
462
+ ```bash
463
+ /upgrade-deps # Detect + triage + report only
464
+ /upgrade-deps --dry-run # All phases, but create nothing
465
+ /upgrade-deps --ecosystem npm # Limit to one ecosystem (npm|pip|cargo)
466
+ /upgrade-deps --allow-major # Include major upgrades in issue creation
467
+ /upgrade-deps --limit 5 # Cap issue creation (default: 10)
468
+ /upgrade-deps --batch # Group patch upgrades into one issue
469
+ ```
470
+
471
+ ---
472
+
456
473
  ## Investigation & Validation
457
474
 
458
475
  ---
@@ -0,0 +1,243 @@
1
+ ---
2
+ title: "Configuration Reference — forge.yaml"
3
+ description: "Complete forge.yaml schema reference for ForgeDock. All required and optional sections explained with examples."
4
+ ---
5
+
6
+ # Configuration Reference — forge.yaml
7
+
8
+ `forge.yaml` lives at your project root and tells ForgeDock commands how to interact with your project. Without it, commands cannot resolve your GitHub repository, paths, or branches.
9
+
10
+ ## Quick Start
11
+
12
+ ```bash
13
+ # Option 1: Autopilot setup (recommended)
14
+ npx forgedock init
15
+
16
+ # Option 2: Manual setup
17
+ cp forge.yaml.example forge.yaml
18
+ # Edit forge.yaml with your project details
19
+ echo "forge.yaml" >> .gitignore
20
+ ```
21
+
22
+ `npx forgedock init` auto-detects most values from `git remote`, `package.json`, and `gh api`. You review the result on a single annotated screen.
23
+
24
+ ### `init` Flags
25
+
26
+ | Flag | Behavior |
27
+ |------|----------|
28
+ | `--manual` | Skip AI enrichment — shows detection baseline values only |
29
+ | `--verbose` | Show each field's detection source and confidence rationale |
30
+
31
+ ---
32
+
33
+ ## Schema Overview
34
+
35
+ | Section | Required | Purpose |
36
+ |---------|----------|---------|
37
+ | [`project`](#project-required) | **Yes** | GitHub identity (owner, repo, name) |
38
+ | [`paths`](#paths-required) | **Yes** | Local filesystem locations |
39
+ | [`branches`](#branches-required) | **Yes** | Branch naming conventions |
40
+ | [`repos`](#repos-optional) | No | Multi-repository routing |
41
+ | [`project_board`](#project_board-optional) | No | GitHub Projects v2 integration |
42
+ | [`services`](#services-optional) | No | External service URLs and IDs |
43
+ | [`review`](#review-optional) | No | Context injected into review agents |
44
+ | [`devdocs`](#devdocs-optional) | No | Devdocs knowledge tree path |
45
+ | [`verification`](#verification-optional) | No | Health-check patterns |
46
+ | [`billing`](#billing-optional) | No | Financial integrity audit |
47
+ | [`adaptive_scripts`](#adaptive_scripts-optional) | No | Per-repo script override configuration |
48
+
49
+ ---
50
+
51
+ ## `project` (REQUIRED)
52
+
53
+ Core identity fields used by every command that calls `gh issue`, `gh pr`, or `gh project`.
54
+
55
+ ```yaml
56
+ project:
57
+ name: "Acme Platform"
58
+ owner: "acme-org"
59
+ repo: "acme-platform"
60
+ description: "SaaS platform for automated data processing"
61
+ # forge_repo: "acme-org/acme-forge" # if pipeline lives in a separate repo
62
+ ```
63
+
64
+ | Field | Type | Required | Description |
65
+ |-------|------|----------|-------------|
66
+ | `name` | string | **Yes** | Human-readable name used in pipeline reports and issue comments |
67
+ | `owner` | string | **Yes** | GitHub org or username |
68
+ | `repo` | string | **Yes** | Repository name. Combined as `owner/repo` = the `GH_REPO` in all commands |
69
+ | `description` | string | No | One-line description used in issue templates |
70
+ | `forge_repo` | string | No | Pipeline repo in `owner/repo` format when pipeline lives separately from the project being developed |
71
+
72
+ ---
73
+
74
+ ## `paths` (REQUIRED)
75
+
76
+ Local filesystem paths for git worktree operations.
77
+
78
+ ```yaml
79
+ paths:
80
+ root: "/home/youruser/projects/acme-platform"
81
+ worktree_base: "/home/youruser/projects/acme-platform/.claude/worktrees"
82
+ ```
83
+
84
+ | Field | Type | Required | Description |
85
+ |-------|------|----------|-------------|
86
+ | `root` | string (absolute) | **Yes** | Absolute path to the project root. Base for `git worktree add` |
87
+ | `worktree_base` | string (absolute) | **Yes** | Directory where per-branch worktrees are created |
88
+
89
+ ---
90
+
91
+ ## `branches` (REQUIRED)
92
+
93
+ Branch naming conventions that control PR targeting and source branch selection.
94
+
95
+ ```yaml
96
+ branches:
97
+ default: "main"
98
+ staging: "staging"
99
+ feature_pattern: "milestone/{slug}"
100
+ ```
101
+
102
+ | Field | Type | Required | Description |
103
+ |-------|------|----------|-------------|
104
+ | `default` | string | **Yes** | Default branch (`main` or `master`) |
105
+ | `staging` | string | **Yes** | Staging branch for fast-lane PRs (issues without a milestone) |
106
+ | `feature_pattern` | string | **Yes** | Pattern for feature branches. `{slug}` = milestone title in kebab-case |
107
+
108
+ **Lane routing**: Issues without a milestone → fast lane → PR targets `branches.staging`. Issues with a milestone → feature lane → PR targets `branches.feature_pattern`.
109
+
110
+ ---
111
+
112
+ ## `repos` (OPTIONAL)
113
+
114
+ Multi-repository routing for projects that span multiple GitHub repos.
115
+
116
+ ```yaml
117
+ repos:
118
+ default:
119
+ repo: "acme-org/acme-platform"
120
+ staging_branch: "staging"
121
+
122
+ satellites:
123
+ - prefix: "mcp"
124
+ repo: "acme-org/acme-mcp-server"
125
+ staging_branch: "main"
126
+ local_path: "/home/youruser/projects/acme-mcp-server"
127
+ ```
128
+
129
+ Use `<prefix>:<issue_number>` syntax in commands: `mcp:5`, `sdk:12`.
130
+
131
+ | Field | Type | Required | Description |
132
+ |-------|------|----------|-------------|
133
+ | `satellites[].prefix` | string | **Yes** | Short prefix for issue routing |
134
+ | `satellites[].repo` | string | **Yes** | Full `owner/repo` of the satellite repository |
135
+ | `satellites[].staging_branch` | string | **Yes** | Target branch for fast-lane PRs |
136
+ | `satellites[].local_path` | string | No | Absolute local path to the satellite repo |
137
+ | `satellites[].billing_enabled` | boolean | No | Enable financial integrity audit for this satellite |
138
+
139
+ ---
140
+
141
+ ## `project_board` (OPTIONAL)
142
+
143
+ GitHub Projects v2 integration. When configured, ForgeDock automatically adds issues to the board and updates Status, Lane, Component, Priority, and Workflow fields.
144
+
145
+ ```yaml
146
+ project_board:
147
+ owner: "acme-org"
148
+ project_number: 1
149
+ project_id: "PVT_kwHOxxxxxxxxxxxxxxxx"
150
+
151
+ field_ids:
152
+ status: "PVTSSF_xxxxxxxxxxxxxxxxxxxxxxxx"
153
+ lane: "PVTSSF_xxxxxxxxxxxxxxxxxxxxxxxx"
154
+ component: "PVTSSF_xxxxxxxxxxxxxxxxxxxxxxxx"
155
+ priority: "PVTSSF_xxxxxxxxxxxxxxxxxxxxxxxx"
156
+ workflow: "PVTSSF_xxxxxxxxxxxxxxxxxxxxxxxx"
157
+
158
+ option_ids:
159
+ status:
160
+ todo: "xxxxxxxx"
161
+ in_progress: "xxxxxxxx"
162
+ done: "xxxxxxxx"
163
+ lane:
164
+ fast: "xxxxxxxx"
165
+ feature: "xxxxxxxx"
166
+ ```
167
+
168
+ **Finding your IDs**:
169
+
170
+ ```bash
171
+ # List project IDs
172
+ gh project list --owner <owner> --format json | jq '.projects[] | {number, id, title}'
173
+
174
+ # List field IDs
175
+ gh project field-list <project_number> --owner <owner> --format json | jq '.fields[]'
176
+
177
+ # List option IDs for a single-select field
178
+ gh project field-list <project_number> --owner <owner> --format json \
179
+ | jq '.fields[] | select(.name == "Status") | .options[]'
180
+ ```
181
+
182
+ ---
183
+
184
+ ## `review` (OPTIONAL)
185
+
186
+ Context injected into review agent prompts. Helps agents make project-aware decisions.
187
+
188
+ ```yaml
189
+ review:
190
+ context: |
191
+ This is a multi-tenant SaaS. Every endpoint must enforce tenant isolation.
192
+ We use row-level security in PostgreSQL — never bypass it.
193
+ Financial calculations must use Decimal, never float.
194
+ ```
195
+
196
+ ---
197
+
198
+ ## `devdocs` (OPTIONAL)
199
+
200
+ Path to your project's devdocs knowledge tree. Agents read this for institutional context before making architectural decisions.
201
+
202
+ ```yaml
203
+ devdocs:
204
+ path: "devdocs/"
205
+ ```
206
+
207
+ The devdocs directory should contain `project/architecture.md` as the primary strategic context file. See [Architecture](./architecture) for details on ForgeDock's own devdocs structure.
208
+
209
+ ---
210
+
211
+ ## `adaptive_scripts` (OPTIONAL)
212
+
213
+ Per-repo script overrides for deterministic pipeline operations. Allows you to replace prose instructions with executable scripts for project-specific validation.
214
+
215
+ ```yaml
216
+ adaptive_scripts:
217
+ enabled: true
218
+ directory: "scripts/forge/"
219
+ ```
220
+
221
+ ---
222
+
223
+ ## Full Example
224
+
225
+ ```yaml
226
+ # forge.yaml — minimal required config
227
+
228
+ project:
229
+ name: "My Project"
230
+ owner: "my-org"
231
+ repo: "my-project"
232
+
233
+ paths:
234
+ root: "/home/me/projects/my-project"
235
+ worktree_base: "/home/me/projects/my-project/.claude/worktrees"
236
+
237
+ branches:
238
+ default: "main"
239
+ staging: "staging"
240
+ feature_pattern: "milestone/{slug}"
241
+ ```
242
+
243
+ For the full annotated example, see [`forge.yaml.example`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/forge.yaml.example) in the repository.
@@ -30,7 +30,7 @@ Use this table to determine which license you need:
30
30
 
31
31
  Key clarification: ForgeDock is a **development tool**, not a library embedded in your product. Simply using ForgeDock to build and ship your own software does not trigger the copyleft clause — the clause applies when you modify ForgeDock itself and offer it as a service to others.
32
32
 
33
- For the full license text, see [`LICENSE`](../../LICENSE) (AGPL-3.0) and [`COMMERCIAL-LICENSE.md`](../../COMMERCIAL-LICENSE.md).
33
+ For the full license text, see [`LICENSE`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/LICENSE) (AGPL-3.0) and [`COMMERCIAL-LICENSE.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/COMMERCIAL-LICENSE.md).
34
34
 
35
35
  ---
36
36
 
@@ -76,13 +76,13 @@ All pipeline state lives in your GitHub repository: issue comments (FORGE annota
76
76
  No. ForgeDock has no server-side component that could receive your code or GitHub data. The `npx forgedock` installer symlinks command files into `~/.claude/commands/` on the developer's machine — it does not phone home.
77
77
 
78
78
  **How are contributions governed?**
79
- All contributors sign a Developer Certificate of Origin (DCO) on each commit. ForgeDock does not use a CLA. See [`CONTRIBUTING.md`](../../CONTRIBUTING.md) for the full process.
79
+ All contributors sign a Developer Certificate of Origin (DCO) on each commit. ForgeDock does not use a CLA. See [`CONTRIBUTING.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/CONTRIBUTING.md) for the full process.
80
80
 
81
81
  **Security policy?**
82
- See [`SECURITY.md`](../../SECURITY.md) for the vulnerability disclosure policy and contact.
82
+ See [`SECURITY.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/SECURITY.md) for the vulnerability disclosure policy and contact.
83
83
 
84
84
  **Governance?**
85
- See [`GOVERNANCE.md`](../../GOVERNANCE.md) for the project's decision-making process and stewardship model.
85
+ See [`GOVERNANCE.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/GOVERNANCE.md) for the project's decision-making process and stewardship model.
86
86
 
87
87
  ---
88
88
 
@@ -10,7 +10,7 @@ keywords: ["ai agent context protocol", "ai agent communication", "forge annotat
10
10
  >
11
11
  > The normative specification for the FORGE Annotation Protocol is now maintained at:
12
12
  >
13
- > **[`docs/spec/forge-protocol-v1.md`](../spec/forge-protocol-v1.md)**
13
+ > **[`docs/spec/forge-protocol-v1.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/spec/forge-protocol-v1.md)**
14
14
  >
15
15
  > That document is the single source of truth for all FORGE annotation types,
16
16
  > syntax rules, the label state machine, conformance requirements, the extension
@@ -36,7 +36,7 @@ affected_files: commands/orchestrate.md, scripts/layer5-query.sh
36
36
 
37
37
  This is still a GitHub comment — a human reading the thread sees it as a collapsed HTML comment or reads its contents directly. But a downstream agent querying the issue with `gh issue view` gets it as structured text it can parse without guessing at prose intent. The annotation is the contract between stages.
38
38
 
39
- The annotation format is an open standard — the [FORGE Annotation Protocol](../spec/forge-protocol-v1.md). Any agent pipeline can implement it without ForgeDock. The format is documented in full, the vocabulary is fixed, and the license is CC-BY-4.0.
39
+ The annotation format is an open standard — the [FORGE Annotation Protocol](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/spec/forge-protocol-v1.md). Any agent pipeline can implement it without ForgeDock. The format is documented in full, the vocabulary is fixed, and the license is CC-BY-4.0.
40
40
 
41
41
  ---
42
42
 
@@ -106,7 +106,7 @@ Checks your environment, installs the slash commands into Claude Code, and gener
106
106
 
107
107
  **Adopt the protocol without ForgeDock:**
108
108
 
109
- The annotation format is the independently useful part. The [FORGE Annotation Protocol](../FORGE-PROTOCOL.md) document describes the philosophy and vocabulary. The [protocol spec](../spec/forge-protocol-v1.md) gives the full technical definition — annotation types, required fields, completion markers, and query patterns. The license is CC-BY-4.0. Any agent pipeline can implement structured GitHub annotations using these specs without adopting ForgeDock's command layer. The only requirement is consistency: if annotations are written and read with the same vocabulary, the knowledge graph is coherent across sessions.
109
+ The annotation format is the independently useful part. The [FORGE Annotation Protocol](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/FORGE-PROTOCOL.md) document describes the philosophy and vocabulary. The [protocol spec](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/spec/forge-protocol-v1.md) gives the full technical definition — annotation types, required fields, completion markers, and query patterns. The license is CC-BY-4.0. Any agent pipeline can implement structured GitHub annotations using these specs without adopting ForgeDock's command layer. The only requirement is consistency: if annotations are written and read with the same vocabulary, the knowledge graph is coherent across sessions.
110
110
 
111
111
  ---
112
112
 
@@ -129,7 +129,7 @@ A new agent session running `/work-on 42` should always know what to do next by
129
129
 
130
130
  GitHub labels track the workflow state of every issue. The pipeline reads these labels to determine what to do next. A human can also manually set a label to nudge the pipeline or override its routing.
131
131
 
132
- > **Label reference**: [`docs/spec/label-state-machine.md`](../spec/label-state-machine.md) — full state table, transition rules, and terminal labels.
132
+ > **Label reference**: [`docs/spec/label-state-machine.md`](https://github.com/RapierCraftStudios/ForgeDock/blob/main/docs/spec/label-state-machine.md) — full state table, transition rules, and terminal labels.
133
133
 
134
134
  ---
135
135