forgedock 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- <img src="https://avatars.githubusercontent.com/in/3731547?s=200&u=b38eba537e011502c010d4b682d641f802591845&v=4" alt="ForgeDock" width="80" />
3
+ <img src="https://avatars.githubusercontent.com/in/4051319?s=200&v=4" alt="ForgeDock" width="80" />
4
4
 
5
5
  <h1>ForgeDock</h1>
6
6
 
@@ -227,6 +227,8 @@ npx forgedock --global # global install: installs into ~/.claude/commands/ — a
227
227
 
228
228
  **Project-scoped is the default.** `npx forgedock` installs commands scoped to the current project directory. Use `--global` only when you want the commands available across all your projects on this machine.
229
229
 
230
+ > **Want engine-mode dispatch?** `npx forgedock` is transient — the `forgedock` binary isn't persisted in PATH after install. `/orchestrate` and `/autopilot` use agent dispatch mode by default, which is fully functional. To enable engine-mode dispatch (`forgedock run-issue`) with its durable phase table and fail-closed review gate, run `npm install -g forgedock` instead.
231
+
230
232
  One command does everything: it checks your environment, installs the slash commands into Claude Code, detects your repo (owner, branches, paths), and hands you a single annotated `forge.yaml` to review — press Enter to accept. Run `npx forgedock init` any time afterward to re-generate the config only.
231
233
 
232
234
  Installing also registers a SessionStart hook, so every Claude Code session
package/bin/journey.mjs CHANGED
@@ -238,13 +238,40 @@ export function detectDescription(cwd) {
238
238
  // Journey context (Task 5)
239
239
  // ---------------------------------------------------------------------------
240
240
 
241
- import { execFileSync } from "child_process";
241
+ import { execFileSync, spawnSync } from "child_process";
242
242
  import os from "os";
243
243
  import {
244
244
  renderMark, ember, shimmer, revealRows, moltenBar, fixCard,
245
245
  colorMode, motionEnabled, CHROME_STOPS, HERO_MARK, COMPACT_MARK, sleep,
246
246
  } from "./cinema.mjs";
247
247
 
248
+ // ---------------------------------------------------------------------------
249
+ // URL opener (default openFn implementation — injectable for tests)
250
+ // ---------------------------------------------------------------------------
251
+
252
+ /**
253
+ * Open a URL in the system default browser. Best-effort: errors are swallowed
254
+ * so the caller's journey continues even when no browser is available.
255
+ *
256
+ * Platform dispatch:
257
+ * Linux → xdg-open
258
+ * macOS → open
259
+ * Windows → start (via shell)
260
+ */
261
+ export function openUrl(url) {
262
+ try {
263
+ if (process.platform === "win32") {
264
+ spawnSync("cmd", ["/c", "start", "", url], { stdio: "ignore", windowsHide: true });
265
+ } else if (process.platform === "darwin") {
266
+ spawnSync("open", [url], { detached: true, stdio: "ignore" });
267
+ } else {
268
+ spawnSync("xdg-open", [url], { detached: true, stdio: "ignore" });
269
+ }
270
+ } catch {
271
+ // Best-effort — if the browser can't be opened, the journey continues.
272
+ }
273
+ }
274
+
248
275
  /**
249
276
  * Build the shared journey context. Every act takes this as its first arg.
250
277
  * All process-touching values are injectable for tests.
@@ -255,6 +282,7 @@ export function makeCtx(overrides = {}) {
255
282
  const argv = overrides.argv ?? process.argv.slice(2);
256
283
  const nodeVersion = overrides.nodeVersion ?? process.versions.node;
257
284
  const enrichFn = overrides.enrichFn ?? enrich;
285
+ const openFn = overrides.openFn ?? openUrl;
258
286
  return {
259
287
  cwd: process.cwd(),
260
288
  home: env.HOME || env.USERPROFILE || os.homedir(),
@@ -267,6 +295,7 @@ export function makeCtx(overrides = {}) {
267
295
  nodeVersion,
268
296
  linkStrategy: "symlink",
269
297
  enrichFn,
298
+ openFn,
270
299
  exec: (cmd, args) =>
271
300
  execFileSync(cmd, args, {
272
301
  encoding: "utf-8",
@@ -755,7 +784,7 @@ export async function forge(ctx) {
755
784
 
756
785
  import { detectConfig } from "./init-detect.mjs";
757
786
  import { enrich } from "./init-enrich-api.mjs";
758
- import { annotatedReviewScreen, box } from "./tui.mjs";
787
+ import { annotatedReviewScreen, box, confirm } from "./tui.mjs";
759
788
 
760
789
  const badgeOf = (field) => field.confidence;
761
790
 
@@ -872,10 +901,11 @@ export function celebrate(ctx, summary) {
872
901
  w.write(
873
902
  box(
874
903
  [
875
- ` 1. run npx forgedock labels setup — bootstrap GitHub labels`,
876
- ` 2. run npx forgedock doctor — verify the install is green`,
877
- ` 3. open claude in this repo`,
878
- ` 4. run /issue <title> then /work-on <number>`,
904
+ ` 1. install GitHub App — github.com/apps/rapiercraft-forgedock`,
905
+ ` 2. run npx forgedock labels setup — bootstrap GitHub labels`,
906
+ ` 3. run npx forgedock doctor — verify the install is green`,
907
+ ` 4. open claude in this repo`,
908
+ ` 5. run /issue <title> then /work-on <number>`,
879
909
  ],
880
910
  { title: "what's next" },
881
911
  ),
@@ -883,6 +913,45 @@ export function celebrate(ctx, summary) {
883
913
  w.write(" " + dimLine(ctx, "docs: github.com/RapierCraftStudios/ForgeDock · ⭐ a star is the whole marketing budget") + "\n\n");
884
914
  }
885
915
 
916
+ // ---------------------------------------------------------------------------
917
+ // Act V.5 — Connect: GitHub App install prompt (Issue #1719)
918
+ // ---------------------------------------------------------------------------
919
+
920
+ const GITHUB_APP_URL = "https://github.com/apps/rapiercraft-forgedock/installations/new";
921
+
922
+ /**
923
+ * Act V.5: prompt the user to install the ForgeDock GitHub App on their
924
+ * account. Non-blocking — declining or non-interactive mode both continue
925
+ * the journey without error.
926
+ *
927
+ * Uses ctx.openFn (injectable for tests) to open the URL in the default
928
+ * browser. In non-TTY environments (piped stdin, --fast) confirm() resolves
929
+ * immediately to false (the defaultValue), so no prompt is shown.
930
+ *
931
+ * @returns {Promise<{ opened: boolean }>}
932
+ */
933
+ export async function connect(ctx) {
934
+ const { stdout: w } = ctx;
935
+ w.write("\n " + ember("Connect to GitHub", ctx.mode) + "\n\n");
936
+
937
+ const yes = await confirm(
938
+ "Install the ForgeDock GitHub App for automatic pipeline triggers?",
939
+ false,
940
+ );
941
+
942
+ if (yes) {
943
+ ctx.openFn(GITHUB_APP_URL);
944
+ w.write(
945
+ ` \x1b[38;2;255;179;71m✔\x1b[0m Opening ${GITHUB_APP_URL}\n` +
946
+ ` ${ctx.mode === "none" ? "" : "\x1b[2m"}Install account-wide (all repositories) to enable webhook triggers.\x1b[22m\n`,
947
+ );
948
+ return { opened: true };
949
+ }
950
+
951
+ w.write(` ${ctx.mode === "none" ? "" : "\x1b[2m"}Skipped — install anytime: ${GITHUB_APP_URL}\x1b[22m\n`);
952
+ return { opened: false };
953
+ }
954
+
886
955
  // ---------------------------------------------------------------------------
887
956
  // The full journey (Task 8)
888
957
  // ---------------------------------------------------------------------------
@@ -902,7 +971,8 @@ export async function runJourney(ctx) {
902
971
  const forged = await forge(ctx);
903
972
  const { draft, description } = await read(ctx);
904
973
  const reviewed = await review(ctx, draft, description);
905
- celebrate(ctx, { ...reviewed, total: forged.total, hookStatus: forged.hookStatus });
974
+ const connected = await connect(ctx);
975
+ celebrate(ctx, { ...reviewed, ...connected, total: forged.total, hookStatus: forged.hookStatus });
906
976
  return reviewed.aborted ? 1 : 0;
907
977
  } finally {
908
978
  process.removeListener("SIGINT", onSigint);
@@ -387,12 +387,47 @@ while true; do
387
387
  break
388
388
  fi
389
389
 
390
- # Step 1: Orchestrate all open fast-lane issues in parallel via /orchestrate
391
- echo "=== Fast Lane Iteration $FAST_LANE_ITERATIONS: Orchestrating $OPEN_UNMILESTONED issues ==="
390
+ # Step 1: Drive all open fast-lane issues through the durable engine.
391
+ # Each issue is dispatched individually via `forgedock run-issue` so the engine's
392
+ # phase table (fail-closed review gate, deterministic resume, lease-based concurrency)
393
+ # enforces every transition — not the LLM interpreting work-on.md.
394
+ # Fallback: if forgedock CLI is unavailable, delegate to /orchestrate (markdown-spec path).
395
+ echo "=== Fast Lane Iteration $FAST_LANE_ITERATIONS: Dispatching $OPEN_UNMILESTONED issues via engine ==="
396
+
397
+ FORGEDOCK_AVAILABLE=$(command -v forgedock >/dev/null 2>&1 && echo "true" || echo "false")
398
+
392
399
  if [ "$DRY_RUN" = "false" ]; then
393
- Skill("orchestrate", args="fast-lane")
400
+ if [ "$FORGEDOCK_AVAILABLE" = "true" ]; then
401
+ # Engine-first dispatch: enumerate issues and run each through the durable engine.
402
+ # Issues are dispatched concurrently — the engine holds per-issue leases.
403
+ FAST_LANE_ISSUE_NUMS=$(gh issue list $GH_FLAG \
404
+ --state open \
405
+ --limit 200 \
406
+ --json number,milestone,labels \
407
+ --jq '[.[] | select(
408
+ .milestone == null and
409
+ (.labels | map(.name) | any(. == "workflow:merged" or . == "workflow:invalid" or . == "workflow:decomposed" or . == "needs-human") | not)
410
+ )] | .[].number' \
411
+ 2>/dev/null || echo '')
412
+
413
+ for ISSUE_NUM in $FAST_LANE_ISSUE_NUMS; do
414
+ echo "Dispatching #$ISSUE_NUM via forgedock run-issue --lane staging"
415
+ forgedock run-issue "$ISSUE_NUM" --lane staging &
416
+ done
417
+
418
+ # Wait for all engine workers to complete before proceeding to deploy step.
419
+ wait
420
+ echo "Engine dispatch complete for fast-lane iteration $FAST_LANE_ITERATIONS"
421
+ else
422
+ echo "INFO: Using agent dispatch mode (forgedock CLI not in PATH — run \`npm install -g forgedock\` for engine-mode dispatch)"
423
+ Skill("orchestrate", args="fast-lane")
424
+ fi
394
425
  else
395
- echo "[DRY-RUN] Would invoke: Skill(orchestrate, fast-lane)"
426
+ if [ "$FORGEDOCK_AVAILABLE" = "true" ]; then
427
+ echo "[DRY-RUN] Would dispatch each fast-lane issue via: forgedock run-issue <issue> --lane staging"
428
+ else
429
+ echo "[DRY-RUN] Would invoke: Skill(orchestrate, fast-lane)"
430
+ fi
396
431
  fi
397
432
 
398
433
  # Step 2: Deploy staging→main if staging has new commits
@@ -481,12 +516,43 @@ echo "$MILESTONES" | jq -c '.[]' | while IFS= read -r milestone; do
481
516
 
482
517
  echo "=== Processing milestone: '$MS_TITLE' ($MS_PCT% complete, $MS_OPEN open) ==="
483
518
 
484
- # Step 1: Orchestrate open issues in this milestone
519
+ # Step 1: Drive open issues in this milestone through the durable engine.
520
+ # Same engine-first dispatch as Phase 2 — fail-closed gates apply to milestone issues too.
521
+ # Fallback: if forgedock CLI is unavailable, delegate to /orchestrate.
485
522
  if [ "$MS_OPEN" -gt 0 ]; then
523
+ FORGEDOCK_AVAILABLE=$(command -v forgedock >/dev/null 2>&1 && echo "true" || echo "false")
524
+
486
525
  if [ "$DRY_RUN" = "false" ]; then
487
- Skill("orchestrate", args="milestone $MS_SLUG")
526
+ if [ "$FORGEDOCK_AVAILABLE" = "true" ]; then
527
+ MS_ISSUE_NUMS=$(gh issue list $GH_FLAG \
528
+ --state open \
529
+ --limit 200 \
530
+ --json number,milestone,labels \
531
+ --jq --arg slug "$MS_SLUG" \
532
+ '[.[] | select(
533
+ .milestone != null and
534
+ (.milestone.title | ascii_downcase | gsub("[^a-z0-9]+"; "-") | ltrimstr("-") | rtrimstr("-")) == $slug and
535
+ (.labels | map(.name) | any(. == "workflow:merged" or . == "workflow:invalid" or . == "workflow:decomposed" or . == "needs-human") | not)
536
+ )] | .[].number' \
537
+ 2>/dev/null || echo '')
538
+
539
+ for ISSUE_NUM in $MS_ISSUE_NUMS; do
540
+ echo "Dispatching #$ISSUE_NUM via forgedock run-issue --lane milestone/$MS_SLUG"
541
+ forgedock run-issue "$ISSUE_NUM" --lane "milestone/$MS_SLUG" &
542
+ done
543
+
544
+ wait
545
+ echo "Engine dispatch complete for milestone '$MS_TITLE'"
546
+ else
547
+ echo "INFO: Using agent dispatch mode (forgedock CLI not in PATH — run \`npm install -g forgedock\` for engine-mode dispatch)"
548
+ Skill("orchestrate", args="milestone $MS_SLUG")
549
+ fi
488
550
  else
489
- echo "[DRY-RUN] Would invoke: Skill(orchestrate, milestone $MS_SLUG)"
551
+ if [ "$FORGEDOCK_AVAILABLE" = "true" ]; then
552
+ echo "[DRY-RUN] Would dispatch each milestone issue via: forgedock run-issue <issue> --lane milestone/$MS_SLUG"
553
+ else
554
+ echo "[DRY-RUN] Would invoke: Skill(orchestrate, milestone $MS_SLUG)"
555
+ fi
490
556
  fi
491
557
  else
492
558
  echo "Milestone '$MS_TITLE' has no open issues — checking if branch needs deploy"
@@ -392,8 +392,11 @@ while [ "$REVIEW_ITER" -lt "$MAX_REVIEW_ITER" ] && [ "$REVIEW_GATE_PASSED" = "fa
392
392
  # This loop's next iteration will re-read the latest PR state.
393
393
  fi
394
394
  else
395
- echo "WARNING: Could not determine review verdict from FORGE:REVIEW comment. Assuming APPROVED."
396
- REVIEW_GATE_PASSED=true
395
+ # Fail-closed: unknown verdict must block merge, not grant it.
396
+ # If FORGE:REVIEW comment is missing, malformed, or unparseable for any reason
397
+ # (race condition, context compaction, skill error, comment format mismatch),
398
+ # treat it as a failed review — REVIEW_GATE_PASSED remains false.
399
+ echo "ERROR: Could not determine review verdict from FORGE:REVIEW comment. Blocking merge — review verdict is required. (#1714)"
397
400
  fi
398
401
  done
399
402
 
@@ -443,15 +443,19 @@ Proceed? (yes / adjust / pick specific issues)
443
443
 
444
444
  ---
445
445
 
446
- ## Engine mode (headless)
446
+ ## Engine mode (default)
447
447
 
448
- When running headless/CI, dispatch each issue via the durable execution engine instead of spawning prose agents:
448
+ Dispatch each issue via the durable execution engine. This is the **default execution mode** for both interactive (`/autopilot`, `/orchestrate`) and headless/CI paths:
449
449
 
450
450
  ```bash
451
451
  forgedock run-issue <issue> --lane <staging|milestone/slug>
452
452
  ```
453
453
 
454
- The engine drives every phase transition deterministically, mirrors state to the `FORGE:STATE` block on the issue, and holds a lease. To recover stalls, scan in-flight issues' `FORGE:STATE`; any issue with an expired lease and a non-terminal state is re-dispatched with the same `forgedock run-issue <issue>` command — it resumes from the last committed phase (idempotent). This replaces the label-heuristic "already in progress" check and the resume-with-nagging loop.
454
+ The engine drives every phase transition deterministically, mirrors state to the `FORGE:STATE` block on the issue, and holds a lease. Its **fail-closed review gate** (`phases.mjs → detectOutcome`) means the PR must be confirmed merged before the phase is committed — missing or unparseable review comments are treated as failures, not approvals. To recover stalls, scan in-flight issues' `FORGE:STATE`; any issue with an expired lease and a non-terminal state is re-dispatched with the same `forgedock run-issue <issue>` command — it resumes from the last committed phase (idempotent). This replaces the label-heuristic "already in progress" check and the resume-with-nagging loop.
455
+
456
+ **Why engine-first**: The engine's phase table enforces gate semantics in code — not via LLM interpretation of markdown specs. This eliminates the class of bug where the LLM assumes a review approved when the FORGE:REVIEW comment is absent or unreadable (issue #1714). Interactive sessions that run `/work-on` via Skill invocations additionally bridge to the engine run-log via the SubagentStop hook (`bin/hooks/interactive-engine.mjs`) — state is durable across compaction and context resets.
457
+
458
+ **Fallback (no forgedock CLI)**: If `forgedock` is not in PATH, fall back to spawning Agent sub-agents that run `Skill("work-on", ...)` per issue. The SubagentStop hook still bridges these runs to the engine run-log for state persistence.
455
459
 
456
460
  ### Concurrency model: in-process worker pool + worktree-per-issue
457
461
 
@@ -171,7 +171,31 @@ Use `${ISSUE_LANE[$NUM]}` and `${ISSUE_PR_BASE[$NUM]}` to populate `{LANE}` and
171
171
 
172
172
  ### Step 4A: Dispatch ready issues
173
173
 
174
- **REMINDER: You MUST use the template below verbatim. Only fill in `{VARIABLES}`. Do NOT rewrite the agent prompt. Do NOT write custom implementation instructions. The agent MUST invoke `/work-on` via the Skill tool — this is the HARD RULE from the top of this file.**
174
+ **Engine-first dispatch (default)**: When `forgedock` is in PATH, dispatch each ready issue via the durable engine rather than spawning prose Agent sub-agents. The engine's phase table enforces gate semantics in code — its fail-closed review gate and deterministic phase ordering are not subject to LLM interpretation.
175
+
176
+ ```bash
177
+ # Engine-first dispatch: check CLI availability, then dispatch ready issues in parallel
178
+ FORGEDOCK_AVAILABLE=$(command -v forgedock >/dev/null 2>&1 && echo "true" || echo "false")
179
+
180
+ if [ "$FORGEDOCK_AVAILABLE" = "true" ]; then
181
+ for NUM in {ready_issue_numbers}; do
182
+ LANE="${ISSUE_LANE[$NUM]}"
183
+ PR_BASE="${ISSUE_PR_BASE[$NUM]}"
184
+ echo "Dispatching #$NUM via forgedock run-issue --lane $PR_BASE"
185
+ forgedock run-issue "$NUM" --lane "$PR_BASE" &
186
+ done
187
+ wait
188
+ echo "Engine dispatch complete — advancing to Step 4B (completion sweep)"
189
+ else
190
+ echo "INFO: Using agent dispatch mode (forgedock CLI not in PATH — run \`npm install -g forgedock\` for engine-mode dispatch)"
191
+ # Fall through to Agent-spawn template below. The SubagentStop hook (bin/hooks/interactive-engine.mjs)
192
+ # bridges these runs to the engine run-log for state persistence even on the fallback path.
193
+ fi
194
+ ```
195
+
196
+ **Agent-spawn path (fallback when forgedock CLI unavailable)**: When `FORGEDOCK_AVAILABLE=false`, spawn Agent sub-agents per issue using the template below. This preserves engine state via the SubagentStop hook even without the CLI.
197
+
198
+ **REMINDER: You MUST use the template below verbatim when on the Agent-spawn fallback path. Only fill in `{VARIABLES}`. Do NOT rewrite the agent prompt. Do NOT write custom implementation instructions. The agent MUST invoke `/work-on` via the Skill tool — this is the HARD RULE from the top of this file.**
175
199
 
176
200
  For each **ready** issue (all predecessors resolved or no predecessors), spawn an Agent sub-agent that runs the full `/work-on` pipeline. On the initial dispatch, this is every issue with an empty predecessor set. On subsequent dispatches (triggered by agent completions in Step 4B), this is every newly-unblocked issue.
177
201
 
@@ -0,0 +1,105 @@
1
+ # Awesome List Submission Drafts
2
+
3
+ Important: Have a contributor or community member submit these, not the repo owner's account. Many lists reject self-submissions.
4
+
5
+ ---
6
+
7
+ ## 1. hesreallyhim/awesome-claude-code (36.8K stars) — TOP PRIORITY
8
+
9
+ ### PR Title
10
+ ```
11
+ Add ForgeDock — autonomous pipeline commands for Claude Code
12
+ ```
13
+
14
+ ### Entry (add under "Workflow & Automation" or "Agent Frameworks" section)
15
+
16
+ ```markdown
17
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Structured autonomous development pipeline that adds investigate-build-review-merge workflow to Claude Code. Features 9-agent specialist PR review, 14-domain quality gate, and GitHub-native persistent memory via FORGE annotations. `npx forgedock`
18
+ ```
19
+
20
+ ### PR Description
21
+
22
+ ```markdown
23
+ Adding ForgeDock, an open-source (AGPL) tool that adds structured pipeline commands to Claude Code.
24
+
25
+ **What it does**: Turns Claude Code from a stateless chatbot into a multi-stage development pipeline. Each stage (investigate, build, review, merge) posts machine-readable annotations to GitHub issues/PRs, so agents reconstruct full context after compaction.
26
+
27
+ **Key features**:
28
+ - 20+ slash commands including `/work-on` (full pipeline), `/orchestrate` (parallel multi-issue), `/autopilot` (self-improvement cycle)
29
+ - 9-agent specialist PR review (security, database, auth, concurrency, etc.)
30
+ - 14-domain quality gate
31
+ - GitHub labels as workflow state machine
32
+ - `forge.yaml` per-repo configuration
33
+
34
+ **Install**: `npx forgedock`
35
+
36
+ **Why it belongs here**: It's the most comprehensive pipeline orchestration system in the Claude Code ecosystem — 35 command files totaling 800KB+ of structured prompt engineering.
37
+ ```
38
+
39
+ ---
40
+
41
+ ## 2. rohitg00/awesome-claude-code-toolkit
42
+
43
+ ### Entry
44
+
45
+ ```markdown
46
+ ### Pipeline Orchestration
47
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Full SDLC pipeline for Claude Code: investigate → build → review → merge. 9-agent review, quality gate, GitHub-native memory via FORGE annotations. `npx forgedock`
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 3. travisvn/awesome-claude-skills
53
+
54
+ ### Entry
55
+
56
+ ```markdown
57
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - 20+ pipeline commands: `/work-on` (full pipeline), `/orchestrate` (parallel issues), `/review-pr` (9-agent review), `/autopilot` (self-improvement), `/quality-gate` (14-domain checks). Uses GitHub as persistent knowledge graph.
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 4. ComposioHQ/awesome-claude-skills
63
+
64
+ ### Entry
65
+
66
+ ```markdown
67
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Autonomous development pipeline commands for Claude Code. Structured investigate-build-review-merge workflow with GitHub-native memory, multi-agent review, and quality gates.
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 5. VoltAgent/awesome-agent-skills
73
+
74
+ ### Entry
75
+
76
+ ```markdown
77
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Structured autonomous dev pipeline for Claude Code agents. Uses GitHub Issues/PRs as a knowledge graph with machine-readable FORGE annotations for inter-agent context passing. 35 command specs covering the full SDLC.
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 6. Broader awesome lists
83
+
84
+ ### awesome-ai-agents
85
+
86
+ ```markdown
87
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Open-source pipeline orchestrator for AI coding agents. Structures investigate → build → review → merge workflow using GitHub as a persistent knowledge graph. Currently supports Claude Code; multi-model planned.
88
+ ```
89
+
90
+ ### awesome-developer-tools
91
+
92
+ ```markdown
93
+ - [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock) - Autonomous development pipeline that adds structured workflow commands to Claude Code. 9-agent PR review, 14-domain quality gate, GitHub-native memory. `npx forgedock`
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Submission Checklist
99
+
100
+ - [ ] Check each list's CONTRIBUTING.md for formatting requirements
101
+ - [ ] Ensure the entry follows the list's existing style (alphabetical? categorized?)
102
+ - [ ] One PR per list
103
+ - [ ] Submitter should have some GitHub activity (not a brand new account)
104
+ - [ ] Don't submit all on the same day — space them out over 1-2 weeks
105
+ - [ ] Priority order: awesome-claude-code first, then toolkit, then skills lists, then broader lists
@@ -0,0 +1,43 @@
1
+ # F5Bot Mention Monitoring Setup
2
+
3
+ F5Bot is a free service that sends email alerts when keywords appear on Reddit, Hacker News, or Lobsters.
4
+
5
+ ## Setup (5 minutes)
6
+
7
+ 1. Go to https://f5bot.com
8
+ 2. Create a free account (email only)
9
+ 3. Add these keyword alerts:
10
+
11
+ | Keyword | Why |
12
+ |---------|-----|
13
+ | `forgedock` | Direct mentions |
14
+ | `ForgeDock` | Case-sensitive variant |
15
+ | `forge dock` | Common misspelling |
16
+ | `"claude code commands"` | Users looking for what ForgeDock provides |
17
+ | `"claude code workflow"` | High-intent search phrase |
18
+ | `"autonomous development pipeline"` | Category-level interest |
19
+ | `"FORGE annotation"` | Protocol mentions |
20
+
21
+ 4. Set email notifications to immediate (not digest)
22
+
23
+ ## Response Playbook
24
+
25
+ When an alert fires:
26
+
27
+ ### Direct mention (someone talking about ForgeDock)
28
+ - Read the full thread context
29
+ - If positive: thank them, offer to help with any questions
30
+ - If a question: answer thoroughly with code examples
31
+ - If criticism: acknowledge, explain the reasoning, ask what they'd improve
32
+
33
+ ### Indirect mention (someone looking for what ForgeDock does)
34
+ - Answer their question genuinely first
35
+ - Mention ForgeDock naturally: "I've been using ForgeDock for this — it structures Claude Code into an investigate-build-review-merge pipeline"
36
+ - Never just drop a link with no context
37
+
38
+ ### Rules
39
+ - Always add genuine value to the conversation
40
+ - Never post in threads where it would feel forced
41
+ - On Reddit: post manually (never automate — ban risk)
42
+ - On HN: only comment if you have genuine insight to add
43
+ - Wait at least 10 minutes after the alert before responding (don't look like a bot)
@@ -0,0 +1,579 @@
1
+ # ForgeDock Growth Strategy — June 2026
2
+
3
+ Comprehensive strategic research covering market positioning, growth flywheel, new features, automated marketing, and fundraising narrative.
4
+
5
+ ---
6
+
7
+ ## Table of Contents
8
+
9
+ 1. [The Opportunity](#1-the-opportunity)
10
+ 2. [Competitive Positioning](#2-competitive-positioning)
11
+ 3. [The Perpetual Growth Flywheel](#3-the-perpetual-growth-flywheel)
12
+ 4. [Free Automated Marketing Playbook](#4-free-automated-marketing-playbook)
13
+ 5. [New Features to Build](#5-new-features-to-build)
14
+ 6. [Further Automation Opportunities](#6-further-automation-opportunities)
15
+ 7. [Website Strategy (forgedock.io)](#7-website-strategy-forgedockio)
16
+ 8. [Fundraising Positioning](#8-fundraising-positioning)
17
+ 9. [Execution Timeline](#9-execution-timeline)
18
+
19
+ ---
20
+
21
+ ## 1. The Opportunity
22
+
23
+ ### Market Size
24
+ - AI code tools market: **$9.5B in 2026**, growing at 26% CAGR to $30B+ by 2031
25
+ - Enterprise AI coding agents specifically: **$9.8-11.0B annualized** (April 2026)
26
+ - 85% of developers regularly use AI tools; 51% use them daily
27
+
28
+ ### The Core Problem Nobody Has Solved
29
+ **Vibe coding is creating a crisis.** 84% of developers use AI to generate code, but:
30
+ - **96% don't trust it** (only 3% "highly trust" AI output)
31
+ - AI-coauthored code has **2.74x higher vulnerability rates**
32
+ - **41% increase in bug rates** after Copilot adoption (Uplevel study, ~800 devs)
33
+ - 63% spend MORE time debugging AI code than writing it manually would take
34
+ - Refactoring dropped 60% (from 25% to 10% of changes)
35
+ - Context loss is the **#1 pain point** — developers lose 12 min/morning re-explaining to AI
36
+
37
+ **The market is screaming for structured AI development — not more code generation.**
38
+
39
+ ### ForgeDock's Unique Position
40
+ ForgeDock is the **only tool** that:
41
+ 1. Uses **GitHub itself as a structured knowledge graph** (not an external DB)
42
+ 2. Provides a **multi-stage pipeline** (investigate > build > review > merge) with machine-readable contracts between stages
43
+ 3. Runs **locally with your own API key** (not a $500/month cloud service)
44
+ 4. Is **free and open-source** (AGPL)
45
+ 5. Survives context compaction — agents reconstruct full state from GitHub alone
46
+
47
+ No competitor — not Devin ($26B valuation), not Copilot (4.7M subscribers), not Cursor ($4B ARR) — does structured pipeline orchestration with persistent GitHub-native memory.
48
+
49
+ ---
50
+
51
+ ## 2. Competitive Positioning
52
+
53
+ ### The Landscape
54
+
55
+ | Tool | What It Is | Price | Stars | Gap ForgeDock Fills |
56
+ |------|-----------|-------|-------|-------------------|
57
+ | **Devin** | Autonomous cloud agent | $20-500+/mo | Private | Opaque, expensive, no structured pipeline |
58
+ | **Cursor** | AI IDE | $20/mo | Private | Daily-driver IDE, not a pipeline orchestrator |
59
+ | **GitHub Copilot** | AI assistant + Coding Agent | $10-19/mo | Private | Single-issue automation, no cross-issue memory |
60
+ | **Kiro (AWS)** | Spec-driven IDE | TBD | Private | Specs before code, but no GitHub knowledge graph |
61
+ | **OpenHands** | OSS autonomous agent | Free | 68K | Research-focused, no production pipeline |
62
+ | **Aider** | Terminal AI agent | Free | 41K | Code generation only, no workflow orchestration |
63
+ | **Claude Code (raw)** | CLI agent | API costs | N/A | Stateless, no pipeline, no persistence |
64
+
65
+ ### ForgeDock's Positioning Statement
66
+
67
+ > **"ForgeDock turns Claude Code from a chatbot into a deterministic engineering pipeline."**
68
+
69
+ Alternative framings by audience:
70
+ - **For non-coders**: "Ship production software with AI — without knowing how to code"
71
+ - **For developers**: "Structured autonomous development that doesn't create tech debt"
72
+ - **For enterprises**: "Traceable, auditable AI development with GitHub-native compliance"
73
+ - **For investors**: "The engineering process layer for the AI-native SDLC"
74
+
75
+ ### Category Creation: "Context Engineering for the SDLC"
76
+
77
+ "Context engineering" is now a recognized discipline (Gartner published on it; Karpathy coined it). ForgeDock IS a context engineering tool — it structures what agents need to know at each pipeline stage via FORGE: annotations. Position ForgeDock as the **context engineering platform for software development**, not just "Claude Code commands."
78
+
79
+ ---
80
+
81
+ ## 3. The Perpetual Growth Flywheel
82
+
83
+ The goal: mechanisms that compound automatically with zero ongoing effort.
84
+
85
+ ### Flywheel 1: FORGE Annotations as Passive Advertising
86
+
87
+ Every ForgeDock run posts FORGE: annotations to GitHub issues/PRs. This is a **built-in viral loop** that scales with adoption.
88
+
89
+ **Action**: Add a subtle footer to every FORGE: annotation:
90
+ ```
91
+ > Pipeline powered by [ForgeDock](https://github.com/RapierCraftStudios/ForgeDock)
92
+ ```
93
+
94
+ This is exactly how Dependabot, Renovate, and Codecov built massive organic reach — every PR they touched linked back. Make it opt-out via `forge.yaml`:
95
+ ```yaml
96
+ branding:
97
+ show_attribution: true # default
98
+ ```
99
+
100
+ **Impact**: Every public repo using ForgeDock becomes a permanent billboard. Passive, perpetual, scales linearly with adoption.
101
+
102
+ ### Flywheel 2: Auto-Published Content Pipeline
103
+
104
+ Set up a GitHub Actions workflow that:
105
+ 1. Watches for new markdown files in a `content/` directory
106
+ 2. Claude Code generates articles (tutorials, tips, comparisons)
107
+ 3. Auto-publishes to dev.to and Hashnode via their APIs
108
+ 4. Each article links back to the GitHub repo
109
+
110
+ **Both platforms have REST APIs that support fully automated publishing:**
111
+ - dev.to: `POST https://dev.to/api/articles` with `api-key` header
112
+ - Hashnode: GraphQL API with Personal Access Token
113
+
114
+ **Cadence**: 1-2 articles/week, auto-published. Topics that drive stars:
115
+ - "How I built an autonomous PR pipeline with Claude Code"
116
+ - "ForgeDock vs raw Claude Code: 9 review agents vs copy-paste"
117
+ - "Why 96% of developers don't trust AI code (and how to fix it)"
118
+
119
+ ### Flywheel 3: Awesome List Presence
120
+
121
+ **The single highest-leverage free action**: Get listed on `hesreallyhim/awesome-claude-code` (36.8K stars). Every follower of that repo is a direct target user.
122
+
123
+ Other lists to target (20+ total):
124
+ - `travisvn/awesome-claude-skills`
125
+ - `rohitg00/awesome-claude-code-toolkit`
126
+ - `ComposioHQ/awesome-claude-skills`
127
+ - `VoltAgent/awesome-agent-skills`
128
+ - `webfuse-com/awesome-claude`
129
+ - `awesome-llm-tools`, `awesome-ai-agents`, `awesome-developer-tools`
130
+
131
+ **Important**: Many lists reject self-submissions. Have a community member or contributor submit. Claude Code can draft the PR text.
132
+
133
+ ### Flywheel 4: Anthropic Official Plugin Marketplace
134
+
135
+ Submit ForgeDock to `anthropics/claude-plugins-official`. Getting the **"Anthropic Verified" badge** drives organic installs via Claude Code's built-in `/plugin install` command.
136
+
137
+ This requires packaging with a `.claude-plugin/plugin.json` structure. One-time effort, potentially very high long-term impact.
138
+
139
+ ### Flywheel 5: "Built with ForgeDock" Badges
140
+
141
+ Create a shields.io badge users can add to their repos:
142
+ ```markdown
143
+ [![Built with ForgeDock](https://img.shields.io/badge/pipeline-ForgeDock-blue)](https://github.com/RapierCraftStudios/ForgeDock)
144
+ ```
145
+
146
+ Shields.io serves 1.6B images/month. Every badge is a backlink and exposure point.
147
+
148
+ ### Flywheel 6: GitHub SEO
149
+
150
+ Immediate, zero-effort optimizations:
151
+ - **GitHub Topics**: `claude-code`, `claude`, `ai-agents`, `developer-tools`, `autonomous-coding`, `cli`, `npm`, `pipeline`, `code-review`, `github-workflow`, `anthropic`, `slash-commands`, `agentic-ai`
152
+ - **npm keywords**: Same list in `package.json`
153
+ - **README**: One-line value prop at top, `npx forgedock` visible without scrolling, animated GIF demo, comparison table
154
+
155
+ ---
156
+
157
+ ## 4. Free Automated Marketing Playbook
158
+
159
+ ### What Claude Code Can Fully Automate (Zero Human Involvement)
160
+
161
+ | Action | How | Frequency |
162
+ |--------|-----|-----------|
163
+ | dev.to article publishing | GitHub Actions + dev.to API | Weekly |
164
+ | Hashnode cross-posting | GitHub Actions + Hashnode GraphQL API | Weekly |
165
+ | GitHub Discussions tips | GitHub API | Weekly |
166
+ | Comparison page generation | Static site generator + GitHub Pages | Monthly |
167
+ | FORGE annotation branding | Built into command specs | Every run |
168
+ | Release notes / changelog | Generate from git log, post to GitHub | Per release |
169
+ | Badge/shield creation | One-time commit | Once |
170
+ | GitHub Topics + npm keywords | One-time commit | Once |
171
+
172
+ ### What Claude Code Can Draft (Human Posts)
173
+
174
+ | Action | Why Human Required | Frequency |
175
+ |--------|-------------------|-----------|
176
+ | Hacker News Show HN | HN requires karma/age; authenticity matters | 2-3x total |
177
+ | Product Hunt launch | Requires coordinated community support | 1x |
178
+ | Awesome list PRs | Self-submission rejected by many lists | 10-20x total |
179
+ | Reddit answers | API crackdown; ban risk for automation | As opportunities arise |
180
+ | Twitter/X posts | Free API tier is read-only; posting costs $100/mo | Weekly |
181
+ | Plugin marketplace submission | Anthropic manual review | 1x |
182
+
183
+ ### The Show HN Strategy
184
+
185
+ **This is the single highest-impact launch event.** Data:
186
+ - Successful Show HN posts generate **5,000-50,000 visitors in 48 hours**
187
+ - Conversion: ~**1.4 GitHub stars per upvote**
188
+ - Optimal: Tuesday-Thursday, 9AM-12PM ET
189
+
190
+ **Format**: `Show HN: ForgeDock -- Structured autonomous pipeline for Claude Code (open source)`
191
+
192
+ **Rules**:
193
+ - NO superlatives, NO marketing language
194
+ - Post a maker comment immediately: what you built, why, technical decisions, one known limitation
195
+ - Respond to every comment in the first 60 minutes
196
+ - HN allows re-posts after significant updates — plan 2-3 over time
197
+
198
+ ### The Product Hunt Strategy
199
+
200
+ - Wait until you have ~500 stars (credibility baseline)
201
+ - Tuesday-Thursday launch, 12:01 AM PST
202
+ - Prepare supporters in advance
203
+ - "Product of the Day" badge is permanent social proof
204
+
205
+ ### Content That Drives Stars
206
+
207
+ Based on research, these formats convert best:
208
+ 1. **Problem-first tutorials** ("How I stopped wasting tokens on AI re-discovery")
209
+ 2. **Comparison posts** ("ForgeDock vs raw Claude Code: structured pipeline vs YOLO")
210
+ 3. **"Show your work" demos** (terminal recordings, output examples)
211
+ 4. **Controversy/hot-take** ("Why vibe coding will bankrupt your startup")
212
+ 5. **Data-driven posts** ("We measured: 2,100 tokens saved per session with adaptive scripts")
213
+
214
+ ### Monitoring and Response
215
+
216
+ - **F5Bot** (free, self-hostable): Email alerts when "ForgeDock", "Claude Code commands", or "autonomous development pipeline" appears on Reddit, HN, or Lobsters
217
+ - Claude Code drafts replies; human reviews and posts
218
+ - Estimated: 30 min/week human time
219
+
220
+ ### Channels to AVOID
221
+
222
+ - **Reddit automated posting**: Nov 2025 crackdown banned ~70% of automated accounts. Manual only.
223
+ - **r/programming**: Banned all LLM content since April 2026
224
+ - **Medium**: No publishing API anymore. Not automatable.
225
+ - **Thin SEO pages**: Google penalizes pages under 500 words with minimal unique content
226
+
227
+ ---
228
+
229
+ ## 5. New Features to Build
230
+
231
+ Prioritized by impact on growth and differentiation.
232
+
233
+ ### P0: Features That Drive Adoption
234
+
235
+ **1. FORGE Annotation Attribution Footer**
236
+ - Add `> Pipeline powered by [ForgeDock](...)` to every annotation
237
+ - Opt-out via `forge.yaml`
238
+ - Impact: Passive viral loop scaling with every user
239
+ - Effort: 1-2 hours
240
+
241
+ **2. Claude Code Plugin Marketplace Packaging**
242
+ - Package ForgeDock in `.claude-plugin/` format
243
+ - Submit to `anthropics/claude-plugins-official`
244
+ - Impact: In-product discovery for all Claude Code users
245
+ - Effort: 1-2 days
246
+
247
+ **3. `forgedock-init` Wizard Improvements**
248
+ - Zero-config first run: detect stack, generate `forge.yaml`, run first issue
249
+ - "Time to value under 60 seconds" is the 2026 standard
250
+ - Impact: Reduces drop-off at install
251
+ - Effort: 1-2 days
252
+
253
+ **4. Shareable Pipeline Reports**
254
+ - After each `/work-on` run, generate a shareable HTML/markdown report
255
+ - Pipeline timeline, agent decisions, token usage, review findings
256
+ - Users share these on Twitter/Discord = free marketing
257
+ - Impact: Creates tweet-sized "wow moments"
258
+ - Effort: 2-3 days
259
+
260
+ ### P1: Features That Deepen Retention
261
+
262
+ **5. Scripts Layer (already planned, #651)**
263
+ - Deterministic execution for routing, labels, branch names, PR targets
264
+ - Eliminates the #1 reliability complaint (agent hallucination on deterministic ops)
265
+ - Impact: Core reliability improvement; retention driver
266
+ - Effort: In progress
267
+
268
+ **6. Per-Repo Adaptive Scripts (already planned, #653)**
269
+ - Cached operational knowledge per repo
270
+ - 2,100 tokens/session saved; primary value is reliability
271
+ - Impact: Projects that use ForgeDock for a week become locked in
272
+ - Effort: In progress
273
+
274
+ **7. Multi-Model Support**
275
+ - Currently Claude Code only. Add support for Codex CLI, Cursor Agent, Aider
276
+ - 62% of enterprises use 2-3 AI coding tools simultaneously
277
+ - FORGE annotations are model-agnostic — the protocol works with any agent
278
+ - Impact: Expands TAM dramatically
279
+ - Effort: 1-2 weeks per integration
280
+
281
+ **8. FORGE Annotation Protocol as Open Standard**
282
+ - Publish a formal spec: `docs/forge-annotation-protocol.md`
283
+ - Position as an open protocol any tool can adopt
284
+ - If other tools emit/consume FORGE annotations, ForgeDock becomes the ecosystem hub
285
+ - Impact: Category-creating move; attracts contributors
286
+ - Effort: 1 week
287
+
288
+ ### P2: Features That Enable Monetization
289
+
290
+ **9. Observability Dashboard (Platform L1)**
291
+ - Read-only web dashboard rendering the GitHub knowledge graph
292
+ - Pipeline runs, timelines, stall detection, throughput, cycle time, cost-per-issue
293
+ - Host on forgedock.io (free tier: public repos; paid: private repos)
294
+ - Impact: First commercial product; visual "proof" for stakeholders
295
+ - Effort: 2-4 weeks
296
+
297
+ **10. GitHub App / Webhook Bot (Platform L2)**
298
+ - Always-on backend that triggers pipeline runs automatically
299
+ - Assign an issue > pipeline runs > PR appears
300
+ - BYO API key, multi-tenant credential isolation
301
+ - Impact: "Always-on ForgeDock" — the thing enterprises will pay for
302
+ - Effort: 4-8 weeks
303
+
304
+ **11. Hosted Execution Sandboxes (Platform L3)**
305
+ - Pipeline execution on isolated ephemeral compute (E2B or similar)
306
+ - No local setup required
307
+ - Impact: Opens the non-technical user market completely
308
+ - Effort: 4-8 weeks
309
+
310
+ ---
311
+
312
+ ## 6. Further Automation Opportunities
313
+
314
+ ### Things ForgeDock Can Automate That Nobody Else Does
315
+
316
+ **1. Autonomous Repo Health Monitoring**
317
+ - `/autopilot` already does recon > triage > fix cycles
318
+ - Extend to run on a cron via GitHub Actions: daily health checks, auto-create issues for regressions
319
+ - Position: "Your repo gets better while you sleep"
320
+
321
+ **2. Automated Dependency Upgrades with Full Pipeline**
322
+ - Detect outdated deps > create issue > `/work-on` runs investigate > build > review > merge
323
+ - Devin charges $20+/mo for this; ForgeDock can do it free with your own API key
324
+
325
+ **3. Automated Documentation Generation**
326
+ - After each merged PR, auto-update docs based on code changes
327
+ - FORGE:TRAJECTORY annotations provide the "why" for every change
328
+
329
+ **4. Automated Security Scanning Pipeline**
330
+ - `/security-audit` already exists
331
+ - Chain with `/work-on` to auto-fix findings
332
+ - Enterprise compliance teams would pay for this
333
+
334
+ **5. PR-as-CI: Review Pipeline Triggered by GitHub Actions**
335
+ - GitHub Actions workflow that runs `/review-pr` on every opened PR
336
+ - Like Copilot Coding Agent, but with ForgeDock's 9-agent review depth
337
+ - This is exactly what Continue.dev pivoted toward ("Continuous AI")
338
+
339
+ **6. Automated Onboarding for New Contributors**
340
+ - When someone opens their first PR, ForgeDock auto-reviews with extra context
341
+ - Posts a welcome comment with repo conventions extracted from `forge.yaml`
342
+ - Builds community goodwill
343
+
344
+ **7. Cross-Repo Orchestration**
345
+ - `/orchestrate` already supports multi-repo via `forge.yaml > repos.satellites`
346
+ - Extend: changes in repo A auto-trigger pipeline runs in dependent repos B, C
347
+ - Monorepo alternative without the monorepo
348
+
349
+ ---
350
+
351
+ ## 7. Website Strategy (forgedock.io)
352
+
353
+ ### Hosting: Cloudflare Pages (Free)
354
+
355
+ - Zero cost, unlimited bandwidth, global CDN
356
+ - Auto-deploy from GitHub repo
357
+ - Custom domain (forgedock.io) with free SSL
358
+ - Alternative: GitHub Pages (also free, slightly less flexible)
359
+
360
+ ### Pages to Build
361
+
362
+ All can be generated by Claude Code and auto-deployed:
363
+
364
+ | Page | Purpose | Target Query |
365
+ |------|---------|-------------|
366
+ | `/` | Landing page with value prop + install command | "forgedock" |
367
+ | `/docs` | Quick-start guide, command reference | "forgedock docs" |
368
+ | `/vs/devin` | Comparison: free+local vs $500/mo+cloud | "devin alternative open source" |
369
+ | `/vs/claude-code` | Before/after: raw Claude Code vs ForgeDock | "claude code workflow commands" |
370
+ | `/vs/copilot-workspace` | Comparison with GitHub Copilot | "copilot workspace alternative" |
371
+ | `/vs/cursor` | IDE vs pipeline positioning | "cursor alternative" |
372
+ | `/blog` | Auto-published articles (same content as dev.to) | Long-tail SEO |
373
+ | `/protocol` | FORGE Annotation Protocol spec | "AI agent context passing protocol" |
374
+
375
+ ### Landing Page Must-Haves
376
+
377
+ 1. One-sentence value prop above the fold
378
+ 2. `npx forgedock` install command (copyable)
379
+ 3. Animated terminal GIF showing a full `/work-on` run
380
+ 4. "How it works" 3-step diagram (Issue > Pipeline > Merged PR)
381
+ 5. Comparison table (ForgeDock vs Devin vs raw Claude Code)
382
+ 6. GitHub star count badge (social proof)
383
+ 7. Link to GitHub repo (drives stars)
384
+
385
+ ### SEO Strategy
386
+
387
+ - Each comparison page targets a high-intent search query
388
+ - Canonical URLs on the site; cross-post to dev.to/Hashnode with canonical pointing back
389
+ - Expected timeline: indexed in 2-4 weeks, organic traffic in 3-6 months
390
+ - All content generated by Claude Code, committed to repo, auto-deployed
391
+
392
+ ---
393
+
394
+ ## 8. Fundraising Positioning
395
+
396
+ ### The Narrative
397
+
398
+ > **ForgeDock is the engineering process layer for the AI-native SDLC.**
399
+ >
400
+ > Every developer tool in the $9.5B AI coding market helps write code faster. None of them structure HOW that code gets from idea to production. ForgeDock is the missing layer: a deterministic pipeline that turns autonomous AI agents into reliable engineering teams.
401
+ >
402
+ > We use GitHub — where 180M developers already work — as the knowledge graph. No new infrastructure. No vendor lock-in. No $500/month cloud service. Just structured, traceable, auditable AI development.
403
+
404
+ ### Key Metrics to Build Toward
405
+
406
+ Based on what investors look for in 2026:
407
+
408
+ | Metric | Target | Why It Matters |
409
+ |--------|--------|---------------|
410
+ | GitHub stars | 1K, then 10K | Social proof; HN front page threshold |
411
+ | npm weekly downloads | 1K+ | Usage signal |
412
+ | Active repos using ForgeDock | 100+ | Adoption proof |
413
+ | FORGE annotations posted | 10K+ | Pipeline execution volume |
414
+ | Community size (Discord) | 500+ | Engagement signal |
415
+ | dev.to/blog impressions | 50K/month | Awareness funnel |
416
+ | Time to value | <60 seconds | PLG benchmark |
417
+
418
+ ### Investor-Ready Data Points
419
+
420
+ From research, these are the metrics that move conversations:
421
+
422
+ - **Market**: $9.5B and growing 26% CAGR
423
+ - **Category gap**: No one does structured pipeline orchestration for AI agents
424
+ - **Architectural moat**: FORGE annotation protocol + GitHub-as-knowledge-graph
425
+ - **Open-core model**: Proven by GitLab ($759M revenue), PostHog ($57.5M ARR), Supabase ($170M ARR)
426
+ - **Platform roadmap**: L1 observability > L2 GitHub App > L3 sandboxed execution
427
+ - **Developer satisfaction**: Track NPS early. Claude Code has 91% CSAT — ForgeDock riding that wave.
428
+
429
+ ### Comparable Valuations (mid-2026)
430
+
431
+ | Company | Stage | ARR | Valuation | Multiple |
432
+ |---------|-------|-----|-----------|----------|
433
+ | Cursor | Series D | $4B | $29.3B | ~7x |
434
+ | Cognition (Devin) | Series D | $492M | $26B | ~53x |
435
+ | Vercel | Series F | $340M | $9.3B | ~27x |
436
+ | PostHog | Series E | $57.5M | $1.4B | ~24x |
437
+ | Supabase | Series D | $170M | $2B | ~12x |
438
+
439
+ Pre-seed/seed median pre-money: **$70M** (Q1 2026, up from $30M in Q4 2025).
440
+
441
+ ### Who to Target
442
+
443
+ **Specialist funds (highest likelihood)**:
444
+ - **Heavybit**: $180M+ across two new funds (July 2025). AI-native infrastructure + dev tools. Portfolio: PagerDuty, Netlify, Snyk.
445
+ - **Craft Ventures**: Active in devtools. Backed PostHog, Sourcegraph.
446
+
447
+ **Tier-1 generalists with devtools track record**:
448
+ - Accel (Sentry, Snyk, Vercel)
449
+ - Index Ventures (Vercel)
450
+ - Kleiner Perkins (Neon)
451
+ - Founders Fund (Cognition)
452
+ - a16z, Sequoia, Khosla (all active in AI)
453
+
454
+ ### The Open-Core Commercial Pathway
455
+
456
+ ```
457
+ Phase 1 (Now): Free CLI — build adoption, community, stars
458
+ Phase 2 (Post-traction): Observability dashboard (forgedock.io) — freemium
459
+ Phase 3 (Post-funding): GitHub App + hosted API — subscription
460
+ Phase 4 (Scale): Hosted sandboxes + enterprise — usage-based
461
+ ```
462
+
463
+ **Critical rule**: Never move free features to paid. The HashiCorp/OpenTofu disaster is now a reference point in every OSS evaluation. Public pledge: core pipeline commands will always be free and AGPL.
464
+
465
+ ---
466
+
467
+ ## 9. Execution Timeline
468
+
469
+ ### Week 1: Zero-Effort Optimizations (All Automatable)
470
+
471
+ - [ ] Add GitHub Topics to repo (5 min)
472
+ - [ ] Optimize `package.json` keywords and description (10 min)
473
+ - [ ] Add FORGE annotation attribution footer to command specs (1-2 hours)
474
+ - [ ] Create "Built with ForgeDock" shields.io badge in README (15 min)
475
+ - [ ] Optimize README: one-liner at top, install command visible, comparison table (1 hour)
476
+
477
+ ### Week 2: Content Pipeline Setup
478
+
479
+ - [ ] Set up GitHub Actions workflow for auto-publishing to dev.to + Hashnode
480
+ - [ ] Generate and publish first 3 articles
481
+ - [ ] Enable GitHub Discussions with seeded Q&A content
482
+ - [ ] Set up F5Bot monitoring for "ForgeDock", "Claude Code commands", "autonomous pipeline"
483
+
484
+ ### Week 3: Ecosystem Submissions
485
+
486
+ - [ ] Draft and submit PR to `hesreallyhim/awesome-claude-code` (via contributor)
487
+ - [ ] Submit to 9 other awesome lists
488
+ - [ ] Package as Claude Code plugin and submit to Anthropic marketplace
489
+ - [ ] Submit to `claudemarketplaces.com`, `claudefa.st`, `ClaudeLog`
490
+
491
+ ### Week 4: Launch Events
492
+
493
+ - [ ] Deploy forgedock.io on Cloudflare Pages (landing + comparison pages)
494
+ - [ ] Post Show HN (human submits; Claude Code drafts everything)
495
+ - [ ] Cross-post launch content to dev.to, Hashnode
496
+ - [ ] Create Discord server (if 50+ active GitHub users exist)
497
+
498
+ ### Month 2-3: Feature Development
499
+
500
+ - [ ] Shareable pipeline reports (viral content generation)
501
+ - [ ] Scripts layer completion (#651)
502
+ - [ ] FORGE Annotation Protocol published as open spec
503
+ - [ ] PR-as-CI: GitHub Actions integration for auto-review
504
+
505
+ ### Month 4-6: Platform Foundation
506
+
507
+ - [ ] Observability dashboard (Platform L1) on forgedock.io
508
+ - [ ] Multi-model support investigation (Codex CLI, Aider)
509
+ - [ ] Product Hunt launch (with star baseline)
510
+ - [ ] Begin investor conversations with traction data
511
+
512
+ ### Ongoing (Automated, Perpetual)
513
+
514
+ - Weekly dev.to/Hashnode articles via GitHub Actions
515
+ - Weekly GitHub Discussion tips
516
+ - FORGE annotations with attribution on every pipeline run
517
+ - F5Bot monitoring + drafted replies
518
+ - Monthly comparison page updates on forgedock.io
519
+
520
+ ---
521
+
522
+ ## Key Risks and Mitigations
523
+
524
+ | Risk | Mitigation |
525
+ |------|-----------|
526
+ | Anthropic changes Claude Code plugin system | FORGE annotations are the moat, not the plugin format. Protocol-level lock-in survives surface changes |
527
+ | Competitor copies the pipeline approach | Depth is the moat: 35 command files, 9 review agents, 14+ quality domains. Years of prompt engineering not easily replicated |
528
+ | GitHub restricts API access for bots | FORGE annotations use standard `gh` CLI, not bot API. Same access as any developer |
529
+ | Reddit/HN community backlash against "AI marketing" | All social posting is human-reviewed. Content is genuinely useful, not promotional |
530
+ | Open-source users never convert to paid | Expected — 90%+ won't pay. The Platform sells to orgs, not individuals. GitLab model: free for ICs, paid for management features |
531
+ | Claude Code itself loses market share | Multi-model support (P1 feature) reduces single-platform risk |
532
+
533
+ ---
534
+
535
+ ## Sources
536
+
537
+ ### Market Data
538
+ - AI code tools market: Mordor Intelligence ($9.5B, 26% CAGR)
539
+ - Cursor: $4B ARR (Sacra, May 2026), $29.3B valuation
540
+ - Devin: $492M ARR run-rate, $26B valuation (CyberNewsCentre, May 2026)
541
+ - Copilot: 4.7M paid subscribers (Panto, Jan 2026)
542
+ - 85% AI adoption: Stack Overflow 2026 Survey
543
+ - 96% don't trust AI code: Stack Overflow 2026 Survey
544
+ - 2.74x vulnerability rate: Taskade/CodeRabbit analysis of 470+ OSS PRs
545
+ - 41% bug increase: Uplevel study (~800 developers)
546
+
547
+ ### Competitor Intelligence
548
+ - Devin pricing/capabilities: devin.ai, VentureBeat, TechTimes
549
+ - Cursor stats: Panto, Sacra, Digital Applied
550
+ - Kiro: kiro.dev, Computer Weekly, AWS Blog
551
+ - OpenHands/Aider/Cline: GitHub repos, OpenSourceAIReview
552
+ - GitHub Copilot Desktop: GitHub Blog (June 17, 2026)
553
+ - GitHub Agentic Workflows: GitHub Blog (June 11, 2026)
554
+
555
+ ### Growth Patterns
556
+ - Show HN star conversion: arxiv.org/html/2511.04453v1
557
+ - Developer tool discovery: Catchyagency (202 OSS developers study)
558
+ - OpenCode growth: abhs.in (160K stars analysis)
559
+ - Zero-budget playbook: Indie Hackers, star-history.com, rzlt.io
560
+
561
+ ### Monetization
562
+ - Open-core models: PostHog blog, GitLab IR, Sacra
563
+ - Seat-based pricing decline: Monetizely, Outrunly
564
+ - Docker pivot: Sacra (Docker PLG case study)
565
+ - Vercel trajectory: Sacra, SaaSt, reo.dev
566
+
567
+ ### VC Landscape
568
+ - Q1 2026 funding: Qubit Capital ($300B global, 61% AI)
569
+ - Heavybit: $180M+ new funds (heavybit.com)
570
+ - Valuation multiples: Qubit Capital, various Sacra reports
571
+
572
+ ### Automated Marketing
573
+ - dev.to API: dev.to documentation
574
+ - Hashnode API: Hashnode documentation
575
+ - Awesome lists: hesreallyhim/awesome-claude-code (36.8K stars)
576
+ - Anthropic plugin marketplace: anthropics/claude-plugins-official
577
+ - FORGE annotation virality: Dependabot/Renovate growth pattern analysis
578
+ - F5Bot monitoring: f5bot.com
579
+ - Shields.io: 1.6B images/month (shields.io GitHub)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forgedock",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "Autonomous dev pipeline for Claude Code. GitHub as institutional memory — every issue, PR, and annotation survives context resets and makes the next agent smarter.",
5
5
  "bin": {
6
6
  "forgedock": "bin/forgedock.mjs"
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env bash
2
+ # SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios
3
+ # SPDX-License-Identifier: AGPL-3.0-or-later
4
+ #
5
+ # scripts/refresh-bot-token.sh — refresh the rapiercraft-forgedock[bot] installation token.
6
+ #
7
+ # Generates a JWT from the app's private key, exchanges it for a 1-hour
8
+ # installation token, and re-auths the gh CLI. Idempotent — safe to run
9
+ # on every session start or from cron.
10
+ #
11
+ # Supports two installations:
12
+ # RapierCraftStudios (org) — installation 144998831 (default)
13
+ # RapierCraft (personal) — installation 140233364
14
+ #
15
+ # Usage: scripts/refresh-bot-token.sh [--pem /path/to/key.pem] [--personal]
16
+ #
17
+ # Env: FORGEDOCK_APP_PEM — path to private key (default: secrets/rapiercraft-forgedock.pem)
18
+
19
+ set -euo pipefail
20
+
21
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
22
+ FORGE_HOME="$(cd "$SCRIPT_DIR/.." && pwd)"
23
+
24
+ APP_ID="4051319"
25
+ ORG_INSTALLATION_ID="144998831"
26
+ PERSONAL_INSTALLATION_ID="140233364"
27
+ DEFAULT_PEM="$FORGE_HOME/secrets/rapiercraft-forgedock.pem"
28
+
29
+ # --- Parse args ---
30
+ PEM_PATH="${FORGEDOCK_APP_PEM:-$DEFAULT_PEM}"
31
+ INSTALLATION_ID="$ORG_INSTALLATION_ID"
32
+ while [[ $# -gt 0 ]]; do
33
+ case "$1" in
34
+ --pem) PEM_PATH="$2"; shift 2 ;;
35
+ --personal) INSTALLATION_ID="$PERSONAL_INSTALLATION_ID"; shift ;;
36
+ *) echo "Unknown arg: $1" >&2; exit 1 ;;
37
+ esac
38
+ done
39
+
40
+ if [[ ! -f "$PEM_PATH" ]]; then
41
+ echo "ERROR: Private key not found at $PEM_PATH" >&2
42
+ echo " Set FORGEDOCK_APP_PEM or pass --pem /path/to/key.pem" >&2
43
+ exit 1
44
+ fi
45
+
46
+ # --- Generate JWT and exchange for installation token ---
47
+ INSTALL_TOKEN=$(node -e "
48
+ var crypto = require('crypto');
49
+ var fs = require('fs');
50
+ var https = require('https');
51
+ var pem = fs.readFileSync(process.argv[1], 'utf8');
52
+ var now = Math.floor(Date.now() / 1000);
53
+ var h = Buffer.from(JSON.stringify({alg:'RS256',typ:'JWT'})).toString('base64url');
54
+ var p = Buffer.from(JSON.stringify({iat:now-60,exp:now+(9*60),iss:process.argv[2]})).toString('base64url');
55
+ var s = crypto.createSign('RSA-SHA256');
56
+ s.update(h+'.'+p);
57
+ var jwt = h+'.'+p+'.'+s.sign(pem,'base64url');
58
+ var opts = {
59
+ hostname: 'api.github.com',
60
+ path: '/app/installations/'+process.argv[3]+'/access_tokens',
61
+ method: 'POST',
62
+ headers: {
63
+ 'Authorization': 'Bearer '+jwt,
64
+ 'Accept': 'application/vnd.github+json',
65
+ 'User-Agent': 'forgedock-refresh'
66
+ }
67
+ };
68
+ var req = https.request(opts, function(res) {
69
+ var body = '';
70
+ res.on('data', function(c) { body += c; });
71
+ res.on('end', function() {
72
+ var t = JSON.parse(body).token;
73
+ if (!t) { process.stderr.write('API error: '+body); process.exit(1); }
74
+ process.stdout.write(t);
75
+ });
76
+ });
77
+ req.end();
78
+ " "$PEM_PATH" "$APP_ID" "$INSTALLATION_ID")
79
+
80
+ if [[ -z "$INSTALL_TOKEN" ]]; then
81
+ echo "ERROR: Failed to obtain installation token" >&2
82
+ exit 1
83
+ fi
84
+
85
+ # --- Auth gh CLI ---
86
+ echo "$INSTALL_TOKEN" | gh auth login --with-token 2>/dev/null
87
+
88
+ # --- Clean up stale old bot if present ---
89
+ if gh auth status 2>&1 | grep -q "rapiercraft-forge\[bot\]"; then
90
+ gh auth logout -h github.com -u "rapiercraft-forge[bot]" 2>/dev/null || true
91
+ fi
92
+
93
+ if [[ "$INSTALLATION_ID" == "$ORG_INSTALLATION_ID" ]]; then
94
+ echo "rapiercraft-forgedock[bot] token refreshed — org (RapierCraftStudios) ~1h"
95
+ else
96
+ echo "rapiercraft-forgedock[bot] token refreshed — personal (RapierCraft) ~1h"
97
+ fi