musubi-sdd 6.2.2 → 6.3.1
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.ja.md +44 -5
- package/README.md +44 -5
- package/bin/musubi-dashboard.js +22 -13
- package/bin/musubi-design.js +3 -3
- package/bin/musubi-gaps.js +9 -9
- package/bin/musubi-init.js +16 -1310
- package/bin/musubi-requirements.js +1 -1
- package/bin/musubi-tasks.js +5 -5
- package/bin/musubi-trace.js +23 -23
- package/bin/musubi-upgrade.js +7 -2
- package/bin/musubi.js +1 -1
- package/package.json +2 -2
- package/src/analyzers/gap-detector.js +3 -3
- package/src/analyzers/traceability.js +17 -17
- package/src/cli/dashboard-cli.js +54 -60
- package/src/cli/init-generators.js +464 -0
- package/src/cli/init-helpers.js +884 -0
- package/src/constitutional/checker.js +67 -65
- package/src/constitutional/ci-reporter.js +50 -43
- package/src/constitutional/index.js +2 -2
- package/src/constitutional/phase-minus-one.js +22 -25
- package/src/constitutional/steering-sync.js +28 -39
- package/src/dashboard/index.js +2 -2
- package/src/dashboard/sprint-planner.js +17 -19
- package/src/dashboard/sprint-reporter.js +46 -37
- package/src/dashboard/transition-recorder.js +12 -18
- package/src/dashboard/workflow-dashboard.js +27 -38
- package/src/enterprise/error-recovery.js +109 -49
- package/src/enterprise/experiment-report.js +62 -36
- package/src/enterprise/index.js +5 -5
- package/src/enterprise/rollback-manager.js +28 -29
- package/src/enterprise/tech-article.js +41 -35
- package/src/generators/design.js +8 -3
- package/src/generators/requirements.js +5 -3
- package/src/generators/tasks.js +2 -2
- package/src/integrations/platforms.js +1 -1
- package/src/templates/agents/claude-code/CLAUDE.md +3 -3
- package/src/templates/agents/claude-code/commands/sdd-change-init.md +1 -1
- package/src/templates/agents/claude-code/commands/sdd-design.md +8 -8
- package/src/templates/agents/claude-code/commands/sdd-implement.md +4 -4
- package/src/templates/agents/claude-code/commands/sdd-tasks.md +7 -7
- package/src/templates/agents/claude-code/commands/sdd-validate.md +2 -2
- package/src/templates/agents/claude-code/skills/design-reviewer/SKILL.md +132 -113
- package/src/templates/agents/claude-code/skills/requirements-reviewer/SKILL.md +85 -56
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +1 -1
- package/src/templates/agents/claude-code/skills/traceability-auditor/SKILL.md +2 -2
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +2 -2
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +1 -1
- package/src/templates/agents/codex/AGENTS.md +2 -2
- package/src/templates/agents/codex/commands/sdd-change-init.md +1 -1
- package/src/templates/agents/codex/commands/sdd-design.md +8 -8
- package/src/templates/agents/codex/commands/sdd-implement.md +4 -4
- package/src/templates/agents/codex/commands/sdd-tasks.md +7 -7
- package/src/templates/agents/codex/commands/sdd-validate.md +2 -2
- package/src/templates/agents/cursor/AGENTS.md +2 -2
- package/src/templates/agents/cursor/commands/sdd-change-init.md +1 -1
- package/src/templates/agents/cursor/commands/sdd-design.md +8 -8
- package/src/templates/agents/cursor/commands/sdd-implement.md +4 -4
- package/src/templates/agents/cursor/commands/sdd-tasks.md +7 -7
- package/src/templates/agents/cursor/commands/sdd-validate.md +2 -2
- package/src/templates/agents/gemini-cli/GEMINI.md +2 -2
- package/src/templates/agents/gemini-cli/commands/sdd-design.toml +2 -2
- package/src/templates/agents/gemini-cli/commands/sdd-implement.toml +2 -2
- package/src/templates/agents/gemini-cli/commands/sdd-tasks.toml +3 -3
- package/src/templates/agents/gemini-cli/commands/sdd-validate.toml +2 -2
- package/src/templates/agents/github-copilot/AGENTS.md +2 -2
- package/src/templates/agents/github-copilot/commands/sdd-change-init.prompt.md +1 -1
- package/src/templates/agents/github-copilot/commands/sdd-design.prompt.md +8 -8
- package/src/templates/agents/github-copilot/commands/sdd-implement.prompt.md +4 -4
- package/src/templates/agents/github-copilot/commands/sdd-requirements.prompt.md +23 -4
- package/src/templates/agents/github-copilot/commands/sdd-tasks.prompt.md +7 -7
- package/src/templates/agents/github-copilot/commands/sdd-validate.prompt.md +2 -2
- package/src/templates/agents/qwen-code/QWEN.md +2 -2
- package/src/templates/agents/qwen-code/commands/sdd-change-init.md +1 -1
- package/src/templates/agents/qwen-code/commands/sdd-design.md +8 -8
- package/src/templates/agents/qwen-code/commands/sdd-implement.md +4 -4
- package/src/templates/agents/qwen-code/commands/sdd-tasks.md +7 -7
- package/src/templates/agents/qwen-code/commands/sdd-validate.md +2 -2
- package/src/templates/agents/shared/AGENTS.md +1 -1
- package/src/templates/agents/windsurf/AGENTS.md +2 -2
- package/src/templates/agents/windsurf/commands/sdd-change-init.md +1 -1
- package/src/templates/agents/windsurf/commands/sdd-design.md +8 -8
- package/src/templates/agents/windsurf/commands/sdd-implement.md +4 -4
- package/src/templates/agents/windsurf/commands/sdd-tasks.md +7 -7
- package/src/templates/agents/windsurf/commands/sdd-validate.md +2 -2
- package/src/templates/skills/browser-agent.md +1 -1
- package/src/traceability/extractor.js +21 -20
- package/src/traceability/gap-detector.js +19 -17
- package/src/traceability/index.js +2 -2
- package/src/traceability/matrix-storage.js +20 -22
- package/src/validators/constitution.js +5 -2
- package/src/validators/critic-system.js +6 -6
- package/src/validators/traceability-validator.js +3 -3
package/README.ja.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**究極の仕様駆動開発ツール**
|
|
6
6
|
|
|
7
|
-
[](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
9
9
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -71,6 +71,45 @@ musubi init --windsurf # Windsurf IDE
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
+
## 📊 v6.3.0 の新機能
|
|
75
|
+
|
|
76
|
+
### SDD ドキュメントパス統一 📂
|
|
77
|
+
|
|
78
|
+
ドキュメント種別の完全な分離による整理と明確化。
|
|
79
|
+
|
|
80
|
+
#### ストレージ構造
|
|
81
|
+
|
|
82
|
+
| ドキュメント種別 | 保存先 | ファイル名パターン |
|
|
83
|
+
|----------------|--------|-------------------|
|
|
84
|
+
| **要件定義書** | `storage/specs/` | `{feature}-requirements.md` |
|
|
85
|
+
| **設計書** | `storage/design/` | `{feature}-design.md` |
|
|
86
|
+
| **タスク** | `storage/tasks/` | `{feature}-tasks.md` |
|
|
87
|
+
| **検証レポート** | `storage/validation/` | `{feature}-validation-report.md` |
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
storage/
|
|
91
|
+
├── specs/ # 要件定義書のみ
|
|
92
|
+
│ └── auth-requirements.md
|
|
93
|
+
├── design/ # 設計書のみ
|
|
94
|
+
│ └── auth-design.md
|
|
95
|
+
├── tasks/ # タスクのみ
|
|
96
|
+
│ └── auth-tasks.md
|
|
97
|
+
└── validation/ # 検証レポート
|
|
98
|
+
└── auth-validation-report.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### 全7エージェントプラットフォーム更新
|
|
102
|
+
|
|
103
|
+
全プロンプト・テンプレートを正しい保存先パスに更新:
|
|
104
|
+
- Claude Code, GitHub Copilot, Cursor, Gemini CLI, Codex CLI, Qwen Code, Windsurf
|
|
105
|
+
|
|
106
|
+
#### テスト結果
|
|
107
|
+
|
|
108
|
+
- **単体テスト**: 4,827件パス ✅
|
|
109
|
+
- **統合テスト**: 660件パス ✅
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
74
113
|
## 📊 v6.2.0 の新機能
|
|
75
114
|
|
|
76
115
|
### Review Gate Engine 🛡️
|
|
@@ -907,8 +946,8 @@ AND システムSHALLセッションを作成する。
|
|
|
907
946
|
**仕様**:
|
|
908
947
|
|
|
909
948
|
- `storage/specs/auth-requirements.md` + `storage/specs/auth-requirements.ja.md`
|
|
910
|
-
- `storage/
|
|
911
|
-
- `storage/
|
|
949
|
+
- `storage/design/auth-design.md` + `storage/design/auth-design.ja.md`
|
|
950
|
+
- `storage/tasks/auth-tasks.md` + `storage/tasks/auth-tasks.ja.md`
|
|
912
951
|
|
|
913
952
|
### 生成順序
|
|
914
953
|
|
|
@@ -1107,7 +1146,7 @@ steering/rules/constitution.md
|
|
|
1107
1146
|
|
|
1108
1147
|
```bash
|
|
1109
1148
|
# リポジトリをクローン
|
|
1110
|
-
git clone https://github.com/
|
|
1149
|
+
git clone https://github.com/nahisaho/MUSUBI.git
|
|
1111
1150
|
cd musubi
|
|
1112
1151
|
|
|
1113
1152
|
# 依存関係をインストール
|
|
@@ -1163,7 +1202,7 @@ MUSUBIは以下のフレームワークから機能を統合しています。
|
|
|
1163
1202
|
|
|
1164
1203
|
**🎋 MUSUBI** - むすび - 仕様、設計、コードを結びつける。
|
|
1165
1204
|
|
|
1166
|
-
[](https://github.com/nahisaho/
|
|
1205
|
+
[](https://github.com/nahisaho/MUSUBI)
|
|
1167
1206
|
|
|
1168
1207
|
Made with ❤️ for the AI Coding Community
|
|
1169
1208
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Ultimate Specification Driven Development Tool**
|
|
6
6
|
|
|
7
|
-
[](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
9
9
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -71,6 +71,45 @@ musubi init --windsurf # Windsurf IDE
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
+
## 📊 What's New in v6.3.0
|
|
75
|
+
|
|
76
|
+
### SDD Document Path Unification 📂
|
|
77
|
+
|
|
78
|
+
Complete separation of document types for better organization and clarity.
|
|
79
|
+
|
|
80
|
+
#### Storage Structure
|
|
81
|
+
|
|
82
|
+
| Document Type | Storage Path | Naming Pattern |
|
|
83
|
+
|---------------|--------------|----------------|
|
|
84
|
+
| **Requirements** | `storage/specs/` | `{feature}-requirements.md` |
|
|
85
|
+
| **Design** | `storage/design/` | `{feature}-design.md` |
|
|
86
|
+
| **Tasks** | `storage/tasks/` | `{feature}-tasks.md` |
|
|
87
|
+
| **Validation** | `storage/validation/` | `{feature}-validation-report.md` |
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
storage/
|
|
91
|
+
├── specs/ # Requirements only
|
|
92
|
+
│ └── auth-requirements.md
|
|
93
|
+
├── design/ # Design documents only
|
|
94
|
+
│ └── auth-design.md
|
|
95
|
+
├── tasks/ # Tasks only
|
|
96
|
+
│ └── auth-tasks.md
|
|
97
|
+
└── validation/ # Validation reports
|
|
98
|
+
└── auth-validation-report.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Updated All 7 Agent Platforms
|
|
102
|
+
|
|
103
|
+
All prompts and templates updated with correct storage paths:
|
|
104
|
+
- Claude Code, GitHub Copilot, Cursor, Gemini CLI, Codex CLI, Qwen Code, Windsurf
|
|
105
|
+
|
|
106
|
+
#### Test Results
|
|
107
|
+
|
|
108
|
+
- **Unit Tests**: 4,827 passing ✅
|
|
109
|
+
- **Integration Tests**: 660 passing ✅
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
74
113
|
## 📊 What's New in v6.2.0
|
|
75
114
|
|
|
76
115
|
### Review Gate Engine 🛡️
|
|
@@ -1187,8 +1226,8 @@ AND the system SHALL create a session.
|
|
|
1187
1226
|
**Specifications**:
|
|
1188
1227
|
|
|
1189
1228
|
- `storage/specs/auth-requirements.md` + `storage/specs/auth-requirements.ja.md`
|
|
1190
|
-
- `storage/
|
|
1191
|
-
- `storage/
|
|
1229
|
+
- `storage/design/auth-design.md` + `storage/design/auth-design.ja.md`
|
|
1230
|
+
- `storage/tasks/auth-tasks.md` + `storage/tasks/auth-tasks.ja.md`
|
|
1192
1231
|
|
|
1193
1232
|
### Generation Order
|
|
1194
1233
|
|
|
@@ -1414,7 +1453,7 @@ steering/rules/constitution.md
|
|
|
1414
1453
|
|
|
1415
1454
|
```bash
|
|
1416
1455
|
# Clone repository
|
|
1417
|
-
git clone https://github.com/nahisaho/
|
|
1456
|
+
git clone https://github.com/nahisaho/MUSUBI.git
|
|
1418
1457
|
cd musubi
|
|
1419
1458
|
|
|
1420
1459
|
# Install dependencies
|
|
@@ -1476,7 +1515,7 @@ MUSUBI synthesizes features from:
|
|
|
1476
1515
|
|
|
1477
1516
|
**🎋 MUSUBI** - むすび - Bringing specifications, design, and code together.
|
|
1478
1517
|
|
|
1479
|
-
[](https://github.com/nahisaho/
|
|
1518
|
+
[](https://github.com/nahisaho/MUSUBI)
|
|
1480
1519
|
|
|
1481
1520
|
Made with ❤️ for the AI Coding Community
|
|
1482
1521
|
|
package/bin/musubi-dashboard.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* MUSUBI Dashboard CLI
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* Workflow dashboard for progress visualization and management.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* Usage:
|
|
9
9
|
* musubi-dashboard show <feature> Show workflow status
|
|
10
10
|
* musubi-dashboard create <feature> Create new workflow
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* musubi-dashboard blocker <feature> Manage blockers
|
|
13
13
|
* musubi-dashboard sprint <action> Sprint management
|
|
14
14
|
* musubi-dashboard trace <action> Traceability management
|
|
15
|
-
*
|
|
15
|
+
*
|
|
16
16
|
* Requirement: IMP-6.2-003-05
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -70,13 +70,13 @@ async function main() {
|
|
|
70
70
|
result = await cli.execute('blocker:add', [subcommand], {
|
|
71
71
|
stage: options.stage || 'current',
|
|
72
72
|
description: options.add,
|
|
73
|
-
severity: options.severity || 'medium'
|
|
73
|
+
severity: options.severity || 'medium',
|
|
74
74
|
});
|
|
75
75
|
console.log(`\n✅ Blocker added: ${options.add}`);
|
|
76
76
|
} else if (options.resolve) {
|
|
77
77
|
result = await cli.execute('blocker:resolve', [subcommand], {
|
|
78
78
|
blockerId: options.resolve,
|
|
79
|
-
resolution: options.resolution || 'Resolved'
|
|
79
|
+
resolution: options.resolution || 'Resolved',
|
|
80
80
|
});
|
|
81
81
|
console.log(`\n✅ Blocker resolved`);
|
|
82
82
|
} else {
|
|
@@ -213,7 +213,7 @@ function formatWorkflowStatus(workflow) {
|
|
|
213
213
|
|
|
214
214
|
function formatBlockers(result) {
|
|
215
215
|
const blockers = result.blockers || [];
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
if (blockers.length === 0) {
|
|
218
218
|
console.log('\n✅ No blockers');
|
|
219
219
|
return;
|
|
@@ -241,10 +241,12 @@ function formatSprintStatus(sprint) {
|
|
|
241
241
|
console.log('═'.repeat(50));
|
|
242
242
|
console.log(`Status: ${sprint.status || 'unknown'}`);
|
|
243
243
|
console.log(`Tasks: ${sprint.tasks?.length || 0}`);
|
|
244
|
-
|
|
244
|
+
|
|
245
245
|
if (sprint.metrics) {
|
|
246
246
|
console.log(`Completion: ${sprint.metrics.completionPercentage || 0}%`);
|
|
247
|
-
console.log(
|
|
247
|
+
console.log(
|
|
248
|
+
`Points: ${sprint.metrics.completedPoints || 0}/${sprint.metrics.totalPoints || 0}`
|
|
249
|
+
);
|
|
248
250
|
}
|
|
249
251
|
}
|
|
250
252
|
|
|
@@ -268,7 +270,14 @@ function formatGaps(result) {
|
|
|
268
270
|
|
|
269
271
|
Object.entries(bySeverity).forEach(([severity, items]) => {
|
|
270
272
|
if (items.length > 0) {
|
|
271
|
-
const icon =
|
|
273
|
+
const icon =
|
|
274
|
+
severity === 'critical'
|
|
275
|
+
? '🔴'
|
|
276
|
+
: severity === 'high'
|
|
277
|
+
? '🟠'
|
|
278
|
+
: severity === 'medium'
|
|
279
|
+
? '🟡'
|
|
280
|
+
: '🟢';
|
|
272
281
|
console.log(`\n${icon} ${severity.toUpperCase()} (${items.length}):`);
|
|
273
282
|
items.forEach(gap => {
|
|
274
283
|
console.log(` - ${gap.requirementId}: ${gap.gapType}`);
|
|
@@ -282,11 +291,11 @@ function formatGaps(result) {
|
|
|
282
291
|
|
|
283
292
|
function getStatusIcon(status) {
|
|
284
293
|
const icons = {
|
|
285
|
-
|
|
294
|
+
completed: '✅',
|
|
286
295
|
'in-progress': '🔄',
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
'not-started': '⬜'
|
|
296
|
+
blocked: '🚫',
|
|
297
|
+
pending: '⬜',
|
|
298
|
+
'not-started': '⬜',
|
|
290
299
|
};
|
|
291
300
|
return icons[status] || '⬜';
|
|
292
301
|
}
|
package/bin/musubi-design.js
CHANGED
|
@@ -41,10 +41,10 @@ program
|
|
|
41
41
|
program
|
|
42
42
|
.command('init <feature>')
|
|
43
43
|
.description('Initialize design document for a feature')
|
|
44
|
-
.option('-o, --output <path>', 'Output directory', '
|
|
44
|
+
.option('-o, --output <path>', 'Output directory', 'storage/design')
|
|
45
45
|
.option('-a, --author <name>', 'Author name')
|
|
46
46
|
.option('--project <name>', 'Project name')
|
|
47
|
-
.option('-r, --requirements <path>', 'Requirements
|
|
47
|
+
.option('-r, --requirements <path>', 'Requirements directory path', 'storage/specs')
|
|
48
48
|
.option('--dry-run', 'Show what would be created without writing files')
|
|
49
49
|
.option('--verbose', 'Show detailed output')
|
|
50
50
|
.option('--json', 'Output result as JSON')
|
|
@@ -59,7 +59,7 @@ program
|
|
|
59
59
|
console.log(chalk.dim(` Output: ${options.output}`));
|
|
60
60
|
console.log(chalk.dim(` Author: ${options.author || 'Not specified'}`));
|
|
61
61
|
console.log(chalk.dim(` Project: ${options.project || 'Not specified'}`));
|
|
62
|
-
console.log(chalk.dim(` Requirements: ${options.requirements
|
|
62
|
+
console.log(chalk.dim(` Requirements: ${options.requirements}`));
|
|
63
63
|
console.log(chalk.dim(` Dry run: ${options.dryRun || false}`));
|
|
64
64
|
console.log();
|
|
65
65
|
}
|
package/bin/musubi-gaps.js
CHANGED
|
@@ -19,9 +19,9 @@ program
|
|
|
19
19
|
program
|
|
20
20
|
.command('detect')
|
|
21
21
|
.description('Detect all gaps (requirements, code, tests)')
|
|
22
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
23
|
-
.option('--design <dir>', 'Design directory', '
|
|
24
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
22
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
23
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
24
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
25
25
|
.option('--src <dir>', 'Source code directory', 'src')
|
|
26
26
|
.option('--tests <dir>', 'Test directory', 'tests')
|
|
27
27
|
.option('--format <format>', 'Output format (table|json|markdown)', 'table')
|
|
@@ -70,9 +70,9 @@ program
|
|
|
70
70
|
program
|
|
71
71
|
.command('requirements')
|
|
72
72
|
.description('Detect orphaned requirements (no design/code)')
|
|
73
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
74
|
-
.option('--design <dir>', 'Design directory', '
|
|
75
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
73
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
74
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
75
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
76
76
|
.option('--format <format>', 'Output format (table|json|markdown)', 'table')
|
|
77
77
|
.action(async options => {
|
|
78
78
|
try {
|
|
@@ -148,9 +148,9 @@ program
|
|
|
148
148
|
program
|
|
149
149
|
.command('coverage')
|
|
150
150
|
.description('Calculate coverage statistics')
|
|
151
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
152
|
-
.option('--design <dir>', 'Design directory', '
|
|
153
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
151
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
152
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
153
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
154
154
|
.option('--src <dir>', 'Source code directory', 'src')
|
|
155
155
|
.option('--tests <dir>', 'Test directory', 'tests')
|
|
156
156
|
.option('--min-coverage <percent>', 'Minimum required coverage', '100')
|