Requirements Clarity & Acceptance Criteria · v0.1.0 · 2026-07-31 · sha256 cde99092b8f78ad5

Requirements Clarity & Acceptance Criteria v0.1.0A

Immutable. This exact content is served forever at /api/v1/blob/cde99092b8f78ad5.

---
id: 'requirements-acceptance'
name: Requirements Clarity & Acceptance Criteria
description: Ensure requirement docs define scope, terminology, acceptance criteria, edge cases, and non-functional requirements.
version: 0.1.0
category: upstream
phase: upstream
applyTo:
  - 'docs/**/*'
  - 'pages/**/*'
  - '**/*prd*.md'
  - '**/*requirements*.md'
  - '**/*user-story*.md'
  - '**/*spec*.md'
tags: [requirements, product, specification, upstream]
severity: major
inputContext: [diff]
outputKind: [summary, findings, actions, questions]
modelHint: balanced
dependencies: [repo_metadata]
---

## Pattern declaration

Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 要件/仕様ドキュメントの差分から曖昧さ・受け入れ条件の抜けをレビューし、実装ブレや炎上シナリオを逆照射する。

## Goal / 目的

- 要件/仕様ドキュメントの差分から、実装ブレや炎上の原因になりやすい「曖昧さ・抜け」を早期に潰す。

## Non-goals / 扱わないこと

- UI/実装の最適解を断定しない(要件としての決定事項・受け入れ条件に絞る)。
- 仕様が未確定な点を欠陥と断定しない(未決なら “未決の明示” を促す)。

## Pre-execution Gate / 実行前ゲート

このスキルは以下の条件がすべて満たされない限り`NO_REVIEW`を返す。

- [ ] 差分に要件定義・仕様書・PRD・ユーザーストーリーに関するドキュメントが含まれている
- [ ] inputContextにdiffが含まれている

ゲート不成立時の出力: `NO_REVIEW: requirements-acceptance — 要件/仕様ドキュメントの差分がない`

## False-positive guards / 抑制条件

- 差分外の既存仕様まで掘り返して問題視しない(今回の変更と直結する範囲に限定)。

## Rule / ルール

- まず「この文書で何を決めたか/何が未決か」を 1 行で要約する。
- 指摘は最大 8 件まで。優先度の高いもの(実装ブレ・運用事故・テスト不能)を先に出す。
- 可能な限り “質問” ではなく “追記してほしい項目 + 例文(貼れる形)” を出す。

## Checklist / 観点チェックリスト

- 用語とスコープ
  - 用語の定義(ユーザー/権限/対象データ/対象外)が明示されているか。
  - イン/アウトの境界(何をやらないか、既存仕様との違い)が明確か。
- 受け入れ条件
  - Given-When-Then などでテスト可能な受け入れ条件があるか。
  - 正常系だけでなく、代表的な例外系(権限なし/入力不備/データなし/タイムアウト/競合)があるか。
- 非機能
  - 期待性能(レイテンシ/スループット/上限)・可用性/SLO・コスト前提があるか。
  - 監査/ログ/データ保持/プライバシー(PII)などの要求があるか。
- 依存とリスク
  - 外部依存/前提条件(別チーム/既存API/データ整備)が明記されているか。
  - リスクと未決事項(決める期限/意思決定者/判断材料)が書かれているか。

## Output / 出力フォーマット

すべて日本語。`<file>:<line>: <message>` 形式で出力する。

- 先頭に要約を 1 行: `(summary):1: <この文書が決めたこと/未決の要点>`
- 以降は指摘(最大 8 件):
  - `<message>` に `[severity=critical|major|minor|info]` を含める(原則: major 以上を優先)。
  - “追記案” を 1 行で付ける(貼れる短文)。

例:

- `(summary):1: 目的と対象ユーザーは明確だが、受け入れ条件と例外系が未定義。`
- `docs/prd.md:42: [severity=major] 受け入れ条件がテスト可能な形で不足。追記案: Given <前提>, When <操作>, Then <期待結果> を 3〜5 本追加。`

### トレーサビリティ ref の付記(#1666 / #1545 Phase 2)

対象ドキュメントに受け入れ条件 ID・テストケース ID・見出しアンカーが**実在し、判明している場合のみ**、指摘の末尾に次のラベルを付ける。

- `CriterionRefs:` — その指摘が紐づく受け入れ条件 / テストケースの ID(例: `AC-4, TC-7`)。
- `ArtifactRefs:` — その指摘が紐づく artifact のアンカー(例: `docs/prd.md#AC-4`)。

制約は次のとおり。

- **`<file>:<line>:` と同じ行の末尾に置く**。取り込みは行単位で行われ、2 行目以降に書いたラベルは finding へ届かない。
- **ID を捏造しない**。ドキュメントに実在する見出し・ID をそのまま転記する。採番や正規化は行わない(名前空間は River Review が所有しない)。
- **受け入れ条件がまだ存在しない指摘には付けない**。「受け入れ条件が無い」こと自体を指摘する場合は参照先が無いので省略する。
- 値は**空白を含まないトークン**にし、区切りは `,` または `、` を使う。空白区切りの 2 個目以降は取り込まれない。
- **アンカー付きで書く**(`docs/prd.md#AC-4`)。`#` の無い裸のファイルパスは Evidence のファイル参照と区別できず、差分照合の対象に残る(fail-safe)。
- ラベル名は大文字小文字を区別する。`criterionRefs:` のような lowerCamel 表記はラベルとして扱われない。
- 散文の中でラベル名に言及するときは `` `CriterionRefs:` `` のようにバッククォートで囲む。囲まないと構造ラベルとして解釈される。
- 付記は additive なメタデータであり、severity やゲート判定には影響しない。

例: `docs/prd.md:42: [severity=major] AC-4 の期待結果がテスト不能。追記案: Then の観測点を数値で定義。CriterionRefs: AC-4 ArtifactRefs: docs/prd.md#AC-4`

## 評価指標(Evaluation)

- 合格基準: 差分に紐づく曖昧さ/抜けを、優先度付きで短く指摘し、貼れる追記案が付いている。
- 不合格基準: 差分と無関係な一般論、根拠のない断定、指摘の洪水。

## 人間に返す条件(Human Handoff)

- ビジネス判断(優先順位/範囲/コスト)に踏み込む必要がある場合は人間レビューへ返す。