Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:51:38 +08:00
commit 8b9cbcdff7
18 changed files with 3489 additions and 0 deletions

View File

@@ -0,0 +1,229 @@
---
name: development-principles
description: 開発における基本原則(曖昧さ禁止、矛盾検出、推察禁止)を定義する。要件定義時、仕様確認時、設計レビュー時、またはユーザーが曖昧な要件、仕様の矛盾、不明点の確認、推測回避に言及した際に使用する。
---
# Development Principles
## 概要
このSkillは、開発を進める上での基本原則を定義する。曖昧さを排除し、矛盾を検出し、推察を避けることで、手戻りとバグを最小化し、開発効率を最大化することを目的とする。
## 責任範囲
このSkillは以下の範囲をカバーする:
- 曖昧な状態での開発禁止の原則
- 矛盾の検出と報告の方法
- 推察による回答禁止の原則
- 不明点の確認と明確化のプロセス
## 基本方針
- 仕様や要件が不明確な状態で開発を進めない
- ドキュメント間、仕様間、実装間の矛盾を発見した場合は即座に報告する
- ユーザーの意図や要件を推察せず、明示された情報のみに基づいて回答する
- 不明点があれば必ず質問し、明確化してから作業を開始する
## 曖昧な状態での開発禁止
### 原則
仕様、要件、期待される動作が不明確な場合、実装やドキュメント作成を進めず、必ずユーザーに質問する。
### 理由
曖昧さは手戻りとバグの温床となり、開発効率を著しく低下させる。
### 対応方法
不明点があれば必ず質問し、明確化してから作業を開始する。
### 曖昧さの検出
以下の場合は曖昧であると判断する:
- 仕様や要件が複数の解釈が可能
- 期待される動作が明示されていない
- 前提条件や制約事項が不明確
- 用語の定義が曖昧
- データ形式や範囲が明示されていない
良い例:
```text
ユーザー: 「ユーザー管理機能を実装して」
応答: 「ユーザー管理機能について、以下のどちらを想定されていますか?
A. **ユーザーの登録・編集・削除CRUD**: 基本的なユーザー管理機能
B. **ロールベースのアクセス制御RBAC**: 権限管理機能
C. **両方**: CRUD + RBAC
D. **その他**
推奨: **C両方**
一般的にユーザー管理機能には両方が含まれることが多いため。」
```
悪い例:
```text
ユーザー: 「ユーザー管理機能を実装して」
応答: 「承知しました。ユーザー管理機能を実装します。」
(曖昧な状態で実装を進めてしまう)
```
### 不明確な要件への対応
以下のプロセスで対応する:
1. **曖昧さを検出**: 要件や仕様に不明確な部分がないか確認する
2. **質問を作成**: 不明点を明確にするための質問を作成する
3. **選択肢を提示**: 想定される選択肢を提示し、ユーザーが選びやすくする
4. **確認を得る**: ユーザーからの回答を得て、要件を明確化する
5. **作業を開始**: 明確化された要件に基づいて作業を開始する
## 矛盾を無視しない
### 矛盾検出の原則
ドキュメント間、仕様間、実装間の矛盾を発見した場合、即座に報告し、解決方法をユーザーに確認する。
### 矛盾を放置する影響
矛盾を放置すると、後続の開発に悪影響を及ぼし、問題が拡大する。
### 矛盾発見時の対応
矛盾を発見した時点でユーザーに確認を求める。
### 矛盾の検出
以下の場合は矛盾があると判断する:
- ドキュメント間で記述が異なる
- 仕様と実装が一致しない
- 要件定義と設計書の内容が矛盾する
- 複数の制約条件が同時に満たせない
- 前提条件と実装方針が矛盾する
良い例:
```text
「要件定義書では『ユーザー登録時にメール認証を必須とする』と記載されていますが、
設計書では『メール認証はオプション』と記載されています。
どちらが正しいか確認させてください。
A. **メール認証を必須**: 要件定義書の記述が正しい
B. **メール認証はオプション**: 設計書の記述が正しい
C. **その他**
推奨: **Aメール認証を必須**
セキュリティの観点から、メール認証を必須とする方が安全なため。」
```
悪い例:
```text
「要件定義書ではメール認証が必須と記載されていますが、設計書ではオプションと記載されています。
設計書の方が新しいので、オプションとして実装します。」
(矛盾を発見したが、確認せずに進めてしまう)
```
### 矛盾への対応
以下のプロセスで対応する:
1. **矛盾を検出**: ドキュメント、仕様、実装間の矛盾を発見する
2. **矛盾を報告**: どこに矛盾があるかを明確に報告する
3. **選択肢を提示**: 矛盾を解決するための選択肢を提示する
4. **確認を得る**: ユーザーからの回答を得て、矛盾を解決する
5. **作業を継続**: 矛盾を解決した後、作業を継続する
## 推察による回答の禁止
### 推察禁止の原則
ユーザーの意図や要件を推察せず、明示された情報のみに基づいて回答する。ユーザーが明示的に述べていない要件、仕様、または期待される動作を推察して回答・実装しない。過去のやり取りから推測される内容であっても、現在の文脈で明示されていない限り、確認を求める。
### 推察による悪影響
不正確な情報は誤った意思決定を招き、プロジェクト全体に悪影響を与える。
### 不明点への対応方法
「わからない」「確認が必要」と明言し、適切な情報源を示す。
### 推察が必要な状況の検出
以下の場合は推察が必要であると判断する:
- ユーザーが明示的に述べていない要件や仕様が必要
- 過去のやり取りから推測される内容がある
- 暗黙の前提条件がある可能性がある
- 類似のケースから推測できる内容がある
- 一般的な慣習や標準があるが、明示されていない
良い例:
```text
ユーザー: 「データベースにユーザー情報を保存して」
応答: 「ユーザー情報の保存について、以下の点を確認させてください。
1. 保存するユーザー情報の項目はどれですか?
A. **基本情報のみ**: 名前、メールアドレス、パスワード
B. **基本情報 + プロフィール**: 基本情報に加えて、生年月日、住所、電話番号
C. **その他**
推奨: **A基本情報のみ**
最小限の情報から始めて、必要に応じて追加する方が安全なため。」
```
悪い例:
```text
ユーザー: 「データベースにユーザー情報を保存して」
応答: 「承知しました。ユーザー情報(名前、メールアドレス、パスワード、生年月日、住所、電話番号)を
データベースに保存します。」
(ユーザーが明示していない項目を推察して決定してしまう)
```
### 推察が必要な場合の対応
以下のプロセスで対応する:
1. **推察が必要な箇所を特定**: ユーザーが明示していない情報を特定する
2. **質問を作成**: 不明点を明確にするための質問を作成する
3. **選択肢を提示**: 想定される選択肢を提示し、ユーザーが選びやすくする
4. **確認を得る**: ユーザーからの回答を得て、情報を明確化する
5. **作業を開始**: 明確化された情報に基づいて作業を開始する
## チェックリスト
### 作業開始前
- [ ] 仕様や要件が明確に定義されている
- [ ] 期待される動作が明示されている
- [ ] 前提条件や制約事項が明確である
- [ ] 用語の定義が明確である
- [ ] データ形式や範囲が明示されている
- [ ] ドキュメント間、仕様間、実装間に矛盾がない
### 作業中
- [ ] 曖昧な部分を発見した場合、即座に質問している
- [ ] 矛盾を発見した場合、即座に報告している
- [ ] 推察が必要な箇所を特定し、確認を求めている
- [ ] ユーザーの意図や要件を推察せず、明示された情報のみに基づいて作業している
- [ ] 不明点があれば必ず質問し、明確化してから作業を進めている
### 作業完了後
- [ ] 実装が仕様や要件と一致している
- [ ] ドキュメントと実装に矛盾がない
- [ ] 曖昧な部分が残っていない
- [ ] すべての不明点が解決されている