beth-copilot 1.0.4 → 1.0.5
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 +0 -0
- package/bin/cli.js +151 -9
- package/package.json +1 -1
- package/templates/.github/agents/beth.agent.md +0 -0
- package/templates/.github/agents/developer.agent.md +0 -0
- package/templates/.github/agents/product-manager.agent.md +0 -0
- package/templates/.github/agents/researcher.agent.md +0 -0
- package/templates/.github/agents/security-reviewer.agent.md +0 -0
- package/templates/.github/agents/tester.agent.md +0 -0
- package/templates/.github/agents/ux-designer.agent.md +0 -0
- package/templates/.github/copilot-instructions.md +0 -0
- package/templates/.github/skills/framer-components/SKILL.md +0 -0
- package/templates/.github/skills/prd/SKILL.md +0 -0
- package/templates/.github/skills/security-analysis/SKILL.md +0 -0
- package/templates/.github/skills/shadcn-ui/SKILL.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
- package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
- package/templates/.vscode/settings.json +16 -0
- package/templates/AGENTS.md +95 -70
- package/templates/Backlog.md +0 -0
- package/templates/mcp.json.example +0 -0
package/README.md
CHANGED
|
File without changes
|
package/bin/cli.js
CHANGED
|
@@ -84,6 +84,20 @@ function isBacklogCliInstalled() {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
function isBeadsInstalled() {
|
|
88
|
+
try {
|
|
89
|
+
execSync('bd --version', { stdio: 'ignore' });
|
|
90
|
+
return true;
|
|
91
|
+
} catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function isBeadsInitialized(cwd) {
|
|
97
|
+
// Check if .beads directory exists in the project
|
|
98
|
+
return existsSync(join(cwd, '.beads'));
|
|
99
|
+
}
|
|
100
|
+
|
|
87
101
|
async function promptYesNo(question) {
|
|
88
102
|
const readline = await import('readline');
|
|
89
103
|
const rl = readline.createInterface({
|
|
@@ -129,6 +143,63 @@ async function installBacklogCli() {
|
|
|
129
143
|
});
|
|
130
144
|
}
|
|
131
145
|
|
|
146
|
+
async function installBeads() {
|
|
147
|
+
log('\nInstalling beads CLI...', COLORS.cyan);
|
|
148
|
+
logInfo('curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash');
|
|
149
|
+
|
|
150
|
+
return new Promise((resolve) => {
|
|
151
|
+
const child = spawn('bash', ['-c', 'curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash'], {
|
|
152
|
+
stdio: 'inherit',
|
|
153
|
+
shell: true
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
child.on('close', (code) => {
|
|
157
|
+
if (code === 0) {
|
|
158
|
+
logSuccess('beads CLI installed successfully!');
|
|
159
|
+
resolve(true);
|
|
160
|
+
} else {
|
|
161
|
+
logError('Failed to install beads CLI.');
|
|
162
|
+
logInfo('Install manually: curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash');
|
|
163
|
+
logInfo('Learn more: https://github.com/steveyegge/beads');
|
|
164
|
+
resolve(false);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
child.on('error', () => {
|
|
169
|
+
logError('Failed to install beads CLI.');
|
|
170
|
+
logInfo('Install manually: curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash');
|
|
171
|
+
resolve(false);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async function initializeBeads(cwd) {
|
|
177
|
+
log('\nInitializing beads in project...', COLORS.cyan);
|
|
178
|
+
|
|
179
|
+
return new Promise((resolve) => {
|
|
180
|
+
const child = spawn('bd', ['init'], {
|
|
181
|
+
stdio: 'inherit',
|
|
182
|
+
shell: true,
|
|
183
|
+
cwd
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
child.on('close', (code) => {
|
|
187
|
+
if (code === 0) {
|
|
188
|
+
logSuccess('beads initialized successfully!');
|
|
189
|
+
resolve(true);
|
|
190
|
+
} else {
|
|
191
|
+
logWarning('Failed to initialize beads. Run manually: bd init');
|
|
192
|
+
resolve(false);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
child.on('error', () => {
|
|
197
|
+
logWarning('Failed to initialize beads. Run manually: bd init');
|
|
198
|
+
resolve(false);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
|
|
132
203
|
function showHelp() {
|
|
133
204
|
console.log(`
|
|
134
205
|
${COLORS.bright}Beth${COLORS.reset} - AI Orchestrator for GitHub Copilot
|
|
@@ -141,6 +212,7 @@ ${COLORS.bright}Options:${COLORS.reset}
|
|
|
141
212
|
--force Overwrite existing files
|
|
142
213
|
--skip-backlog Don't create Backlog.md
|
|
143
214
|
--skip-mcp Don't create mcp.json.example
|
|
215
|
+
--skip-beads Skip beads check (not recommended)
|
|
144
216
|
|
|
145
217
|
${COLORS.bright}Examples:${COLORS.reset}
|
|
146
218
|
npx beth-copilot init Set up Beth in current project
|
|
@@ -150,14 +222,15 @@ ${COLORS.bright}What gets installed:${COLORS.reset}
|
|
|
150
222
|
.github/agents/ 8 specialized AI agents
|
|
151
223
|
.github/skills/ 6 domain knowledge modules
|
|
152
224
|
.github/copilot-instructions.md Copilot configuration
|
|
225
|
+
.vscode/settings.json Recommended VS Code settings
|
|
153
226
|
AGENTS.md Workflow documentation
|
|
154
227
|
Backlog.md Task tracking file
|
|
155
228
|
mcp.json.example Optional MCP server config
|
|
156
229
|
|
|
157
230
|
${COLORS.bright}After installation:${COLORS.reset}
|
|
158
231
|
1. Open project in VS Code
|
|
159
|
-
2.
|
|
160
|
-
3. Type @Beth
|
|
232
|
+
2. Open Copilot Chat (Ctrl+Alt+I / Cmd+Alt+I)
|
|
233
|
+
3. Type @Beth to start working
|
|
161
234
|
|
|
162
235
|
${COLORS.bright}Documentation:${COLORS.reset}
|
|
163
236
|
https://github.com/stephschofield/beth
|
|
@@ -194,7 +267,7 @@ function copyDirRecursive(src, dest, options = {}) {
|
|
|
194
267
|
}
|
|
195
268
|
|
|
196
269
|
async function init(options = {}) {
|
|
197
|
-
const { force = false, skipBacklog = false, skipMcp = false } = options;
|
|
270
|
+
const { force = false, skipBacklog = false, skipMcp = false, skipBeads = false } = options;
|
|
198
271
|
const cwd = process.cwd();
|
|
199
272
|
|
|
200
273
|
// Check for updates
|
|
@@ -273,6 +346,28 @@ ${COLORS.cyan}"I don't do excuses. I do results."${COLORS.reset}
|
|
|
273
346
|
}
|
|
274
347
|
}
|
|
275
348
|
|
|
349
|
+
// Copy .vscode/settings.json (recommended settings for agent mode)
|
|
350
|
+
const vscodeSrc = join(TEMPLATES_DIR, '.vscode');
|
|
351
|
+
const vscodeDest = join(cwd, '.vscode');
|
|
352
|
+
|
|
353
|
+
if (existsSync(vscodeSrc)) {
|
|
354
|
+
if (!existsSync(vscodeDest)) {
|
|
355
|
+
mkdirSync(vscodeDest, { recursive: true });
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
const settingsSrc = join(vscodeSrc, 'settings.json');
|
|
359
|
+
const settingsDest = join(vscodeDest, 'settings.json');
|
|
360
|
+
|
|
361
|
+
if (existsSync(settingsSrc)) {
|
|
362
|
+
if (existsSync(settingsDest) && !force) {
|
|
363
|
+
logWarning('Skipped (exists): .vscode/settings.json');
|
|
364
|
+
} else {
|
|
365
|
+
copyFileSync(settingsSrc, settingsDest);
|
|
366
|
+
copiedFiles.push('.vscode/settings.json');
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
276
371
|
// Summary
|
|
277
372
|
console.log('');
|
|
278
373
|
if (copiedFiles.length > 0) {
|
|
@@ -282,10 +377,55 @@ ${COLORS.cyan}"I don't do excuses. I do results."${COLORS.reset}
|
|
|
282
377
|
logWarning('No files were copied. Use --force to overwrite existing files.');
|
|
283
378
|
}
|
|
284
379
|
|
|
285
|
-
// Check for
|
|
380
|
+
// Check for beads CLI (REQUIRED for Beth)
|
|
381
|
+
if (!skipBeads) {
|
|
382
|
+
console.log('');
|
|
383
|
+
log('Checking beads (required for task tracking)...', COLORS.cyan);
|
|
384
|
+
|
|
385
|
+
if (!isBeadsInstalled()) {
|
|
386
|
+
logWarning('beads CLI is not installed.');
|
|
387
|
+
logInfo('Beth requires beads for task tracking. Agents use it to coordinate work.');
|
|
388
|
+
logInfo('Learn more: https://github.com/steveyegge/beads');
|
|
389
|
+
console.log('');
|
|
390
|
+
|
|
391
|
+
const shouldInstallBeads = await promptYesNo('Install beads CLI now? (required)');
|
|
392
|
+
if (shouldInstallBeads) {
|
|
393
|
+
const installed = await installBeads();
|
|
394
|
+
if (!installed) {
|
|
395
|
+
logError('beads installation failed. Beth requires beads to function.');
|
|
396
|
+
logInfo('Install manually and run "beth init" again.');
|
|
397
|
+
process.exit(1);
|
|
398
|
+
}
|
|
399
|
+
} else {
|
|
400
|
+
logError('beads is required for Beth to function.');
|
|
401
|
+
logInfo('Install beads and run "beth init" again:');
|
|
402
|
+
logInfo(' curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash');
|
|
403
|
+
process.exit(1);
|
|
404
|
+
}
|
|
405
|
+
} else {
|
|
406
|
+
logSuccess('beads CLI is installed');
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// Initialize beads in the project if not already done
|
|
410
|
+
if (!isBeadsInitialized(cwd)) {
|
|
411
|
+
logInfo('beads not initialized in this project.');
|
|
412
|
+
const shouldInitBeads = await promptYesNo('Initialize beads now?');
|
|
413
|
+
if (shouldInitBeads) {
|
|
414
|
+
await initializeBeads(cwd);
|
|
415
|
+
} else {
|
|
416
|
+
logWarning('Remember to run "bd init" before using Beth.');
|
|
417
|
+
}
|
|
418
|
+
} else {
|
|
419
|
+
logSuccess('beads is initialized in this project');
|
|
420
|
+
}
|
|
421
|
+
} else {
|
|
422
|
+
logWarning('Skipped beads check (--skip-beads). Beth may not function correctly.');
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// Check for backlog.md CLI (optional)
|
|
286
426
|
if (!skipBacklog && !isBacklogCliInstalled()) {
|
|
287
427
|
console.log('');
|
|
288
|
-
logWarning('backlog.md CLI is not installed.');
|
|
428
|
+
logWarning('backlog.md CLI is not installed (optional).');
|
|
289
429
|
logInfo('The CLI provides TUI boards, web UI, and task management commands.');
|
|
290
430
|
logInfo('Learn more: https://github.com/MrLesk/Backlog.md');
|
|
291
431
|
console.log('');
|
|
@@ -304,9 +444,10 @@ ${COLORS.cyan}"I don't do excuses. I do results."${COLORS.reset}
|
|
|
304
444
|
console.log(`
|
|
305
445
|
${COLORS.bright}Next steps:${COLORS.reset}
|
|
306
446
|
1. Open this project in VS Code
|
|
307
|
-
2.
|
|
308
|
-
3.
|
|
309
|
-
|
|
447
|
+
2. Open Copilot Chat (${COLORS.cyan}Ctrl+Alt+I${COLORS.reset} / ${COLORS.cyan}Cmd+Alt+I${COLORS.reset})
|
|
448
|
+
3. Type ${COLORS.cyan}@Beth${COLORS.reset} to start - she's your orchestrator
|
|
449
|
+
|
|
450
|
+
${COLORS.bright}Pro tip:${COLORS.reset} Start every session with ${COLORS.cyan}@Beth${COLORS.reset} and let her route work to the right specialists.
|
|
310
451
|
|
|
311
452
|
${COLORS.bright}Documentation:${COLORS.reset}
|
|
312
453
|
https://github.com/stephschofield/beth
|
|
@@ -317,7 +458,7 @@ ${COLORS.cyan}"They broke my wings and forgot I had claws."${COLORS.reset}
|
|
|
317
458
|
|
|
318
459
|
// Input validation constants
|
|
319
460
|
const ALLOWED_COMMANDS = ['init', 'help', '--help', '-h'];
|
|
320
|
-
const ALLOWED_FLAGS = ['--force', '--skip-backlog', '--skip-mcp'];
|
|
461
|
+
const ALLOWED_FLAGS = ['--force', '--skip-backlog', '--skip-mcp', '--skip-beads'];
|
|
321
462
|
const MAX_ARG_LENGTH = 50;
|
|
322
463
|
|
|
323
464
|
// Validate and sanitize input
|
|
@@ -346,6 +487,7 @@ const options = {
|
|
|
346
487
|
force: args.includes('--force'),
|
|
347
488
|
skipBacklog: args.includes('--skip-backlog'),
|
|
348
489
|
skipMcp: args.includes('--skip-mcp'),
|
|
490
|
+
skipBeads: args.includes('--skip-beads'),
|
|
349
491
|
};
|
|
350
492
|
|
|
351
493
|
// Validate unknown flags
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md
CHANGED
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md
CHANGED
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md
CHANGED
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Beth Agent System - Recommended Settings
|
|
3
|
+
// These settings enable full agent orchestration capabilities
|
|
4
|
+
|
|
5
|
+
// Required: Allow Beth to delegate work to specialist agents
|
|
6
|
+
"chat.customAgentInSubagent.enabled": true,
|
|
7
|
+
|
|
8
|
+
// Enable agent mode in Copilot Chat
|
|
9
|
+
"chat.agent.enabled": true,
|
|
10
|
+
|
|
11
|
+
// Enable thinking/reasoning for complex tasks
|
|
12
|
+
"github.copilot.chat.agent.thinkingTool": true,
|
|
13
|
+
|
|
14
|
+
// Consistent locale for agent responses
|
|
15
|
+
"github.copilot.chat.localeOverride": "en"
|
|
16
|
+
}
|
package/templates/AGENTS.md
CHANGED
|
@@ -1,70 +1,95 @@
|
|
|
1
|
-
# Agent Instructions
|
|
2
|
-
|
|
3
|
-
This project uses
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
1
|
+
# Agent Instructions
|
|
2
|
+
|
|
3
|
+
This project uses a **dual tracking system**:
|
|
4
|
+
|
|
5
|
+
| Tool | Audience | Purpose |
|
|
6
|
+
|------|----------|---------|
|
|
7
|
+
| [beads](https://github.com/steveyegge/beads) (`bd`) | Agents | Active work, dependencies, blockers, structured memory |
|
|
8
|
+
| [Backlog.md](Backlog.md) | Humans | Completed work archive, decisions, readable changelog |
|
|
9
|
+
|
|
10
|
+
**The rule:** beads is always current. Backlog.md gets updated when work completes.
|
|
11
|
+
|
|
12
|
+
## Quick Setup
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Install beads
|
|
16
|
+
curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
|
|
17
|
+
|
|
18
|
+
# Initialize in your project
|
|
19
|
+
bd init
|
|
20
|
+
|
|
21
|
+
# Run doctor to verify setup
|
|
22
|
+
bd doctor
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Reference
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Simple task
|
|
29
|
+
bd create "Issue title" --description="What needs to be done" -l in_progress
|
|
30
|
+
|
|
31
|
+
# Epic for complex work
|
|
32
|
+
bd create "Feature name" --type epic -p 1
|
|
33
|
+
|
|
34
|
+
# Subtask with parent
|
|
35
|
+
bd create "Subtask" --parent <epic-id>
|
|
36
|
+
|
|
37
|
+
# Task with dependency
|
|
38
|
+
bd create "Blocked task" --deps "<blocker-id>"
|
|
39
|
+
|
|
40
|
+
# List issues / see what's ready
|
|
41
|
+
bd list
|
|
42
|
+
bd ready
|
|
43
|
+
|
|
44
|
+
# View dependencies
|
|
45
|
+
bd dep tree <id>
|
|
46
|
+
|
|
47
|
+
# Close an issue
|
|
48
|
+
bd close <id>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Workflow
|
|
52
|
+
|
|
53
|
+
### Simple Tasks
|
|
54
|
+
1. `bd create "Task" -l in_progress`
|
|
55
|
+
2. Do the work
|
|
56
|
+
3. `bd close <id>`
|
|
57
|
+
4. Update Backlog.md if significant
|
|
58
|
+
5. Commit and push
|
|
59
|
+
|
|
60
|
+
### Complex Work (Multi-Agent)
|
|
61
|
+
1. `bd create "Feature" --type epic -p 1`
|
|
62
|
+
2. Break into subtasks with `--parent` and `--deps`
|
|
63
|
+
3. `bd ready` to find unblocked work
|
|
64
|
+
4. Route to specialists with issue IDs
|
|
65
|
+
5. Close subtasks as they complete
|
|
66
|
+
6. `bd epic close-eligible` when all children done
|
|
67
|
+
7. Update Backlog.md with summary
|
|
68
|
+
8. Commit and push
|
|
69
|
+
|
|
70
|
+
## Landing the Plane (Session Completion)
|
|
71
|
+
|
|
72
|
+
**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
|
|
73
|
+
|
|
74
|
+
**MANDATORY WORKFLOW:**
|
|
75
|
+
|
|
76
|
+
1. **Close beads issues** - `bd close <id>` for completed work
|
|
77
|
+
2. **Create follow-up issues** - `bd create` for any remaining work
|
|
78
|
+
3. **Update Backlog.md** - Add summary to Completed section for significant work
|
|
79
|
+
4. **Run quality gates** (if code changed) - Tests, linters, builds
|
|
80
|
+
5. **PUSH TO REMOTE** - This is MANDATORY:
|
|
81
|
+
```bash
|
|
82
|
+
git add -A
|
|
83
|
+
git commit -m "description of work"
|
|
84
|
+
git pull --rebase
|
|
85
|
+
git push
|
|
86
|
+
git status # MUST show "up to date with origin"
|
|
87
|
+
```
|
|
88
|
+
6. **Verify** - All changes committed AND pushed
|
|
89
|
+
7. **Hand off** - Provide context for next session
|
|
90
|
+
|
|
91
|
+
**CRITICAL RULES:**
|
|
92
|
+
- Work is NOT complete until `git push` succeeds
|
|
93
|
+
- NEVER stop before pushing - that leaves work stranded locally
|
|
94
|
+
- NEVER say "ready to push when you are" - YOU must push
|
|
95
|
+
- If push fails, resolve and retry until it succeeds
|
package/templates/Backlog.md
CHANGED
|
File without changes
|
|
File without changes
|