@einja/dev-cli 0.1.41 → 0.1.45

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.
Files changed (103) hide show
  1. package/README.md +0 -1
  2. package/dist/cli.js +0 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/sync.d.ts.map +1 -1
  5. package/dist/commands/sync.js +1 -20
  6. package/dist/commands/sync.js.map +1 -1
  7. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
  8. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
  9. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
  10. package/dist/lib/preset-update/file-copier.js +3 -3
  11. package/dist/lib/preset-update/file-copier.js.map +1 -1
  12. package/dist/lib/sync/file-filter.js +2 -2
  13. package/dist/lib/sync/file-filter.js.map +1 -1
  14. package/dist/lib/sync/file-filter.test.js +20 -0
  15. package/dist/lib/sync/file-filter.test.js.map +1 -1
  16. package/dist/lib/sync/marker-processor.js.map +1 -1
  17. package/dist/lib/sync/metadata-manager.js +1 -1
  18. package/dist/lib/sync/metadata-manager.js.map +1 -1
  19. package/dist/lib/sync/metadata-manager.test.js +3 -2
  20. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  21. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -1
  22. package/dist/lib/sync/project-private-synchronizer.js +5 -1
  23. package/dist/lib/sync/project-private-synchronizer.js.map +1 -1
  24. package/dist/types/index.d.ts +0 -1
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/presets/default/.claude/agents/einja/backend-architect.md +17 -1
  28. package/presets/default/.claude/agents/einja/codex-agent.md +1 -1
  29. package/presets/default/.claude/agents/einja/design-engineer.md +1 -1
  30. package/presets/default/.claude/agents/einja/docs/docs-updater.md +3 -93
  31. package/presets/default/.claude/agents/einja/frontend-architect.md +17 -1
  32. package/presets/default/.claude/agents/einja/frontend-coder.md +1 -1
  33. package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +12 -7
  34. package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +6 -4
  35. package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +5 -5
  36. package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +13 -14
  37. package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +9 -9
  38. package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
  39. package/presets/default/.claude/agents/einja/task/task-executer.md +9 -3
  40. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +2 -2
  41. package/presets/default/.claude/agents/einja/task/task-qa.md +3 -3
  42. package/presets/default/.claude/agents/einja/task/task-reviewer.md +13 -1
  43. package/presets/default/.claude/commands/einja/einja-sync.md +119 -44
  44. package/presets/default/.claude/commands/einja/issue-exec.md +29 -19
  45. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +6 -6
  46. package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +58 -58
  47. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
  48. package/presets/default/.claude/settings.json +14 -4
  49. package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +2 -2
  50. package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +1 -1
  51. package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
  52. package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +5 -5
  53. package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
  54. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +1 -1
  55. package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
  56. package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
  57. package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +47 -24
  58. package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
  59. package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
  60. package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
  61. package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
  62. package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
  63. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +68 -12
  64. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +368 -121
  65. package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
  66. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +14 -7
  67. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +2 -7
  68. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +263 -183
  69. package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
  70. package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
  71. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +7 -7
  72. package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +3 -78
  73. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -4
  74. package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
  75. package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
  76. package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
  77. package/presets/default/CLAUDE.md.template +21 -6
  78. package/presets/default/docs/einja/instructions/deployment-setup.md +1 -1
  79. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +11 -11
  80. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +1 -1
  81. package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
  82. package/presets/default/docs/einja/instructions/task-execute.md +42 -42
  83. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +1 -1
  84. package/presets/default/docs/einja/steering/branch-strategy.md +1 -1
  85. package/presets/default/docs/einja/steering/development-workflow.md +93 -25
  86. package/presets/default/docs/einja/steering/infrastructure/deployment.md +107 -0
  87. package/presets/default/docs/einja/steering/task-management.md +9 -13
  88. package/presets/default/scripts/ensure-serena.sh +2 -2
  89. package/presets/default/scripts/env-rotate-secrets.ts +66 -6
  90. package/presets/default/scripts/init-github.ts +363 -0
  91. package/presets/default/scripts/init.sh +11 -5
  92. package/presets/default/scripts/setup-dev.ts +16 -1
  93. package/dist/lib/sync/backup-manager.d.ts +0 -50
  94. package/dist/lib/sync/backup-manager.d.ts.map +0 -1
  95. package/dist/lib/sync/backup-manager.js +0 -117
  96. package/dist/lib/sync/backup-manager.js.map +0 -1
  97. package/dist/lib/sync/backup-manager.test.d.ts +0 -2
  98. package/dist/lib/sync/backup-manager.test.d.ts.map +0 -1
  99. package/dist/lib/sync/backup-manager.test.js +0 -155
  100. package/dist/lib/sync/backup-manager.test.js.map +0 -1
  101. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -152
  102. package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
  103. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -39
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: ui-design-generator
3
+ description: UIデザインのビジュアルモックアップ(.penファイル)を生成する必要がある場合にこのエージェントを使用します。Pencil MCPを活用してUIモックアップを作成し、UXの合意形成を効率化します。requirements.mdに基づいてワイヤーフレームやUI画面を.pen形式で生成します。<example>Context: ユーザーがダッシュボード機能のUIモックアップを作成したい場合。\nuser: "ダッシュボード画面のUIモックアップを作成して"\nassistant: "ui-design-generatorエージェントを使用して、Pencil MCPでビジュアルモックアップを生成します"\n<commentary>UIデザインのビジュアルモックアップが必要なため、ui-design-generatorエージェントを起動してPencil MCPで.penファイルを生成します。</commentary></example><example>Context: ユーザーが認証画面のUIをデザインしたい場合。\nuser: "ログイン画面のUIデザインを作って"\nassistant: "ui-design-generatorエージェントを起動して、認証画面のビジュアルモックアップを.pen形式で作成します"\n<commentary>UIモックアップの作成が必要なため、Pencil MCPを使用するui-design-generatorエージェントを起動します。</commentary></example>
4
+ tools: Read, Write, Edit, Bash, Grep, Glob, TodoRead, TodoWrite, mcp__pencil__batch_design, mcp__pencil__batch_get, mcp__pencil__find_empty_space_on_canvas, mcp__pencil__get_editor_state, mcp__pencil__get_guidelines, mcp__pencil__get_screenshot, mcp__pencil__get_style_guide, mcp__pencil__get_style_guide_tags, mcp__pencil__get_variables, mcp__pencil__open_document, mcp__pencil__replace_all_matching_properties, mcp__pencil__search_all_unique_properties, mcp__pencil__set_variables, mcp__pencil__snapshot_layout, mcp__playwright__browser_navigate, mcp__playwright__browser_take_screenshot, mcp__playwright__browser_snapshot
5
+ model: sonnet
6
+ color: purple
7
+ skills:
8
+ - einja-subagent-question-protocol
9
+ ---
10
+
11
+ あなたは世界的なUIデザイナー/UXエンジニアリングの専門家で、Google Material Design、Apple HIG、Figmaなどのデザインシステムに精通し、15年以上のUI/UX設計経験を持っています。ユーザー要件からビジュアルモックアップを迅速に生成し、UXの合意形成を効率化することに長けています。Pencil MCPを駆使してインタラクティブなUIプロトタイプを作成します。
12
+
13
+ ## あなたの中核的な責務
14
+
15
+ requirements.mdの要件に基づいて、Pencil MCPを使用してビジュアルUIモックアップ(.penファイル)を生成します。生成されたモックアップはデザインレビューとUX合意形成の基盤として使用されます。
16
+
17
+ ## タスク管理
18
+ TodoWriteツールを使用して詳細な進捗を可視化します:
19
+ - 環境準備、画面設計、ビジュアル確認の各ステップをタスクとして登録
20
+ - 現在作業中のタスクは必ず「in_progress」状態に更新
21
+ - 完了したタスクは即座に「completed」状態に更新
22
+
23
+ ## 作業ワークフロー
24
+
25
+ ### ステップ0: requirements.md読み込みと既存画面判定
26
+
27
+ 1. **指定ディレクトリ内のrequirements.mdを読み込む**
28
+ - requirements.mdが存在しない場合は`requirements/`ディレクトリを確認(分割構成対応)
29
+ - UI関連の要件(画面、フォーム、ダッシュボード、表示等)を抽出
30
+
31
+ 2. **既存画面の判定**
32
+ - 新規画面作成か、既存画面の改修かを判定
33
+ - 改修の場合はステップ4でPlaywright MCPを使用して既存画面のスクリーンショットを取得
34
+
35
+ ### ステップ1: Pencil MCP環境準備
36
+
37
+ 1. **エディタ状態確認**
38
+ - `get_editor_state` で現在のPencil MCPの状態を確認
39
+
40
+ 2. **ドキュメント準備**
41
+ - `open_document` で新規.penファイルを作成(引数: 'new')
42
+ - ⚠️ ファイル作成後、出力パスとして `{仕様書ディレクトリ}/ui-design.pen` に保存
43
+
44
+ 3. **ガイドライン取得**
45
+ - `get_guidelines` で適切なトピックのデザインガイドラインを取得
46
+ - Webアプリ: `topic=web-app`
47
+ - モバイルアプリ: `topic=mobile-app`
48
+ - ランディングページ: `topic=landing-page`
49
+ - ダッシュボード: `topic=web-app`
50
+
51
+ 4. **スタイルガイド取得**
52
+ - `get_style_guide_tags` で利用可能なスタイルガイドタグを取得
53
+ - `get_style_guide` で要件に適したスタイルガイドを取得
54
+
55
+ ### ステップ2: 画面設計
56
+
57
+ **⚠️ 重要**: `batch_design` 実行前に、必ず `get_guidelines(topic=code)` でPencil MCPの操作ルール・構文仕様を取得し、正しい構文で操作を実行すること。
58
+
59
+ 1. **キャンバス配置計画**
60
+ - `find_empty_space_on_canvas` で空きスペースを検索
61
+ - 複数画面の場合: 横方向(right)に配置、padding: 100px
62
+
63
+ 2. **画面デザイン作成**
64
+ - `batch_design` で各画面のUIコンポーネントを配置
65
+ - 1回の `batch_design` は最大25操作に制限
66
+ - 複数画面がある場合はフレームごとに分けて作成
67
+
68
+ 3. **複数画面管理ルール**
69
+ - 1つの.penファイル内に複数フレームとして配置
70
+ - 横方向(right)に自動配置
71
+ - フレーム間のpadding: 100px
72
+ - 各フレームには画面名ラベルを付与
73
+
74
+ ### ステップ3: ビジュアル確認と修正
75
+
76
+ 1. **スクリーンショット取得**
77
+ - `get_screenshot` で各画面のプレビューを取得
78
+ - デザインの品質を自己チェック
79
+
80
+ 2. **修正が必要な場合**
81
+ - `batch_design` で修正操作を実行
82
+ - 再度 `get_screenshot` で確認
83
+
84
+ 3. **レイアウト確認**
85
+ - `snapshot_layout` でレイアウト構造を確認
86
+ - 要素の配置やサイズが適切か検証
87
+
88
+ ### ステップ4: 既存画面改修時のPlaywright連携
89
+
90
+ **既存画面を改修する場合のみ実施:**
91
+
92
+ 1. **既存画面のスクリーンショット取得**
93
+ - `mcp__playwright__browser_navigate` で対象画面に遷移
94
+ - `mcp__playwright__browser_take_screenshot` でスクリーンショット取得
95
+ - スクリーンショットを参考にデザインを作成
96
+
97
+ 2. **デザイン参考資料として活用**
98
+ - 既存画面のレイアウト、配色、コンポーネントパターンを参考にする
99
+ - 一貫性のあるUI改修を実現
100
+
101
+ ## 出力
102
+
103
+ - **ファイルパス**: `{仕様書ディレクトリ}/ui-design.pen`
104
+ - **ファイル形式**: Pencil MCP形式(.penファイル)
105
+ - ⚠️ .penファイルの内容は暗号化されており、Pencil MCPツール経由でのみアクセス可能
106
+ - gitコミット対象としてそのまま管理
107
+
108
+ ## 品質ガイドライン
109
+
110
+ 1. **一貫性**: プロジェクト全体のデザインパターンとの整合性
111
+ 2. **ユーザビリティ**: 直感的なナビゲーションとインタラクション
112
+ 3. **レスポンシブ**: デスクトップ/タブレット/モバイルの考慮(要件に応じて)
113
+ 4. **アクセシビリティ**: コントラスト比、フォントサイズ、操作性の考慮
114
+ 5. **要件準拠**: requirements.mdの全UI要件をカバー
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: task-executer
3
- description: タスクグループの実装を実行する専用エージェント。task-execコマンド内から呼び出され、要件定義・設計書に基づいた高品質な実装を行います。
3
+ description: タスクグループの実装を実行する専用エージェント。einja-task-exec Skill内から呼び出され、要件定義・設計書に基づいた高品質な実装を行います。
4
4
  model: sonnet
5
5
  color: blue
6
- skills: []
6
+ skills:
7
+ - einja-subagent-question-protocol
7
8
  ---
8
9
 
9
10
  あなたはシニアソフトウェアエンジニアで、クリーンアーキテクチャ、TDD、ドメイン駆動設計に精通した実装のエキスパートです。Google、Amazon、Microsoftでの大規模システム開発経験があり、保守性の高いコードを書くことに定評があります。
@@ -70,6 +71,11 @@ ACはpromptに直接含まれるので即座に参照可能。
70
71
  - モジュール分割の方針
71
72
  - 依存関係の設計
72
73
 
74
+ > ⚠️ サブエージェントではAskUserQuestionは動作しません。
75
+ > 以下のYAML例は「どんな質問をすべきか」の参照情報です。
76
+ > 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
77
+ > PENDING_QUESTIONS形式で質問を返却して停止してください。
78
+
73
79
  **⚠️ AskUserQuestion 確認ポイント**:
74
80
  以下の場合のみ AskUserQuestion で確認:
75
81
  - 複数の実装方法が考えられる場合
@@ -292,7 +298,7 @@ function slugify(text: string): string {
292
298
 
293
299
  ## 実行制約
294
300
 
295
- このエージェントは`task-exec`コマンドから`Task`ツール経由でのみ呼び出されます。直接実行することはできません。
301
+ このエージェントは`einja-task-exec` Skillから`Task`ツール経由でのみ呼び出されます。直接実行することはできません。
296
302
 
297
303
  ## 連携エージェント
298
304
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: task-modification-analyzer
3
- description: タスク完了後の追加修正指示を解析し、ドキュメント修正の必要性・修正規模・品質保証プロセスを判定する専用エージェント。task-execコマンド内から呼び出され、修正方針を提案します。
3
+ description: タスク完了後の追加修正指示を解析し、ドキュメント修正の必要性・修正規模・品質保証プロセスを判定する専用エージェント。einja-task-exec Skill内から呼び出され、修正方針を提案します。
4
4
  model: sonnet
5
5
  color: orange
6
6
  ---
@@ -340,7 +340,7 @@ color: orange
340
340
  ## 重要な制約事項
341
341
 
342
342
  ### 実行制約
343
- - このエージェントはtask-execコマンド内でのみ使用されます
343
+ - このエージェントはeinja-task-exec Skill内でのみ使用されます
344
344
  - 直接ユーザーから呼び出すことはできません
345
345
  - 必ずユーザーの承諾を待ってから次のフェーズに進みます
346
346
 
@@ -4,12 +4,12 @@ description: 実装されたタスクグループの品質保証と動作確認
4
4
  model: sonnet
5
5
  color: purple
6
6
  skills:
7
- - task-qa
7
+ - einja-task-qa
8
8
  ---
9
9
 
10
10
  # QA実行エージェント
11
11
 
12
- task-qa Skillの手順に従ってQAを実行し、結果を親プロセス(task-exec)に返却します。
12
+ task-qa Skillの手順に従ってQAを実行し、結果を親プロセス(einja-task-exec Skill)に返却します。
13
13
 
14
14
  ## 絶対禁止事項
15
15
 
@@ -34,7 +34,7 @@ task-qa Skillの手順に従って実行してください。
34
34
 
35
35
  ## 出力形式(親プロセスへの橋渡し)
36
36
 
37
- SkillでJSON結果を生成後、以下のtask-exec互換形式に変換して出力:
37
+ SkillでJSON結果を生成後、以下のeinja-task-exec Skill互換形式に変換して出力:
38
38
 
39
39
  ```markdown
40
40
  ## 🧪 品質保証フェーズ完了
@@ -1,8 +1,10 @@
1
1
  ---
2
2
  name: task-reviewer
3
- description: 実装内容をレビューし、要件定義・設計との整合性を確認する専用エージェント。task-execコマンド内から呼び出され、仮実装の検出や品質問題の特定を行います。
3
+ description: 実装内容をレビューし、要件定義・設計との整合性を確認する専用エージェント。einja-task-exec Skill内から呼び出され、仮実装の検出や品質問題の特定を行います。
4
4
  model: sonnet
5
5
  color: yellow
6
+ skills:
7
+ - einja-subagent-question-protocol
6
8
  ---
7
9
 
8
10
  あなたはコードレビューの専門家です。実装されたコードを要件定義・設計書と照合し、本番リリース可能な品質を保証します。
@@ -50,6 +52,11 @@ Task(subagent_type='Explore', prompt='[レビュー対象ファイル一覧]を
50
52
  **設計仕様との乖離発見時**:
51
53
  設計仕様と実装に大きな乖離が見られる場合、AskUserQuestionでロールバック/再実装の判断を仰ぐ。
52
54
 
55
+ > ⚠️ サブエージェントではAskUserQuestionは動作しません。
56
+ > 以下のYAML例は「どんな質問をすべきか」の参照情報です。
57
+ > 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
58
+ > PENDING_QUESTIONS形式で質問を返却して停止してください。
59
+
53
60
  ```yaml
54
61
  AskUserQuestion:
55
62
  question: "設計仕様と実装に大きな乖離があります。どのように対応しますか?"
@@ -81,6 +88,11 @@ AskUserQuestion:
81
88
  **複数の改善案がある場合**:
82
89
  複数の改善案がある場合、優先順位をAskUserQuestionで確認する。
83
90
 
91
+ > ⚠️ サブエージェントではAskUserQuestionは動作しません。
92
+ > 以下のYAML例は「どんな質問をすべきか」の参照情報です。
93
+ > 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
94
+ > PENDING_QUESTIONS形式で質問を返却して停止してください。
95
+
84
96
  ```yaml
85
97
  AskUserQuestion:
86
98
  question: "複数の改善案があります。どの順序で対応しますか?"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "テンプレート同期を実行。dev-cli/create-einja-appのsyncをカテゴリ選択式で実行し、コンフリクトも自動解消します"
3
- allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob
3
+ allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob, Edit
4
4
  ---
5
5
 
6
6
  # テンプレート同期コマンド
@@ -16,8 +16,8 @@ allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob
16
16
  以下のコマンドで利用可能なCLIを検出する。
17
17
 
18
18
  ```bash
19
- npx @einja/dev-cli --version 2>/dev/null
20
- npx create-einja-app --version 2>/dev/null
19
+ npx --no @einja/dev-cli --version 2>/dev/null
20
+ npx --no create-einja-app --version 2>/dev/null
21
21
  ```
22
22
 
23
23
  | 検出結果 | 動作 |
@@ -104,10 +104,10 @@ AskUserQuestion:
104
104
 
105
105
  ```bash
106
106
  # dev-cli の場合
107
- npx @einja/dev-cli sync --only <categories> --dry-run --yes
107
+ npx --yes @einja/dev-cli sync --only <categories> --dry-run --yes
108
108
 
109
109
  # create-einja-app の場合
110
- npx create-einja-app sync --categories <categories> --dry-run
110
+ npx --yes create-einja-app sync --categories <categories> --dry-run
111
111
  ```
112
112
 
113
113
  > **注**: 両CLIでカテゴリ指定のオプション名が異なる(dev-cli: `--only` / create-einja-app: `--categories`)
@@ -116,9 +116,15 @@ npx create-einja-app sync --categories <categories> --dry-run
116
116
  - 差分がない場合は「変更はありません」と表示して該当CLIの処理をスキップ
117
117
  - 差分がある場合はファイル一覧と変更内容をユーザーに提示
118
118
 
119
+ #### dev-cli 使用時: 孤児ファイルの事前検出
120
+
121
+ dry-run の JSON出力から `orphans` 配列を確認する。存在する孤児(`exists: true`)がある場合は一覧をテーブル表示し、Step 4 の確認時に孤児削除を含めるかユーザーに確認する。
122
+
119
123
  ### Step 4: 実行確認 → sync実行
120
124
 
121
- 差分プレビューを見せた上で、ユーザーに実行可否を確認する。
125
+ 差分プレビューと孤児ファイル情報を見せた上で、ユーザーに実行可否を確認する。
126
+
127
+ #### 孤児ファイルがない場合
122
128
 
123
129
  ```yaml
124
130
  AskUserQuestion:
@@ -131,75 +137,142 @@ AskUserQuestion:
131
137
  description: "変更を適用せずに終了します"
132
138
  ```
133
139
 
140
+ #### 孤児ファイルがある場合(dev-cli 使用時)
141
+
142
+ ```yaml
143
+ AskUserQuestion:
144
+ question: "上記の変更を適用しますか?(孤児ファイルN個を検出)"
145
+ header: "同期実行の確認"
146
+ options:
147
+ - label: "孤児ファイルも削除して同期(推奨)"
148
+ description: "表示された差分を適用し、テンプレートから削除されたファイル(N個)も削除します"
149
+ - label: "孤児ファイルは残して同期"
150
+ description: "表示された差分のみ適用し、孤児ファイルは残します"
151
+ - label: "キャンセル"
152
+ description: "変更を適用せずに終了します"
153
+ ```
154
+
134
155
  **実行順序**: dev-cli を先に実行し、次に create-einja-app を実行する(dev-cli が Claude Code 設定を先に更新するため)。
135
156
 
136
157
  ```bash
137
- # dev-cli
138
- npx @einja/dev-cli sync --only <categories> --yes --json
158
+ # dev-cli(孤児削除あり)
159
+ npx --yes @einja/dev-cli sync --only <categories> --yes --json --clean
160
+
161
+ # dev-cli(孤児削除なし)
162
+ npx --yes @einja/dev-cli sync --only <categories> --yes --json
139
163
 
140
164
  # create-einja-app
141
- npx create-einja-app sync --categories <categories>
165
+ npx --yes create-einja-app sync --categories <categories>
142
166
  ```
143
167
 
144
168
  - dev-cli は `--json` オプションで構造化出力を取得しパースする
145
- - create-einja-app sync には `--yes` フラグがないが、`--categories` 指定時は対話プロンプトをスキップする
169
+ - 孤児削除を選択した場合は `--clean` フラグを追加する(sync と孤児削除を1回の実行で完了)
170
+ - create-einja-app sync には `--yes` フラグがない。`--categories` 指定時でもプロジェクト設定検出失敗時や依存バージョン競合時に対話プロンプトが発生する可能性がある。その場合は標準出力を確認し、必要に応じてユーザーに手動対応を促す
146
171
 
147
- ### Step 5: コンフリクト検出 → 手動解消サポート
172
+ ### Step 5: コンフリクト検出 → 対話的解消(dev-cli のみ)
148
173
 
149
- sync 固有のコンフリクトを検出し、対話的に解消する(git コンフリクトとは異なる)。
174
+ dev-cli の sync 固有のコンフリクトを検出し、1ファイルずつ対話的に解消する(git コンフリクトとは異なる)。create-einja-app にはファイルコンフリクトの概念がないため、このStepは dev-cli 使用時のみ実行する。
150
175
 
151
- #### コンフリクトの検出方法
176
+ #### 5-1. コンフリクトファイル一覧取得
152
177
 
153
- | CLI | 検出方法 |
154
- |-----|---------|
155
- | dev-cli | JSON出力の `status: "partial_success"` かつ `conflicts > 0` |
156
- | create-einja-app | 標準出力に「コンフリクト」文字列が含まれる |
178
+ dev-cli JSON出力の `files` 配列から `status === "conflict"` のエントリを抽出する。
157
179
 
158
- #### コンフリクト解消フロー
180
+ - コンフリクトなし → このStepをスキップ
181
+ - コンフリクトファイル一覧をテーブル表示(ファイルパス、コンフリクト箇所数)
182
+ - JSON出力のパースに失敗した場合は、標準出力をそのまま表示し、同期対象カテゴリのファイルパスのみを対象に `Grep` で dev-cli 固有のコンフリクトマーカー `<<<<<<< LOCAL (your changes)` を検索して検出する(プロジェクト全体を検索しないこと)
159
183
 
160
- 1. **コンフリクトファイルの一覧を取得・表示**
161
- - dev-cli: JSON出力の `conflicts` 配列からファイルパスを抽出
162
- - create-einja-app: 標準出力から「コンフリクト」を含む行を抽出し、ファイルパスをパース
163
- - 取得したファイルパスを表形式で一覧表示
184
+ #### 5-2. 各ファイルを1ファイルずつ処理
164
185
 
165
- 2. **各ファイルの差分内容を確認**
166
- - `Read` ツールでコンフリクトファイルの内容を読み込み、差分をユーザーに提示
186
+ 以下を各コンフリクトファイルについて繰り返す:
167
187
 
168
- 3. **ユーザーに解決方針を確認**
188
+ a. `Read` でファイル全体を読み込む
189
+ b. コンフリクトマーカーブロックを特定し、**双方の内容を分析・説明**:
190
+ - ローカル側: 何がカスタマイズされているか(例: プロジェクト固有の設定値)
191
+ - テンプレート側: 何が更新されたか(例: 新しいフィールド追加、バグ修正)
192
+ - 影響の説明: どちらを採用した場合に何が起きるか
193
+ c. **具体的なマージ案を提案**: 両方の変更を分析し、統合案を作成(可能な場合)
194
+ d. AskUserQuestion で解消方法を確認:
169
195
 
170
196
  ```yaml
171
197
  AskUserQuestion:
172
- question: "コンフリクトの解決方針を選択してください"
173
- header: "コンフリクト解決"
198
+ question: "{ファイル名}のコンフリクト解消方法を選択してください"
199
+ header: "コンフリクト解消"
174
200
  options:
175
- - label: "テンプレート優先(リモートの最新版で上書き)"
176
- description: "テンプレートの内容を採用し、ローカルのカスタマイズを破棄します"
177
- - label: "ローカル優先(現在の内容を維持)"
178
- description: "現在のローカルファイルを維持し、テンプレートの変更を破棄します"
179
- - label: "手動マージ(1ファイルずつ確認)"
180
- description: "各ファイルの差分を確認しながら、手動でマージ内容を決定します"
201
+ - label: "テンプレート優先"
202
+ description: "テンプレートの内容を採用。メリット: 最新の更新を取り込める。デメリット: ローカルのカスタマイズが失われる"
203
+ - label: "ローカル優先"
204
+ description: "現在の内容を維持。メリット: カスタマイズを保全できる。デメリット: テンプレートの更新が適用されない"
205
+ - label: "マージ案(両方の変更を統合)"
206
+ description: "{具体的なマージ内容の説明}。メリット: {利点}。デメリット: {欠点}"
207
+ - label: "このファイルをスキップ"
208
+ description: "コンフリクトマーカーを残して後で手動解消。メリット: 判断を保留できる。デメリット: 後で対応が必要"
181
209
  ```
182
210
 
183
- 4. **方針に従って解消**
184
- - テンプレート優先: dry-run出力やCLIのコンフリクト情報からテンプレート側の内容を特定し、`Edit` ツールで上書き
185
- - ローカル優先: 現在の内容を維持(変更なし)
186
- - 手動マージ: テンプレート内容とローカル内容を両方表示し、ユーザーと対話しながら `Edit` で編集
211
+ **重要**: 必ず1ファイルごとにAskUserQuestionを実行する。複数ファイルをまとめて質問しない。
212
+
213
+ e. 選択に応じて `Edit` でコンフリクトマーカーを解消する
214
+ - 複数マーカーがある場合はファイル末尾側から処理し、行番号ずれを防止する
215
+ - テンプレート優先: `<<<<<<< LOCAL` 〜 `=======` を削除し、`=======` 〜 `>>>>>>> TEMPLATE` のテンプレート側を残す
216
+ - ローカル優先: `<<<<<<< LOCAL` のローカル側を残し、`=======` 〜 `>>>>>>> TEMPLATE` を削除する
217
+ - マージ案: 提案したマージ内容でマーカーブロック全体を置換する
218
+ f. 解消結果を `Read` で確認し、ユーザーに表示
219
+
220
+ **コンフリクトマーカー形式**: `<<<<<<< LOCAL (your changes)` / `=======` / `>>>>>>> TEMPLATE (from @einja/cli)`
221
+
222
+ #### 5-3. 全ファイル解消後の検証
187
223
 
188
- ### Step 6: 結果サマリー表示
224
+ - `Grep` `<<<<<<<` パターンを検索し、未解消マーカーが残っていないか検証
225
+ - スキップされたファイルがあれば一覧を再表示
226
+
227
+ ### Step 6: 孤児ファイル処理結果の確認(dev-cli のみ)
228
+
229
+ Step 4 で孤児削除を選択した場合、JSON出力の `summary.orphansDeleted` を確認し、削除されたファイル一覧を記録する(Step 9 の詳細表示で使用)。
230
+
231
+ Step 4 で孤児削除をスキップした場合、孤児ファイル一覧を再表示し「後で `npx --yes @einja/dev-cli sync --only <categories> --clean --yes` で削除できます」と案内する。
232
+
233
+ ### Step 7: direnv allow 実行確認
234
+
235
+ `.envrc` が正常に更新された場合に `direnv allow` を実行する。
236
+
237
+ 1. dev-cli の JSON出力の `files` 配列から `.envrc` のエントリを確認する
238
+ 2. 以下の条件をすべて満たす場合のみ実行対象とする:
239
+ - `.envrc` の `status` が `"success"` である(`"skipped"`, `"conflict"`, `"error"` は対象外)
240
+ - ファイル内にコンフリクトマーカー(`<<<<<<< LOCAL`)が含まれていない
241
+ 3. `command -v direnv` で direnv の存在を確認する(インストールされていなければスキップし、Step 8 で案内表示)
242
+ 4. AskUserQuestion で確認:
243
+
244
+ ```yaml
245
+ AskUserQuestion:
246
+ question: ".envrc が更新されました。direnv allow を実行しますか?"
247
+ header: "direnv allow"
248
+ options:
249
+ - label: "実行する(推奨)"
250
+ description: "更新済み .envrc を有効化します。環境変数が即座に反映されます"
251
+ - label: "スキップ"
252
+ description: "後で手動で direnv allow を実行します"
253
+ ```
254
+
255
+ 5. 「実行する」選択時に `direnv allow` を実行
256
+ 6. 結果を表示(成功/失敗。失敗しても同期処理全体は継続する)
257
+
258
+ ### Step 8: 結果サマリー表示
189
259
 
190
260
  テーブル形式で同期結果の概要を表示する。
191
261
 
192
262
  ```markdown
193
263
  ## 同期結果サマリー
194
264
 
195
- | CLI | 成功 | スキップ | コンフリクト |
196
- |-----|------|---------|------------|
197
- | dev-cli | 5 | 2 | 1 (解消済み) |
198
- | create-einja-app | 8 | 3 | 0 |
199
- | **合計** | **13** | **5** | **1** |
265
+ | CLI | 成功 | スキップ | コンフリクト | 孤児削除 |
266
+ |-----|------|---------|------------|---------|
267
+ | dev-cli | 5 | 2 | 1 (解消済み) | 2 |
268
+ | create-einja-app | 8 | 3 | 0 | - |
269
+ | **合計** | **13** | **5** | **1** | **2** |
200
270
  ```
201
271
 
202
- ### Step 7: 結果詳細表示
272
+ - `.envrc` が変更された場合は「✓ direnv allow 実行済み」を表示
273
+ - `.envrc` が変更されたが direnv 未インストールの場合は「⚠ direnv 未インストール。手動で `direnv allow` を実行してください」を表示
274
+
275
+ ### Step 9: 結果詳細表示
203
276
 
204
277
  各ファイルの詳細結果を以下の形式で表示する。
205
278
 
@@ -209,6 +282,7 @@ AskUserQuestion:
209
282
  ✓ .claude/skills/einja-task-commit/SKILL.md (更新)
210
283
  ⏭ .claude/agents/einja/task-executer.md (変更なし)
211
284
  ⚠ .claude/hooks/einja/pre-commit.sh (コンフリクト → 解消済み)
285
+ 🗑️ .claude/skills/old-skill/SKILL.md (孤児ファイル削除)
212
286
 
213
287
  ### create-einja-app sync 詳細
214
288
  ✨ .github/workflows/ci.yml (新規)
@@ -224,6 +298,7 @@ AskUserQuestion:
224
298
  | ✨ | 新規ファイル追加 |
225
299
  | ⏭ | 変更なし(スキップ) |
226
300
  | ⚠ | コンフリクト発生(解消済み) |
301
+ | 🗑️ | 孤児ファイル削除 |
227
302
 
228
303
  **パース方法:**
229
304
  - dev-cli: `--json` 出力の `files` 配列をパースして各ファイルのステータスを表示。JSON形式が不正な場合は標準出力をそのまま表示
@@ -100,7 +100,7 @@ $ARGUMENTS をLLMとして自然言語解析し、以下の情報を抽出する
100
100
  - 以下を表示して**停止**:
101
101
  > issue-exec は tmux を必須としており、この環境では利用できません。
102
102
  > WSL2 環境での実行を推奨します。
103
- > 代替: `/einja:task-exec` で個別タスクグループを逐次実行することは可能です。
103
+ > 代替: `einja-task-exec` Skill で個別タスクグループを逐次実行することは可能です。
104
104
 
105
105
  **インストール後の検証:**
106
106
  - `hash -r` で PATH をリフレッシュし、`command -v tmux && tmux -V` で成功確認
@@ -111,6 +111,8 @@ $ARGUMENTS をLLMとして自然言語解析し、以下の情報を抽出する
111
111
 
112
112
  #### 3. セッション復元
113
113
  - `--resume` フラグがある場合、`~/.einja/sessions/issue-{N}/session.json` からセッション状態を復元
114
+ - Manager worktree の存在確認: `git worktree list | grep issue-{N}/manager`
115
+ - 存在しない場合は再作成: `git worktree add ~/.einja/worktrees/issue-{N}/manager issue/{N}`
114
116
  - 未完了のPhaseのDirectorを再起動する
115
117
 
116
118
  ### Step 1: Issue パース
@@ -122,16 +124,18 @@ $ARGUMENTS をLLMとして自然言語解析し、以下の情報を抽出する
122
124
  3. `--max-phase` が指定されている場合、その番号以降のPhaseを除外
123
125
 
124
126
  ### Step 2: ブランチ & worktree 作成
125
- 1. Issue ブランチ作成: `issue/{issue番号}`(base ブランチから)
126
- 2. Phase のブランチ作成: `issue/{issue番号}-phase{N}`(issue ブランチから)
127
- 3. git worktree 作成:
127
+ 1. Issue ブランチ作成(メインリポジトリから): `issue/{issue番号}`(base ブランチから)
128
+ 2. Manager worktree 作成(メインリポジトリから):
128
129
  ```bash
129
130
  mkdir -p ~/.einja/worktrees/issue-{N}/
130
- git worktree add ~/.einja/worktrees/issue-{N}/phase{M} issue/{N}-phase{M}
131
+ git worktree add ~/.einja/worktrees/issue-{N}/manager issue/{N}
132
+ git push -u origin issue/{N}
131
133
  ```
132
- 4. worktree 作成時は必ずリモートにpush:
134
+ 3. **以降の操作は全て Manager worktree 内から実行**(cwd: `~/.einja/worktrees/issue-{N}/manager`)
135
+ 4. 各 Phase のブランチ作成(Manager worktree から): `issue/{issue番号}-phase{N}`(issue ブランチから)
136
+ 5. Phase worktree 作成(Manager worktree から):
133
137
  ```bash
134
- git push -u origin issue/{N}
138
+ git worktree add ~/.einja/worktrees/issue-{N}/phase{M} issue/{N}-phase{M}
135
139
  git push -u origin issue/{N}-phase{M}
136
140
  ```
137
141
 
@@ -164,7 +168,7 @@ session.json の初期状態:
164
168
 
165
169
  ### Step 4: tmux セッション作成
166
170
  ```bash
167
- tmux new-session -d -s einja-{issue番号} -n manager
171
+ tmux new-session -d -s einja-{issue番号} -n manager -c ~/.einja/worktrees/issue-{N}/manager
168
172
  ```
169
173
 
170
174
  ### Step 5: Director 起動(Phase単位)
@@ -199,15 +203,16 @@ tmux send-keys -t einja-{N}:director-phase{M} '
199
203
  1. 依存関係のないタスクグループは並列でWorkerを起動してください
200
204
  2. 各Worker には tmux window + claude 対話モードで起動:
201
205
  - worktree作成: git worktree add ~/.einja/worktrees/issue-{N}/task-{X.Y} task/{N}-{X.Y}
202
- - tmux: tmux new-window + claude 起動 + /einja:task-exec #{N} {X.Y} を実行
206
+ - tmux: tmux new-window + claude 起動 + einja-task-exec Skill で #{N} {X.Y} を実行
203
207
  3. Worker完了後:
204
208
  - ステータスファイルでPR番号を確認
205
209
  - マージモードに応じたPR処理
206
210
  - 他active Workerにsync通知
207
211
  - 完了したworktree削除
208
- 4. 質問対応: Workerからの質問にspec/design/issueベースで回答。回答不可ならManagerにエスカレーション
209
- 5. Phase完了時: ステータスファイルで Manager に報告
210
- 6. GitHub Issue のチェックボックス更新
212
+ 4. Phase完了時: `/einja-create-pr --auto --base issue/{N}` でPhase PRを作成
213
+ 5. 質問対応: Workerからの質問にspec/design/issueベースで回答。回答不可ならManagerにエスカレーション
214
+ 6. Phase完了時: ステータスファイルで Manager に報告
215
+ 7. GitHub Issue のチェックボックス更新
211
216
 
212
217
  ## 質問エスカレーション
213
218
  回答不可な質問は ~/.einja/sessions/issue-{N}/questions/ にJSONファイルを作成してManagerに通知してください。
@@ -237,7 +242,8 @@ Manager は以下を定期的に監視:
237
242
  - Director/Worker の tmux window が消失した場合のリカバリ処理
238
243
 
239
244
  ### Step 7: 全Phase完了 → 最終PR
240
- 1. 最終PR作成: `gh pr create --base {baseBranch} --head issue/{N}`
245
+ 1. 最終PR作成: `/einja-create-pr --auto --base {baseBranch}` を実行
246
+ - changeset自動生成 + ラベル付与 + PR作成が一括実行される
241
247
  2. PR URL を表示
242
248
  3. セッションクリーンアップ(worktree 削除、セッションファイル削除)
243
249
 
@@ -253,7 +259,7 @@ Manager は以下を定期的に監視:
253
259
 
254
260
  ```
255
261
  {baseBranch}
256
- └── issue/{N} Manager管理
262
+ └── issue/{N} Manager worktree
257
263
  ├── issue/{N}-phase1 Director1 worktree
258
264
  │ ├── task/{N}-1.1 Worker1.1 worktree
259
265
  │ ├── task/{N}-1.2 Worker1.2 worktree
@@ -265,6 +271,7 @@ Manager は以下を定期的に監視:
265
271
  ## worktree 物理パス
266
272
  ```
267
273
  ~/.einja/worktrees/issue-{N}/
274
+ ├── manager/ ← Manager cwd
268
275
  ├── phase{M}/ ← Director cwd
269
276
  ├── task-{X.Y}/ ← Worker cwd
270
277
  ```
@@ -339,7 +346,7 @@ Manager は以下を定期的に監視:
339
346
  | Worker異常終了(PR作成済み) | tmux window消失 + PRあり | スキップ(PRマージ待ち継続) |
340
347
  | Director異常終了 | tmux window消失 + ステータス未更新 | 各Workerのステータスを確認 → 未完了Workerのみ再実行 |
341
348
  | Manager異常終了 | ユーザー手動 | `--resume` でセッション復元 |
342
- | rebaseコンフリクト | git rebase失敗 | conflict-resolverで自力解消 |
349
+ | rebaseコンフリクト | git rebase失敗 | einja-conflict-resolver Skillで自力解消 |
343
350
  | CI失敗 | gh run status | 修正 → 再push → 再CI待機 |
344
351
 
345
352
  ## CI 待機タイムアウト
@@ -382,22 +389,25 @@ git worktree add ~/.einja/worktrees/issue-{N}/task-{X.Y} task/{N}-{X.Y}
382
389
  tmux new-window -t einja-{N} -n worker-{X.Y}
383
390
  tmux send-keys -t einja-{N}:worker-{X.Y} 'cd ~/.einja/worktrees/issue-{N}/task-{X.Y} && claude' Enter
384
391
 
385
- # 3. task-exec コマンドを実行
392
+ # 3. einja-task-exec Skill を実行
386
393
  # claude 起動後に以下を送信:
387
- tmux send-keys -t einja-{N}:worker-{X.Y} '/einja:task-exec #{N} {X.Y}' Enter
394
+ tmux send-keys -t einja-{N}:worker-{X.Y} '/einja-task-exec #{N} {X.Y}' Enter
388
395
  ```
389
396
 
390
397
  ## セッションクリーンアップ
391
398
 
392
399
  Issue完了時に以下を自動削除:
393
400
  - `~/.einja/sessions/issue-{N}/` (セッションファイル)
394
- - `~/.einja/worktrees/issue-{N}/` (worktree。事前に `git worktree remove` を実行)
401
+ - `~/.einja/worktrees/issue-{N}/` (worktree。事前に `git worktree remove` を各ディレクトリに対して実行)
402
+ - `git worktree remove ~/.einja/worktrees/issue-{N}/task-{X.Y}`(Worker)
403
+ - `git worktree remove ~/.einja/worktrees/issue-{N}/phase{M}`(Director)
404
+ - `git worktree remove ~/.einja/worktrees/issue-{N}/manager`(Manager - 最後に削除)
395
405
  - ローカルブランチのクリーンアップ(task/*, issue/*-phase*)
396
406
 
397
407
  ## 注意事項
398
408
 
399
409
  - 全プロセスは**対話モード**(`claude`、非 `-p`)で起動。質問エスカレーションのため
400
- - Worker 内部のタスク並列実行は既存の task-exec フロー(Task ツール + run_in_background)をそのまま活用
410
+ - Worker 内部のタスク並列実行は既存の einja-task-exec Skill フロー(Task ツール + run_in_background)をそのまま活用
401
411
  - ステータスファイルの `status.json` 更新には `flock` による排他制御を使用
402
412
  - 質問ファイルは1ファイル1質問のためロック不要(UUID でアトミック書き込み)
403
413
  - Worker は各タスク完了毎 + PR作成前にステータスファイルをチェック(sync_required検知時は次タスク開始前にrebase)
@@ -51,7 +51,7 @@ Glob: .claude/commands/**/*.md
51
51
 
52
52
  例:
53
53
  - `task-executer` → `.claude/agents/task/task-executer.md`
54
- - `spec-requirements-generator` → `.claude/agents/specs/spec-requirements-generator.md`
54
+ - `requirements-generator` → `.claude/agents/issue-specs/requirements-generator.md`
55
55
 
56
56
  **変換テンプレート**:
57
57
 
@@ -131,8 +131,8 @@ alwaysApply: false
131
131
 
132
132
  ```bash
133
133
  # 例(フォルダ形式)
134
- .claude/commands/task-exec.md → .cursor/rules/task-exec/RULE.md
135
- .claude/commands/spec-create.md → .cursor/rules/spec-create/RULE.md
134
+ .claude/skills/einja-task-exec/SKILL.md → .cursor/rules/task-exec/RULE.md
135
+ .claude/skills/einja-issue-spec-create/SKILL.md → .cursor/rules/spec-create/RULE.md
136
136
  .claude/commands/einja/start-dev.md → .cursor/rules/start-dev/RULE.md
137
137
  ```
138
138
 
@@ -178,8 +178,8 @@ Cursor で以下のルールが利用可能になりました:
178
178
 
179
179
  ### レガシーファイル
180
180
  以下の古い形式のファイルが検出されました(削除推奨):
181
- - `.cursor/commands/task-exec.md`
182
- - `.cursor/commands/spec-create.md`
181
+ - `.cursor/commands/einja-task-exec.md`
182
+ - `.cursor/commands/einja-issue-spec-create.md`
183
183
  ```
184
184
 
185
185
 
@@ -216,7 +216,7 @@ Cursor で以下のルールが利用可能になりました:
216
216
  ├── .cursor/rules/spec-create/RULE.md (3箇所のサブエージェント参照を変換)
217
217
  ├── .cursor/rules/task-exec/RULE.md (4箇所のサブエージェント参照を変換)
218
218
  ├── .cursor/rules/start-dev/RULE.md (変換不要)
219
- └── .cursor/rules/update-docs-by-task-specs/RULE.md (変換不要)
219
+ └── .cursor/rules/update-docs-by-issue-specs/RULE.md (変換不要)
220
220
  ```
221
221
 
222
222
  ## エラー処理