bmad-fh 6.0.0-alpha.23.ca19da08 → 6.0.0-alpha.23.e19f7c6e
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
name: Publish
|
|
1
|
+
name: Publish
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
@@ -41,8 +41,8 @@ jobs:
|
|
|
41
41
|
env:
|
|
42
42
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
43
43
|
run: |
|
|
44
|
-
echo "Publishing bmad-fh@${{ steps.version.outputs.version }}
|
|
45
|
-
npm publish
|
|
44
|
+
echo "Publishing bmad-fh@${{ steps.version.outputs.version }}"
|
|
45
|
+
npm publish
|
|
46
46
|
|
|
47
47
|
- name: Summary
|
|
48
48
|
run: |
|
|
@@ -50,5 +50,5 @@ jobs:
|
|
|
50
50
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
51
51
|
echo "### Installation" >> $GITHUB_STEP_SUMMARY
|
|
52
52
|
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
|
|
53
|
-
echo "npx bmad-fh
|
|
53
|
+
echo "npx bmad-fh install" >> $GITHUB_STEP_SUMMARY
|
|
54
54
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Traditional AI tools do the thinking for you, producing average results. BMad ag
|
|
|
23
23
|
**Prerequisites**: [Node.js](https://nodejs.org) v20+
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
npx bmad-fh
|
|
26
|
+
npx bmad-fh install
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Follow the installer prompts to configure your project. Then run:
|
|
@@ -72,45 +72,45 @@ BMad supports running multiple workflows in parallel across different terminal s
|
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
74
|
# Initialize scope system
|
|
75
|
-
npx bmad-fh
|
|
75
|
+
npx bmad-fh scope init
|
|
76
76
|
|
|
77
77
|
# Create scopes for different services
|
|
78
|
-
npx bmad-fh
|
|
79
|
-
npx bmad-fh
|
|
78
|
+
npx bmad-fh scope create auth --name "Authentication Service"
|
|
79
|
+
npx bmad-fh scope create payments --name "Payment Processing" --deps auth
|
|
80
80
|
|
|
81
81
|
# Set the active scope for your session
|
|
82
|
-
npx bmad-fh
|
|
82
|
+
npx bmad-fh scope set auth
|
|
83
83
|
|
|
84
84
|
# Run workflows in parallel (different terminals)
|
|
85
85
|
# Terminal 1: Set scope to auth, run agent workflows
|
|
86
86
|
# Terminal 2: Set scope to payments, run agent workflows
|
|
87
87
|
|
|
88
88
|
# Share artifacts between scopes
|
|
89
|
-
npx bmad-fh
|
|
90
|
-
npx bmad-fh
|
|
89
|
+
npx bmad-fh scope sync-up auth # Promote to shared layer
|
|
90
|
+
npx bmad-fh scope sync-down payments # Pull shared updates
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
### CLI Reference
|
|
94
94
|
|
|
95
|
-
| Command
|
|
96
|
-
|
|
|
97
|
-
| `npx bmad-fh
|
|
98
|
-
| `npx bmad-fh
|
|
99
|
-
| `npx bmad-fh
|
|
100
|
-
| `npx bmad-fh
|
|
101
|
-
| `npx bmad-fh
|
|
102
|
-
| `npx bmad-fh
|
|
103
|
-
| `npx bmad-fh
|
|
104
|
-
| `npx bmad-fh
|
|
105
|
-
| `npx bmad-fh
|
|
106
|
-
| `npx bmad-fh
|
|
107
|
-
| `npx bmad-fh
|
|
108
|
-
| `npx bmad-fh
|
|
95
|
+
| Command | Description |
|
|
96
|
+
| ---------------------------------- | ------------------------------------------- |
|
|
97
|
+
| `npx bmad-fh scope init` | Initialize the scope system in your project |
|
|
98
|
+
| `npx bmad-fh scope list` | List all scopes (alias: `ls`) |
|
|
99
|
+
| `npx bmad-fh scope create <id>` | Create a new scope (alias: `new`) |
|
|
100
|
+
| `npx bmad-fh scope info <id>` | Show scope details (alias: `show`) |
|
|
101
|
+
| `npx bmad-fh scope set [id]` | Set active scope for session (alias: `use`) |
|
|
102
|
+
| `npx bmad-fh scope unset` | Clear active scope (alias: `clear`) |
|
|
103
|
+
| `npx bmad-fh scope remove <id>` | Remove a scope (aliases: `rm`, `delete`) |
|
|
104
|
+
| `npx bmad-fh scope archive <id>` | Archive a completed scope |
|
|
105
|
+
| `npx bmad-fh scope activate <id>` | Reactivate an archived scope |
|
|
106
|
+
| `npx bmad-fh scope sync-up <id>` | Promote artifacts to shared layer |
|
|
107
|
+
| `npx bmad-fh scope sync-down <id>` | Pull shared updates into scope |
|
|
108
|
+
| `npx bmad-fh scope help [cmd]` | Show help (add command for detailed help) |
|
|
109
109
|
|
|
110
110
|
### Create Options
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
npx bmad-fh
|
|
113
|
+
npx bmad-fh scope create auth \
|
|
114
114
|
--name "Authentication Service" \
|
|
115
115
|
--description "User auth, SSO, and session management" \
|
|
116
116
|
--deps users,notifications \
|
|
@@ -168,7 +168,7 @@ Workflows (run via agent menus like `CP` for Create PRD, `DS` for Dev Story) aut
|
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
170
|
# Set scope for your terminal session
|
|
171
|
-
npx bmad-fh
|
|
171
|
+
npx bmad-fh scope set auth
|
|
172
172
|
|
|
173
173
|
# Or use environment variable (useful for CI/CD)
|
|
174
174
|
export BMAD_SCOPE=auth
|
|
@@ -186,11 +186,11 @@ export BMAD_SCOPE=auth
|
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
188
|
# Show comprehensive help for all scope commands
|
|
189
|
-
npx bmad-fh
|
|
189
|
+
npx bmad-fh scope help
|
|
190
190
|
|
|
191
191
|
# Get detailed help for a specific command
|
|
192
|
-
npx bmad-fh
|
|
193
|
-
npx bmad-fh
|
|
192
|
+
npx bmad-fh scope help create
|
|
193
|
+
npx bmad-fh scope help sync-up
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
See [Multi-Scope Guide](docs/multi-scope-guide.md) for complete documentation.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-fh",
|
|
4
|
-
"version": "6.0.0-alpha.23.
|
|
4
|
+
"version": "6.0.0-alpha.23.e19f7c6e",
|
|
5
5
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agile",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
|
|
40
40
|
"lint:md": "markdownlint-cli2 \"**/*.md\"",
|
|
41
41
|
"prepare": "husky",
|
|
42
|
-
"publish
|
|
42
|
+
"publish": "npm publish",
|
|
43
43
|
"rebundle": "node tools/cli/bundlers/bundle-web.js rebundle",
|
|
44
44
|
"release:major": "gh workflow run \"Manual Release\" -f version_bump=major",
|
|
45
45
|
"release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor",
|
|
@@ -28,7 +28,7 @@ function formatDate(dateStr) {
|
|
|
28
28
|
*/
|
|
29
29
|
function displayScopeList(scopes) {
|
|
30
30
|
if (scopes.length === 0) {
|
|
31
|
-
console.log(chalk.yellow('\nNo scopes found. Create one with: npx bmad-fh
|
|
31
|
+
console.log(chalk.yellow('\nNo scopes found. Create one with: npx bmad-fh scope create <id>\n'));
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -121,7 +121,7 @@ async function handleList(projectRoot, options) {
|
|
|
121
121
|
const configExists = await fs.pathExists(path.join(projectRoot, '_bmad', '_config', 'scopes.yaml'));
|
|
122
122
|
|
|
123
123
|
if (!isInitialized || !configExists) {
|
|
124
|
-
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh
|
|
124
|
+
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh scope init\n'));
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
127
|
|
|
@@ -131,7 +131,7 @@ async function handleList(projectRoot, options) {
|
|
|
131
131
|
displayScopeList(scopes);
|
|
132
132
|
} catch (error) {
|
|
133
133
|
if (error.message.includes('does not exist')) {
|
|
134
|
-
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh
|
|
134
|
+
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh scope init\n'));
|
|
135
135
|
} else {
|
|
136
136
|
throw error;
|
|
137
137
|
}
|
|
@@ -241,7 +241,7 @@ async function handleCreate(projectRoot, scopeId, options) {
|
|
|
241
241
|
*/
|
|
242
242
|
async function handleInfo(projectRoot, scopeId) {
|
|
243
243
|
if (!scopeId) {
|
|
244
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
244
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope info <scope-id>'));
|
|
245
245
|
process.exit(1);
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -266,7 +266,7 @@ async function handleInfo(projectRoot, scopeId) {
|
|
|
266
266
|
*/
|
|
267
267
|
async function handleRemove(projectRoot, scopeId, options) {
|
|
268
268
|
if (!scopeId) {
|
|
269
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
269
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope remove <scope-id>'));
|
|
270
270
|
process.exit(1);
|
|
271
271
|
}
|
|
272
272
|
|
|
@@ -329,7 +329,7 @@ async function handleInit(projectRoot) {
|
|
|
329
329
|
console.log(` ${chalk.cyan('_bmad-output/_shared/')} - Shared knowledge layer`);
|
|
330
330
|
console.log(` ${chalk.cyan('_bmad/_events/')} - Event system`);
|
|
331
331
|
console.log();
|
|
332
|
-
console.log(chalk.cyan(' Next: npx bmad-fh
|
|
332
|
+
console.log(chalk.cyan(' Next: npx bmad-fh scope create <scope-id>'));
|
|
333
333
|
console.log();
|
|
334
334
|
}
|
|
335
335
|
|
|
@@ -338,7 +338,7 @@ async function handleInit(projectRoot) {
|
|
|
338
338
|
*/
|
|
339
339
|
async function handleArchive(projectRoot, scopeId) {
|
|
340
340
|
if (!scopeId) {
|
|
341
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
341
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope archive <scope-id>'));
|
|
342
342
|
process.exit(1);
|
|
343
343
|
}
|
|
344
344
|
|
|
@@ -355,7 +355,7 @@ async function handleArchive(projectRoot, scopeId) {
|
|
|
355
355
|
*/
|
|
356
356
|
async function handleActivate(projectRoot, scopeId) {
|
|
357
357
|
if (!scopeId) {
|
|
358
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
358
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope activate <scope-id>'));
|
|
359
359
|
process.exit(1);
|
|
360
360
|
}
|
|
361
361
|
|
|
@@ -372,7 +372,7 @@ async function handleActivate(projectRoot, scopeId) {
|
|
|
372
372
|
*/
|
|
373
373
|
async function handleSyncUp(projectRoot, scopeId, options) {
|
|
374
374
|
if (!scopeId) {
|
|
375
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
375
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope sync-up <scope-id>'));
|
|
376
376
|
process.exit(1);
|
|
377
377
|
}
|
|
378
378
|
|
|
@@ -501,7 +501,7 @@ async function handleSyncUp(projectRoot, scopeId, options) {
|
|
|
501
501
|
*/
|
|
502
502
|
async function handleSyncDown(projectRoot, scopeId, options) {
|
|
503
503
|
if (!scopeId) {
|
|
504
|
-
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh
|
|
504
|
+
console.error(chalk.red('Error: Scope ID is required. Usage: npx bmad-fh scope sync-down <scope-id>'));
|
|
505
505
|
process.exit(1);
|
|
506
506
|
}
|
|
507
507
|
|
|
@@ -637,7 +637,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
637
637
|
// Offer to change
|
|
638
638
|
const scopes = await manager.listScopes({ status: 'active' });
|
|
639
639
|
if (scopes.length === 0) {
|
|
640
|
-
console.log(chalk.yellow('No active scopes available. Create one with: npx bmad-fh
|
|
640
|
+
console.log(chalk.yellow('No active scopes available. Create one with: npx bmad-fh scope create <id>\n'));
|
|
641
641
|
return;
|
|
642
642
|
}
|
|
643
643
|
|
|
@@ -669,7 +669,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
669
669
|
|
|
670
670
|
if (scopes.length === 0) {
|
|
671
671
|
console.log(chalk.yellow('\nNo scopes available. Create one first:\n'));
|
|
672
|
-
console.log(` ${chalk.cyan('npx bmad-fh
|
|
672
|
+
console.log(` ${chalk.cyan('npx bmad-fh scope create <id>')}\n`);
|
|
673
673
|
return;
|
|
674
674
|
}
|
|
675
675
|
|
|
@@ -689,7 +689,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
689
689
|
}
|
|
690
690
|
} catch (error) {
|
|
691
691
|
if (error.message.includes('does not exist')) {
|
|
692
|
-
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh
|
|
692
|
+
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh scope init\n'));
|
|
693
693
|
return;
|
|
694
694
|
}
|
|
695
695
|
throw error;
|
|
@@ -714,7 +714,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
714
714
|
|
|
715
715
|
if (scope.status === 'archived') {
|
|
716
716
|
console.error(chalk.yellow(`\nWarning: Scope '${scopeId}' is archived. Activate it first with:`));
|
|
717
|
-
console.log(` ${chalk.cyan(`npx bmad-fh
|
|
717
|
+
console.log(` ${chalk.cyan(`npx bmad-fh scope activate ${scopeId}`)}\n`);
|
|
718
718
|
|
|
719
719
|
const proceed = await confirm({
|
|
720
720
|
message: 'Set as active scope anyway?',
|
|
@@ -728,7 +728,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
728
728
|
}
|
|
729
729
|
} catch (error) {
|
|
730
730
|
if (error.message.includes('does not exist')) {
|
|
731
|
-
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh
|
|
731
|
+
console.log(chalk.yellow('\nScope system not initialized. Run: npx bmad-fh scope init\n'));
|
|
732
732
|
return;
|
|
733
733
|
}
|
|
734
734
|
throw error;
|
|
@@ -737,7 +737,7 @@ async function handleSet(projectRoot, scopeId, options) {
|
|
|
737
737
|
// Write .bmad-scope file
|
|
738
738
|
const scopeContent = `# BMAD Active Scope Configuration
|
|
739
739
|
# This file is auto-generated. Do not edit manually.
|
|
740
|
-
# To change: npx bmad-fh
|
|
740
|
+
# To change: npx bmad-fh scope set <scope-id>
|
|
741
741
|
|
|
742
742
|
active_scope: ${scopeId}
|
|
743
743
|
set_at: "${new Date().toISOString()}"
|
|
@@ -832,51 +832,41 @@ function showHelp() {
|
|
|
832
832
|
// Quick Start
|
|
833
833
|
console.log(chalk.bold(' QUICK START\n'));
|
|
834
834
|
console.log(chalk.dim(' 1. Initialize the scope system:'));
|
|
835
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
835
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope init\n`);
|
|
836
836
|
console.log(chalk.dim(' 2. Create your first scope:'));
|
|
837
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
837
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create auth --name "Authentication Service"\n`);
|
|
838
838
|
console.log(chalk.dim(' 3. Set the active scope for your session:'));
|
|
839
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
839
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope set auth\n`);
|
|
840
840
|
console.log(chalk.dim(' 4. Run workflows - artifacts go to scope directory:'));
|
|
841
841
|
console.log(` Workflows automatically detect scope from .bmad-scope`);
|
|
842
842
|
console.log(` Your PRD, architecture, etc. are isolated in _bmad-output/auth/\n`);
|
|
843
843
|
console.log(chalk.dim(' Alternative: Use BMAD_SCOPE environment variable to override:\n'));
|
|
844
|
-
console.log(` ${chalk.green('$')} BMAD_SCOPE=auth npx bmad-fh
|
|
844
|
+
console.log(` ${chalk.green('$')} BMAD_SCOPE=auth npx bmad-fh ...\n`);
|
|
845
845
|
|
|
846
846
|
console.log(chalk.dim(' ─────────────────────────────────────────────────────────────────────────────\n'));
|
|
847
847
|
|
|
848
848
|
// Examples
|
|
849
849
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
850
850
|
console.log(chalk.dim(' Basic workflow:'));
|
|
851
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
852
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
853
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
854
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
851
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope init`);
|
|
852
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create auth --name "Auth" --description "User authentication"`);
|
|
853
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create payments --name "Payments" --deps auth`);
|
|
854
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope list\n`);
|
|
855
855
|
|
|
856
856
|
console.log(chalk.dim(' Parallel development (two terminals):'));
|
|
857
857
|
console.log(` ${chalk.green('# Terminal 1:')} ${chalk.green('# Terminal 2:')}`);
|
|
858
|
-
console.log(
|
|
859
|
-
` ${chalk.dim('$')} npx bmad-fh@multi-artifact scope create auth ${chalk.dim('$')} npx bmad-fh@multi-artifact scope create payments`,
|
|
860
|
-
);
|
|
858
|
+
console.log(` ${chalk.dim('$')} npx bmad-fh scope create auth ${chalk.dim('$')} npx bmad-fh scope create payments`);
|
|
861
859
|
console.log(` ${chalk.dim('# Run PRD workflow for auth')} ${chalk.dim('# Run PRD workflow for payments')}\n`);
|
|
862
860
|
|
|
863
861
|
console.log(chalk.dim(' Sharing artifacts between scopes:'));
|
|
864
|
-
console.log(
|
|
865
|
-
|
|
866
|
-
);
|
|
867
|
-
console.log(
|
|
868
|
-
` ${chalk.green('$')} npx bmad-fh@multi-artifact scope sync-down payments ${chalk.dim('# Pull shared updates into payments')}\n`,
|
|
869
|
-
);
|
|
862
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-up auth ${chalk.dim('# Promote auth artifacts to _shared/')}`);
|
|
863
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-down payments ${chalk.dim('# Pull shared updates into payments')}\n`);
|
|
870
864
|
|
|
871
865
|
console.log(chalk.dim(' Lifecycle management:'));
|
|
872
|
-
console.log(
|
|
873
|
-
|
|
874
|
-
);
|
|
875
|
-
console.log(
|
|
876
|
-
` ${chalk.green('$')} npx bmad-fh@multi-artifact scope activate auth ${chalk.dim('# Reactivate if needed later')}`,
|
|
877
|
-
);
|
|
878
|
-
console.log(` ${chalk.green('$')} npx bmad-fh@multi-artifact scope remove auth ${chalk.dim('# Remove with backup')}`);
|
|
879
|
-
console.log(` ${chalk.green('$')} npx bmad-fh@multi-artifact scope remove auth --force --no-backup ${chalk.dim('# Force remove')}\n`);
|
|
866
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope archive auth ${chalk.dim('# Archive when feature is complete')}`);
|
|
867
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope activate auth ${chalk.dim('# Reactivate if needed later')}`);
|
|
868
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope remove auth ${chalk.dim('# Remove with backup')}`);
|
|
869
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope remove auth --force --no-backup ${chalk.dim('# Force remove')}\n`);
|
|
880
870
|
|
|
881
871
|
console.log(chalk.dim(' ─────────────────────────────────────────────────────────────────────────────\n'));
|
|
882
872
|
|
|
@@ -973,7 +963,7 @@ function showHelp() {
|
|
|
973
963
|
// Troubleshooting
|
|
974
964
|
console.log(chalk.bold(' TROUBLESHOOTING\n'));
|
|
975
965
|
console.log(chalk.dim(' "Scope system not initialized":'));
|
|
976
|
-
console.log(` Run: ${chalk.cyan('npx bmad-fh
|
|
966
|
+
console.log(` Run: ${chalk.cyan('npx bmad-fh scope init')}\n`);
|
|
977
967
|
|
|
978
968
|
console.log(chalk.dim(' "Cannot write to scope X while in scope Y":'));
|
|
979
969
|
console.log(' You are in strict isolation mode. Either:');
|
|
@@ -982,7 +972,7 @@ function showHelp() {
|
|
|
982
972
|
console.log(' • Change isolation_mode in scopes.yaml (not recommended)\n');
|
|
983
973
|
|
|
984
974
|
console.log(chalk.dim(' "No scope set" when running workflow:'));
|
|
985
|
-
console.log(` • Create and use a scope: ${chalk.cyan('npx bmad-fh
|
|
975
|
+
console.log(` • Create and use a scope: ${chalk.cyan('npx bmad-fh scope create myfeature')}`);
|
|
986
976
|
console.log(' • Or run workflow with --scope flag\n');
|
|
987
977
|
|
|
988
978
|
console.log(chalk.dim(' "Circular dependency detected":'));
|
|
@@ -995,11 +985,9 @@ function showHelp() {
|
|
|
995
985
|
|
|
996
986
|
// More Help
|
|
997
987
|
console.log(chalk.bold(' MORE HELP\n'));
|
|
998
|
-
console.log(` ${chalk.cyan('npx bmad-fh
|
|
999
|
-
console.log(` ${chalk.cyan('npx bmad-fh
|
|
1000
|
-
console.log(
|
|
1001
|
-
` ${chalk.cyan('npx bmad-fh@multi-artifact scope help sync-up')} ${chalk.dim('# Detailed help for sync operations')}\n`,
|
|
1002
|
-
);
|
|
988
|
+
console.log(` ${chalk.cyan('npx bmad-fh scope help init')} ${chalk.dim('# Detailed help for init command')}`);
|
|
989
|
+
console.log(` ${chalk.cyan('npx bmad-fh scope help create')} ${chalk.dim('# Detailed help for create command')}`);
|
|
990
|
+
console.log(` ${chalk.cyan('npx bmad-fh scope help sync-up')} ${chalk.dim('# Detailed help for sync operations')}\n`);
|
|
1003
991
|
|
|
1004
992
|
console.log(chalk.dim(' Documentation:'));
|
|
1005
993
|
console.log(` • Multi-Scope Guide: ${chalk.cyan('docs/multi-scope-guide.md')}`);
|
|
@@ -1018,7 +1006,7 @@ function showHelpInit() {
|
|
|
1018
1006
|
console.log(' necessary configuration files and directory structure for scope management.\n');
|
|
1019
1007
|
|
|
1020
1008
|
console.log(chalk.bold(' USAGE\n'));
|
|
1021
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1009
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope init\n`);
|
|
1022
1010
|
|
|
1023
1011
|
console.log(chalk.bold(' WHAT IT CREATES\n'));
|
|
1024
1012
|
console.log(` ${chalk.cyan('_bmad/_config/scopes.yaml')} Configuration file with scope registry`);
|
|
@@ -1032,7 +1020,7 @@ function showHelpInit() {
|
|
|
1032
1020
|
|
|
1033
1021
|
console.log(chalk.bold(' EXAMPLE\n'));
|
|
1034
1022
|
console.log(` ${chalk.green('$')} cd my-project`);
|
|
1035
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1023
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope init`);
|
|
1036
1024
|
console.log(` ${chalk.dim('✓ Scope system initialized successfully!')}\n`);
|
|
1037
1025
|
}
|
|
1038
1026
|
|
|
@@ -1049,7 +1037,7 @@ function showHelpCreate() {
|
|
|
1049
1037
|
console.log(' other scopes.\n');
|
|
1050
1038
|
|
|
1051
1039
|
console.log(chalk.bold(' USAGE\n'));
|
|
1052
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1040
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create [id] [options]\n`);
|
|
1053
1041
|
|
|
1054
1042
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1055
1043
|
console.log(` ${chalk.cyan('id')} Scope identifier (lowercase letters, numbers, hyphens)`);
|
|
@@ -1080,13 +1068,13 @@ function showHelpCreate() {
|
|
|
1080
1068
|
|
|
1081
1069
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1082
1070
|
console.log(chalk.dim(' Interactive mode (prompts for all fields):'));
|
|
1083
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1071
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create\n`);
|
|
1084
1072
|
|
|
1085
1073
|
console.log(chalk.dim(' Quick create with ID only:'));
|
|
1086
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1074
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create auth\n`);
|
|
1087
1075
|
|
|
1088
1076
|
console.log(chalk.dim(' Full specification:'));
|
|
1089
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1077
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope create payments \\`);
|
|
1090
1078
|
console.log(` --name "Payment Processing" \\`);
|
|
1091
1079
|
console.log(` --description "Stripe integration, invoicing, subscriptions" \\`);
|
|
1092
1080
|
console.log(` --deps auth,users \\`);
|
|
@@ -1111,8 +1099,8 @@ function showHelpList() {
|
|
|
1111
1099
|
console.log(' List all scopes in the project with their status and metadata.\n');
|
|
1112
1100
|
|
|
1113
1101
|
console.log(chalk.bold(' USAGE\n'));
|
|
1114
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1115
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1102
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope list [options]`);
|
|
1103
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope ls [options] ${chalk.dim('# alias')}\n`);
|
|
1116
1104
|
|
|
1117
1105
|
console.log(chalk.bold(' OPTIONS\n'));
|
|
1118
1106
|
console.log(` ${chalk.cyan('-s, --status')} ${chalk.dim('<status>')}`);
|
|
@@ -1127,13 +1115,13 @@ function showHelpList() {
|
|
|
1127
1115
|
|
|
1128
1116
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1129
1117
|
console.log(chalk.dim(' List all scopes:'));
|
|
1130
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1118
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope list\n`);
|
|
1131
1119
|
|
|
1132
1120
|
console.log(chalk.dim(' List only active scopes:'));
|
|
1133
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1121
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope list --status active\n`);
|
|
1134
1122
|
|
|
1135
1123
|
console.log(chalk.dim(' List archived scopes:'));
|
|
1136
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1124
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope ls -s archived\n`);
|
|
1137
1125
|
}
|
|
1138
1126
|
|
|
1139
1127
|
/**
|
|
@@ -1148,9 +1136,9 @@ function showHelpInfo() {
|
|
|
1148
1136
|
console.log(' dependencies, dependents, and metadata.\n');
|
|
1149
1137
|
|
|
1150
1138
|
console.log(chalk.bold(' USAGE\n'));
|
|
1151
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1152
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1153
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1139
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope info <id>`);
|
|
1140
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope show <id> ${chalk.dim('# alias')}`);
|
|
1141
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope <id> ${chalk.dim('# shorthand')}\n`);
|
|
1154
1142
|
|
|
1155
1143
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1156
1144
|
console.log(` ${chalk.cyan('id')} Scope identifier (required)\n`);
|
|
@@ -1164,8 +1152,8 @@ function showHelpInfo() {
|
|
|
1164
1152
|
console.log(' • Dependents: Scopes that depend on this scope\n');
|
|
1165
1153
|
|
|
1166
1154
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1167
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1168
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1155
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope info auth`);
|
|
1156
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope auth ${chalk.dim('# shorthand')}\n`);
|
|
1169
1157
|
}
|
|
1170
1158
|
|
|
1171
1159
|
/**
|
|
@@ -1180,9 +1168,9 @@ function showHelpRemove() {
|
|
|
1180
1168
|
console.log(' before removal and prompts for confirmation.\n');
|
|
1181
1169
|
|
|
1182
1170
|
console.log(chalk.bold(' USAGE\n'));
|
|
1183
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1184
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1185
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1171
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope remove <id> [options]`);
|
|
1172
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope rm <id> ${chalk.dim('# alias')}`);
|
|
1173
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope delete <id> ${chalk.dim('# alias')}\n`);
|
|
1186
1174
|
|
|
1187
1175
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1188
1176
|
console.log(` ${chalk.cyan('id')} Scope identifier to remove (required)\n`);
|
|
@@ -1200,13 +1188,13 @@ function showHelpRemove() {
|
|
|
1200
1188
|
|
|
1201
1189
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1202
1190
|
console.log(chalk.dim(' Safe removal (prompts, creates backup):'));
|
|
1203
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1191
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope remove auth\n`);
|
|
1204
1192
|
|
|
1205
1193
|
console.log(chalk.dim(' Force removal without prompt (still creates backup):'));
|
|
1206
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1194
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope rm auth --force\n`);
|
|
1207
1195
|
|
|
1208
1196
|
console.log(chalk.dim(' Permanent removal (no backup, no prompt):'));
|
|
1209
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1197
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope delete auth --force --no-backup\n`);
|
|
1210
1198
|
|
|
1211
1199
|
console.log(chalk.bold(' CONSIDERATIONS\n'));
|
|
1212
1200
|
console.log(' • Check dependents first: scopes depending on this will have broken deps');
|
|
@@ -1226,7 +1214,7 @@ function showHelpArchive() {
|
|
|
1226
1214
|
console.log(' retain all artifacts. Use this for completed features or paused work.\n');
|
|
1227
1215
|
|
|
1228
1216
|
console.log(chalk.bold(' USAGE\n'));
|
|
1229
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1217
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope archive <id>\n`);
|
|
1230
1218
|
|
|
1231
1219
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1232
1220
|
console.log(` ${chalk.cyan('id')} Scope identifier to archive (required)\n`);
|
|
@@ -1238,9 +1226,9 @@ function showHelpArchive() {
|
|
|
1238
1226
|
console.log(' • Can be reactivated with "scope activate"\n');
|
|
1239
1227
|
|
|
1240
1228
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1241
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1229
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope archive auth`);
|
|
1242
1230
|
console.log(` ${chalk.dim("✓ Scope 'auth' archived.")}\n`);
|
|
1243
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1231
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope list --status archived`);
|
|
1244
1232
|
console.log(` ${chalk.dim('# Shows auth in archived list')}\n`);
|
|
1245
1233
|
}
|
|
1246
1234
|
|
|
@@ -1256,13 +1244,13 @@ function showHelpActivate() {
|
|
|
1256
1244
|
console.log(' and can be used for workflows again.\n');
|
|
1257
1245
|
|
|
1258
1246
|
console.log(chalk.bold(' USAGE\n'));
|
|
1259
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1247
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope activate <id>\n`);
|
|
1260
1248
|
|
|
1261
1249
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1262
1250
|
console.log(` ${chalk.cyan('id')} Scope identifier to activate (required)\n`);
|
|
1263
1251
|
|
|
1264
1252
|
console.log(chalk.bold(' EXAMPLE\n'));
|
|
1265
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1253
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope activate auth`);
|
|
1266
1254
|
console.log(` ${chalk.dim("✓ Scope 'auth' activated.")}\n`);
|
|
1267
1255
|
}
|
|
1268
1256
|
|
|
@@ -1279,7 +1267,7 @@ function showHelpSyncUp() {
|
|
|
1279
1267
|
console.log(' principles with other scopes.\n');
|
|
1280
1268
|
|
|
1281
1269
|
console.log(chalk.bold(' USAGE\n'));
|
|
1282
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1270
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-up <id> [options]\n`);
|
|
1283
1271
|
|
|
1284
1272
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1285
1273
|
console.log(` ${chalk.cyan('id')} Scope identifier to sync from (required)\n`);
|
|
@@ -1301,7 +1289,7 @@ function showHelpSyncUp() {
|
|
|
1301
1289
|
console.log(' • backup-and-update - Backup shared, use scope version\n');
|
|
1302
1290
|
|
|
1303
1291
|
console.log(chalk.bold(' EXAMPLE\n'));
|
|
1304
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1292
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-up auth`);
|
|
1305
1293
|
console.log(` ${chalk.dim('Promoted 3 files to _shared/')}`);
|
|
1306
1294
|
console.log(` ${chalk.dim(' architecture/auth-design.md')}`);
|
|
1307
1295
|
console.log(` ${chalk.dim(' contracts/auth-api.md')}`);
|
|
@@ -1320,7 +1308,7 @@ function showHelpSyncDown() {
|
|
|
1320
1308
|
console.log(' the latest shared architecture, contracts, and context into your scope.\n');
|
|
1321
1309
|
|
|
1322
1310
|
console.log(chalk.bold(' USAGE\n'));
|
|
1323
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1311
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-down <id> [options]\n`);
|
|
1324
1312
|
|
|
1325
1313
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1326
1314
|
console.log(` ${chalk.cyan('id')} Scope identifier to sync to (required)\n`);
|
|
@@ -1336,7 +1324,7 @@ function showHelpSyncDown() {
|
|
|
1336
1324
|
console.log(' • backup-and-update - Backup scope, use shared version\n');
|
|
1337
1325
|
|
|
1338
1326
|
console.log(chalk.bold(' EXAMPLE\n'));
|
|
1339
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1327
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope sync-down payments`);
|
|
1340
1328
|
console.log(` ${chalk.dim('Pulled 2 updates from _shared/')}`);
|
|
1341
1329
|
console.log(` ${chalk.dim(' contracts/auth-api.md (new)')}`);
|
|
1342
1330
|
console.log(` ${chalk.dim(' project-context.md (merged)')}\n`);
|
|
@@ -1354,8 +1342,8 @@ function showHelpSet() {
|
|
|
1354
1342
|
console.log(' your project root that workflows automatically detect and use.\n');
|
|
1355
1343
|
|
|
1356
1344
|
console.log(chalk.bold(' USAGE\n'));
|
|
1357
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1358
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1345
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope set [id]`);
|
|
1346
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope use [id] ${chalk.dim('# alias')}\n`);
|
|
1359
1347
|
|
|
1360
1348
|
console.log(chalk.bold(' ARGUMENTS\n'));
|
|
1361
1349
|
console.log(` ${chalk.cyan('id')} Scope identifier to set as active (optional)`);
|
|
@@ -1369,13 +1357,13 @@ function showHelpSet() {
|
|
|
1369
1357
|
|
|
1370
1358
|
console.log(chalk.bold(' EXAMPLES\n'));
|
|
1371
1359
|
console.log(chalk.dim(' Set a specific scope:'));
|
|
1372
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1360
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope set auth\n`);
|
|
1373
1361
|
|
|
1374
1362
|
console.log(chalk.dim(' Interactive selection (shows current and prompts):'));
|
|
1375
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1363
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope set\n`);
|
|
1376
1364
|
|
|
1377
1365
|
console.log(chalk.dim(' Override with environment variable:'));
|
|
1378
|
-
console.log(` ${chalk.green('$')} BMAD_SCOPE=payments npx bmad-fh
|
|
1366
|
+
console.log(` ${chalk.green('$')} BMAD_SCOPE=payments npx bmad-fh ...\n`);
|
|
1379
1367
|
|
|
1380
1368
|
console.log(chalk.bold(' FILE FORMAT\n'));
|
|
1381
1369
|
console.log(' The .bmad-scope file contains:');
|
|
@@ -1395,8 +1383,8 @@ function showHelpUnset() {
|
|
|
1395
1383
|
console.log(' workflows will prompt for scope selection.\n');
|
|
1396
1384
|
|
|
1397
1385
|
console.log(chalk.bold(' USAGE\n'));
|
|
1398
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1399
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1386
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope unset`);
|
|
1387
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope clear ${chalk.dim('# alias')}\n`);
|
|
1400
1388
|
|
|
1401
1389
|
console.log(chalk.bold(' BEHAVIOR\n'));
|
|
1402
1390
|
console.log(' • Removes .bmad-scope file from project root');
|
|
@@ -1404,7 +1392,7 @@ function showHelpUnset() {
|
|
|
1404
1392
|
console.log(' • Does nothing if no scope is currently set\n');
|
|
1405
1393
|
|
|
1406
1394
|
console.log(chalk.bold(' EXAMPLE\n'));
|
|
1407
|
-
console.log(` ${chalk.green('$')} npx bmad-fh
|
|
1395
|
+
console.log(` ${chalk.green('$')} npx bmad-fh scope unset`);
|
|
1408
1396
|
console.log(` ${chalk.dim('✓ Active scope cleared.')}\n`);
|
|
1409
1397
|
}
|
|
1410
1398
|
|
|
@@ -1440,7 +1428,7 @@ function showSubcommandHelp(subcommand) {
|
|
|
1440
1428
|
helpFunctions[subcommand]();
|
|
1441
1429
|
} else {
|
|
1442
1430
|
console.log(chalk.red(`\n Unknown command: ${subcommand}\n`));
|
|
1443
|
-
console.log(` Run ${chalk.cyan('npx bmad-fh
|
|
1431
|
+
console.log(` Run ${chalk.cyan('npx bmad-fh scope help')} to see available commands.\n`);
|
|
1444
1432
|
}
|
|
1445
1433
|
}
|
|
1446
1434
|
|