takt 0.32.0 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtins/en/facets/instructions/e2e-coverage-implement.md +26 -0
- package/builtins/en/facets/instructions/e2e-coverage-plan.md +38 -0
- package/builtins/en/facets/instructions/e2e-coverage-supervise.md +21 -0
- package/builtins/en/facets/instructions/fix.md +4 -0
- package/builtins/en/facets/instructions/loop-monitor-ai-fix.md +4 -3
- package/builtins/en/facets/instructions/loop-monitor-reviewers-fix.md +4 -2
- package/builtins/en/facets/instructions/plan.md +2 -0
- package/builtins/en/facets/instructions/review-frontend.md +9 -0
- package/builtins/en/facets/instructions/security-audit-plan.md +12 -0
- package/builtins/en/facets/instructions/security-audit-review.md +22 -0
- package/builtins/en/facets/instructions/security-audit-supervise.md +20 -0
- package/builtins/en/facets/instructions/security-audit-team-leader.md +27 -0
- package/builtins/en/facets/knowledge/e2e-testing.md +89 -0
- package/builtins/en/facets/knowledge/frontend.md +46 -0
- package/builtins/en/facets/knowledge/react.md +90 -0
- package/builtins/en/facets/knowledge/unit-testing.md +108 -0
- package/builtins/en/facets/output-contracts/e2e-coverage-plan.md +33 -0
- package/builtins/en/facets/output-contracts/plan-frontend.md +41 -0
- package/builtins/en/facets/output-contracts/plan.md +8 -0
- package/builtins/en/facets/output-contracts/security-audit.md +31 -0
- package/builtins/en/facets/personas/coder.md +1 -0
- package/builtins/en/facets/personas/frontend-reviewer.md +4 -0
- package/builtins/en/facets/policies/ai-antipattern.md +43 -0
- package/builtins/en/facets/policies/coding.md +90 -1
- package/builtins/en/facets/policies/design-fidelity.md +51 -0
- package/builtins/en/facets/policies/design-planning.md +52 -0
- package/builtins/en/facets/policies/qa.md +15 -0
- package/builtins/en/facets/policies/testing.md +54 -1
- package/builtins/en/piece-categories.yaml +3 -2
- package/builtins/en/pieces/backend-cqrs.yaml +5 -0
- package/builtins/en/pieces/backend.yaml +5 -0
- package/builtins/en/pieces/default.yaml +2 -0
- package/builtins/en/pieces/dual-cqrs-mini.yaml +8 -1
- package/builtins/en/pieces/dual-cqrs.yaml +10 -2
- package/builtins/en/pieces/dual-mini.yaml +8 -1
- package/builtins/en/pieces/dual.yaml +14 -2
- package/builtins/en/pieces/{e2e-test.yaml → fill-e2e.yaml} +41 -61
- package/builtins/en/pieces/{unit-test.yaml → fill-unit.yaml} +12 -2
- package/builtins/en/pieces/frontend-mini.yaml +8 -1
- package/builtins/en/pieces/frontend.yaml +25 -3
- package/builtins/en/pieces/review-default.yaml +3 -0
- package/builtins/en/pieces/review-dual-cqrs.yaml +3 -1
- package/builtins/en/pieces/review-dual.yaml +3 -1
- package/builtins/en/pieces/review-fix-default.yaml +3 -0
- package/builtins/en/pieces/review-fix-dual-cqrs.yaml +5 -1
- package/builtins/en/pieces/review-fix-dual.yaml +5 -1
- package/builtins/en/pieces/review-fix-frontend.yaml +5 -1
- package/builtins/en/pieces/review-fix-takt-default.yaml +5 -2
- package/builtins/en/pieces/review-frontend.yaml +3 -1
- package/builtins/en/pieces/review-takt-default.yaml +3 -0
- package/builtins/en/pieces/security-audit.yaml +68 -0
- package/builtins/en/pieces/takt-default.yaml +7 -2
- package/builtins/en/pieces/terraform.yaml +0 -5
- package/builtins/ja/INSTRUCTION_STYLE_GUIDE.md +9 -10
- package/builtins/ja/KNOWLEDGE_STYLE_GUIDE.md +4 -4
- package/builtins/ja/OUTPUT_CONTRACT_STYLE_GUIDE.md +4 -4
- package/builtins/ja/PERSONA_STYLE_GUIDE.md +8 -8
- package/builtins/ja/POLICY_STYLE_GUIDE.md +5 -5
- package/builtins/ja/STYLE_GUIDE.md +8 -26
- package/builtins/ja/facets/instructions/e2e-coverage-implement.md +26 -0
- package/builtins/ja/facets/instructions/e2e-coverage-plan.md +38 -0
- package/builtins/ja/facets/instructions/e2e-coverage-supervise.md +21 -0
- package/builtins/ja/facets/instructions/fix.md +4 -0
- package/builtins/ja/facets/instructions/loop-monitor-ai-fix.md +4 -3
- package/builtins/ja/facets/instructions/loop-monitor-reviewers-fix.md +4 -2
- package/builtins/ja/facets/instructions/plan.md +2 -0
- package/builtins/ja/facets/instructions/review-frontend.md +9 -0
- package/builtins/ja/facets/instructions/security-audit-plan.md +12 -0
- package/builtins/ja/facets/instructions/security-audit-review.md +22 -0
- package/builtins/ja/facets/instructions/security-audit-supervise.md +20 -0
- package/builtins/ja/facets/instructions/security-audit-team-leader.md +27 -0
- package/builtins/ja/facets/knowledge/e2e-testing.md +89 -0
- package/builtins/ja/facets/knowledge/frontend.md +46 -0
- package/builtins/ja/facets/knowledge/react.md +90 -0
- package/builtins/ja/facets/knowledge/unit-testing.md +108 -0
- package/builtins/ja/facets/output-contracts/e2e-coverage-plan.md +33 -0
- package/builtins/ja/facets/output-contracts/plan-frontend.md +41 -0
- package/builtins/ja/facets/output-contracts/plan.md +8 -0
- package/builtins/ja/facets/output-contracts/security-audit.md +31 -0
- package/builtins/ja/facets/personas/coder.md +1 -0
- package/builtins/ja/facets/personas/frontend-reviewer.md +2 -0
- package/builtins/ja/facets/policies/ai-antipattern.md +43 -0
- package/builtins/ja/facets/policies/coding.md +90 -1
- package/builtins/ja/facets/policies/design-fidelity.md +51 -0
- package/builtins/ja/facets/policies/design-planning.md +52 -0
- package/builtins/ja/facets/policies/qa.md +15 -0
- package/builtins/ja/facets/policies/testing.md +54 -1
- package/builtins/ja/piece-categories.yaml +3 -2
- package/builtins/ja/pieces/backend-cqrs.yaml +5 -0
- package/builtins/ja/pieces/backend.yaml +5 -0
- package/builtins/ja/pieces/default.yaml +2 -0
- package/builtins/ja/pieces/dual-cqrs-mini.yaml +8 -1
- package/builtins/ja/pieces/dual-cqrs.yaml +10 -2
- package/builtins/ja/pieces/dual-mini.yaml +8 -1
- package/builtins/ja/pieces/dual.yaml +14 -2
- package/builtins/ja/pieces/{e2e-test.yaml → fill-e2e.yaml} +40 -60
- package/builtins/ja/pieces/{unit-test.yaml → fill-unit.yaml} +12 -2
- package/builtins/ja/pieces/frontend-mini.yaml +8 -1
- package/builtins/ja/pieces/frontend.yaml +25 -3
- package/builtins/ja/pieces/review-default.yaml +3 -0
- package/builtins/ja/pieces/review-dual-cqrs.yaml +3 -1
- package/builtins/ja/pieces/review-dual.yaml +3 -1
- package/builtins/ja/pieces/review-fix-default.yaml +3 -0
- package/builtins/ja/pieces/review-fix-dual-cqrs.yaml +5 -1
- package/builtins/ja/pieces/review-fix-dual.yaml +5 -1
- package/builtins/ja/pieces/review-fix-frontend.yaml +5 -1
- package/builtins/ja/pieces/review-fix-takt-default.yaml +5 -2
- package/builtins/ja/pieces/review-frontend.yaml +3 -1
- package/builtins/ja/pieces/review-takt-default.yaml +3 -0
- package/builtins/ja/pieces/security-audit.yaml +68 -0
- package/builtins/ja/pieces/takt-default.yaml +7 -2
- package/builtins/ja/pieces/terraform.yaml +0 -5
- package/dist/app/cli/routing.js +1 -1
- package/dist/app/cli/routing.js.map +1 -1
- package/dist/core/models/config-types.d.ts +4 -0
- package/dist/core/models/config-types.d.ts.map +1 -1
- package/dist/core/models/schemas.d.ts +4 -0
- package/dist/core/models/schemas.d.ts.map +1 -1
- package/dist/core/models/schemas.js +4 -0
- package/dist/core/models/schemas.js.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.d.ts +1 -0
- package/dist/core/piece/engine/MovementExecutor.d.ts.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.js +8 -4
- package/dist/core/piece/engine/MovementExecutor.js.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.d.ts.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.js +4 -1
- package/dist/core/piece/engine/OptionsBuilder.js.map +1 -1
- package/dist/features/config/deploySkillInternal.d.ts.map +1 -1
- package/dist/features/config/deploySkillInternal.js +2 -6
- package/dist/features/config/deploySkillInternal.js.map +1 -1
- package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.js +4 -15
- package/dist/features/interactive/conversationLoop.js.map +1 -1
- package/dist/features/pipeline/steps.d.ts.map +1 -1
- package/dist/features/pipeline/steps.js +5 -1
- package/dist/features/pipeline/steps.js.map +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +11 -3
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigCore.js +11 -8
- package/dist/infra/config/global/globalConfigCore.js.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.js +6 -0
- package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
- package/dist/infra/config/pathExpansion.d.ts +3 -0
- package/dist/infra/config/pathExpansion.d.ts.map +1 -0
- package/dist/infra/config/pathExpansion.js +15 -0
- package/dist/infra/config/pathExpansion.js.map +1 -0
- package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfig.js +15 -2
- package/dist/infra/config/project/projectConfig.js.map +1 -1
- package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
- package/dist/infra/config/resolveConfigValue.js +4 -1
- package/dist/infra/config/resolveConfigValue.js.map +1 -1
- package/dist/infra/cursor/client.js +1 -1
- package/dist/infra/cursor/client.js.map +1 -1
- package/dist/infra/github/pr.d.ts.map +1 -1
- package/dist/infra/github/pr.js +36 -8
- package/dist/infra/github/pr.js.map +1 -1
- package/dist/infra/resources/index.d.ts +5 -6
- package/dist/infra/resources/index.d.ts.map +1 -1
- package/dist/infra/resources/index.js +5 -6
- package/dist/infra/resources/index.js.map +1 -1
- package/dist/infra/task/autoCommit.d.ts.map +1 -1
- package/dist/infra/task/autoCommit.js +5 -1
- package/dist/infra/task/autoCommit.js.map +1 -1
- package/dist/infra/task/clone.d.ts +2 -1
- package/dist/infra/task/clone.d.ts.map +1 -1
- package/dist/infra/task/clone.js +5 -2
- package/dist/infra/task/clone.js.map +1 -1
- package/dist/infra/task/git.d.ts +5 -1
- package/dist/infra/task/git.d.ts.map +1 -1
- package/dist/infra/task/git.js +51 -3
- package/dist/infra/task/git.js.map +1 -1
- package/dist/infra/task/index.d.ts +1 -1
- package/dist/infra/task/index.d.ts.map +1 -1
- package/dist/infra/task/index.js +1 -1
- package/dist/infra/task/index.js.map +1 -1
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/shared/utils/index.d.ts.map +1 -1
- package/dist/shared/utils/index.js +1 -0
- package/dist/shared/utils/index.js.map +1 -1
- package/dist/shared/utils/pathBoundary.d.ts +2 -0
- package/dist/shared/utils/pathBoundary.d.ts.map +1 -0
- package/dist/shared/utils/pathBoundary.js +10 -0
- package/dist/shared/utils/pathBoundary.js.map +1 -0
- package/package.json +2 -2
- package/builtins/en/facets/instructions/implement-e2e-test.md +0 -51
- package/builtins/en/facets/instructions/plan-e2e-test.md +0 -11
- package/builtins/en/templates/instructions/ai-fix.md +0 -74
- package/builtins/en/templates/instructions/ai-review-standalone.md +0 -47
- package/builtins/en/templates/instructions/arbitrate.md +0 -45
- package/builtins/en/templates/instructions/architect.md +0 -48
- package/builtins/en/templates/instructions/fix.md +0 -86
- package/builtins/en/templates/instructions/implement.md +0 -102
- package/builtins/en/templates/instructions/plan.md +0 -55
- package/builtins/en/templates/instructions/review.md +0 -101
- package/builtins/en/templates/instructions/supervise.md +0 -106
- package/builtins/en/templates/personas/character.md +0 -45
- package/builtins/en/templates/personas/expert.md +0 -68
- package/builtins/en/templates/personas/simple.md +0 -22
- package/builtins/en/templates/policies/policy.md +0 -49
- package/builtins/en/templates/reports/architecture-design.md +0 -31
- package/builtins/en/templates/reports/plan.md +0 -70
- package/builtins/en/templates/reports/review.md +0 -143
- package/builtins/en/templates/reports/security-review.md +0 -43
- package/builtins/en/templates/reports/summary.md +0 -52
- package/builtins/en/templates/reports/validation.md +0 -31
- package/builtins/ja/facets/instructions/implement-e2e-test.md +0 -51
- package/builtins/ja/facets/instructions/plan-e2e-test.md +0 -11
- package/builtins/ja/templates/instructions/ai-fix.md +0 -74
- package/builtins/ja/templates/instructions/ai-review-standalone.md +0 -47
- package/builtins/ja/templates/instructions/arbitrate.md +0 -45
- package/builtins/ja/templates/instructions/architect.md +0 -48
- package/builtins/ja/templates/instructions/fix.md +0 -86
- package/builtins/ja/templates/instructions/implement.md +0 -102
- package/builtins/ja/templates/instructions/plan.md +0 -55
- package/builtins/ja/templates/instructions/review.md +0 -101
- package/builtins/ja/templates/instructions/supervise.md +0 -106
- package/builtins/ja/templates/knowledge/knowledge.md +0 -39
- package/builtins/ja/templates/output-contracts/architecture-design.md +0 -31
- package/builtins/ja/templates/output-contracts/plan.md +0 -70
- package/builtins/ja/templates/output-contracts/review.md +0 -143
- package/builtins/ja/templates/output-contracts/security-review.md +0 -43
- package/builtins/ja/templates/output-contracts/summary.md +0 -52
- package/builtins/ja/templates/output-contracts/validation.md +0 -31
- package/builtins/ja/templates/personas/character.md +0 -43
- package/builtins/ja/templates/personas/expert.md +0 -21
- package/builtins/ja/templates/personas/simple.md +0 -22
- package/builtins/ja/templates/policies/policy.md +0 -49
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# ai-fix -- AI Issue Fix Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Fix issues identified by AI Review
|
|
4
|
-
> **Agent**: coder
|
|
5
|
-
> **Feature**: Built-in countermeasures against the "already fixed" false recognition bug
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
**This is AI Review round {movement_iteration}.**
|
|
13
|
-
|
|
14
|
-
If this is round 2 or later, the previous fixes were NOT actually applied.
|
|
15
|
-
**Your belief that they were "already fixed" is wrong.**
|
|
16
|
-
|
|
17
|
-
**First, acknowledge:**
|
|
18
|
-
- The files you thought were "fixed" were NOT actually modified
|
|
19
|
-
- Your memory of the previous work is incorrect
|
|
20
|
-
- You need to rethink from scratch
|
|
21
|
-
|
|
22
|
-
**Required actions:**
|
|
23
|
-
1. Open ALL flagged files with the Read tool (abandon assumptions, verify facts)
|
|
24
|
-
2. Search for the problem locations with grep to confirm they exist
|
|
25
|
-
3. Fix confirmed issues with the Edit tool
|
|
26
|
-
4. Run tests to verify
|
|
27
|
-
5. Report specifically "what you verified and what you fixed"
|
|
28
|
-
|
|
29
|
-
**Report format:**
|
|
30
|
-
- NG: "Already fixed"
|
|
31
|
-
- OK: "Checked file X at L123, found issue Y, fixed by changing to Z"
|
|
32
|
-
|
|
33
|
-
**Strictly prohibited:**
|
|
34
|
-
- Reporting "already fixed" without opening the file
|
|
35
|
-
- Making assumptions without verification
|
|
36
|
-
- Ignoring issues that the AI Reviewer REJECTed
|
|
37
|
-
|
|
38
|
-
**Handling "no fix needed" (required)**
|
|
39
|
-
- Do not judge "no fix needed" unless you can show verification results for the target file of each issue
|
|
40
|
-
- If the issue relates to "generated artifacts" or "spec synchronization", output the tag corresponding to "cannot determine" if you cannot verify the source/spec
|
|
41
|
-
- If no fix is needed, output the tag corresponding to "cannot determine" and clearly state the reason and verification scope
|
|
42
|
-
|
|
43
|
-
**Required output (include headings)**
|
|
44
|
-
## Files checked
|
|
45
|
-
- {file_path:line_number}
|
|
46
|
-
## Searches performed
|
|
47
|
-
- {command and summary}
|
|
48
|
-
## Fix details
|
|
49
|
-
- {changes made}
|
|
50
|
-
## Test results
|
|
51
|
-
- {command and results}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Typical rules
|
|
57
|
-
|
|
58
|
-
```yaml
|
|
59
|
-
rules:
|
|
60
|
-
- condition: AI issue fixes completed
|
|
61
|
-
next: ai_review
|
|
62
|
-
- condition: No fix needed (target files/specs verified)
|
|
63
|
-
next: ai_no_fix
|
|
64
|
-
- condition: Cannot determine, insufficient information
|
|
65
|
-
next: ai_no_fix
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Notes
|
|
71
|
-
|
|
72
|
-
Use this template as-is across all pieces. There are no customization points.
|
|
73
|
-
The bug where AI falsely believes fixes were "already applied" is a model-wide issue;
|
|
74
|
-
modifying or omitting the countermeasure text directly degrades quality.
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# ai-review-standalone -- AI Review (Standalone) Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Specialized review of AI-generated code (runs as an independent movement with iteration tracking)
|
|
4
|
-
> **Agent**: ai-antipattern-reviewer
|
|
5
|
-
> **For parallel sub-step use, see variation B in `review.md`**
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
**This is AI Review round {movement_iteration}.**
|
|
13
|
-
|
|
14
|
-
On the first round, review comprehensively and report all issues.
|
|
15
|
-
On round 2 and later, prioritize verifying whether previously REJECTed items have been fixed.
|
|
16
|
-
|
|
17
|
-
Review the code for AI-specific issues:
|
|
18
|
-
- Assumption verification
|
|
19
|
-
- Plausible but incorrect patterns
|
|
20
|
-
- Compatibility with the existing codebase
|
|
21
|
-
- Scope creep detection
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Differences from parallel sub-step
|
|
27
|
-
|
|
28
|
-
| | standalone | parallel sub-step |
|
|
29
|
-
|--|-----------|-------------------|
|
|
30
|
-
| Iteration tracking | Yes (`{movement_iteration}`) | No |
|
|
31
|
-
| First/subsequent instruction branching | Yes | No |
|
|
32
|
-
| Next movement | ai_fix or reviewers | Parent movement decides |
|
|
33
|
-
|
|
34
|
-
Standalone is for pieces that form an ai_review -> ai_fix loop.
|
|
35
|
-
Parallel sub-steps use variation B from review.md.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Typical rules
|
|
40
|
-
|
|
41
|
-
```yaml
|
|
42
|
-
rules:
|
|
43
|
-
- condition: No AI-specific issues
|
|
44
|
-
next: reviewers
|
|
45
|
-
- condition: AI-specific issues found
|
|
46
|
-
next: ai_fix
|
|
47
|
-
```
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# arbitrate -- Arbitration Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Arbitrate when the reviewer and coder disagree
|
|
4
|
-
> **Agent**: architecture-reviewer (as a neutral third party)
|
|
5
|
-
> **Prerequisite**: ai_fix judged "no fix needed" -> resolve the contradiction with the reviewer's findings
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
ai_review (reviewer) and ai_fix (coder) disagree.
|
|
13
|
-
|
|
14
|
-
- ai_review identified issues and REJECTed
|
|
15
|
-
- ai_fix verified and judged "no fix needed"
|
|
16
|
-
|
|
17
|
-
Review both outputs and arbitrate which judgment is valid.
|
|
18
|
-
|
|
19
|
-
**Reports to review:**
|
|
20
|
-
- AI review results: {report:ai-review.md}
|
|
21
|
-
|
|
22
|
-
**Judgment criteria:**
|
|
23
|
-
- Are ai_review's findings specific and pointing to real issues in the code?
|
|
24
|
-
- Does ai_fix's rebuttal have evidence (file verification results, test results)?
|
|
25
|
-
- Are the findings non-blocking (record only) level, or do they actually require fixes?
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Typical rules
|
|
31
|
-
|
|
32
|
-
```yaml
|
|
33
|
-
rules:
|
|
34
|
-
- condition: ai_review's findings are valid (should be fixed)
|
|
35
|
-
next: ai_fix
|
|
36
|
-
- condition: ai_fix's judgment is valid (no fix needed)
|
|
37
|
-
next: reviewers
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Notes
|
|
43
|
-
|
|
44
|
-
- Change the report reference filename according to the piece
|
|
45
|
-
- Use a third party for arbitration, not the reviewer or coder themselves
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# architect -- Architecture Design Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Architecture design (make design decisions based on the plan report)
|
|
4
|
-
> **Agent**: architect
|
|
5
|
-
> **Prerequisite**: Runs after the plan movement
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Read the plan report ({report:plan.md}) and perform the architecture design.
|
|
13
|
-
|
|
14
|
-
**Criteria for small tasks:**
|
|
15
|
-
- Only 1-2 file changes
|
|
16
|
-
- No design decisions needed
|
|
17
|
-
- No technology selection needed
|
|
18
|
-
|
|
19
|
-
For small tasks, skip the design report and
|
|
20
|
-
match the rule for "Small task (no design needed)".
|
|
21
|
-
|
|
22
|
-
**Tasks requiring design:**
|
|
23
|
-
- 3 or more file changes
|
|
24
|
-
- Adding new modules or features
|
|
25
|
-
- Technology selection required
|
|
26
|
-
- Architecture pattern decisions needed
|
|
27
|
-
|
|
28
|
-
**Actions:**
|
|
29
|
-
1. Evaluate the task scope
|
|
30
|
-
2. Determine file structure
|
|
31
|
-
3. Technology selection (if needed)
|
|
32
|
-
4. Choose design patterns
|
|
33
|
-
5. Create implementation guidelines for the Coder
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Typical rules
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
rules:
|
|
42
|
-
- condition: Small task (no design needed)
|
|
43
|
-
next: implement
|
|
44
|
-
- condition: Design complete
|
|
45
|
-
next: implement
|
|
46
|
-
- condition: Insufficient information, cannot determine
|
|
47
|
-
next: ABORT
|
|
48
|
-
```
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# fix -- Review Fix Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Fix issues identified by reviewers
|
|
4
|
-
> **Agent**: coder
|
|
5
|
-
> **Variations**: General fix / Supervise fix
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template (General fix)
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Address the reviewer feedback.
|
|
13
|
-
Check the session conversation history and fix the issues raised by reviewers.
|
|
14
|
-
|
|
15
|
-
{Customize: Add report references for multiple reviews}
|
|
16
|
-
**Review the review results:**
|
|
17
|
-
- AI Review: {report:ai-review.md}
|
|
18
|
-
- Architecture Review: {report:architecture-review.md}
|
|
19
|
-
|
|
20
|
-
{Customize: For multiple reviews}
|
|
21
|
-
**Important:** Fix ALL issues from ALL reviews without omission.
|
|
22
|
-
|
|
23
|
-
**Required output (include headings)**
|
|
24
|
-
## Work results
|
|
25
|
-
- {Summary of work performed}
|
|
26
|
-
## Changes made
|
|
27
|
-
- {Summary of changes}
|
|
28
|
-
## Test results
|
|
29
|
-
- {Command and results}
|
|
30
|
-
## Evidence
|
|
31
|
-
- {List of verified files/searches/diffs/logs}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Template (Supervise fix)
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
Fix the issues raised by the supervisor.
|
|
40
|
-
|
|
41
|
-
The supervisor identified problems from a holistic perspective.
|
|
42
|
-
Address items in order of priority.
|
|
43
|
-
|
|
44
|
-
**Required output (include headings)**
|
|
45
|
-
## Work results
|
|
46
|
-
- {Summary of work performed}
|
|
47
|
-
## Changes made
|
|
48
|
-
- {Summary of changes}
|
|
49
|
-
## Test results
|
|
50
|
-
- {Command and results}
|
|
51
|
-
## Evidence
|
|
52
|
-
- {List of verified files/searches/diffs/logs}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Unified required output sections
|
|
58
|
-
|
|
59
|
-
All fix-type movements require these 4 output sections:
|
|
60
|
-
|
|
61
|
-
| Section | Purpose |
|
|
62
|
-
|---------|---------|
|
|
63
|
-
| Work results | Summary of what was done |
|
|
64
|
-
| Changes made | Specific changes |
|
|
65
|
-
| Test results | Verification results |
|
|
66
|
-
| Evidence | Verified facts (files, searches, diffs) |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Typical rules
|
|
71
|
-
|
|
72
|
-
```yaml
|
|
73
|
-
# General fix
|
|
74
|
-
rules:
|
|
75
|
-
- condition: Fixes completed
|
|
76
|
-
next: reviewers
|
|
77
|
-
- condition: Cannot determine, insufficient information
|
|
78
|
-
next: plan
|
|
79
|
-
|
|
80
|
-
# Supervise fix
|
|
81
|
-
rules:
|
|
82
|
-
- condition: Supervisor's issues have been fixed
|
|
83
|
-
next: supervise
|
|
84
|
-
- condition: Cannot proceed with fixes
|
|
85
|
-
next: plan
|
|
86
|
-
```
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# implement -- Implementation Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Coding and test execution
|
|
4
|
-
> **Agent**: coder
|
|
5
|
-
> **Reports**: Scope + Decisions (format embedded in template)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
{Customize: Adjust based on the source movement}
|
|
13
|
-
Implement according to the plan from the plan movement.
|
|
14
|
-
|
|
15
|
-
**Reports to reference:**
|
|
16
|
-
- Plan: {report:plan.md}
|
|
17
|
-
{Customize: Add if architect movement exists}
|
|
18
|
-
- Design: {report:architecture.md} (if exists)
|
|
19
|
-
|
|
20
|
-
Only reference files within the Report Directory shown in Piece Context.
|
|
21
|
-
Do not search or reference other report directories.
|
|
22
|
-
|
|
23
|
-
{Customize: Add if architect exists}
|
|
24
|
-
**Important:** Do not make design decisions; follow the design determined in the architect movement.
|
|
25
|
-
Report any unclear points or need for design changes.
|
|
26
|
-
|
|
27
|
-
**Important**: Add unit tests alongside implementation.
|
|
28
|
-
- Add unit tests for newly created classes/functions
|
|
29
|
-
- Update relevant tests when modifying existing code
|
|
30
|
-
- Test file placement: follow the project's conventions
|
|
31
|
-
- Running tests is mandatory. After implementation, always run tests and verify results
|
|
32
|
-
|
|
33
|
-
**Scope output contract (create at implementation start):**
|
|
34
|
-
```markdown
|
|
35
|
-
# Change Scope Declaration
|
|
36
|
-
|
|
37
|
-
## Task
|
|
38
|
-
{One-line task summary}
|
|
39
|
-
|
|
40
|
-
## Planned Changes
|
|
41
|
-
| Type | File |
|
|
42
|
-
|------|------|
|
|
43
|
-
| Create | `src/example.ts` |
|
|
44
|
-
| Modify | `src/routes.ts` |
|
|
45
|
-
|
|
46
|
-
## Estimated Size
|
|
47
|
-
Small / Medium / Large
|
|
48
|
-
|
|
49
|
-
## Impact Area
|
|
50
|
-
- {Affected modules or features}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Decisions output contract (at implementation end, only when decisions were made):**
|
|
54
|
-
```markdown
|
|
55
|
-
# Decision Log
|
|
56
|
-
|
|
57
|
-
## 1. {Decision}
|
|
58
|
-
- **Background**: {Why the decision was needed}
|
|
59
|
-
- **Options considered**: {List of options}
|
|
60
|
-
- **Rationale**: {Why this was chosen}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Required output (include headings)**
|
|
64
|
-
## Work results
|
|
65
|
-
- {Summary of work performed}
|
|
66
|
-
## Changes made
|
|
67
|
-
- {Summary of changes}
|
|
68
|
-
## Test results
|
|
69
|
-
- {Command and results}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Typical rules
|
|
75
|
-
|
|
76
|
-
```yaml
|
|
77
|
-
rules:
|
|
78
|
-
- condition: Implementation complete
|
|
79
|
-
next: {ai_review or reviewers}
|
|
80
|
-
- condition: Implementation not started (report only)
|
|
81
|
-
next: {ai_review or reviewers}
|
|
82
|
-
- condition: Cannot determine, insufficient information
|
|
83
|
-
next: {ai_review or reviewers}
|
|
84
|
-
- condition: User input needed
|
|
85
|
-
next: implement
|
|
86
|
-
requires_user_input: true
|
|
87
|
-
interactive_only: true
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Report settings
|
|
93
|
-
|
|
94
|
-
```yaml
|
|
95
|
-
report:
|
|
96
|
-
- Scope: coder-scope.md
|
|
97
|
-
- Decisions: coder-decisions.md
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**Note**: Do not add sequence numbers to report filenames.
|
|
101
|
-
Use `coder-scope.md`, not `02-coder-scope.md`.
|
|
102
|
-
Sequence numbers depend on piece structure and hinder template reuse.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# plan -- Planning Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Task analysis, requirements gathering, implementation strategy
|
|
4
|
-
> **Agent**: planner, architect-planner
|
|
5
|
-
> **Customization points**: Indicated by `{Customize:}`
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Analyze the task and create an implementation plan.
|
|
13
|
-
|
|
14
|
-
**Note:** If Previous Response is present, this is a replan;
|
|
15
|
-
revise the plan based on its content.
|
|
16
|
-
|
|
17
|
-
{Customize: Handling unknowns -- add the following when using architect-planner}
|
|
18
|
-
**Handling unknowns (important):**
|
|
19
|
-
If there are unclear points in the task, investigate by reading the code and resolve them yourself.
|
|
20
|
-
Only judge as "unclear" for external factors that cannot be resolved through investigation (e.g., user intent is ambiguous).
|
|
21
|
-
|
|
22
|
-
**Actions:**
|
|
23
|
-
1. Understand the task requirements
|
|
24
|
-
2. {Customize: Add related code investigation if needed}
|
|
25
|
-
3. Identify the impact scope
|
|
26
|
-
4. Decide on the implementation approach
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Variations
|
|
32
|
-
|
|
33
|
-
### A. Standard plan (using planner)
|
|
34
|
-
|
|
35
|
-
Planning only. Design is delegated to the architect movement.
|
|
36
|
-
|
|
37
|
-
### B. Plan + design (using architect-planner)
|
|
38
|
-
|
|
39
|
-
For lightweight pieces that omit the architect movement.
|
|
40
|
-
Use architect-planner instead of planner to include design decisions in the plan.
|
|
41
|
-
Add self-resolution instructions for unknowns.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Typical rules
|
|
46
|
-
|
|
47
|
-
```yaml
|
|
48
|
-
rules:
|
|
49
|
-
- condition: Requirements are clear and implementable
|
|
50
|
-
next: {implement or architect}
|
|
51
|
-
- condition: User is asking a question (not an implementation task)
|
|
52
|
-
next: COMPLETE
|
|
53
|
-
- condition: Requirements are unclear, insufficient information
|
|
54
|
-
next: ABORT
|
|
55
|
-
```
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# review -- Review Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Review within parallel sub-steps (general purpose)
|
|
4
|
-
> **Agent**: architecture-reviewer, qa-reviewer, security-reviewer, frontend-reviewer, ai-antipattern-reviewer, etc.
|
|
5
|
-
> **Feature**: Personas carry domain knowledge, so instructions can be minimal
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template (Basic form)
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
{Customize: One sentence describing the review focus}
|
|
13
|
-
Focus on **{review name}** review.
|
|
14
|
-
{Customize: Add exclusions if applicable}
|
|
15
|
-
Do not review AI-specific issues (handled in the ai_review movement).
|
|
16
|
-
|
|
17
|
-
{Customize: Add if reference reports exist}
|
|
18
|
-
**Reports to reference:**
|
|
19
|
-
- Plan: {report:plan.md}
|
|
20
|
-
- Implementation scope: {report:coder-scope.md}
|
|
21
|
-
|
|
22
|
-
**Review aspects:**
|
|
23
|
-
{Customize: Aspect list based on persona expertise}
|
|
24
|
-
- {Aspect 1}
|
|
25
|
-
- {Aspect 2}
|
|
26
|
-
- {Aspect 3}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Variations
|
|
32
|
-
|
|
33
|
-
### A. Architecture review
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
Focus on **architecture and design** review.
|
|
37
|
-
Do not review AI-specific issues (handled in the ai_review movement).
|
|
38
|
-
|
|
39
|
-
**Reports to reference:**
|
|
40
|
-
- Plan: {report:plan.md}
|
|
41
|
-
- Implementation scope: {report:coder-scope.md}
|
|
42
|
-
|
|
43
|
-
**Review aspects:**
|
|
44
|
-
- Consistency with plan/design
|
|
45
|
-
- Code quality
|
|
46
|
-
- Appropriateness of change scope
|
|
47
|
-
- Test coverage
|
|
48
|
-
- Dead code
|
|
49
|
-
- Call chain verification
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### B. AI review (parallel sub-step)
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Review the code for AI-specific issues:
|
|
56
|
-
- Assumption verification
|
|
57
|
-
- Plausible but incorrect patterns
|
|
58
|
-
- Compatibility with the existing codebase
|
|
59
|
-
- Scope creep detection
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### C. Security review
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
Review changes from a security perspective. Check for these vulnerabilities:
|
|
66
|
-
- Injection attacks (SQL, command, XSS)
|
|
67
|
-
- Authentication/authorization flaws
|
|
68
|
-
- Data exposure risks
|
|
69
|
-
- Cryptographic weaknesses
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### D. QA review
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
Review changes from a quality assurance perspective.
|
|
76
|
-
|
|
77
|
-
**Review aspects:**
|
|
78
|
-
- Test coverage and quality
|
|
79
|
-
- Testing strategy (unit/integration/E2E)
|
|
80
|
-
- Error handling
|
|
81
|
-
- Logging and monitoring
|
|
82
|
-
- Maintainability
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Design principles
|
|
88
|
-
|
|
89
|
-
- **Keep instructions minimal**: Personas carry domain expertise, so instructions only specify the review target and focus
|
|
90
|
-
- **Aspect lists may overlap with persona**: The instruction's aspect list serves as a reminder to the agent
|
|
91
|
-
- **State exclusions explicitly**: Use instructions to define responsibility boundaries between reviewers
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Typical rules
|
|
96
|
-
|
|
97
|
-
```yaml
|
|
98
|
-
rules:
|
|
99
|
-
- condition: approved
|
|
100
|
-
- condition: needs_fix
|
|
101
|
-
```
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
# supervise -- Final Verification Instruction Template
|
|
2
|
-
|
|
3
|
-
> **Purpose**: Run tests/builds, verify all review results, give final approval
|
|
4
|
-
> **Agent**: supervisor, dual-supervisor
|
|
5
|
-
> **Reports**: Validation + Summary (format embedded in template)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Template
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Run tests, verify builds, and perform final approval.
|
|
13
|
-
|
|
14
|
-
{Customize: Review pass status -- for dual pieces where all reviews have passed}
|
|
15
|
-
## Previous Reviews Summary
|
|
16
|
-
Reaching this movement means all of the following reviews have been APPROVED:
|
|
17
|
-
{Customize: Actual review list}
|
|
18
|
-
- AI Review: APPROVED
|
|
19
|
-
- Architecture Review: APPROVED
|
|
20
|
-
|
|
21
|
-
**Full piece verification:**
|
|
22
|
-
1. Does the implementation match the plan ({report:plan.md}) {Customize: Add design report if applicable}?
|
|
23
|
-
2. Have all review movement findings been addressed?
|
|
24
|
-
3. Has the original task objective been achieved?
|
|
25
|
-
|
|
26
|
-
**Report verification:** Read all reports in the Report Directory and
|
|
27
|
-
check for any unaddressed improvement suggestions.
|
|
28
|
-
|
|
29
|
-
**Validation output contract:**
|
|
30
|
-
```markdown
|
|
31
|
-
# Final Verification Results
|
|
32
|
-
|
|
33
|
-
## Result: APPROVE / REJECT
|
|
34
|
-
|
|
35
|
-
## Verification Summary
|
|
36
|
-
| Item | Status | Verification Method |
|
|
37
|
-
|------|--------|-------------------|
|
|
38
|
-
| Requirements met | Pass | Compared against requirements list |
|
|
39
|
-
| Tests | Pass | `npm test` (N passed) |
|
|
40
|
-
| Build | Pass | `npm run build` succeeded |
|
|
41
|
-
| Functional check | Pass | Main flow verified |
|
|
42
|
-
|
|
43
|
-
## Artifacts
|
|
44
|
-
- Created: {created files}
|
|
45
|
-
- Modified: {modified files}
|
|
46
|
-
|
|
47
|
-
## Incomplete items (if REJECT)
|
|
48
|
-
| # | Item | Reason |
|
|
49
|
-
|---|------|--------|
|
|
50
|
-
| 1 | {item} | {reason} |
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Summary output contract (APPROVE only):**
|
|
54
|
-
```markdown
|
|
55
|
-
# Task Completion Summary
|
|
56
|
-
|
|
57
|
-
## Task
|
|
58
|
-
{Original request in 1-2 sentences}
|
|
59
|
-
|
|
60
|
-
## Result
|
|
61
|
-
Complete
|
|
62
|
-
|
|
63
|
-
## Changes
|
|
64
|
-
| Type | File | Description |
|
|
65
|
-
|------|------|-------------|
|
|
66
|
-
| Create | `src/file.ts` | Description |
|
|
67
|
-
|
|
68
|
-
## Review Results
|
|
69
|
-
| Review | Result |
|
|
70
|
-
|--------|--------|
|
|
71
|
-
{Customize: Adjust list based on the piece's review structure}
|
|
72
|
-
| AI Review | APPROVE |
|
|
73
|
-
| Architecture | APPROVE |
|
|
74
|
-
| Supervisor | APPROVE |
|
|
75
|
-
|
|
76
|
-
## Verification Commands
|
|
77
|
-
```bash
|
|
78
|
-
npm test
|
|
79
|
-
npm run build
|
|
80
|
-
```
|
|
81
|
-
```
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Typical rules
|
|
87
|
-
|
|
88
|
-
```yaml
|
|
89
|
-
rules:
|
|
90
|
-
- condition: All checks passed
|
|
91
|
-
next: COMPLETE
|
|
92
|
-
- condition: Requirements not met, test failure, build error
|
|
93
|
-
next: plan # or fix_supervisor
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Report settings
|
|
99
|
-
|
|
100
|
-
```yaml
|
|
101
|
-
report:
|
|
102
|
-
- Validation: supervisor-validation.md
|
|
103
|
-
- Summary: summary.md
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Note**: Do not add sequence numbers to report filenames.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# {Character Name}
|
|
2
|
-
|
|
3
|
-
You are {Character Name} of {System Name}. {One sentence describing the character's personality and traits}.
|
|
4
|
-
|
|
5
|
-
## Role Boundaries
|
|
6
|
-
|
|
7
|
-
**Do:**
|
|
8
|
-
- {Evaluation aspect 1}
|
|
9
|
-
- {Evaluation aspect 2}
|
|
10
|
-
- {Evaluation aspect 3}
|
|
11
|
-
|
|
12
|
-
**Don't:**
|
|
13
|
-
- {What this character does not do 1}
|
|
14
|
-
- {What this character does not do 2}
|
|
15
|
-
- {What this character does not do 3}
|
|
16
|
-
|
|
17
|
-
## Behavioral Principles
|
|
18
|
-
|
|
19
|
-
- {Speech pattern/tone characteristic 1}
|
|
20
|
-
- {Speech pattern/tone characteristic 2}
|
|
21
|
-
- {Speech pattern/tone characteristic 3}
|
|
22
|
-
- {Character's position}
|
|
23
|
-
- {Role within the group}
|
|
24
|
-
|
|
25
|
-
**Perspective on other characters:**
|
|
26
|
-
- To {Character A}: {Assessment and critique}
|
|
27
|
-
- To {Character B}: {Assessment and critique}
|
|
28
|
-
|
|
29
|
-
## Domain Knowledge
|
|
30
|
-
|
|
31
|
-
### Thinking Characteristics
|
|
32
|
-
|
|
33
|
-
**{Trait 1 label}:** {Description. How they think and make judgments}
|
|
34
|
-
|
|
35
|
-
**{Trait 2 label}:** {Description}
|
|
36
|
-
|
|
37
|
-
**{Trait 3 label}:** {Description}
|
|
38
|
-
|
|
39
|
-
### Judgment Criteria
|
|
40
|
-
|
|
41
|
-
1. {Criterion 1} - {What to look for}
|
|
42
|
-
2. {Criterion 2} - {What to look for}
|
|
43
|
-
3. {Criterion 3} - {What to look for}
|
|
44
|
-
4. {Criterion 4} - {What to look for}
|
|
45
|
-
5. {Criterion 5} - {What to look for}
|