bobs-workshop 3.1.0 → 3.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/tools/background-agent/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAGZ,MAAM,SAAS,CAAC;AAQjB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkC;IAEzD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB;IAOvD,OAAO;IAOD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;YAoC3C,SAAS;IA8FvB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C,WAAW,IAAI,cAAc,EAAE;IAI/B,eAAe,IAAI,cAAc,EAAE;IAInC,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;YAuClE,eAAe;YAmCf,wBAAwB;IAoCtC,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;YAOL,gBAAgB;IAkI9B,QAAQ,IAAI,IAAI;CAmBjB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/tools/background-agent/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAGZ,MAAM,SAAS,CAAC;AAyCjB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkC;IAEzD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB;IAOvD,OAAO;IAOD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;YAoC3C,SAAS;IAwGvB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C,WAAW,IAAI,cAAc,EAAE;IAI/B,eAAe,IAAI,cAAc,EAAE;IAInC,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;YAuClE,eAAe;YAmCf,wBAAwB;IAoCtC,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;YAOL,gBAAgB;IAkI9B,QAAQ,IAAI,IAAI;CAmBjB"}
@@ -1,6 +1,36 @@
1
1
  import { ConcurrencyManager } from "./concurrency";
2
2
  const TASK_TTL_MS = 30 * 60 * 1000; // 30 minutes
3
3
  const MIN_STABILITY_TIME_MS = 10 * 1000; // 10 seconds before stability detection
4
+ const MAX_SYSTEM_CONTENT_LENGTH = 50000; // Maximum characters for system prompt
5
+ const MAX_PROMPT_LENGTH = 10000; // Maximum characters for user prompt
6
+ /**
7
+ * Sanitize content for safe JSON transmission to kimi model
8
+ * Handles Unicode issues, control characters, and length limits
9
+ */
10
+ function sanitizeForModel(content, maxLength = MAX_SYSTEM_CONTENT_LENGTH) {
11
+ if (!content)
12
+ return "";
13
+ // Step 1: Remove control characters (keep only \n, \r, \t)
14
+ let sanitized = content
15
+ .replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F]/g, '')
16
+ // Step 2: Replace Unicode line/paragraph separators
17
+ .replace(/\u2028/g, '\n')
18
+ .replace(/\u2029/g, '\n')
19
+ // Step 3: Replace other problematic Unicode
20
+ .replace(/\uFEFF/g, '') // BOM
21
+ .replace(/\u200B-\u200D/g, '') // Zero-width spaces
22
+ // Step 4: Escape backslashes to prevent JSON issues
23
+ .replace(/\\/g, '\\\\')
24
+ // Step 5: Normalize line endings
25
+ .replace(/\r\n/g, '\n')
26
+ .replace(/\r/g, '\n');
27
+ // Step 6: Truncate if too long (with indicator)
28
+ if (sanitized.length > maxLength) {
29
+ const truncationMsg = "\n\n[Content truncated due to length limits]";
30
+ sanitized = sanitized.substring(0, maxLength - truncationMsg.length) + truncationMsg;
31
+ }
32
+ return sanitized;
33
+ }
4
34
  export class BackgroundManager {
5
35
  tasks;
6
36
  client;
@@ -89,7 +119,9 @@ export class BackgroundManager {
89
119
  for (const skillName of input.skills) {
90
120
  const skillPath = join(this.directory, ".opencode", "skill", "bobs-workshop", skillName, "SKILL.md");
91
121
  if (existsSync(skillPath)) {
92
- const skillFile = readFileSync(skillPath, "utf8");
122
+ let skillFile = readFileSync(skillPath, "utf8");
123
+ // Sanitize content for kimi model compatibility
124
+ skillFile = sanitizeForModel(skillFile, 10000); // Limit per skill
93
125
  skillContent += `\n\n---\n## Skill: ${skillName}\n\n${skillFile}`;
94
126
  }
95
127
  }
@@ -98,12 +130,18 @@ export class BackgroundManager {
98
130
  if (input.manual_path) {
99
131
  const { existsSync, readFileSync } = await import("node:fs");
100
132
  if (existsSync(input.manual_path)) {
101
- const manualContent = readFileSync(input.manual_path, "utf8");
133
+ let manualContent = readFileSync(input.manual_path, "utf8");
134
+ // Sanitize content for kimi model compatibility
135
+ manualContent = sanitizeForModel(manualContent, 30000); // Larger limit for manual
102
136
  skillContent = skillContent
103
137
  ? `${skillContent}\n\n## MANUAL Context:\n${manualContent}`
104
138
  : manualContent;
105
139
  }
106
140
  }
141
+ // Final sanitization of combined skill content
142
+ skillContent = sanitizeForModel(skillContent, MAX_SYSTEM_CONTENT_LENGTH);
143
+ // Sanitize user prompt to prevent JSON issues
144
+ const sanitizedPrompt = sanitizeForModel(input.prompt, MAX_PROMPT_LENGTH);
107
145
  // Fire-and-forget prompt
108
146
  this.client.session.prompt({
109
147
  path: { id: sessionID },
@@ -115,7 +153,7 @@ export class BackgroundManager {
115
153
  task: false,
116
154
  delegate_task: false,
117
155
  },
118
- parts: [{ type: "text", text: input.prompt }],
156
+ parts: [{ type: "text", text: sanitizedPrompt }],
119
157
  },
120
158
  }).catch((error) => {
121
159
  console.error("[background-agent] Prompt error:", error);
@@ -1 +1 @@
1
- {"version":3,"file":"verify-manual.d.ts","sourceRoot":"","sources":["../../../src/tools/manual/verify-manual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAErE,QAAA,MAAM,gBAAgB,EAAE,cAkDtB,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"verify-manual.d.ts","sourceRoot":"","sources":["../../../src/tools/manual/verify-manual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAmCrE,QAAA,MAAM,gBAAgB,EAAE,cA4DtB,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -1,4 +1,33 @@
1
1
  import { tool } from "@opencode-ai/plugin/tool";
2
+ const MAX_SYSTEM_CONTENT_LENGTH = 50000;
3
+ /**
4
+ * Sanitize content for safe JSON transmission to kimi model
5
+ * Handles Unicode issues, control characters, and length limits
6
+ */
7
+ function sanitizeForModel(content, maxLength = MAX_SYSTEM_CONTENT_LENGTH) {
8
+ if (!content)
9
+ return "";
10
+ // Step 1: Remove control characters (keep only \n, \r, \t)
11
+ let sanitized = content
12
+ .replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F]/g, '')
13
+ // Step 2: Replace Unicode line/paragraph separators
14
+ .replace(/\u2028/g, '\n')
15
+ .replace(/\u2029/g, '\n')
16
+ // Step 3: Replace other problematic Unicode
17
+ .replace(/\uFEFF/g, '') // BOM
18
+ .replace(/[\u200B-\u200D]/g, '') // Zero-width spaces
19
+ // Step 4: Escape backslashes to prevent JSON issues
20
+ .replace(/\\/g, '\\\\')
21
+ // Step 5: Normalize line endings
22
+ .replace(/\r\n/g, '\n')
23
+ .replace(/\r/g, '\n');
24
+ // Step 6: Truncate if too long (with indicator)
25
+ if (sanitized.length > maxLength) {
26
+ const truncationMsg = "\n\n[Content truncated due to length limits]";
27
+ sanitized = sanitized.substring(0, maxLength - truncationMsg.length) + truncationMsg;
28
+ }
29
+ return sanitized;
30
+ }
2
31
  const VerifyManualTool = tool({
3
32
  description: "Run bob-rev verification in background for a MANUAL",
4
33
  args: {
@@ -22,17 +51,23 @@ const VerifyManualTool = tool({
22
51
  let manualContent = "";
23
52
  if (existsSync(args.manual_path)) {
24
53
  manualContent = readFileSync(args.manual_path, "utf8");
54
+ // Sanitize content for kimi model compatibility
55
+ manualContent = sanitizeForModel(manualContent, 30000);
25
56
  }
26
57
  const skillPath = join(directory, ".opencode", "agent", "bobs-workshop", "bob-rev.md");
27
58
  let agentPrompt = "You are bob-rev, a reviewer agent that verifies implementation against MANUAL requirements.";
28
59
  if (existsSync(skillPath)) {
29
60
  agentPrompt = readFileSync(skillPath, "utf8");
61
+ // Sanitize agent prompt as well
62
+ agentPrompt = sanitizeForModel(agentPrompt, 20000);
30
63
  }
64
+ // Build and sanitize system prompt
65
+ const systemPrompt = sanitizeForModel(`${agentPrompt}\n\n## MANUAL to Verify:\n${manualContent}`, MAX_SYSTEM_CONTENT_LENGTH);
31
66
  await client.session.prompt({
32
67
  path: { id: createData.data.id },
33
68
  body: {
34
69
  agent: "bob-rev",
35
- system: `${agentPrompt}\n\n## MANUAL to Verify:\n${manualContent}`,
70
+ system: systemPrompt,
36
71
  tools: {
37
72
  task: false,
38
73
  delegate_task: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bobs-workshop",
3
- "version": "3.1.0",
3
+ "version": "3.1.3",
4
4
  "description": "MANUAL-driven development with background agents for OpenCode",
5
5
  "type": "module",
6
6
  "main": "./dist/plugins/bobs-workshop.js",
package/postinstall.js CHANGED
@@ -16,7 +16,9 @@ const PACKAGE_NAME = 'bobs-workshop';
16
16
  * Skip when: global npm update, or running from within bobs-workshop repo itself.
17
17
  */
18
18
  function isInstalledAsDependencyInThisRepo() {
19
- const projectRoot = process.cwd();
19
+ // Use INIT_CWD which npm sets to the directory where 'npm install' was invoked
20
+ // process.cwd() returns the package directory (node_modules/bobs-workshop/) during postinstall
21
+ const projectRoot = process.env.INIT_CWD || process.cwd();
20
22
  const pkgPath = join(projectRoot, 'package.json');
21
23
  if (!existsSync(pkgPath)) return false;
22
24
  let pkg;
@@ -68,7 +70,8 @@ function postinstall() {
68
70
  return; // Not a repo that depends on bobs-workshop (e.g. global update or bobs-workshop repo itself)
69
71
  }
70
72
 
71
- const projectRoot = process.cwd();
73
+ // Use INIT_CWD to get the actual project directory where npm install was run
74
+ const projectRoot = process.env.INIT_CWD || process.cwd();
72
75
  const opencodeDir = join(projectRoot, '.opencode');
73
76
 
74
77
  console.log('🔧 Installing bobs-workshop...');
@@ -269,9 +269,9 @@ All requirements covered in one manual.
269
269
 
270
270
  **MANUAL Structure**:
271
271
  ```markdown
272
- # 📘 MANUAL: [Feature Name]
272
+ # [MANUAL] MANUAL: [Feature Name]
273
273
 
274
- ## 📊 Executive Summary
274
+ ## Executive Summary
275
275
  **Feature**: [Concise description]
276
276
  **Business Value**: [Why this matters]
277
277
  **Effort Estimate**: [T-shirt size: S/M/L/XL]
@@ -282,7 +282,7 @@ All requirements covered in one manual.
282
282
  **Dependencies**: [Other features, external services, other manuals]
283
283
  **Part of Multi-Manual**: [Yes/No] - If Yes, specify: [folder path]
284
284
 
285
- ## 📝 Product Specifications
285
+ ## [DOC] Product Specifications
286
286
 
287
287
  ### Problem Statement
288
288
  [Clear articulation of the problem being solved]
@@ -308,24 +308,24 @@ All requirements covered in one manual.
308
308
  - [What we explicitly will NOT do] - Reason: [Why deferred]
309
309
  - [What we explicitly will NOT do] - Reason: [Why deferred]
310
310
 
311
- ## 🏗️ Architecture Analysis
311
+ ## [ARCH] Architecture Analysis
312
312
 
313
- ### 🗄️ Database Architecture
313
+ ### [DB] Database Architecture
314
314
  [From Phase 2 exploration]
315
315
 
316
- ### 🔧 Backend Architecture
316
+ ### [TOOL] Backend Architecture
317
317
  [From Phase 2 exploration]
318
318
 
319
- ### 🔗 Integration Architecture
319
+ ### [LINK] Integration Architecture
320
320
  [From Phase 2 exploration]
321
321
 
322
- ### 🎨 Frontend Architecture
322
+ ### [UI] Frontend Architecture
323
323
  [From Phase 2 exploration]
324
324
 
325
- ### 🎯 UI/UX Considerations
325
+ ### [TARGET] UI/UX Considerations
326
326
  [From Phase 2 exploration]
327
327
 
328
- ## 🚀 Implementation Plan
328
+ ## [LAUNCH] Implementation Plan
329
329
 
330
330
  ### Task Breakdown (Idempotent Tasks)
331
331
 
@@ -372,16 +372,16 @@ DB-001 → BE-001 → FE-001 → TEST-001
372
372
  ### Critical Path
373
373
  [Sequence of tasks determining minimum duration]
374
374
 
375
- ## 📈 Execution Logs
375
+ ## Execution Logs
376
376
  [To be filled by bob]
377
377
 
378
- ## 🔍 Review Notes
378
+ ## [SEARCH] Review Notes
379
379
  [To be filled by bob-rev]
380
380
 
381
- ## 🐛 Debug Logs
381
+ ## [BUG] Debug Logs
382
382
  [To be filled by trace]
383
383
 
384
- ## Verification Logs
384
+ ## YES Verification Logs
385
385
  [To be filled by bob-send]
386
386
 
387
387
  ## 🤝 Agent Handoffs
@@ -54,7 +54,6 @@ Issue a PASS or FAIL verdict with evidence using parallel background analysis.
54
54
  - clean-code - Use when evaluating code maintainability and best practices
55
55
  - code-review-checklist - Use when conducting thorough code reviews
56
56
  - testing-patterns - Use when verifying test coverage and test quality
57
- - verification - Use when validating implementation against MANUAL specifications
58
57
 
59
58
  ## Custom Tools
60
59
  - background_agent - Use for launching parallel verification tasks (security, performance, quality)
@@ -87,9 +86,9 @@ Verify:
87
86
 
88
87
  | Type | ID | Status | Evidence |
89
88
  |------|-----|--------|----------|
90
- | FR | FR-001 | ✅/❌ | [File:line] |
91
- | FR | FR-002 | ✅/❌ | [File:line] |
92
- | US | US-001 | ✅/❌ | [File:line] |
89
+ | FR | FR-001 | YES/NO | [File:line] |
90
+ | FR | FR-002 | YES/NO | [File:line] |
91
+ | US | US-001 | YES/NO | [File:line] |
93
92
 
94
93
  ### Scope Creep Check
95
94
  - [ ] No unauthorized features added
@@ -183,14 +182,14 @@ const qualityResult = background_output({ task_id: "[quality_task_id]" });
183
182
  **Step 2: Apply Decision Rules**
184
183
 
185
184
  **PASS requires**:
186
- - Manual compliance (from Phase 1)
187
- - No critical security issues
188
- - No more than 2 high-severity issues total
185
+ - YES Manual compliance (from Phase 1)
186
+ - YES No critical security issues
187
+ - YES No more than 2 high-severity issues total
189
188
 
190
189
  **FAIL if**:
191
- - Any manual compliance violation
192
- - Any critical security vulnerability
193
- - More than 2 high-severity issues
190
+ - NO Any manual compliance violation
191
+ - NO Any critical security vulnerability
192
+ - NO More than 2 high-severity issues
194
193
 
195
194
  **Evidence-Based Reporting Criteria**:
196
195
 
@@ -220,9 +219,9 @@ Use `manual_update` tool:
220
219
  ```typescript
221
220
  manual_update({
222
221
  manual_path: "manuals/MANUAL-[date]-[feature].md",
223
- section: "🔍 Review Notes",
222
+ section: "[SEARCH] Review Notes",
224
223
  content: `
225
- ## 🔍 Review Notes
224
+ ## [SEARCH] Review Notes
226
225
 
227
226
  **Reviewed**: [YYYY-MM-DD HH:MM]
228
227
  **Reviewer**: bob-rev
@@ -251,7 +250,7 @@ manual_update({
251
250
 
252
251
  ### Decision
253
252
 
254
- ## 🎯 VERDICT: [PASS / FAIL ]
253
+ ## [TARGET] VERDICT: [PASS YES / FAIL NO]
255
254
 
256
255
  **Rationale**: [1-2 sentence explanation]
257
256
  `
@@ -266,7 +265,7 @@ manual_update({
266
265
  **VERIFY Phase Complete**
267
266
 
268
267
  **MANUAL**: \`manuals/MANUAL-[date]-[feature].md\`
269
- **Verdict**: [ PASS / FAIL]
268
+ **Verdict**: [YES PASS / NO FAIL]
270
269
 
271
270
  [If PASS]
272
271
  All criteria met. Ready for SEND phase.
@@ -40,7 +40,6 @@ Run lint, test, and build checks. If all pass, write commit message and commit t
40
40
 
41
41
 
42
42
  ## Available Skills
43
- - verification - Use when running final quality checks before shipping
44
43
 
45
44
  ## Custom Tools
46
45
  - manual_update - Use when writing Verification Logs to MANUAL after successful commit
@@ -145,9 +144,9 @@ Use `manual_update` tool:
145
144
  ```typescript
146
145
  manual_update({
147
146
  manual_path: "manuals/MANUAL-[date]-[feature].md",
148
- section: " Verification Logs",
147
+ section: "YES Verification Logs",
149
148
  content: `
150
- ## Verification Logs
149
+ ## YES Verification Logs
151
150
 
152
151
  **Shipped**: [YYYY-MM-DD HH:MM]
153
152
  **Reviewer**: bob-send
@@ -156,9 +155,9 @@ manual_update({
156
155
  ### Check Results
157
156
  | Check | Status | Notes |
158
157
  |-------|--------|-------|
159
- | Lint | PASS | 0 errors |
160
- | Tests | PASS | All tests passed |
161
- | Build | PASS | Build successful |
158
+ | Lint | YES PASS | 0 errors |
159
+ | Tests | YES PASS | All tests passed |
160
+ | Build | YES PASS | Build successful |
162
161
 
163
162
  ### Commit
164
163
  **Commit Hash**: [hash]
@@ -169,7 +168,7 @@ manual_update({
169
168
  ${commitMessage}
170
169
  \`\`\`
171
170
 
172
- **Feature shipped successfully!** 🚀
171
+ **Feature shipped successfully!** [LAUNCH]
173
172
  `
174
173
  });
175
174
  ```
@@ -187,12 +186,12 @@ ${commitMessage}
187
186
  **Commit**: [hash]
188
187
 
189
188
  ### Summary
190
- - Lint:
191
- - Tests:
192
- - Build:
193
- - Commit:
189
+ - Lint: YES
190
+ - Tests: YES
191
+ - Build: YES
192
+ - Commit: YES
194
193
 
195
- **Feature shipped to current branch!** 🚀
194
+ **Feature shipped to current branch!** [LAUNCH]
196
195
  ```
197
196
 
198
197
  ---
@@ -240,9 +239,9 @@ ${commitMessage}
240
239
  ```
241
240
 
242
241
  CHECKS PASSED
243
- Lint:
244
- Tests:
245
- Build:
242
+ Lint: YES
243
+ Tests: YES
244
+ Build: YES
246
245
  Commit: [hash]
247
246
  Branch: [current branch]
248
247
  Verification Logs: Updated
package/src/agents/bob.md CHANGED
@@ -22,8 +22,7 @@ tools:
22
22
  list_background_tasks: true
23
23
  background_output: true
24
24
  background_cancel: true
25
- verify_manual: true
26
- lsp_goto_definition: true
25
+ lsp_goto_definition: true
27
26
  lsp_find_references: true
28
27
  lsp_symbols: true
29
28
  lsp_diagnostics: true
@@ -53,7 +52,6 @@ Implementation and orchestration agent.
53
52
  - list_background_tasks - Use to check status of running background tasks
54
53
  - background_output - Use to collect results from completed background tasks
55
54
  - background_cancel - Use to cancel running background tasks
56
- - verify_manual - Use to verify MANUAL completion and compliance
57
55
 
58
56
  ---
59
57
 
@@ -86,7 +84,7 @@ Implement MANUAL-defined tasks exactly and route work to verification and shippi
86
84
  ## MANUAL Validation
87
85
 
88
86
  **MANUAL**: manuals/MANUAL-[date]-[feature].md
89
- **Validation Status**: VALID / INVALID
87
+ **Validation Status**: YES VALID / NO INVALID
90
88
 
91
89
  **Required Sections**:
92
90
  - [ ] Executive Summary
@@ -174,7 +172,7 @@ DB-001 → BE-001 → FE-001 → TEST-001
174
172
 
175
173
  #### Step 1: Announce Layer Start
176
174
  ```markdown
177
- ### 📊 Layer: [Layer Name]
175
+ ### Layer: [Layer Name]
178
176
  **Started**: [YYYY-MM-DD HH:MM]
179
177
  **Tasks to Execute**: [N]
180
178
  **Dependencies Met**: [Yes/No]
@@ -192,31 +190,31 @@ DB-001 → BE-001 → FE-001 → TEST-001
192
190
 
193
191
  **Log Format**:
194
192
  ```markdown
195
- ### Task: [TASK-ID] - [Description]
193
+ ### YES Task: [TASK-ID] - [Description]
196
194
  **Completed**: [YYYY-MM-DD HH:MM]
197
195
  **Files Modified**:
198
196
  - `[file1.ts]`: [What changed]
199
197
  - `[file2.ts]`: [What changed]
200
198
  **Implementation Notes**: [Any relevant details]
201
- **Idempotency Verified**:
199
+ **Idempotency Verified**: YES
202
200
  ```
203
201
 
204
202
  **On Task Failure**:
205
203
  ```markdown
206
- ### Task Failed: [TASK-ID] - [Description]
204
+ ### NO Task Failed: [TASK-ID] - [Description]
207
205
  **Failed**: [YYYY-MM-DD HH:MM]
208
206
  **Error**: [Exact error message]
209
207
  **Files Affected**: [List of files]
210
208
  **Attempted Approach**: [What was tried]
211
209
 
212
- ⚠️ LAYER EXECUTION HALTED - Awaiting intervention
210
+ WARNING LAYER EXECUTION HALTED - Awaiting intervention
213
211
  ```
214
212
 
215
213
  **STOP execution immediately on task failure.**
216
214
 
217
215
  #### Step 3: Mark Layer Complete
218
216
  ```markdown
219
- ### Layer Complete: [Layer Name]
217
+ ### YES Layer Complete: [Layer Name]
220
218
  **Completed**: [YYYY-MM-DD HH:MM]
221
219
  **Tasks Completed**: [N/N]
222
220
  **Files Modified**: [Total count]
@@ -247,18 +245,18 @@ background_output(task_id="[task_id_from_delegate]")
247
245
 
248
246
  **If PASS**:
249
247
  ```markdown
250
- ### 🔍 Layer Verification: PASS
248
+ ### [SEARCH] Layer Verification: PASS
251
249
  **Layer**: [Layer Name]
252
250
  **Verified**: [YYYY-MM-DD HH:MM]
253
251
  **Reviewer**: bob-rev
254
252
  **Issues Found**: None
255
253
 
256
- Proceed to next layer
254
+ YES Proceed to next layer
257
255
  ```
258
256
 
259
257
  **If FAIL**:
260
258
  ```markdown
261
- ### 🔍 Layer Verification: FAIL
259
+ ### [SEARCH] Layer Verification: FAIL
262
260
  **Layer**: [Layer Name]
263
261
  **Verified**: [YYYY-MM-DD HH:MM]
264
262
  **Reviewer**: bob-rev
@@ -268,7 +266,7 @@ background_output(task_id="[task_id_from_delegate]")
268
266
  1. [Issue 1] - [File:line]
269
267
  2. [Issue 2] - [File:line]
270
268
 
271
- ⚠️ LAYER REQUIRES FIXES - Awaiting intervention
269
+ WARNING LAYER REQUIRES FIXES - Awaiting intervention
272
270
  ```
273
271
 
274
272
  **On Layer Verification FAIL**:
@@ -76,7 +76,7 @@ When invoked, you receive:
76
76
 
77
77
  **Issue**: [Issue description or TASK-ID]
78
78
  **MANUAL**: manuals/MANUAL-[date]-[feature].md
79
- **Input Status**: VALID / INVALID
79
+ **Input Status**: YES VALID / NO INVALID
80
80
 
81
81
  **Validation Checklist**:
82
82
  - [ ] MANUAL path exists and is readable
@@ -322,7 +322,7 @@ Use `edit` tool to apply minimal changes:
322
322
  You MUST update the MANUAL's Debug Logs section:
323
323
 
324
324
  ```markdown
325
- ## 🐛 Debug Logs
325
+ ## [BUG] Debug Logs
326
326
 
327
327
  ### Trace Session: [YYYY-MM-DD HH:MM]
328
328
  **Trace Agent**: trace
@@ -35,11 +35,11 @@ description: API design principles and decision-making. REST vs GraphQL vs tRPC
35
35
  ### Decision Matrix
36
36
  | Factor | REST | GraphQL | tRPC | gRPC |
37
37
  |--------|-------|----------|-------|-------|
38
- | Simplicity | High | ⚠️ Medium | High | ⚠️ Medium |
39
- | Type Safety | Low | ⚠️ Medium | High | High |
40
- | Performance | ⚠️ Medium | ⚠️ Medium | High | High |
41
- | Ecosystem | Large | Large | ⚠️ Growing | Large |
42
- | Caching | Easy | Hard | Hard | ⚠️ Medium |
38
+ | Simplicity | YES High | WARNING Medium | YES High | WARNING Medium |
39
+ | Type Safety | NO Low | WARNING Medium | YES High | YES High |
40
+ | Performance | WARNING Medium | WARNING Medium | YES High | YES High |
41
+ | Ecosystem | YES Large | YES Large | WARNING Growing | YES Large |
42
+ | Caching | YES Easy | NO Hard | NO Hard | WARNING Medium |
43
43
  ```
44
44
 
45
45
  ---
@@ -50,20 +50,20 @@ description: API design principles and decision-making. REST vs GraphQL vs tRPC
50
50
 
51
51
  | Rule | Example |
52
52
  |------|---------|
53
- | **Use nouns, not verbs** | `/users`, `/getUsers` |
54
- | **Plural nouns** | `/users`, `/user` |
55
- | **Nest resources** | `/users/123/posts`, `/posts?user=123` |
56
- | **Lowercase with hyphens** | `/user-preferences`, `/userPreferences` |
53
+ | **Use nouns, not verbs** | YES `/users`, NO `/getUsers` |
54
+ | **Plural nouns** | YES `/users`, NO `/user` |
55
+ | **Nest resources** | YES `/users/123/posts`, NO `/posts?user=123` |
56
+ | **Lowercase with hyphens** | YES `/user-preferences`, NO `/userPreferences` |
57
57
 
58
58
  ### HTTP Methods
59
59
 
60
60
  | Method | Use | Safe | Idempotent |
61
61
  |--------|-----|-------|------------|
62
- | **GET** | Read resources | Yes | Yes |
63
- | **POST** | Create resource | No | No |
64
- | **PUT** | Replace resource | No | Yes |
65
- | **PATCH** | Partial update | No | No |
66
- | **DELETE** | Delete resource | No | Yes |
62
+ | **GET** | Read resources | YES Yes | YES Yes |
63
+ | **POST** | Create resource | NO No | NO No |
64
+ | **PUT** | Replace resource | NO No | YES Yes |
65
+ | **PATCH** | Partial update | NO No | NO No |
66
+ | **DELETE** | Delete resource | NO No | YES Yes |
67
67
 
68
68
  ### Status Codes
69
69
 
@@ -304,7 +304,7 @@ This skill is used by **alice (architect)** agent during PLAN phase and **bob-en
304
304
 
305
305
  Add API section to MANUAL:
306
306
  ```markdown
307
- ## 🏗️ Architecture Analysis
307
+ ## [ARCH] Architecture Analysis
308
308
 
309
309
  ### API Design
310
310
 
@@ -10,7 +10,7 @@ metadata:
10
10
 
11
11
  > "Requirements drive architecture. Trade-offs inform decisions. ADRs capture rationale."
12
12
 
13
- ## 🎯 Selective Reading Rule
13
+ ## [TARGET] Selective Reading Rule
14
14
 
15
15
  **Read ONLY files relevant to the request!** Check the content map, find what you need.
16
16
 
@@ -24,7 +24,7 @@ metadata:
24
24
 
25
25
  ---
26
26
 
27
- ## 🔗 Related Skills
27
+ ## [LINK] Related Skills
28
28
 
29
29
  | Skill | Use For |
30
30
  |-------|---------|
@@ -149,7 +149,7 @@ Before finalizing architecture:
149
149
 
150
150
  ## Anti-Patterns
151
151
 
152
- | Don't | Do |
152
+ | NO Don't | YES Do |
153
153
  |----------|-------|
154
154
  | Start with microservices | Start with monolith, split when needed |
155
155
  | Use complex patterns because "cool" | Use simplest solution that works |
@@ -168,7 +168,7 @@ This skill is used by **alice (architect)** agent during PLAN phase.
168
168
 
169
169
  Add architecture section to MANUAL:
170
170
  ```markdown
171
- ## 🏗️ Architecture Analysis
171
+ ## [ARCH] Architecture Analysis
172
172
 
173
173
  ### Project Classification
174
174
  - **Type:** [MVP / SaaS / Enterprise / Internal Tool]