@einja/dev-cli 0.1.6
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 +179 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +23 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +294 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +593 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/commands/task-loop.d.ts +11 -0
- package/dist/commands/task-loop.d.ts.map +1 -0
- package/dist/commands/task-loop.js +81 -0
- package/dist/commands/task-loop.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/file-system.d.ts +39 -0
- package/dist/lib/file-system.d.ts.map +1 -0
- package/dist/lib/file-system.js +79 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/mcp-config.d.ts +43 -0
- package/dist/lib/mcp-config.d.ts.map +1 -0
- package/dist/lib/mcp-config.js +109 -0
- package/dist/lib/mcp-config.js.map +1 -0
- package/dist/lib/mcp-config.test.d.ts +2 -0
- package/dist/lib/mcp-config.test.d.ts.map +1 -0
- package/dist/lib/mcp-config.test.js +285 -0
- package/dist/lib/mcp-config.test.js.map +1 -0
- package/dist/lib/merger.d.ts +41 -0
- package/dist/lib/merger.d.ts.map +1 -0
- package/dist/lib/merger.js +164 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.js +83 -0
- package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
- package/dist/lib/preset-update/file-copier.d.ts +59 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.js +220 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -0
- package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.test.js +297 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.d.ts +39 -0
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.js +92 -0
- package/dist/lib/preset-update/preset-finder.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.js +128 -0
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
- package/dist/lib/preset.d.ts +14 -0
- package/dist/lib/preset.d.ts.map +1 -0
- package/dist/lib/preset.js +52 -0
- package/dist/lib/preset.js.map +1 -0
- package/dist/lib/sync/backup-manager.d.ts +50 -0
- package/dist/lib/sync/backup-manager.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.js +117 -0
- package/dist/lib/sync/backup-manager.js.map +1 -0
- package/dist/lib/sync/backup-manager.test.d.ts +2 -0
- package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.test.js +155 -0
- package/dist/lib/sync/backup-manager.test.js.map +1 -0
- package/dist/lib/sync/batch-processor.d.ts +27 -0
- package/dist/lib/sync/batch-processor.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.js +46 -0
- package/dist/lib/sync/batch-processor.js.map +1 -0
- package/dist/lib/sync/batch-processor.test.d.ts +2 -0
- package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.test.js +110 -0
- package/dist/lib/sync/batch-processor.test.js.map +1 -0
- package/dist/lib/sync/category-validator.d.ts +36 -0
- package/dist/lib/sync/category-validator.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.js +46 -0
- package/dist/lib/sync/category-validator.js.map +1 -0
- package/dist/lib/sync/category-validator.test.d.ts +2 -0
- package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.test.js +89 -0
- package/dist/lib/sync/category-validator.test.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.d.ts +57 -0
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.js +81 -0
- package/dist/lib/sync/conflict-reporter.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.js +132 -0
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
- package/dist/lib/sync/diff-engine.d.ts +28 -0
- package/dist/lib/sync/diff-engine.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.js +118 -0
- package/dist/lib/sync/diff-engine.js.map +1 -0
- package/dist/lib/sync/diff-engine.test.d.ts +2 -0
- package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.test.js +133 -0
- package/dist/lib/sync/diff-engine.test.js.map +1 -0
- package/dist/lib/sync/file-filter.d.ts +40 -0
- package/dist/lib/sync/file-filter.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.js +171 -0
- package/dist/lib/sync/file-filter.js.map +1 -0
- package/dist/lib/sync/file-filter.test.d.ts +2 -0
- package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.test.js +179 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -0
- package/dist/lib/sync/hash-cache.d.ts +34 -0
- package/dist/lib/sync/hash-cache.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.js +51 -0
- package/dist/lib/sync/hash-cache.js.map +1 -0
- package/dist/lib/sync/hash-cache.test.d.ts +2 -0
- package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.test.js +110 -0
- package/dist/lib/sync/hash-cache.test.js.map +1 -0
- package/dist/lib/sync/integration.test.d.ts +2 -0
- package/dist/lib/sync/integration.test.d.ts.map +1 -0
- package/dist/lib/sync/integration.test.js +317 -0
- package/dist/lib/sync/integration.test.js.map +1 -0
- package/dist/lib/sync/marker-processor.d.ts +54 -0
- package/dist/lib/sync/marker-processor.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.js +208 -0
- package/dist/lib/sync/marker-processor.js.map +1 -0
- package/dist/lib/sync/marker-processor.test.d.ts +2 -0
- package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.test.js +245 -0
- package/dist/lib/sync/marker-processor.test.js.map +1 -0
- package/dist/lib/sync/metadata-manager.d.ts +46 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.js +129 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -0
- package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
- package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.test.js +137 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -0
- package/dist/lib/sync/performance.test.d.ts +2 -0
- package/dist/lib/sync/performance.test.d.ts.map +1 -0
- package/dist/lib/sync/performance.test.js +126 -0
- package/dist/lib/sync/performance.test.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/preset-update.d.ts +106 -0
- package/dist/types/preset-update.d.ts.map +1 -0
- package/dist/types/preset-update.js +5 -0
- package/dist/types/preset-update.js.map +1 -0
- package/dist/types/sync.d.ts +169 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +19 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
- package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
- package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
- package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
- package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
- package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
- package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
- package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
- package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
- package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
- package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
- package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
- package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
- package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
- package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
- package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
- package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
- package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
- package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
- package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
- package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
- package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
- package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
- package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
- package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
- package/presets/minimal/.claude/settings.json +174 -0
- package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
- package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
- package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
- package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
- package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
- package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
- package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
- package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
- package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
- package/presets/minimal/preset.yaml +111 -0
- package/presets/minimal/symlinks.json +45 -0
- package/scaffolds/.mcp.json +45 -0
- package/scaffolds/CLAUDE.md.template +318 -0
- package/scaffolds/steering/README.md +170 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
- package/scaffolds/steering/architecture.md +481 -0
- package/scaffolds/steering/branch-strategy.md +362 -0
- package/scaffolds/steering/commit-rules.md +217 -0
- package/scaffolds/steering/db-schema-design.md +609 -0
- package/scaffolds/steering/development/api-development.md +783 -0
- package/scaffolds/steering/development/backend-architecture.md +731 -0
- package/scaffolds/steering/development/frontend-development.md +1537 -0
- package/scaffolds/steering/development/review-guidelines.md +365 -0
- package/scaffolds/steering/development/testing-strategy.md +819 -0
- package/scaffolds/steering/development-workflow.md +429 -0
- package/scaffolds/steering/infrastructure/deployment.md +277 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
- package/scaffolds/steering/product.md +540 -0
- package/scaffolds/steering/task-management.md +367 -0
- package/templates/README.md +159 -0
- package/templates/design-simple.md.template +172 -0
- package/templates/design.md.template +327 -0
- package/templates/qa-test.md.template +125 -0
- package/templates/requirements.md.template +254 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "フロントエンド実装を自動化するコマンド。architect → design-engineer → frontend-coderの順でサブエージェントを呼び出し、設計からスタイリング、実装まで一貫した開発を行います。ARGUMENTS: 機能名または要件(必須)、Figma URL(オプション)"
|
|
3
|
+
allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, mcp__figma_dev_mode__*
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# フロントエンド実装自動化コマンド
|
|
7
|
+
|
|
8
|
+
## あなたの役割
|
|
9
|
+
|
|
10
|
+
あなたは**フロントエンド開発のオーケストレーター**です。以下の3つの専門エージェントを連携させ、設計からスタイリング、実装まで一貫したフロントエンド開発プロセスを管理します:
|
|
11
|
+
|
|
12
|
+
1. **architect** 🏗️ - コンポーネントアーキテクチャ設計
|
|
13
|
+
2. **design-engineer** 🎨 - Figmaデザインシステム連携とスタイリング
|
|
14
|
+
3. **frontend-coder** 💻 - 実装とテスト
|
|
15
|
+
|
|
16
|
+
## 実行フロー
|
|
17
|
+
|
|
18
|
+
### Phase 0: 実装戦略の確認(Phase 1前)
|
|
19
|
+
|
|
20
|
+
フロントエンド実装を開始する前に、以下の戦略を確認します。
|
|
21
|
+
|
|
22
|
+
#### 0.1 コンポーネント構成
|
|
23
|
+
|
|
24
|
+
```yaml
|
|
25
|
+
AskUserQuestion:
|
|
26
|
+
question: "コンポーネント構成をどのように設計しますか?"
|
|
27
|
+
header: "構成選択"
|
|
28
|
+
options:
|
|
29
|
+
- label: "既存パターンに従う(推奨)"
|
|
30
|
+
description: |
|
|
31
|
+
推奨理由: プロジェクトの一貫性を維持し、チーム全体の開発効率を向上させます。
|
|
32
|
+
メリット: 既存コンポーネントとの整合性が高く、チーム内での理解が容易。学習コストが最小限。
|
|
33
|
+
デメリット: 新しいパターンが必要な場合は柔軟に対応できない可能性があります。
|
|
34
|
+
- label: "Atomic Design"
|
|
35
|
+
description: |
|
|
36
|
+
atoms/molecules/organisms/templates/pagesの階層構造で設計します。
|
|
37
|
+
メリット: 再利用性が非常に高く、大規模UIシステムに向いている。デザインシステムとの親和性が高い。
|
|
38
|
+
デメリット: 学習コストが高く、過度な抽象化によりコードの追跡が困難になるリスクがあります。
|
|
39
|
+
- label: "Feature-based構成"
|
|
40
|
+
description: |
|
|
41
|
+
機能単位でファイルをまとめる構成です。
|
|
42
|
+
メリット: 機能の独立性が高く、コードの関連性が分かりやすい。機能削除時の影響範囲が明確。
|
|
43
|
+
デメリット: 共通コンポーネントの管理が複雑になり、重複コードが発生しやすくなります。
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### 0.2 Figmaデザイン参照
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
AskUserQuestion:
|
|
50
|
+
question: "Figmaデザイン参照は利用できますか?"
|
|
51
|
+
header: "Figma連携"
|
|
52
|
+
options:
|
|
53
|
+
- label: "既存デザインシステムで対応(推奨)"
|
|
54
|
+
description: |
|
|
55
|
+
推奨理由: 既存のトークンとレシピを活用し、実装速度と一貫性を両立します。
|
|
56
|
+
メリット: 既存のトークンとレシピを再利用でき、実装が迅速。既存コンポーネントとのスタイル統一が容易。
|
|
57
|
+
デメリット: 新しいデザインパターンに対応できない場合があり、デザイントークンの手動追加が必要になります。
|
|
58
|
+
- label: "Figma URLを提供する"
|
|
59
|
+
description: |
|
|
60
|
+
design-engineerエージェントがFigma MCPでデザイントークンを自動抽出します。
|
|
61
|
+
メリット: デザインとコードの一貫性が非常に高く、デザイナーとの連携が容易。トークン抽出が自動化される。
|
|
62
|
+
デメリット: Figma MCPの設定が必要。デザイン変更の同期に手間がかかり、初期セットアップコストが高い。
|
|
63
|
+
- label: "デザイン仕様書を参照"
|
|
64
|
+
description: |
|
|
65
|
+
別途提供されたデザイン仕様書(PDF、Markdown等)に従って実装します。
|
|
66
|
+
メリット: デザイナーの意図を詳細に理解でき、仕様書が実装の根拠となる。
|
|
67
|
+
デメリット: 仕様書の解釈にばらつきが出る可能性があり、手動でトークン定義が必要になります。
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
#### 0.3 状態管理の複雑さ
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
AskUserQuestion:
|
|
74
|
+
question: "状態管理の複雑さはどの程度ですか?"
|
|
75
|
+
header: "状態管理"
|
|
76
|
+
options:
|
|
77
|
+
- label: "中程度(Server State + UI State)(推奨)"
|
|
78
|
+
description: |
|
|
79
|
+
推奨理由: TanStack Queryでサーバー状態を管理し、モダンな状態管理パターンを実現します。
|
|
80
|
+
メリット: サーバー状態とUIステートが明確に分離され、キャッシュ管理が自動化される。リアルタイムデータ同期が容易。
|
|
81
|
+
デメリット: TanStack Queryの学習が必要になり、初期セットアップに時間がかかります。
|
|
82
|
+
- label: "シンプル(UI Stateのみ)"
|
|
83
|
+
description: |
|
|
84
|
+
useState、useReducerで状態管理を行います。
|
|
85
|
+
メリット: シンプルで理解しやすく、学習コストが低い。Reactの標準機能のみで実装可能。
|
|
86
|
+
デメリット: サーバーとの同期やキャッシュ管理が手動になり、大規模アプリでは保守が困難になります。
|
|
87
|
+
- label: "複雑(複数の状態層の連携)"
|
|
88
|
+
description: |
|
|
89
|
+
グローバル状態管理(Zustand、Jotai等)の追加を検討します。
|
|
90
|
+
メリット: 複雑な状態の共有が容易になり、コンポーネント間のデータ受け渡しが簡潔になる。
|
|
91
|
+
デメリット: 状態管理ライブラリの追加が必要。過度な使用は保守性を下げ、デバッグが困難になります。
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### フェーズ1: アーキテクチャ設計 🏗️
|
|
97
|
+
|
|
98
|
+
**architect**エージェントを呼び出し:
|
|
99
|
+
- コンポーネント構造の設計(Atomic Design、Feature-based構成)
|
|
100
|
+
- 状態管理アーキテクチャ(TanStack Query、Form State、UI State)
|
|
101
|
+
- データフロー設計(Server/Client境界、Props Drilling回避)
|
|
102
|
+
- パフォーマンス戦略(コード分割、レンダリング最適化)
|
|
103
|
+
- 型アーキテクチャ(共有型、コンポーネント型、API型)
|
|
104
|
+
- **成果物**: Architecture Decision Record (ADR)
|
|
105
|
+
|
|
106
|
+
**プロンプト例**:
|
|
107
|
+
```
|
|
108
|
+
機能名: {$ARGUMENTS}
|
|
109
|
+
|
|
110
|
+
以下を設計してください:
|
|
111
|
+
1. コンポーネント構造(ディレクトリ構成、責務分離)
|
|
112
|
+
2. 状態管理戦略(Query Keys、Form State、UI State)
|
|
113
|
+
3. データフロー設計(Props、Context、Server State)
|
|
114
|
+
4. パフォーマンス最適化(Code Splitting、Memoization)
|
|
115
|
+
5. 型定義設計(共有型、Props型、State型)
|
|
116
|
+
|
|
117
|
+
ADR形式で出力してください。
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**完了条件**: ADRドキュメントの生成完了
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### フェーズ2: デザインシステム連携とスタイリング 🎨
|
|
125
|
+
|
|
126
|
+
**design-engineer**エージェントを呼び出し:
|
|
127
|
+
- Figma MCPでデザイン分析(Figma URLが提供された場合)
|
|
128
|
+
- デザイントークンの抽出と変換
|
|
129
|
+
- Panda CSS レシピの生成
|
|
130
|
+
- コンポーネントバリアントの定義
|
|
131
|
+
- レスポンシブデザインの実装戦略
|
|
132
|
+
- **成果物**: Panda CSS設定ファイル、レシピファイル、トークン定義
|
|
133
|
+
|
|
134
|
+
**プロンプト例(Figma URLあり)**:
|
|
135
|
+
```
|
|
136
|
+
機能名: {$ARGUMENTS}
|
|
137
|
+
Figma URL: {FIGMA_URL}
|
|
138
|
+
|
|
139
|
+
以下を実行してください:
|
|
140
|
+
1. Figma MCPでデザインファイルを分析
|
|
141
|
+
2. カラー、タイポグラフィ、スペーシングをPanda CSSトークンに変換
|
|
142
|
+
3. コンポーネントバリアントをPanda CSSレシピとして生成
|
|
143
|
+
4. レスポンシブブレークポイントを定義
|
|
144
|
+
|
|
145
|
+
以下のファイルを生成:
|
|
146
|
+
- panda.config.ts への追加設定
|
|
147
|
+
- recipes/{component-name}.ts
|
|
148
|
+
- tokens/{design-tokens}.ts
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**プロンプト例(Figma URLなし)**:
|
|
152
|
+
```
|
|
153
|
+
機能名: {$ARGUMENTS}
|
|
154
|
+
|
|
155
|
+
Architectの設計に基づき、以下を実行してください:
|
|
156
|
+
1. 既存のデザイントークンを活用
|
|
157
|
+
2. 必要に応じて新しいレシピを生成
|
|
158
|
+
3. 一貫したスタイリング戦略を提案
|
|
159
|
+
|
|
160
|
+
以下のファイルを生成:
|
|
161
|
+
- recipes/{component-name}.ts(必要に応じて)
|
|
162
|
+
- スタイリングガイドライン
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**完了条件**: Panda CSS設定・レシピファイルの生成完了
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### フェーズ3: 実装とテスト 💻
|
|
170
|
+
|
|
171
|
+
**frontend-coder**エージェントを呼び出し:
|
|
172
|
+
- Architectの設計に基づくコンポーネント実装
|
|
173
|
+
- Design-Engineerのスタイリングを適用
|
|
174
|
+
- TanStack QueryによるServer State管理
|
|
175
|
+
- React Hook Form + Zodによるフォームバリデーション
|
|
176
|
+
- Vitestによる単体テスト
|
|
177
|
+
- **成果物**: 実装ファイル、テストファイル
|
|
178
|
+
|
|
179
|
+
**プロンプト例**:
|
|
180
|
+
```
|
|
181
|
+
機能名: {$ARGUMENTS}
|
|
182
|
+
|
|
183
|
+
以下のアーティファクトを基に実装してください:
|
|
184
|
+
1. Architectの設計(ADR)
|
|
185
|
+
2. Design-Engineerのスタイリング(Panda CSSレシピ)
|
|
186
|
+
|
|
187
|
+
実装内容:
|
|
188
|
+
- コンポーネント実装(TypeScript strict mode)
|
|
189
|
+
- TanStack Query統合(Query Keys、Mutations)
|
|
190
|
+
- フォームバリデーション(React Hook Form + Zod)
|
|
191
|
+
- Vitestテスト(正常系・異常系)
|
|
192
|
+
|
|
193
|
+
実装規約:
|
|
194
|
+
- any型の使用禁止
|
|
195
|
+
- Props型定義必須
|
|
196
|
+
- エラーハンドリング実装必須
|
|
197
|
+
- アクセシビリティ考慮必須
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**完了条件**: 実装・テスト完了、型エラーなし
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 入力パラメータ
|
|
205
|
+
|
|
206
|
+
### 必須
|
|
207
|
+
- **機能名または要件** (`$ARGUMENTS`の1つ目)
|
|
208
|
+
- 例: "ユーザープロフィール編集画面"
|
|
209
|
+
- 例: "商品検索フィルター機能"
|
|
210
|
+
- 例: "認証フォーム(ログイン・サインアップ)"
|
|
211
|
+
|
|
212
|
+
### オプション
|
|
213
|
+
- **Figma URL** (`$ARGUMENTS`の2つ目)
|
|
214
|
+
- 例: "https://www.figma.com/file/..."
|
|
215
|
+
- 提供された場合: Design-EngineerがFigma MCPで分析
|
|
216
|
+
- 提供されない場合: 既存デザインシステムを活用
|
|
217
|
+
|
|
218
|
+
## 実行例
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# 基本的な使用方法
|
|
222
|
+
frontend-implement "ユーザープロフィール編集画面"
|
|
223
|
+
|
|
224
|
+
# Figma URLを含む場合
|
|
225
|
+
frontend-implement "商品検索フィルター機能" "https://www.figma.com/file/abc123..."
|
|
226
|
+
|
|
227
|
+
# 複雑な機能の場合
|
|
228
|
+
frontend-implement "認証フロー(ログイン・サインアップ・パスワードリセット)"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## エージェント間の連携
|
|
232
|
+
|
|
233
|
+
### Architect → Design-Engineer
|
|
234
|
+
- Architectが設計したコンポーネント構造をDesign-Engineerに引き継ぐ
|
|
235
|
+
- 状態管理戦略をスタイリングに反映(例: Loadingステート、Errorステート)
|
|
236
|
+
|
|
237
|
+
### Design-Engineer → Frontend-Coder
|
|
238
|
+
- Design-Engineerが生成したPanda CSSレシピをFrontend-Coderが使用
|
|
239
|
+
- デザイントークンを型定義に反映
|
|
240
|
+
|
|
241
|
+
### フィードバックループ
|
|
242
|
+
- Frontend-Coderが実装中に問題発見 → Architectに設計見直しを要求
|
|
243
|
+
- スタイリングが不足 → Design-Engineerに追加レシピ生成を要求
|
|
244
|
+
|
|
245
|
+
## 成果物
|
|
246
|
+
|
|
247
|
+
### 1. Architecture Decision Record (ADR)
|
|
248
|
+
- ファイル名: `docs/adr/{YYYYMMDD}-{feature-name}.md`
|
|
249
|
+
- 内容: コンポーネント設計、状態管理、データフロー、型定義
|
|
250
|
+
|
|
251
|
+
### 2. Panda CSS設定・レシピ
|
|
252
|
+
- ファイル: `panda.config.ts`(追加設定)
|
|
253
|
+
- ファイル: `src/styled-system/recipes/{component-name}.ts`
|
|
254
|
+
- ファイル: `src/styled-system/tokens/{design-tokens}.ts`(必要に応じて)
|
|
255
|
+
|
|
256
|
+
### 3. 実装ファイル
|
|
257
|
+
- コンポーネント: `src/components/{category}/{ComponentName}/index.tsx`
|
|
258
|
+
- テスト: `src/components/{category}/{ComponentName}/ComponentName.test.tsx`
|
|
259
|
+
- 型定義: `src/components/{category}/{ComponentName}/types.ts`(必要に応じて)
|
|
260
|
+
|
|
261
|
+
### 4. ページ固有コンポーネント(co-location)
|
|
262
|
+
- ページコンポーネント: `src/app/{page}/_components/{ComponentName}/index.tsx`
|
|
263
|
+
- テスト: `src/app/{page}/_components/{ComponentName}/ComponentName.test.tsx`
|
|
264
|
+
|
|
265
|
+
## 品質保証
|
|
266
|
+
|
|
267
|
+
### 各フェーズでの確認事項
|
|
268
|
+
|
|
269
|
+
**Architectフェーズ**:
|
|
270
|
+
- [ ] コンポーネント構造が単一責任の原則に従っているか
|
|
271
|
+
- [ ] 状態管理が適切に分離されているか(Server/UI/Form)
|
|
272
|
+
- [ ] パフォーマンス最適化が考慮されているか
|
|
273
|
+
|
|
274
|
+
**Design-Engineerフェーズ**:
|
|
275
|
+
- [ ] Figmaデザインと一致しているか(URLありの場合)
|
|
276
|
+
- [ ] デザイントークンが適切に抽出されているか
|
|
277
|
+
- [ ] レシピがバリアントを正しく表現しているか
|
|
278
|
+
|
|
279
|
+
**Frontend-Coderフェーズ**:
|
|
280
|
+
- [ ] any型を使用していないか
|
|
281
|
+
- [ ] Props型定義が完全か
|
|
282
|
+
- [ ] テストが正常系・異常系をカバーしているか
|
|
283
|
+
- [ ] アクセシビリティが考慮されているか
|
|
284
|
+
|
|
285
|
+
## 注意事項
|
|
286
|
+
|
|
287
|
+
### モノレポ構造への対応
|
|
288
|
+
- 共有UIコンポーネント → `packages/ui/`
|
|
289
|
+
- アプリ固有コンポーネント → `apps/web/src/components/`
|
|
290
|
+
- ページ固有コンポーネント → `apps/web/src/app/{page}/_components/`
|
|
291
|
+
|
|
292
|
+
### 技術スタック
|
|
293
|
+
- Next.js 15 (App Router)
|
|
294
|
+
- React 19
|
|
295
|
+
- TypeScript (strict mode)
|
|
296
|
+
- Panda CSS
|
|
297
|
+
- TanStack Query
|
|
298
|
+
- React Hook Form + Zod
|
|
299
|
+
- Vitest + React Testing Library
|
|
300
|
+
|
|
301
|
+
### 禁止事項
|
|
302
|
+
- any型の使用
|
|
303
|
+
- インラインスタイルの使用(Panda CSSを使用)
|
|
304
|
+
- グローバル状態の濫用(適切な状態分離を行う)
|
|
305
|
+
|
|
306
|
+
## トラブルシューティング
|
|
307
|
+
|
|
308
|
+
### Figma MCP接続エラー
|
|
309
|
+
- Figma URLの形式確認
|
|
310
|
+
- Figma Dev ModeのアクセストークンWARN確認
|
|
311
|
+
|
|
312
|
+
### Panda CSS生成エラー
|
|
313
|
+
```bash
|
|
314
|
+
pnpm --filter @einja/web panda codegen
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### 型エラー
|
|
318
|
+
```bash
|
|
319
|
+
pnpm typecheck
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "タスクの仕様書(requirements.md、design.md、qa-tests/)を段階的に作成・修正するワークフローを実行します。ARGUMENTS: タスク内容の説明またはAsanaタスクURL(必須)、既存仕様書のパス(オプション)"
|
|
3
|
+
allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, TodoRead, TodoWrite, mcp__asana__*, mcp__figma_dev_mode__*
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# タスク仕様書作成コマンド
|
|
7
|
+
|
|
8
|
+
## あなたの役割
|
|
9
|
+
プロダクト開発のシニアテクニカルアーキテクト兼シニアプロダクトエンジニアとして、ATDD(受け入れテスト駆動開発)に基づく仕様書を段階的に作成します。
|
|
10
|
+
|
|
11
|
+
## タスク管理
|
|
12
|
+
TodoWriteツールを使用して全体の進捗を可視化し、ユーザーに現在の状況を明確に伝えます:
|
|
13
|
+
- 各仕様書作成フェーズ(requirements.md、design.md、QAテスト仕様、GitHub Issueへのタスク記述)をトップレベルタスクとして管理
|
|
14
|
+
- エージェント起動前にタスクを「in_progress」に更新
|
|
15
|
+
- エージェント完了後に「completed」に更新
|
|
16
|
+
- ユーザー承認待ちの状態も明示的に表示
|
|
17
|
+
|
|
18
|
+
## 命名規則
|
|
19
|
+
|
|
20
|
+
⚠️ **重要**: ディレクトリ名とブランチ名の規則は異なります。混同しないこと。
|
|
21
|
+
|
|
22
|
+
| 対象 | 規則 | 例 |
|
|
23
|
+
|------|------|-----|
|
|
24
|
+
| ディレクトリ | `issue{issue番号}-{機能名}` | `issue42-user-management` |
|
|
25
|
+
| Issueブランチ | `issue/{issue番号}` | `issue/42` |
|
|
26
|
+
| Phaseブランチ | `issue/{issue番号}-phase{N}` | `issue/42-phase1` |
|
|
27
|
+
|
|
28
|
+
- **ディレクトリ**: 機能名を含める(人間が識別しやすくするため)
|
|
29
|
+
- **ブランチ**: Issue番号のみ([branch-strategy.md](../docs/einja/steering/branch-strategy.md)参照)
|
|
30
|
+
|
|
31
|
+
## 実行手順
|
|
32
|
+
|
|
33
|
+
### 0. 前提確認フェーズ(ワークフロー開始時)
|
|
34
|
+
|
|
35
|
+
**⚠️ 重要**: 仕様書作成開始前に、以下の2つの質問で前提を確認すること。
|
|
36
|
+
|
|
37
|
+
#### 0.1 TDD適用判定
|
|
38
|
+
|
|
39
|
+
以下のいずれかに該当する場合、TDD採用を推奨:
|
|
40
|
+
- ビジネスロジックが含まれる(計算・判定・状態遷移)
|
|
41
|
+
- データ変換・加工がある
|
|
42
|
+
- 外部API連携がある
|
|
43
|
+
- 複数の分岐・条件がある
|
|
44
|
+
- 金銭・認証・権限に関わる
|
|
45
|
+
|
|
46
|
+
**質問1: TDD(テスト駆動開発)を適用しますか?**
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
AskUserQuestion:
|
|
50
|
+
question: "このタスクにTDD(テスト駆動開発)を適用しますか?"
|
|
51
|
+
header: "TDD選択"
|
|
52
|
+
options:
|
|
53
|
+
- label: "はい、TDDで進める(推奨)"
|
|
54
|
+
description: "推奨理由: ビジネスロジック、データ変換、外部API連携では品質向上に効果的。メリット: バグの早期発見、設計品質向上。デメリット: 初期の開発時間増加"
|
|
55
|
+
- label: "実装後にテストを追加"
|
|
56
|
+
description: "メリット: 初期の開発速度が速い。デメリット: テスト漏れのリスク、後付けテストは設計改善に繋がりにくい"
|
|
57
|
+
- label: "テスト最小限"
|
|
58
|
+
description: "メリット: 最速で動作確認可能。デメリット: 品質保証が不十分、リグレッションリスクが高い"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### 0.2 要件明確さ確認
|
|
62
|
+
|
|
63
|
+
**質問2: 要件の明確さを確認**
|
|
64
|
+
|
|
65
|
+
以下の観点で要件を確認してください:
|
|
66
|
+
- 正常系: 一番よくある使われ方は明確か?
|
|
67
|
+
- 境界条件: 「ギリギリOK」と「ギリギリNG」の境目は定義されているか?
|
|
68
|
+
- エラー時: エラーの場合、ユーザーにどう見せるか決まっているか?
|
|
69
|
+
- 暗黙の期待: 「当たり前」だと思っていることが言語化されているか?
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
AskUserQuestion:
|
|
73
|
+
question: "タスクの要件は明確ですか?"
|
|
74
|
+
header: "要件確認"
|
|
75
|
+
options:
|
|
76
|
+
- label: "明確(仕様書作成を進める)"
|
|
77
|
+
description: "メリット: 仕様書作成をスムーズに進められる。デメリット: 見落としがあると後で手戻りが発生する可能性"
|
|
78
|
+
- label: "不明確(追加質問で明確化)"
|
|
79
|
+
description: "メリット: 要件を正確に把握してから進められる。デメリット: 追加の確認時間が必要"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**不明確が選択された場合の対応**:
|
|
83
|
+
以下の深掘り質問を実施:
|
|
84
|
+
1. **正常系**: 一番よくある使われ方は?
|
|
85
|
+
2. **境界条件**: 「ギリギリOK」と「ギリギリNG」の境目は?
|
|
86
|
+
3. **エラー時**: エラーの場合、ユーザーにどう見せたい?
|
|
87
|
+
4. **暗黙の期待**: 「当たり前」だと思っていることは?
|
|
88
|
+
|
|
89
|
+
### 1. 外部リソースの確認
|
|
90
|
+
|
|
91
|
+
**AsanaタスクURL**の場合:
|
|
92
|
+
- AsanaMCPでタスク情報を取得(タイトル、説明、カスタムフィールド)
|
|
93
|
+
- タスクIDから適切なディレクトリ名を生成
|
|
94
|
+
|
|
95
|
+
**FigmaURL**が含まれる場合:
|
|
96
|
+
- FigmaDevModeMCPでデザイン分析
|
|
97
|
+
- UI要件、コンポーネント仕様、デザイントークンを抽出
|
|
98
|
+
|
|
99
|
+
### 2. GitHub Issue作成(最初に実行)
|
|
100
|
+
|
|
101
|
+
1. **GitHub IssueをMCPで作成**
|
|
102
|
+
- タイトル: ユーザー指定またはAsanaタスクから取得
|
|
103
|
+
- 本文: 空または簡易的な説明
|
|
104
|
+
- `mcp__github__create_issue` を使用
|
|
105
|
+
- **Issue番号を取得して記録**
|
|
106
|
+
|
|
107
|
+
2. **Issue番号に基づいてディレクトリパスを決定**
|
|
108
|
+
- パス指定あり → 指定ディレクトリを使用
|
|
109
|
+
- パス指定なし → `/docs/specs/issues/{機能カテゴリ名}/issue{issue番号}-{機能名}/` で自動作成
|
|
110
|
+
|
|
111
|
+
### 3. 段階的仕様書作成
|
|
112
|
+
**重要**: 各段階で必ずユーザー承認を得て、コミット&プッシュしてから次へ進行すること。
|
|
113
|
+
|
|
114
|
+
#### Phase 1: requirements.md(要件定義書)
|
|
115
|
+
1. spec-requirements-generatorエージェントで作成
|
|
116
|
+
- エージェント内で既存コードの分析を実施
|
|
117
|
+
- ATDD形式のユーザーストーリーと受け入れ基準
|
|
118
|
+
2. **ユーザーに内容確認を依頼**
|
|
119
|
+
- 作成したファイルのパスと概要を提示
|
|
120
|
+
- 確認ポイントを明示(要件の過不足、受け入れ基準の明確性など)
|
|
121
|
+
3. **ユーザー承認後、コミット&プッシュ**
|
|
122
|
+
- コミットメッセージ: `docs: add requirements for {feature-name}`
|
|
123
|
+
- ブランチは現在のブランチにプッシュ
|
|
124
|
+
- 他のメンバーがレビューできるようにする
|
|
125
|
+
4. **承認を得てから次のステップ(design.md)に進む**
|
|
126
|
+
|
|
127
|
+
#### Phase 2: design.md(設計書)
|
|
128
|
+
1. spec-design-generatorエージェントで作成
|
|
129
|
+
- エージェント内で既存アーキテクチャの調査を実施
|
|
130
|
+
- 技術アーキテクチャとデータモデル
|
|
131
|
+
- requirements.mdの内容を参照
|
|
132
|
+
2. **ユーザーに内容確認を依頼**
|
|
133
|
+
- 作成したファイルのパスと概要を提示
|
|
134
|
+
- 確認ポイントを明示(アーキテクチャの妥当性、実装方針など)
|
|
135
|
+
3. **ユーザー承認後、コミット&プッシュ**
|
|
136
|
+
- コミットメッセージ: `docs: add design for {feature-name}`
|
|
137
|
+
- ブランチは現在のブランチにプッシュ
|
|
138
|
+
4. **承認を得てから次のステップ(QAテスト仕様生成)に進む**
|
|
139
|
+
|
|
140
|
+
#### Phase 3: QAテスト仕様生成(シナリオテスト含む)
|
|
141
|
+
1. spec-qa-generatorエージェントで作成
|
|
142
|
+
- requirements.mdとdesign.mdの内容を参照
|
|
143
|
+
- **シナリオテスト(scenarios.md)**: 複数タスクをまたぐ継続操作フローのテスト仕様
|
|
144
|
+
- **フェーズ別テスト仕様**: 各タスクグループのテスト仕様
|
|
145
|
+
- 受け入れ基準(AC)との対応付け
|
|
146
|
+
2. **ユーザーに内容確認を依頼**
|
|
147
|
+
- 作成したqa-tests/ディレクトリの構成と概要を提示
|
|
148
|
+
- 確認ポイントを明示(シナリオテストの網羅性、実施タイミングの妥当性など)
|
|
149
|
+
3. **ユーザー承認後、コミット&プッシュ**
|
|
150
|
+
- コミットメッセージ: `docs: add qa-test specs for {feature-name}`
|
|
151
|
+
- ブランチは現在のブランチにプッシュ
|
|
152
|
+
4. **承認を得てから次のステップ(GitHub Issueへのタスク記述)に進む**
|
|
153
|
+
|
|
154
|
+
#### Phase 4: GitHub Issueへのタスク記述
|
|
155
|
+
1. spec-tasks-generatorエージェントで作成
|
|
156
|
+
- エージェント内で実装の影響範囲を分析
|
|
157
|
+
- 実装タスクの分解と依存関係
|
|
158
|
+
- requirements.md、design.md、**qa-tests/scenarios.md**の内容を参照
|
|
159
|
+
- 各タスクに**シナリオテスト実施タイミング**を明記
|
|
160
|
+
- **GitHub Issueの説明文にタスク一覧を記述**
|
|
161
|
+
2. **ユーザーに内容確認を依頼**
|
|
162
|
+
- 更新したGitHub IssueのURL(#{issue_number})と概要を提示
|
|
163
|
+
- 確認ポイントを明示(タスク分解の粒度、依存関係の妥当性など)
|
|
164
|
+
3. **ユーザー承認後、以下の処理を実行**
|
|
165
|
+
|
|
166
|
+
a. **Issueブランチ作成(MCP)**
|
|
167
|
+
- `mcp__github__create_branch` を使用
|
|
168
|
+
- branch: `issue/{issue番号}`(例: `issue/42`)
|
|
169
|
+
- ⚠️ **機能名は含めない**(ディレクトリ名とは異なる。上記「命名規則」参照)
|
|
170
|
+
- from_branch: デフォルトブランチ(main/masterなど)
|
|
171
|
+
|
|
172
|
+
b. **仕様書ファイルをプッシュ(MCP)**
|
|
173
|
+
- `mcp__github__push_files` を使用
|
|
174
|
+
- branch: `issue/{issue番号}`
|
|
175
|
+
- files: requirements.md, design.md, qa-tests/(または分割された各ファイル)
|
|
176
|
+
- message: `docs: add specs for {feature-name} (Issue #{issue_number})`
|
|
177
|
+
|
|
178
|
+
c. **PR作成(MCP)**
|
|
179
|
+
- `mcp__github__create_pull_request` を使用
|
|
180
|
+
- base: デフォルトブランチ
|
|
181
|
+
- head: `issue/{issue番号}`
|
|
182
|
+
- title: `docs: {機能名} 仕様書`
|
|
183
|
+
- body: `Issue #{issue番号} の仕様書を作成しました。`
|
|
184
|
+
- **PR URLを記録**
|
|
185
|
+
|
|
186
|
+
d. **GitHub Issue説明文を更新(MCP)**
|
|
187
|
+
- `mcp__github__issue_write` を使用(method: update)
|
|
188
|
+
- 本文に以下を含める:
|
|
189
|
+
- Spec PR へのリンク
|
|
190
|
+
- 要件ドキュメントへのリンク(requirements.mdまたはrequirements/README.md)
|
|
191
|
+
- 設計ドキュメントへのリンク(design.mdまたはdesign/README.md)
|
|
192
|
+
- QAテスト仕様へのリンク(qa-tests/scenarios.md)
|
|
193
|
+
- タスク一覧(Phase別チェックボックス形式、シナリオテスト実施タイミング明記)
|
|
194
|
+
|
|
195
|
+
4. **全ての仕様書作成が完了したことを報告**
|
|
196
|
+
- GitHub Issue URLを明記
|
|
197
|
+
- Spec PR URLを明記
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
### 4. 既存ファイル処理
|
|
201
|
+
- 既存ファイルは内容確認後に次段階へ進行
|
|
202
|
+
- 修正指示がある場合のみ該当エージェントで再生成
|
|
203
|
+
|
|
204
|
+
### 4. 成果物の構成
|
|
205
|
+
|
|
206
|
+
#### 基本構成(各ファイルが1000行以下の場合)
|
|
207
|
+
```
|
|
208
|
+
/docs/specs/issues/
|
|
209
|
+
└── {機能カテゴリ名}/
|
|
210
|
+
└── issue{issue番号}-{機能名}/
|
|
211
|
+
├── requirements.md # 要件定義書(ATDD形式)
|
|
212
|
+
├── design.md # 設計書(技術詳細)
|
|
213
|
+
└── qa-tests/ # QAテスト仕様
|
|
214
|
+
├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
|
|
215
|
+
└── phase{N}.md # 各フェーズのテスト仕様
|
|
216
|
+
|
|
217
|
+
(注: タスク一覧はGitHub Issueに記述)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
#### 分割構成(ファイルが1000行超過の場合)
|
|
221
|
+
```
|
|
222
|
+
/docs/specs/issues/
|
|
223
|
+
└── {機能カテゴリ名}/
|
|
224
|
+
└── issue{issue番号}-{機能名}/
|
|
225
|
+
├── requirements/ # 要件定義書ディレクトリ
|
|
226
|
+
│ ├── README.md # 目次
|
|
227
|
+
│ ├── overview.md # 概要とスコープ
|
|
228
|
+
│ ├── stories.md # ユーザーストーリー
|
|
229
|
+
│ └── technical.md # 技術要件
|
|
230
|
+
├── design/ # 設計書ディレクトリ
|
|
231
|
+
│ ├── README.md # 目次
|
|
232
|
+
│ ├── architecture.md # アーキテクチャ
|
|
233
|
+
│ ├── implementation.md # 実装詳細
|
|
234
|
+
│ └── quality.md # 品質と運用
|
|
235
|
+
└── qa-tests/ # QAテスト仕様
|
|
236
|
+
├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
|
|
237
|
+
└── phase{N}.md # 各フェーズのテスト仕様
|
|
238
|
+
|
|
239
|
+
(注: タスク一覧はGitHub Issueに記述)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**自動分割機能**:
|
|
243
|
+
- 各エージェント(requirements/design)は生成後に自動的にファイルサイズをチェック
|
|
244
|
+
- 1000行を超える場合、意味のあるまとまりで2-3個のパートに自動分割
|
|
245
|
+
- README.mdで全体構成とナビゲーションを提供
|
|
246
|
+
- 分割されたファイルも他エージェントから正しく参照可能
|
|
247
|
+
|
|
248
|
+
## 重要な原則
|
|
249
|
+
- 段階的開発:各フェーズの承認を必須
|
|
250
|
+
- ATDD形式による受け入れ基準の明確化
|
|
251
|
+
- Next.js + Hono + Prisma技術スタック対応
|
|
252
|
+
- Asana/Figma連携によるトレーサビリティ確保
|
|
253
|
+
|
|
254
|
+
実行を開始します...
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "ローカル開発環境を起動します"
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ローカル開発環境起動コマンド
|
|
7
|
+
|
|
8
|
+
## コマンドの目的
|
|
9
|
+
|
|
10
|
+
開発サーバーを起動します。`pnpm dev` は自動的にWorktree環境を検出し、適切なポート・DB設定を行います。
|
|
11
|
+
|
|
12
|
+
**新機能**: 複数のClaude CodeやCodexセッションが並列で実行されている場合でも、ポート競合を自動解決します。
|
|
13
|
+
|
|
14
|
+
## 実行手順
|
|
15
|
+
|
|
16
|
+
### 通常起動(フォアグラウンド)
|
|
17
|
+
```bash
|
|
18
|
+
# 開発サーバー起動(Worktree対応・自動セットアップ)
|
|
19
|
+
# 同じポートを使用しているプロセスがあれば自動終了してから起動
|
|
20
|
+
pnpm dev
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### バックグラウンド起動(推奨:並列セッション時)
|
|
24
|
+
```bash
|
|
25
|
+
# バックグラウンドで起動(ログは log/dev.log に出力)
|
|
26
|
+
pnpm dev:bg
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 管理コマンド
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 開発サーバーの状態確認
|
|
33
|
+
pnpm dev:status
|
|
34
|
+
|
|
35
|
+
# ログをリアルタイムで確認
|
|
36
|
+
pnpm dev:logs
|
|
37
|
+
|
|
38
|
+
# 開発サーバーを停止
|
|
39
|
+
pnpm dev:stop
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## オプション
|
|
43
|
+
|
|
44
|
+
| オプション | 説明 |
|
|
45
|
+
|-----------|------|
|
|
46
|
+
| `--background`, `-b` | バックグラウンドで起動(ログはlog/dev.logに出力) |
|
|
47
|
+
| `--no-kill` | 既存プロセスを終了せずにポート競合時はエラー |
|
|
48
|
+
| `--setup-only` | 環境セットアップのみ(サーバー起動なし) |
|
|
49
|
+
| `--stop` | 実行中の開発サーバーを停止 |
|
|
50
|
+
| `--status` | 開発サーバーのステータス表示 |
|
|
51
|
+
|
|
52
|
+
## 注意事項
|
|
53
|
+
|
|
54
|
+
- 初回実行時は `pnpm dev:setup` で環境セットアップが必要です
|
|
55
|
+
- `pnpm dev` はWorktree環境を自動検出してポート・DB名を調整します
|
|
56
|
+
- **並列実行時**: 同じポートを使用しているプロセスは自動的に終了されます
|
|
57
|
+
- ログファイルは `log/dev.log` に出力されます
|
|
58
|
+
|
|
59
|
+
## ターミナルから直接実行する場合
|
|
60
|
+
|
|
61
|
+
### 初回セットアップ
|
|
62
|
+
```bash
|
|
63
|
+
pnpm dev:setup # .env作成、DB起動・初期化
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 開発サーバー起動
|
|
67
|
+
```bash
|
|
68
|
+
pnpm dev # フォアグラウンド(全自動・Worktree対応)
|
|
69
|
+
pnpm dev:bg # バックグラウンド(Claude Code/Codex並列実行時推奨)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### セットアップのみ(開発サーバーは手動起動)
|
|
73
|
+
```bash
|
|
74
|
+
pnpm env:prepare
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## トラブルシューティング
|
|
78
|
+
|
|
79
|
+
### ポートが解放されない場合
|
|
80
|
+
```bash
|
|
81
|
+
# ステータス確認
|
|
82
|
+
pnpm dev:status
|
|
83
|
+
|
|
84
|
+
# 強制終了
|
|
85
|
+
pnpm dev:stop
|
|
86
|
+
|
|
87
|
+
# 特定ポートのプロセスを確認
|
|
88
|
+
lsof -i :3000
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### ログが見たい場合
|
|
92
|
+
```bash
|
|
93
|
+
# リアルタイムログ
|
|
94
|
+
pnpm dev:logs
|
|
95
|
+
|
|
96
|
+
# または直接
|
|
97
|
+
tail -f log/dev.log
|
|
98
|
+
```
|