forgedock 1.2.0 → 1.3.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 (53) hide show
  1. package/README.md +8 -2
  2. package/bin/engine/phases.mjs +178 -28
  3. package/bin/engine/state.mjs +39 -7
  4. package/bin/engine-cli.mjs +63 -2
  5. package/bin/engine.mjs +25 -4
  6. package/bin/forgedock.mjs +235 -4
  7. package/bin/hooks/pre-tool-use.mjs +26 -12
  8. package/bin/journey.mjs +103 -11
  9. package/commands/forge-stats.md +5 -4
  10. package/commands/issue.md +5 -1
  11. package/commands/orchestrate/phase-4-execution.md +2 -0
  12. package/commands/qa-sweep.md +17 -0
  13. package/commands/replay.md +16 -2
  14. package/commands/review-pr-agents/spec-cli.md +179 -0
  15. package/commands/review-pr.md +49 -0
  16. package/commands/upgrade-deps.md +518 -0
  17. package/commands/work-on/build/validate.md +61 -1
  18. package/commands/work-on/build.md +9 -1
  19. package/commands/work-on/decompose.md +8 -1
  20. package/docs/AIDER.md +264 -0
  21. package/docs/AUTOPILOT-CRON.md +130 -0
  22. package/docs/CONFIG.md +36 -0
  23. package/docs/CURSOR.md +135 -0
  24. package/docs/OPENCODE.md +312 -0
  25. package/docs/demo.gif +0 -0
  26. package/docs/eval/README.md +4 -4
  27. package/docs/launch/show-hn.md +3 -3
  28. package/docs/site/architecture.md +180 -0
  29. package/docs/site/command-reference.md +17 -0
  30. package/docs/site/configuration.md +243 -0
  31. package/docs/site/for-companies.md +4 -4
  32. package/docs/site/forge-annotation-protocol.md +1 -1
  33. package/docs/site/github-is-the-memory.md +2 -2
  34. package/docs/site/how-it-works.md +1 -1
  35. package/docs/site/public/llms-full.txt +380 -0
  36. package/docs/site/public/llms.txt +35 -0
  37. package/docs/spec-graph-schema.md +3 -3
  38. package/package.json +2 -2
  39. package/packages/protocol/README.md +75 -0
  40. package/packages/protocol/src/card.js +114 -0
  41. package/packages/protocol/src/cli.js +4 -77
  42. package/packages/protocol/src/emit.js +14 -3
  43. package/packages/protocol/src/index.js +2 -1
  44. package/packages/protocol/src/parse.js +17 -8
  45. package/packages/protocol/src/types.js +1 -1
  46. package/packages/protocol/src/validate.js +11 -0
  47. package/scripts/check-command-side-effects.sh +261 -0
  48. package/scripts/check-spec-markers.sh +273 -0
  49. package/scripts/classify-lane.sh +29 -7
  50. package/scripts/forge-run.sh +322 -0
  51. package/templates/cross-repo-trigger.yml +282 -0
  52. package/templates/cursor/forge.mdc +148 -0
  53. package/templates/github-actions/forgedock-autopilot.yml +113 -0
@@ -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