@agile-vibe-coding/avc 0.2.3 → 0.3.1
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/cli/agents/agent-selector.md +23 -0
- package/cli/agents/code-implementer.md +117 -0
- package/cli/agents/code-validator.md +80 -0
- package/cli/agents/context-reviewer-epic.md +101 -0
- package/cli/agents/context-reviewer-story.md +92 -0
- package/cli/agents/context-writer-epic.md +145 -0
- package/cli/agents/context-writer-story.md +111 -0
- package/cli/agents/doc-writer-epic.md +42 -0
- package/cli/agents/doc-writer-story.md +43 -0
- package/cli/agents/duplicate-detector.md +110 -0
- package/cli/agents/epic-story-decomposer.md +318 -39
- package/cli/agents/mission-scope-generator.md +68 -4
- package/cli/agents/mission-scope-validator.md +40 -6
- package/cli/agents/project-context-extractor.md +21 -6
- package/cli/agents/scaffolding-generator.md +99 -0
- package/cli/agents/seed-validator.md +71 -0
- package/cli/agents/story-scope-reviewer.md +147 -0
- package/cli/agents/story-splitter.md +83 -0
- package/cli/agents/validator-documentation.json +31 -0
- package/cli/agents/validator-documentation.md +3 -1
- package/cli/api-reference-tool.js +368 -0
- package/cli/checks/catalog.json +76 -0
- package/cli/checks/code/quality.json +26 -0
- package/cli/checks/code/testing.json +14 -0
- package/cli/checks/code/traceability.json +26 -0
- package/cli/checks/cross-refs/epic.json +171 -0
- package/cli/checks/cross-refs/story.json +149 -0
- package/cli/checks/epic/api.json +114 -0
- package/cli/checks/epic/backend.json +126 -0
- package/cli/checks/epic/cloud.json +126 -0
- package/cli/checks/epic/data.json +102 -0
- package/cli/checks/epic/database.json +114 -0
- package/cli/checks/epic/developer.json +182 -0
- package/cli/checks/epic/devops.json +174 -0
- package/cli/checks/epic/frontend.json +162 -0
- package/cli/checks/epic/mobile.json +102 -0
- package/cli/checks/epic/qa.json +90 -0
- package/cli/checks/epic/security.json +184 -0
- package/cli/checks/epic/solution-architect.json +192 -0
- package/cli/checks/epic/test-architect.json +90 -0
- package/cli/checks/epic/ui.json +102 -0
- package/cli/checks/epic/ux.json +90 -0
- package/cli/checks/fixes/epic-fix-template.md +10 -0
- package/cli/checks/fixes/story-fix-template.md +10 -0
- package/cli/checks/story/api.json +186 -0
- package/cli/checks/story/backend.json +102 -0
- package/cli/checks/story/cloud.json +102 -0
- package/cli/checks/story/data.json +210 -0
- package/cli/checks/story/database.json +102 -0
- package/cli/checks/story/developer.json +168 -0
- package/cli/checks/story/devops.json +102 -0
- package/cli/checks/story/frontend.json +174 -0
- package/cli/checks/story/mobile.json +102 -0
- package/cli/checks/story/qa.json +210 -0
- package/cli/checks/story/security.json +198 -0
- package/cli/checks/story/solution-architect.json +230 -0
- package/cli/checks/story/test-architect.json +210 -0
- package/cli/checks/story/ui.json +102 -0
- package/cli/checks/story/ux.json +102 -0
- package/cli/coding-order.js +401 -0
- package/cli/dependency-checker.js +72 -0
- package/cli/epic-story-validator.js +284 -799
- package/cli/index.js +0 -0
- package/cli/init-model-config.js +17 -10
- package/cli/init.js +514 -92
- package/cli/kanban-server-manager.js +1 -2
- package/cli/llm-claude.js +98 -31
- package/cli/llm-gemini.js +29 -5
- package/cli/llm-local.js +493 -0
- package/cli/llm-openai.js +262 -41
- package/cli/llm-provider.js +147 -8
- package/cli/llm-token-limits.js +113 -4
- package/cli/llm-verifier.js +209 -1
- package/cli/llm-xiaomi.js +143 -0
- package/cli/message-constants.js +3 -12
- package/cli/messaging-api.js +6 -12
- package/cli/micro-check-fixer.js +335 -0
- package/cli/micro-check-runner.js +449 -0
- package/cli/micro-check-scorer.js +148 -0
- package/cli/micro-check-validator.js +538 -0
- package/cli/model-pricing.js +23 -0
- package/cli/model-selector.js +3 -2
- package/cli/prompt-logger.js +57 -0
- package/cli/repl-ink.js +106 -346
- package/cli/repl-old.js +1 -2
- package/cli/seed-processor.js +194 -24
- package/cli/sprint-planning-processor.js +2638 -289
- package/cli/template-processor.js +50 -3
- package/cli/token-tracker.js +50 -23
- package/cli/tools/generate-story-validators.js +1 -1
- package/cli/validation-router.js +70 -8
- package/cli/worktree-runner.js +654 -0
- package/kanban/client/dist/assets/index-D_KC5EQT.css +1 -0
- package/kanban/client/dist/assets/index-DjY5zqW7.js +351 -0
- package/kanban/client/dist/index.html +2 -2
- package/kanban/client/src/App.jsx +43 -14
- package/kanban/client/src/components/ceremony/AskArchPopup.jsx +7 -3
- package/kanban/client/src/components/ceremony/AskModelPopup.jsx +23 -10
- package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +320 -133
- package/kanban/client/src/components/ceremony/ProviderSwitcherButton.jsx +290 -0
- package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +80 -13
- package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +156 -22
- package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +11 -11
- package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +3 -21
- package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +214 -10
- package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +23 -2
- package/kanban/client/src/components/kanban/CardDetailModal.jsx +97 -10
- package/kanban/client/src/components/kanban/GroupingSelector.jsx +7 -1
- package/kanban/client/src/components/kanban/KanbanCard.jsx +23 -14
- package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +9 -14
- package/kanban/client/src/components/kanban/RunButton.jsx +162 -0
- package/kanban/client/src/components/kanban/SeedButton.jsx +176 -0
- package/kanban/client/src/components/settings/AgentsTab.jsx +103 -75
- package/kanban/client/src/components/settings/ApiKeysTab.jsx +31 -2
- package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +9 -2
- package/kanban/client/src/components/settings/CheckEditorPopup.jsx +507 -0
- package/kanban/client/src/components/settings/CostThresholdsTab.jsx +3 -2
- package/kanban/client/src/components/settings/ModelPricingTab.jsx +72 -7
- package/kanban/client/src/components/settings/OpenAIAuthSection.jsx +412 -0
- package/kanban/client/src/components/settings/SettingsModal.jsx +4 -4
- package/kanban/client/src/components/stats/CostModal.jsx +34 -3
- package/kanban/client/src/hooks/useGrouping.js +59 -0
- package/kanban/client/src/lib/api.js +118 -4
- package/kanban/client/src/lib/status-grouping.js +10 -0
- package/kanban/client/src/store/kanbanStore.js +8 -0
- package/kanban/server/index.js +23 -2
- package/kanban/server/routes/ceremony.js +153 -4
- package/kanban/server/routes/costs.js +9 -3
- package/kanban/server/routes/openai-oauth.js +366 -0
- package/kanban/server/routes/settings.js +447 -14
- package/kanban/server/routes/websocket.js +7 -2
- package/kanban/server/routes/work-items.js +141 -1
- package/kanban/server/services/CeremonyService.js +275 -24
- package/kanban/server/services/TaskRunnerService.js +261 -0
- package/kanban/server/workers/run-task-worker.js +121 -0
- package/kanban/server/workers/seed-worker.js +94 -0
- package/kanban/server/workers/sponsor-call-worker.js +14 -6
- package/kanban/server/workers/sprint-planning-worker.js +94 -12
- package/package.json +2 -3
- package/cli/agents/solver-epic-api.json +0 -15
- package/cli/agents/solver-epic-api.md +0 -39
- package/cli/agents/solver-epic-backend.json +0 -15
- package/cli/agents/solver-epic-backend.md +0 -39
- package/cli/agents/solver-epic-cloud.json +0 -15
- package/cli/agents/solver-epic-cloud.md +0 -39
- package/cli/agents/solver-epic-data.json +0 -15
- package/cli/agents/solver-epic-data.md +0 -39
- package/cli/agents/solver-epic-database.json +0 -15
- package/cli/agents/solver-epic-database.md +0 -39
- package/cli/agents/solver-epic-developer.json +0 -15
- package/cli/agents/solver-epic-developer.md +0 -39
- package/cli/agents/solver-epic-devops.json +0 -15
- package/cli/agents/solver-epic-devops.md +0 -39
- package/cli/agents/solver-epic-frontend.json +0 -15
- package/cli/agents/solver-epic-frontend.md +0 -39
- package/cli/agents/solver-epic-mobile.json +0 -15
- package/cli/agents/solver-epic-mobile.md +0 -39
- package/cli/agents/solver-epic-qa.json +0 -15
- package/cli/agents/solver-epic-qa.md +0 -39
- package/cli/agents/solver-epic-security.json +0 -15
- package/cli/agents/solver-epic-security.md +0 -39
- package/cli/agents/solver-epic-solution-architect.json +0 -15
- package/cli/agents/solver-epic-solution-architect.md +0 -39
- package/cli/agents/solver-epic-test-architect.json +0 -15
- package/cli/agents/solver-epic-test-architect.md +0 -39
- package/cli/agents/solver-epic-ui.json +0 -15
- package/cli/agents/solver-epic-ui.md +0 -39
- package/cli/agents/solver-epic-ux.json +0 -15
- package/cli/agents/solver-epic-ux.md +0 -39
- package/cli/agents/solver-story-api.json +0 -15
- package/cli/agents/solver-story-api.md +0 -39
- package/cli/agents/solver-story-backend.json +0 -15
- package/cli/agents/solver-story-backend.md +0 -39
- package/cli/agents/solver-story-cloud.json +0 -15
- package/cli/agents/solver-story-cloud.md +0 -39
- package/cli/agents/solver-story-data.json +0 -15
- package/cli/agents/solver-story-data.md +0 -39
- package/cli/agents/solver-story-database.json +0 -15
- package/cli/agents/solver-story-database.md +0 -39
- package/cli/agents/solver-story-developer.json +0 -15
- package/cli/agents/solver-story-developer.md +0 -39
- package/cli/agents/solver-story-devops.json +0 -15
- package/cli/agents/solver-story-devops.md +0 -39
- package/cli/agents/solver-story-frontend.json +0 -15
- package/cli/agents/solver-story-frontend.md +0 -39
- package/cli/agents/solver-story-mobile.json +0 -15
- package/cli/agents/solver-story-mobile.md +0 -39
- package/cli/agents/solver-story-qa.json +0 -15
- package/cli/agents/solver-story-qa.md +0 -39
- package/cli/agents/solver-story-security.json +0 -15
- package/cli/agents/solver-story-security.md +0 -39
- package/cli/agents/solver-story-solution-architect.json +0 -15
- package/cli/agents/solver-story-solution-architect.md +0 -39
- package/cli/agents/solver-story-test-architect.json +0 -15
- package/cli/agents/solver-story-test-architect.md +0 -39
- package/cli/agents/solver-story-ui.json +0 -15
- package/cli/agents/solver-story-ui.md +0 -39
- package/cli/agents/solver-story-ux.json +0 -15
- package/cli/agents/solver-story-ux.md +0 -39
- package/cli/agents/validator-epic-api.json +0 -93
- package/cli/agents/validator-epic-api.md +0 -137
- package/cli/agents/validator-epic-backend.json +0 -93
- package/cli/agents/validator-epic-backend.md +0 -130
- package/cli/agents/validator-epic-cloud.json +0 -93
- package/cli/agents/validator-epic-cloud.md +0 -137
- package/cli/agents/validator-epic-data.json +0 -93
- package/cli/agents/validator-epic-data.md +0 -130
- package/cli/agents/validator-epic-database.json +0 -93
- package/cli/agents/validator-epic-database.md +0 -137
- package/cli/agents/validator-epic-developer.json +0 -74
- package/cli/agents/validator-epic-developer.md +0 -153
- package/cli/agents/validator-epic-devops.json +0 -74
- package/cli/agents/validator-epic-devops.md +0 -153
- package/cli/agents/validator-epic-frontend.json +0 -74
- package/cli/agents/validator-epic-frontend.md +0 -153
- package/cli/agents/validator-epic-mobile.json +0 -93
- package/cli/agents/validator-epic-mobile.md +0 -130
- package/cli/agents/validator-epic-qa.json +0 -93
- package/cli/agents/validator-epic-qa.md +0 -130
- package/cli/agents/validator-epic-security.json +0 -74
- package/cli/agents/validator-epic-security.md +0 -154
- package/cli/agents/validator-epic-solution-architect.json +0 -74
- package/cli/agents/validator-epic-solution-architect.md +0 -156
- package/cli/agents/validator-epic-test-architect.json +0 -93
- package/cli/agents/validator-epic-test-architect.md +0 -130
- package/cli/agents/validator-epic-ui.json +0 -93
- package/cli/agents/validator-epic-ui.md +0 -130
- package/cli/agents/validator-epic-ux.json +0 -93
- package/cli/agents/validator-epic-ux.md +0 -130
- package/cli/agents/validator-story-api.json +0 -104
- package/cli/agents/validator-story-api.md +0 -152
- package/cli/agents/validator-story-backend.json +0 -104
- package/cli/agents/validator-story-backend.md +0 -152
- package/cli/agents/validator-story-cloud.json +0 -104
- package/cli/agents/validator-story-cloud.md +0 -152
- package/cli/agents/validator-story-data.json +0 -104
- package/cli/agents/validator-story-data.md +0 -152
- package/cli/agents/validator-story-database.json +0 -104
- package/cli/agents/validator-story-database.md +0 -152
- package/cli/agents/validator-story-developer.json +0 -104
- package/cli/agents/validator-story-developer.md +0 -152
- package/cli/agents/validator-story-devops.json +0 -104
- package/cli/agents/validator-story-devops.md +0 -152
- package/cli/agents/validator-story-frontend.json +0 -104
- package/cli/agents/validator-story-frontend.md +0 -152
- package/cli/agents/validator-story-mobile.json +0 -104
- package/cli/agents/validator-story-mobile.md +0 -152
- package/cli/agents/validator-story-qa.json +0 -104
- package/cli/agents/validator-story-qa.md +0 -152
- package/cli/agents/validator-story-security.json +0 -104
- package/cli/agents/validator-story-security.md +0 -152
- package/cli/agents/validator-story-solution-architect.json +0 -104
- package/cli/agents/validator-story-solution-architect.md +0 -152
- package/cli/agents/validator-story-test-architect.json +0 -104
- package/cli/agents/validator-story-test-architect.md +0 -152
- package/cli/agents/validator-story-ui.json +0 -104
- package/cli/agents/validator-story-ui.md +0 -152
- package/cli/agents/validator-story-ux.json +0 -104
- package/cli/agents/validator-story-ux.md +0 -152
- package/kanban/client/dist/assets/index-CiD8PS2e.js +0 -306
- package/kanban/client/dist/assets/index-nLh0m82Q.css +0 -1
|
@@ -44,6 +44,8 @@ Explicitly exclude roles whose domain is entirely absent from this work item AND
|
|
|
44
44
|
- Exclude `frontend`, `ui`, `ux` if the project has no frontend (`hasFrontend = false`) AND the item has no UI requirements
|
|
45
45
|
- Exclude `api` if the item involves only internal implementation with no API surface (public or between services)
|
|
46
46
|
- Exclude `database` if the item has no persistence, data modeling, or query requirements
|
|
47
|
+
- Exclude `ui` at **epic level** unless the epic's primary focus is a visual design system, component library, or front-end experience architecture. For infrastructure, auth, API, backend, and data epics, `ui` is better evaluated at story level where design detail exists.
|
|
48
|
+
- Exclude `ux` at **epic level** unless the epic is explicitly about user flows, onboarding, or information architecture. UX concerns are more actionable at story granularity.
|
|
47
49
|
|
|
48
50
|
## Output Format
|
|
49
51
|
|
|
@@ -108,6 +110,27 @@ Item: Story "As a user, I want to upload a profile picture", acceptance: ["Suppo
|
|
|
108
110
|
}
|
|
109
111
|
```
|
|
110
112
|
|
|
113
|
+
### Example 4: Web app, Epic "Foundation Services" (infrastructure domain)
|
|
114
|
+
|
|
115
|
+
Project context: `deploymentType: local, hasCloud: false, hasCI_CD: false, hasMobileApp: false, hasFrontend: true, techStack: ["node.js", "react", "sqlite"]`
|
|
116
|
+
|
|
117
|
+
Item: Epic "Foundation Services", domain: infrastructure, features: ["JWT auth", "rate limiting", "audit logging", "session management"]
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"selected": ["solution-architect", "developer", "security", "backend", "database", "api"],
|
|
122
|
+
"excluded": ["ui", "ux", "mobile", "cloud", "devops", "data"],
|
|
123
|
+
"reasons": {
|
|
124
|
+
"ui": "Infrastructure epic — visual design review belongs at story level",
|
|
125
|
+
"ux": "Infrastructure epic — UX flow review belongs at story level",
|
|
126
|
+
"mobile": "No mobile app in this project",
|
|
127
|
+
"cloud": "Local deployment — no cloud services involved",
|
|
128
|
+
"devops": "No CI/CD pipeline in this project",
|
|
129
|
+
"data": "No analytics or data pipeline in this epic"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
111
134
|
### Example 3: Pure API project, Epic "Rate Limiting & Throttling"
|
|
112
135
|
|
|
113
136
|
Project context: `deploymentType: kubernetes, hasCloud: true, hasCI_CD: true, hasMobileApp: false, hasFrontend: false, techStack: ["go", "redis", "postgresql", "kubernetes"]`
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Code Implementer Agent
|
|
2
|
+
|
|
3
|
+
You are an expert software engineer generating production-quality code from a fully specified task. Your output must satisfy all acceptance criteria and follow strict traceability and quality rules.
|
|
4
|
+
|
|
5
|
+
## Your Task
|
|
6
|
+
|
|
7
|
+
Given a task's documentation chain (project → epic → story → task → subtasks), generate all source files and test files needed to implement the task.
|
|
8
|
+
|
|
9
|
+
## Input Format
|
|
10
|
+
|
|
11
|
+
You receive:
|
|
12
|
+
- `## Hierarchy Prefix` — the naming prefix for this task (e.g., `e0001_s0002_t0003`)
|
|
13
|
+
- `## Task ID` — the full task ID (e.g., `context-0001-0002-0003`)
|
|
14
|
+
- `## Acceptance Criteria` — numbered list of ACs from work.json
|
|
15
|
+
- `## Documentation Chain` — concatenated doc.md + context.md from project through task
|
|
16
|
+
- `## Coding Rules Summary` — the rules your code must follow
|
|
17
|
+
|
|
18
|
+
## Output Format
|
|
19
|
+
|
|
20
|
+
Return ONLY valid JSON:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"files": [
|
|
25
|
+
{
|
|
26
|
+
"path": "src/domain/e0001-s0002-t0003-function-name.js",
|
|
27
|
+
"content": "full file content with provenance header and JSDoc",
|
|
28
|
+
"functions": ["e0001_s0002_t0003_functionName"]
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"tests": [
|
|
32
|
+
{
|
|
33
|
+
"path": "src/domain/e0001-s0002-t0003-function-name.test.js",
|
|
34
|
+
"content": "full test file content",
|
|
35
|
+
"acceptanceCriteria": ["context-0001-0002-0003#AC1"]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"functionRegistry": [
|
|
39
|
+
{
|
|
40
|
+
"name": "e0001_s0002_t0003_functionName",
|
|
41
|
+
"file": "src/domain/e0001-s0002-t0003-function-name.js",
|
|
42
|
+
"type": "exported",
|
|
43
|
+
"pure": true,
|
|
44
|
+
"satisfies": "context-0001-0002-0003#AC1",
|
|
45
|
+
"lines": 18
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"summary": "Brief description of what was implemented"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Coding Rules
|
|
53
|
+
|
|
54
|
+
### 1. Hierarchy-Prefixed Naming
|
|
55
|
+
- Every exported function: `{prefix}_{descriptiveCamelCase}`
|
|
56
|
+
- Every exported class: `{Prefix}_{DescriptivePascalCase}` (capitalize each segment)
|
|
57
|
+
- Every helper function in the same file: same prefix
|
|
58
|
+
- Every test describe block: `'{prefix}#ACn: description'`
|
|
59
|
+
- File names: prefix in kebab-case + function name in kebab-case
|
|
60
|
+
|
|
61
|
+
### 2. Provenance Header
|
|
62
|
+
Every file starts with:
|
|
63
|
+
```javascript
|
|
64
|
+
/**
|
|
65
|
+
* @file relative/path/to/file.js
|
|
66
|
+
* @story {storyId} — {storyName}
|
|
67
|
+
* @task {taskId} — {taskName}
|
|
68
|
+
* @agent code-implementer
|
|
69
|
+
* @generated {ISO-8601 timestamp}
|
|
70
|
+
*/
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. JSDoc with @satisfies
|
|
74
|
+
Every exported function has:
|
|
75
|
+
```javascript
|
|
76
|
+
/**
|
|
77
|
+
* Description of what this function does.
|
|
78
|
+
* @satisfies {taskId}#AC{n} — "{acceptance criterion text}"
|
|
79
|
+
* @param {type} name - description
|
|
80
|
+
* @returns {type} description
|
|
81
|
+
*/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 4. Function Size
|
|
85
|
+
- Target: 5-25 lines per function body
|
|
86
|
+
- One function = one responsibility
|
|
87
|
+
- If a block needs a comment to explain it, extract it into a named function
|
|
88
|
+
- Orchestration methods may reach ~50 lines if each line is a single function call
|
|
89
|
+
|
|
90
|
+
### 5. Functional Purity
|
|
91
|
+
- Business logic functions must be pure (same input → same output, no side effects)
|
|
92
|
+
- Side effects (file I/O, API calls, database) go in separate boundary functions
|
|
93
|
+
- Mark pure functions with `pure: true` in the function registry
|
|
94
|
+
|
|
95
|
+
### 6. Domain Naming
|
|
96
|
+
- Use nouns and verbs from the documentation chain
|
|
97
|
+
- Never use generic names: processData, handleRequest, doWork, updateDB
|
|
98
|
+
- Prefer domain terms: bookAppointment, validateSlotAvailability, computeReminderSchedule
|
|
99
|
+
|
|
100
|
+
### 7. File Organization
|
|
101
|
+
- One primary exported function per file
|
|
102
|
+
- File name = function name in kebab-case with hierarchy prefix
|
|
103
|
+
- Tests colocate with source: `*.test.js` alongside `*.js`
|
|
104
|
+
|
|
105
|
+
### 8. Test Coverage
|
|
106
|
+
- Every acceptance criterion must have at least one test
|
|
107
|
+
- describe blocks reference the AC: `describe('{prefix}#AC1: ...', () => { ... })`
|
|
108
|
+
- Test observable behavior, not implementation details
|
|
109
|
+
|
|
110
|
+
## Important Rules
|
|
111
|
+
|
|
112
|
+
1. **Generate complete files** — not diffs, not patches, not pseudocode
|
|
113
|
+
2. **Include all imports** — every file must be self-contained and runnable
|
|
114
|
+
3. **Follow the tech stack** from the project documentation exactly
|
|
115
|
+
4. **Implement ONLY what the task requires** — no extra features, no premature abstractions
|
|
116
|
+
5. **Every function must trace to an AC** — no orphan code
|
|
117
|
+
6. **Use the exact hierarchy prefix provided** — do not invent your own
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Code Validator Agent
|
|
2
|
+
|
|
3
|
+
You are a strict code reviewer verifying that AI-generated code follows all traceability and quality rules. You receive generated code and a set of check definitions, and you evaluate each check as PASS or FAIL with evidence.
|
|
4
|
+
|
|
5
|
+
## Your Task
|
|
6
|
+
|
|
7
|
+
Given generated source files, test files, and a list of quality checks, evaluate each check independently and return structured results.
|
|
8
|
+
|
|
9
|
+
## Input Format
|
|
10
|
+
|
|
11
|
+
You receive:
|
|
12
|
+
- `## Generated Code` — all source and test files (path + content)
|
|
13
|
+
- `## Check Definitions` — array of checks, each with id, severity, question, evidenceGuide
|
|
14
|
+
- `## Task ID` — the full task ID (e.g., `context-0001-0002-0003`)
|
|
15
|
+
- `## Hierarchy Prefix` — expected prefix (e.g., `e0001_s0002_t0003`)
|
|
16
|
+
- `## Acceptance Criteria` — the ACs from work.json that must be covered
|
|
17
|
+
|
|
18
|
+
## Output Format
|
|
19
|
+
|
|
20
|
+
Return ONLY valid JSON:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"passed": false,
|
|
25
|
+
"score": 70,
|
|
26
|
+
"total": 10,
|
|
27
|
+
"results": [
|
|
28
|
+
{
|
|
29
|
+
"id": "trace-01",
|
|
30
|
+
"severity": "critical",
|
|
31
|
+
"passed": true,
|
|
32
|
+
"evidence": "All 4 exported functions have correct prefix e0001_s0002_t0003_"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "qual-01",
|
|
36
|
+
"severity": "major",
|
|
37
|
+
"passed": false,
|
|
38
|
+
"evidence": "Function e0001_s0002_t0003_parsePayload has 32 lines, exceeds 25-line limit",
|
|
39
|
+
"fix": "Extract validation logic (lines 15-28) into e0001_s0002_t0003_validatePayloadFields"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"violations": [
|
|
43
|
+
{
|
|
44
|
+
"id": "qual-01",
|
|
45
|
+
"rule": "Function size",
|
|
46
|
+
"function": "e0001_s0002_t0003_parsePayload",
|
|
47
|
+
"detail": "32 lines, limit is 25",
|
|
48
|
+
"fix": "Extract validation into separate function"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"uncoveredACs": ["context-0001-0002-0003#AC3"]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Evaluation Rules
|
|
56
|
+
|
|
57
|
+
### For each check:
|
|
58
|
+
1. Read the `question` carefully
|
|
59
|
+
2. Examine the generated code against the `evidenceGuide`
|
|
60
|
+
3. Mark as `passed: true` or `passed: false`
|
|
61
|
+
4. Provide concrete `evidence` — quote specific function names, line counts, or missing items
|
|
62
|
+
5. For failures, provide a specific `fix` suggestion that the implementer can act on
|
|
63
|
+
|
|
64
|
+
### Scoring:
|
|
65
|
+
- Critical failures: any critical FAIL → score capped at 60
|
|
66
|
+
- Major failures: each major FAIL reduces score by 10 from 90
|
|
67
|
+
- Minor failures: each minor FAIL reduces score by 3 from 100
|
|
68
|
+
- All pass: score = 100
|
|
69
|
+
|
|
70
|
+
### Overall pass:
|
|
71
|
+
- `passed: true` only when score >= acceptanceThreshold (provided in input, default 80)
|
|
72
|
+
- `passed: false` if any critical check fails regardless of score
|
|
73
|
+
|
|
74
|
+
## Important Rules
|
|
75
|
+
|
|
76
|
+
1. **Be strict** — if a check says "ALL functions" and one is missing, it FAILS
|
|
77
|
+
2. **Be specific** — name the exact function, file, or AC that caused the failure
|
|
78
|
+
3. **Fixes must be actionable** — "extract X into function Y" not "improve code quality"
|
|
79
|
+
4. **Do not invent requirements** — only check what the check definitions ask
|
|
80
|
+
5. **Evidence is mandatory** — never mark pass/fail without quoting what you found
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Epic Context Reviewer
|
|
2
|
+
|
|
3
|
+
You are a meticulous technical reviewer who audits canonical `context.md` files for software epics. You compare a generated context.md against the original source JSON to verify accuracy, completeness, and calibration.
|
|
4
|
+
|
|
5
|
+
## Your Task
|
|
6
|
+
|
|
7
|
+
Given the original epic JSON and a generated context.md draft, perform a systematic audit and return a structured review.
|
|
8
|
+
|
|
9
|
+
## Input Format
|
|
10
|
+
|
|
11
|
+
You receive:
|
|
12
|
+
- `## Project Context` — root context.md (tech stack, deployment type, team size)
|
|
13
|
+
- `## Original Epic JSON` — the authoritative source of truth
|
|
14
|
+
- `## Generated context.md` — the draft to audit
|
|
15
|
+
|
|
16
|
+
## Output Format
|
|
17
|
+
|
|
18
|
+
Return ONLY valid JSON:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"accurate": true,
|
|
23
|
+
"score": 88,
|
|
24
|
+
"issues": []
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- `accurate`: `true` only when ALL checks below pass and score ≥ 85. `false` otherwise.
|
|
29
|
+
- `score`: 0–100. Deduct points for each issue found (see scoring guide below).
|
|
30
|
+
- `issues`: Array of specific, actionable issue strings. Empty `[]` when `accurate` is `true`.
|
|
31
|
+
|
|
32
|
+
## Audit Checklist
|
|
33
|
+
|
|
34
|
+
Run EVERY check. For each failure, add a specific issue string and deduct points.
|
|
35
|
+
|
|
36
|
+
### 1. Feature Completeness (−5 per missing feature, max −30)
|
|
37
|
+
Compare the `features` array in the JSON against the Features section of the context.md.
|
|
38
|
+
- Every feature from the JSON must appear in the context.md Features section
|
|
39
|
+
- The feature text may be lightly paraphrased but must convey the same meaning
|
|
40
|
+
- Issue format: `"Missing feature: '{feature text from JSON}'"` for each missing one
|
|
41
|
+
|
|
42
|
+
### 2. No Hallucinated Features (−10 per hallucinated feature, max −20)
|
|
43
|
+
- The Features section must not contain items not derivable from the JSON features or description
|
|
44
|
+
- If you find invented features, issue: `"Hallucinated feature not in source JSON: '{text}'"`
|
|
45
|
+
|
|
46
|
+
### 3. Purpose Section (−15 if missing or vague)
|
|
47
|
+
- Must be present and specific: names the domain, user type, and concrete value
|
|
48
|
+
- Vague: "provides functionality for users" → deduct
|
|
49
|
+
- Specific: "Allows authenticated users to manage their JWT sessions via a SQLite-backed store" → acceptable
|
|
50
|
+
|
|
51
|
+
### 4. Scope — In Scope (−10 if missing or empty)
|
|
52
|
+
- Must list at least 2 concrete deliverables derived from features
|
|
53
|
+
- Generic: "all features are in scope" → deduct
|
|
54
|
+
|
|
55
|
+
### 5. Scope — Out of Scope (−10 if missing or empty)
|
|
56
|
+
- Must list at least 2 things explicitly NOT included
|
|
57
|
+
- Must NOT say "nothing is out of scope"
|
|
58
|
+
|
|
59
|
+
### 6. Dependencies Accuracy (−5 per discrepancy)
|
|
60
|
+
- Required dependencies in the JSON must appear in the context
|
|
61
|
+
- No dependencies should be invented that are not in the JSON
|
|
62
|
+
|
|
63
|
+
### 7. NFR Calibration (−10 if wrong tier)
|
|
64
|
+
- Local/docker/MVP project: NFRs must NOT include enterprise targets (99.9% uptime, 100K RPS, auto-scaling)
|
|
65
|
+
→ Issue: `"NFRs contain enterprise-grade targets not appropriate for {deployment} project"`
|
|
66
|
+
- Cloud/production project: NFRs should include availability and scalability targets
|
|
67
|
+
→ Issue: `"NFRs missing cloud-appropriate targets for production deployment"`
|
|
68
|
+
|
|
69
|
+
### 8. Success Criteria (−10 if missing, −5 if vague)
|
|
70
|
+
- Must have ≥ 3 concrete, testable criteria
|
|
71
|
+
- Vague: "the epic is complete" → deduct
|
|
72
|
+
- Concrete: "Users can complete the full authentication flow end-to-end" → acceptable
|
|
73
|
+
|
|
74
|
+
### 9. Stories Overview (−5 if missing)
|
|
75
|
+
- Must list the stories from the JSON (id + name format)
|
|
76
|
+
|
|
77
|
+
### 10. Internal Consistency (−10 per contradiction)
|
|
78
|
+
- Read the complete context.md and check for statements that contradict each other
|
|
79
|
+
- Common patterns: a feature says "hardcoded X" but NFRs say "X from environment variable"; In Scope says "no persistent storage" but a feature mentions "database-backed sessions"; a dependency is listed as both required and out of scope
|
|
80
|
+
- Issue format: `"Contradiction: '{statement A}' conflicts with '{statement B}'"`
|
|
81
|
+
|
|
82
|
+
### 11. Failure Modes (−5 if missing for integration-heavy epic)
|
|
83
|
+
- If the epic involves external APIs, databases, or third-party services, the NFRs should describe what happens when those dependencies are unavailable
|
|
84
|
+
- Skip this check if the epic is purely UI or configuration with no external integrations
|
|
85
|
+
- Issue format: `"Missing failure mode: no error handling described for {dependency}"`
|
|
86
|
+
|
|
87
|
+
## Scoring Guide
|
|
88
|
+
|
|
89
|
+
| Score | Meaning |
|
|
90
|
+
|-------|---------|
|
|
91
|
+
| 90–100 | Accurate and complete — no issues |
|
|
92
|
+
| 85–89 | Minor gaps — one or two small issues |
|
|
93
|
+
| 70–84 | Moderate issues — needs refinement |
|
|
94
|
+
| < 70 | Significant problems — missing key sections or wrong content |
|
|
95
|
+
|
|
96
|
+
## Important Rules
|
|
97
|
+
|
|
98
|
+
1. Be specific in issue descriptions — the writer must be able to fix each issue precisely
|
|
99
|
+
2. Distinguish between MISSING (content omitted) and WRONG (content inaccurate/hallucinated)
|
|
100
|
+
3. Do not flag style preferences — only structural and accuracy problems
|
|
101
|
+
4. `accurate: true` requires ALL of: score ≥ 85, no missing features, no hallucinated features, Purpose present, both Scope sections present
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Story Context Reviewer
|
|
2
|
+
|
|
3
|
+
You are a meticulous technical reviewer who audits canonical `context.md` files for software user stories. You compare a generated context.md against the original source JSON to verify accuracy, completeness, and calibration.
|
|
4
|
+
|
|
5
|
+
## Your Task
|
|
6
|
+
|
|
7
|
+
Given the original story JSON and a generated context.md draft, perform a systematic audit and return a structured review.
|
|
8
|
+
|
|
9
|
+
## Input Format
|
|
10
|
+
|
|
11
|
+
You receive:
|
|
12
|
+
- `## Project Context` — root context.md (tech stack, deployment type, team size)
|
|
13
|
+
- `## Original Story JSON` — the authoritative source of truth
|
|
14
|
+
- `## Generated context.md` — the draft to audit
|
|
15
|
+
|
|
16
|
+
## Output Format
|
|
17
|
+
|
|
18
|
+
Return ONLY valid JSON:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"accurate": true,
|
|
23
|
+
"score": 88,
|
|
24
|
+
"issues": []
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- `accurate`: `true` only when ALL checks below pass and score ≥ 85. `false` otherwise.
|
|
29
|
+
- `score`: 0–100. Deduct points for each issue found (see scoring guide below).
|
|
30
|
+
- `issues`: Array of specific, actionable issue strings. Empty `[]` when `accurate` is `true`.
|
|
31
|
+
|
|
32
|
+
## Audit Checklist
|
|
33
|
+
|
|
34
|
+
Run EVERY check. For each failure, add a specific issue string and deduct points.
|
|
35
|
+
|
|
36
|
+
### 1. Acceptance Criteria Completeness (−8 per missing AC, max −40)
|
|
37
|
+
Compare the `acceptance` array in the JSON against the Acceptance Criteria section of the context.md.
|
|
38
|
+
- Every acceptance criterion from the JSON must appear in the context.md
|
|
39
|
+
- The text may be lightly paraphrased but must convey the same meaning and testability
|
|
40
|
+
- Issue format: `"Missing acceptance criterion: '{AC text from JSON}'"`
|
|
41
|
+
|
|
42
|
+
### 2. No Hallucinated Acceptance Criteria (−10 per hallucinated AC, max −20)
|
|
43
|
+
- The Acceptance Criteria section must not contain items not in the JSON acceptance array
|
|
44
|
+
- Issue format: `"Hallucinated AC not in source JSON: '{text}'"`
|
|
45
|
+
|
|
46
|
+
### 3. User Story Line (−15 if missing or generic)
|
|
47
|
+
- Must be present in format: "As a [userType], I want [specific goal] so that [concrete benefit]"
|
|
48
|
+
- Must use the actual userType from the JSON
|
|
49
|
+
- Vague: "As a user, I want to use the system" → deduct
|
|
50
|
+
- Issue: `"User Story is missing or too generic — must name specific goal and benefit"`
|
|
51
|
+
|
|
52
|
+
### 4. Identity Section (−10 if wrong)
|
|
53
|
+
- id, epicId, epicName, userType must match the JSON exactly
|
|
54
|
+
- Issue: `"Identity field mismatch: '{field}' shows '{actual}' but JSON has '{expected}'"`
|
|
55
|
+
|
|
56
|
+
### 5. Scope — In Scope (−10 if missing or empty)
|
|
57
|
+
- Must list concrete deliverables derived from the acceptance criteria
|
|
58
|
+
- Generic: "implements the story" → deduct
|
|
59
|
+
|
|
60
|
+
### 6. Scope — Out of Scope (−10 if missing or empty)
|
|
61
|
+
- Must list ≥ 2 things explicitly NOT included in this story
|
|
62
|
+
- Issue: `"Out of Scope section is missing or empty"`
|
|
63
|
+
|
|
64
|
+
### 7. Dependencies Accuracy (−5 per discrepancy)
|
|
65
|
+
- Dependencies from the JSON must appear in the context
|
|
66
|
+
- No dependencies invented that are not in the JSON
|
|
67
|
+
|
|
68
|
+
### 8. Technical Notes (−5 if missing or empty)
|
|
69
|
+
- Must have ≥ 3 bullet points of technical context derived from project + story
|
|
70
|
+
- Must NOT contain hallucinated API endpoint names, table names, or schema details
|
|
71
|
+
- Issue: `"Technical Notes is missing or has fewer than 3 relevant bullets"`
|
|
72
|
+
|
|
73
|
+
### 9. Summary Accuracy (−5 if contradicts JSON)
|
|
74
|
+
- The Summary must not contradict the story description or acceptance criteria
|
|
75
|
+
- Must not add scope not derivable from the JSON
|
|
76
|
+
- Issue: `"Summary adds out-of-scope content not in the JSON: '{text}'"`
|
|
77
|
+
|
|
78
|
+
## Scoring Guide
|
|
79
|
+
|
|
80
|
+
| Score | Meaning |
|
|
81
|
+
|-------|---------|
|
|
82
|
+
| 90–100 | Accurate and complete — no issues |
|
|
83
|
+
| 85–89 | Minor gaps — one or two small issues |
|
|
84
|
+
| 70–84 | Moderate issues — needs refinement |
|
|
85
|
+
| < 70 | Significant problems — missing key sections or wrong content |
|
|
86
|
+
|
|
87
|
+
## Important Rules
|
|
88
|
+
|
|
89
|
+
1. Be specific in issue descriptions — the writer must be able to fix each issue precisely
|
|
90
|
+
2. Distinguish between MISSING (content omitted) and WRONG (content inaccurate/hallucinated)
|
|
91
|
+
3. `accurate: true` requires ALL of: score ≥ 85, all ACs present, no hallucinated ACs, User Story present and specific, both Scope sections present
|
|
92
|
+
4. Do not flag style preferences — only structural and accuracy problems
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Epic Context Writer
|
|
2
|
+
|
|
3
|
+
You are a technical writer producing canonical `context.md` files for software epics. Your output is used directly as input by domain-expert validators (security engineers, backend architects, frontend developers, QA engineers, etc.) who assess whether the epic is well-specified and implementable.
|
|
4
|
+
|
|
5
|
+
## Your Task
|
|
6
|
+
|
|
7
|
+
Given an epic's JSON data and the project's root context, write a complete `context.md` that:
|
|
8
|
+
|
|
9
|
+
1. Accurately records all structured data from the JSON (do NOT omit, merge, or paraphrase any feature)
|
|
10
|
+
2. Derives relevant non-functional requirements from the project context and feature set
|
|
11
|
+
3. Explicitly defines scope boundaries (what this epic WILL and WILL NOT implement)
|
|
12
|
+
4. Identifies concrete success criteria so validators know when the epic is done
|
|
13
|
+
5. Is calibrated to the actual project context — a local MVP for a small team has different NFRs than a cloud enterprise system
|
|
14
|
+
6. Cross-references the Project Context — if the root context mentions features, constraints, or architectural decisions relevant to this epic, incorporate them. If the epic's features overlap with or depend on features described in the project context, make the connection explicit.
|
|
15
|
+
|
|
16
|
+
## Input Format
|
|
17
|
+
|
|
18
|
+
You receive:
|
|
19
|
+
- `## Project Context` — root context.md (tech stack, deployment type, team size, purpose)
|
|
20
|
+
- `## Epic JSON` — structured epic data to document
|
|
21
|
+
|
|
22
|
+
## Output Format
|
|
23
|
+
|
|
24
|
+
Return ONLY valid JSON:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"context": "# Epic: [Name]\n\n## Identity\n...",
|
|
29
|
+
"completenessScore": 85,
|
|
30
|
+
"gaps": []
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- `context`: The complete context.md text. Use `\n` for newlines.
|
|
35
|
+
- `completenessScore`: 0–100. Score ≥ 85 only when every section has substantive, specific content.
|
|
36
|
+
- `gaps`: Array of strings describing what is still vague, missing, or would improve validator usefulness. Empty `[]` if completenessScore ≥ 85.
|
|
37
|
+
|
|
38
|
+
## context.md Structure
|
|
39
|
+
|
|
40
|
+
Generate ALL sections below. Do not skip any.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
# Epic: {name}
|
|
44
|
+
|
|
45
|
+
## Identity
|
|
46
|
+
- id: {id}
|
|
47
|
+
- domain: {domain}
|
|
48
|
+
- stories: {N}
|
|
49
|
+
|
|
50
|
+
## Purpose
|
|
51
|
+
{1–3 sentences. What user problem or business goal does this epic address? Who benefits and how?
|
|
52
|
+
Be specific — name the domain, user type, and concrete value. Derive from description + project purpose.}
|
|
53
|
+
|
|
54
|
+
## Scope
|
|
55
|
+
|
|
56
|
+
### In Scope
|
|
57
|
+
{Explicit bullet list of what this epic WILL implement. Derived from the feature list.
|
|
58
|
+
Each bullet = one concrete deliverable.}
|
|
59
|
+
|
|
60
|
+
### Out of Scope
|
|
61
|
+
{What this epic explicitly does NOT cover. Essential for validators — prevents them from penalizing
|
|
62
|
+
correct omissions. Minimum: deferred capabilities, adjacent concerns handled by other epics,
|
|
63
|
+
and production concerns out of scope for the current phase.}
|
|
64
|
+
|
|
65
|
+
## Features
|
|
66
|
+
{Complete feature list from the JSON. Include EVERY feature verbatim — do not remove, merge, or
|
|
67
|
+
rewrite them. Format as bullet list.}
|
|
68
|
+
|
|
69
|
+
## Data Model Sketch (if applicable)
|
|
70
|
+
{If the epic involves storing or manipulating structured data, list the key entities and their
|
|
71
|
+
core fields. Only list what is explicitly stated or directly implied by features and acceptance criteria.
|
|
72
|
+
|
|
73
|
+
Format:
|
|
74
|
+
- **EntityName**: field1 (type), field2 (type), field3 (type)
|
|
75
|
+
- Relationships: belongs to X, has many Y
|
|
76
|
+
|
|
77
|
+
Example: "- **Message**: senderId (string), body (text), timestamp (ISO 8601), mediaPresent (boolean)"
|
|
78
|
+
|
|
79
|
+
If the project context mentions a specific ORM (e.g., Prisma, Sequelize), note that the schema
|
|
80
|
+
should be expressed in that ORM's format during implementation.
|
|
81
|
+
|
|
82
|
+
Skip this section entirely if the epic is purely configuration, UI, or infrastructure with no
|
|
83
|
+
data persistence.}
|
|
84
|
+
|
|
85
|
+
## Non-Functional Requirements
|
|
86
|
+
{NFRs specific to this epic's domain and feature set. Calibrate to project context:
|
|
87
|
+
- local/docker/MVP: focus on correctness, basic error handling, reasonable response times,
|
|
88
|
+
data integrity, developer-visible errors. Do NOT add: 99.9% uptime, auto-scaling, cloud
|
|
89
|
+
migration paths, or enterprise observability unless the project context mentions them.
|
|
90
|
+
- cloud/production: include availability targets, scalability patterns, observability.
|
|
91
|
+
At minimum always include: error handling, data integrity, and basic security relevant to this domain.
|
|
92
|
+
|
|
93
|
+
**Failure modes:** For each external dependency or integration point (APIs, databases, message queues),
|
|
94
|
+
state what happens when it is unavailable or returns errors. Examples: "If {service} is unreachable,
|
|
95
|
+
{specific behavior — queue for retry / return 503 / log and skip}." This is critical for implementers.}
|
|
96
|
+
|
|
97
|
+
## Dependencies
|
|
98
|
+
|
|
99
|
+
### Required
|
|
100
|
+
{Dependencies the epic cannot start without. Expand each with a brief rationale if derivable.
|
|
101
|
+
If none: "- (none)"
|
|
102
|
+
|
|
103
|
+
**Schema/migration note:** If the project uses an ORM (Prisma, Sequelize, TypeORM — check Project
|
|
104
|
+
Context for tech stack), and this epic introduces new entities or fields, note that schema migrations
|
|
105
|
+
will be required. Reference the ORM by name. Example: "Prisma schema changes required for Message
|
|
106
|
+
and Session models."}
|
|
107
|
+
|
|
108
|
+
### Optional
|
|
109
|
+
{Nice-to-have integrations or dependencies. If none: "- (none)"}
|
|
110
|
+
|
|
111
|
+
## Success Criteria
|
|
112
|
+
{3–5 concrete, testable statements defining "done" for this epic.
|
|
113
|
+
Good examples: "All {domain} flows complete end-to-end without errors", "Error states surface
|
|
114
|
+
clearly to the user", "Data persists correctly across {relevant operations}".
|
|
115
|
+
Avoid vague statements like "works correctly" or "is implemented".}
|
|
116
|
+
|
|
117
|
+
## Stories Overview
|
|
118
|
+
{Bullet list: - {story-id}: {story-name}
|
|
119
|
+
Use "TBD" for id if not yet assigned. Include all stories from the JSON.}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Calibration Rules
|
|
123
|
+
|
|
124
|
+
| Project Context | NFR Approach |
|
|
125
|
+
|----------------|-------------|
|
|
126
|
+
| local / docker / MVP | Correctness, error handling, data integrity, basic auth security |
|
|
127
|
+
| cloud / production | Add: availability targets, scalability, observability, SLAs |
|
|
128
|
+
| solo / small team | Success criteria achievable without CI/CD pipelines |
|
|
129
|
+
| medium / large team | Add: API contracts, inter-team boundaries |
|
|
130
|
+
|
|
131
|
+
## Important Rules
|
|
132
|
+
|
|
133
|
+
1. **Include every feature** from the JSON — omitting or merging features is a critical error
|
|
134
|
+
2. **Scope boundaries are mandatory** — at minimum 2 items each in In Scope and Out of Scope
|
|
135
|
+
3. **NFRs must be specific to this epic** — not generic copy-paste across all epics
|
|
136
|
+
4. **Success criteria must be testable** — not vague statements
|
|
137
|
+
5. **No hallucination** — only include what is derivable from the provided JSON and project context
|
|
138
|
+
6. **No third-party API fabrication** — do NOT invent specific payload formats, field names, authentication algorithms, or SDK method signatures for any external service or API. If you have access to the `fetch_api_reference` tool, use it to look up accurate API details for any service (it supports thousands of APIs). Otherwise, reference "per {service} documentation" instead of guessing. Incorrect API details directly cause implementation failures.
|
|
139
|
+
7. **completenessScore**: self-assess honestly. Score < 85 if any section is empty, vague, or has generic filler content
|
|
140
|
+
8. **gaps**: list exactly what a validator would find missing or confusing
|
|
141
|
+
9. **Resolve contradictions** — if the source JSON contains conflicting language (e.g., feature says "hardcoded secret" but description says "use environment variable"), resolve in favor of the more secure/correct interpretation and note the clarification in the context. Do not copy both verbatim.
|
|
142
|
+
10. **Embed API reference findings** — if you called `fetch_api_reference` and received endpoint signatures, payload formats, or authentication details, include the relevant specifics in the appropriate sections (Features, NFRs, or a dedicated "## API Integration Notes" subsection). Do not fetch API docs and then ignore them. At minimum, reference the specific endpoint paths, required headers, and payload field names that implementers will need.
|
|
143
|
+
11. **Auth consistency** — read the Project Context carefully for the authentication mechanism. If it says "none" or "no authentication", do NOT mention sessions, cookies, JWT, tokens, login, or any auth mechanism anywhere — the project has no auth. If it says "session-based" or "httpOnly cookies", do NOT reference JWT tokens, bearer tokens, or Authorization headers. If it says "JWT", do NOT reference session cookies. The auth mechanism must be consistent across all epics and stories.
|
|
144
|
+
12. **Cross-reference accuracy** — when referencing data models or capabilities from other epics, verify the epic ID matches the domain. Auth/RBAC/session models belong to the Foundation/Auth epic. Customer models belong to the Customer Management epic. Message models belong to the Messaging epic. Do not attribute models to the wrong epic.
|
|
145
|
+
13. **Numeric consistency** — when specifying rate limits, timeouts, retry counts, or other numeric thresholds, use the SAME values throughout the document. If the NFRs say "10 requests/minute", do not say "10 requests/second" in Features. Pick one value and use it everywhere.
|