forge-workflow 0.0.8 → 0.0.10
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 +2 -2
- package/.claude/commands/plan.md +2 -2
- package/.claude/commands/premerge.md +2 -2
- package/.claude/commands/review.md +5 -2
- package/.claude/commands/ship.md +6 -5
- package/.claude/commands/status.md +4 -4
- package/.claude/rules/greptile-review-process.md +4 -4
- package/.cline/workflows/dev.md +2 -2
- package/.cline/workflows/plan.md +2 -2
- package/.cline/workflows/premerge.md +2 -2
- package/.cline/workflows/review.md +5 -2
- package/.cline/workflows/ship.md +6 -5
- package/.cline/workflows/status.md +4 -4
- package/.codex/skills/dev/SKILL.md +2 -2
- package/.codex/skills/plan/SKILL.md +2 -2
- package/.codex/skills/premerge/SKILL.md +2 -2
- package/.codex/skills/review/SKILL.md +5 -2
- package/.codex/skills/ship/SKILL.md +6 -5
- package/.codex/skills/status/SKILL.md +4 -4
- package/.cursor/commands/dev.md +2 -2
- package/.cursor/commands/plan.md +2 -2
- package/.cursor/commands/premerge.md +2 -2
- package/.cursor/commands/review.md +5 -2
- package/.cursor/commands/ship.md +6 -5
- package/.cursor/commands/status.md +4 -4
- package/.github/prompts/dev.prompt.md +2 -2
- package/.github/prompts/plan.prompt.md +2 -2
- package/.github/prompts/premerge.prompt.md +2 -2
- package/.github/prompts/review.prompt.md +5 -2
- package/.github/prompts/ship.prompt.md +6 -5
- package/.github/prompts/status.prompt.md +4 -4
- package/.github/workflows/beads-to-github.yml +44 -11
- package/.github/workflows/github-to-beads.yml +11 -8
- package/.kilocode/workflows/dev.md +2 -2
- package/.kilocode/workflows/plan.md +2 -2
- package/.kilocode/workflows/premerge.md +2 -2
- package/.kilocode/workflows/review.md +5 -2
- package/.kilocode/workflows/ship.md +6 -5
- package/.kilocode/workflows/status.md +4 -4
- package/.opencode/commands/dev.md +2 -2
- package/.opencode/commands/plan.md +2 -2
- package/.opencode/commands/premerge.md +2 -2
- package/.opencode/commands/review.md +5 -2
- package/.opencode/commands/ship.md +6 -5
- package/.opencode/commands/status.md +4 -4
- package/.roo/commands/dev.md +2 -2
- package/.roo/commands/plan.md +2 -2
- package/.roo/commands/premerge.md +2 -2
- package/.roo/commands/review.md +5 -2
- package/.roo/commands/ship.md +6 -5
- package/.roo/commands/status.md +4 -4
- package/AGENTS.md +10 -9
- package/CLAUDE.md +12 -0
- package/README.md +12 -6
- package/bin/forge.js +24 -8
- package/docs/BEADS_GITHUB_SYNC.md +32 -2
- package/docs/EXAMPLES.md +22 -22
- package/docs/ROADMAP.md +3 -3
- package/docs/TOOLCHAIN.md +150 -160
- package/lib/agents/codex.plugin.json +3 -0
- package/lib/agents-config.js +18 -12
- package/lib/beads-bootstrap.js +225 -0
- package/lib/beads-health-check.js +55 -10
- package/lib/beads-setup.js +104 -28
- package/lib/beads-sync-scaffold.js +11 -6
- package/lib/codex-skills.js +54 -1
- package/lib/commands/_issue.js +11 -1
- package/lib/commands/issues.js +49 -0
- package/lib/commands/plan.js +5 -2
- package/lib/commands/recommend.js +22 -1
- package/lib/commands/setup.js +247 -27
- package/lib/commands/ship.js +188 -5
- package/lib/commands/status.js +187 -19
- package/lib/commands/team.js +11 -1
- package/lib/commands/test.js +125 -25
- package/lib/commands/validate.js +232 -9
- package/lib/commands/worktree.js +27 -54
- package/lib/dep-guard/keyword-ripple.js +184 -0
- package/lib/detect-worktree.js +9 -10
- package/lib/forge-issues.js +326 -0
- package/lib/issue-sync/authority.js +100 -0
- package/lib/issue-sync/github-pull.js +184 -0
- package/lib/issue-sync/import-primitives.js +98 -0
- package/lib/issue-sync/legacy-link-bridge.js +436 -0
- package/lib/issue-sync/link-store.js +292 -0
- package/lib/issue-sync/project-github.js +123 -0
- package/lib/issue-sync/reconcile.js +195 -0
- package/lib/issue-sync/schema.js +126 -0
- package/lib/lefthook-check.js +5 -2
- package/lib/project-memory.js +564 -0
- package/lib/runtime-health.js +100 -12
- package/lib/setup-action-log.js +2 -0
- package/lib/setup-summary-renderer.js +15 -11
- package/lib/smart-status/conflicts.js +205 -0
- package/lib/smart-status/scoring.js +177 -0
- package/lib/status/beads-snapshot.js +102 -0
- package/lib/status/presenter.js +65 -0
- package/lib/workflow/enforce-stage.js +14 -8
- package/lib/workflow/state-manager.js +349 -0
- package/package.json +12 -4
- package/scripts/beads-context.sh +124 -5
- package/scripts/beads-context.test.js +21 -4
- package/scripts/beads-migrate-to-dolt.sh +7 -0
- package/scripts/beads-upgrade-smoke.sh +263 -0
- package/scripts/behavioral-judge.sh +115 -11
- package/scripts/benchmark.js +349 -63
- package/scripts/dep-guard-analyze.js +52 -17
- package/scripts/dep-guard-keyword-ripple.js +29 -0
- package/scripts/dep-guard-render-review.js +86 -0
- package/scripts/dep-guard.sh +45 -222
- package/scripts/forge-team/lib/hooks.sh +1 -1
- package/scripts/forge-team/lib/sync-github.sh +160 -28
- package/scripts/forge-team/lib/verify.sh +1 -1
- package/scripts/forge-team/lib/workload.sh +56 -27
- package/scripts/forge-team/tests/sync-github.test.sh +195 -58
- package/scripts/forge-team/tests/workload.test.sh +35 -4
- package/scripts/github-beads-sync/index.mjs +122 -98
- package/scripts/github-beads-sync/mapping.mjs +54 -0
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +2 -2
- package/scripts/github-beads-sync/reverse-sync.mjs +31 -7
- package/scripts/github-beads-sync/run-bd.mjs +4 -2
- package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
- package/scripts/preflight.sh +181 -0
- package/scripts/smart-status-score.js +31 -0
- package/scripts/smart-status-sessions.js +51 -0
- package/scripts/smart-status.sh +84 -330
- package/scripts/sync-agentic-workflow.js +48 -0
- package/scripts/sync-utils.sh +39 -0
- package/scripts/test-ci-shard.js +244 -0
- package/scripts/test-dashboard.js +188 -52
- package/scripts/test-full-suite.js +186 -0
- package/scripts/test-profile.js +278 -0
- package/scripts/test.js +335 -38
- package/scripts/validate.js +143 -0
- package/scripts/validate.sh +18 -1
package/CLAUDE.md
CHANGED
|
@@ -50,6 +50,17 @@ See [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md) for detailed MCP setup instructions.
|
|
|
50
50
|
|
|
51
51
|
Setup prompts for Beads during interactive installation. Manual install: see [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md).
|
|
52
52
|
|
|
53
|
+
### Shell Model
|
|
54
|
+
|
|
55
|
+
Forge commands and repo scripts assume the following shell model:
|
|
56
|
+
|
|
57
|
+
| Platform | Shell used by Forge commands and scripts |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| Windows | Git Bash for helper-backed Forge stage flows |
|
|
60
|
+
| macOS/Linux | Default login shell |
|
|
61
|
+
|
|
62
|
+
On Windows, Forge runtime health enforces Git Bash for helper-backed stage flows. Native PowerShell is still used by some bootstrap paths, and WSL may be useful for adjacent development tasks. See [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md#shell-model) for details.
|
|
63
|
+
|
|
53
64
|
---
|
|
54
65
|
|
|
55
66
|
## Git Workflow
|
|
@@ -106,5 +117,6 @@ As you work, when you give the same instruction twice, add it here:
|
|
|
106
117
|
- **Pre-push test env**: `test-env/` fixture tests can fail during actual `git push` due to git mid-push state. Fix the root cause — never use `LEFTHOOK=0`.
|
|
107
118
|
- **Command sync**: After editing `.claude/commands/*.md`, run `node scripts/sync-commands.js` to update all 7 agent directories. Use `--check` in CI to detect drift. Use `--dry-run` to preview.
|
|
108
119
|
- **Dynamic commands**: Never hardcode example output in command files (`.claude/commands/*.md`) when a script generates that output dynamically. Command files should reference the script and describe what it does — not duplicate its output with fake data that becomes stale.
|
|
120
|
+
- **Review follow-up completion**: After fixing review feedback, always push the changes and resolve the related GitHub review threads via the GraphQL API before considering the work complete.
|
|
109
121
|
|
|
110
122
|
<!-- USER:END -->
|
package/README.md
CHANGED
|
@@ -402,14 +402,20 @@ gh auth login
|
|
|
402
402
|
/premerge <pr> # Complete docs, hand off PR
|
|
403
403
|
/verify # Post-merge health check
|
|
404
404
|
|
|
405
|
-
#
|
|
406
|
-
bd init # Initialize tracking
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
405
|
+
# Issue commands (via Forge)
|
|
406
|
+
bd init # Initialize Beads tracking
|
|
407
|
+
forge ready # Find ready work
|
|
408
|
+
forge create "title" # Create issue
|
|
409
|
+
forge update <id> --status X # Update status
|
|
410
|
+
forge sync # Sync Beads state
|
|
411
411
|
```
|
|
412
412
|
|
|
413
|
+
For advanced Beads operations that Forge does not wrap yet, use `bd` directly for
|
|
414
|
+
`bd comments`, `bd dep`, and `bd dolt`.
|
|
415
|
+
|
|
416
|
+
Forge is the preferred command surface for routine workflows, but Beads (`bd`)
|
|
417
|
+
remains the underlying source of truth for issue state and IDs.
|
|
418
|
+
|
|
413
419
|
---
|
|
414
420
|
|
|
415
421
|
## License
|
package/bin/forge.js
CHANGED
|
@@ -64,7 +64,7 @@ const { createSymlinkOrCopy: libCreateSymlinkOrCopy } = require(path.join(packag
|
|
|
64
64
|
const beadsSetupLib = require(path.join(packageDir, 'lib', 'beads-setup'));
|
|
65
65
|
const { beadsHealthCheck } = require(path.join(packageDir, 'lib', 'beads-health-check'));
|
|
66
66
|
const { setupPAT } = require(path.join(packageDir, 'lib', 'pat-setup'));
|
|
67
|
-
const {
|
|
67
|
+
const { DEFAULT_BEADS_VERSION, detectDefaultBranch, templateWorkflows, scaffoldBeadsSync } = require(path.join(packageDir, 'lib', 'beads-sync-scaffold'));
|
|
68
68
|
|
|
69
69
|
// Load incremental setup modules
|
|
70
70
|
const { detectEnvironment } = require('../lib/detect-agent');
|
|
@@ -139,7 +139,7 @@ function loadAgentsFromPlugins() {
|
|
|
139
139
|
agents[id] = {
|
|
140
140
|
name: plugin.name,
|
|
141
141
|
description: plugin.description || '',
|
|
142
|
-
dirs:
|
|
142
|
+
dirs: getRepoRelativePluginDirectories(plugin),
|
|
143
143
|
hasCommands: plugin.capabilities?.commands || plugin.setup?.copyCommands || false,
|
|
144
144
|
hasSkill: plugin.capabilities?.skills || plugin.setup?.createSkill || false,
|
|
145
145
|
linkFile: plugin.files?.rootConfig || '',
|
|
@@ -153,6 +153,17 @@ function loadAgentsFromPlugins() {
|
|
|
153
153
|
return agents;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
function isRepoRelativePluginPath(candidate) {
|
|
157
|
+
return typeof candidate === 'string'
|
|
158
|
+
&& candidate.length > 0
|
|
159
|
+
&& !path.isAbsolute(candidate)
|
|
160
|
+
&& !/^[~$%]/.test(candidate);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function getRepoRelativePluginDirectories(plugin) {
|
|
164
|
+
return Object.values(plugin.directories || {}).filter(isRepoRelativePluginPath);
|
|
165
|
+
}
|
|
166
|
+
|
|
156
167
|
// Agent definitions - loaded from plugin system
|
|
157
168
|
const AGENTS = loadAgentsFromPlugins();
|
|
158
169
|
|
|
@@ -2383,7 +2394,7 @@ function displaySetupSummary(selectedAgents) {
|
|
|
2383
2394
|
|
|
2384
2395
|
// Beads status
|
|
2385
2396
|
if (isBeadsInitialized()) {
|
|
2386
|
-
console.log(' ✓ Beads initialized - Track work:
|
|
2397
|
+
console.log(' ✓ Beads initialized - Track work: forge ready');
|
|
2387
2398
|
} else if (checkForBeads()) {
|
|
2388
2399
|
console.log(' ! Beads available - Run: bd init');
|
|
2389
2400
|
} else {
|
|
@@ -2543,7 +2554,7 @@ function parseFlags() {
|
|
|
2543
2554
|
|
|
2544
2555
|
// Issue passthrough commands delegate all flags to bd.
|
|
2545
2556
|
// Skip global parsing so flags like --type, -p, --help reach the handler intact.
|
|
2546
|
-
const issuePassthroughCommands = ['create', 'update', 'claim', 'close', 'show', 'list', 'ready', 'issue'];
|
|
2557
|
+
const issuePassthroughCommands = ['create', 'update', 'claim', 'close', 'show', 'list', 'ready', 'issue', 'issues'];
|
|
2547
2558
|
if (issuePassthroughCommands.includes(args[0])) {
|
|
2548
2559
|
return flags;
|
|
2549
2560
|
}
|
|
@@ -3336,7 +3347,7 @@ async function setupProjectTools(rl, question) {
|
|
|
3336
3347
|
console.log('');
|
|
3337
3348
|
console.log('• Beads - Git-backed issue tracking');
|
|
3338
3349
|
console.log(' Persists tasks across sessions, tracks dependencies.');
|
|
3339
|
-
console.log(' Command:
|
|
3350
|
+
console.log(' Command: forge ready, forge create, forge close');
|
|
3340
3351
|
console.log('');
|
|
3341
3352
|
console.log('• Skills - Universal SKILL.md management');
|
|
3342
3353
|
console.log(' Manage AI agent skills across all agents.');
|
|
@@ -4036,9 +4047,9 @@ async function handleSyncScaffold() {
|
|
|
4036
4047
|
console.log(` Skipped: ${f} (already exists)`);
|
|
4037
4048
|
}
|
|
4038
4049
|
|
|
4039
|
-
// Detect default branch and
|
|
4050
|
+
// Detect default branch and pin forge-managed workflows to the repo baseline Beads version.
|
|
4040
4051
|
const branch = detectDefaultBranch(projectRoot);
|
|
4041
|
-
const beadsVersion =
|
|
4052
|
+
const beadsVersion = DEFAULT_BEADS_VERSION;
|
|
4042
4053
|
const workflowDir = path.join(projectRoot, '.github', 'workflows');
|
|
4043
4054
|
templateWorkflows(workflowDir, branch, beadsVersion, result.filesCreated || []);
|
|
4044
4055
|
console.log(` Branch: ${branch}, Beads version: ${beadsVersion}`);
|
|
@@ -4802,4 +4813,9 @@ if (require.main === module) {
|
|
|
4802
4813
|
})();
|
|
4803
4814
|
}
|
|
4804
4815
|
|
|
4805
|
-
module.exports = {
|
|
4816
|
+
module.exports = {
|
|
4817
|
+
ensureDirWithNote,
|
|
4818
|
+
getWorkflowCommands,
|
|
4819
|
+
validateDirectoryPathInput,
|
|
4820
|
+
validateUserInput,
|
|
4821
|
+
};
|
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
Automatic synchronization between GitHub Issues and Beads issue tracking.
|
|
4
4
|
|
|
5
5
|
**GitHub Issues** = human/team/public interface.
|
|
6
|
-
**Beads** =
|
|
6
|
+
**Beads** = issue engine behind Forge (`forge ready`, `forge close`).
|
|
7
7
|
|
|
8
8
|
Neither side needs to know about the other. Contributors file issues on GitHub; AI agents pick up work via Beads. Status changes propagate automatically.
|
|
9
9
|
|
|
10
|
+
For human and agent workflows, prefer the Forge wrapper commands (`forge ready`,
|
|
11
|
+
`forge create`, `forge close`, `forge sync`). The workflow automation shown below
|
|
12
|
+
still calls `bd` directly as an internal implementation detail.
|
|
13
|
+
|
|
10
14
|
---
|
|
11
15
|
|
|
12
16
|
## Architecture
|
|
@@ -48,7 +52,7 @@ sequenceDiagram
|
|
|
48
52
|
participant WF as GitHub Actions
|
|
49
53
|
participant GH as GitHub Issues
|
|
50
54
|
|
|
51
|
-
AI->>BD:
|
|
55
|
+
AI->>BD: forge close forge-abc
|
|
52
56
|
BD->>Repo: Update issues.jsonl
|
|
53
57
|
AI->>Repo: git push
|
|
54
58
|
Repo->>WF: push trigger (paths: .beads/**)
|
|
@@ -65,6 +69,32 @@ Three guards prevent infinite ping-pong:
|
|
|
65
69
|
2. **Commit message prefix** -- Phase 2 workflow skips commits starting with `chore(beads):`
|
|
66
70
|
3. **Opt-out label** -- `skip-beads-sync` label on any issue disables sync entirely
|
|
67
71
|
|
|
72
|
+
### Normalized Core
|
|
73
|
+
|
|
74
|
+
GitHub-owned shared fields are the only fields that steady-state pull and initial import are allowed to overwrite:
|
|
75
|
+
|
|
76
|
+
- `github.number`
|
|
77
|
+
- `github.nodeId`
|
|
78
|
+
- `github.url`
|
|
79
|
+
- `shared.title`
|
|
80
|
+
- `shared.body`
|
|
81
|
+
- `shared.state`
|
|
82
|
+
- `shared.assignees`
|
|
83
|
+
- `shared.labels`
|
|
84
|
+
- `shared.milestone`
|
|
85
|
+
- `sync.remoteUpdatedAt`
|
|
86
|
+
|
|
87
|
+
Forge-owned workflow context stays local in Beads. That includes workflow stage, dependencies, progress notes, decisions, and other issue-engine metadata.
|
|
88
|
+
|
|
89
|
+
Both ongoing pull sync and the `forge-ij1` import bootstrap use the same primitive layer:
|
|
90
|
+
|
|
91
|
+
- `lib/issue-sync/link-store.js` resolves canonical GitHub/Beads links.
|
|
92
|
+
- `lib/issue-sync/github-pull.js` normalizes remote GitHub issues into shared records.
|
|
93
|
+
- `lib/issue-sync/reconcile.js` applies GitHub-owned fields and materializes the local cache row.
|
|
94
|
+
- `lib/issue-sync/import-primitives.js` exposes `listRemoteIssues`, `normalizeRemoteIssue`, `resolveSharedLink`, and `materializeLocalIssue` for import backfill.
|
|
95
|
+
|
|
96
|
+
`forge-ij1` depends on these primitives directly. It does not use a separate import-specific sync contract or an alternate reconciliation path.
|
|
97
|
+
|
|
68
98
|
---
|
|
69
99
|
|
|
70
100
|
## Setup
|
package/docs/EXAMPLES.md
CHANGED
|
@@ -109,7 +109,7 @@ git commit -m "feat: add health check endpoint"
|
|
|
109
109
|
/status
|
|
110
110
|
|
|
111
111
|
# If Beads installed:
|
|
112
|
-
|
|
112
|
+
forge create "SQL injection in search endpoint" \
|
|
113
113
|
--type bug \
|
|
114
114
|
--priority 0 \
|
|
115
115
|
--label "security,critical"
|
|
@@ -224,7 +224,7 @@ OWASP A03:2021 Injection"
|
|
|
224
224
|
# ═══════════════════════════════════════════════════════════
|
|
225
225
|
/status
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
forge create "Extract auth logic to service" \
|
|
228
228
|
--type chore \
|
|
229
229
|
--priority 2
|
|
230
230
|
|
|
@@ -337,35 +337,35 @@ Team of 3 developers:
|
|
|
337
337
|
# PROJECT SETUP (Once per project)
|
|
338
338
|
# ═══════════════════════════════════════════════════════════
|
|
339
339
|
bd init --prefix SHOP
|
|
340
|
-
|
|
340
|
+
forge sync # Sync initial Beads state
|
|
341
341
|
|
|
342
342
|
# ═══════════════════════════════════════════════════════════
|
|
343
343
|
# ALICE: Payment Integration
|
|
344
344
|
# ═══════════════════════════════════════════════════════════
|
|
345
345
|
|
|
346
346
|
# Morning: Check what's available
|
|
347
|
-
|
|
347
|
+
forge ready
|
|
348
348
|
# Output:
|
|
349
349
|
# SHOP-1: Payment integration (ready)
|
|
350
350
|
# SHOP-3: Admin dashboard (ready)
|
|
351
351
|
|
|
352
352
|
# Claim work
|
|
353
|
-
|
|
353
|
+
forge claim SHOP-1
|
|
354
354
|
/status
|
|
355
355
|
/plan stripe-payment-integration
|
|
356
356
|
/dev
|
|
357
357
|
|
|
358
358
|
# Midday: Progress update
|
|
359
|
-
bd comments SHOP-1 "Stripe SDK integrated, working on webhooks"
|
|
359
|
+
bd comments add SHOP-1 "Stripe SDK integrated, working on webhooks"
|
|
360
360
|
|
|
361
361
|
# Afternoon: Blocked on API keys
|
|
362
|
-
|
|
362
|
+
forge update SHOP-1 --status blocked --comment "Need production Stripe API keys"
|
|
363
363
|
|
|
364
364
|
# Create dependency
|
|
365
|
-
|
|
365
|
+
forge create "Get Stripe API keys from DevOps" --type chore --priority 1
|
|
366
366
|
bd dep add SHOP-1 SHOP-5 # SHOP-1 depends on SHOP-5
|
|
367
367
|
|
|
368
|
-
|
|
368
|
+
forge sync # Push Beads state
|
|
369
369
|
|
|
370
370
|
# ═══════════════════════════════════════════════════════════
|
|
371
371
|
# BOB: Email Notifications (Same Time)
|
|
@@ -373,24 +373,24 @@ bd sync # Push to git
|
|
|
373
373
|
|
|
374
374
|
# Morning: Pull latest, check work
|
|
375
375
|
git pull
|
|
376
|
-
|
|
376
|
+
forge sync # Sync with Alice's updates
|
|
377
377
|
|
|
378
|
-
|
|
378
|
+
forge ready
|
|
379
379
|
# Output:
|
|
380
380
|
# SHOP-3: Admin dashboard (ready)
|
|
381
381
|
# SHOP-2: Email notifications (ready)
|
|
382
382
|
|
|
383
383
|
# Claim different feature
|
|
384
|
-
|
|
384
|
+
forge claim SHOP-2
|
|
385
385
|
/plan email-notifications
|
|
386
386
|
/dev
|
|
387
387
|
|
|
388
388
|
# No conflicts with Alice (different files)
|
|
389
389
|
|
|
390
390
|
# End of day: Complete
|
|
391
|
-
|
|
391
|
+
forge close SHOP-2 --reason "Implemented with SendGrid"
|
|
392
392
|
/ship
|
|
393
|
-
|
|
393
|
+
forge sync
|
|
394
394
|
|
|
395
395
|
# ═══════════════════════════════════════════════════════════
|
|
396
396
|
# CHARLIE: Admin Dashboard (Next Day)
|
|
@@ -398,17 +398,17 @@ bd sync
|
|
|
398
398
|
|
|
399
399
|
# Morning: Check dependencies
|
|
400
400
|
git pull
|
|
401
|
-
|
|
401
|
+
forge sync
|
|
402
402
|
|
|
403
|
-
|
|
403
|
+
forge show SHOP-3
|
|
404
404
|
# Output:
|
|
405
405
|
# Status: ready
|
|
406
406
|
# Depends on: (none)
|
|
407
407
|
|
|
408
|
-
|
|
408
|
+
forge claim SHOP-3
|
|
409
409
|
|
|
410
410
|
# Discovers overlap with Bob's work
|
|
411
|
-
bd comments SHOP-3 "Need Bob's email service for user notifications"
|
|
411
|
+
bd comments add SHOP-3 "Need Bob's email service for user notifications"
|
|
412
412
|
bd dep add SHOP-3 SHOP-2 # SHOP-3 depends on SHOP-2
|
|
413
413
|
|
|
414
414
|
# Bob's work already merged, so can proceed
|
|
@@ -428,7 +428,7 @@ bd blocked
|
|
|
428
428
|
# SHOP-1: Payment integration (blocked by SHOP-5)
|
|
429
429
|
|
|
430
430
|
# Find work with no blockers:
|
|
431
|
-
|
|
431
|
+
forge ready
|
|
432
432
|
|
|
433
433
|
# See full project status:
|
|
434
434
|
bd stats
|
|
@@ -440,7 +440,7 @@ bd stats
|
|
|
440
440
|
# Done: 4
|
|
441
441
|
|
|
442
442
|
# Always sync at end of session:
|
|
443
|
-
|
|
443
|
+
forge sync
|
|
444
444
|
```
|
|
445
445
|
|
|
446
446
|
**Result**: Team can work in parallel, track dependencies, and avoid conflicts.
|
|
@@ -465,8 +465,8 @@ bd sync
|
|
|
465
465
|
|
|
466
466
|
### 4. Team Collaboration
|
|
467
467
|
- Beads tracks dependencies
|
|
468
|
-
- `
|
|
469
|
-
- `
|
|
468
|
+
- `forge ready` finds available work
|
|
469
|
+
- `forge sync` at end of every session
|
|
470
470
|
- Comments keep teammates informed
|
|
471
471
|
|
|
472
472
|
---
|
package/docs/ROADMAP.md
CHANGED
|
@@ -291,8 +291,8 @@ All PRs tracked in Beads with proper dependencies:
|
|
|
291
291
|
| PR8 | forge-dwm | Blocked | P3 | PR7 |
|
|
292
292
|
| ~~Skills CLI~~ | ~~forge-mlm~~ | ~~Absorbed into PR5.5 + PR6 + PR8~~ | — | — |
|
|
293
293
|
|
|
294
|
-
**View all issues**: `
|
|
295
|
-
**View ready work**: `
|
|
294
|
+
**View all issues**: `forge list`
|
|
295
|
+
**View ready work**: `forge ready`
|
|
296
296
|
**View blocked issues**: `bd blocked`
|
|
297
297
|
|
|
298
298
|
### Git Workflow
|
|
@@ -348,7 +348,7 @@ Each PR is self-contained and can be rolled back independently:
|
|
|
348
348
|
## Resources
|
|
349
349
|
|
|
350
350
|
- **Master Plan**: `docs/plans/*.md`
|
|
351
|
-
- **Beads Issues**: `
|
|
351
|
+
- **Beads Issues**: `forge list` or `forge show <issue-id>`
|
|
352
352
|
- **Workflow Guide**: [AGENTS.md](../AGENTS.md)
|
|
353
353
|
- **Architecture Docs**: Coming in PR0 - [ARCHITECTURE.md](./ARCHITECTURE.md)
|
|
354
354
|
|