Initial commit
This commit is contained in:
270
commands/create-docs.md
Normal file
270
commands/create-docs.md
Normal file
@@ -0,0 +1,270 @@
|
||||
---
|
||||
description: 機能仕様ドキュメントを作成する
|
||||
argument-hint: [追加の指示(オプション)]
|
||||
---
|
||||
|
||||
# 機能仕様ドキュメントの作成
|
||||
|
||||
前のステップで整理した要件に基づいて、詳細な機能仕様書を作成します。
|
||||
|
||||
## 追加の指示
|
||||
$ARGUMENTS
|
||||
|
||||
## 前提条件の確認
|
||||
|
||||
ドキュメント作成を開始する前に、以下を確認してください:
|
||||
|
||||
### 1. タスクファイルの存在確認
|
||||
|
||||
```javascript
|
||||
const fs = require('fs');
|
||||
const tasksFile = '.tasks.json';
|
||||
|
||||
if (!fs.existsSync(tasksFile)) {
|
||||
console.log('❌ タスクファイルが見つかりません');
|
||||
console.log('\n先に要件整理を実行してください:');
|
||||
console.log(' /new-feature [機能の説明]');
|
||||
process.exit(1);
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 前のステップ(要件整理)の完了確認
|
||||
|
||||
```javascript
|
||||
const data = JSON.parse(fs.readFileSync(tasksFile, 'utf-8'));
|
||||
|
||||
// タスクID 1 (要件整理) が完了しているか確認
|
||||
const requirementTask = data.tasks.find(t => t.id === 1);
|
||||
|
||||
if (!requirementTask || requirementTask.status !== 'completed') {
|
||||
console.log('❌ 要件整理が完了していません');
|
||||
console.log('\n先に要件整理を完了してください:');
|
||||
console.log(' /new-feature [機能の説明]');
|
||||
process.exit(1);
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 重複実行の防止
|
||||
|
||||
```javascript
|
||||
// タスクID 2 (ドキュメント作成) の状態を確認
|
||||
const docTask = data.tasks.find(t => t.id === 2);
|
||||
|
||||
if (docTask && docTask.status === 'completed') {
|
||||
console.log('⚠️ ドキュメントは既に作成されています');
|
||||
console.log('\nドキュメントを確認:');
|
||||
console.log(' docs/ ディレクトリを参照');
|
||||
console.log('\n再作成する場合は、既存のドキュメントを削除してから実行してください。');
|
||||
console.log('次のステップに進む場合:');
|
||||
console.log(' /resume');
|
||||
process.exit(0);
|
||||
}
|
||||
```
|
||||
|
||||
## ドキュメント作成の指針
|
||||
|
||||
前提条件を満たしていることを確認したら、`doc-writer` エージェントを使って、階層的なドキュメント構造を作成してください。
|
||||
|
||||
### ドキュメント構造
|
||||
|
||||
**重要**: ドキュメントは単一ファイルではなく、`docs/` ディレクトリ配下に適切な階層構造として作成します。
|
||||
|
||||
```
|
||||
docs/
|
||||
├── README.md # ドキュメント全体のインデックス
|
||||
├── 00-overview/ # 全体設計
|
||||
├── 01-requirements/ # 要件定義
|
||||
├── 02-design/ # 基本設計
|
||||
├── 03-detailed-design/ # 詳細設計(機能ごと)
|
||||
├── 04-api/ # API設計
|
||||
├── 05-interface/ # インターフェース設計
|
||||
├── 06-test/ # テスト設計
|
||||
└── 07-implementation/ # 実装ガイド
|
||||
```
|
||||
|
||||
### 作成する内容
|
||||
|
||||
#### 1. 概要
|
||||
```markdown
|
||||
# [機能名]
|
||||
|
||||
## 目的
|
||||
[この機能が解決する課題]
|
||||
|
||||
## 期待される効果
|
||||
- [効果1]
|
||||
- [効果2]
|
||||
```
|
||||
|
||||
#### 2. 機能要件
|
||||
```markdown
|
||||
## 機能要件
|
||||
|
||||
### ユーザーストーリー
|
||||
- As a [ユーザー], I want to [やりたいこと], so that [理由]
|
||||
|
||||
### 機能詳細
|
||||
#### [機能1]
|
||||
- 説明: [...]
|
||||
- 入力: [...]
|
||||
- 出力: [...]
|
||||
- 振る舞い: [...]
|
||||
|
||||
#### [機能2]
|
||||
...
|
||||
```
|
||||
|
||||
#### 3. 技術仕様
|
||||
```markdown
|
||||
## 技術仕様
|
||||
|
||||
### アーキテクチャ
|
||||
[システム構成図や説明]
|
||||
|
||||
### データモデル
|
||||
[必要なデータ構造]
|
||||
|
||||
### API仕様
|
||||
[エンドポイント、リクエスト/レスポンス形式]
|
||||
|
||||
### インターフェース
|
||||
[関数シグネチャ、クラス定義など]
|
||||
```
|
||||
|
||||
#### 4. 非機能要件
|
||||
```markdown
|
||||
## 非機能要件
|
||||
|
||||
- **パフォーマンス**: [レスポンスタイム、スループット]
|
||||
- **セキュリティ**: [認証、認可、データ保護]
|
||||
- **スケーラビリティ**: [負荷対応]
|
||||
- **互換性**: [ブラウザ、OS、バージョン]
|
||||
```
|
||||
|
||||
#### 5. UI/UX(該当する場合)
|
||||
```markdown
|
||||
## UI/UX
|
||||
|
||||
### 画面遷移
|
||||
[遷移図やフロー]
|
||||
|
||||
### インタラクション
|
||||
[ユーザー操作とシステム応答]
|
||||
|
||||
### エラーハンドリング
|
||||
[エラーメッセージ、リカバリー方法]
|
||||
```
|
||||
|
||||
#### 6. テスト戦略
|
||||
```markdown
|
||||
## テスト戦略
|
||||
|
||||
### テスト観点
|
||||
- [正常系のテストケース]
|
||||
- [異常系のテストケース]
|
||||
- [境界値テスト]
|
||||
- [エッジケース]
|
||||
|
||||
### パフォーマンステスト
|
||||
[必要な場合]
|
||||
```
|
||||
|
||||
#### 7. 実装の考慮事項
|
||||
```markdown
|
||||
## 実装の考慮事項
|
||||
|
||||
### 既存コードへの影響
|
||||
[変更が必要な箇所、依存関係]
|
||||
|
||||
### マイグレーション
|
||||
[必要な場合の移行計画]
|
||||
|
||||
### ロールバック
|
||||
[問題発生時の対応]
|
||||
```
|
||||
|
||||
## ドキュメント保存先とリンク
|
||||
|
||||
### ディレクトリ作成
|
||||
|
||||
プロジェクトルートに `docs/` ディレクトリを作成し、必要なサブディレクトリを作成します。
|
||||
|
||||
機能の規模に応じて、以下のように調整してください:
|
||||
|
||||
**小規模機能**: 最小限のディレクトリ(requirements, detailed-design)
|
||||
**中規模機能**: 主要なディレクトリ(overview, requirements, design, api/interface)
|
||||
**大規模機能**: 完全なディレクトリ構造
|
||||
|
||||
### 相互リンクの設定
|
||||
|
||||
各ドキュメント間で適切にリンクを設定してください:
|
||||
|
||||
```markdown
|
||||
# 例: 01-requirements/functional.md
|
||||
詳細な設計については [詳細設計](../03-detailed-design/[feature-name]/README.md) を参照してください。
|
||||
|
||||
# 例: 04-api/[endpoint].md
|
||||
データモデルの詳細は [データモデル](../02-design/data-model.md) を参照してください。
|
||||
```
|
||||
|
||||
### インデックスファイル (docs/README.md)
|
||||
|
||||
ルートの README.md にすべてのドキュメントへのリンクを含めてください:
|
||||
|
||||
```markdown
|
||||
# [機能名] - ドキュメント
|
||||
|
||||
## 📚 ドキュメント構成
|
||||
|
||||
### [全体設計](./00-overview/README.md)
|
||||
- [アーキテクチャ](./00-overview/architecture.md)
|
||||
|
||||
### [要件定義](./01-requirements/README.md)
|
||||
- [機能要件](./01-requirements/functional.md)
|
||||
- [非機能要件](./01-requirements/non-functional.md)
|
||||
|
||||
[...]
|
||||
```
|
||||
|
||||
## タスク状態の更新
|
||||
|
||||
ドキュメント作成を開始する前に、タスク状態を更新してください:
|
||||
|
||||
```javascript
|
||||
// .tasks.json の該当タスクを更新
|
||||
{
|
||||
"id": 2,
|
||||
"type": "workflow",
|
||||
"name": "ドキュメント作成",
|
||||
"status": "in_progress", // pending → in_progress
|
||||
"command": "/create-docs",
|
||||
"startedAt": "[現在時刻]"
|
||||
}
|
||||
```
|
||||
|
||||
ドキュメント作成が完了したら:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"id": 2,
|
||||
"status": "completed", // in_progress → completed
|
||||
"completedAt": "[現在時刻]"
|
||||
}
|
||||
```
|
||||
|
||||
## 次のステップ
|
||||
|
||||
ドキュメントを作成したら、ユーザーに以下を確認してください:
|
||||
|
||||
```
|
||||
ドキュメントを確認してください。
|
||||
承認いただければ、次のステップ(テスト作成)を自動的に開始します。
|
||||
|
||||
承認しますか? (yes/no)
|
||||
```
|
||||
|
||||
**ユーザーが承認した場合**: SlashCommandツールを使って `/create-tests` を実行してください。
|
||||
|
||||
**注意**:
|
||||
- `post-docs-check` フックが自動的に実行され、ドキュメントの完全性をチェックします
|
||||
- タスク進捗は `/list-tasks` で確認できます
|
||||
Reference in New Issue
Block a user