@sk8metal/michi-cli 0.3.0 → 0.4.0
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/CHANGELOG.md +43 -0
- package/dist/scripts/config-global.d.ts +10 -0
- package/dist/scripts/config-global.d.ts.map +1 -0
- package/dist/scripts/config-global.js +111 -0
- package/dist/scripts/config-global.js.map +1 -0
- package/dist/scripts/confluence-sync.d.ts +22 -4
- package/dist/scripts/confluence-sync.d.ts.map +1 -1
- package/dist/scripts/confluence-sync.js +22 -12
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/jira-sync.d.ts.map +1 -1
- package/dist/scripts/jira-sync.js +201 -167
- package/dist/scripts/jira-sync.js.map +1 -1
- package/dist/scripts/list-projects.js.map +1 -1
- package/dist/scripts/multi-project-estimate.js.map +1 -1
- package/dist/scripts/phase-runner.d.ts +1 -1
- package/dist/scripts/phase-runner.d.ts.map +1 -1
- package/dist/scripts/phase-runner.js +295 -522
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/pre-flight-check.d.ts.map +1 -1
- package/dist/scripts/pre-flight-check.js +10 -6
- package/dist/scripts/pre-flight-check.js.map +1 -1
- package/dist/scripts/resource-dashboard.js.map +1 -1
- package/dist/scripts/spec-impl-workflow.js +1 -1
- package/dist/scripts/spec-impl-workflow.js.map +1 -1
- package/dist/scripts/template/renderer.d.ts +1 -1
- package/dist/scripts/template/renderer.d.ts.map +1 -1
- package/dist/scripts/test-interactive.d.ts.map +1 -1
- package/dist/scripts/test-interactive.js +0 -15
- package/dist/scripts/test-interactive.js.map +1 -1
- package/dist/scripts/test-new-features.js +6 -3
- package/dist/scripts/test-new-features.js.map +1 -1
- package/dist/scripts/test-spec-generator.d.ts.map +1 -1
- package/dist/scripts/test-spec-generator.js +1 -2
- package/dist/scripts/test-spec-generator.js.map +1 -1
- package/dist/scripts/utils/config-loader.d.ts +7 -2
- package/dist/scripts/utils/config-loader.d.ts.map +1 -1
- package/dist/scripts/utils/config-loader.js +79 -8
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/config-sections.d.ts +54 -0
- package/dist/scripts/utils/config-sections.d.ts.map +1 -0
- package/dist/scripts/utils/config-sections.js +178 -0
- package/dist/scripts/utils/config-sections.js.map +1 -0
- package/dist/scripts/utils/config-validator.d.ts +4 -0
- package/dist/scripts/utils/config-validator.d.ts.map +1 -1
- package/dist/scripts/utils/config-validator.js +57 -1
- package/dist/scripts/utils/config-validator.js.map +1 -1
- package/dist/scripts/utils/confluence-approval.d.ts.map +1 -1
- package/dist/scripts/utils/confluence-approval.js +5 -3
- package/dist/scripts/utils/confluence-approval.js.map +1 -1
- package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
- package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
- package/dist/scripts/utils/interactive-helpers.d.ts +32 -0
- package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -0
- package/dist/scripts/utils/interactive-helpers.js +92 -0
- package/dist/scripts/utils/interactive-helpers.js.map +1 -0
- package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -1
- package/dist/scripts/utils/jira-issue-type-fetcher.js +27 -18
- package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -1
- package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -1
- package/dist/scripts/utils/release-notes-generator.js +2 -1
- package/dist/scripts/utils/release-notes-generator.js.map +1 -1
- package/dist/scripts/utils/spec-updater.d.ts +19 -0
- package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
- package/dist/scripts/utils/spec-updater.js.map +1 -1
- package/dist/scripts/utils/tasks-converter.d.ts.map +1 -1
- package/dist/scripts/utils/tasks-converter.js +2 -2
- package/dist/scripts/utils/tasks-converter.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +0 -12
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/dist/scripts/utils/test-runner.d.ts.map +1 -1
- package/dist/scripts/utils/test-runner.js +3 -2
- package/dist/scripts/utils/test-runner.js.map +1 -1
- package/dist/scripts/validate-phase.d.ts +1 -1
- package/dist/scripts/validate-phase.d.ts.map +1 -1
- package/dist/scripts/validate-phase.js +12 -62
- package/dist/scripts/validate-phase.js.map +1 -1
- package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
- package/dist/scripts/workflow-orchestrator.js +11 -16
- package/dist/scripts/workflow-orchestrator.js.map +1 -1
- package/dist/src/__tests__/integration/setup/init.test.d.ts +5 -0
- package/dist/src/__tests__/integration/setup/init.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/setup/init.test.js +352 -0
- package/dist/src/__tests__/integration/setup/init.test.js.map +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +28 -20
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/init.d.ts +28 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +490 -0
- package/dist/src/commands/init.js.map +1 -0
- package/docs/user-guide/getting-started/setup.md +31 -3
- package/docs/user-guide/guides/customization.md +64 -11
- package/docs/user-guide/guides/workflow.md +35 -21
- package/docs/user-guide/reference/config.md +30 -5
- package/docs/user-guide/reference/quick-reference.md +68 -74
- package/docs/user-guide/testing/test-planning-flow.md +4 -0
- package/package.json +2 -4
- package/scripts/config-global.ts +160 -0
- package/scripts/confluence-sync.ts +91 -27
- package/scripts/jira-sync.ts +284 -218
- package/scripts/list-projects.ts +2 -2
- package/scripts/multi-project-estimate.ts +3 -3
- package/scripts/phase-runner.ts +391 -594
- package/scripts/pre-flight-check.ts +20 -9
- package/scripts/pre-publish-check.sh +3 -34
- package/scripts/resource-dashboard.ts +4 -4
- package/scripts/spec-impl-workflow.ts +1 -1
- package/scripts/template/renderer.ts +1 -1
- package/scripts/test-interactive.ts +0 -19
- package/scripts/test-new-features.ts +10 -7
- package/scripts/test-npm-package.sh +3 -34
- package/scripts/test-spec-generator.ts +3 -7
- package/scripts/utils/config-loader.ts +107 -26
- package/scripts/utils/config-sections.ts +316 -0
- package/scripts/utils/config-validator.ts +66 -1
- package/scripts/utils/confluence-approval.ts +8 -6
- package/scripts/utils/confluence-hierarchy.ts +27 -27
- package/scripts/utils/interactive-helpers.ts +135 -0
- package/scripts/utils/jira-issue-type-fetcher.ts +29 -21
- package/scripts/utils/release-notes-generator.ts +3 -2
- package/scripts/utils/spec-updater.ts +37 -15
- package/scripts/utils/tasks-converter.ts +4 -6
- package/scripts/utils/tasks-format-validator.ts +0 -13
- package/scripts/utils/test-runner.ts +4 -3
- package/scripts/validate-phase.ts +21 -80
- package/scripts/workflow-orchestrator.ts +16 -25
- package/templates/claude/commands/kiro/kiro-spec-impl.md +4 -0
- package/templates/claude/commands/kiro/kiro-spec-tasks.md +3 -1
- package/templates/claude/commands/michi/confluence-sync.md +8 -2
- package/templates/claude/commands/michi/design-review.md +4 -0
- package/templates/claude/commands/michi/e2e-plan.md +4 -0
- package/templates/claude/commands/michi/license-check.md +4 -0
- package/templates/claude/commands/michi/pr-resolve.md +4 -0
- package/templates/claude/commands/michi/project-switch.md +8 -2
- package/templates/claude/commands/michi/spec-design.md +78 -0
- package/templates/claude/commands/michi/spec-impl.md +716 -0
- package/templates/claude/commands/michi/test-planning.md +174 -0
- package/templates/claude/commands/michi/validate-design.md +58 -0
- package/templates/claude/commands/michi/version-audit.md +4 -0
- package/templates/michi/cc-sdd-overrides/README.md +8 -0
- package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +53 -0
- package/dist/scripts/config-interactive.d.ts +0 -10
- package/dist/scripts/config-interactive.d.ts.map +0 -1
- package/dist/scripts/config-interactive.js +0 -372
- package/dist/scripts/config-interactive.js.map +0 -1
- package/dist/scripts/setup-existing-project.d.ts +0 -15
- package/dist/scripts/setup-existing-project.d.ts.map +0 -1
- package/dist/scripts/setup-existing-project.js +0 -455
- package/dist/scripts/setup-existing-project.js.map +0 -1
- package/dist/scripts/setup-interactive.d.ts +0 -10
- package/dist/scripts/setup-interactive.d.ts.map +0 -1
- package/dist/scripts/setup-interactive.js +0 -413
- package/dist/scripts/setup-interactive.js.map +0 -1
- package/scripts/config-interactive.ts +0 -550
- package/scripts/setup-existing-project.ts +0 -585
- package/scripts/setup-interactive.ts +0 -565
|
@@ -8,54 +8,59 @@
|
|
|
8
8
|
|
|
9
9
|
## ワークフロー全体像
|
|
10
10
|
|
|
11
|
+
> **注**: このワークフローは cc-sdd (Spec-Driven Development) の標準フローを Michi が拡張したものです。
|
|
12
|
+
> - **cc-sdd 標準**: Phase 0.0-0.2, 0.5 (`/kiro:*` コマンド)
|
|
13
|
+
> - **Michi 固有拡張**: Phase 0.3-0.4, 0.6-0.7, Phase 1-5, Phase A/B (テスト計画・実行、JIRA/Confluence連携)
|
|
14
|
+
|
|
11
15
|
```
|
|
12
|
-
Phase 0.0: 仕様の初期化 (/kiro:spec-init)
|
|
16
|
+
Phase 0.0: 仕様の初期化 (/kiro:spec-init) ← cc-sdd 標準
|
|
13
17
|
↓
|
|
14
|
-
Phase 0.1: 要件定義 (/kiro:spec-requirements)
|
|
15
|
-
↓ GitHub → Confluence同期
|
|
18
|
+
Phase 0.1: 要件定義 (/kiro:spec-requirements) ← cc-sdd 標準
|
|
19
|
+
↓ GitHub → Confluence同期 ← Michi 固有
|
|
16
20
|
↓ 企画・部長が承認
|
|
17
21
|
|
|
18
|
-
Phase 0.2: 設計 (/kiro:spec-design)
|
|
19
|
-
↓
|
|
20
|
-
↓
|
|
22
|
+
Phase 0.2: 設計 (/michi:spec-design または /kiro:spec-design)
|
|
23
|
+
↓ /michi:spec-design 推奨(Phase 0.3-0.4 ガイダンス付き)
|
|
24
|
+
↓ GitHub → Confluence同期 ← Michi 固有
|
|
25
|
+
↓ 見積もり生成 → Excel出力 ← Michi 固有
|
|
21
26
|
↓ アーキテクト・部長が承認
|
|
22
27
|
|
|
23
|
-
Phase 0.3: テストタイプの選択
|
|
28
|
+
Phase 0.3: テストタイプの選択 ← Michi 固有(重要)
|
|
24
29
|
↓ テスト計画フローに従う
|
|
25
30
|
|
|
26
|
-
Phase 0.4: テスト仕様書の作成
|
|
31
|
+
Phase 0.4: テスト仕様書の作成 ← Michi 固有(重要)
|
|
27
32
|
↓ テンプレートを使用
|
|
28
33
|
|
|
29
|
-
Phase 0.5: タスク分割 (/kiro:spec-tasks)
|
|
34
|
+
Phase 0.5: タスク分割 (/kiro:spec-tasks) ← cc-sdd 標準
|
|
30
35
|
↓ tasks.md生成
|
|
31
36
|
|
|
32
|
-
Phase 0.6: タスクのJIRA同期
|
|
37
|
+
Phase 0.6: タスクのJIRA同期 ← Michi 固有
|
|
33
38
|
↓ Epic/Story/Subtask自動作成
|
|
34
39
|
|
|
35
|
-
Phase 0.7: Confluence同期
|
|
40
|
+
Phase 0.7: Confluence同期 ← Michi 固有
|
|
36
41
|
↓
|
|
37
|
-
Phase 1: 環境構築・基盤整備
|
|
42
|
+
Phase 1: 環境構築・基盤整備 ← Michi 固有
|
|
38
43
|
↓ テスト環境セットアップ
|
|
39
44
|
|
|
40
|
-
Phase 2: TDD実装 (/kiro:spec-impl)
|
|
45
|
+
Phase 2: TDD実装 (/kiro:spec-impl) ← cc-sdd 標準
|
|
41
46
|
↓ テスト → コード → リファクタリング
|
|
42
47
|
|
|
43
|
-
Phase A: PR作成前の自動テスト(CI/CD)
|
|
48
|
+
Phase A: PR作成前の自動テスト(CI/CD) ← Michi 固有
|
|
44
49
|
↓ 単体テスト + Lint + ビルド
|
|
45
50
|
↓ GitHub PR作成
|
|
46
51
|
↓ PRマージ
|
|
47
52
|
|
|
48
|
-
Phase 3: 追加の品質保証(PRマージ後)
|
|
53
|
+
Phase 3: 追加の品質保証(PRマージ後) ← Michi 固有
|
|
49
54
|
↓ 静的解析・セキュリティスキャン
|
|
50
55
|
|
|
51
|
-
Phase B: リリース準備時の手動テスト
|
|
56
|
+
Phase B: リリース準備時の手動テスト ← Michi 固有
|
|
52
57
|
↓ 統合・E2E・パフォーマンス・セキュリティ
|
|
53
58
|
|
|
54
|
-
Phase 4: リリース準備ドキュメント作成 (/kiro:release-prep)
|
|
59
|
+
Phase 4: リリース準備ドキュメント作成 (/kiro:release-prep) ← Michi 固有
|
|
55
60
|
↓ Confluenceリリース手順書
|
|
56
61
|
↓ リリースJIRA起票
|
|
57
62
|
|
|
58
|
-
Phase 5: リリース実行
|
|
63
|
+
Phase 5: リリース実行 ← Michi 固有
|
|
59
64
|
↓ タグ作成 → CI/CD → GitHub Release作成
|
|
60
65
|
```
|
|
61
66
|
|
|
@@ -145,13 +150,18 @@ AIが自動的に:
|
|
|
145
150
|
#### Phase 0.2 Step 1: 設計書の生成
|
|
146
151
|
|
|
147
152
|
```bash
|
|
148
|
-
#
|
|
153
|
+
# 推奨: Michi 拡張版(Phase 0.3-0.4 ガイダンス付き)
|
|
154
|
+
/michi:spec-design <feature>
|
|
155
|
+
|
|
156
|
+
# または cc-sdd 標準版
|
|
149
157
|
/kiro:spec-design <feature>
|
|
150
158
|
|
|
151
159
|
# 具体例
|
|
152
|
-
/
|
|
160
|
+
/michi:spec-design user-auth
|
|
153
161
|
```
|
|
154
162
|
|
|
163
|
+
**推奨**: `/michi:spec-design` を使用すると、設計完了後に Phase 0.3-0.4(テスト計画)へのガイダンスが自動的に表示されます。
|
|
164
|
+
|
|
155
165
|
AIが以下を生成:
|
|
156
166
|
|
|
157
167
|
- アーキテクチャ図
|
|
@@ -189,9 +199,13 @@ michi confluence:sync user-auth design
|
|
|
189
199
|
|
|
190
200
|
### Phase 0.3-0.4: テスト計画
|
|
191
201
|
|
|
202
|
+
> **Michi 固有機能**: Phase 0.3-0.4 は Michi 独自の拡張フェーズです。cc-sdd 標準には含まれません。
|
|
203
|
+
>
|
|
204
|
+
> `/michi:spec-design` コマンドを使用すると、設計完了後に自動的にこのフェーズへのガイダンスが表示されます。
|
|
205
|
+
|
|
192
206
|
#### Phase 0.3: テストタイプの選択
|
|
193
207
|
|
|
194
|
-
Phase 0.2(設計)完了後、Phase 0.
|
|
208
|
+
Phase 0.2(設計)完了後、Phase 0.5(タスク分割)の前に、どのテストタイプが必要かを決定します。
|
|
195
209
|
|
|
196
210
|
詳細は [テスト計画フロー](../testing/test-planning-flow.md#phase-03-テストタイプの選択) を参照してください。
|
|
197
211
|
|
|
@@ -4,10 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
## 設定ファイルの場所
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Michiの設定ファイルは以下の2つの場所に配置できます:
|
|
8
|
+
|
|
9
|
+
### グローバル設定
|
|
10
|
+
|
|
11
|
+
**場所**: `~/.michi/config.json`
|
|
12
|
+
|
|
13
|
+
**用途**: 全プロジェクトで共通の設定(組織標準の設定など)
|
|
14
|
+
|
|
15
|
+
**作成方法**: `npm run config:global` コマンドを使用
|
|
16
|
+
|
|
17
|
+
### プロジェクト固有設定
|
|
18
|
+
|
|
19
|
+
**場所**: プロジェクトルートの `.michi/config.json`
|
|
20
|
+
|
|
21
|
+
**用途**: プロジェクト固有の設定(グローバル設定を上書き)
|
|
22
|
+
|
|
23
|
+
**作成方法**:
|
|
24
|
+
- 自動作成: `michi init` コマンド実行時にグローバル設定から自動コピー
|
|
25
|
+
- 手動作成: グローバル設定(`~/.michi/config.json`)をコピーして編集
|
|
8
26
|
|
|
9
27
|
**注意**: 以前は `.kiro/config.json` を使用していましたが、Michi専用の設定ファイルとして `.michi/config.json` に変更されました。`.kiro/config.json` が存在する場合は警告が表示されます。
|
|
10
28
|
|
|
29
|
+
### 設定ファイルのフォーマット
|
|
30
|
+
|
|
11
31
|
```json
|
|
12
32
|
{
|
|
13
33
|
"confluence": { ... },
|
|
@@ -130,8 +150,13 @@
|
|
|
130
150
|
|
|
131
151
|
1. **`spec.json`**: 機能固有の設定(最優先)
|
|
132
152
|
2. **`.michi/config.json`**: プロジェクト固有の設定
|
|
133
|
-
3.
|
|
134
|
-
4.
|
|
153
|
+
3. **`~/.michi/config.json`**: グローバル設定
|
|
154
|
+
4. **環境変数**: システム環境変数または`.env`ファイル
|
|
155
|
+
5. **デフォルト値**: スキーマで定義されたデフォルト値
|
|
156
|
+
|
|
157
|
+
**推奨される使い方**:
|
|
158
|
+
- **グローバル設定(`~/.michi/config.json`)**: 組織全体で共通の設定(Confluence階層構造、JIRA Story作成粒度など)
|
|
159
|
+
- **プロジェクト設定(`.michi/config.json`)**: プロジェクト固有の設定(特定プロジェクトのみカスタマイズが必要な場合)
|
|
135
160
|
|
|
136
161
|
## 設定例
|
|
137
162
|
|
|
@@ -359,7 +384,7 @@ npx tsx scripts/utils/config-validator.ts
|
|
|
359
384
|
3. **優先順位の問題**
|
|
360
385
|
- 環境変数が設定されている場合、環境変数の優先順位を確認
|
|
361
386
|
- `spec.json`に設定がある場合、`spec.json`が最優先であることを確認
|
|
362
|
-
- 設定の優先順位: `spec.json` > `config.json` > 環境変数 > デフォルト値
|
|
387
|
+
- 設定の優先順位: `spec.json` > `.michi/config.json` > `~/.michi/config.json` > 環境変数 > デフォルト値
|
|
363
388
|
|
|
364
389
|
4. **設定ファイルの読み込みエラー**
|
|
365
390
|
- 設定ファイルの権限を確認: `chmod 644 .michi/config.json`
|
|
@@ -516,7 +541,7 @@ export CONFLUENCE_PRD_SPACE=Michi
|
|
|
516
541
|
- JIRA同期時: 設定値のソースが表示される
|
|
517
542
|
|
|
518
543
|
2. **設定ファイルの優先順位を理解**
|
|
519
|
-
- `spec.json` > `.michi/config.json` > 環境変数 > デフォルト値
|
|
544
|
+
- `spec.json` > `.michi/config.json` > `~/.michi/config.json` > 環境変数 > デフォルト値
|
|
520
545
|
- 同じ設定値が複数箇所にある場合、優先順位の高いものが使用される
|
|
521
546
|
|
|
522
547
|
3. **デバッグ方法**
|
|
@@ -4,83 +4,65 @@
|
|
|
4
4
|
|
|
5
5
|
## 新規プロジェクト作成
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### 推奨: `michi init` コマンド(最も簡単 ⭐)
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
#
|
|
10
|
+
# 既存リポジトリに移動
|
|
11
11
|
cd /path/to/existing-repo
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
13
|
+
# 1コマンドで初期設定完了
|
|
14
|
+
michi init --michi-path /path/to/michi
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
このコマンドが自動的に:
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
19
|
+
- プロジェクトメタデータ(`.kiro/project.json`)を作成
|
|
20
|
+
- 環境変数テンプレート(`.env`)を作成
|
|
21
|
+
- 共通ルール・コマンドをコピー(`--michi-path` 指定時)
|
|
21
22
|
- Steeringテンプレート(`.kiro/steering/`)をコピー
|
|
22
23
|
- Specテンプレート(`.kiro/settings/templates/`)をコピー
|
|
24
|
+
- ワークフロー設定(`.michi/config.json`)を作成
|
|
25
|
+
- グローバル設定(`~/.michi/config.json`)があればコピー
|
|
26
|
+
- なければ対話的に設定
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
1. cc-sddを導入: `npx cc-sdd@latest --lang ja --cursor`
|
|
27
|
-
2. 設定を対話的に作成: `npm run setup:interactive`
|
|
28
|
-
|
|
29
|
-
### パターンB: 新規リポジトリを作成してセットアップ
|
|
28
|
+
**オプション**:
|
|
30
29
|
|
|
31
30
|
```bash
|
|
32
|
-
#
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
--
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
# 非対話モード(プロジェクト名とJIRAキーを指定)
|
|
32
|
+
michi init \
|
|
33
|
+
--name "project-id" \
|
|
34
|
+
--project-name "プロジェクト名" \
|
|
35
|
+
--jira-key "PRJA" \
|
|
36
|
+
--michi-path /path/to/michi \
|
|
37
|
+
-y
|
|
38
|
+
|
|
39
|
+
# ワークフロー設定をスキップ
|
|
40
|
+
michi init --michi-path /path/to/michi --skip-config
|
|
41
|
+
|
|
42
|
+
# 環境を指定(デフォルト: Cursor)
|
|
43
|
+
michi init --michi-path /path/to/michi --cursor
|
|
44
|
+
michi init --michi-path /path/to/michi --claude
|
|
46
45
|
```
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
**例**:
|
|
47
|
+
**次のステップ**:
|
|
51
48
|
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
1. `.env` ファイルの内容を確認・編集
|
|
50
|
+
2. `.michi/config.json` の内容を確認(必要に応じて編集)
|
|
51
|
+
3. 開発開始: `/kiro:spec-init <機能説明>`
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
### 代替: 個別セットアップ
|
|
56
54
|
|
|
57
|
-
|
|
55
|
+
グローバル設定を先に作成する場合:
|
|
58
56
|
|
|
59
57
|
```bash
|
|
60
|
-
# 1.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
# 3. プロジェクトメタデータ作成
|
|
69
|
-
cat > .kiro/project.json << 'EOF'
|
|
70
|
-
{
|
|
71
|
-
"projectId": "repo-name",
|
|
72
|
-
"projectName": "プロジェクト名",
|
|
73
|
-
"jiraProjectKey": "PRJX",
|
|
74
|
-
"confluenceLabels": ["project:x", "service:y"]
|
|
75
|
-
}
|
|
76
|
-
EOF
|
|
77
|
-
|
|
78
|
-
# 4. Michiから共通ルール・コマンド・テンプレートをコピー
|
|
79
|
-
npx tsx /path/to/michi/scripts/setup-existing-project.ts \
|
|
80
|
-
--michi-path /path/to/michi
|
|
81
|
-
|
|
82
|
-
# 5. npm install
|
|
83
|
-
# 6. 初期コミット
|
|
58
|
+
# 1. グローバル設定を作成(組織で一度だけ)
|
|
59
|
+
michi config:global
|
|
60
|
+
|
|
61
|
+
# 2. プロジェクト初期設定
|
|
62
|
+
cd /path/to/project
|
|
63
|
+
michi init --michi-path /path/to/michi
|
|
64
|
+
|
|
65
|
+
# グローバル設定が自動的にコピーされます
|
|
84
66
|
```
|
|
85
67
|
|
|
86
68
|
詳細: [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md)
|
|
@@ -128,20 +110,31 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
128
110
|
|
|
129
111
|
## コマンド一覧
|
|
130
112
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
| `/kiro:spec-
|
|
136
|
-
| `/kiro:spec-
|
|
137
|
-
| `/kiro:spec-
|
|
138
|
-
| `/kiro:spec-
|
|
139
|
-
| `/kiro:
|
|
140
|
-
| `/kiro:
|
|
141
|
-
| `/kiro:
|
|
142
|
-
| `/kiro:
|
|
143
|
-
| `/kiro:
|
|
144
|
-
| `/kiro:
|
|
113
|
+
### cc-sdd 標準コマンド
|
|
114
|
+
|
|
115
|
+
| コマンド | 説明 |
|
|
116
|
+
| ---------------------------------------- | -------------------------- |
|
|
117
|
+
| `/kiro:spec-init <description>` | 仕様初期化 |
|
|
118
|
+
| `/kiro:spec-requirements <feature>` | 要件定義生成 |
|
|
119
|
+
| `/kiro:spec-design <feature>` | 設計生成(cc-sdd標準版) |
|
|
120
|
+
| `/kiro:spec-tasks <feature>` | タスク分割 |
|
|
121
|
+
| `/kiro:spec-impl <feature> <tasks>` | TDD実装 |
|
|
122
|
+
| `/kiro:spec-status <feature>` | 進捗確認 |
|
|
123
|
+
| `/kiro:steering` | Steering作成/更新 |
|
|
124
|
+
| `/kiro:steering-custom` | カスタムSteering作成 |
|
|
125
|
+
| `/kiro:validate-gap <feature>` | 既存コードと要件の差異分析 |
|
|
126
|
+
| `/kiro:validate-design <feature>` | 設計の品質レビューと検証 |
|
|
127
|
+
|
|
128
|
+
### Michi 拡張コマンド
|
|
129
|
+
|
|
130
|
+
> **注**: これらのコマンドは Michi 独自の拡張機能です。cc-sdd 標準には含まれません。
|
|
131
|
+
|
|
132
|
+
| コマンド | 説明 |
|
|
133
|
+
| ---------------------------------------- | ---------------------------------------------- |
|
|
134
|
+
| `/michi:spec-design <feature>` | 設計生成(Phase 0.3-0.4 ガイダンス付き)⭐推奨 |
|
|
135
|
+
| `/michi:validate-design <feature>` | 設計レビュー(テスト計画完了確認付き) |
|
|
136
|
+
| `/michi:confluence-sync <feature> [type]` | Confluence同期 |
|
|
137
|
+
| `/michi:project-switch <project_id>` | プロジェクト切り替え |
|
|
145
138
|
|
|
146
139
|
## Michi CLIコマンド一覧
|
|
147
140
|
|
|
@@ -149,6 +142,8 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
149
142
|
|
|
150
143
|
| コマンド | 説明 |
|
|
151
144
|
| ------------------------------------------- | ------------------------------------------------- |
|
|
145
|
+
| `michi init` | プロジェクト初期設定(推奨)⭐ |
|
|
146
|
+
| `michi config:global` | グローバル設定作成(~/.michi/config.json) |
|
|
152
147
|
| `michi jira:sync <feature>` | JIRA連携(tasks.md → Epic/Stories) |
|
|
153
148
|
| `michi confluence:sync <feature> [type]` | Confluence同期(requirements/design) |
|
|
154
149
|
| `michi phase:run <feature> <phase>` | フェーズ実行(requirements/design/tasks) |
|
|
@@ -157,7 +152,6 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
157
152
|
| `michi project:list` | プロジェクト一覧 |
|
|
158
153
|
| `michi project:dashboard` | リソースダッシュボード生成 |
|
|
159
154
|
| `michi workflow:run --feature <name>` | 統合ワークフロー実行 |
|
|
160
|
-
| `michi config:interactive` | 対話式設定ツール(.michi/config.json作成) |
|
|
161
155
|
| `michi config:validate` | 設定ファイルのバリデーション |
|
|
162
156
|
| `michi tasks:convert <feature>` | AI-DLC形式のtasks.mdをMichiワークフロー形式に変換 |
|
|
163
157
|
| `michi jira:transition <issueKey> <status>` | JIRAチケットのステータス変更 |
|
|
@@ -185,7 +179,7 @@ gh pr create --head <project-id>/feature/<feature> --base main
|
|
|
185
179
|
### 方法1: Cursorコマンド
|
|
186
180
|
|
|
187
181
|
```
|
|
188
|
-
/
|
|
182
|
+
/michi:project-switch <project-id>
|
|
189
183
|
```
|
|
190
184
|
|
|
191
185
|
### 方法2: ターミナル
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# テスト計画フロー
|
|
2
2
|
|
|
3
|
+
> **Michi 固有ワークフロー**: このテスト計画フロー(Phase 0.3-0.4, Phase 1, Phase A/B/3)は Michi 独自の拡張機能です。cc-sdd 標準には含まれません。
|
|
4
|
+
>
|
|
5
|
+
> `/michi:spec-design` コマンドを使用すると、設計完了後に自動的に Phase 0.3-0.4 へのガイダンスが表示されます。
|
|
6
|
+
|
|
3
7
|
このドキュメントでは、michiを使用したプロジェクトでのテスト計画の流れを説明します。
|
|
4
8
|
|
|
5
9
|
## Phase 0.3: テストタイプの選択
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sk8metal/michi-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Managed Intelligent Comprehensive Hub for Integration - AI-driven development workflow automation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -46,12 +46,10 @@
|
|
|
46
46
|
"build": "tsc && node scripts/copy-static-assets.js",
|
|
47
47
|
"postbuild": "node scripts/set-permissions.js",
|
|
48
48
|
"prepare": "husky",
|
|
49
|
-
"setup:interactive": "tsx scripts/setup-interactive.ts",
|
|
50
49
|
"michi:setup:cursor": "tsx src/cli.ts setup-existing --cursor",
|
|
51
50
|
"michi:setup:claude": "tsx src/cli.ts setup-existing --claude",
|
|
52
51
|
"michi:setup:claude-agent": "tsx src/cli.ts setup-existing --claude-agent",
|
|
53
52
|
"create-project": "tsx scripts/create-project.ts",
|
|
54
|
-
"setup-existing": "tsx scripts/setup-existing-project.ts",
|
|
55
53
|
"confluence:sync": "tsx scripts/confluence-sync.ts",
|
|
56
54
|
"jira:sync": "tsx scripts/jira-sync.ts",
|
|
57
55
|
"github:create-pr": "tsx scripts/pr-automation.ts",
|
|
@@ -66,7 +64,7 @@
|
|
|
66
64
|
"preflight": "tsx scripts/pre-flight-check.ts",
|
|
67
65
|
"pre-publish": "bash scripts/pre-publish-check.sh",
|
|
68
66
|
"test:package": "bash scripts/test-npm-package.sh",
|
|
69
|
-
"config:
|
|
67
|
+
"config:global": "tsx scripts/config-global.ts",
|
|
70
68
|
"config:validate": "tsx scripts/utils/config-validator.ts",
|
|
71
69
|
"test:interactive": "tsx scripts/test-interactive.ts",
|
|
72
70
|
"test": "vitest",
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* グローバル設定ツール
|
|
3
|
+
* ~/.michi/config.json を対話的に作成・更新
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
7
|
+
import { dirname } from 'path';
|
|
8
|
+
import { createInterface, confirm } from './utils/interactive-helpers.js';
|
|
9
|
+
import {
|
|
10
|
+
getConfluenceConfig,
|
|
11
|
+
getJiraConfig,
|
|
12
|
+
getWorkflowConfig,
|
|
13
|
+
type ConfluenceConfigResult,
|
|
14
|
+
type JiraConfigResult,
|
|
15
|
+
type WorkflowConfigResult,
|
|
16
|
+
} from './utils/config-sections.js';
|
|
17
|
+
import { getGlobalConfigPath } from './utils/config-loader.js';
|
|
18
|
+
import { AppConfigSchema } from './config/config-schema.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* プロジェクト設定全体
|
|
22
|
+
*/
|
|
23
|
+
interface ProjectConfig {
|
|
24
|
+
confluence?: ConfluenceConfigResult;
|
|
25
|
+
jira?: JiraConfigResult;
|
|
26
|
+
workflow?: WorkflowConfigResult;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* メイン処理
|
|
31
|
+
*/
|
|
32
|
+
async function main(): Promise<void> {
|
|
33
|
+
const rl = createInterface();
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
console.log('🌐 Michi グローバル設定ツール');
|
|
37
|
+
console.log('='.repeat(60));
|
|
38
|
+
console.log('このツールで ~/.michi/config.json を作成・更新できます。');
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log('グローバル設定は、すべてのプロジェクトに適用されます。');
|
|
41
|
+
console.log('プロジェクト固有の設定は .michi/config.json で上書きできます。');
|
|
42
|
+
console.log('');
|
|
43
|
+
|
|
44
|
+
const globalConfigPath = getGlobalConfigPath();
|
|
45
|
+
const globalConfigDir = dirname(globalConfigPath);
|
|
46
|
+
|
|
47
|
+
let existingConfig: ProjectConfig | null = null;
|
|
48
|
+
|
|
49
|
+
// 既存の設定ファイルを確認
|
|
50
|
+
if (existsSync(globalConfigPath)) {
|
|
51
|
+
console.log(`⚠️ 既存のグローバル設定ファイルが見つかりました: ${globalConfigPath}`);
|
|
52
|
+
const overwrite = await confirm(rl, '上書きしますか?', false);
|
|
53
|
+
|
|
54
|
+
if (!overwrite) {
|
|
55
|
+
console.log('中止しました。');
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
const content = readFileSync(globalConfigPath, 'utf-8');
|
|
61
|
+
existingConfig = JSON.parse(content) as ProjectConfig;
|
|
62
|
+
console.log('既存の設定を読み込みました。\n');
|
|
63
|
+
} catch {
|
|
64
|
+
console.log(
|
|
65
|
+
'既存の設定ファイルの読み込みに失敗しました。新規作成します。\n',
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 設定を対話的に取得
|
|
71
|
+
const config: ProjectConfig = existingConfig || {};
|
|
72
|
+
|
|
73
|
+
// Confluence設定
|
|
74
|
+
const configureConfluence = await confirm(
|
|
75
|
+
rl,
|
|
76
|
+
'Confluence設定をカスタマイズしますか?',
|
|
77
|
+
false,
|
|
78
|
+
);
|
|
79
|
+
if (configureConfluence) {
|
|
80
|
+
config.confluence = await getConfluenceConfig(rl);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// JIRA設定
|
|
84
|
+
const configureJira = await confirm(
|
|
85
|
+
rl,
|
|
86
|
+
'JIRA設定をカスタマイズしますか?',
|
|
87
|
+
false,
|
|
88
|
+
);
|
|
89
|
+
if (configureJira) {
|
|
90
|
+
config.jira = await getJiraConfig(rl);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ワークフロー設定
|
|
94
|
+
const configureWorkflow = await confirm(
|
|
95
|
+
rl,
|
|
96
|
+
'ワークフロー設定をカスタマイズしますか?',
|
|
97
|
+
false,
|
|
98
|
+
);
|
|
99
|
+
if (configureWorkflow) {
|
|
100
|
+
config.workflow = await getWorkflowConfig(rl);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 設定の確認
|
|
104
|
+
console.log('\n📋 設定内容の確認');
|
|
105
|
+
console.log('='.repeat(60));
|
|
106
|
+
console.log(JSON.stringify(config, null, 2));
|
|
107
|
+
console.log('');
|
|
108
|
+
|
|
109
|
+
const confirmSave = await confirm(rl, 'この設定を保存しますか?', true);
|
|
110
|
+
|
|
111
|
+
if (!confirmSave) {
|
|
112
|
+
console.log('保存をキャンセルしました。');
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ディレクトリを作成(存在しない場合)
|
|
117
|
+
if (!existsSync(globalConfigDir)) {
|
|
118
|
+
mkdirSync(globalConfigDir, { recursive: true });
|
|
119
|
+
console.log(`\n📁 ディレクトリを作成しました: ${globalConfigDir}`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// 設定ファイルを保存
|
|
123
|
+
writeFileSync(globalConfigPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
124
|
+
console.log(`\n✅ グローバル設定ファイルを保存しました: ${globalConfigPath}`);
|
|
125
|
+
|
|
126
|
+
// バリデーション(スキーマチェックのみ)
|
|
127
|
+
console.log('\n🔍 設定ファイルのバリデーション...');
|
|
128
|
+
try {
|
|
129
|
+
AppConfigSchema.parse(config);
|
|
130
|
+
console.log('✅ 設定ファイルは有効です。');
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.warn('⚠️ 設定ファイルに問題があります:');
|
|
133
|
+
console.warn(error instanceof Error ? error.message : error);
|
|
134
|
+
console.warn(' プロジェクト固有の設定で補完することができます。');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
console.log('\n🎉 グローバル設定が完了しました!');
|
|
138
|
+
console.log(' この設定はすべてのプロジェクトに適用されます。');
|
|
139
|
+
console.log(' プロジェクト固有の設定で上書きしたい場合は:');
|
|
140
|
+
console.log(' グローバル設定をコピーして .michi/config.json として編集してください');
|
|
141
|
+
} catch (error) {
|
|
142
|
+
console.error(
|
|
143
|
+
'❌ エラーが発生しました:',
|
|
144
|
+
error instanceof Error ? error.message : error,
|
|
145
|
+
);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
} finally {
|
|
148
|
+
rl.close();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// CLI実行
|
|
153
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
154
|
+
main().catch((error) => {
|
|
155
|
+
console.error('❌ 予期しないエラー:', error);
|
|
156
|
+
process.exit(1);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export { main as configGlobal };
|