feat: default ピースをテスト先行開発に変更し、レポートファイル名をセマンティック命名に統一

- 全ピースのレポートファイル名から番号プレフィックスを除去(00-plan.md → plan.md 等)
- default ピースに write_tests ムーブメントと testing-review 並列レビューを追加
- プランナーに参照資料の意図判断ルールとスコープ外セクションを追加
This commit is contained in:
nrslib 2026-02-25 01:02:33 +09:00
parent 8372721607
commit 6901b2a121
48 changed files with 305 additions and 179 deletions

View File

@ -4,7 +4,7 @@ Review the reports from each cycle and determine whether this loop
is healthy (making progress) or unproductive (repeating the same issues).
**Reports to reference:**
- AI Review results: {report:03-ai-review.md}
- AI Review results: {report:ai-review.md}
**Judgment criteria:**
- Are new issues being found/fixed in each cycle?

View File

@ -12,6 +12,7 @@ For small tasks, skip the design sections in the report.
**Actions:**
1. Understand the task requirements
- **When reference material points to an external implementation, determine whether it is a "bug fix clue" or a "design approach to adopt". If narrowing scope beyond the reference material's intent, include the rationale in the plan report**
- **For each requirement, determine "change needed / not needed". If "not needed", cite the relevant code (file:line) as evidence. Claiming "already correct" without evidence is prohibited**
2. Investigate code to resolve unknowns
3. Identify the impact area

View File

@ -9,6 +9,6 @@ Review the changes from a test quality perspective.
## Judgment Procedure
1. Cross-reference the test plan report ({report:00-test-plan.md}) with the implemented tests
1. Cross-reference the test plan/test scope reports in the Report Directory with the implemented tests
2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
3. If there is even one blocking issue, judge as REJECT

View File

@ -9,18 +9,15 @@
### Objective
{What needs to be achieved}
### Reference Material Findings (when reference material exists)
{Overview of reference implementation's approach and key differences from current implementation}
### Scope
{Impact area}
### Design Decisions (only when design is needed)
#### File Structure
| File | Role |
|------|------|
| `src/example.ts` | Overview |
#### Design Patterns
- {Adopted patterns and where they apply}
### Approaches Considered (when design decisions exist)
| Approach | Adopted? | Rationale |
|----------|----------|-----------|
### Implementation Approach
{How to proceed}
@ -28,6 +25,10 @@
## Implementation Guidelines (only when design is needed)
- {Guidelines the Coder should follow during implementation}
## Out of Scope (only when items exist)
| Item | Reason for exclusion |
|------|---------------------|
## Open Questions (if any)
- {Unclear points or items that need confirmation}
```

View File

@ -97,6 +97,11 @@ Only plan work that is explicitly stated in the task order. Do not include impli
"Change statuses to 5 values" means "rewrite enum values," NOT "delete flows that seem unnecessary."
Do not over-interpret the task order. Plan only what is written.
**Reference material intent:**
- When the task order specifies external implementations as reference material, determine WHY that reference was specified
- "Fix/improve by referencing X" includes evaluating whether to adopt the reference's design approach
- When narrowing scope beyond the reference material's implied intent, explicitly document the rationale in the plan report
**Bug fix propagation check:**
- After identifying the root cause pattern, grep for the same pattern in related files
- If the same bug exists in other files, include them in scope

View File

@ -34,7 +34,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -93,7 +93,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -31,7 +31,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -92,7 +92,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -159,7 +159,7 @@ movements:
instruction: review-cqrs-es
output_contracts:
report:
- name: 04-cqrs-es-review.md
- name: cqrs-es-review.md
format: cqrs-es-review
- name: security-review
edit: false
@ -178,7 +178,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 05-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -198,7 +198,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -33,7 +33,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -91,7 +91,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -90,7 +90,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -156,7 +156,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: security-review
edit: false
@ -175,7 +175,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 05-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -195,7 +195,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -30,7 +30,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -85,7 +85,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: write_tests
edit: true
@ -61,9 +61,9 @@ movements:
interactive_only: true
output_contracts:
report:
- name: 01-test-scope.md
- name: test-scope.md
format: coder-scope
- name: 01-test-decisions.md
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
@ -118,7 +118,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -1,5 +1,5 @@
name: default
description: Standard development piece with planning and specialized reviews
description: Test-first development piece (plan → write tests → implement → AI review → 3-parallel review → fix → supervise → complete)
piece_config:
provider_options:
codex:
@ -22,7 +22,7 @@ loop_monitors:
is healthy (making progress) or unproductive (repeating the same issues).
**Reports to reference:**
- AI Review results: {report:04-ai-review.md}
- AI Review results: {report:ai-review.md}
**Judgment criteria:**
- Are new issues being found/fixed in each cycle?
@ -47,7 +47,7 @@ movements:
- WebFetch
rules:
- condition: Requirements are clear and implementable
next: implement
next: write_tests
- condition: User is asking a question (not an implementation task)
next: COMPLETE
- condition: Requirements unclear, insufficient info
@ -59,8 +59,43 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: write_tests
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
- condition: Tests written successfully
next: implement
- condition: Cannot proceed with test writing
next: ABORT
- condition: User input needed for clarification
next: write_tests
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: test-scope.md
format: coder-scope
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
persona: coder
@ -92,7 +127,7 @@ movements:
next: implement
requires_user_input: true
interactive_only: true
instruction: implement
instruction: implement-after-tests
output_contracts:
report:
- name: coder-scope.md
@ -119,7 +154,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -185,7 +220,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 05-architect-review.md
- name: architect-review.md
format: architecture-review
- name: qa-review
edit: false
@ -205,8 +240,28 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
rules:
- condition: all("approved")
next: supervise

View File

@ -22,7 +22,7 @@ loop_monitors:
is healthy (making progress) or unproductive (repeating the same issues).
**Reports to reference:**
- AI Review results: {report:04-ai-review.md}
- AI Review results: {report:ai-review.md}
**Judgment criteria:**
- Are new issues being found/fixed in each cycle?
@ -62,7 +62,7 @@ movements:
instruction: plan-e2e-test
output_contracts:
report:
- name: 00-test-plan.md
- name: test-plan.md
format: test-plan
- name: implement_test
edit: true
@ -122,7 +122,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -187,7 +187,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
- name: fix
edit: true

View File

@ -35,7 +35,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -95,7 +95,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -45,7 +45,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -107,7 +107,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -175,7 +175,7 @@ movements:
instruction: review-cqrs-es
output_contracts:
report:
- name: 04-cqrs-es-review.md
- name: cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review
edit: false
@ -194,7 +194,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -213,7 +213,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -233,7 +233,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -34,7 +34,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -93,7 +93,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -44,7 +44,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -105,7 +105,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -172,7 +172,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: frontend-review
edit: false
@ -191,7 +191,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -210,7 +210,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -230,7 +230,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -33,7 +33,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -91,7 +91,7 @@ movements:
- condition: AI-specific issues found
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -90,7 +90,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -156,7 +156,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: frontend-review
edit: false
@ -175,7 +175,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -194,7 +194,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -214,7 +214,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -23,7 +23,7 @@ movements:
instruction: gather-review
output_contracts:
report:
- name: 00-review-target.md
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
@ -52,7 +52,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 01-architecture-review.md
- name: architecture-review.md
format: architecture-review
rules:
- condition: approved
@ -73,7 +73,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 02-security-review.md
- name: security-review.md
format: security-review
rules:
- condition: approved
@ -95,7 +95,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 03-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: approved
@ -117,7 +117,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 04-testing-review.md
- name: testing-review.md
format: testing-review
rules:
- condition: approved
@ -137,7 +137,7 @@ movements:
instruction: review-requirements
output_contracts:
report:
- name: 05-requirements-review.md
- name: requirements-review.md
format: requirements-review
rules:
- condition: approved

View File

@ -22,8 +22,8 @@ loop_monitors:
is making progress or repeating the same issues.
**Reports to reference:**
- Architect review: {report:04-architect-review.md}
- QA review: {report:05-qa-review.md}
- Architect review: {report:architect-review.md}
- QA review: {report:qa-review.md}
**Judgment criteria:**
- Are review findings being addressed in each fix cycle?
@ -236,7 +236,7 @@ movements:
- {Question 2}
output_contracts:
report:
- name: 01-reform-plan.md
- name: reform-plan.md
format: plan
- name: implement
edit: true
@ -295,7 +295,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: qa-review
edit: false
@ -315,7 +315,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")
@ -400,7 +400,7 @@ movements:
next: fix
output_contracts:
report:
- name: 06-verification.md
- name: verification.md
format: validation
- name: next_target
edit: false
@ -420,7 +420,7 @@ movements:
- Movement: next_target (progress check and next target selection)
## Original Reform Plan
{report:01-reform-plan.md}
{report:reform-plan.md}
## Latest Verification
{previous_response}

View File

@ -22,7 +22,7 @@ loop_monitors:
is healthy (making progress) or unproductive (repeating the same issues).
**Reports to reference:**
- AI Review results: {report:04-ai-review.md}
- AI Review results: {report:ai-review.md}
**Judgment criteria:**
- Are new issues being found/fixed in each cycle?
@ -62,7 +62,7 @@ movements:
instruction: plan-test
output_contracts:
report:
- name: 00-test-plan.md
- name: test-plan.md
format: test-plan
- name: implement_test
edit: true
@ -122,7 +122,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -187,7 +187,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
- name: fix
edit: true

View File

@ -4,7 +4,7 @@ ai_review と ai_fix のループが {cycle_count} 回繰り返されました
非生産的(同じ問題を繰り返している)かを判断してください。
**参照するレポート:**
- AIレビュー結果: {report:03-ai-review.md}
- AIレビュー結果: {report:ai-review.md}
**判断基準:**
- 各サイクルで新しい問題が発見・修正されているか

View File

@ -18,6 +18,7 @@
- **指示書に明記されていない別ファイルを「参照資料の代わり」として使うことは禁止**
2. タスクの要件を理解する
- 参照資料の内容と現在の実装を突き合わせて差分を特定する
- **参照資料が外部実装を指す場合、「バグ修正の手がかり」か「採用すべき設計アプローチ」かを判断する。スコープを参照資料の意図より狭める場合は判断根拠を計画レポートに含めること**
- **要件ごとに「変更要/不要」を判定する。「不要」の場合は現行コードの該当箇所(ファイル:行)を根拠として示すこと。根拠なしの「既に正しい」は禁止**
3. コードを調査して不明点を解決する
4. 影響範囲を特定する

View File

@ -9,6 +9,6 @@
## 判定手順
1. テスト計画レポート{report:00-test-plan.md}と実装されたテストを突合する
1. Report Directory内のテスト計画・テストスコープに関するレポートと実装されたテストを突合する
2. 検出した問題ごとに、Policyのスコープ判定表と判定ルールに基づいてブロッキング/非ブロッキングを分類する
3. ブロッキング問題が1件でもあればREJECTと判定する

View File

@ -9,18 +9,15 @@
### 目的
{達成すべきこと}
### 参照資料の調査結果(参照資料がある場合)
{参照資料の実装アプローチの概要と、現在の実装との主要な差異}
### スコープ
{影響範囲}
### 設計判断(設計が必要な場合のみ)
#### ファイル構成
| ファイル | 役割 |
|---------|------|
| `src/example.ts` | 概要 |
#### 設計パターン
- {採用するパターンと適用箇所}
### 検討したアプローチ(設計判断がある場合)
| アプローチ | 採否 | 理由 |
|-----------|------|------|
### 実装アプローチ
{どう進めるか}
@ -28,6 +25,10 @@
## 実装ガイドライン(設計が必要な場合のみ)
- {Coderが実装時に従うべき指針}
## スコープ外(項目がある場合のみ)
| 項目 | 除外理由 |
|------|---------|
## 確認事項(あれば)
- {不明点や確認が必要な点}
```

View File

@ -76,6 +76,11 @@
「ステータスを5つに変更する」は「enum値を書き換える」であり、「不要になったフローを丸ごと削除する」ではない。
タスク指示書の文言を拡大解釈しない。書かれていることだけを計画する。
**参照資料の意図:**
- タスク指示書が外部実装を参照資料に指定している場合、「なぜその参照資料が指定されたか」を判断する
- 「〜を参照して修正・改善する」は、参照資料の設計アプローチの採用可否も検討対象に含まれる
- スコープを参照資料の意図より狭める場合は、その判断根拠を計画レポートに明記する
**バグ修正の波及確認:**
- バグの原因パターンを特定したら、同じパターンが他のファイルにないか grep で確認する
- 同一原因のバグが見つかった場合、修正対象としてスコープに含める

View File

@ -34,7 +34,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -93,7 +93,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -31,7 +31,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -92,7 +92,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -159,7 +159,7 @@ movements:
instruction: review-cqrs-es
output_contracts:
report:
- name: 04-cqrs-es-review.md
- name: cqrs-es-review.md
format: cqrs-es-review
- name: security-review
edit: false
@ -178,7 +178,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 05-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -198,7 +198,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -33,7 +33,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -91,7 +91,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -90,7 +90,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -156,7 +156,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: security-review
edit: false
@ -175,7 +175,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 05-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -195,7 +195,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -30,7 +30,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -85,7 +85,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: write_tests
edit: true
@ -61,9 +61,9 @@ movements:
interactive_only: true
output_contracts:
report:
- name: 01-test-scope.md
- name: test-scope.md
format: coder-scope
- name: 01-test-decisions.md
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
@ -118,7 +118,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -1,5 +1,5 @@
name: default
description: Standard development piece with planning and specialized reviews
description: テスト先行開発ピース(計画 → テスト作成 → 実装 → AIレビュー → 3並列レビュー → 修正 → 監督 → 完了)
piece_config:
provider_options:
codex:
@ -22,7 +22,7 @@ loop_monitors:
非生産的(同じ問題を繰り返している)かを判断してください。
**参照するレポート:**
- AIレビュー結果: {report:04-ai-review.md}
- AIレビュー結果: {report:ai-review.md}
**判断基準:**
- 各サイクルで新しい問題が発見・修正されているか
@ -47,7 +47,7 @@ movements:
- WebFetch
rules:
- condition: 要件が明確で実装可能
next: implement
next: write_tests
- condition: ユーザーが質問をしている(実装タスクではない)
next: COMPLETE
- condition: 要件が不明確、情報不足
@ -59,8 +59,43 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: write_tests
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
- condition: テスト作成が完了した
next: implement
- condition: テスト作成を進行できない
next: ABORT
- condition: ユーザーへの確認事項があるためユーザー入力が必要
next: write_tests
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: test-scope.md
format: coder-scope
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
persona: coder
@ -92,7 +127,7 @@ movements:
next: implement
requires_user_input: true
interactive_only: true
instruction: implement
instruction: implement-after-tests
output_contracts:
report:
- name: coder-scope.md
@ -119,7 +154,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -185,7 +220,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 05-architect-review.md
- name: architect-review.md
format: architecture-review
- name: qa-review
edit: false
@ -205,8 +240,28 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 06-qa-review.md
- name: qa-review.md
format: qa-review
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
rules:
- condition: all("approved")
next: supervise

View File

@ -22,7 +22,7 @@ loop_monitors:
非生産的(同じ問題を繰り返している)かを判断してください。
**参照するレポート:**
- AIレビュー結果: {report:04-ai-review.md}
- AIレビュー結果: {report:ai-review.md}
**判断基準:**
- 各サイクルで新しい問題が発見・修正されているか
@ -62,7 +62,7 @@ movements:
instruction: plan-e2e-test
output_contracts:
report:
- name: 00-test-plan.md
- name: test-plan.md
format: test-plan
- name: implement_test
edit: true
@ -122,7 +122,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -187,7 +187,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
- name: fix
edit: true

View File

@ -35,7 +35,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -95,7 +95,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -45,7 +45,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -107,7 +107,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -175,7 +175,7 @@ movements:
instruction: review-cqrs-es
output_contracts:
report:
- name: 04-cqrs-es-review.md
- name: cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review
edit: false
@ -194,7 +194,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -213,7 +213,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -233,7 +233,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -34,7 +34,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -93,7 +93,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -44,7 +44,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -105,7 +105,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -172,7 +172,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: frontend-review
edit: false
@ -191,7 +191,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -210,7 +210,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -230,7 +230,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -33,7 +33,7 @@ movements:
instruction: plan
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -91,7 +91,7 @@ movements:
- condition: AI特有の問題あり
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: supervise
edit: false

View File

@ -30,7 +30,7 @@ movements:
next: ABORT
output_contracts:
report:
- name: 00-plan.md
- name: plan.md
format: plan
- name: implement
edit: true
@ -90,7 +90,7 @@ movements:
next: ai_fix
output_contracts:
report:
- name: 03-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -156,7 +156,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: frontend-review
edit: false
@ -175,7 +175,7 @@ movements:
instruction: review-frontend
output_contracts:
report:
- name: 05-frontend-review.md
- name: frontend-review.md
format: frontend-review
- name: security-review
edit: false
@ -194,7 +194,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 06-security-review.md
- name: security-review.md
format: security-review
- name: qa-review
edit: false
@ -214,7 +214,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 07-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")

View File

@ -23,7 +23,7 @@ movements:
instruction: gather-review
output_contracts:
report:
- name: 00-review-target.md
- name: review-target.md
format: review-gather
rules:
- condition: レビュー対象の情報収集完了
@ -52,7 +52,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 01-architecture-review.md
- name: architecture-review.md
format: architecture-review
rules:
- condition: approved
@ -73,7 +73,7 @@ movements:
instruction: review-security
output_contracts:
report:
- name: 02-security-review.md
- name: security-review.md
format: security-review
rules:
- condition: approved
@ -95,7 +95,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 03-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: approved
@ -117,7 +117,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 04-testing-review.md
- name: testing-review.md
format: testing-review
rules:
- condition: approved
@ -137,7 +137,7 @@ movements:
instruction: review-requirements
output_contracts:
report:
- name: 05-requirements-review.md
- name: requirements-review.md
format: requirements-review
rules:
- condition: approved

View File

@ -22,8 +22,8 @@ loop_monitors:
同じ問題を繰り返しているかを判断してください。
**参照するレポート:**
- アーキテクチャレビュー: {report:04-architect-review.md}
- QAレビュー: {report:05-qa-review.md}
- アーキテクチャレビュー: {report:architect-review.md}
- QAレビュー: {report:qa-review.md}
**判断基準:**
- 各修正サイクルでレビュー指摘が解消されているか
@ -236,7 +236,7 @@ movements:
- {質問2}
output_contracts:
report:
- name: 01-reform-plan.md
- name: reform-plan.md
format: plan
- name: implement
edit: true
@ -295,7 +295,7 @@ movements:
instruction: review-arch
output_contracts:
report:
- name: 04-architect-review.md
- name: architect-review.md
format: architecture-review
- name: qa-review
edit: false
@ -315,7 +315,7 @@ movements:
instruction: review-qa
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")
@ -400,7 +400,7 @@ movements:
next: fix
output_contracts:
report:
- name: 06-verification.md
- name: verification.md
format: validation
- name: next_target
edit: false
@ -420,7 +420,7 @@ movements:
- ムーブメント: next_target進捗確認と次ターゲット選択
## 改革計画
{report:01-reform-plan.md}
{report:reform-plan.md}
## 最新の検証結果
{previous_response}

View File

@ -22,7 +22,7 @@ loop_monitors:
非生産的(同じ問題を繰り返している)かを判断してください。
**参照するレポート:**
- AIレビュー結果: {report:04-ai-review.md}
- AIレビュー結果: {report:ai-review.md}
**判断基準:**
- 各サイクルで新しい問題が発見・修正されているか
@ -62,7 +62,7 @@ movements:
instruction: plan-test
output_contracts:
report:
- name: 00-test-plan.md
- name: test-plan.md
format: test-plan
- name: implement_test
edit: true
@ -122,7 +122,7 @@ movements:
instruction: ai-review
output_contracts:
report:
- name: 04-ai-review.md
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
@ -187,7 +187,7 @@ movements:
instruction: review-test
output_contracts:
report:
- name: 05-qa-review.md
- name: qa-review.md
format: qa-review
- name: fix
edit: true

View File

@ -153,7 +153,7 @@ movement の `instruction:` キーから指示テンプレートファイルを
### {report:ファイル名} の処理
インストラクション内に `{report:04-ai-review.md}` のような記法がある場合:
インストラクション内に `{report:ai-review.md}` のような記法がある場合:
1. レポートディレクトリ内に対応するレポートファイルがあれば Read で読む
2. 読み込んだ内容をプレースホルダーに展開する
3. ファイルが存在しない場合は「(レポート未作成)」に置換する

View File

@ -71,16 +71,17 @@ describe('default piece parallel reviewers movement', () => {
const reviewersMovement = piece!.movements.find((s) => s.name === 'reviewers');
expect(reviewersMovement).toBeDefined();
expect(reviewersMovement!.parallel).toBeDefined();
expect(reviewersMovement!.parallel).toHaveLength(2);
expect(reviewersMovement!.parallel).toHaveLength(3);
});
it('should have arch-review and qa-review as parallel sub-movements', () => {
it('should have arch-review, qa-review, and testing-review as parallel sub-movements', () => {
const piece = getBuiltinPiece('default', process.cwd());
const reviewersMovement = piece!.movements.find((s) => s.name === 'reviewers')!;
const subMovementNames = reviewersMovement.parallel!.map((s) => s.name);
expect(subMovementNames).toContain('arch-review');
expect(subMovementNames).toContain('qa-review');
expect(subMovementNames).toContain('testing-review');
});
it('should have aggregate conditions on the reviewers parent movement', () => {

View File

@ -165,12 +165,13 @@ describe('Piece Patterns IT: default piece (parallel reviewers)', () => {
setMockScenario([
{ persona: 'planner', status: 'done', content: 'Requirements are clear and implementable' },
{ persona: 'architect-planner', status: 'done', content: 'Design complete' },
{ persona: 'coder', status: 'done', content: 'Tests written successfully' },
{ persona: 'coder', status: 'done', content: 'Implementation complete' },
{ persona: 'ai-antipattern-reviewer', status: 'done', content: 'No AI-specific issues' },
// Parallel reviewers: both approved
// Parallel reviewers: all approved
{ persona: 'architecture-reviewer', status: 'done', content: 'approved' },
{ persona: 'qa-reviewer', status: 'done', content: 'approved' },
{ persona: 'testing-reviewer', status: 'done', content: 'approved' },
// Supervisor
{ persona: 'supervisor', status: 'done', content: 'All checks passed' },
]);
@ -186,19 +187,19 @@ describe('Piece Patterns IT: default piece (parallel reviewers)', () => {
setMockScenario([
{ persona: 'planner', status: 'done', content: 'Requirements are clear and implementable' },
{ persona: 'architect-planner', status: 'done', content: 'Design complete' },
{ persona: 'coder', status: 'done', content: 'Tests written successfully' },
{ persona: 'coder', status: 'done', content: 'Implementation complete' },
{ persona: 'ai-antipattern-reviewer', status: 'done', content: 'No AI-specific issues' },
// Parallel: arch approved, qa needs_fix
// Parallel: arch approved, qa needs_fix, testing approved
{ persona: 'architecture-reviewer', status: 'done', content: 'approved' },
{ persona: 'qa-reviewer', status: 'done', content: 'needs_fix' },
{ persona: 'testing-reviewer', status: 'done', content: 'approved' },
// Fix step
{ persona: 'coder', status: 'done', content: 'Fix complete' },
// AI review after fix
{ persona: 'ai-antipattern-reviewer', status: 'done', content: 'No AI-specific issues' },
// Re-review: both approved
// Re-review: all approved
{ persona: 'architecture-reviewer', status: 'done', content: 'approved' },
{ persona: 'qa-reviewer', status: 'done', content: 'approved' },
{ persona: 'testing-reviewer', status: 'done', content: 'approved' },
// Supervisor
{ persona: 'supervisor', status: 'done', content: 'All checks passed' },
]);

View File

@ -122,7 +122,7 @@ describe('review piece (EN)', () => {
it('should have gather movement with output_contracts for review target', () => {
const gather = raw.movements.find((s: { name: string }) => s.name === 'gather');
expect(gather.output_contracts).toBeDefined();
expect(gather.output_contracts.report[0].name).toBe('00-review-target.md');
expect(gather.output_contracts.report[0].name).toBe('review-target.md');
});
});