@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,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-context-loader
|
|
3
|
+
description: "spec(仕様書)が存在する場合の文脈収集を担当するSkill。requirements.md、design.md、qa-tests/から要件・設計・テスト仕様を抽出し、構造化して返却します"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Grep
|
|
7
|
+
- Glob
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# spec-context-loader Skill: 仕様書からの文脈収集
|
|
11
|
+
|
|
12
|
+
あなたは仕様書分析のスペシャリストで、ATDD(受け入れテスト駆動開発)とドキュメント駆動開発に精通しています。構造化された仕様書から必要な情報を効率的に抽出し、実装に必要な文脈を提供します。
|
|
13
|
+
|
|
14
|
+
## 中核的な責務
|
|
15
|
+
|
|
16
|
+
spec-create で作成された仕様書(requirements.md、design.md、qa-tests/)から、タスク実装に必要な文脈情報を抽出・構造化します。
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 入力
|
|
21
|
+
|
|
22
|
+
**必須パラメータ**:
|
|
23
|
+
- `spec_dir`: spec ディレクトリのパス(例: `/docs/specs/issues/auth/issue21-login-feature/`)
|
|
24
|
+
- `task_group_id`: タスクグループID(例: `1.1`)
|
|
25
|
+
|
|
26
|
+
**入力形式**: `{spec_dir} --task-group-id {task_group_id}`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 実行手順(4ステップ)
|
|
31
|
+
|
|
32
|
+
### ステップ1: spec ディレクトリの検証
|
|
33
|
+
|
|
34
|
+
1. 指定された `spec_dir` の存在を確認
|
|
35
|
+
2. 以下のファイルの存在を確認:
|
|
36
|
+
- `requirements.md` または `requirements/README.md`
|
|
37
|
+
- `design.md` または `design/README.md`
|
|
38
|
+
- `qa-tests/scenarios.md`
|
|
39
|
+
3. 不足ファイルがある場合はエラーを返却
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### ステップ2: requirements.md からの要件抽出
|
|
44
|
+
|
|
45
|
+
1. requirements.md を読み込む
|
|
46
|
+
2. 以下の情報を抽出:
|
|
47
|
+
- **ユーザーストーリー**: 該当タスクに関連するストーリー
|
|
48
|
+
- **受け入れ条件(AC)**: `AC{N}.{M}` 形式のすべての受け入れ基準
|
|
49
|
+
- **検証レベル**: 各ACの `Unit` / `Integration` / `E2E` 分類
|
|
50
|
+
- **非機能要件**: パフォーマンス、セキュリティ等の制約
|
|
51
|
+
|
|
52
|
+
**パース対象**: Given-When-Then 形式の受け入れ条件
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### ステップ3: design.md からの設計仕様抽出
|
|
57
|
+
|
|
58
|
+
1. design.md を読み込む
|
|
59
|
+
2. 以下の情報を抽出:
|
|
60
|
+
- **アーキテクチャ**: 使用するパターン、レイヤー構造
|
|
61
|
+
- **データ構造**: 型定義、インターフェース、Prismaモデル
|
|
62
|
+
- **API仕様**: エンドポイント、リクエスト/レスポンス形式
|
|
63
|
+
- **コンポーネント設計**: 画面構成、状態管理
|
|
64
|
+
- **エラーハンドリング方針**: エラー分類、処理方法
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### ステップ4: qa-tests/ からのテスト仕様抽出
|
|
69
|
+
|
|
70
|
+
1. タスクグループIDからテストファイルを特定
|
|
71
|
+
- 例: `1.1` → `qa-tests/phase1/1-1.md`
|
|
72
|
+
2. scenarios.md から該当タスクのシナリオテストを確認
|
|
73
|
+
3. 以下の情報を抽出:
|
|
74
|
+
- **テストシナリオ**: 実行すべきテストケース
|
|
75
|
+
- **確認項目**: 各シナリオの検証ポイント
|
|
76
|
+
- **実施タイミング**: 部分実行/完全実行の判定
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 出力形式
|
|
81
|
+
|
|
82
|
+
**成功時**: 以下のマークダウン形式で出力
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
## コンテキスト収集結果
|
|
86
|
+
|
|
87
|
+
### spec 情報
|
|
88
|
+
- **ディレクトリ**: {spec_dir}
|
|
89
|
+
- **タスクグループ**: {task_group_id}
|
|
90
|
+
|
|
91
|
+
### 要件
|
|
92
|
+
#### 機能要件
|
|
93
|
+
- [ユーザーストーリー1の概要]
|
|
94
|
+
- [ユーザーストーリー2の概要]
|
|
95
|
+
|
|
96
|
+
#### 非機能要件
|
|
97
|
+
- [パフォーマンス要件]
|
|
98
|
+
- [セキュリティ要件]
|
|
99
|
+
|
|
100
|
+
#### 受け入れ条件
|
|
101
|
+
| AC番号 | タイトル | 検証レベル | 概要 |
|
|
102
|
+
|--------|---------|-----------|------|
|
|
103
|
+
| AC1.1 | [タイトル] | Unit | [Given-When-Then概要] |
|
|
104
|
+
| AC1.2 | [タイトル] | Integration | [Given-When-Then概要] |
|
|
105
|
+
|
|
106
|
+
### 設計
|
|
107
|
+
#### アーキテクチャ
|
|
108
|
+
- **パターン**: [使用するアーキテクチャパターン]
|
|
109
|
+
- **レイヤー**: [影響するレイヤー]
|
|
110
|
+
|
|
111
|
+
#### データ構造
|
|
112
|
+
```typescript
|
|
113
|
+
// 主要な型定義
|
|
114
|
+
interface Example {
|
|
115
|
+
// ...
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### API仕様
|
|
120
|
+
- **エンドポイント**: `POST /api/example`
|
|
121
|
+
- **リクエスト**: [形式]
|
|
122
|
+
- **レスポンス**: [形式]
|
|
123
|
+
|
|
124
|
+
#### エラーハンドリング
|
|
125
|
+
- [エラー分類と処理方針]
|
|
126
|
+
|
|
127
|
+
### テスト仕様
|
|
128
|
+
#### 対象テストファイル
|
|
129
|
+
- `qa-tests/phase{N}/{X}-{Y}.md`
|
|
130
|
+
|
|
131
|
+
#### シナリオテスト
|
|
132
|
+
- **シナリオ1**: [概要] - 実施タイミング: [Step X-Y]
|
|
133
|
+
|
|
134
|
+
#### 確認項目
|
|
135
|
+
1. [確認項目1]
|
|
136
|
+
2. [確認項目2]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**エラー時**: 以下の形式で出力
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
## コンテキスト収集エラー
|
|
143
|
+
|
|
144
|
+
### ステータス: ❌ FAILURE
|
|
145
|
+
|
|
146
|
+
### エラー内容
|
|
147
|
+
- **原因**: [不足ファイル一覧 or エラー詳細]
|
|
148
|
+
- **推奨アクション**: `/spec-create` を実行して仕様書を完成させてください
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## エラー処理
|
|
154
|
+
|
|
155
|
+
| エラー種別 | 原因 | 対処 |
|
|
156
|
+
|-----------|------|------|
|
|
157
|
+
| spec ディレクトリ不在 | 指定パスが存在しない | パスを確認して再実行 |
|
|
158
|
+
| requirements.md 不在 | Phase 1 未完了 | `/spec-create` で Phase 1 を実行 |
|
|
159
|
+
| design.md 不在 | Phase 2 未完了 | `/spec-create` で Phase 2 を実行 |
|
|
160
|
+
| qa-tests/ 不在 | Phase 3 未完了 | `/spec-create` で Phase 3 を実行 |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 実行制約
|
|
165
|
+
|
|
166
|
+
このSkillは `task-executer` エージェントから呼び出されます。spec が存在することが前提です。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 連携
|
|
171
|
+
|
|
172
|
+
- **呼び出し元**: `task-executer` - コンテキスト収集フェーズ
|
|
173
|
+
- **代替Skill**: `general-context-loader` - spec がない場合の文脈収集
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
**最終更新**: 2025-01-10
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-commit
|
|
3
|
+
description: "コミット・プッシュを実行するSkill。docs/einja/steering/commit-rules.mdのルールに従い、分割コミットを実施。直接呼び出し可能(確認あり)、task-exec経由では自動実行"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
- TodoWrite
|
|
11
|
+
- TodoRead
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# task-commit Skill: コミット・プッシュ実行エンジン
|
|
15
|
+
|
|
16
|
+
## 役割
|
|
17
|
+
|
|
18
|
+
変更をコミット・プッシュします。`docs/einja/steering/commit-rules.md` のコミットルールに厳格に従い、適切な粒度でコミットを分割します。
|
|
19
|
+
|
|
20
|
+
## 実行手順(6ステップ)
|
|
21
|
+
|
|
22
|
+
### ステップ1: 最新化(必要な場合のみ)
|
|
23
|
+
|
|
24
|
+
**⚠️ 重要**: 毎回 `git pull --rebase` を実行するのは非効率。リモートに新しいコミットがある場合のみ実行する。
|
|
25
|
+
|
|
26
|
+
#### 手順
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 1. リモートの最新情報を取得(ローカルは変更しない)
|
|
30
|
+
git fetch origin
|
|
31
|
+
|
|
32
|
+
# 2. リモートとの差分を確認
|
|
33
|
+
git rev-list HEAD..origin/main --count
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- **差分が0の場合**: 最新なので何もしない(次のステップへ)
|
|
37
|
+
- **差分がある場合**: 以下を実行
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# ローカル変更を一時退避
|
|
41
|
+
git stash
|
|
42
|
+
|
|
43
|
+
# リモートの変更を取り込み
|
|
44
|
+
git pull --rebase
|
|
45
|
+
|
|
46
|
+
# ローカル変更を復元
|
|
47
|
+
git stash pop
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### コンフリクト発生時
|
|
51
|
+
|
|
52
|
+
1. **conflict-resolver エージェント** を Task ツールで呼び出して解消
|
|
53
|
+
2. 解消できない場合は以下を出力して終了:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## 🚀 コミット・プッシュ
|
|
57
|
+
|
|
58
|
+
### ステータス: ❌ FAILURE
|
|
59
|
+
|
|
60
|
+
**エラー**: git pull --rebase でコンフリクトが発生し、解消できませんでした。
|
|
61
|
+
|
|
62
|
+
手動でコンフリクトを解決してください。
|
|
63
|
+
|
|
64
|
+
\`\`\`
|
|
65
|
+
[コンフリクト詳細]
|
|
66
|
+
\`\`\`
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### ステップ2: 変更確認
|
|
72
|
+
|
|
73
|
+
1. `git status` で変更ファイルを確認
|
|
74
|
+
2. `git diff` で差分内容を確認
|
|
75
|
+
3. **変更がない場合**: 以下を出力して正常終了
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## 🚀 コミット・プッシュ完了
|
|
79
|
+
|
|
80
|
+
### ステータス: ✅ SUCCESS(変更なし)
|
|
81
|
+
|
|
82
|
+
コミット対象の変更がありませんでした。
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### ステップ3: コミット分割方針の決定
|
|
88
|
+
|
|
89
|
+
**⚠️ 重要**: `docs/einja/steering/commit-rules.md` の「コミットの分割方針」を**必ず**参照すること。
|
|
90
|
+
|
|
91
|
+
#### 分割基準
|
|
92
|
+
|
|
93
|
+
以下の場合は**必ず別々のコミットに分割**:
|
|
94
|
+
|
|
95
|
+
1. **異なる目的や種類の変更**
|
|
96
|
+
- ソースコードの変更とドキュメントの更新
|
|
97
|
+
- 機能追加と設定ファイルの変更
|
|
98
|
+
- リファクタリングとバグ修正
|
|
99
|
+
|
|
100
|
+
2. **異なるコンポーネントやモジュールの変更**
|
|
101
|
+
- 複数のマイクロサービスやコンポーネントの変更
|
|
102
|
+
- フロントエンドとバックエンドの変更
|
|
103
|
+
|
|
104
|
+
3. **レビューの容易さを考慮した分割**
|
|
105
|
+
- 大規模な変更は小さな論理的なまとまりに分割
|
|
106
|
+
- テストコードの追加・更新は実装とは別のコミット
|
|
107
|
+
|
|
108
|
+
#### ユーザーへの確認(必須)
|
|
109
|
+
|
|
110
|
+
**AskUserQuestionツール**を使用して、コミット分割案の承認を得る。
|
|
111
|
+
|
|
112
|
+
**⚠️ 重要**: `question` パラメータに**具体的なコミット分割内容を必ず記載**すること。「コミット分割案を確認してください」のような抽象的な質問は**禁止**。
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
AskUserQuestion:
|
|
116
|
+
question: |
|
|
117
|
+
以下のコミット分割案で実行してよろしいですか?
|
|
118
|
+
|
|
119
|
+
【コミット1】feat: ユーザー認証機能の追加
|
|
120
|
+
対象: src/auth/login.ts, src/auth/logout.ts, src/auth/middleware.ts
|
|
121
|
+
|
|
122
|
+
【コミット2】test: 認証機能のテスト追加
|
|
123
|
+
対象: src/auth/__tests__/login.test.ts, src/auth/__tests__/logout.test.ts
|
|
124
|
+
header: "分割案"
|
|
125
|
+
options:
|
|
126
|
+
- label: "承認"
|
|
127
|
+
description: "この分割案でコミットを実行"
|
|
128
|
+
- label: "1コミットにまとめる"
|
|
129
|
+
description: "すべての変更を1つのコミットにまとめる"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**question記載必須項目**:
|
|
133
|
+
- 各コミットのメッセージ(プレフィックス付き)
|
|
134
|
+
- 各コミットの対象ファイル一覧
|
|
135
|
+
|
|
136
|
+
ユーザーが「Other」で修正指示を出した場合は、その指示に従って分割案を修正し、再度確認を取る。
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### ステップ4: 品質チェック
|
|
141
|
+
|
|
142
|
+
#### task-exec経由での呼び出しの場合
|
|
143
|
+
|
|
144
|
+
task-exec経由でQA合格後に呼び出されるため、品質チェック(lint/typecheck/test/build)は**スキップ**します。
|
|
145
|
+
|
|
146
|
+
QAフェーズで既に実行済みのため、重複実行は不要です。
|
|
147
|
+
|
|
148
|
+
#### 直接呼び出しの場合
|
|
149
|
+
|
|
150
|
+
コミット前に `pnpm prepush` を実行して以下のチェックを行います:
|
|
151
|
+
|
|
152
|
+
1. **lint**: lint-staged による変更ファイルの lint チェック
|
|
153
|
+
2. **typecheck**: TypeScript の型チェック
|
|
154
|
+
3. **test**: 変更ファイルに関連するテストのみ実行(vitest related --run)
|
|
155
|
+
|
|
156
|
+
`pnpm prepush` が失敗した場合は、エラー内容を報告して終了します。
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
### ステップ5: コミット実行
|
|
161
|
+
|
|
162
|
+
合意した分割方針に従って順次コミットを実行。
|
|
163
|
+
|
|
164
|
+
#### コミットメッセージ形式
|
|
165
|
+
|
|
166
|
+
`docs/einja/steering/commit-rules.md` に従い:
|
|
167
|
+
|
|
168
|
+
- **プレフィックス**: `feat:`, `fix:`, `docs:`, `style:`, `refactor:`, `test:`, `chore:`
|
|
169
|
+
- **言語**: 日本語
|
|
170
|
+
- **形式**: 1行目に概要、2行目以降に詳細
|
|
171
|
+
|
|
172
|
+
#### コミットコマンド
|
|
173
|
+
|
|
174
|
+
**task-exec経由での呼び出しの場合**(QA済み):
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
git add src/auth/login.ts src/auth/logout.ts && git commit -m "$(cat <<'EOF'
|
|
178
|
+
feat: ユーザー認証機能の追加
|
|
179
|
+
|
|
180
|
+
- JWT認証の実装
|
|
181
|
+
- ログイン・ログアウトエンドポイントの追加
|
|
182
|
+
- 認証ミドルウェアの実装
|
|
183
|
+
EOF
|
|
184
|
+
)"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**直接呼び出しの場合**(prepush実行):
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
git add src/auth/login.ts src/auth/logout.ts && pnpm prepush && git commit -m "$(cat <<'EOF'
|
|
191
|
+
feat: ユーザー認証機能の追加
|
|
192
|
+
|
|
193
|
+
- JWT認証の実装
|
|
194
|
+
- ログイン・ログアウトエンドポイントの追加
|
|
195
|
+
- 認証ミドルウェアの実装
|
|
196
|
+
EOF
|
|
197
|
+
)"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### ステップ6: プッシュ実行
|
|
203
|
+
|
|
204
|
+
1. `git push` を実行
|
|
205
|
+
2. 結果を出力
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 出力形式
|
|
210
|
+
|
|
211
|
+
### 成功時
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
## 🚀 コミット・プッシュ完了
|
|
215
|
+
|
|
216
|
+
### コミットサマリー
|
|
217
|
+
- **コミット数**: {count}個
|
|
218
|
+
- **変更ファイル数**: {files}個
|
|
219
|
+
|
|
220
|
+
### コミット一覧
|
|
221
|
+
| # | メッセージ | ファイル数 |
|
|
222
|
+
|---|----------|----------|
|
|
223
|
+
| 1 | feat: ユーザー認証機能の追加 | 3 |
|
|
224
|
+
| 2 | test: 認証機能のテスト追加 | 2 |
|
|
225
|
+
|
|
226
|
+
### プッシュ結果
|
|
227
|
+
\`\`\`
|
|
228
|
+
[git push の出力]
|
|
229
|
+
\`\`\`
|
|
230
|
+
|
|
231
|
+
### ステータス: ✅ SUCCESS
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### 失敗時
|
|
235
|
+
|
|
236
|
+
```markdown
|
|
237
|
+
## 🚀 コミット・プッシュ
|
|
238
|
+
|
|
239
|
+
### ステータス: ❌ FAILURE
|
|
240
|
+
|
|
241
|
+
**エラー**: [エラーの種類]
|
|
242
|
+
|
|
243
|
+
\`\`\`
|
|
244
|
+
[エラー詳細]
|
|
245
|
+
\`\`\`
|
|
246
|
+
|
|
247
|
+
[推奨される対処方法]
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## エラーハンドリング
|
|
253
|
+
|
|
254
|
+
| エラー種別 | 対処 |
|
|
255
|
+
|-----------|------|
|
|
256
|
+
| git pull コンフリクト | conflict-resolver エージェントを Task ツールで呼び出して解消を試行 |
|
|
257
|
+
| コンフリクト解消失敗 | 報告して終了、手動解決を依頼 |
|
|
258
|
+
| git commit 失敗 | エラー内容を報告 |
|
|
259
|
+
| git push 失敗 | エラー内容を報告、原因を説明 |
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## 参考資料
|
|
264
|
+
|
|
265
|
+
- `docs/einja/steering/commit-rules.md` - コミットルール、分割方針、メッセージ形式の詳細
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
**最終更新**: 2026-01-10
|