doc-ctr について
SDDワークフローでデータ契約を作成し、APIインターフェースとデータスキーマをMarkdownとYAMLのペアで定義するスキルです。テンプレート、トレーサビリティ規則、品質ゲートを備え、要件から技術仕様への移行を支援します。
主な機能
- 01MarkdownとYAMLのペアで契約を作成
- 02APIとデータスキーマを定義
- 03OpenAPI 3.0とJSON Schemaに対応
- 04トレーサビリティとID規則を適用
- 05ドキュメントの品質ゲートを確認
活用シーン
- 01上流要件に基づくAPI契約の定義
- 02チームやサービス間でのインターフェース共有
- 03技術仕様に向けた契約ドキュメントの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vladm3105/ aidoc-flow-framework --skill doc-ctrインストール後、Claude Code で/doc-ctrを入力して読み込まれたか確認します。
詳細
doc-ctr
目的
**データコントラクト(CTR)**を作成します。SDD ワークフローにおける任意のレイヤー 8 の成果物であり、マークダウンと YAML の二重ファイル形式を使用して、API コントラクト、データスキーマ、インターフェース仕様を定義します。
レイヤー:8(任意)
上流:BRD(レイヤー 1)、PRD(レイヤー 2)、EARS(レイヤー 3)、BDD(レイヤー 4)、ADR(レイヤー 5)、SYS(レイヤー 6)、REQ(レイヤー 7)
下流の成果物:SPEC(レイヤー 9)、TSPEC(レイヤー 10)、TASKS(レイヤー 11)、Code(レイヤー 12)
前提条件
上流成果物の確認(重要)
このドキュメントを作成する前に、必ず次の作業を行ってください。
-
既存の上流成果物を一覧表示します。
ls docs/01_BRD/ docs/02_PRD/ docs/03_EARS/ docs/04_BDD/ docs/05_ADR/ docs/06_SYS/ docs/07_REQ/ 2>/dev/null -
トレーサビリティタグでは、実在するドキュメントのみを参照します
-
上流成果物の種類が実際に存在しない場合に限り、
nullを使用します -
BRD-XXXやTBDのようなプレースホルダーは決して使用しません -
不足している上流成果物は作成しません。代わりに、その機能をスキップします
CTR を作成する前に、次の内容を読んでください。
- 共有標準:
.claude/skills/doc-flow/SHARED_CONTENT.md - 上流の REQ:アトミックな要件を読みます(特にセクション 3:インターフェース仕様、セクション 4:データスキーマ)
- テンプレート:
ai_dev_ssd_flow/08_CTR/CTR-MVP-TEMPLATE.mdとCTR-MVP-TEMPLATE.yaml - 作成ルール:
ai_dev_ssd_flow/08_CTR/CTR-MVP-TEMPLATE.md - 検証ルール:
ai_dev_ssd_flow/08_CTR/CTR_MVP_SCHEMA.yaml - 検証スクリプト:
./ai_dev_flow/scripts/validate_ctr.sh
予約 ID の免除(CTR-00_*)
対象範囲:予約 ID 000のドキュメントは、検証が全面的に免除されます。
パターン:CTR-00_*.md、CTR-00_*.yaml
ドキュメントの種類:
- インデックスドキュメント(
CTR-00_index.md) - トレーサビリティマトリクスのテンプレート(
CTR-00_TRACEABILITY_MATRIX-TEMPLATE.md) - 用語集、レジストリ、チェックリスト
理由:予約 ID 000 のドキュメントは、フレームワークの基盤(インデックス、テンプレート、参考資料)であり、トレーサビリティや品質ゲートが必要なプロジェクト成果物ではありません。
検証時の動作:ファイル名がCTR-00_*パターンに一致する場合、すべてのチェックをスキップします。
このスキルを使用するタイミング
次の場合にdoc-ctrを使用します。
- BRD から REQ(レイヤー 1~7)までを完了している
- API コントラクトまたはデータスキーマを定義する必要がある
- 複数のチームやサービスで共有コントラクトが必要である
- マイクロサービスまたは分散システムを構築している
- REQ セクション 3(インターフェース仕様)に正式なコントラクトが必要である
- このレイヤーは任意(レイヤー 8)です。コントラクトがシンプルな場合はスキップしてください
CTR 固有のガイダンス
1. 必須の二重ファイル形式
各コントラクトには、2 つのファイルが必要です(必須の二重ファイル形式:.mdファイルと、それに対応する.yamlファイル)。
マークダウンファイル(.md):
- ドキュメント管理セクション
- コントラクトの概要
- ビジネスコンテキスト
- 使用例
- トレーサビリティ
YAML ファイル(.yaml):
- OpenAPI 3.0 または JSON Schema
- 正式なコントラクト定義
- 検証ルール
- ペイロードの例
例:
ai_dev_ssd_flow/08_CTR/CTR-01_data_validation.md
ai_dev_ssd_flow/08_CTR/CTR-01_data_validation.yaml
2. ドキュメント管理フィールド(必須 9 項目)
| フィールド | 必須 | 説明 |
|---|---|---|
| CTR ID | はい | CTR-NN 形式 |
| タイトル | はい | コントラクト名 |
| ステータス | はい | Draft/In Review/Active/Deprecated |
| バージョン | はい | セマンティックバージョン(Major.Minor.Patch) |
| 作成日 | はい | YYYY-MM-DD |
| 作成者 | はい | ドキュメントの作成者 |
| オーナー | はい | コントラクトのオーナー |
| 最終更新日 | はい | YYYY-MM-DD |
| SPEC 対応スコア | はい | ✅ NN%(目標:≥90%) |
3. 必須セクション(Markdown ファイル)
ドキュメント管理(必須 — すべての番号付きセクションより前に配置)
必須セクション(12 セクションの MVP 構成):
| # | セクション | 目的 |
|---|---|---|
| 1 | ドキュメント管理 | メタデータ、SPEC 準備度スコア |
| 2 | コンテキスト | 問題の説明、制約、トレードオフ |
| 3 | 契約の定義 | インターフェースの概要、関係者、パターン |
| 4 | 要件への対応 | 上位の要件とのリンク |
| 5 | インターフェース定義 | スキーマの参照、エンドポイント |
| 6 | エラー処理 | エラーコード、障害モード |
| 7 | 品質属性 | パフォーマンス、セキュリティ、信頼性 |
| 8 | バージョン管理戦略 | バージョンポリシー、互換性 |
| 9 | 例 | リクエスト/レスポンスのペア |
| 10 | 検証 | 契約テスト、BDD 参照 |
| 11 | トレーサビリティ | 上流/下流、タグ |
| 12 | 参照 | 内部/外部リンク |
任意の付録:
- 付録 A:検討した代替案
- 付録 B:実装に関する注記
4. 要素 ID の形式(必須)
パターン:CTR.{DOC_NUM}.{HASH}(3 セグメント、ドット区切り)
| 要素の種類 | コード | 例 |
|---|---|---|
| インターフェース | 16 | CTR.02.1601 |
| データモデル | 17 | CTR.02.1701 |
| 契約条項 | 20 | CTR.02.2001 |
廃止されたパターン — 旧形式は使用しないでください:
INT-XXX— 代わりにCTR.NN.16.SSを使用MODEL-XXX— 代わりにCTR.NN.17.SSを使用CLAUSE-XXX— 代わりにCTR.NN.20.SSを使用IF-XXX— 代わりにCTR.NN.16.SSを使用DM-XXX— 代わりにCTR.NN.17.SSを使用CC-XXX— 代わりにCTR.NN.20.SSを使用
参照:ID_NAMING_STANDARDS.md - 相互参照リンク形式
5. YAML 契約形式
OpenAPI 3.0 形式(API 用):
openapi: 3.0.3
info:
title: Data Validation API
version: 1.0.0
description: Contract for data validation
paths:
/api/v1/data/validate:
post:
summary: Validate data record
operationId: validateDataRecord
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DataRequest'
responses:
'200':
description: Validation successful
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
DataRequest:
type: object
required:
- record_type
- record_id
- data
- account_id
properties:
record_type:
type: string
pattern: ^[A-Z]{1,10}$
example: "METRIC"
record_id:
type: string
format: uuid
example: "abc123"
data:
type: object
example: {}
account_id:
type: string
format: uuid
example: "123e4567-e89b-12d3-a456-426614174000"
ValidationResponse:
type: object
required:
- valid
- order_id
properties:
valid:
type: boolean
example: true
order_id:
type: string
format: uuid
example: "987f6543-e21c-43d2-b654-426614174111"
warnings:
type: array
items:
type: string
example: ["Price near market close"]
ErrorResponse:
type: object
required:
- error_code
- message
properties:
error_code:
type: string
example: "INVALID_SYMBOL"
message:
type: string
example: "Symbol 'XYZ' not found in approved list"
details:
type: object
additionalProperties: true
JSON Schema 形式(データモデル用):
$schema: "http://json-schema.org/draft-07/schema#"
name: DataProcessingConfig
description: Configuration schema for data processing
type: object
required:
- max_batch_size
- timeout_seconds
- check_frequency
properties:
max_batch_size:
type: integer
minimum: 1
maximum: 10000
description: Maximum records per batch
example: 1000
timeout_seconds:
type: integer
minimum: 1
maximum: 300
description: Processing timeout in seconds
example: 60
check_frequency:
type: string
enum: ["realtime", "1min", "5min", "15min"]
description: How often to check processing status
example: "1min"
alert_threshold:
type: number
minimum: 0
maximum: 1.0
description: Alert when queue depth exceeds this fraction
default: 0.80
example: 0.80
6. 使用例セクション
形式:
## Usage Examples
### Example 1: Successful Validation
**Request**:
```json
{
"record_type": "METRIC",
"record_id": "abc123",
"data": {"value": 100},
"account_id": "123e4567-e89b-12d3-a456-426614174000"
}
レスポンス:
{
"valid": true,
"order_id": "987f6543-e21c-43d2-b654-426614174111",
"warnings": []
}
例 2:無効なレコードタイプ
リクエスト:
{
"record_type": "invalid",
"record_id": "abc123",
"data": {"value": 100},
"account_id": "123e4567-e89b-12d3-a456-426614174000"
}
レスポンス(400 Bad Request):
{
"error_code": "INVALID_RECORD_TYPE",
"message": "Record type 'invalid' not found in approved list",
"details": {
"record_type": "invalid",
"approved_types": ["METRIC", "EVENT", "LOG"]
}
}
### 7. Contract Versioning
**Semantic Versioning**: Major.Minor.Patch
**Version Policy**:
- **Major**: Breaking changes (incompatible)
- **Minor**: New features (backward compatible)
- **Patch**: Bug fixes (backward compatible)
**Example**:
```yaml
openapi: 3.0.3
info:
title: Data Validation API
version: 2.1.0 # Major.Minor.Patch
description: |
Version 2.1.0 (2025-01-15)
- Added: optional 'warnings' field in response (minor)
- Fixed: validation error for edge case data (patch)
Breaking changes from v1.x:
- Changed: account_id now requires UUID format (was string)
8. SPEC 準備度のスコアリングシステム
目的:CTR の成熟度と、技術仕様(SPEC)フェーズへ進む準備状況を測定します。
ドキュメント管理での形式:
| **SPEC-Ready Score** | ✅ 95% (Target: ≥90%) |
ステータスと SPEC 準備度スコアの対応:
| SPEC 準備度スコア | 必須ステータス |
|---|---|
| ≥90% | Active |
| 70-89% | In Review |
| <70% | Draft |
スコアリング基準:
- スキーマの完全性(35%):すべてのエンドポイント/モデルが定義され、JSON Schema/OpenAPI の検証に合格し、例が提供されていること
- エラー処理(25%):すべてのエラーコードが文書化され、再試行戦略が指定され、障害モードが網羅されていること
- 品質属性(20%):パフォーマンス目標、SLA 要件、冪等性が指定されていること
- トレーサビリティ(10%):上流の REQ/ADR がリンクされ、利用側/提供側が特定されていること
- ドキュメント(10%):使用例、バージョン管理ポリシー、非推奨化戦略が記載されていること
品質ゲート:スコアが 90% 未満の場合、SPEC 成果物の作成はブロックされます。
9. サービスタイプ別のディレクトリ構成
目的:大規模プロジェクト(契約が 30 件以上)で、サービスタイプごとに契約を整理します。
構成:
CTR/
├── agents/ # Agent-to-agent communication
├── mcp/ # MCP server contracts
├── infra/ # Infrastructure services
└── shared/ # Cross-cutting contracts
使用するタイミング:
- 契約が 10 件未満:フラットなディレクトリ
- 契約が 10~30 件:サブディレクトリは任意
- 契約が 30 件以上:サブディレクトリが必須
推奨事項:最初はフラットな構成にし、サービスタイプごとに契約が 3 件以上になった時点でサブディレクトリへ移行します。
タグ形式の規約(意図的な設計)
SDD フレームワークでは、相互参照に 2 種類の異なる表記体系を使用します。
| 表記 | 形式 | 成果物 | 目的 |
|---|---|---|---|
| ハイフン | TYPE-NN | ADR、SPEC、CTR | 技術成果物。ファイル/ドキュメントへの参照 |
| ドット | TYPE.NN.xxxx | BRD、PRD、EARS、BDD、SYS、REQ、IMPL、TASKS | 階層型成果物。ドキュメント内の要素への参照 |
重要な違い:
@adr: ADR-033→ ドキュメントADR-033_risk_limit_enforcement.mdを指します@brd: BRD.17.0101→ ドキュメントBRD-017.md内の要素 01.01 を指します
統一要素 ID 形式(必須)
階層型要件(BRD、PRD、EARS、BDD、SYS、REQ、IMPL)の場合:
- 必ず使用:
TYPE.NN.xxxx(ドット区切りの 3 セグメント統一形式) - 使用禁止:
TYPE-NN:NNN(コロン区切り。非推奨) - 使用禁止:
TYPE.NN.TT.SS(旧 4 セグメント形式。非推奨)
例:
@brd: BRD.17.0101✅@brd: BRD.017.001❌(旧 3 セグメント形式)
累積タグ付けの要件
レイヤー 8(CTR):レイヤー 1~7(BRD から REQ まで)のタグを含める必要があります
タグ数:7 個のタグ
累積タグの要素タイプコード:
| タグ | 成果物 | 要素タイプ | コード |
|---|---|---|---|
| @brd | BRD | ビジネス要件 | 01 |
| @prd | PRD | 製品機能 | 07 |
| @ears | EARS | EARS ステートメント | 25 |
| @bdd | BDD | シナリオ | 14 |
| @adr | ADR | ドキュメント参照 | (ハイフン表記) |
| @sys | SYS | システム要件 | 26 |
| @req | REQ | アトミック要件 | 27 |
形式:
## Traceability
**Required Tags** (Cumulative Tagging Hierarchy - Layer 8):
```markdown
@brd: BRD.01.0103
@prd: PRD.01.0702
@ears: EARS.01.2501
@bdd: BDD.01.1401
@adr: ADR-033, ADR-045
@sys: SYS.01.2601
@req: REQ.01.2703
上流/下流の成果物
上流のソース:
- BRD(レイヤー 1)- ビジネス要件
- PRD(レイヤー 2)- 製品機能
- EARS(レイヤー 3)- 形式的な要件
- BDD(レイヤー 4)- テストシナリオ
- ADR(レイヤー 5)- アーキテクチャ上の決定
- SYS(レイヤー 6)- システム要件
- REQ(レイヤー 7)- アトミック要件(主要なソース。特にセクション 3)
下流の成果物:
- SPEC(レイヤー 9)- 技術仕様
- TSPEC(レイヤー 10)- テスト仕様
- TASKS(レイヤー 11)- タスクの内訳
- コード(レイヤー 12)- 実装コード
同種ドキュメント間の関係(条件付き):
@related-ctr: CTR-NN- API コンテキストを共有する CTR@depends-ctr: CTR-NN- 先に完了する必要がある CTR
検証チェック
Tier 1:エラー(ブロック対象)
| チェック | 説明 |
|---|---|
| CHECK 1 | 必須のドキュメント管理フィールド(9 項目) |
| CHECK 2 | 二重ファイル形式(.md と .yaml の両方が存在する) |
| CHECK 3 | SPEC 準備完了スコアの形式(✅ 絵文字 + パーセンテージ + 目標値) |
| CHECK 4 | YAML スキーマ検証(OpenAPI/JSON Schema が有効) |
| CHECK 5 | 累積タグ付け(上流タグ 7~8 個) |
| CHECK 6 | 要素 ID 形式(CTR.NN.xxxx) |
Tier 2:警告(推奨)
| チェック | 説明 |
|---|---|
| CHECK 7 | 使用例(リクエスト/レスポンスのペア) |
| CHECK 8 | エラー処理(エラーコードが文書化されている) |
| CHECK 9 | バージョン管理ポリシー(セマンティックバージョニング) |
| CHECK 10 | 検証ルール(スキーマ検証が指定されている) |
Tier 3:情報
| チェック | 説明 |
|---|---|
| CHECK 11 | ディレクトリ構成(30 件以上のコントラクトにはサブディレクトリを使用) |
| CHECK 12 | 利用者/提供者が特定されている |
コミット前フック
CTR の検証は、コミット前フックによって自動的に強制されます。
# .pre-commit-config.yaml
- id: ctr-core-validator
name: Validate CTR core checks (validator, framework library)
entry: bash ai_dev_ssd_flow/08_CTR/scripts/ctr_core_validator_hook.sh ai_dev_ssd_flow/08_CTR
language: system
pass_filenames: false
stages: [pre-commit]
- id: ctr-quality-gate
name: Validate CTR quality gates
entry: bash ai_dev_ssd_flow/08_CTR/scripts/ctr_quality_gate_hook.sh ai_dev_ssd_flow/08_CTR
language: system
pass_filenames: false
stages: [pre-commit]
- id: ctr-spec-ready-score
name: Validate CTR SPEC-Ready score (≥90%)
entry: bash ai_dev_ssd_flow/08_CTR/scripts/ctr_spec_ready_score_hook.sh ai_dev_ssd_flow/08_CTR
language: system
pass_filenames: false
stages: [pre-commit]
適用される品質ゲート:
- ✅ デュアルファイル形式(.md と .yaml のペアファイル)
- ✅ Active ステータスでは SPEC-Ready スコア ≥90%
- ✅ OpenAPI 3.0 または JSON Schema の検証
- ✅ 文書管理フィールド(必須フィールド 9 項目)
- ✅ 累積タグ付け(@brd から @req まで、7 個のタグ)
- ✅ 要素 ID の形式(インターフェース/モデル/条項には CTR.NN.xxxx)
- ✅ 使用例(リクエスト/レスポンスのペア)
- ✅ エラー処理の仕様
- ✅ バージョン管理ポリシー(セマンティックバージョニング)
- ✅ 検証ルールの文書化
- ✅ コンシューマー/プロバイダーの識別
- ✅ 品質属性(パフォーマンス、セキュリティ、信頼性)
フックスクリプト:
ctr_core_validator_hook.sh- CTR のコア構造とデュアルファイルの検証ctr_quality_gate_hook.sh- 完全性に関する品質ゲートのチェックctr_spec_ready_score_hook.sh- SPEC-Ready スコアの計算(≥90% が必須)
作成プロセス
ステップ 1: 上流の成果物を読む
REQ のセクション 3(インターフェース仕様)とセクション 4(データスキーマ)に注目します。
ステップ 2: ID 番号を確保する
ai_dev_ssd_flow/08_CTR/ で次に利用可能な ID 番号を確認します。
ID 番号の付番規則: 2 桁から始め、必要な場合にのみ桁数を増やします。
- ✅ 正しい例: CTR-01、CTR-99、CTR-102
- ❌ 誤った例: CTR-001、CTR-009(先頭に余分なゼロを付ける必要はありません)
ステップ 3: CTR ファイルを作成する(デュアル形式)
ネストフォルダーのルール(必須): 文書のサイズにかかわらず、すべての CTR 文書でネストフォルダーを使用する必要があります。
場所:
- 標準:
docs/08_CTR/CTR-NN_{slug}/CTR-NN_{slug}.md+.yaml - サービスベース:
docs/08_CTR/{service_type}/CTR-NN_{slug}/CTR-NN_{slug}.md+.yaml
フォルダーのオンデマンド作成: 保存する前に、対象ディレクトリを作成します。
# Create nested folder (ALWAYS required)
mkdir -p docs/08_CTR/CTR-NN_{slug}/
# OR for service-type subdirectory
mkdir -p docs/08_CTR/{service_type}/CTR-NN_{slug}/
サービスタイプ(契約が 10 件以上の場合):
agents/- エージェント間の通信mcp/- MCP サーバーの契約infra/- インフラストラクチャサービスshared/- 横断的な契約
例:
- 標準:
docs/08_CTR/CTR-01_data_validation/CTR-01_data_validation.md+.yaml - サービスベース:
docs/08_CTR/agents/CTR-01_data_validation/CTR-01_data_validation.md+.yaml
重要: ネストしたフォルダー構造を使わずに、docs/08_CTR/ 直下に CTR ファイルを作成しないでください。
ステップ 4: 文書管理セクションに入力する(Markdown)
SPEC-Ready スコアを含む、必須フィールド 9 項目すべてに入力します。
ステップ 5: 契約の概要を記述する(Markdown)
目的、スコープ、バージョンを要約します。
ステップ 6: YAML 契約を定義する
形式を選びます。
- REST API には OpenAPI 3.0
- データモデル には JSON Schema
- イベント駆動システム には AsyncAPI(該当する場合)
ステップ 7: 使用例を追加する(Markdown)
説明を添えて、リクエスト/レスポンスの例を示します。
ステップ 8: 検証ルールを文書化する(Markdown)
スキーマ検証とビジネスルールを説明します。
ステップ 9: エラー処理を指定する(Markdown)
エラーコードとレスポンスを文書化します。
ステップ 10: 累積タグを追加する
上流のタグをすべて(@brd から @req/impl まで、7~8 個)含めます。
ステップ 11: トレーサビリティマトリックスを作成/更新する
必須: ai_dev_ssd_flow/08_CTR/CTR-00_TRACEABILITY_MATRIX-TEMPLATE.md を更新します。
ステップ 12: CTR を検証する
# YAML schema validation
yamllint ai_dev_ssd_flow/08_CTR/CTR-01_*.yaml
# OpenAPI validation
openapi-spec-validator ai_dev_ssd_flow/08_CTR/CTR-01_*.yaml
# Cumulative tagging
python ai_dev_flow/scripts/validate_tags_against_docs.py --artifact CTR-01 --expected-layers brd,prd,ears,bdd,adr,sys,req,impl --strict
ステップ 13: 変更をコミットする
両方のファイル(.md と .yaml)およびトレーサビリティマトリックスをコミットします。
検証
自動検証
# Quality gates
scripts/validate_quality_gates.sh ai_dev_ssd_flow/08_CTR/CTR-01_*.md
# YAML validation
yamllint ai_dev_ssd_flow/08_CTR/CTR-01_*.yaml
# OpenAPI validation (if using OpenAPI)
openapi-spec-validator ai_dev_ssd_flow/08_CTR/CTR-01_*.yaml
# CTR-specific validation (includes dual-file check)
./ai_dev_flow/scripts/validate_ctr.sh CTR-01
# Cumulative tagging
python ai_dev_flow/scripts/validate_tags_against_docs.py \
--artifact CTR-01 \
--expected-layers brd,prd,ears,bdd,adr,sys,req,impl \
--strict
手動チェックリスト
- 両方のファイルを作成した(.md と .yaml)
- 文書管理が完了している(9 項目)
- SPEC-Ready スコアの形式が正しい(✅ NN% (Target: ≥90%))
- 契約の概要が明確である
- ビジネスコンテキストで理由を説明している(REQ へのリンク)
- YAML 契約が有効である(OpenAPI/JSON Schema)
- 使用例が包括的である
- エラー処理が文書化されている
- 検証ルールが指定されている
- バージョン番号がセマンティックバージョニング形式である(Major.Minor.Patch)
- 累積タグ: @brd から @req/impl まで(7~8 個のタグ)
- 要素 ID が
CTR.NN.xxxx形式を使用している - トレーサビリティマトリックスが更新されている
図の標準
すべての図には、必ず Mermaid 構文を使用してください。テキストベースの図(ASCII アート、罫線文字)は禁止されています。
参照:ai_dev_ssd_flow/DIAGRAM_STANDARDS.md および mermaid-gen スキル。
よくある落とし穴
- ファイルが1つだけ:.md ファイルと .yaml ファイルの両方を作成する必要があります
- 無効な YAML:yamllint と openapi-spec-validator で検証する必要があります
- 例の不足:「使用例」セクションは導入に不可欠です
- あいまいな検証:スキーマ検証は正確で、テスト可能である必要があります
- 累積タグの不足:レイヤー 9 には、上流のタグをすべて(7~8個)含める必要があります
- 必要な場合にスキップする:複数のチームで共有契約が必要な場合は、スキップしないでください
- 要素 ID の誤り:旧形式の
INT-XXX、MODEL-XXX、CLAUSE-XXXではなく、CTR.NN.xxxxを使用してください - 累積タグコードの誤り:正しい要素タイプコードを使用してください(EARS=25、BDD=14、SYS=26、REQ=27、IMPL=29)
作成後の検証(必須 - 確認不要)
重要:ドキュメントを作成したら、直ちにこの検証ループを実行してください。検証に合格するまで、次のドキュメントに進まないでください。
自動検証ループ
LOOP:
1. Run: python ai_dev_flow/scripts/validate_cross_document.py --document {doc_path} --auto-fix
2. IF errors fixed: GOTO LOOP (re-validate)
3. IF warnings fixed: GOTO LOOP (re-validate)
4. IF unfixable issues: Log for manual review, continue
5. IF clean: Mark VALIDATED, proceed
検証コマンド
# Per-document validation (Phase 1)
python ai_dev_flow/scripts/validate_cross_document.py --document docs/CTR/CTR-NN_slug.md --auto-fix
# Layer validation (Phase 2) - run when all CTR documents complete
python ai_dev_flow/scripts/validate_cross_document.py --layer CTR --auto-fix
レイヤー固有の上流要件
| このレイヤー | 必須の上流タグ | 数 |
|---|---|---|
| CTR(レイヤー 8) | @brd、@prd、@ears、@bdd、@adr、@sys、@req | 7タグ |
自動修正アクション(確認不要)
| 問題 | 修正アクション |
|---|---|
| 上流タグの不足 | 上流ドキュメントへの参照を付けて追加 |
| タグ形式が無効 | TYPE.NN.xxxx(3セグメント)または TYPE-NN 形式に修正 |
| リンク切れ | 現在の場所からパスを再計算 |
| トレーサビリティセクションの不足 | テンプレートから挿入 |
検証コードの一覧
| コード | 説明 | 重大度 |
|---|---|---|
| XDOC-001 | 参照先の要件 ID が見つからない | ERROR |
| XDOC-002 | 累積タグが不足している | ERROR |
| XDOC-003 | 上流ドキュメントが見つからない | ERROR |
| XDOC-006 | タグ形式が無効 | ERROR |
| XDOC-007 | 累積タグの連鎖に欠落がある | ERROR |
| XDOC-009 | トレーサビリティセクションが不足している | ERROR |
品質ゲート
ブロッキング:はい - フェーズ 1 の検証がエラー 0 件で合格するまで、次のドキュメントに進めません。
次のスキル
CTR の作成後(またはこの任意のレイヤーをスキップした後)、次を使用してください。
doc-spec - 技術仕様を作成する(レイヤー 9)
SPEC では以下を行います。
- 作成した場合は CTR を、作成していない場合は REQ を上流のソースとして参照します
- 上流タグをすべて(7~8個)含めます
- YAML 形式を使用します
- 実装の詳細を定義します
- 実装可能な状態を 100% 達成します
参考ドキュメント
CTR 成果物に関連する補足ドキュメントについて:
- 形式:
CTR-REF-NNN_{slug}.md - スキル:
doc-refスキルを使用 - 検証:最小限(ブロッキングなし)
- 例:API スタイルガイド、契約のバージョニングポリシー
関連リソース
- テンプレート:
ai_dev_ssd_flow/08_CTR/CTR-MVP-TEMPLATE.md(主たる基準) - スキーマテンプレート:
ai_dev_ssd_flow/08_CTR/CTR-MVP-TEMPLATE.yaml(機械可読) - CTR 作成ルール:
ai_dev_ssd_flow/08_CTR/CTR-MVP-TEMPLATE.md - CTR 検証ルール:
ai_dev_ssd_flow/08_CTR/CTR_MVP_SCHEMA.yaml - CTR README:
ai_dev_ssd_flow/08_CTR/README.md - OpenAPI 仕様:https://spec.openapis.org/oas/v3.0.3
- JSON Schema:https://json-schema.org/
- 共有標準:
.claude/skills/doc-flow/SHARED_CONTENT.md - 命名標準:
.claude/skills/doc-naming/SKILL.md(ID および命名規則)
セクションテンプレート(25K トークンを超えるドキュメント向け):
- インデックステンプレート:
ai_dev_ssd_flow/08_CTR/CTR-SECTION-0-TEMPLATE.md - コンテンツテンプレート:
ai_dev_ssd_flow/08_CTR/CTR-SECTION-TEMPLATE.md - 参考:
ai_dev_flow/ID_NAMING_STANDARDS.md(セクション単位のファイル分割)
クイックリファレンス
CTR の目的:API コントラクトとデータスキーマを定義します
レイヤー:8(任意)
要素 ID の形式:CTR.NN.xxxx
- インターフェース = 16
- データモデル = 17
- コントラクト条項 = 20
廃止されたパターン:INT-XXX、MODEL-XXX、CLAUSE-XXX、IF-XXX、DM-XXX、CC-XXX
ドキュメント管理フィールド:9 個必須
必須タグ:@brd から @req まで(7 個のタグ)
形式:2 ファイル(.md + .yaml)
SPEC 対応スコア:「Active」ステータスに必要なスコアは ≥90%
YAML 標準:
- REST API には OpenAPI 3.0
- データモデルには JSON Schema
- イベント駆動型には AsyncAPI(該当する場合)
主なセクション:
- コントラクトの概要
- ビジネスコンテキスト(REQ のセクション 3 へのリンク)
- YAML コントラクト定義
- 使用例
- 検証ルール
- エラー処理
ディレクトリ構成:コントラクトが 30 件以上の場合はサブディレクトリを推奨します
任意:コントラクトがシンプルな場合、または REQ に埋め込まれている場合は、このレイヤーを省略します
次へ:doc-spec
バージョン履歴
| バージョン | 日付 | 変更内容 | 作成者 |
|---|---|---|---|
| 1.2 | 2026-03-06 | 12 個の品質ゲートを含む Pre-Commit Hooks サブセクションを追加。フックスクリプトの説明と YAML 設定を追加。バージョンメタデータを更新 | System |
| 1.1.0 | 2026-02-08 | LAYER_REGISTRY v1.6 に基づき、レイヤー割り当てを 9 から 8 に更新。後続の成果物(SPEC レイヤー 9、TSPEC レイヤー 10、TASKS レイヤー 11)を更新。上流から IMPL を削除 | System |
| 1.0.0 | 2025-01-15 | 初期スキル定義 | System |