@sk8metal/michi-cli 0.10.1 → 0.12.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/README.md +71 -848
- package/dist/scripts/constants/environments.d.ts +1 -1
- package/dist/scripts/constants/environments.d.ts.map +1 -1
- package/dist/scripts/constants/environments.js +0 -20
- package/dist/scripts/constants/environments.js.map +1 -1
- package/dist/scripts/phase-runner.js +1 -1
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +18 -0
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.js +42 -0
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +3 -3
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/dist/scripts/utils/template-finder.d.ts +2 -2
- package/dist/scripts/utils/template-finder.d.ts.map +1 -1
- package/dist/scripts/utils/template-finder.js +3 -8
- package/dist/scripts/utils/template-finder.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +0 -8
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/init.d.ts +0 -4
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +6 -30
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/setup-existing.d.ts +2 -6
- package/dist/src/commands/setup-existing.d.ts.map +1 -1
- package/dist/src/commands/setup-existing.js +8 -142
- package/dist/src/commands/setup-existing.js.map +1 -1
- package/docs/README.md +20 -83
- package/docs/getting-started/configuration.md +350 -0
- package/docs/getting-started/installation.md +59 -0
- package/docs/getting-started/quick-start.md +76 -0
- package/docs/guides/atlassian-integration.md +116 -0
- package/docs/guides/claude-code.md +155 -0
- package/docs/guides/multi-repo.md +117 -0
- package/docs/guides/workflow.md +382 -0
- package/docs/reference/ai-commands.md +92 -0
- package/docs/reference/cli.md +752 -0
- package/docs/reference/environment-variables.md +192 -0
- package/docs/troubleshooting.md +498 -0
- package/package.json +1 -3
- package/scripts/__tests__/create-project.test.ts +12 -12
- package/scripts/__tests__/setup-existing-project.test.ts +22 -22
- package/scripts/constants/__tests__/environments.test.ts +7 -50
- package/scripts/constants/environments.ts +1 -27
- package/scripts/phase-runner.ts +1 -1
- package/scripts/template/__tests__/renderer.test.ts +21 -21
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
- package/scripts/utils/multi-repo-validator.ts +50 -0
- package/scripts/utils/tasks-format-validator.ts +3 -3
- package/scripts/utils/template-finder.ts +5 -11
- package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
- package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
- package/templates/claude/commands/michi/e2e-plan.md +1 -1
- package/templates/claude/commands/michi/spec-design.md +2 -2
- package/templates/claude/commands/michi/spec-tasks.md +156 -0
- package/templates/claude/commands/michi/test-planning.md +1 -1
- package/templates/claude/commands/michi/validate-design.md +3 -3
- package/templates/claude/commands/michi-multi-repo/impl-all.md +30 -1
- package/templates/claude/commands/michi-multi-repo/propagate-specs.md +14 -1
- package/templates/claude/commands/michi-multi-repo/spec-review.md +16 -2
- package/templates/claude-agent/agents/repo-spec-executor.md +1 -1
- package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
- package/templates/claude-agent/rules/code-size-monitor.md +26 -0
- package/templates/claude-agent/rules/code-size-rules.md +32 -0
- package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
- package/docs/context.md +0 -59
- package/docs/michi-development/contributing/development.md +0 -341
- package/docs/michi-development/contributing/release.md +0 -365
- package/docs/michi-development/design/config-unification.md +0 -733
- package/docs/michi-development/design/design-config-current-state.md +0 -330
- package/docs/michi-development/design/design-config-implementation.md +0 -628
- package/docs/michi-development/design/design-config-migration.md +0 -952
- package/docs/michi-development/design/design-config-security.md +0 -771
- package/docs/michi-development/design/design-config-solution.md +0 -583
- package/docs/michi-development/design/design-config-testing.md +0 -892
- package/docs/michi-development/testing/manual-verification-flow.md +0 -871
- package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
- package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
- package/docs/michi-development/testing-strategy.md +0 -87
- package/docs/plan.md +0 -275
- package/docs/user-guide/getting-started/github-token-setup.md +0 -510
- package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
- package/docs/user-guide/getting-started/quick-start.md +0 -212
- package/docs/user-guide/getting-started/setup.md +0 -819
- package/docs/user-guide/guides/agent-skills-integration.md +0 -222
- package/docs/user-guide/guides/customization.md +0 -537
- package/docs/user-guide/guides/internationalization.md +0 -540
- package/docs/user-guide/guides/migration-guide.md +0 -138
- package/docs/user-guide/guides/multi-project.md +0 -368
- package/docs/user-guide/guides/multi-repo-guide.md +0 -1590
- package/docs/user-guide/guides/phase-automation.md +0 -419
- package/docs/user-guide/guides/workflow.md +0 -574
- package/docs/user-guide/hands-on/README.md +0 -142
- package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
- package/docs/user-guide/hands-on/claude-setup.md +0 -452
- package/docs/user-guide/hands-on/cursor-setup.md +0 -353
- package/docs/user-guide/hands-on/troubleshooting.md +0 -964
- package/docs/user-guide/hands-on/verification-checklist.md +0 -439
- package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -1078
- package/docs/user-guide/reference/config.md +0 -589
- package/docs/user-guide/reference/multi-repo-api.md +0 -771
- package/docs/user-guide/reference/quick-reference.md +0 -297
- package/docs/user-guide/reference/security-test-payloads.md +0 -50
- package/docs/user-guide/reference/tasks-template.md +0 -550
- package/docs/user-guide/release/ci-setup-java.md +0 -114
- package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
- package/docs/user-guide/release/ci-setup-php.md +0 -102
- package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
- package/docs/user-guide/release/ci-setup.md +0 -188
- package/docs/user-guide/release/release-flow.md +0 -476
- package/docs/user-guide/templates/test-specs/README.md +0 -173
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
- package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
- package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
- package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
- package/docs/user-guide/testing/integration-tests.md +0 -312
- package/docs/user-guide/testing/tdd-cycle.md +0 -349
- package/docs/user-guide/testing/test-execution-flow.md +0 -396
- package/docs/user-guide/testing/test-failure-handling.md +0 -521
- package/docs/user-guide/testing/test-planning-flow.md +0 -185
- package/docs/user-guide/testing-strategy.md +0 -185
- package/docs/verification-guide.md +0 -518
- package/templates/cline/rules/atlassian-integration.md +0 -36
- package/templates/cline/rules/michi-core.md +0 -56
- package/templates/codex/AGENTS.override.md +0 -277
- package/templates/codex/prompts/confluence-sync.md +0 -177
- package/templates/codex/rules/README.md +0 -210
- package/templates/cursor/commands/kiro/kiro-spec-impl.md +0 -244
- package/templates/cursor/commands/kiro/kiro-spec-tasks.md +0 -354
- package/templates/cursor/commands/michi/confluence-sync.md +0 -76
- package/templates/cursor/commands/michi/project-switch.md +0 -69
- package/templates/cursor/rules/atlassian-mcp.mdc +0 -188
- package/templates/cursor/rules/github-ssot.mdc +0 -151
- package/templates/cursor/rules/multi-project.mdc +0 -81
- package/templates/gemini/commands/README.md +0 -41
- package/templates/gemini/rules/GEMINI.md +0 -80
|
@@ -1,540 +0,0 @@
|
|
|
1
|
-
# AI駆動多言語対応ガイド
|
|
2
|
-
|
|
3
|
-
> **凡例について**: `<feature>` などの記号の意味は [README.md#凡例の記号説明](../../README.md#凡例の記号説明) を参照してください。
|
|
4
|
-
|
|
5
|
-
## 概要
|
|
6
|
-
|
|
7
|
-
Michiは、cc-sdd準拠のAI駆動多言語対応システムを採用しています。このアプローチでは、静的な翻訳ファイルを使用せず、AIの多言語生成能力を最大限に活用します。
|
|
8
|
-
|
|
9
|
-
### 主な特徴
|
|
10
|
-
|
|
11
|
-
- ✅ **単一の英語テンプレート**: 翻訳ファイル不要、英語テンプレートのみ管理
|
|
12
|
-
- ✅ **AI駆動生成**: 実行時に目的言語で出力を生成
|
|
13
|
-
- ✅ **12言語サポート**: 日本語、英語、中国語(繁体字/簡体字)、スペイン語、ポルトガル語、ドイツ語、フランス語、ロシア語、イタリア語、韓国語、アラビア語
|
|
14
|
-
- ✅ **1行で言語追加**: 新言語追加が簡単
|
|
15
|
-
- ✅ **ゼロ依存**: 外部i18nライブラリ不要
|
|
16
|
-
|
|
17
|
-
## 設計思想
|
|
18
|
-
|
|
19
|
-
### Think in English, Generate in Target Language
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
const DEV_GUIDELINES_MAP = {
|
|
23
|
-
ja: '- Think in English, but generate responses in Japanese (思考は英語、回答の生成は日本語で行うように)'
|
|
24
|
-
};
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
この指示により:
|
|
28
|
-
|
|
29
|
-
1. **AIは英語で推論**: 最高品質の推論能力を発揮
|
|
30
|
-
2. **出力は目的言語で生成**: 自然で文化的に適切な表現
|
|
31
|
-
3. **翻訳臭さを回避**: 機械翻訳的な不自然さがない
|
|
32
|
-
|
|
33
|
-
### 従来のアプローチとの比較
|
|
34
|
-
|
|
35
|
-
#### ❌ 従来のi18nアプローチ(不採用)
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
locales/ja/rules/michi-core.md ← 日本語翻訳ファイル
|
|
39
|
-
locales/en/rules/michi-core.md ← 英語ファイル
|
|
40
|
-
locales/zh/rules/michi-core.md ← 中国語翻訳ファイル
|
|
41
|
-
locales/es/rules/michi-core.md ← スペイン語翻訳ファイル
|
|
42
|
-
...
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**問題点**:
|
|
46
|
-
- 翻訳ファイル12個×ファイル数の管理負担
|
|
47
|
-
- 翻訳の品質管理が困難
|
|
48
|
-
- 更新時の同期作業が発生
|
|
49
|
-
- 翻訳の一貫性を保つのが難しい
|
|
50
|
-
- ファイル数の爆発(言語 × ファイル)
|
|
51
|
-
|
|
52
|
-
#### ✅ AI駆動アプローチ(採用)
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
templates/cursor/rules/github-ssot.md (英語のみ)
|
|
56
|
-
+ {{DEV_GUIDELINES}} プレースホルダー
|
|
57
|
-
+ AI が実行時に指定言語で生成
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**利点**:
|
|
61
|
-
- 英語テンプレート1つのみ管理
|
|
62
|
-
- 新言語追加が1行で完了
|
|
63
|
-
- AIの多言語能力を最大限活用
|
|
64
|
-
- 文脈依存の自然な表現
|
|
65
|
-
- メンテナンスコストが低い
|
|
66
|
-
|
|
67
|
-
### メタデータ駆動
|
|
68
|
-
|
|
69
|
-
プロジェクトの言語設定は `.kiro/project.json` で管理:
|
|
70
|
-
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"projectId": "my-project",
|
|
74
|
-
"language": "ja"
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
AIコマンド実行時、このメタデータを読み取り、指定言語で出力を生成します。
|
|
79
|
-
|
|
80
|
-
## サポート言語
|
|
81
|
-
|
|
82
|
-
Michiは以下の12言語をサポートしています:
|
|
83
|
-
|
|
84
|
-
| 言語コード | 言語名 | DEV_GUIDELINES |
|
|
85
|
-
|-----------|--------|----------------|
|
|
86
|
-
| `en` | English | Think in English, generate responses in English |
|
|
87
|
-
| `ja` | 日本語 | Think in English, but generate responses in Japanese |
|
|
88
|
-
| `zh-TW` | 繁體中文 | 以英文思考,但以繁體中文生成回應 |
|
|
89
|
-
| `zh` | 简体中文 | 以英文思考,但以简体中文生成回复 |
|
|
90
|
-
| `es` | Español | Think in English, generate responses in Spanish |
|
|
91
|
-
| `pt` | Português | Think in English, generate responses in Portuguese |
|
|
92
|
-
| `de` | Deutsch | Think in English, generate responses in German |
|
|
93
|
-
| `fr` | Français | Think in English, generate responses in French |
|
|
94
|
-
| `ru` | Русский | Think in English, generate responses in Russian |
|
|
95
|
-
| `it` | Italiano | Think in English, generate responses in Italian |
|
|
96
|
-
| `ko` | 한국어 | Think in English, generate responses in Korean |
|
|
97
|
-
| `ar` | العربية | Think in English, generate responses in Arabic |
|
|
98
|
-
|
|
99
|
-
## プレースホルダーシステム
|
|
100
|
-
|
|
101
|
-
### 利用可能なプレースホルダー
|
|
102
|
-
|
|
103
|
-
テンプレートで使用できるプレースホルダー:
|
|
104
|
-
|
|
105
|
-
| プレースホルダー | 説明 | 例 |
|
|
106
|
-
|-----------------|------|-----|
|
|
107
|
-
| `{{LANG_CODE}}` | 言語コード | `ja`, `en` |
|
|
108
|
-
| `{{DEV_GUIDELINES}}` | 開発ガイドライン | `- Think in English, but generate responses in Japanese...` |
|
|
109
|
-
| `{{KIRO_DIR}}` | Kiroディレクトリ名 | `.kiro` |
|
|
110
|
-
| `{{AGENT_DIR}}` | エージェントディレクトリ名 | `.cursor`, `.claude` |
|
|
111
|
-
| `{{PROJECT_ID}}` | プロジェクトID | `my-project` |
|
|
112
|
-
| `{{FEATURE_NAME}}` | 機能名 | `user-auth` |
|
|
113
|
-
| `{{TIMESTAMP}}` | タイムスタンプ | `2025-01-15T10:30:00Z` |
|
|
114
|
-
|
|
115
|
-
### プレースホルダーの置換ルール
|
|
116
|
-
|
|
117
|
-
プレースホルダーは正規表現ベースで置換されます:
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
template.replace(/\{\{([A-Z_]+)\}\}/g, (match, key) => {
|
|
121
|
-
const value = context[key];
|
|
122
|
-
return value !== undefined ? String(value) : match;
|
|
123
|
-
});
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**重要**: プレースホルダー名は:
|
|
127
|
-
- 大文字のみ(`A-Z`)
|
|
128
|
-
- アンダースコア区切り(`_`)
|
|
129
|
-
- 二重中括弧で囲む(`{{...}}`)
|
|
130
|
-
|
|
131
|
-
## テンプレート作成ガイド
|
|
132
|
-
|
|
133
|
-
### 基本的なテンプレート構造
|
|
134
|
-
|
|
135
|
-
英語でテンプレートを作成し、`{{DEV_GUIDELINES}}`プレースホルダーを挿入します。
|
|
136
|
-
|
|
137
|
-
**テンプレート例** (`templates/cursor/rules/github-ssot.md`):
|
|
138
|
-
|
|
139
|
-
```markdown
|
|
140
|
-
---
|
|
141
|
-
title: GitHub Single Source of Truth Rules
|
|
142
|
-
description: {{DEV_GUIDELINES}} for using GitHub as SSoT and syncing with Confluence
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
# GitHub Single Source of Truth (SSoT) Rules
|
|
146
|
-
|
|
147
|
-
## Basic Principles
|
|
148
|
-
|
|
149
|
-
### Single Source of Truth
|
|
150
|
-
- **All specifications managed in GitHub** (.kiro/specs/)
|
|
151
|
-
- Confluence is **for reference and approval only** (edit only in GitHub)
|
|
152
|
-
- Avoid dual management
|
|
153
|
-
|
|
154
|
-
### Data Flow
|
|
155
|
-
```
|
|
156
|
-
GitHub (.kiro/specs/) ← Source of Truth (editable)
|
|
157
|
-
↓ sync
|
|
158
|
-
Confluence ← View & Approval only (read-only)
|
|
159
|
-
```
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### `{{DEV_GUIDELINES}}`の挿入位置
|
|
163
|
-
|
|
164
|
-
`{{DEV_GUIDELINES}}`は以下の場所に挿入することを推奨します:
|
|
165
|
-
|
|
166
|
-
1. **ファイルヘッダーのdescription**: メタデータとして
|
|
167
|
-
2. **開発ルールセクション**: AIへの指示として
|
|
168
|
-
3. **コマンドの説明**: 出力言語の指定として
|
|
169
|
-
|
|
170
|
-
**推奨パターン**:
|
|
171
|
-
|
|
172
|
-
```markdown
|
|
173
|
-
---
|
|
174
|
-
title: Rule Name
|
|
175
|
-
description: {{DEV_GUIDELINES}} for specific context
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
# Rule Title
|
|
179
|
-
|
|
180
|
-
## Development Guidelines
|
|
181
|
-
|
|
182
|
-
{{DEV_GUIDELINES}}
|
|
183
|
-
|
|
184
|
-
## Other Sections
|
|
185
|
-
...
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### レンダリング結果
|
|
189
|
-
|
|
190
|
-
上記のテンプレートが日本語(`ja`)でレンダリングされた場合:
|
|
191
|
-
|
|
192
|
-
```markdown
|
|
193
|
-
---
|
|
194
|
-
title: GitHub Single Source of Truth Rules
|
|
195
|
-
description: - Think in English, but generate responses in Japanese (思考は英語、回答の生成は日本語で行うように) for using GitHub as SSoT and syncing with Confluence
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
# GitHub Single Source of Truth (SSoT) Rules
|
|
199
|
-
|
|
200
|
-
## Basic Principles
|
|
201
|
-
...
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## 実装詳細
|
|
205
|
-
|
|
206
|
-
### TemplateContext
|
|
207
|
-
|
|
208
|
-
テンプレートコンテキストは `createTemplateContext()` 関数で作成されます:
|
|
209
|
-
|
|
210
|
-
```typescript
|
|
211
|
-
// scripts/template/renderer.ts
|
|
212
|
-
export interface TemplateContext {
|
|
213
|
-
LANG_CODE: SupportedLanguage;
|
|
214
|
-
DEV_GUIDELINES: string;
|
|
215
|
-
KIRO_DIR: string;
|
|
216
|
-
AGENT_DIR: string;
|
|
217
|
-
PROJECT_ID?: string;
|
|
218
|
-
FEATURE_NAME?: string;
|
|
219
|
-
TIMESTAMP?: string;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
export const createTemplateContext = (
|
|
223
|
-
lang: SupportedLanguage,
|
|
224
|
-
kiroDir: string,
|
|
225
|
-
agentDir: string
|
|
226
|
-
): TemplateContext => ({
|
|
227
|
-
LANG_CODE: lang,
|
|
228
|
-
DEV_GUIDELINES: getDevGuidelines(lang),
|
|
229
|
-
KIRO_DIR: kiroDir,
|
|
230
|
-
AGENT_DIR: agentDir,
|
|
231
|
-
});
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### DEV_GUIDELINES_MAP
|
|
235
|
-
|
|
236
|
-
各言語のガイドラインは `scripts/constants/languages.ts` で定義されています:
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
export const DEV_GUIDELINES_MAP: Record<SupportedLanguage, string> = {
|
|
240
|
-
en: '- Think in English, generate responses in English',
|
|
241
|
-
|
|
242
|
-
ja: '- Think in English, but generate responses in Japanese ' +
|
|
243
|
-
'(思考は英語、回答の生成は日本語で行うように)',
|
|
244
|
-
|
|
245
|
-
'zh-TW': '- 以英文思考,但以繁體中文生成回應' +
|
|
246
|
-
'(Think in English, generate in Traditional Chinese)',
|
|
247
|
-
|
|
248
|
-
// ... 他の言語
|
|
249
|
-
};
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### レンダリング処理
|
|
253
|
-
|
|
254
|
-
テンプレートのレンダリングは `renderTemplate()` 関数で行われます:
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
// scripts/template/renderer.ts
|
|
258
|
-
export const renderTemplate = (
|
|
259
|
-
template: string,
|
|
260
|
-
context: TemplateContext
|
|
261
|
-
): string => {
|
|
262
|
-
return template.replace(/\{\{([A-Z_]+)\}\}/g, (match, key) => {
|
|
263
|
-
const value = context[key as keyof TemplateContext];
|
|
264
|
-
return value !== undefined ? String(value) : match;
|
|
265
|
-
});
|
|
266
|
-
};
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### プロジェクトセットアップでの使用
|
|
270
|
-
|
|
271
|
-
`setup-existing` コマンドでテンプレートコンテキストが作成され、テンプレートがレンダリングされます:
|
|
272
|
-
|
|
273
|
-
```typescript
|
|
274
|
-
// src/commands/setup-existing.ts (L374-378)
|
|
275
|
-
const templateContext = createTemplateContext(
|
|
276
|
-
config.langCode,
|
|
277
|
-
'.kiro',
|
|
278
|
-
envConfig.rulesDir.startsWith('.')
|
|
279
|
-
? envConfig.rulesDir.substring(1, envConfig.rulesDir.indexOf('/', 1))
|
|
280
|
-
: envConfig.rulesDir.split('/')[0]
|
|
281
|
-
);
|
|
282
|
-
|
|
283
|
-
// テンプレートをコピーしてレンダリング
|
|
284
|
-
copyAndRenderTemplates(templateSourceDir, destDir, templateContext);
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## 新言語の追加方法
|
|
288
|
-
|
|
289
|
-
新しい言語を追加するのは非常に簡単です。
|
|
290
|
-
|
|
291
|
-
### Step 1: DEV_GUIDELINES_MAPに追加
|
|
292
|
-
|
|
293
|
-
`scripts/constants/languages.ts` を編集:
|
|
294
|
-
|
|
295
|
-
```typescript
|
|
296
|
-
export const supportedLanguages = [
|
|
297
|
-
'ja', 'en', 'zh-TW', 'zh', 'es', 'pt',
|
|
298
|
-
'de', 'fr', 'ru', 'it', 'ko', 'ar',
|
|
299
|
-
'vi' // ← 新しい言語を追加(ベトナム語の例)
|
|
300
|
-
] as const;
|
|
301
|
-
|
|
302
|
-
export const DEV_GUIDELINES_MAP: Record<SupportedLanguage, string> = {
|
|
303
|
-
// ... 既存の言語
|
|
304
|
-
|
|
305
|
-
vi: '- Think in English, generate responses in Vietnamese ' +
|
|
306
|
-
'(Suy nghĩ bằng tiếng Anh, trả lời bằng tiếng Việt)',
|
|
307
|
-
};
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
### Step 2: テスト追加(推奨)
|
|
311
|
-
|
|
312
|
-
`scripts/constants/__tests__/languages.test.ts` にテストを追加:
|
|
313
|
-
|
|
314
|
-
```typescript
|
|
315
|
-
it('should have Vietnamese guideline', () => {
|
|
316
|
-
expect(DEV_GUIDELINES_MAP.vi).toContain('Think in English');
|
|
317
|
-
expect(DEV_GUIDELINES_MAP.vi).toContain('Vietnamese');
|
|
318
|
-
});
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
### Step 3: 完了
|
|
322
|
-
|
|
323
|
-
これだけです!新しい言語が即座に利用可能になります:
|
|
324
|
-
|
|
325
|
-
```bash
|
|
326
|
-
# ベトナム語でプロジェクトをセットアップ
|
|
327
|
-
npx @sk8metal/michi-cli setup-existing --cursor --lang vi
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
## 使用例
|
|
331
|
-
|
|
332
|
-
### Cursorでのプロジェクトセットアップ
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
# 日本語(デフォルト)
|
|
336
|
-
npx @sk8metal/michi-cli setup-existing --cursor
|
|
337
|
-
|
|
338
|
-
# 英語
|
|
339
|
-
npx @sk8metal/michi-cli setup-existing --cursor --lang en
|
|
340
|
-
|
|
341
|
-
# スペイン語
|
|
342
|
-
npx @sk8metal/michi-cli setup-existing --cursor --lang es
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
### 対話的セットアップ
|
|
346
|
-
|
|
347
|
-
```bash
|
|
348
|
-
# 対話的プロンプトで言語を選択
|
|
349
|
-
npx @sk8metal/michi-cli setup-existing
|
|
350
|
-
|
|
351
|
-
# 出力例:
|
|
352
|
-
# 環境を選択してください:
|
|
353
|
-
# 1) Cursor IDE (推奨)
|
|
354
|
-
# 2) Claude Code
|
|
355
|
-
# 3) Claude Code Subagents
|
|
356
|
-
# 選択 [1-3] (デフォルト: 1): 1
|
|
357
|
-
# プロジェクト名(例: プロジェクトA): My Project
|
|
358
|
-
# JIRAプロジェクトキー(例: PRJA): MYPROJ
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
### プログラムからの使用
|
|
362
|
-
|
|
363
|
-
```typescript
|
|
364
|
-
import { setupExisting } from '@sk8metal/michi-cli/commands';
|
|
365
|
-
|
|
366
|
-
await setupExisting({
|
|
367
|
-
cursor: true,
|
|
368
|
-
lang: 'ja',
|
|
369
|
-
projectName: 'マイプロジェクト',
|
|
370
|
-
jiraKey: 'MYPROJ'
|
|
371
|
-
});
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
## トラブルシューティング
|
|
375
|
-
|
|
376
|
-
### テンプレートが正しくレンダリングされない
|
|
377
|
-
|
|
378
|
-
**症状**: `{{DEV_GUIDELINES}}`がそのまま残っている
|
|
379
|
-
|
|
380
|
-
**原因**: プレースホルダー名が大文字でない、または形式が正しくない
|
|
381
|
-
|
|
382
|
-
**解決方法**:
|
|
383
|
-
- プレースホルダー名を確認: `{{DEV_GUIDELINES}}` (大文字のみ)
|
|
384
|
-
- 二重中括弧を確認: `{{...}}` (シングル括弧は不可)
|
|
385
|
-
|
|
386
|
-
### サポートされていない言語コードを指定
|
|
387
|
-
|
|
388
|
-
**症状**: `Unsupported language: xx` エラー
|
|
389
|
-
|
|
390
|
-
**原因**: 指定された言語コードがサポートされていない
|
|
391
|
-
|
|
392
|
-
**解決方法**:
|
|
393
|
-
- サポート言語リストを確認(本ドキュメントの「サポート言語」セクション参照)
|
|
394
|
-
- 新しい言語を追加(「新言語の追加方法」セクション参照)
|
|
395
|
-
|
|
396
|
-
### テンプレートファイルが見つからない
|
|
397
|
-
|
|
398
|
-
**症状**: `Templates directory not found` エラー
|
|
399
|
-
|
|
400
|
-
**原因**: テンプレートディレクトリが存在しない、またはパスが正しくない
|
|
401
|
-
|
|
402
|
-
**解決方法**:
|
|
403
|
-
```bash
|
|
404
|
-
# パッケージが正しくインストールされているか確認
|
|
405
|
-
npm list @sk8metal/michi-cli
|
|
406
|
-
|
|
407
|
-
# 再インストール
|
|
408
|
-
npm install -g @sk8metal/michi-cli
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
## ベストプラクティス
|
|
412
|
-
|
|
413
|
-
### 1. 英語でテンプレートを作成
|
|
414
|
-
|
|
415
|
-
すべてのテンプレートは英語で記述してください。AIが各言語で適切に生成します。
|
|
416
|
-
|
|
417
|
-
**推奨**:
|
|
418
|
-
```markdown
|
|
419
|
-
# User Authentication Rules
|
|
420
|
-
|
|
421
|
-
{{DEV_GUIDELINES}}
|
|
422
|
-
|
|
423
|
-
## Basic Principles
|
|
424
|
-
- Use secure password hashing
|
|
425
|
-
- Implement 2FA for sensitive operations
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
**非推奨**: 各言語で個別ファイルを作成
|
|
429
|
-
```
|
|
430
|
-
templates/ja/auth.md ← 避ける
|
|
431
|
-
templates/en/auth.md ← 避ける
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
### 2. `{{DEV_GUIDELINES}}`を適切な場所に配置
|
|
435
|
-
|
|
436
|
-
- ファイルの先頭(メタデータ内)
|
|
437
|
-
- AIへの指示セクション
|
|
438
|
-
- コンテキスト依存の場所
|
|
439
|
-
|
|
440
|
-
### 3. プレースホルダーの過度な使用を避ける
|
|
441
|
-
|
|
442
|
-
必要な場所にのみプレースホルダーを使用してください。過度な使用はテンプレートを読みにくくします。
|
|
443
|
-
|
|
444
|
-
**推奨**:
|
|
445
|
-
```markdown
|
|
446
|
-
# {{FEATURE_NAME}} Specification
|
|
447
|
-
|
|
448
|
-
Project: {{PROJECT_ID}}
|
|
449
|
-
Language: {{LANG_CODE}}
|
|
450
|
-
|
|
451
|
-
{{DEV_GUIDELINES}}
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
**非推奨**: 過度なプレースホルダー
|
|
455
|
-
```markdown
|
|
456
|
-
# {{TITLE_{{LANG_CODE}}}} ← 複雑すぎる
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
### 4. テストを追加
|
|
460
|
-
|
|
461
|
-
新しい言語を追加した場合は、必ずテストを追加してください:
|
|
462
|
-
|
|
463
|
-
```typescript
|
|
464
|
-
describe('New Language', () => {
|
|
465
|
-
it('should have guidelines for new language', () => {
|
|
466
|
-
expect(DEV_GUIDELINES_MAP.newlang).toBeDefined();
|
|
467
|
-
expect(DEV_GUIDELINES_MAP.newlang).toContain('Think in English');
|
|
468
|
-
});
|
|
469
|
-
});
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
## 参考資料
|
|
473
|
-
|
|
474
|
-
### Michiドキュメント
|
|
475
|
-
|
|
476
|
-
- [クイックスタート](../getting-started/quick-start.md)
|
|
477
|
-
- [セットアップガイド](../getting-started/setup.md)
|
|
478
|
-
- [ワークフローガイド](./workflow.md)
|
|
479
|
-
|
|
480
|
-
### ソースコード
|
|
481
|
-
|
|
482
|
-
- `scripts/constants/languages.ts` - 言語定義とDEV_GUIDELINES_MAP
|
|
483
|
-
- `scripts/template/renderer.ts` - テンプレートレンダリングエンジン
|
|
484
|
-
- `src/commands/setup-existing.ts` - プロジェクトセットアップコマンド
|
|
485
|
-
|
|
486
|
-
### 外部リソース
|
|
487
|
-
|
|
488
|
-
- [cc-sdd多言語実装](https://github.com/gotalab/cc-sdd/blob/main/dist/template/context.js)
|
|
489
|
-
- [cc-sdd言語定義](https://github.com/gotalab/cc-sdd/blob/main/dist/constants/languages.js)
|
|
490
|
-
|
|
491
|
-
## FAQ
|
|
492
|
-
|
|
493
|
-
### Q: なぜ静的翻訳ファイルではなくAI駆動アプローチを採用したのですか?
|
|
494
|
-
|
|
495
|
-
A: 以下の理由からです:
|
|
496
|
-
|
|
497
|
-
1. **保守性**: 1つの英語テンプレートのみ管理すればよい
|
|
498
|
-
2. **拡張性**: 新言語追加が1行で完了
|
|
499
|
-
3. **品質**: AIの多言語能力により、文脈依存の自然な表現が可能
|
|
500
|
-
4. **軽量性**: 外部i18nライブラリ不要
|
|
501
|
-
5. **cc-ssd互換**: 同じ設計思想でリファレンス実装として位置づけ可能
|
|
502
|
-
|
|
503
|
-
### Q: cc-sddとの違いは何ですか?
|
|
504
|
-
|
|
505
|
-
A: Michiはcc-sddの設計思想を踏襲していますが、以下の点が異なります:
|
|
506
|
-
|
|
507
|
-
- **Michi**: プロジェクト管理特化(Confluence/JIRA連携、フェーズ管理)
|
|
508
|
-
- **cc-sdd**: 汎用AI駆動開発フレームワーク
|
|
509
|
-
|
|
510
|
-
多言語対応の実装方法は両者で同じです。
|
|
511
|
-
|
|
512
|
-
### Q: カスタム言語ガイドラインを追加できますか?
|
|
513
|
-
|
|
514
|
-
A: はい、`DEV_GUIDELINES_MAP`を拡張することで可能です。プロジェクト固有のガイドラインが必要な場合は、テンプレートに直接記述することも検討してください。
|
|
515
|
-
|
|
516
|
-
### Q: AIが指定した言語で出力しない場合はどうすればよいですか?
|
|
517
|
-
|
|
518
|
-
A: 以下を確認してください:
|
|
519
|
-
|
|
520
|
-
1. `.kiro/project.json`の`language`フィールドが正しいか
|
|
521
|
-
2. テンプレートに`{{DEV_GUIDELINES}}`が含まれているか
|
|
522
|
-
3. AIモデルが多言語対応しているか(Claude、GPT-4など)
|
|
523
|
-
|
|
524
|
-
それでも問題が解決しない場合は、テンプレートに追加のコンテキストを明示的に記述してください。
|
|
525
|
-
|
|
526
|
-
## まとめ
|
|
527
|
-
|
|
528
|
-
Michiの多言語対応システムは、cc-sdd準拠のAI駆動アプローチにより:
|
|
529
|
-
|
|
530
|
-
- ✅ 保守性が高い(1つの英語テンプレートのみ)
|
|
531
|
-
- ✅ 拡張性が高い(新言語追加が1行)
|
|
532
|
-
- ✅ 品質が高い(AIの多言語能力を活用)
|
|
533
|
-
- ✅ 軽量(外部依存なし)
|
|
534
|
-
|
|
535
|
-
このアプローチにより、開発者は翻訳管理の負担から解放され、本質的な開発作業に集中できます。
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# Michi マイグレーションガイド
|
|
2
|
-
|
|
3
|
-
このドキュメントは、Michi の異なるバージョン間での移行手順を説明します。
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## v0.8.6 → v0.8.7 (Unreleased)
|
|
8
|
-
|
|
9
|
-
### 重要な変更点
|
|
10
|
-
|
|
11
|
-
#### 1. Multi-Repo AIコマンド名の変更
|
|
12
|
-
|
|
13
|
-
**変更内容**:
|
|
14
|
-
- `/michi_multi_repo:*` → `/michi-multi-repo:*`
|
|
15
|
-
|
|
16
|
-
**影響を受けるコマンド**:
|
|
17
|
-
|
|
18
|
-
| 旧コマンド | 新コマンド |
|
|
19
|
-
|-----------|-----------|
|
|
20
|
-
| `/michi_multi_repo:spec-init` | `/michi-multi-repo:spec-init` |
|
|
21
|
-
| `/michi_multi_repo:spec-requirements` | `/michi-multi-repo:spec-requirements` |
|
|
22
|
-
| `/michi_multi_repo:spec-design` | `/michi-multi-repo:spec-design` |
|
|
23
|
-
|
|
24
|
-
**移行手順**:
|
|
25
|
-
1. スクリプトやドキュメントで `/michi_multi_repo:` を使用している箇所を `/michi-multi-repo:` に置換してください
|
|
26
|
-
2. 特に以下のファイルを確認:
|
|
27
|
-
- プロジェクトの README.md
|
|
28
|
-
- 開発ドキュメント
|
|
29
|
-
- 自動化スクリプト
|
|
30
|
-
|
|
31
|
-
#### 2. コマンド配布先の修正
|
|
32
|
-
|
|
33
|
-
**変更内容**:
|
|
34
|
-
- `michi init` コマンドが作成するディレクトリ構造が変更されました
|
|
35
|
-
|
|
36
|
-
**変更前**:
|
|
37
|
-
```
|
|
38
|
-
.claude/commands/kiro/
|
|
39
|
-
├── kiro/ # 二重ネスト(バグ)
|
|
40
|
-
├── michi/
|
|
41
|
-
└── michi_multi_repo/
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**変更後**:
|
|
45
|
-
```
|
|
46
|
-
.claude/commands/
|
|
47
|
-
├── kiro/ # 正しい階層
|
|
48
|
-
├── michi/
|
|
49
|
-
└── michi-multi-repo/
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**移行手順**:
|
|
53
|
-
|
|
54
|
-
##### 既存プロジェクトの場合
|
|
55
|
-
|
|
56
|
-
1. **二重ネストディレクトリの削除**:
|
|
57
|
-
```bash
|
|
58
|
-
# プロジェクトルートで実行
|
|
59
|
-
rm -rf .claude/commands/kiro/kiro
|
|
60
|
-
rm -rf .claude/commands/kiro/michi
|
|
61
|
-
rm -rf .claude/commands/kiro/michi_multi_repo
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
2. **新しい構造でコマンドを再配置**:
|
|
65
|
-
```bash
|
|
66
|
-
# michi init を再実行(上書き確認なし)
|
|
67
|
-
michi init --claude
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
3. **確認**:
|
|
71
|
-
```bash
|
|
72
|
-
ls -la .claude/commands/
|
|
73
|
-
# 以下が表示されること:
|
|
74
|
-
# - kiro/
|
|
75
|
-
# - michi/
|
|
76
|
-
# - michi-multi-repo/
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
##### 新規プロジェクトの場合
|
|
80
|
-
|
|
81
|
-
v0.8.7 以降では、`michi init` を実行すると自動的に正しい構造が作成されます。
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
michi init --claude
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### その他の変更点
|
|
88
|
-
|
|
89
|
-
#### `michi config:init` コマンドの参照を修正
|
|
90
|
-
|
|
91
|
-
**問題**:
|
|
92
|
-
- spec-init.md のエラーメッセージで `michi config:init` コマンドが参照されていましたが、このコマンドは実装されていませんでした
|
|
93
|
-
|
|
94
|
-
**修正内容**:
|
|
95
|
-
- `michi config:init` → `michi init`
|
|
96
|
-
|
|
97
|
-
**影響**:
|
|
98
|
-
- エラーメッセージで正しいコマンドが案内されるようになりました
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## トラブルシューティング
|
|
103
|
-
|
|
104
|
-
### Q1: 既存の `.claude/commands/kiro/kiro/` が残っている
|
|
105
|
-
|
|
106
|
-
**回答**: 手動で削除してください:
|
|
107
|
-
```bash
|
|
108
|
-
rm -rf .claude/commands/kiro/kiro
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Q2: `/michi_multi_repo:*` コマンドが認識されなくなった
|
|
112
|
-
|
|
113
|
-
**回答**: v0.8.7 では `/michi-multi-repo:*` に変更されました。新しいコマンド名を使用してください。
|
|
114
|
-
|
|
115
|
-
### Q3: `michi init` を実行してもコマンドがコピーされない
|
|
116
|
-
|
|
117
|
-
**回答**:
|
|
118
|
-
1. Michi を最新版(v0.8.7以降)にアップデートしてください:
|
|
119
|
-
```bash
|
|
120
|
-
npm install -g michi-cli@latest
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
2. 再度 `michi init --claude` を実行してください
|
|
124
|
-
|
|
125
|
-
### Q4: 二重ネストディレクトリが残っているとどうなる?
|
|
126
|
-
|
|
127
|
-
**回答**:
|
|
128
|
-
- 機能的な問題はありませんが、混乱を招く可能性があります
|
|
129
|
-
- 新しい構造(`.claude/commands/kiro/`)が優先されます
|
|
130
|
-
- クリーンな状態にするため、削除を推奨します
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## 参考リンク
|
|
135
|
-
|
|
136
|
-
- [Multi-Repo管理ガイド](multi-repo-guide.md)
|
|
137
|
-
- [CHANGELOG](../../../CHANGELOG.md)
|
|
138
|
-
- [README](../../../README.md)
|