yodogawa 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,92 @@
1
+ #!/bin/bash
2
+
3
+ # setup-docs.sh
4
+ # プロジェクトのドキュメントディレクトリ構造を作成するスクリプト
5
+
6
+ set -e
7
+
8
+ DOCS_DIR="docs"
9
+
10
+ echo "📂 ドキュメント構造のセットアップを開始します..."
11
+
12
+ # 1. 現在の状態確認
13
+ if [ -d "$DOCS_DIR" ]; then
14
+ echo "⚠️ '$DOCS_DIR' ディレクトリは既に存在します。"
15
+ read -p "既存の構造を保持したまま、不足しているディレクトリを追加しますか? (y/N): " confirm
16
+ if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
17
+ echo "❌ 中断しました。"
18
+ exit 0
19
+ fi
20
+ fi
21
+
22
+ # 2. ディレクトリ構造の作成
23
+ echo "🔨 ディレクトリを作成中..."
24
+ mkdir -p "$DOCS_DIR/project/01-requirements"
25
+ mkdir -p "$DOCS_DIR/project/02-behavior"
26
+ mkdir -p "$DOCS_DIR/project/03-domain"
27
+ mkdir -p "$DOCS_DIR/project/04-design"
28
+ mkdir -p "$DOCS_DIR/tasks"
29
+
30
+ # 3. docs/README.md の作成
31
+ README_FILE="$DOCS_DIR/README.md"
32
+ if [ -f "$README_FILE" ]; then
33
+ echo "⚠️ '$README_FILE' は既に存在します。"
34
+ read -p "上書きしますか? (y/N): " confirm_readme
35
+ if [[ ! "$confirm_readme" =~ ^[Yy]$ ]]; then
36
+ echo "ℹ️ READMEの作成をスキップしました。"
37
+ else
38
+ CREATE_README=true
39
+ fi
40
+ else
41
+ CREATE_README=true
42
+ fi
43
+
44
+ if [ "$CREATE_README" = true ]; then
45
+ echo "📝 README.md を作成中..."
46
+ cat > "$README_FILE" <<EOF
47
+ # プロジェクトドキュメント
48
+
49
+ このディレクトリには、プロジェクト全体のドキュメントと個別タスクのドキュメントを管理します。
50
+
51
+ ## 構成
52
+
53
+ ### project/
54
+ プロジェクト全体のドキュメント。要件定義、設計、アーキテクチャなど、プロジェクトスコープ全体に関わる情報を記載します。
55
+
56
+ - **01-requirements/**: 要件定義(システム概要、機能要件、非機能要件、ユーザーストーリーなど)
57
+ - **02-behavior/**: 振る舞い定義(シナリオ、ユースケース、ユーザージャーニーなど)
58
+ - **03-domain/**: ドメインモデル(エンティティ、用語集など)
59
+ - **04-design/**: 設計(アーキテクチャ、データモデル、API仕様など)
60
+
61
+ ### tasks/
62
+ 個別タスクのドキュメント。Issue やチケット単位で作成します。
63
+
64
+ ## 更新方針
65
+
66
+ ### プロジェクト全体のドキュメント (project/)
67
+ - プロジェクトのスコープ全体に影響する情報を記載
68
+ - チーム全体で共有すべき要件・設計・アーキテクチャを管理
69
+ - 更新時は関係者にレビューを依頼
70
+
71
+ ### 個別タスクのドキュメント (tasks/)
72
+ - 特定の Issue やチケットに紐づく情報を記載
73
+ - タスク単位で作成・完了・アーカイブ
74
+ - 完了後は参照資料として保持、または削除
75
+
76
+ ## ドキュメント作成ガイドライン
77
+
78
+ - **具体的**: 抽象的な表現を避け、数値・期限・制約を明確に記載
79
+ - **測定可能**: 成功基準やパフォーマンス目標を定量化
80
+ - **最新**: 変更があれば速やかに更新し、古い情報を残さない
81
+ - **簡潔**: 必要最低限の情報に絞り、詳細はコードやリンク先に委ねる
82
+ EOF
83
+ fi
84
+
85
+ # 4. 完了報告
86
+ echo ""
87
+ echo "✅ ドキュメントディレクトリ構造のセットアップが完了しました!"
88
+ echo ""
89
+ find "$DOCS_DIR" -maxdepth 2 | sort
90
+ echo ""
91
+ echo "次のステップ:"
92
+ echo " - 必要に応じて 'git add $DOCS_DIR' を実行してください。"
@@ -5,8 +5,6 @@ auto_execution_mode: 1
5
5
 
6
6
  # SetupDocStructure (a-001)
7
7
 
8
-
9
-
10
8
  ## 目的
11
9
 
12
10
  - プロジェクトルートに標準化されたドキュメントディレクトリ構造を作成する。
@@ -19,110 +17,29 @@ auto_execution_mode: 1
19
17
 
20
18
  ## 手順
21
19
 
22
- ### 1. 現在の状態確認
20
+ ### 1. スクリプトの実行
23
21
 
24
- - プロジェクトルートで `docs/` ディレクトリの存在を確認する:
22
+ - ドキュメント構造セットアップのために、スクリプト `.windsurf/scripts/setup-docs.sh` を実行してください。
25
23
  ```bash
26
- ls -la docs/ 2>/dev/null || echo "docs/ ディレクトリは存在しません"
24
+ bash .windsurf/scripts/setup-docs.sh
27
25
  ```
28
- - 既に `docs/` が存在する場合は、ユーザーに確認する:
29
- - 「既に `docs/` ディレクトリが存在します。既存の構造を保持したまま、不足しているディレクトリを追加しますか?」
30
- - ユーザーが「はい」と回答した場合のみ続行する。
31
-
32
- ### 2. ディレクトリ構造の作成
33
-
34
- - 以下のディレクトリ構造を作成する:
35
26
 
36
- ```
37
- docs/
38
- ├── project/
39
- │ ├── 01-requirements/ # 要件定義
40
- │ ├── 02-behavior/ # 振る舞い定義
41
- │ ├── 03-domain/ # ドメインモデル
42
- │ └── 04-design/ # 設計
43
- └── tasks/ # 個別タスク
44
- ```
27
+ ### 2. 結果の確認
45
28
 
46
- - `mkdir -p` コマンドで一括作成:
47
- ```bash
48
- mkdir -p docs/project/01-requirements docs/project/02-behavior docs/project/03-domain docs/project/04-design docs/tasks
49
- ```
50
-
51
- - 作成結果を確認:
52
- ```bash
53
- find docs/ -type d | sort
29
+ - スクリプトの実行結果を確認し、エラーがないことを確認してください。
30
+ - 生成された構造:
54
31
  ```
55
-
56
- ### 3. docs/README.md の作成
57
-
58
- - `docs/README.md` が既に存在する場合は、ユーザーに確認する:
59
- - 「`docs/README.md` が既に存在します。上書きしますか、それとも既存のファイルを保持しますか?」
60
-
61
- - 以下の内容で `docs/README.md` を作成(または上書き):
62
-
63
- ```markdown
64
- # プロジェクトドキュメント
65
-
66
- このディレクトリには、プロジェクト全体のドキュメントと個別タスクのドキュメントを管理します。
67
-
68
- ## 構成
69
-
70
- ### project/
71
- プロジェクト全体のドキュメント。要件定義、設計、アーキテクチャなど、プロジェクトスコープ全体に関わる情報を記載します。
72
-
73
- - **01-requirements/**: 要件定義(システム概要、機能要件、非機能要件、ユーザーストーリーなど)
74
- - **02-behavior/**: 振る舞い定義(シナリオ、ユースケース、ユーザージャーニーなど)
75
- - **03-domain/**: ドメインモデル(エンティティ、用語集など)
76
- - **04-design/**: 設計(アーキテクチャ、データモデル、API仕様など)
77
-
78
- ### tasks/
79
- 個別タスクのドキュメント。Issue やチケット単位で作成します。
80
-
81
- ## 更新方針
82
-
83
- ### プロジェクト全体のドキュメント (project/)
84
- - プロジェクトのスコープ全体に影響する情報を記載
85
- - チーム全体で共有すべき要件・設計・アーキテクチャを管理
86
- - 更新時は関係者にレビューを依頼
87
-
88
- ### 個別タスクのドキュメント (tasks/)
89
- - 特定の Issue やチケットに紐づく情報を記載
90
- - タスク単位で作成・完了・アーカイブ
91
- - 完了後は参照資料として保持、または削除
92
-
93
- ## ドキュメント作成ガイドライン
94
-
95
- - **具体的**: 抽象的な表現を避け、数値・期限・制約を明確に記載
96
- - **測定可能**: 成功基準やパフォーマンス目標を定量化
97
- - **最新**: 変更があれば速やかに更新し、古い情報を残さない
98
- - **簡潔**: 必要最低限の情報に絞り、詳細はコードやリンク先に委ねる
99
- ```
100
-
101
- ### 4. 作成結果の確認
102
-
103
- - ディレクトリ構造とREADMEが正しく作成されたか確認:
104
- ```bash
105
- ls -R docs/
106
- ```
107
-
108
- - ユーザーに作成結果を報告:
109
- ```
110
- ✅ ドキュメントディレクトリ構造を作成しました:
111
-
112
32
  docs/
113
- ├── README.md (作成済み - ドキュメント構成の説明)
33
+ ├── README.md
114
34
  ├── project/
115
35
  │ ├── 01-requirements/
116
36
  │ ├── 02-behavior/
117
37
  │ ├── 03-domain/
118
38
  │ └── 04-design/
119
39
  └── tasks/
120
-
121
- 次のステップ:
122
- - ドキュメントの作成を開始してください。
123
40
  ```
124
41
 
125
- ### 5. Git への追加(オプション)
42
+ ### 3. Git への追加(オプション)
126
43
 
127
44
  - ユーザーに確認:「作成したディレクトリ構造を Git に追加しますか?」
128
45
  - 「はい」の場合、以下を実行:
@@ -131,6 +48,7 @@ docs/
131
48
  git status
132
49
  ```
133
50
  - Git status の結果を表示し、コミットメッセージの提案をする:
51
+
134
52
  ```
135
53
  推奨コミットメッセージ:
136
54
  ドキュメント構造の初期化
@@ -139,13 +57,11 @@ docs/
139
57
  - ドキュメント構成を説明する docs/README.md を追加
140
58
  ```
141
59
 
142
- ### 6. 完了条件の確認
60
+ ### 4. 完了条件の確認
143
61
 
144
62
  - 以下の完了条件を満たしているか、チェックリストで確認してください:
145
- - [ ] `docs/` ディレクトリが作成されている
146
- - [ ] `docs/project/` 配下に `01-requirements/`, `02-behavior/`, `03-domain/`, `04-design/` ディレクトリが存在する
147
- - [ ] `docs/tasks/` ディレクトリが存在する
148
- - [ ] `docs/README.md` が作成されている
63
+ - [ ] スクリプトが正常に終了した
64
+ - [ ] `docs/` ディレクトリ構造が正しく作成されている
149
65
 
150
66
  ## 完了条件
151
67
 
@@ -162,4 +78,4 @@ docs/
162
78
  - ファイルシステムの権限エラーが発生した場合:
163
79
  - 「ディレクトリの作成に失敗しました。書き込み権限を確認してください。」とユーザーに通知する。
164
80
  - Git リポジトリでない場合に Git 追加を試みた場合:
165
- - 「このディレクトリは Git リポジトリではありません。Git の初期化が必要な場合は `git init` を実行してください。」と案内する。
81
+ - 「このディレクトリは Git リポジトリではありません。Git の初期化が必要な場合は `git init` を実行してください。」と案内する。
@@ -23,6 +23,7 @@ auto_execution_mode: 1
23
23
  ### 1. ドキュメントディレクトリの確認
24
24
 
25
25
  - `docs/project/requirements/` ディレクトリの存在を確認:
26
+
26
27
  ```bash
27
28
  ls -la docs/project/requirements/ 2>/dev/null || echo "ディレクトリが存在しません"
28
29
  ```
@@ -30,9 +31,35 @@ auto_execution_mode: 1
30
31
  - ディレクトリが存在しない場合:
31
32
  - ユーザーに通知:「`docs/project/requirements/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してディレクトリ構造を作成してください。」
32
33
 
33
- ### 2. システム概要の作成
34
+ ### 2. コードベースの自動分析と提案
35
+
36
+ 1. **コードベースの規模確認**:
37
+
38
+ - プロジェクトのルートにあるファイルやディレクトリを確認する。
39
+ ```bash
40
+ ls -F
41
+ ```
42
+ - **スキップ判断**:
43
+ - ファイルがほとんど存在しない(例: `.git` ディレクトリのみ、あるいは `README.md` だけなど)、または有意なソースコードが見当たらない場合は、このステップをスキップする。
44
+ - スキップする場合、ユーザーに「コードベースが空、または十分な情報がないため、自動分析をスキップします。」と通知し、次のステップへ進む。
45
+
46
+ 2. **詳細調査と分析(コードが存在する場合)**:
47
+ - `README.md`, `package.json`, および主要なソースコードを読み込む。
48
+ ```bash
49
+ cat package.json 2>/dev/null
50
+ cat README.md 2>/dev/null
51
+ find src app lib -maxdepth 2 2>/dev/null
52
+ ```
53
+ - 読み込んだ情報を基に、以下の内容を分析・推測し、ユーザーに提示する。
54
+ - **システム概要**: プロジェクトの目的、主要な技術スタック。
55
+ - **実装済み機能**: ファイル構造やコードから推測される機能。
56
+ - **ユーザーストーリー**: 想定されるユーザー像と利用シーン。
57
+ - この分析結果は、後続のステップ(システム概要の作成、機能一覧の作成など)の基礎情報として活用する。
58
+
59
+ ### 3. システム概要の作成
34
60
 
35
61
  1. **テンプレートの準備**:
62
+
36
63
  ```bash
37
64
  cp ".windsurf/templates/project/01-requirements/01-system-overview.md" "docs/project/requirements/01-system-overview.md"
38
65
  ```
@@ -41,24 +68,28 @@ auto_execution_mode: 1
41
68
  以下の質問を行い、その回答で `docs/project/requirements/01-system-overview.md` を更新する。
42
69
 
43
70
  #### 背景
71
+
44
72
  - 「このシステムで解決しようとしている**具体的な問題や課題**は何ですか?」
45
73
  - 「その問題はなぜ重要ですか?放置した場合のリスクは?」
46
74
  - 「問題の影響を受けるステークホルダー(ユーザー、組織、チームなど)は誰ですか?」
47
75
  - 「具体的な数値やデータ(例:作業時間、コスト、離脱率など)があれば教えてください。」
48
76
 
49
77
  #### 目的
78
+
50
79
  - 「このシステムが提供する**具体的な価値や解決策**は何ですか?」
51
- - 「期待される成果や変化を、測定可能な形で表現できますか?(例:作業時間50%削減)」
80
+ - 「期待される成果や変化を、測定可能な形で表現できますか?(例:作業時間 50%削減)」
52
81
  - 「どのように問題を解決するか、具体的なメカニズムや仕組みを教えてください。」
53
82
 
54
- ### 3. 実装済み機能一覧の作成
83
+ ### 4. 実装済み機能一覧の作成
55
84
 
56
85
  1. **テンプレートの準備**:
86
+
57
87
  ```bash
58
88
  cp ".windsurf/templates/project/01-requirements/02-features-implemented.md" "docs/project/requirements/02-features-implemented.md"
59
89
  ```
60
90
 
61
91
  2. **コードベースの調査と提案**:
92
+
62
93
  - プロジェクト内のソースコードを簡易検索し、実装済みの兆候を探す。
63
94
  ```bash
64
95
  # 主要なソースディレクトリの構造を確認(例)
@@ -78,78 +109,91 @@ auto_execution_mode: 1
78
109
  - **Category 2**(中分類:認証、プロフィールなど)
79
110
  - **機能名**(ユーザー視点の名称)
80
111
  - **説明**(何ができるか)
81
- - **機能ID**(FN-XXX形式、連番)
112
+ - **機能 ID**(FN-XXX 形式、連番)
82
113
 
83
- ### 4. 予定機能一覧の作成
114
+ ### 5. 予定機能一覧の作成
84
115
 
85
116
  1. **テンプレートの準備**:
117
+
86
118
  ```bash
87
119
  cp ".windsurf/templates/project/01-requirements/03-features-planned.md" "docs/project/requirements/03-features-planned.md"
88
120
  ```
89
121
 
90
122
  2. **要件ギャップ分析と提案**:
123
+
91
124
  - 「システム概要」で確認した目的・スコープと、「実装済み機能」の差分を分析する。
92
125
  - 未実装と思われる主要機能をリストアップし、ユーザーに提案する。
93
126
  - 「システム概要で『〇〇機能』への言及がありましたが、まだ実装されていないようです。これを予定機能に追加しますか?」
94
- - 「現在の実装には『××』が含まれていますが、これに関連する『△△機能』は将来的に必要になりますか?」
127
+ - 「現在の実装には『××』が含まれていますが、これに関連する『△△ 機能』は将来的に必要になりますか?」
95
128
 
96
129
  3. **ヒアリングと記入**:
97
130
  提案内容へのフィードバックを含め、以下の質問を行う。回答をテーブル形式で `docs/project/requirements/03-features-planned.md` に記入する。
98
131
 
99
132
  - 「今後実装予定の機能をリストアップしてください(提案した機能含む)。各機能について以下を明確にします:」
133
+
100
134
  - **Category 1**(大分類)
101
135
  - **Category 2**(中分類)
102
136
  - **機能名**(アイデア段階でも可)
103
137
  - **説明**(目的や価値を中心に)
104
-
105
- ※テンプレートの方針に従い、**機能ID**や**優先度**はこの段階では確定させず、柔軟性を重視して記載しない。
106
138
 
107
- ### 5. 非機能要件一覧の作成
139
+ ※テンプレートの方針に従い、**機能 ID**や**優先度**はこの段階では確定させず、柔軟性を重視して記載しない。
140
+
141
+ ### 6. 非機能要件一覧の作成
108
142
 
109
143
  1. **テンプレートの準備**:
144
+
110
145
  ```bash
111
146
  cp ".windsurf/templates/project/01-requirements/04-non-functional-requirements.md" "docs/project/requirements/04-non-functional-requirements.md"
112
147
  ```
113
148
 
114
149
  2. **必要性の確認と標準提案**:
150
+
115
151
  - ユーザーに定義の必要性を確認する:
152
+
116
153
  - 「現段階で非機能要件(パフォーマンス、セキュリティなど)を詳細に定義する必要がありますか?『標準的な設定』で仮置きして後で調整することも可能です。」
117
-
154
+
118
155
  - 必要または仮置きの場合、一般的なベストプラクティスを提案する:
119
- - 「Webアプリケーションの標準的な目標値として、以下を提案します。これで問題ないか確認してください:」
120
- - **パフォーマンス**: ページ読み込み3秒以内、API応答500ms以内
121
- - **セキュリティ**: HTTPS必須、パスワードはハッシュ化、基本認証/OAuth
122
- - **可用性**: 日次バックアップ、稼働率99.5%(平日日中)
156
+ - 「Web アプリケーションの標準的な目標値として、以下を提案します。これで問題ないか確認してください:」
157
+ - **パフォーマンス**: ページ読み込み 3 秒以内、API 応答 500ms 以内
158
+ - **セキュリティ**: HTTPS 必須、パスワードはハッシュ化、基本認証/OAuth
159
+ - **可用性**: 日次バックアップ、稼働率 99.5%(平日日中)
123
160
 
124
161
  3. **ヒアリングと記入**:
125
162
  提案内容への合意、または独自の要件がある場合、以下の観点で**定量的な目標**を確認し、回答で `docs/project/requirements/04-non-functional-requirements.md` の各テーブルを更新する。
126
163
 
127
164
  #### パフォーマンス
165
+
128
166
  - 「ページ読み込み時間の目標は?」
129
- - 「APIレスポンス時間の目標は?」
167
+ - 「API レスポンス時間の目標は?」
130
168
  - 「想定される同時接続ユーザー数、データ量は?」
131
169
 
132
170
  #### セキュリティ
171
+
133
172
  - 「認証方式、機密データの扱い、コンプライアンス要件は?」
134
173
 
135
174
  #### 可用性・信頼性
175
+
136
176
  - 「稼働率目標、許容ダウンタイム、バックアップ要件は?」
137
177
 
138
178
  #### スケーラビリティ
179
+
139
180
  - 「ユーザー数の成長予測、ピーク時のトラフィック想定は?」
140
181
 
141
182
  #### ユーザビリティ・保守性
183
+
142
184
  - 「アクセシビリティ、対応言語、デバイス、ブラウザは?」
143
185
  - 「ログ・監視要件、デプロイ頻度は?」
144
186
 
145
- ### 6. ユーザーストーリーの作成
187
+ ### 7. ユーザーストーリーの作成
146
188
 
147
189
  1. **テンプレートの準備**:
190
+
148
191
  ```bash
149
192
  cp ".windsurf/templates/project/01-requirements/05-user-stories.md" "docs/project/requirements/05-user-stories.md"
150
193
  ```
151
194
 
152
195
  2. **分析と提案**:
196
+
153
197
  - ここまで作成した「システム概要」「機能一覧(実装済み/予定)」を分析し、主要なユーザージャーニーを抽出する。
154
198
  - ユーザーに代表的なストーリーを提案する:
155
199
  - 「『〇〇機能』に基づき、以下のストーリーが考えられますが、いかがでしょうか?」
@@ -161,33 +205,34 @@ auto_execution_mode: 1
161
205
  - 「他に主要なユーザージャーニーがあれば教えてください([役割]として、[目的]がしたい、なぜなら[理由])。」
162
206
  - 各ストーリーの優先度、受け入れ基準を確認する。
163
207
 
164
- ### 7. 全体レビュー
208
+ ### 8. 全体レビュー
165
209
 
166
210
  - 作成した全てのドキュメントをユーザーに提示し、内容の正確性を確認する。
167
211
  - 「記載内容に誤りや漏れはありませんか?」
168
212
  - 「抽象的すぎる記述や、後で解釈が分かれそうな表現はありますか?」
169
213
  - 「テンプレートのコメントや不要な例示は適切に処理(残す/削除)されていますか?」
170
214
 
171
- ### 8. 完了条件と構造の確認
215
+ ### 9. 完了条件と構造の確認
172
216
 
173
217
  - 以下の完了条件を満たしていて、且つドキュメントの構造が適切であることを確認します。
174
-
218
+
175
219
  1. **ファイルの存在と構造確認**:
176
220
  各ファイルが存在し、テンプレートの主要な構造(見出しやテーブル)が維持されているか検証する。
221
+
177
222
  ```bash
178
223
  # 01-system-overview.md: 主要セクションの確認
179
224
  grep "## 背景" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 背景"
180
225
  grep "## 目的" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 目的"
181
-
226
+
182
227
  # 02-features-implemented.md: テーブルヘッダーの確認
183
228
  grep "| 機能ID | Category 1 |" docs/project/requirements/02-features-implemented.md && echo "OK" || echo "MISSING: Table Header"
184
-
229
+
185
230
  # 03-features-planned.md: テーブルヘッダーの確認
186
231
  grep "| Category 1 | Category 2 |" docs/project/requirements/03-features-planned.md && echo "OK" || echo "MISSING: Table Header"
187
-
232
+
188
233
  # 04-non-functional-requirements.md: テーブルヘッダーの確認
189
234
  grep "| カテゴリ | 要件 |" docs/project/requirements/04-non-functional-requirements.md && echo "OK" || echo "MISSING: Table Header"
190
-
235
+
191
236
  # 05-user-stories.md: テーブルヘッダーの確認
192
237
  grep "| ストーリーID | ストーリー |" docs/project/requirements/05-user-stories.md && echo "OK" || echo "MISSING: Table Header"
193
238
  ```
@@ -197,7 +242,7 @@ auto_execution_mode: 1
197
242
  - [ ] 各ファイルがテンプレートの基本構造を維持していて、主要なセクションやテーブルが適切に記載されている
198
243
  - [ ] プレースホルダーが適切な内容に置き換わっていいる
199
244
 
200
- ### 9. Git への追加(オプション)
245
+ ### 10. Git への追加(オプション)
201
246
 
202
247
  - ユーザーに確認:「作成した要件定義ドキュメントを Git に追加しますか?」
203
248
  - 「はい」の場合、以下を実行:
@@ -206,6 +251,7 @@ auto_execution_mode: 1
206
251
  git status
207
252
  ```
208
253
  - Git status の結果を表示し、コミットメッセージの提案をする:
254
+
209
255
  ```
210
256
  推奨コミットメッセージ:
211
257
  docs: 要件定義ドキュメントの作成
@@ -226,4 +272,4 @@ auto_execution_mode: 1
226
272
  - 競合する要件や矛盾が発見された場合:
227
273
  - 「以下の要件が競合しています:[詳細]。優先順位や調整方針を確認させてください。」と報告する。
228
274
  - 想定工数が非現実的に大きい場合:
229
- - 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案する。
275
+ - 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案する。
package/README.md CHANGED
@@ -2,71 +2,69 @@
2
2
 
3
3
  ## リポジトリ概要
4
4
 
5
- Windsurfで活用するスラッシュコマンドとワークフローの保管庫。調査・要件定義から実装、テスト、デプロイ、Git運用までの開発プロセスを対象としたMarkdownドキュメントを蓄積し、他プロジェクトでも即座に呼び出せるナレッジベースを目指す。
5
+ Windsurf で活用するスラッシュコマンドとワークフローの保管庫。調査・要件定義から実装、テスト、デプロイ、Git 運用までの開発プロセスを対象とした Markdown ドキュメントを蓄積し、他プロジェクトでも即座に呼び出せるナレッジベースを目指す。
6
6
 
7
7
  ## 目的
8
8
 
9
9
  - 反復的な開発タスクを標準化し、スラッシュコマンドとして再利用可能にする。
10
- - 調査、仕様策定、実装支援、デバッグ、レビュー、リリース、Git管理など各フェーズのベストプラクティスを明文化する。
11
- - 実行可能コードは置かず、Windsurfでのコマンド入力やドキュメント参照に最適化したMarkdown中心の構成を維持する。
10
+ - 調査、仕様策定、実装支援、デバッグ、レビュー、リリース、Git 管理など各フェーズのベストプラクティスを明文化する。
11
+ - 実行可能コードは置かず、Windsurf でのコマンド入力やドキュメント参照に最適化した Markdown 中心の構成を維持する。
12
12
 
13
13
  ## ディレクトリ構成
14
14
 
15
- - `.windsurf/workflows/` — スラッシュコマンド定義(各種ワークフローMarkdown)
15
+ - `.windsurf/workflows/` — スラッシュコマンド定義(各種ワークフロー Markdown)
16
16
  - `a-NNN-*.md` — プロジェクト設計ワークフロー(要件定義、設計、アーキテクチャ)
17
17
  - `b-NNN-*.md` — タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
18
18
  - `c-NNN-*.md` — 実装実行ワークフロー(ステップバイステップ実装)
19
19
  - `x-Object-Action.md` — 補助的なワークフロー(例: `x-Code-Refactor`, `x-CI-Setup`, `x-Repository-PushToGithub`)
20
20
  - `z-*.md` — メタワークフロー(ワークフロー作成支援など)
21
- - `.windsurf/templates/` — テンプレート定義(各種テンプレートMarkdown)
21
+ - `.windsurf/templates/` — テンプレート定義(各種テンプレート Markdown)
22
22
  - `project/` — プロジェクトレベルのテンプレート
23
23
  - `tasks/task-template/` — タスクレベルのテンプレート
24
24
  - `a-definition.md` — タスク定義テンプレート
25
25
  - `b-research.md` — リサーチテンプレート
26
26
  - `c-implementation.md` — 実装タスクリストテンプレート
27
27
  - `README.md` — リポジトリの使い方と方針
28
- - `CLAUDE.md` — Claude Code向けプロジェクト説明
28
+ - `CLAUDE.md` — Claude Code 向けプロジェクト説明
29
29
  - `slash-commands-best-practices.md` - スラッシュコマンドのベストプラクティス
30
30
 
31
- ## 使い方
31
+ ## インストール
32
32
 
33
- ### 基本的な使い方
34
-
35
- 1. Windsurfで必要なワークフローを参照したいタイミングで該当Markdownを開く。
33
+ 1. Windsurf で必要なワークフローを参照したいタイミングで該当 Markdown を開く。
36
34
  2. コマンド化したい手順はスラッシュコマンドとしてコピーし、自身のプロジェクトで呼び出して利用する。
37
- 3. 新規ワークフローを追加する際は`.windsurf/workflows/`配下にMarkdownを作成し、ファイル名は用途が想起できるスラッグ形式にする(例: `jira-ticket.md`)。
35
+ 3. 新規ワークフローを追加する際は`.windsurf/workflows/`配下に Markdown を作成し、ファイル名は用途が想起できるスラッグ形式にする(例: `jira-ticket.md`)。
38
36
 
39
37
  ### ワークフロー体系
40
38
 
41
- 本リポジトリは開発ライフサイクル全体をカバーする4つのワークフロー系列を提供します:
39
+ 本リポジトリは開発ライフサイクル全体をカバーする 4 つのワークフロー系列を提供します:
42
40
 
43
- - **A系列**: プロジェクト設計ワークフロー(要件定義、ドメインモデル、設計)
44
- - **B系列**: タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
45
- - **C系列**: 実装実行ワークフロー(ステップバイステップ実装、ドキュメント更新)
46
- - **X系列**: 補助的なワークフロー(リファクタリング、CI/CD、コード生成など)
41
+ - **A 系列**: プロジェクト設計ワークフロー(要件定義、ドメインモデル、設計)
42
+ - **B 系列**: タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
43
+ - **C 系列**: 実装実行ワークフロー(ステップバイステップ実装、ドキュメント更新)
44
+ - **X 系列**: 補助的なワークフロー(リファクタリング、CI/CD、コード生成など)
47
45
 
48
- ## プロジェクト設計ワークフロー(A系列)
46
+ ## プロジェクト設計ワークフロー(A 系列)
49
47
 
50
48
  プロジェクト開始時に一度実行し、要件定義からドメインモデル、設計までを体系的に作成します。
51
49
 
52
- ### 実行順序(A系列)
50
+ ### 実行順序(A 系列)
53
51
 
54
52
  **要件・ドメインフェーズ**(a-001 〜 a-006):
55
53
 
56
54
  1. `/a-001-SetupDocStructure` — ドキュメント構造のセットアップ
57
55
  2. `/a-002-InitializeProject` — プロジェクト初期化(課題、解決策、スコープ)
58
- 3. `/a-003-CreateScenarios` — BDD形式でのシナリオ定義(Gherkin)
56
+ 3. `/a-003-CreateScenarios` — BDD 形式でのシナリオ定義(Gherkin)
59
57
  4. `/a-004-DefineDomainModel` — ドメインモデル定義(Event Storming)
60
- 5. `/a-005-CreateDomainDiagram` — DDD設計(Bounded Context、Aggregate)
58
+ 5. `/a-005-CreateDomainDiagram` — DDD 設計(Bounded Context、Aggregate)
61
59
  6. **`/a-006-ReviewRequirementsDomain`** — 要件とドメインモデルのレビュー ⭐
62
60
 
63
61
  **設計フェーズ**(a-007 〜 a-014):
64
62
 
65
63
  1. `/a-007-DefineTechStack` — 技術スタック選定
66
64
  2. `/a-008-DefineRepositoryStructure` — リポジトリ構造定義
67
- 3. `/a-009-DefineScreenDesign` — 画面設計(Empty State重視)
65
+ 3. `/a-009-DefineScreenDesign` — 画面設計(Empty State 重視)
68
66
  4. `/a-010-DefineDataModel` — データモデル設計(ERD)
69
- 5. `/a-011-DefineAPISpec` — API仕様定義
67
+ 5. `/a-011-DefineAPISpec` — API 仕様定義
70
68
  6. `/a-012-DefineArchitecture` — アーキテクチャ設計(ADR)
71
69
  7. `/a-013-DefineInfrastructure` — インフラ設計(RPO/RTO)
72
70
  8. **`/a-014-ReviewDesign`** — 設計ドキュメントの一貫性レビュー ⭐
@@ -78,30 +76,34 @@ Windsurfで活用するスラッシュコマンドとワークフローの保管
78
76
 
79
77
  これらのレビューワークフローにより、実装前にドキュメント間の不整合を検出し、手戻りを防止します。
80
78
 
81
- ## タスク管理ワークフロー(B系列)
79
+ ## タスク管理ワークフロー(B 系列)
82
80
 
83
81
  タスクの計画から実装まで、以下のワークフローを順次実行します:
84
82
 
85
83
  1. **タスクディレクトリ作成**: `/b-000-CreateTaskDirectory`
86
- - タスクID自動採番(task000001, task000002, ...)
84
+
85
+ - タスク ID 自動採番(task000001, task000002, ...)
87
86
  - ディレクトリ作成: `docs/tasks/task000001-{スラッグ}/`
88
87
  - テンプレートファイル(a-definition.md, b-research.md, c-implementation.md)を自動コピー
89
88
 
90
89
  2. **タスク定義**: `/b-001-CreateTaskDefinition`
90
+
91
91
  - 目的の明確化(解決する問題、提供する価値)
92
92
  - ユーザーストーリーの定義
93
93
  - 変更内容の詳細化(画面、データモデル、API、ビジネスロジック)
94
94
  - 受け入れ基準の定義(正常系、異常系、テスト、セキュリティ)
95
95
 
96
96
  3. **リサーチ**: `/b-002-CreateTaskResearch`
97
+
97
98
  - ベストプラクティスの調査
98
99
  - 既存コードの調査と再利用可能性の確認
99
100
  - 技術選定(ライブラリ、フレームワーク)
100
101
  - 技術的リスクの洗い出しと軽減策
101
102
 
102
103
  4. **実装計画**: `/b-003-CreateTaskImplementation`
103
- - フェーズ分割(1-3日粒度)
104
- - ステップ定義(1-3時間粒度)
104
+
105
+ - フェーズ分割(1-3 日粒度)
106
+ - ステップ定義(1-3 時間粒度)
105
107
  - 成果物の明確化(具体的なファイル名)
106
108
  - フェーズごとの受け入れ基準
107
109
 
@@ -114,25 +116,26 @@ Windsurfで活用するスラッシュコマンドとワークフローの保管
114
116
 
115
117
  ### タスクレビューの重要性
116
118
 
117
- b-004は実装開始前の「最後の砦」として、以下を保証します:
119
+ b-004 は実装開始前の「最後の砦」として、以下を保証します:
118
120
 
119
121
  - すべての変更内容に実装ステップが存在する(漏れ防止)
120
122
  - すべてのユーザーストーリーが実装でカバーされている(要件充足)
121
123
  - 技術的リスクの軽減策が計画されている(リスク管理)
122
124
  - 既存コンポーネントが再利用されている(車輪の再発明防止)
123
125
 
124
- ## 実装実行ワークフロー(C系列)
126
+ ## 実装実行ワークフロー(C 系列)
125
127
 
126
128
  タスクレビュー(b-004)完了後、実装を実行し、完了後にドキュメントを更新します。
127
129
 
128
- ### 実行順序(C系列)
130
+ ### 実行順序(C 系列)
129
131
 
130
132
  1. **実装実行**: `/c-001-ImplementTask`
131
- - 各ステップを順次実行(speckit.implementスタイル)
133
+
134
+ - 各ステップを順次実行(speckit.implement スタイル)
132
135
  - 依存関係を尊重、並列実行を最適化(`[P]`マーク)
133
136
  - ステップごとにテスト実行とチェックボックス更新
134
137
  - フェーズごとに受け入れ基準を確認
135
- - 最終テスト、コミット、PR作成
138
+ - 最終テスト、コミット、PR 作成
136
139
 
137
140
  2. **ドキュメント更新**: `/c-002-UpdateDocumentation`
138
141
  - 実装完了後にドキュメントを実装内容に合わせて更新
@@ -144,17 +147,17 @@ b-004は実装開始前の「最後の砦」として、以下を保証します
144
147
 
145
148
  ### 実装
146
149
 
147
- c-001は以下の原則に従います:
150
+ c-001 は以下の原則に従います:
148
151
 
149
152
  - **仕様駆動開発**: タスク定義とリサーチが実行可能な仕様として機能
150
- - **段階的な実装**: ステップごとに進める(1ステップ = 1-3時間)
153
+ - **段階的な実装**: ステップごとに進める(1 ステップ = 1-3 時間)
151
154
  - **依存関係の尊重**: 順序を守り、前ステップ完了を確認
152
155
  - **並列実行の最適化**: `[P]`マークで独立ステップを並列実行
153
156
  - **継続的な検証**: 各ステップでテスト実行、受け入れ基準を確認
154
157
 
155
- ## 補助的なワークフロー(X系列)
158
+ ## 補助的なワークフロー(X 系列)
156
159
 
157
- 実装中に必要となる補助的なタスクを実行するワークフローです。Object-Action命名規則に従います。
160
+ 実装中に必要となる補助的なタスクを実行するワークフローです。Object-Action 命名規則に従います。
158
161
 
159
162
  ### 主要なワークフロー
160
163
 
@@ -172,30 +175,30 @@ c-001は以下の原則に従います:
172
175
  **開発環境・CI/CD**:
173
176
 
174
177
  - `/x-DevEnvironment-Setup` — 開発環境セットアップ
175
- - `/x-CI-Setup` — CI/CDセットアップ
176
- - `/x-CI-FixFailure` — CI失敗修正
178
+ - `/x-CI-Setup` — CI/CD セットアップ
179
+ - `/x-CI-FixFailure` — CI 失敗修正
177
180
  - `/x-Logging-Add` — ログ実装
178
181
 
179
182
  **コード生成・最適化**:
180
183
 
181
- - `/x-Component-Create` — UIコンポーネント生成
184
+ - `/x-Component-Create` — UI コンポーネント生成
182
185
  - `/x-Migration-Create` — マイグレーション作成
183
186
  - `/x-Database-Seed` — データベースシード
184
187
  - `/x-Bundle-Optimize` — バンドル最適化
185
188
 
186
189
  **Git・リポジトリ管理**:
187
190
 
188
- - `/x-Repository-Push` — GitHub/GitLabへのプッシュ(汎用)
189
- - `/x-Repository-PushToGithub` — GitHubへのプッシュ
191
+ - `/x-Repository-Push` — GitHub/GitLab へのプッシュ(汎用)
192
+ - `/x-Repository-PushToGithub` — GitHub へのプッシュ
190
193
 
191
194
  **その他**:
192
195
 
193
196
  - `/x-Dependencies-Update` — 依存関係更新
194
197
  - `/x-Accessibility-Check` — アクセシビリティ監査
195
198
 
196
- ### X系列の特徴
199
+ ### X 系列の特徴
197
200
 
198
- - **フレームワーク非依存**: React/Vue/Svelte、Prisma/TypeORM、Webpack/Viteなど複数の技術に対応
201
+ - **フレームワーク非依存**: React/Vue/Svelte、Prisma/TypeORM、Webpack/Vite など複数の技術に対応
199
202
  - **再利用可能**: どのプロジェクトでも即座に利用可能
200
203
  - **チェックリスト形式**: 実行漏れを防止
201
204
  - **ベストプラクティス統合**: 公式ドキュメントや業界標準を反映
@@ -244,13 +247,13 @@ c-001は以下の原則に従います:
244
247
 
245
248
  ### レビューワークフローの位置づけ
246
249
 
247
- 3つのレビューワークフロー(⭐マーク)が品質を保証します:
250
+ 3 つのレビューワークフロー(⭐ マーク)が品質を保証します:
248
251
 
249
- | レビュー | タイミング | 対象 | 効果 |
250
- |---------|----------|------|------|
251
- | **a-006** | 要件・ドメイン完成時 | 要件 ↔ シナリオ ↔ ドメインモデル | ドメイン設計の妥当性検証 |
252
- | **a-014** | 設計完成時 | データモデル ↔ API ↔ 画面 ↔ アーキテクチャ | 設計の一貫性検証 |
253
- | **b-004** | 各タスク実装前 | タスク定義 ↔ リサーチ ↔ 実装計画 | 実装漏れ防止 |
252
+ | レビュー | タイミング | 対象 | 効果 |
253
+ | --------- | -------------------- | ------------------------------------------ | ------------------------ |
254
+ | **a-006** | 要件・ドメイン完成時 | 要件 ↔ シナリオ ↔ ドメインモデル | ドメイン設計の妥当性検証 |
255
+ | **a-014** | 設計完成時 | データモデル ↔ API ↔ 画面 ↔ アーキテクチャ | 設計の一貫性検証 |
256
+ | **b-004** | 各タスク実装前 | タスク定義 ↔ リサーチ ↔ 実装計画 | 実装漏れ防止 |
254
257
 
255
258
  ### タスクディレクトリ構造の例
256
259
 
@@ -271,10 +274,10 @@ docs/
271
274
  └── c-implementation.md
272
275
  ```
273
276
 
274
- 各タスクディレクトリには3つのドキュメントが含まれ、タスクの計画から実装まで一貫して管理できます。
277
+ 各タスクディレクトリには 3 つのドキュメントが含まれ、タスクの計画から実装まで一貫して管理できます。
275
278
 
276
279
  ## 更新ポリシー
277
280
 
278
281
  - 各ドキュメントは最新の開発手法に合わせて継続的に改善する。
279
- - 重複や冗長な情報は統合し、DRY原則を徹底する。
280
- - 追加の開発フェーズや管理領域が生じた場合は、該当するスラッシュコマンドを新設してREADMEにも追記する。
282
+ - 重複や冗長な情報は統合し、DRY 原則を徹底する。
283
+ - 追加の開発フェーズや管理領域が生じた場合は、該当するスラッシュコマンドを新設して README にも追記する。
package/bin/cli.js CHANGED
@@ -1,35 +1,45 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const fs = require("fs-extra");
4
- const path = require("path");
5
- const prompts = require("prompts");
6
- const { bold, green, cyan, red } = require("kleur");
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+ const prompts = require('prompts');
6
+ const { bold, green, cyan, red } = require('kleur');
7
7
 
8
8
  async function main() {
9
- console.log(
10
- bold().cyan("\n🚀 Welcome to Yodogawa Slash Commands Installer!\n")
11
- );
9
+ console.log(bold().cyan('\n🚀 Welcome to Yodogawa Slash Commands Installer!\n'));
12
10
 
13
11
  const response = await prompts({
14
- type: "select",
15
- name: "type",
16
- message: "Which configuration would you like to install?",
12
+ type: 'select',
13
+ name: 'type',
14
+ message: 'Which configuration would you like to install?',
17
15
  choices: [
18
- { title: "Windsurf (.windsurf)", value: "windsurf" },
19
- { title: "Antigravity (.agent)", value: "antigravity" },
20
- ],
16
+ { title: 'Windsurf (.windsurf)', value: 'windsurf' },
17
+ { title: 'Antigravity (.agent)', value: 'antigravity' },
18
+ { title: 'Cursor (.cursor)', value: 'cursor' },
19
+ { title: 'Claude Code (.claude)', value: 'claude' }
20
+ ]
21
21
  });
22
22
 
23
23
  if (!response.type) {
24
- console.log(red("✖ Operation cancelled."));
24
+ console.log(red('✖ Operation cancelled.'));
25
25
  process.exit(0);
26
26
  }
27
27
 
28
28
  // Determine source directory (where the package is installed)
29
- const sourceDir = path.join(__dirname, "..", ".windsurf");
30
-
29
+ const sourceDir = path.join(__dirname, '..', '.windsurf');
30
+
31
31
  // Determine target directory (current working directory of the user)
32
- const targetDirName = response.type === "windsurf" ? ".windsurf" : ".agent";
32
+ let targetDirName;
33
+ if (response.type === 'windsurf') {
34
+ targetDirName = '.windsurf';
35
+ } else if (response.type === 'antigravity') {
36
+ targetDirName = '.agent';
37
+ } else if (response.type === 'cursor') {
38
+ targetDirName = '.cursor';
39
+ } else {
40
+ targetDirName = '.claude';
41
+ }
42
+
33
43
  const targetDir = path.join(process.cwd(), targetDirName);
34
44
 
35
45
  if (!fs.existsSync(sourceDir)) {
@@ -41,14 +51,14 @@ async function main() {
41
51
  try {
42
52
  if (fs.existsSync(targetDir)) {
43
53
  const confirm = await prompts({
44
- type: "confirm",
45
- name: "overwrite",
54
+ type: 'confirm',
55
+ name: 'overwrite',
46
56
  message: `Directory ${targetDirName} already exists. Overwrite?`,
47
- initial: false,
57
+ initial: false
48
58
  });
49
59
 
50
60
  if (!confirm.overwrite) {
51
- console.log(red("✖ Operation cancelled."));
61
+ console.log(red('✖ Operation cancelled.'));
52
62
  process.exit(0);
53
63
  }
54
64
  }
@@ -56,19 +66,29 @@ async function main() {
56
66
  console.log(`\nCopying workflows to ${bold(targetDirName)}...`);
57
67
  await fs.copy(sourceDir, targetDir);
58
68
 
59
- console.log(
60
- green(`\n✔ Successfully installed ${response.type} workflows!`)
61
- );
69
+ // Special handling for Cursor and Claude Code: rename workflows to commands
70
+ if (response.type === 'cursor' || response.type === 'claude') {
71
+ const workflowsDir = path.join(targetDir, 'workflows');
72
+ const commandsDir = path.join(targetDir, 'commands');
73
+
74
+ if (fs.existsSync(workflowsDir)) {
75
+ console.log(`Renaming workflows to commands for ${response.type}...`);
76
+ await fs.move(workflowsDir, commandsDir, { overwrite: true });
77
+ }
78
+ }
79
+
80
+ console.log(green(`\n✔ Successfully installed ${response.type} workflows!`));
62
81
  console.log(`\nNext steps:`);
63
82
  console.log(`1. Open ${bold(targetDirName)} to explore the workflows.`);
64
83
  console.log(`2. Start using them in your project!\n`);
84
+
65
85
  } catch (err) {
66
86
  console.error(red(`\n✖ Error copying files: ${err.message}`));
67
87
  process.exit(1);
68
88
  }
69
89
  }
70
90
 
71
- main().catch((err) => {
91
+ main().catch(err => {
72
92
  console.error(red(err));
73
93
  process.exit(1);
74
94
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yodogawa",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "CLI to install Yodogawa Slash Commands workflows",
5
5
  "bin": {
6
6
  "yodogawa": "./bin/cli.js"