forge-workflow 0.0.4 → 0.0.6
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/.claude/commands/dev.md +345 -340
- package/.claude/commands/plan.md +566 -521
- package/.claude/commands/premerge.md +186 -176
- package/.claude/commands/research.md +42 -42
- package/.claude/commands/review.md +448 -442
- package/.claude/commands/rollback.md +721 -721
- package/.claude/commands/ship.md +212 -164
- package/.claude/commands/sonarcloud.md +152 -152
- package/.claude/commands/status.md +90 -48
- package/.claude/commands/validate.md +288 -282
- package/.claude/commands/verify.md +269 -221
- package/.claude/rules/greptile-review-process.md +285 -285
- package/.claude/rules/workflow.md +121 -105
- package/.claude/scripts/greptile-resolve.sh +558 -526
- package/.claude/scripts/load-env.sh +32 -32
- package/.cline/workflows/dev.md +342 -337
- package/.cline/workflows/plan.md +563 -518
- package/.cline/workflows/premerge.md +183 -173
- package/.cline/workflows/research.md +39 -39
- package/.cline/workflows/review.md +445 -439
- package/.cline/workflows/rollback.md +718 -718
- package/.cline/workflows/ship.md +209 -161
- package/.cline/workflows/sonarcloud.md +146 -146
- package/.cline/workflows/status.md +87 -45
- package/.cline/workflows/validate.md +285 -279
- package/.cline/workflows/verify.md +266 -218
- package/.codex/config.toml +11 -11
- package/.codex/skills/dev/SKILL.md +345 -340
- package/.codex/skills/plan/SKILL.md +566 -521
- package/.codex/skills/premerge/SKILL.md +186 -176
- package/.codex/skills/research/SKILL.md +42 -42
- package/.codex/skills/review/SKILL.md +448 -442
- package/.codex/skills/rollback/SKILL.md +721 -721
- package/.codex/skills/ship/SKILL.md +212 -164
- package/.codex/skills/sonarcloud/SKILL.md +149 -149
- package/.codex/skills/status/SKILL.md +90 -48
- package/.codex/skills/validate/SKILL.md +288 -282
- package/.codex/skills/verify/SKILL.md +269 -221
- package/.cursor/commands/dev.md +342 -337
- package/.cursor/commands/plan.md +563 -518
- package/.cursor/commands/premerge.md +183 -173
- package/.cursor/commands/research.md +39 -39
- package/.cursor/commands/review.md +445 -439
- package/.cursor/commands/rollback.md +718 -718
- package/.cursor/commands/ship.md +209 -161
- package/.cursor/commands/sonarcloud.md +146 -146
- package/.cursor/commands/status.md +87 -45
- package/.cursor/commands/validate.md +285 -279
- package/.cursor/commands/verify.md +266 -218
- package/.cursor/rules/permissions-guidance.mdc +37 -37
- package/.forge/hooks/check-tdd.js +240 -240
- package/.github/PLUGIN_TEMPLATE.json +32 -32
- package/.github/prompts/dev.prompt.md +347 -342
- package/.github/prompts/plan.prompt.md +568 -523
- package/.github/prompts/premerge.prompt.md +188 -178
- package/.github/prompts/research.prompt.md +44 -44
- package/.github/prompts/review.prompt.md +450 -444
- package/.github/prompts/rollback.prompt.md +723 -723
- package/.github/prompts/ship.prompt.md +214 -166
- package/.github/prompts/sonarcloud.prompt.md +151 -151
- package/.github/prompts/status.prompt.md +92 -50
- package/.github/prompts/validate.prompt.md +290 -284
- package/.github/prompts/verify.prompt.md +271 -223
- package/.github/workflows/beads-to-github.yml +56 -0
- package/.github/workflows/github-to-beads.yml +97 -0
- package/.kilocode/workflows/dev.md +346 -341
- package/.kilocode/workflows/plan.md +567 -522
- package/.kilocode/workflows/premerge.md +187 -177
- package/.kilocode/workflows/research.md +43 -43
- package/.kilocode/workflows/review.md +449 -443
- package/.kilocode/workflows/rollback.md +722 -722
- package/.kilocode/workflows/ship.md +213 -165
- package/.kilocode/workflows/sonarcloud.md +150 -150
- package/.kilocode/workflows/status.md +91 -49
- package/.kilocode/workflows/validate.md +289 -283
- package/.kilocode/workflows/verify.md +270 -222
- package/.mcp.json.example +12 -12
- package/.opencode/commands/dev.md +345 -340
- package/.opencode/commands/plan.md +566 -521
- package/.opencode/commands/premerge.md +186 -176
- package/.opencode/commands/research.md +42 -42
- package/.opencode/commands/review.md +448 -442
- package/.opencode/commands/rollback.md +721 -721
- package/.opencode/commands/ship.md +212 -164
- package/.opencode/commands/sonarcloud.md +149 -149
- package/.opencode/commands/status.md +90 -48
- package/.opencode/commands/validate.md +288 -282
- package/.opencode/commands/verify.md +269 -221
- package/.roo/commands/dev.md +346 -341
- package/.roo/commands/plan.md +567 -522
- package/.roo/commands/premerge.md +187 -177
- package/.roo/commands/research.md +43 -43
- package/.roo/commands/review.md +449 -443
- package/.roo/commands/rollback.md +722 -722
- package/.roo/commands/ship.md +213 -165
- package/.roo/commands/sonarcloud.md +150 -150
- package/.roo/commands/status.md +91 -49
- package/.roo/commands/validate.md +289 -283
- package/.roo/commands/verify.md +270 -222
- package/AGENTS.md +272 -175
- package/CLAUDE.md +110 -100
- package/README.md +429 -416
- package/bin/forge-cmd.js +317 -313
- package/bin/forge-preflight.js +322 -309
- package/bin/forge.js +4765 -4303
- package/docs/AGENT_INSTALL_PROMPT.md +342 -342
- package/docs/BEADS_GITHUB_SYNC.md +251 -251
- package/docs/ENHANCED_ONBOARDING.md +612 -602
- package/docs/EXAMPLES.md +482 -482
- package/docs/GREPTILE_SETUP.md +400 -400
- package/docs/MANUAL_REVIEW_GUIDE.md +106 -106
- package/docs/ROADMAP.md +359 -359
- package/docs/SETUP.md +663 -631
- package/docs/TOOLCHAIN.md +653 -630
- package/docs/VALIDATION.md +363 -363
- package/install.sh +40 -1056
- package/lefthook.yml +50 -39
- package/lib/agents/README.md +198 -198
- package/lib/agents/claude.plugin.json +28 -28
- package/lib/agents/cline.plugin.json +22 -22
- package/lib/agents/codex.plugin.json +19 -19
- package/lib/agents/copilot.plugin.json +24 -24
- package/lib/agents/cursor.plugin.json +25 -25
- package/lib/agents/kilocode.plugin.json +22 -22
- package/lib/agents/opencode.plugin.json +20 -20
- package/lib/agents/roo.plugin.json +23 -23
- package/lib/agents-config.js +2112 -2112
- package/lib/beads-health-check.js +143 -0
- package/lib/beads-setup.js +341 -0
- package/lib/beads-sync-scaffold.js +260 -0
- package/lib/commands/_registry.js +134 -0
- package/lib/commands/clean.js +181 -0
- package/lib/commands/dev.js +571 -513
- package/lib/commands/plan.js +692 -692
- package/lib/commands/push.js +196 -0
- package/lib/commands/recommend.js +119 -119
- package/lib/commands/ship.js +377 -377
- package/lib/commands/status.js +378 -378
- package/lib/commands/sync.js +55 -0
- package/lib/commands/team.js +37 -0
- package/lib/commands/test.js +207 -0
- package/lib/commands/validate.js +602 -602
- package/lib/commands/worktree.js +310 -0
- package/lib/context-merge.js +359 -359
- package/lib/dep-guard/analyzer.js +294 -294
- package/lib/dep-guard/behavior-detector.js +98 -98
- package/lib/dep-guard/contract-detector.js +162 -162
- package/lib/dep-guard/import-detector.js +498 -498
- package/lib/dep-guard/path-utils.js +13 -13
- package/lib/dep-guard/rubric.js +120 -120
- package/lib/dep-guard/task-parser.js +318 -318
- package/lib/detect-agent.js +191 -191
- package/lib/detect-worktree.js +47 -47
- package/lib/docs-command.js +51 -0
- package/lib/docs-copy.js +50 -0
- package/lib/file-hash.js +26 -26
- package/lib/freshness-token.js +148 -0
- package/lib/greptile-match.js +80 -0
- package/lib/husky-migration.js +450 -0
- package/lib/lefthook-check.js +65 -0
- package/lib/pat-setup.js +207 -0
- package/lib/plugin-catalog.js +350 -350
- package/lib/plugin-manager.js +166 -166
- package/lib/plugin-recommender.js +141 -141
- package/lib/project-discovery.js +491 -491
- package/lib/reset.js +309 -0
- package/lib/setup-action-log.js +139 -139
- package/lib/setup-summary-renderer.js +106 -106
- package/lib/setup-utils.js +96 -0
- package/lib/setup.js +192 -192
- package/lib/smart-merge.js +64 -0
- package/lib/symlink-utils.js +81 -0
- package/lib/task-ownership.js +117 -0
- package/lib/workflow-profiles.js +197 -197
- package/package.json +131 -128
- package/scripts/beads-context.sh +426 -0
- package/scripts/beads-context.test.js +567 -0
- package/scripts/behavioral-judge.sh +378 -0
- package/scripts/benchmark.js +85 -0
- package/scripts/branch-protection.js +183 -0
- package/scripts/check-agents.js +172 -0
- package/scripts/check-forge-token.js +98 -0
- package/scripts/commitlint.js +42 -0
- package/scripts/conflict-detect.sh +323 -0
- package/scripts/dep-guard-analyze.js +71 -0
- package/scripts/dep-guard.sh +789 -0
- package/scripts/eval_win.py +249 -0
- package/scripts/file-index.sh +493 -0
- package/scripts/forge-team/index.sh +86 -0
- package/scripts/forge-team/lib/agent-prompt.sh +52 -0
- package/scripts/forge-team/lib/claim.sh +256 -0
- package/scripts/forge-team/lib/dashboard.sh +341 -0
- package/scripts/forge-team/lib/epic.sh +332 -0
- package/scripts/forge-team/lib/hooks.sh +253 -0
- package/scripts/forge-team/lib/identity.sh +235 -0
- package/scripts/forge-team/lib/sync-github.sh +317 -0
- package/scripts/forge-team/lib/verify.sh +284 -0
- package/scripts/forge-team/lib/workload.sh +296 -0
- package/scripts/forge-team/tests/agent-prompt.test.sh +72 -0
- package/scripts/forge-team/tests/claim.test.sh +179 -0
- package/scripts/forge-team/tests/dashboard.test.sh +170 -0
- package/scripts/forge-team/tests/dispatcher.test.sh +79 -0
- package/scripts/forge-team/tests/epic.test.sh +176 -0
- package/scripts/forge-team/tests/hooks.test.sh +239 -0
- package/scripts/forge-team/tests/identity.test.sh +176 -0
- package/scripts/forge-team/tests/integration.test.sh +371 -0
- package/scripts/forge-team/tests/sync-github.test.sh +209 -0
- package/scripts/forge-team/tests/verify.test.sh +314 -0
- package/scripts/forge-team/tests/workflow-integration.test.sh +43 -0
- package/scripts/forge-team/tests/workload.test.sh +209 -0
- package/scripts/github-beads-sync/comment.mjs +64 -0
- package/scripts/github-beads-sync/config.mjs +148 -0
- package/scripts/github-beads-sync/github-api.mjs +131 -0
- package/scripts/github-beads-sync/index.mjs +332 -0
- package/scripts/github-beads-sync/label-mapper.mjs +54 -0
- package/scripts/github-beads-sync/mapping.mjs +78 -0
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +31 -0
- package/scripts/github-beads-sync/reverse-sync.mjs +138 -0
- package/scripts/github-beads-sync/run-bd.mjs +159 -0
- package/scripts/github-beads-sync/sanitize.mjs +121 -0
- package/scripts/github-beads-sync.config.json +26 -0
- package/scripts/improve-command.js +375 -0
- package/scripts/lib/eval-runner.js +268 -0
- package/scripts/lib/eval-schema.js +135 -0
- package/scripts/lib/eval-storage.js +78 -0
- package/scripts/lib/grading.js +203 -0
- package/scripts/lib/jsonl-lock.sh +48 -0
- package/scripts/lib/sanitize.sh +116 -0
- package/scripts/lib/transcript-parser.js +63 -0
- package/scripts/lint.js +47 -0
- package/scripts/migrate-to-bun-test.js +412 -0
- package/scripts/pr-coordinator.sh +706 -0
- package/scripts/run-command-eval.js +236 -0
- package/scripts/smart-status.sh +809 -0
- package/scripts/sync-commands.js +571 -0
- package/scripts/sync-utils.sh +455 -0
- package/scripts/test-dashboard.js +123 -0
- package/scripts/test.js +46 -0
- package/scripts/validate.sh +94 -0
- package/skills/parallel-deep-research/SKILL.md +108 -108
- package/skills/parallel-deep-research/evals/README.md +27 -27
- package/skills/parallel-deep-research/evals/evals.json +62 -62
- package/skills/sonarcloud-analysis/SKILL.md +171 -171
- package/skills/sonarcloud-analysis/evals/README.md +27 -27
- package/skills/sonarcloud-analysis/evals/evals.json +50 -50
- package/skills/sonarcloud-analysis/references/api-reference.md +466 -466
- package/.cursor/hooks/state/continual-learning-index.json +0 -19
- package/.cursor/hooks/state/continual-learning.json +0 -8
|
@@ -1,164 +1,212 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Create PR with comprehensive documentation
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Push code and create a pull request with full context and documentation links.
|
|
6
|
-
|
|
7
|
-
# Ship
|
|
8
|
-
|
|
9
|
-
This command creates a PR after validation passes.
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
/ship
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
<HARD-GATE: /ship entry>
|
|
19
|
-
Do NOT create PR until:
|
|
20
|
-
1. /validate was run in this session with all four outputs shown (type, lint, tests, security)
|
|
21
|
-
2. All checks confirmed passing — not assumed, not "was passing earlier"
|
|
22
|
-
3. Beads issue is in_progress
|
|
23
|
-
4. git branch --show-current output is NOT main or master
|
|
24
|
-
</HARD-GATE>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## What This Command Does
|
|
28
|
-
|
|
29
|
-
### Step 1: Verify /validate Passed
|
|
30
|
-
Ensure all four validation checks completed successfully with fresh output in this session.
|
|
31
|
-
|
|
32
|
-
### Step 2: Freshness Check — Is Branch Still Current?
|
|
33
|
-
|
|
34
|
-
Even though /validate rebased onto the base branch, time may have passed since then (user reviewed design doc, took a break, etc.). This lightweight check catches staleness before pushing.
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
BASE=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}')
|
|
38
|
-
if [ -z "$BASE" ] || [ "$BASE" = "(unknown)" ]; then BASE="master"; fi
|
|
39
|
-
git fetch origin "$BASE" || { echo "✗ Fetch failed — cannot verify freshness"; exit 1; }
|
|
40
|
-
BEHIND=$(git rev-list --count HEAD..origin/"$BASE")
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
- If `BEHIND > 0`: **STOP**. Print: "$BASE has advanced since /validate ($BEHIND new commits). Run /validate again to rebase and re-check."
|
|
44
|
-
- If `BEHIND = 0`: Continue to push.
|
|
45
|
-
- If fetch fails: the `|| { ...; exit 1; }` guard catches this — **STOP**. Do NOT push without confirming freshness.
|
|
46
|
-
|
|
47
|
-
This is NOT a full rebase — just a check. The rebase happens in /validate where the full test suite runs afterward.
|
|
48
|
-
|
|
49
|
-
###
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
If
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
###
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
[
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
1
|
+
---
|
|
2
|
+
description: Create PR with comprehensive documentation
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Push code and create a pull request with full context and documentation links.
|
|
6
|
+
|
|
7
|
+
# Ship
|
|
8
|
+
|
|
9
|
+
This command creates a PR after validation passes.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
/ship
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
<HARD-GATE: /ship entry>
|
|
19
|
+
Do NOT create PR until:
|
|
20
|
+
1. /validate was run in this session with all four outputs shown (type, lint, tests, security)
|
|
21
|
+
2. All checks confirmed passing — not assumed, not "was passing earlier"
|
|
22
|
+
3. Beads issue is in_progress
|
|
23
|
+
4. git branch --show-current output is NOT main or master
|
|
24
|
+
</HARD-GATE>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## What This Command Does
|
|
28
|
+
|
|
29
|
+
### Step 1: Verify /validate Passed
|
|
30
|
+
Ensure all four validation checks completed successfully with fresh output in this session.
|
|
31
|
+
|
|
32
|
+
### Step 2: Freshness Check — Is Branch Still Current?
|
|
33
|
+
|
|
34
|
+
Even though /validate rebased onto the base branch, time may have passed since then (user reviewed design doc, took a break, etc.). This lightweight check catches staleness before pushing.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
BASE=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}')
|
|
38
|
+
if [ -z "$BASE" ] || [ "$BASE" = "(unknown)" ]; then BASE="master"; fi
|
|
39
|
+
git fetch origin "$BASE" || { echo "✗ Fetch failed — cannot verify freshness"; exit 1; }
|
|
40
|
+
BEHIND=$(git rev-list --count HEAD..origin/"$BASE")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- If `BEHIND > 0`: **STOP**. Print: "$BASE has advanced since /validate ($BEHIND new commits). Run /validate again to rebase and re-check."
|
|
44
|
+
- If `BEHIND = 0`: Continue to push.
|
|
45
|
+
- If fetch fails: the `|| { ...; exit 1; }` guard catches this — **STOP**. Do NOT push without confirming freshness.
|
|
46
|
+
|
|
47
|
+
This is NOT a full rebase — just a check. The rebase happens in /validate where the full test suite runs afterward.
|
|
48
|
+
|
|
49
|
+
### Parallel PR coordination (soft block)
|
|
50
|
+
|
|
51
|
+
Before creating the PR, check merge readiness:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Run merge simulation against base branch
|
|
55
|
+
bash scripts/pr-coordinator.sh merge-sim "$(git branch --show-current)" 2>&1
|
|
56
|
+
|
|
57
|
+
# Show recommended merge order
|
|
58
|
+
bash scripts/pr-coordinator.sh merge-order 2>&1 || true
|
|
59
|
+
|
|
60
|
+
# Auto-label the PR after creation (called after gh pr create below)
|
|
61
|
+
# bash scripts/pr-coordinator.sh auto-label <issue-id>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If merge simulation finds conflicts:
|
|
65
|
+
- Display conflicted files
|
|
66
|
+
- Ask: "Merge conflicts detected with base branch. These PRs should merge first: [list]. Proceed with PR creation anyway? (y/n)"
|
|
67
|
+
- If `n`: exit cleanly
|
|
68
|
+
- If `y`: log override via `bd comments add <id> "Ship override: creating PR despite merge conflicts"`, then continue
|
|
69
|
+
|
|
70
|
+
After PR creation completes:
|
|
71
|
+
```bash
|
|
72
|
+
# Auto-label the newly created PR
|
|
73
|
+
bash scripts/pr-coordinator.sh auto-label <issue-id>
|
|
74
|
+
|
|
75
|
+
# Check for stale worktrees (informational)
|
|
76
|
+
bash scripts/pr-coordinator.sh stale-worktrees 2>&1 || true
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Step 3: Update Beads
|
|
80
|
+
```bash
|
|
81
|
+
bd update <id> --status done
|
|
82
|
+
bd sync
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Step 4: Push Branch
|
|
86
|
+
|
|
87
|
+
Use `--force-with-lease` because `/validate` may have rebased the branch, rewriting history. This is safe: it only forces the push if the remote branch hasn't been updated by someone else since the last fetch.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git push --force-with-lease -u origin <branch-name>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 5: Create PR Using Project's PR Template
|
|
94
|
+
|
|
95
|
+
**CRITICAL**: Always use the project's own PR template. Never use a hardcoded body.
|
|
96
|
+
|
|
97
|
+
**Step 5a: Locate the PR template**
|
|
98
|
+
|
|
99
|
+
Check for a PR template in the project (in order of precedence):
|
|
100
|
+
```bash
|
|
101
|
+
# Check standard locations
|
|
102
|
+
PR_TEMPLATE=""
|
|
103
|
+
for path in .github/pull_request_template.md .github/PULL_REQUEST_TEMPLATE.md docs/pull_request_template.md pull_request_template.md; do
|
|
104
|
+
if [ -f "$path" ]; then
|
|
105
|
+
PR_TEMPLATE="$path"
|
|
106
|
+
break
|
|
107
|
+
fi
|
|
108
|
+
done
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Step 5b: Read and populate the template**
|
|
112
|
+
|
|
113
|
+
If a PR template exists:
|
|
114
|
+
1. **Read the template file** using the Read tool
|
|
115
|
+
2. **Fill in every section** with actual data from the current PR context:
|
|
116
|
+
- Replace HTML comments (`<!-- ... -->`) with real content
|
|
117
|
+
- Check applicable checkboxes (`- [x]`)
|
|
118
|
+
- Fill in beads issue IDs (replace `beads-xxx` with actual ID)
|
|
119
|
+
- Fill in test results, validation status, and other concrete data
|
|
120
|
+
- Reference the design doc: `docs/plans/YYYY-MM-DD-<slug>-design.md`
|
|
121
|
+
3. **Do NOT remove any sections** — fill them all, even if "N/A"
|
|
122
|
+
4. **Do NOT restructure the template** — keep the project's chosen format
|
|
123
|
+
|
|
124
|
+
If no PR template exists, use this minimal fallback:
|
|
125
|
+
```
|
|
126
|
+
## Summary
|
|
127
|
+
[1-3 sentences: what this PR does and why]
|
|
128
|
+
|
|
129
|
+
## Changes
|
|
130
|
+
[Bulleted list of key changes]
|
|
131
|
+
|
|
132
|
+
## Testing
|
|
133
|
+
[How it was tested, test results]
|
|
134
|
+
|
|
135
|
+
## Beads
|
|
136
|
+
Closes beads-xxx
|
|
137
|
+
|
|
138
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Step 5c: Create the PR**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
gh pr create --title "<type>: <concise description>" --body "<populated-template-content>"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Rules for the PR body:
|
|
148
|
+
- **Use the project's template structure** — never substitute your own format
|
|
149
|
+
- **Fill in concrete data** — commit counts, test results, actual file paths, real beads IDs
|
|
150
|
+
- **Check applicable checkboxes** — `[x]` for items that apply, `[ ]` for items that don't
|
|
151
|
+
- **Include "Closes beads-xxx"** in the Beads section (required for auto-close in /verify)
|
|
152
|
+
|
|
153
|
+
### Step 6: Validate Context and Record Stage Transition
|
|
154
|
+
```bash
|
|
155
|
+
bash scripts/beads-context.sh validate <id>
|
|
156
|
+
bash scripts/beads-context.sh stage-transition <id> ship review \
|
|
157
|
+
--summary "<PR created, checks pending>" \
|
|
158
|
+
--decisions "<template sections filled, beads linked>" \
|
|
159
|
+
--artifacts "<PR URL, branch name>" \
|
|
160
|
+
--next "<review focus areas>"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Team sync after PR
|
|
164
|
+
|
|
165
|
+
After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Sync issue state to GitHub
|
|
169
|
+
bash scripts/forge-team/index.sh sync 2>&1 || true
|
|
170
|
+
|
|
171
|
+
# Verify 1:1 mapping
|
|
172
|
+
bash scripts/forge-team/index.sh verify 2>&1 || true
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Example Output
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
✓ Validation: /validate passed (all 4 checks — fresh output confirmed)
|
|
179
|
+
✓ Freshness: Branch is up-to-date with master
|
|
180
|
+
✓ Beads: Marked done & synced (forge-xyz)
|
|
181
|
+
✓ Pushed: feat/stripe-billing
|
|
182
|
+
✓ PR created: https://github.com/.../pull/123
|
|
183
|
+
- PR body: Problem → Root Cause → Fix → Value (narrative format)
|
|
184
|
+
- Beads linked: forge-xyz
|
|
185
|
+
- Implementation details in collapsible section
|
|
186
|
+
|
|
187
|
+
⏸️ PR created, awaiting automated checks (Greptile, SonarCloud, GitHub Actions)
|
|
188
|
+
|
|
189
|
+
Next: /review <pr-number> (after automated checks complete)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Integration with Workflow
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Utility: /status → Understand current context before starting
|
|
196
|
+
Stage 1: /plan → Design intent → research → branch + worktree + task list
|
|
197
|
+
Stage 2: /dev → Implement each task with subagent-driven TDD
|
|
198
|
+
Stage 3: /validate → Type check, lint, tests, security — all fresh output
|
|
199
|
+
Stage 4: /ship → Push + create PR (you are here)
|
|
200
|
+
Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
|
|
201
|
+
Stage 6: /premerge → Update docs, hand off PR to user
|
|
202
|
+
Stage 7: /verify → Post-merge CI check on main
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Tips
|
|
206
|
+
|
|
207
|
+
- **Use the project's PR template**: Always read `.github/pull_request_template.md` (or equivalent) and populate it — never substitute your own format
|
|
208
|
+
- **Fill every section**: Even if "N/A" — empty/missing sections cause review friction
|
|
209
|
+
- **Include "Closes beads-xxx"**: Required for auto-close in /verify
|
|
210
|
+
- **Concrete data only**: Test counts, file paths, commit SHAs — not placeholder text
|
|
211
|
+
- **Wait for checks**: Let GitHub Actions, Greptile, SonarCloud run
|
|
212
|
+
- **NO auto-merge**: Always wait for /review phase
|