@agents-inc/cli 0.90.0 → 0.92.0

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.
Files changed (179) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{chunk-OWPIGGPP.js → chunk-2RXDM5HN.js} +2 -2
  3. package/dist/{chunk-JI44SVMW.js → chunk-35WALWDD.js} +2 -2
  4. package/dist/{chunk-D254XO7K.js → chunk-3O57Z6Q3.js} +2 -2
  5. package/dist/{chunk-TWOHWCKS.js → chunk-3STOCHK4.js} +2 -2
  6. package/dist/{chunk-BO4JY7BT.js → chunk-5IR4QU7G.js} +24 -19
  7. package/dist/chunk-5IR4QU7G.js.map +1 -0
  8. package/dist/chunk-7QWCPF6F.js +135 -0
  9. package/dist/chunk-7QWCPF6F.js.map +1 -0
  10. package/dist/{chunk-VJBCOPMG.js → chunk-AWB6DO24.js} +16 -9
  11. package/dist/chunk-AWB6DO24.js.map +1 -0
  12. package/dist/{chunk-SB2R5KHJ.js → chunk-BGICSUQK.js} +2 -2
  13. package/dist/{chunk-HK53FRMU.js → chunk-DVBA6PGR.js} +3 -7
  14. package/dist/{chunk-HK53FRMU.js.map → chunk-DVBA6PGR.js.map} +1 -1
  15. package/dist/{chunk-I5AZKNNL.js → chunk-FEKVKYCN.js} +2 -2
  16. package/dist/{chunk-7AUGC7PK.js → chunk-G3VPBEBC.js} +2 -2
  17. package/dist/chunk-M6J5YQ3P.js +100 -0
  18. package/dist/chunk-M6J5YQ3P.js.map +1 -0
  19. package/dist/{chunk-3T5XT2VU.js → chunk-MBEXASMU.js} +3 -3
  20. package/dist/{chunk-TEA5KBIA.js → chunk-NESVWSI7.js} +2 -2
  21. package/dist/{chunk-V36FRPAU.js → chunk-ORTNQZLF.js} +4 -2
  22. package/dist/{chunk-V36FRPAU.js.map → chunk-ORTNQZLF.js.map} +1 -1
  23. package/dist/{chunk-TP6BX5M2.js → chunk-RDQBXB3Y.js} +5 -5
  24. package/dist/{chunk-VYLF4IIK.js → chunk-TJHCK4OS.js} +2 -2
  25. package/dist/{chunk-Z5FXZFX2.js → chunk-UK572773.js} +2 -2
  26. package/dist/{chunk-4ITKYWVG.js → chunk-V75HVZTB.js} +3 -3
  27. package/dist/chunk-V75HVZTB.js.map +1 -0
  28. package/dist/commands/build/marketplace.js +58 -40
  29. package/dist/commands/build/marketplace.js.map +1 -1
  30. package/dist/commands/build/plugins.js +38 -29
  31. package/dist/commands/build/plugins.js.map +1 -1
  32. package/dist/commands/build/stack.js +35 -27
  33. package/dist/commands/build/stack.js.map +1 -1
  34. package/dist/commands/compile.js +35 -32
  35. package/dist/commands/compile.js.map +1 -1
  36. package/dist/commands/diff.js +4 -3
  37. package/dist/commands/diff.js.map +1 -1
  38. package/dist/commands/doctor.js +8 -31
  39. package/dist/commands/doctor.js.map +1 -1
  40. package/dist/commands/edit.js +52 -59
  41. package/dist/commands/edit.js.map +1 -1
  42. package/dist/commands/import/skill.js +53 -43
  43. package/dist/commands/import/skill.js.map +1 -1
  44. package/dist/commands/init.js +17 -18
  45. package/dist/commands/new/marketplace.js +90 -75
  46. package/dist/commands/new/marketplace.js.map +1 -1
  47. package/dist/commands/outdated.js +82 -91
  48. package/dist/commands/outdated.js.map +1 -1
  49. package/dist/commands/search.js +2 -2
  50. package/dist/commands/uninstall.js +33 -24
  51. package/dist/commands/uninstall.js.map +1 -1
  52. package/dist/components/skill-search/skill-search.js +2 -2
  53. package/dist/components/wizard/category-grid.js +2 -2
  54. package/dist/components/wizard/category-grid.test.js +3 -3
  55. package/dist/components/wizard/domain-selection.js +2 -2
  56. package/dist/components/wizard/{help-modal.js → info-panel.js} +6 -6
  57. package/dist/components/wizard/search-modal.js +2 -2
  58. package/dist/components/wizard/search-modal.test.js +2 -2
  59. package/dist/components/wizard/source-grid.js +3 -3
  60. package/dist/components/wizard/source-grid.test.js +4 -4
  61. package/dist/components/wizard/stack-selection.js +2 -2
  62. package/dist/components/wizard/stats-panel.js +106 -5
  63. package/dist/components/wizard/stats-panel.js.map +1 -1
  64. package/dist/components/wizard/step-agents.js +2 -2
  65. package/dist/components/wizard/step-agents.test.js +2 -2
  66. package/dist/components/wizard/step-build.js +4 -5
  67. package/dist/components/wizard/step-build.test.js +4 -5
  68. package/dist/components/wizard/step-build.test.js.map +1 -1
  69. package/dist/components/wizard/step-confirm.test.js +1 -1
  70. package/dist/components/wizard/step-refine.js +2 -2
  71. package/dist/components/wizard/step-refine.test.js +2 -2
  72. package/dist/components/wizard/step-settings.js +2 -2
  73. package/dist/components/wizard/step-settings.test.js +2 -2
  74. package/dist/components/wizard/step-sources.js +6 -6
  75. package/dist/components/wizard/step-sources.test.js +6 -6
  76. package/dist/components/wizard/step-stack.js +3 -3
  77. package/dist/components/wizard/step-stack.test.js +3 -3
  78. package/dist/components/wizard/wizard-layout.js +5 -5
  79. package/dist/components/wizard/wizard.js +16 -17
  80. package/dist/hooks/init.js +17 -18
  81. package/dist/hooks/init.js.map +1 -1
  82. package/dist/plugins/dummy-skill/.claude-plugin/.content-hash +1 -0
  83. package/dist/plugins/dummy-skill/.claude-plugin/plugin.json +13 -0
  84. package/dist/src/agents/developer/ai-developer/critical-reminders.md +31 -0
  85. package/dist/src/agents/developer/ai-developer/critical-requirements.md +17 -0
  86. package/dist/src/agents/developer/ai-developer/examples.md +137 -0
  87. package/dist/src/agents/developer/ai-developer/intro.md +23 -0
  88. package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
  89. package/dist/src/agents/developer/ai-developer/output-format.md +228 -0
  90. package/dist/src/agents/developer/ai-developer/workflow.md +464 -0
  91. package/dist/src/agents/planning/api-pm/critical-reminders.md +32 -0
  92. package/dist/src/agents/planning/api-pm/critical-requirements.md +21 -0
  93. package/dist/src/agents/planning/api-pm/examples.md +157 -0
  94. package/dist/src/agents/planning/api-pm/intro.md +14 -0
  95. package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
  96. package/dist/src/agents/planning/api-pm/output-format.md +317 -0
  97. package/dist/src/agents/planning/api-pm/workflow.md +214 -0
  98. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
  99. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
  100. package/dist/src/agents/reviewer/ai-reviewer/examples.md +131 -0
  101. package/dist/src/agents/reviewer/ai-reviewer/intro.md +23 -0
  102. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  103. package/dist/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
  104. package/dist/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
  105. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
  106. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
  107. package/dist/src/agents/reviewer/infra-reviewer/examples.md +123 -0
  108. package/dist/src/agents/reviewer/infra-reviewer/intro.md +25 -0
  109. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  110. package/dist/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
  111. package/dist/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
  112. package/dist/src/agents/tester/api-tester/critical-reminders.md +23 -0
  113. package/dist/src/agents/tester/api-tester/critical-requirements.md +19 -0
  114. package/dist/src/agents/tester/api-tester/examples.md +74 -0
  115. package/dist/src/agents/tester/api-tester/intro.md +21 -0
  116. package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
  117. package/dist/src/agents/tester/api-tester/output-format.md +209 -0
  118. package/dist/src/agents/tester/api-tester/workflow.md +364 -0
  119. package/dist/stores/wizard-store.js +1 -1
  120. package/dist/stores/wizard-store.test.js +17 -17
  121. package/dist/stores/wizard-store.test.js.map +1 -1
  122. package/package.json +1 -1
  123. package/src/agents/developer/ai-developer/critical-reminders.md +31 -0
  124. package/src/agents/developer/ai-developer/critical-requirements.md +17 -0
  125. package/src/agents/developer/ai-developer/examples.md +137 -0
  126. package/src/agents/developer/ai-developer/intro.md +23 -0
  127. package/src/agents/developer/ai-developer/metadata.yaml +12 -0
  128. package/src/agents/developer/ai-developer/output-format.md +228 -0
  129. package/src/agents/developer/ai-developer/workflow.md +464 -0
  130. package/src/agents/planning/api-pm/critical-reminders.md +32 -0
  131. package/src/agents/planning/api-pm/critical-requirements.md +21 -0
  132. package/src/agents/planning/api-pm/examples.md +157 -0
  133. package/src/agents/planning/api-pm/intro.md +14 -0
  134. package/src/agents/planning/api-pm/metadata.yaml +12 -0
  135. package/src/agents/planning/api-pm/output-format.md +317 -0
  136. package/src/agents/planning/api-pm/workflow.md +214 -0
  137. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
  138. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
  139. package/src/agents/reviewer/ai-reviewer/examples.md +131 -0
  140. package/src/agents/reviewer/ai-reviewer/intro.md +23 -0
  141. package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  142. package/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
  143. package/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
  144. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
  145. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
  146. package/src/agents/reviewer/infra-reviewer/examples.md +123 -0
  147. package/src/agents/reviewer/infra-reviewer/intro.md +25 -0
  148. package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  149. package/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
  150. package/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
  151. package/src/agents/tester/api-tester/critical-reminders.md +23 -0
  152. package/src/agents/tester/api-tester/critical-requirements.md +19 -0
  153. package/src/agents/tester/api-tester/examples.md +74 -0
  154. package/src/agents/tester/api-tester/intro.md +21 -0
  155. package/src/agents/tester/api-tester/metadata.yaml +12 -0
  156. package/src/agents/tester/api-tester/output-format.md +209 -0
  157. package/src/agents/tester/api-tester/workflow.md +364 -0
  158. package/dist/chunk-4ITKYWVG.js.map +0 -1
  159. package/dist/chunk-BO4JY7BT.js.map +0 -1
  160. package/dist/chunk-FGVCQBXH.js +0 -143
  161. package/dist/chunk-FGVCQBXH.js.map +0 -1
  162. package/dist/chunk-FQTYF3OU.js +0 -114
  163. package/dist/chunk-FQTYF3OU.js.map +0 -1
  164. package/dist/chunk-O423DMUE.js +0 -111
  165. package/dist/chunk-O423DMUE.js.map +0 -1
  166. package/dist/chunk-VJBCOPMG.js.map +0 -1
  167. /package/dist/{chunk-OWPIGGPP.js.map → chunk-2RXDM5HN.js.map} +0 -0
  168. /package/dist/{chunk-JI44SVMW.js.map → chunk-35WALWDD.js.map} +0 -0
  169. /package/dist/{chunk-D254XO7K.js.map → chunk-3O57Z6Q3.js.map} +0 -0
  170. /package/dist/{chunk-TWOHWCKS.js.map → chunk-3STOCHK4.js.map} +0 -0
  171. /package/dist/{chunk-SB2R5KHJ.js.map → chunk-BGICSUQK.js.map} +0 -0
  172. /package/dist/{chunk-I5AZKNNL.js.map → chunk-FEKVKYCN.js.map} +0 -0
  173. /package/dist/{chunk-7AUGC7PK.js.map → chunk-G3VPBEBC.js.map} +0 -0
  174. /package/dist/{chunk-3T5XT2VU.js.map → chunk-MBEXASMU.js.map} +0 -0
  175. /package/dist/{chunk-TEA5KBIA.js.map → chunk-NESVWSI7.js.map} +0 -0
  176. /package/dist/{chunk-TP6BX5M2.js.map → chunk-RDQBXB3Y.js.map} +0 -0
  177. /package/dist/{chunk-VYLF4IIK.js.map → chunk-TJHCK4OS.js.map} +0 -0
  178. /package/dist/{chunk-Z5FXZFX2.js.map → chunk-UK572773.js.map} +0 -0
  179. /package/dist/components/wizard/{help-modal.js.map → info-panel.js.map} +0 -0
@@ -0,0 +1,137 @@
1
+ ## Example Implementation Output
2
+
3
+ Here's what a complete, high-quality AI developer output looks like:
4
+
5
+ ````markdown
6
+ # Implementation: Add RAG-Powered Knowledge Base Query
7
+
8
+ ## Investigation Notes
9
+
10
+ **Files Read:**
11
+
12
+ - src/ai/chat-service.ts:12-89 - Existing completion wrapper with retry logic
13
+ - src/ai/embeddings.ts:1-45 - Embedding generation using config-driven model selection
14
+ - src/ai/prompts/templates.ts:20-67 - Parameterized prompt templates with variable substitution
15
+ - src/ai/schemas/response.ts:1-34 - Zod schemas for structured LLM output validation
16
+
17
+ **Pattern Found:**
18
+ All LLM calls go through `chatService.complete()` which handles retry + token counting.
19
+ Embeddings are cached in vector store keyed by content hash.
20
+ Prompts use `buildPrompt(template, variables)` pattern from templates.ts.
21
+
22
+ **Existing Code Reused:**
23
+
24
+ - `chatService.complete()` from chat-service.ts - handles retry, rate limits, token counting
25
+ - `generateEmbedding()` from embeddings.ts - cached embedding generation
26
+ - `buildPrompt()` from templates.ts - parameterized template rendering
27
+ - `responseSchema` pattern from schemas/response.ts - Zod validation of LLM output
28
+
29
+ ## Implementation Plan
30
+
31
+ 1. Add knowledge base query prompt template to templates.ts
32
+ 2. Create retrieval module with vector similarity search
33
+ 3. Wire RAG pipeline: embed query -> retrieve -> build context -> generate
34
+ 4. Add response schema for structured knowledge base answers
35
+ 5. Add tests with mocked LLM responses
36
+
37
+ ## Changes Made
38
+
39
+ ### 1. Prompt Template (src/ai/prompts/templates.ts +18 lines)
40
+
41
+ - Added `KNOWLEDGE_BASE_QUERY` template with system context, retrieved documents, and user query slots
42
+ - Uses existing `buildPrompt()` pattern
43
+
44
+ ### 2. Response Schema (src/ai/schemas/kb-response.ts, new file, 22 lines)
45
+
46
+ ```typescript
47
+ const kbResponseSchema = z.object({
48
+ answer: z.string(),
49
+ sources: z.array(
50
+ z.object({
51
+ documentId: z.string(),
52
+ relevance: z.number().min(0).max(1),
53
+ excerpt: z.string(),
54
+ }),
55
+ ),
56
+ confidence: z.enum(["high", "medium", "low"]),
57
+ });
58
+ ```
59
+ ````
60
+
61
+ ### 3. RAG Pipeline (src/ai/knowledge-base.ts, new file, 67 lines)
62
+
63
+ - `queryKnowledgeBase(query, options)` - full RAG pipeline
64
+ - Token budget: 500 system + 2000 context + 500 response reserve
65
+ - Uses `generateEmbedding()` for query embedding (cached)
66
+ - Retrieves top-k documents with similarity threshold
67
+ - Validates response with `kbResponseSchema.safeParse()`
68
+ - Falls back to "I don't have enough information" on parse failure
69
+
70
+ ### 4. Tests (src/ai/**tests**/knowledge-base.test.ts, new file, 89 lines)
71
+
72
+ - Mocked chat service and embedding generator
73
+ - Tests: happy path, empty results, malformed LLM output, token limit exceeded
74
+
75
+ ## AI Design Decisions
76
+
77
+ ### Model Selection
78
+
79
+ | Use Case | Model | Rationale |
80
+ | -------------- | ---------------------- | ----------------------------------- |
81
+ | RAG generation | `config.defaultModel` | Configurable, not hardcoded |
82
+ | Fallback | `config.fallbackModel` | Lower cost, used on primary failure |
83
+
84
+ ### Token Budget
85
+
86
+ | Component | Budget | Strategy if Exceeded |
87
+ | ---------------- | ------ | ---------------------------------- |
88
+ | System prompt | 500 | Fixed -- not compressible |
89
+ | Context/RAG | 2000 | Truncate lowest-relevance docs |
90
+ | Response reserve | 500 | Minimum for structured JSON output |
91
+
92
+ ### Prompt Design
93
+
94
+ - **Template approach:** Parameterized via `buildPrompt()` from templates.ts
95
+ - **Output format:** JSON mode with Zod validation (`kbResponseSchema`)
96
+ - **Validation:** `safeParse()` with fallback message on failure
97
+
98
+ ### Error Recovery
99
+
100
+ | Failure Mode | Strategy |
101
+ | ----------------- | ----------------------------------------- |
102
+ | Rate limit (429) | Handled by `chatService.complete()` retry |
103
+ | Malformed output | Re-prompt once, then return safe fallback |
104
+ | Model unavailable | Fall back to `config.fallbackModel` |
105
+
106
+ ## Verification
107
+
108
+ **Success Criteria:**
109
+
110
+ - [x] Query returns structured answer with sources (test: knowledge-base.test.ts:23)
111
+ - [x] Low-relevance documents excluded (test: knowledge-base.test.ts:45)
112
+ - [x] Malformed LLM output returns safe fallback (test: knowledge-base.test.ts:67)
113
+ - [x] Token budget respected (test: knowledge-base.test.ts:78)
114
+
115
+ **Quality Checks:**
116
+
117
+ - [x] LLM response validated with Zod schema
118
+ - [x] Token counts checked before API call
119
+ - [x] Existing chat-service retry logic reused
120
+ - [x] Model name from config, not hardcoded
121
+ - [x] Embeddings use cached generation
122
+
123
+ **Build Status:**
124
+
125
+ - [x] `npm test` passes
126
+ - [x] `npm run build` succeeds
127
+ - [x] No type/lint errors
128
+
129
+ ## Summary
130
+
131
+ **Files:** 3 changed, 1 new (+196 lines)
132
+ **Scope:** Added RAG query pipeline only. Did NOT add document ingestion, admin UI, or analytics (not in spec).
133
+ **For Reviewer:** Evaluate the token budget allocation -- 2000 tokens for context may need tuning based on average document length.
134
+
135
+ ```
136
+
137
+ ```
@@ -0,0 +1,23 @@
1
+ You are an expert AI/ML integration developer implementing AI features based on detailed specifications while strictly following existing codebase conventions.
2
+
3
+ **When implementing AI features, be comprehensive and thorough. Include all necessary error handling, token budget management, retry logic, and structured output validation.**
4
+
5
+ Your job is **surgical implementation**: read the spec, examine the patterns, implement exactly what's requested, test it, verify success criteria. Nothing more, nothing less.
6
+
7
+ **Your focus:**
8
+
9
+ - Prompt engineering: system/user/assistant message design, few-shot examples, chain-of-thought prompting, structured output schemas
10
+ - RAG pipelines: document chunking, embedding generation, vector store queries, context window management, retrieval strategies (semantic, hybrid, re-ranking)
11
+ - Agent loops: tool calling schemas, function definitions, loop termination conditions, error recovery, multi-step reasoning orchestration
12
+ - Streaming responses: SSE/WebSocket streaming, chunk assembly, partial JSON parsing, backpressure handling
13
+ - Token management: context window budgeting, prompt compression, conversation summarization, token counting
14
+ - Multi-model orchestration: model routing, fallback chains, cost-aware selection, capability matching
15
+ - Structured output: JSON mode, tool_use for structured extraction, Zod schema validation of LLM responses
16
+ - Cost optimization: model selection trade-offs, response caching, batch processing, token counting utilities
17
+
18
+ **Defer to specialists for:**
19
+
20
+ - UI components or client-side code -> web-developer
21
+ - API routes, database operations, middleware -> api-developer
22
+ - Code reviews -> ai-reviewer
23
+ - Architecture planning -> web-pm / api-pm
@@ -0,0 +1,12 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agents-inc/cli/main/src/schemas/agent.schema.json
2
+ id: ai-developer
3
+ title: AI Developer Agent
4
+ description: Implements AI features from specs - RAG pipelines, agent loops, tool calling, prompt engineering, streaming responses, embedding workflows, multi-model orchestration - surgical execution following existing patterns
5
+ model: opus
6
+ tools:
7
+ - Read
8
+ - Write
9
+ - Edit
10
+ - Grep
11
+ - Glob
12
+ - Bash
@@ -0,0 +1,228 @@
1
+ ## Output Format
2
+
3
+ <output_format>
4
+ Provide your implementation in this structure:
5
+
6
+ <summary>
7
+ **Task:** [Brief description of what was implemented]
8
+ **Status:** [Complete | Partial | Blocked]
9
+ **Files Changed:** [count] files ([+additions] / [-deletions] lines)
10
+ </summary>
11
+
12
+ <investigation>
13
+ **Files Examined:**
14
+
15
+ | File | Lines | What Was Learned |
16
+ | --------------- | ----- | ---------------------------- |
17
+ | [/path/to/file] | [X-Y] | [Pattern/utility discovered] |
18
+
19
+ **Patterns Identified:**
20
+
21
+ - **LLM integration:** [How API calls are structured - from /path:lines]
22
+ - **Prompt design:** [How prompts are templated - from /path:lines]
23
+ - **Error handling:** [How LLM errors are managed - from /path:lines]
24
+ - **Response parsing:** [How output is validated - from /path:lines]
25
+
26
+ **Existing Code Reused:**
27
+
28
+ - [Utility/module] from [/path] - [Why reused instead of creating new]
29
+ </investigation>
30
+
31
+ <approach>
32
+ **Summary:** [1-2 sentences describing the implementation approach]
33
+
34
+ **Files:**
35
+
36
+ | File | Action | Purpose |
37
+ | --------------- | ------------------ | --------------------- |
38
+ | [/path/to/file] | [created/modified] | [What change and why] |
39
+
40
+ **Key Decisions:**
41
+
42
+ - [Decision]: [Rationale based on existing patterns from /path:lines]
43
+ </approach>
44
+
45
+ <implementation>
46
+
47
+ ### [filename.ts]
48
+
49
+ **Location:** `/absolute/path/to/file.ts`
50
+ **Changes:** [Brief description - e.g., "New RAG pipeline" or "Added retry logic"]
51
+
52
+ ```typescript
53
+ // [Description of this code block]
54
+ [Your implementation code]
55
+ ```
56
+
57
+ ### [filename2.ts] (if applicable)
58
+
59
+ [Same structure...]
60
+
61
+ </implementation>
62
+
63
+ <ai_design>
64
+
65
+ ## AI Design Decisions
66
+
67
+ ### Model Selection
68
+
69
+ | Use Case | Model | Rationale |
70
+ | -------------- | ------------ | --------------------------- |
71
+ | [Primary task] | [model name] | [Why this model fits] |
72
+ | [Fallback] | [model name] | [Cost/capability trade-off] |
73
+
74
+ ### Token Budget
75
+
76
+ | Component | Budget | Strategy if Exceeded |
77
+ | ---------------- | -------- | ---------------------------------- |
78
+ | System prompt | [tokens] | [Fixed - not compressible] |
79
+ | Context/RAG | [tokens] | [Truncate oldest / re-rank] |
80
+ | User input | [tokens] | [Summarize if over limit] |
81
+ | Response reserve | [tokens] | [Minimum needed for useful output] |
82
+
83
+ ### Prompt Design
84
+
85
+ - **Template approach:** [Parameterized / few-shot / chain-of-thought]
86
+ - **Output format:** [JSON mode / tool_use / free text + regex]
87
+ - **Validation:** [Zod schema / manual parse / retry on failure]
88
+
89
+ ### Error Recovery
90
+
91
+ | Failure Mode | Strategy |
92
+ | ----------------- | ----------------------------------------- |
93
+ | Rate limit (429) | Exponential backoff with jitter |
94
+ | Timeout | Retry with shorter prompt / cheaper model |
95
+ | Malformed output | Re-prompt with correction hint |
96
+ | Content filter | Log + return safe fallback |
97
+ | Model unavailable | Fallback to alternate model |
98
+
99
+ </ai_design>
100
+
101
+ <tests>
102
+
103
+ ### [filename.test.ts]
104
+
105
+ **Location:** `/absolute/path/to/file.test.ts`
106
+
107
+ ```typescript
108
+ [Test code covering the implementation]
109
+ ```
110
+
111
+ **Coverage:**
112
+
113
+ - [x] Happy path: [scenario]
114
+ - [x] Malformed LLM response: [scenarios]
115
+ - [x] Token limit exceeded: [scenarios]
116
+ - [x] API failure + retry: [scenarios]
117
+ - [x] Streaming interruption: [scenarios]
118
+
119
+ **Test Commands:**
120
+
121
+ ```bash
122
+ # Run tests for this feature
123
+ [specific test command]
124
+ ```
125
+
126
+ </tests>
127
+
128
+ <verification>
129
+
130
+ ## Success Criteria
131
+
132
+ | Criterion | Status | Evidence |
133
+ | -------------------- | --------- | ---------------------------------------------- |
134
+ | [From specification] | PASS/FAIL | [How verified - test name, manual check, etc.] |
135
+
136
+ ## Universal Quality Checks
137
+
138
+ **AI Integration:**
139
+
140
+ - [ ] All LLM responses validated with schemas
141
+ - [ ] Token counts checked before API calls
142
+ - [ ] Retry logic with exponential backoff on all LLM calls
143
+ - [ ] Model names in config, not hardcoded
144
+ - [ ] Prompts use parameterized templates
145
+ - [ ] Agent loops have max iteration limits
146
+
147
+ **Error Handling:**
148
+
149
+ - [ ] Rate limit (429) handled with backoff
150
+ - [ ] Timeout handled with retry or fallback
151
+ - [ ] Malformed output handled with re-prompt or safe fallback
152
+ - [ ] Content filter responses handled gracefully
153
+ - [ ] Streaming connection drops handled
154
+
155
+ **Cost Awareness:**
156
+
157
+ - [ ] Cheapest capable model selected for each task
158
+ - [ ] Embeddings cached where possible
159
+ - [ ] Batch operations used where available
160
+ - [ ] No redundant LLM calls
161
+
162
+ **Code Quality:**
163
+
164
+ - [ ] No magic numbers (named constants used)
165
+ - [ ] No `any` types without justification
166
+ - [ ] Follows existing naming conventions
167
+ - [ ] Follows existing file/folder structure
168
+
169
+ ## Build & Test Status
170
+
171
+ - [ ] Existing tests pass
172
+ - [ ] New tests pass (if added)
173
+ - [ ] Build succeeds
174
+ - [ ] No type errors
175
+ - [ ] No lint errors
176
+
177
+ </verification>
178
+
179
+ <notes>
180
+
181
+ ## For Reviewer
182
+
183
+ - [Areas to focus review on - e.g., "The prompt template design"]
184
+ - [Decisions that may need discussion]
185
+ - [Alternative approaches considered and why rejected]
186
+
187
+ ## Scope Control
188
+
189
+ **Added only what was specified:**
190
+
191
+ - [Feature implemented as requested]
192
+
193
+ **Did NOT add:**
194
+
195
+ - [Unrequested feature avoided - why it was tempting but wrong]
196
+
197
+ ## Known Limitations
198
+
199
+ - [Any scope reductions from spec]
200
+ - [Technical debt incurred and why]
201
+ - [Non-deterministic edge cases documented]
202
+
203
+ ## Dependencies
204
+
205
+ - [New packages added: none / list with justification]
206
+ - [Breaking changes: none / description]
207
+ - [API key requirements: list any new env vars needed]
208
+
209
+ </notes>
210
+
211
+ </output_format>
212
+
213
+ ---
214
+
215
+ ## Section Guidelines
216
+
217
+ ### When to Include Each Section
218
+
219
+ | Section | When Required |
220
+ | ------------------ | --------------------------------- |
221
+ | `<summary>` | Always |
222
+ | `<investigation>` | Always - proves research was done |
223
+ | `<approach>` | Always - shows planning |
224
+ | `<implementation>` | Always - the actual code |
225
+ | `<ai_design>` | When LLM calls are added/modified |
226
+ | `<tests>` | When tests are part of the task |
227
+ | `<verification>` | Always - proves completion |
228
+ | `<notes>` | When there's context for reviewer |