musubix2 0.5.0 → 0.5.2
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/.musubix-managed +1 -1
- package/dist/assets/skills-manifest.json +1 -1
- package/dist/cli.d.ts +17 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +247 -112
- package/dist/cli.js.map +1 -1
- package/dist/index.js +245 -112
- package/dist/interface/cli/init-command-handler.d.ts +6 -0
- package/dist/interface/cli/init-command-handler.d.ts.map +1 -1
- package/dist/interface/cli/init-command-handler.js +61 -10
- package/dist/interface/cli/init-command-handler.js.map +1 -1
- package/dist/templates/claude-md.md +21 -0
- package/package.json +1 -1
|
@@ -20,6 +20,12 @@ export declare class InitCommandHandler {
|
|
|
20
20
|
private readonly dryRunReporter;
|
|
21
21
|
constructor(detector: PlatformDetector, confirmation: ConfirmationResolver, planner: InstallPlanner, copilotSetup: CopilotSetupService, claudeSetup: ClaudeSetupTransaction, merger: WorkspaceMergeService, writer: WorkspaceWriter, updateService: UpdateService, dryRunReporter: DryRunReporter);
|
|
22
22
|
run(options: InitOptions): Promise<InitSummary>;
|
|
23
|
+
/**
|
|
24
|
+
* Create the SDD directory skeleton and a parseable starter requirements
|
|
25
|
+
* document. Idempotent and non-destructive — existing files are left as-is.
|
|
26
|
+
* Returns the relative paths of files/dirs actually created.
|
|
27
|
+
*/
|
|
28
|
+
private scaffoldSddWorkspace;
|
|
23
29
|
private buildProjectContext;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-command-handler.d.ts","sourceRoot":"","sources":["../../../src/interface/cli/init-command-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAKZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAO5E,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-command-handler.d.ts","sourceRoot":"","sources":["../../../src/interface/cli/init-command-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAKZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAO5E,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAsBvD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBARd,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,oBAAoB,EAClC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAG3C,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAmFrD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,mBAAmB;CAqC5B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAsB7D"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* P3-04 / DES-INS-001: Init command orchestrator — detect → confirm → plan → render → merge → write.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { basename } from 'node:path';
|
|
4
|
+
import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
|
|
5
|
+
import { basename, join } from 'node:path';
|
|
6
6
|
import { PlatformDetector } from '../../application/install/platform-detector.js';
|
|
7
7
|
import { InstallPlanner } from '../../application/install/install-planner.js';
|
|
8
8
|
import { CopilotSetupService } from '../../application/install/copilot-setup-service.js';
|
|
@@ -18,6 +18,25 @@ import { TemplateRenderer } from '../../infrastructure/templates/template-render
|
|
|
18
18
|
import { WorkspaceWriter } from '../../infrastructure/workspace/workspace-writer.js';
|
|
19
19
|
import { ConfirmationResolver } from './confirmation-resolver.js';
|
|
20
20
|
import { DryRunReporter } from './dry-run-reporter.js';
|
|
21
|
+
/**
|
|
22
|
+
* Starter requirements document in the exact format the EARS parser accepts
|
|
23
|
+
* (`## REQ-XXX-000:` heading + `**要件**:` field). Gives `musubix requirements
|
|
24
|
+
* analyze` something parseable on first run.
|
|
25
|
+
*/
|
|
26
|
+
const STARTER_REQUIREMENTS = `# 要件定義書
|
|
27
|
+
|
|
28
|
+
> \`musubix requirements analyze storage/specs/requirements.md\` で解析できます。
|
|
29
|
+
> 要件は見出し形式・ID は \`REQ-<3文字ドメイン>-<3桁連番>\` で記述してください。
|
|
30
|
+
|
|
31
|
+
## REQ-SMP-001: サンプル要件
|
|
32
|
+
**種別**: UBIQUITOUS
|
|
33
|
+
**優先度**: P1
|
|
34
|
+
**要件**:
|
|
35
|
+
THE システム SHALL ユーザーにサンプル機能を提供する。
|
|
36
|
+
|
|
37
|
+
**受入基準**:
|
|
38
|
+
- [ ] サンプル機能が動作する
|
|
39
|
+
`;
|
|
21
40
|
export class InitCommandHandler {
|
|
22
41
|
detector;
|
|
23
42
|
confirmation;
|
|
@@ -97,26 +116,58 @@ export class InitCommandHandler {
|
|
|
97
116
|
await this.writer.execute(copilotOps, false);
|
|
98
117
|
}
|
|
99
118
|
const summary = await this.writer.execute([], true); // get summary structure
|
|
119
|
+
// 8. Scaffold the SDD workspace (steering/, storage/specs/) with a
|
|
120
|
+
// parseable starter requirements doc. Best-effort; never overwrites.
|
|
121
|
+
const scaffolded = options.dryRun
|
|
122
|
+
? []
|
|
123
|
+
: this.scaffoldSddWorkspace(options.projectPath);
|
|
100
124
|
return {
|
|
101
125
|
detectedPlatforms: selection,
|
|
102
|
-
created: summary.created,
|
|
126
|
+
created: [...summary.created, ...scaffolded],
|
|
103
127
|
updated: summary.updated,
|
|
104
128
|
skipped: summary.skipped,
|
|
105
129
|
warnings,
|
|
106
130
|
durationMs: Date.now() - start,
|
|
107
131
|
};
|
|
108
132
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Create the SDD directory skeleton and a parseable starter requirements
|
|
135
|
+
* document. Idempotent and non-destructive — existing files are left as-is.
|
|
136
|
+
* Returns the relative paths of files/dirs actually created.
|
|
137
|
+
*/
|
|
138
|
+
scaffoldSddWorkspace(projectPath) {
|
|
139
|
+
const created = [];
|
|
112
140
|
try {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
141
|
+
for (const dir of ['steering', 'storage/specs']) {
|
|
142
|
+
const abs = join(projectPath, dir);
|
|
143
|
+
if (!existsSync(abs)) {
|
|
144
|
+
mkdirSync(abs, { recursive: true });
|
|
145
|
+
created.push(`${dir}/`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const reqPath = join(projectPath, 'storage/specs/requirements.md');
|
|
149
|
+
if (!existsSync(reqPath)) {
|
|
150
|
+
writeFileSync(reqPath, STARTER_REQUIREMENTS, 'utf-8');
|
|
151
|
+
created.push('storage/specs/requirements.md');
|
|
152
|
+
}
|
|
116
153
|
}
|
|
117
154
|
catch {
|
|
118
|
-
//
|
|
155
|
+
// Best-effort — scaffolding failure must not fail init.
|
|
119
156
|
}
|
|
157
|
+
return created;
|
|
158
|
+
}
|
|
159
|
+
buildProjectContext(projectPath) {
|
|
160
|
+
const name = basename(projectPath);
|
|
161
|
+
// Document the canonical MUSUBIX2 SDD layout rather than a raw directory
|
|
162
|
+
// listing — the generated CLAUDE.md should teach the intended structure,
|
|
163
|
+
// not echo transient files like node_modules/.
|
|
164
|
+
const rootStructure = [
|
|
165
|
+
'steering/ # プロジェクトメモリ(決定前に参照)',
|
|
166
|
+
'storage/specs/ # requirements / design / tasks 仕様',
|
|
167
|
+
'.claude/skills/ # SDD Agent Skills',
|
|
168
|
+
'src/ # 実装コード',
|
|
169
|
+
'tests/ # テストコード',
|
|
170
|
+
];
|
|
120
171
|
return {
|
|
121
172
|
projectName: name,
|
|
122
173
|
packageManager: 'npm',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-command-handler.js","sourceRoot":"","sources":["../../../src/interface/cli/init-command-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init-command-handler.js","sourceRoot":"","sources":["../../../src/interface/cli/init-command-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,27 @@ Phase 5: Complete
|
|
|
37
37
|
| OPTIONAL | WHERE \<feature\>, THE システム SHALL... |
|
|
38
38
|
| COMPLEX | IF \<condition\>, THEN THE システム SHALL... |
|
|
39
39
|
|
|
40
|
+
## 要件定義書フォーマット(必須)
|
|
41
|
+
|
|
42
|
+
`musubix requirements analyze <file>` は次の構造のみ解析できる。
|
|
43
|
+
要件は **見出し** として記述し、ID は `REQ-<3文字ドメイン>-<3桁連番>` とすること。
|
|
44
|
+
箇条書き(`- REQ-001: ...`)や 3 文字ドメインコードの無い ID は認識されない。
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
## REQ-AUT-001: ユーザー登録
|
|
48
|
+
**種別**: UBIQUITOUS
|
|
49
|
+
**優先度**: P0
|
|
50
|
+
**要件**:
|
|
51
|
+
THE システム SHALL メールアドレスによるユーザー登録を提供する。
|
|
52
|
+
|
|
53
|
+
**受入基準**:
|
|
54
|
+
- [ ] 有効なメールで登録できる
|
|
55
|
+
- [ ] 重複メールは拒否される
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- `**要件**:` の次行に EARS 文を書く(この行がパターン分類の対象)。
|
|
59
|
+
- 種別/優先度/受入基準は任意だが、受入基準が無いと validate で警告となる。
|
|
60
|
+
|
|
40
61
|
## スキル一覧
|
|
41
62
|
|
|
42
63
|
{{SKILL_SECTION}}
|