@sk8metal/michi-cli 0.8.1 → 0.8.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/CHANGELOG.md +8 -0
- package/docs/michi-development/design/config-unification.md +38 -4094
- package/docs/michi-development/design/design-config-current-state.md +330 -0
- package/docs/michi-development/design/design-config-implementation.md +628 -0
- package/docs/michi-development/design/design-config-migration.md +952 -0
- package/docs/michi-development/design/design-config-security.md +771 -0
- package/docs/michi-development/design/design-config-solution.md +583 -0
- package/docs/michi-development/design/design-config-testing.md +892 -0
- package/docs/michi-development/testing/manual-verification-flow.md +6 -1377
- package/docs/michi-development/testing/manual-verification-other-tools.md +1277 -0
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +122 -0
- package/docs/user-guide/getting-started/setup.md +14 -32
- package/docs/user-guide/guides/multi-repo-guide.md +367 -44
- package/docs/user-guide/reference/config.md +1 -1
- package/docs/user-guide/reference/security-test-payloads.md +50 -0
- package/docs/user-guide/release/ci-setup-java.md +114 -0
- package/docs/user-guide/release/ci-setup-nodejs.md +94 -0
- package/docs/user-guide/release/ci-setup-php.md +102 -0
- package/docs/user-guide/release/ci-setup-troubleshooting.md +94 -0
- package/docs/user-guide/release/ci-setup.md +17 -370
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +9 -3
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +4 -43
- package/package.json +2 -3
- package/docs/design-issue-55.md +0 -240
- package/docs/design-issue-56.md +0 -181
- package/docs/user-guide/guides/multi-repo-migration-guide.md +0 -516
package/docs/design-issue-55.md
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
# Issue #55: バリデーションエラーハンドリング修正 - 詳細設計
|
|
2
|
-
|
|
3
|
-
## 問題の根本原因
|
|
4
|
-
|
|
5
|
-
### 現在の実装(src/commands/setup-existing.ts)
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
// buildConfig関数内(Line 167-172)
|
|
9
|
-
try {
|
|
10
|
-
projectName = validateProjectName(projectName);
|
|
11
|
-
} catch (error) {
|
|
12
|
-
throw new Error(`プロジェクト名が不正です: ${error instanceof Error ? error.message : error}`);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// buildConfig関数内(Line 180-185)
|
|
16
|
-
try {
|
|
17
|
-
jiraKey = validateJiraKey(jiraKey);
|
|
18
|
-
} catch (error) {
|
|
19
|
-
throw new Error(`JIRAキーが不正です: ${error instanceof Error ? error.message : error}`);
|
|
20
|
-
}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### テストの期待値
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
// validation.test.ts(Line 214)
|
|
27
|
-
.rejects.toThrow(/プロジェクト名が空です/);
|
|
28
|
-
|
|
29
|
-
// validation.test.ts(Line 225)
|
|
30
|
-
.rejects.toThrow(/パス区切り文字/);
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### 問題
|
|
34
|
-
|
|
35
|
-
**実際のエラーメッセージ**: `プロジェクト名が不正です: プロジェクト名が空です`
|
|
36
|
-
**期待されるメッセージ**: `プロジェクト名が空です`
|
|
37
|
-
|
|
38
|
-
→ **ラッピングによってマッチしない**
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 修正方針
|
|
43
|
-
|
|
44
|
-
### Option 1: エラーをラッピングせずそのままスロー(推奨)
|
|
45
|
-
|
|
46
|
-
**メリット**:
|
|
47
|
-
- テストの期待値と一致する
|
|
48
|
-
- エラーメッセージがシンプル
|
|
49
|
-
- エラーの原因が直接的に伝わる
|
|
50
|
-
|
|
51
|
-
**実装**:
|
|
52
|
-
```typescript
|
|
53
|
-
// buildConfig関数内(Line 167-172)
|
|
54
|
-
try {
|
|
55
|
-
projectName = validateProjectName(projectName);
|
|
56
|
-
} catch (error) {
|
|
57
|
-
// ラッピングせず、そのままスロー
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// buildConfig関数内(Line 180-185)
|
|
62
|
-
try {
|
|
63
|
-
jiraKey = validateJiraKey(jiraKey);
|
|
64
|
-
} catch (error) {
|
|
65
|
-
// ラッピングせず、そのままスロー
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Option 2: テストの期待値を修正(非推奨)
|
|
71
|
-
|
|
72
|
-
**デメリット**:
|
|
73
|
-
- エラーメッセージが冗長になる
|
|
74
|
-
- ラッピングの必要性が不明瞭
|
|
75
|
-
|
|
76
|
-
**実装**:
|
|
77
|
-
```typescript
|
|
78
|
-
// テストを修正
|
|
79
|
-
.rejects.toThrow(/プロジェクト名が不正です.*プロジェクト名が空です/);
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 採用する修正方針
|
|
85
|
-
|
|
86
|
-
**Option 1を採用**
|
|
87
|
-
|
|
88
|
-
理由:
|
|
89
|
-
1. エラーメッセージがシンプルで分かりやすい
|
|
90
|
-
2. `validateProjectName`や`validateJiraKey`が既に適切なエラーメッセージを返している
|
|
91
|
-
3. 二重ラッピングの必要性がない
|
|
92
|
-
4. テストの期待値が自然
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## 修正対象ファイル
|
|
97
|
-
|
|
98
|
-
### 1. src/commands/setup-existing.ts
|
|
99
|
-
|
|
100
|
-
**修正箇所**: `buildConfig`関数内のエラーハンドリング
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
// Line 167-172: プロジェクト名バリデーション
|
|
104
|
-
try {
|
|
105
|
-
projectName = validateProjectName(projectName);
|
|
106
|
-
} catch (error) {
|
|
107
|
-
throw error; // 修正: ラッピングを削除
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Line 180-185: JIRAキーバリデーション
|
|
111
|
-
try {
|
|
112
|
-
jiraKey = validateJiraKey(jiraKey);
|
|
113
|
-
} catch (error) {
|
|
114
|
-
throw error; // 修正: ラッピングを削除
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 2. src/__tests__/integration/setup/validation.test.ts
|
|
119
|
-
|
|
120
|
-
**修正箇所**: スキップされた5つのテストの`.skip`を削除
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
// Line 145
|
|
124
|
-
it('should reject unsupported language', async () => { ... });
|
|
125
|
-
|
|
126
|
-
// Line 207
|
|
127
|
-
it('should reject empty project name', async () => { ... });
|
|
128
|
-
|
|
129
|
-
// Line 218
|
|
130
|
-
it('should reject project name with path traversal characters', async () => { ... });
|
|
131
|
-
|
|
132
|
-
// Line 229
|
|
133
|
-
it('should reject project name with backslash', async () => { ... });
|
|
134
|
-
|
|
135
|
-
// Line 240
|
|
136
|
-
it('should reject project name with control characters', async () => { ... });
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## 影響範囲
|
|
142
|
-
|
|
143
|
-
### 変更による影響
|
|
144
|
-
|
|
145
|
-
1. **エラーメッセージの変更**:
|
|
146
|
-
- 修正前: `プロジェクト名が不正です: <詳細メッセージ>`
|
|
147
|
-
- 修正後: `<詳細メッセージ>`(例: `プロジェクト名が空です`)
|
|
148
|
-
|
|
149
|
-
2. **ユーザー体験**:
|
|
150
|
-
- より直接的でシンプルなエラーメッセージ
|
|
151
|
-
- エラーの原因が明確になる
|
|
152
|
-
|
|
153
|
-
3. **他のテストへの影響**:
|
|
154
|
-
- 既存の成功テスト(プロジェクト名とJIRAキーの正常系)には影響なし
|
|
155
|
-
- エラーテストのうち、以下は既に成功している(ラッピングされていないため):
|
|
156
|
-
- Line 250: `should reject project name that is too long`
|
|
157
|
-
- Line 328-366: JIRAキーバリデーションのエラーテスト
|
|
158
|
-
|
|
159
|
-
### 回帰テストの必要性
|
|
160
|
-
|
|
161
|
-
以下のテストが引き続き成功することを確認:
|
|
162
|
-
- [ ] Line 250: `should reject project name that is too long`
|
|
163
|
-
- [ ] Line 328: `should reject JIRA key with 1 character`
|
|
164
|
-
- [ ] Line 338: `should reject JIRA key with 11 characters`
|
|
165
|
-
- [ ] Line 348: `should reject JIRA key with numbers`
|
|
166
|
-
- [ ] Line 358: `should reject JIRA key with special characters`
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## テスト実行計画
|
|
171
|
-
|
|
172
|
-
### Step 1: 修正前のテスト実行(失敗確認)
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
cd /Users/arigatatsuya/Work/git/michi
|
|
176
|
-
npm test -- validation.test.ts
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**期待結果**: 5つのテストがスキップされていることを確認
|
|
180
|
-
|
|
181
|
-
### Step 2: 実装修正
|
|
182
|
-
|
|
183
|
-
1. `src/commands/setup-existing.ts`のエラーハンドリングを修正
|
|
184
|
-
2. まだ`.skip`は残す
|
|
185
|
-
|
|
186
|
-
### Step 3: テスト実行(成功確認)
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
npm test -- validation.test.ts
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**期待結果**: 修正後も既存の成功テストが全て成功
|
|
193
|
-
|
|
194
|
-
### Step 4: `.skip`削除
|
|
195
|
-
|
|
196
|
-
`src/__tests__/integration/setup/validation.test.ts`の5つのテストから`.skip`を削除
|
|
197
|
-
|
|
198
|
-
### Step 5: 最終テスト実行
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
npm test -- validation.test.ts
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
**期待結果**: 全テスト(5つの新規有効化テストを含む)が成功
|
|
205
|
-
|
|
206
|
-
### Step 6: 全テストスイート実行
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
npm test
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
**期待結果**: 全プロジェクトのテストが成功
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## チェックリスト
|
|
217
|
-
|
|
218
|
-
### 実装
|
|
219
|
-
- [ ] `src/commands/setup-existing.ts` Line 167-172 修正
|
|
220
|
-
- [ ] `src/commands/setup-existing.ts` Line 180-185 修正
|
|
221
|
-
|
|
222
|
-
### テスト
|
|
223
|
-
- [ ] `validation.test.ts` Line 145 `.skip`削除
|
|
224
|
-
- [ ] `validation.test.ts` Line 207 `.skip`削除
|
|
225
|
-
- [ ] `validation.test.ts` Line 218 `.skip`削除
|
|
226
|
-
- [ ] `validation.test.ts` Line 229 `.skip`削除
|
|
227
|
-
- [ ] `validation.test.ts` Line 240 `.skip`削除
|
|
228
|
-
|
|
229
|
-
### 検証
|
|
230
|
-
- [ ] 修正前テスト実行(失敗/スキップ確認)
|
|
231
|
-
- [ ] 実装修正
|
|
232
|
-
- [ ] テスト実行(既存テスト成功確認)
|
|
233
|
-
- [ ] `.skip`削除
|
|
234
|
-
- [ ] テスト実行(新規テスト成功確認)
|
|
235
|
-
- [ ] 全テストスイート実行(全テスト成功確認)
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
最終更新: 2025-11-17 (月)
|
|
240
|
-
|
package/docs/design-issue-56.md
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# Issue #56: Claude-agentテンプレート構造修正 - 詳細設計
|
|
2
|
-
|
|
3
|
-
## 問題の根本原因
|
|
4
|
-
|
|
5
|
-
### 現在の状態
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
templates/claude-agent/
|
|
9
|
-
└── README.md # これしかない
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### 環境設定(scripts/constants/environments.ts)
|
|
13
|
-
|
|
14
|
-
```typescript
|
|
15
|
-
'claude-agent': {
|
|
16
|
-
rulesDir: '.claude/rules', // ← 問題: テストは .claude/subagents を期待
|
|
17
|
-
commandsDir: '.claude/commands/kiro',
|
|
18
|
-
templateSource: 'claude-agent'
|
|
19
|
-
}
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### テストの期待値
|
|
23
|
-
|
|
24
|
-
1. `.claude/subagents/`ディレクトリが作成される
|
|
25
|
-
2. `.claude/rules`ディレクトリは作成されない(Subagents環境では不要)
|
|
26
|
-
3. `.claude/commands/kiro/`ディレクトリが作成される
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 修正方針
|
|
31
|
-
|
|
32
|
-
### 1. 環境設定の修正
|
|
33
|
-
|
|
34
|
-
**ファイル**: `scripts/constants/environments.ts`
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
'claude-agent': {
|
|
38
|
-
rulesDir: '.claude/subagents', // 修正: rules → subagents
|
|
39
|
-
commandsDir: '.claude/commands/kiro',
|
|
40
|
-
templateSource: 'claude-agent'
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**影響範囲**:
|
|
45
|
-
- `setup-existing.ts`が`rulesDir`を使用してディレクトリを作成
|
|
46
|
-
- `claude-agent`環境では`.claude/subagents`が作成される
|
|
47
|
-
|
|
48
|
-
### 2. テンプレートディレクトリ構造の作成
|
|
49
|
-
|
|
50
|
-
**目標構造**:
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
templates/claude-agent/
|
|
54
|
-
├── README.md
|
|
55
|
-
├── subagents/
|
|
56
|
-
│ ├── .gitkeep # 空ディレクトリを保持
|
|
57
|
-
│ └── (将来的にサブエージェント定義ファイルを追加)
|
|
58
|
-
└── commands/
|
|
59
|
-
└── kiro/
|
|
60
|
-
├── .gitkeep # 空ディレクトリを保持
|
|
61
|
-
└── (将来的にコマンド定義ファイルを追加)
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**理由**:
|
|
65
|
-
- Issue #56の主目的は「テストを有効化すること」
|
|
66
|
-
- サブエージェントやコマンドの具体的な内容は別Issueで対応
|
|
67
|
-
- 最低限の構造を作成し、テストを成功させる
|
|
68
|
-
|
|
69
|
-
### 3. テスト有効化
|
|
70
|
-
|
|
71
|
-
**対象ファイル**:
|
|
72
|
-
1. `src/__tests__/integration/setup/validation.test.ts` (1個)
|
|
73
|
-
2. `src/__tests__/integration/setup/claude-agent.test.ts` (3個)
|
|
74
|
-
|
|
75
|
-
**修正箇所**:
|
|
76
|
-
- Line 78 (validation.test.ts): `should accept claude-agent environment flag`
|
|
77
|
-
- Line 43 (claude-agent.test.ts): `should create .claude/subagents directory`
|
|
78
|
-
- Line 99 (claude-agent.test.ts): `should have subagents directory structure`
|
|
79
|
-
- Line 125 (claude-agent.test.ts): `should not create basic Claude rules directory`
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## 実装手順
|
|
84
|
-
|
|
85
|
-
### Step 1: 環境設定の修正(5分)
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
# ファイル: scripts/constants/environments.ts
|
|
89
|
-
# Line 22を修正
|
|
90
|
-
rulesDir: '.claude/subagents',
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Step 2: テンプレートディレクトリ作成(10分)
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
cd /Users/arigatatsuya/Work/git/michi
|
|
97
|
-
|
|
98
|
-
# subagentsディレクトリ作成
|
|
99
|
-
mkdir -p templates/claude-agent/subagents
|
|
100
|
-
touch templates/claude-agent/subagents/.gitkeep
|
|
101
|
-
|
|
102
|
-
# commandsディレクトリ作成
|
|
103
|
-
mkdir -p templates/claude-agent/commands/kiro
|
|
104
|
-
touch templates/claude-agent/commands/kiro/.gitkeep
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Step 3: テスト有効化(5分)
|
|
108
|
-
|
|
109
|
-
4つのテストから`.skip`を削除
|
|
110
|
-
|
|
111
|
-
### Step 4: テスト実行(5分)
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
npm test -- claude-agent.test.ts
|
|
115
|
-
npm test -- validation.test.ts
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## テストの期待結果
|
|
121
|
-
|
|
122
|
-
### validation.test.ts
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
✓ should accept claude-agent environment flag
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### claude-agent.test.ts
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
✓ should create .claude/subagents directory
|
|
132
|
-
✓ should have subagents directory structure
|
|
133
|
-
✓ should not create basic Claude rules directory
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## チェックリスト
|
|
139
|
-
|
|
140
|
-
### 実装
|
|
141
|
-
- [ ] `scripts/constants/environments.ts` Line 22 修正
|
|
142
|
-
- [ ] `templates/claude-agent/subagents/.gitkeep` 作成
|
|
143
|
-
- [ ] `templates/claude-agent/commands/kiro/.gitkeep` 作成
|
|
144
|
-
|
|
145
|
-
### テスト
|
|
146
|
-
- [ ] `validation.test.ts` Line 78 `.skip`削除
|
|
147
|
-
- [ ] `claude-agent.test.ts` Line 43 `.skip`削除
|
|
148
|
-
- [ ] `claude-agent.test.ts` Line 99 `.skip`削除
|
|
149
|
-
- [ ] `claude-agent.test.ts` Line 125 `.skip`削除
|
|
150
|
-
|
|
151
|
-
### 検証
|
|
152
|
-
- [ ] `claude-agent.test.ts`実行(4つのテスト成功)
|
|
153
|
-
- [ ] `validation.test.ts`実行(1つのテスト成功)
|
|
154
|
-
- [ ] 全テストスイート実行(全テスト成功)
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## 将来的な拡張(別Issue)
|
|
159
|
-
|
|
160
|
-
### Subagentsファイルの追加
|
|
161
|
-
|
|
162
|
-
`templates/claude-agent/subagents/`に以下を追加:
|
|
163
|
-
- `manager-pj.md`
|
|
164
|
-
- `manager-agent.md`
|
|
165
|
-
- `developer.md`
|
|
166
|
-
- `test-developer.md`
|
|
167
|
-
- `design-expert.md`
|
|
168
|
-
- `review-cq.md`
|
|
169
|
-
|
|
170
|
-
### Commandsファイルの追加
|
|
171
|
-
|
|
172
|
-
`templates/claude-agent/commands/kiro/`に以下を追加:
|
|
173
|
-
- `spec-init.md`
|
|
174
|
-
- `spec-requirements.md`
|
|
175
|
-
- `spec-design.md`
|
|
176
|
-
- `spec-tasks.md`
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
最終更新: 2025-11-17 (月)
|
|
181
|
-
|