opencastle 0.6.0 → 0.8.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 (223) hide show
  1. package/README.md +8 -7
  2. package/dist/cli/adapters/claude-code.d.ts.map +1 -1
  3. package/dist/cli/adapters/claude-code.js +30 -3
  4. package/dist/cli/adapters/claude-code.js.map +1 -1
  5. package/dist/cli/adapters/cursor.d.ts.map +1 -1
  6. package/dist/cli/adapters/cursor.js +27 -3
  7. package/dist/cli/adapters/cursor.js.map +1 -1
  8. package/dist/cli/adapters/opencode.d.ts +20 -0
  9. package/dist/cli/adapters/opencode.d.ts.map +1 -0
  10. package/dist/cli/adapters/opencode.js +265 -0
  11. package/dist/cli/adapters/opencode.js.map +1 -0
  12. package/dist/cli/adapters/vscode.d.ts.map +1 -1
  13. package/dist/cli/adapters/vscode.js +37 -6
  14. package/dist/cli/adapters/vscode.js.map +1 -1
  15. package/dist/cli/copy.d.ts +12 -0
  16. package/dist/cli/copy.d.ts.map +1 -1
  17. package/dist/cli/copy.js +27 -0
  18. package/dist/cli/copy.js.map +1 -1
  19. package/dist/cli/detect.d.ts +1 -1
  20. package/dist/cli/detect.js +21 -15
  21. package/dist/cli/detect.js.map +1 -1
  22. package/dist/cli/init.d.ts.map +1 -1
  23. package/dist/cli/init.js +143 -94
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/manifest.d.ts +1 -1
  26. package/dist/cli/manifest.d.ts.map +1 -1
  27. package/dist/cli/manifest.js +2 -1
  28. package/dist/cli/manifest.js.map +1 -1
  29. package/dist/cli/mcp.d.ts +6 -6
  30. package/dist/cli/mcp.d.ts.map +1 -1
  31. package/dist/cli/mcp.js +104 -33
  32. package/dist/cli/mcp.js.map +1 -1
  33. package/dist/cli/prompt.d.ts +19 -0
  34. package/dist/cli/prompt.d.ts.map +1 -1
  35. package/dist/cli/prompt.js +143 -0
  36. package/dist/cli/prompt.js.map +1 -1
  37. package/dist/cli/stack-config.d.ts +23 -0
  38. package/dist/cli/stack-config.d.ts.map +1 -1
  39. package/dist/cli/stack-config.js +128 -124
  40. package/dist/cli/stack-config.js.map +1 -1
  41. package/dist/cli/types.d.ts +26 -9
  42. package/dist/cli/types.d.ts.map +1 -1
  43. package/dist/cli/types.js +26 -1
  44. package/dist/cli/types.js.map +1 -1
  45. package/dist/cli/update.d.ts.map +1 -1
  46. package/dist/cli/update.js +60 -19
  47. package/dist/cli/update.js.map +1 -1
  48. package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
  49. package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
  50. package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
  51. package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
  52. package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
  53. package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
  54. package/dist/orchestrator/plugins/contentful/config.js +48 -0
  55. package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
  56. package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
  57. package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
  58. package/dist/orchestrator/plugins/convex/config.js +32 -0
  59. package/dist/orchestrator/plugins/convex/config.js.map +1 -0
  60. package/dist/orchestrator/plugins/index.d.ts +28 -0
  61. package/dist/orchestrator/plugins/index.d.ts.map +1 -0
  62. package/dist/orchestrator/plugins/index.js +63 -0
  63. package/dist/orchestrator/plugins/index.js.map +1 -0
  64. package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
  65. package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
  66. package/dist/orchestrator/plugins/jira/config.js +29 -0
  67. package/dist/orchestrator/plugins/jira/config.js.map +1 -0
  68. package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
  69. package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
  70. package/dist/orchestrator/plugins/linear/config.js +33 -0
  71. package/dist/orchestrator/plugins/linear/config.js.map +1 -0
  72. package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
  73. package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
  74. package/dist/orchestrator/plugins/nx/config.js +28 -0
  75. package/dist/orchestrator/plugins/nx/config.js.map +1 -0
  76. package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
  77. package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
  78. package/dist/orchestrator/plugins/sanity/config.js +43 -0
  79. package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
  80. package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
  81. package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
  82. package/dist/orchestrator/plugins/slack/config.js +34 -0
  83. package/dist/orchestrator/plugins/slack/config.js.map +1 -0
  84. package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
  85. package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
  86. package/dist/orchestrator/plugins/strapi/config.js +40 -0
  87. package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
  88. package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
  89. package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
  90. package/dist/orchestrator/plugins/supabase/config.js +33 -0
  91. package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
  92. package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
  93. package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
  94. package/dist/orchestrator/plugins/teams/config.js +43 -0
  95. package/dist/orchestrator/plugins/teams/config.js.map +1 -0
  96. package/dist/orchestrator/plugins/types.d.ts +61 -0
  97. package/dist/orchestrator/plugins/types.d.ts.map +1 -0
  98. package/dist/orchestrator/plugins/types.js +2 -0
  99. package/dist/orchestrator/plugins/types.js.map +1 -0
  100. package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
  101. package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
  102. package/dist/orchestrator/plugins/vercel/config.js +32 -0
  103. package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
  104. package/package.json +1 -1
  105. package/src/cli/adapters/claude-code.ts +36 -4
  106. package/src/cli/adapters/cursor.ts +42 -4
  107. package/src/cli/adapters/opencode.ts +320 -0
  108. package/src/cli/adapters/vscode.ts +40 -8
  109. package/src/cli/copy.ts +32 -0
  110. package/src/cli/detect.ts +17 -17
  111. package/src/cli/init.ts +157 -99
  112. package/src/cli/manifest.ts +2 -1
  113. package/src/cli/mcp.ts +129 -50
  114. package/src/cli/prompt.ts +176 -0
  115. package/src/cli/stack-config.ts +174 -145
  116. package/src/cli/types.ts +39 -8
  117. package/src/cli/update.ts +71 -20
  118. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  119. package/src/orchestrator/agent-workflows/README.md +1 -1
  120. package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
  121. package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
  122. package/src/orchestrator/agent-workflows/database-migration.md +11 -11
  123. package/src/orchestrator/agent-workflows/feature-implementation.md +19 -12
  124. package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
  125. package/src/orchestrator/agent-workflows/refactoring.md +10 -10
  126. package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
  127. package/src/orchestrator/agent-workflows/security-audit.md +12 -12
  128. package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
  129. package/src/orchestrator/agents/api-designer.agent.md +1 -1
  130. package/src/orchestrator/agents/architect.agent.md +2 -2
  131. package/src/orchestrator/agents/content-engineer.agent.md +3 -3
  132. package/src/orchestrator/agents/copywriter.agent.md +2 -2
  133. package/src/orchestrator/agents/data-expert.agent.md +6 -6
  134. package/src/orchestrator/agents/database-engineer.agent.md +3 -3
  135. package/src/orchestrator/agents/developer.agent.md +4 -4
  136. package/src/orchestrator/agents/devops-expert.agent.md +5 -5
  137. package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
  138. package/src/orchestrator/agents/performance-expert.agent.md +2 -2
  139. package/src/orchestrator/agents/release-manager.agent.md +4 -4
  140. package/src/orchestrator/agents/researcher.agent.md +3 -3
  141. package/src/orchestrator/agents/reviewer.agent.md +1 -1
  142. package/src/orchestrator/agents/security-expert.agent.md +4 -4
  143. package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
  144. package/src/orchestrator/agents/team-lead.agent.md +56 -38
  145. package/src/orchestrator/agents/testing-expert.agent.md +5 -5
  146. package/src/orchestrator/agents/ui-ux-expert.agent.md +6 -6
  147. package/src/orchestrator/copilot-instructions.md +1 -1
  148. package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
  149. package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
  150. package/src/orchestrator/customizations/DISPUTES.md +5 -5
  151. package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
  152. package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
  153. package/src/orchestrator/customizations/README.md +5 -2
  154. package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
  155. package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
  156. package/src/orchestrator/customizations/logs/README.md +1 -1
  157. package/src/orchestrator/customizations/project/decisions.md +31 -0
  158. package/src/orchestrator/customizations/project/docs-structure.md +16 -5
  159. package/src/orchestrator/customizations/project/roadmap.md +24 -0
  160. package/src/orchestrator/customizations/project/tracker-config.md +1 -1
  161. package/src/orchestrator/customizations/stack/cms-config.md +1 -1
  162. package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
  163. package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
  164. package/src/orchestrator/instructions/general.instructions.md +102 -40
  165. package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
  166. package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
  167. package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
  168. package/src/orchestrator/plugins/contentful/config.ts +49 -0
  169. package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
  170. package/src/orchestrator/plugins/convex/config.ts +33 -0
  171. package/src/orchestrator/plugins/index.ts +85 -0
  172. package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
  173. package/src/orchestrator/plugins/jira/config.ts +30 -0
  174. package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
  175. package/src/orchestrator/plugins/linear/config.ts +34 -0
  176. package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
  177. package/src/orchestrator/plugins/nx/config.ts +29 -0
  178. package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
  179. package/src/orchestrator/plugins/sanity/config.ts +44 -0
  180. package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
  181. package/src/orchestrator/plugins/slack/config.ts +35 -0
  182. package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
  183. package/src/orchestrator/plugins/strapi/config.ts +41 -0
  184. package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
  185. package/src/orchestrator/plugins/supabase/config.ts +34 -0
  186. package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
  187. package/src/orchestrator/plugins/teams/config.ts +44 -0
  188. package/src/orchestrator/plugins/types.ts +79 -0
  189. package/src/orchestrator/plugins/vercel/config.ts +33 -0
  190. package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +8 -8
  191. package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
  192. package/src/orchestrator/prompts/bug-fix.prompt.md +27 -22
  193. package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
  194. package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
  195. package/src/orchestrator/prompts/implement-feature.prompt.md +34 -29
  196. package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
  197. package/src/orchestrator/prompts/quick-refinement.prompt.md +23 -19
  198. package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +19 -5
  199. package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
  200. package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
  201. package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
  202. package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
  203. package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
  204. package/src/orchestrator/skills/context-map/SKILL.md +4 -4
  205. package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
  206. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
  207. package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
  208. package/src/orchestrator/skills/fast-review/SKILL.md +18 -7
  209. package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
  210. package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
  211. package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
  212. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
  213. package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
  214. package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
  215. package/src/orchestrator/skills/react-development/SKILL.md +3 -3
  216. package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
  217. package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
  218. package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
  219. package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
  220. package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
  221. package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
  222. package/src/orchestrator/skills/validation-gates/SKILL.md +157 -27
  223. package/src/orchestrator/mcp.json +0 -69
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: 'Investigate and fix a reported bug with proper triage, root cause analysis, Linear tracking, and verification.'
2
+ description: 'Investigate and fix a reported bug with proper triage, root cause analysis, issue tracking, and verification.'
3
3
  agent: Team Lead
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Fix Bug
9
9
 
@@ -21,7 +21,7 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
21
21
 
22
22
  | Aspect | Roadmap Task | Follow-Up | Bug Fix |
23
23
  |--------|-------------|-----------|---------|
24
- | Linear tracking | Required | Not required | **Required** |
24
+ | Issue tracking | Required | Not required | **Required** |
25
25
  | Urgency | Planned | Low | Can be critical |
26
26
  | Root cause analysis | Feature design | Not needed | **Required** |
27
27
  | Reproduction steps | N/A | N/A | **Required** |
@@ -35,11 +35,11 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
35
35
 
36
36
  Before fixing anything, understand the bug:
37
37
 
38
- 1. **Check known issues** — Search `docs/KNOWN-ISSUES.md` for an existing entry. If found, note workarounds and decide if a fix is now feasible
39
- 2. **Check Linear** — Search for existing bug tickets. If one exists, take it over instead of creating a duplicate
38
+ 1. **Check known issues** — Search `.github/customizations/KNOWN-ISSUES.md` for an existing entry. If found, note workarounds and decide if a fix is now feasible
39
+ 2. **Check tracker** — Search for existing bug tickets. If one exists, take it over instead of creating a duplicate
40
40
  3. **Read lessons learned** — Check `.github/customizations/LESSONS-LEARNED.md` for related pitfalls
41
41
  4. **Reproduce the bug** — Start the dev server and confirm you can trigger the issue:
42
- - `yarn nx run <app>:serve`
42
+ - Start the dev server (see the **codebase-tool** skill for the serve command)
43
43
  - Navigate to the affected page in Chrome
44
44
  - Follow the reproduction steps from the bug report
45
45
  - Take a screenshot of the broken state as evidence
@@ -50,9 +50,9 @@ Before fixing anything, understand the bug:
50
50
  - **Medium** — Minor functional issue, cosmetic but noticeable
51
51
  - **Low** — Edge case, minor visual glitch
52
52
 
53
- ### 2. Create Linear Issue
53
+ ### 2. Create Tracker Issue
54
54
 
55
- Every bug gets tracked. Create a Linear issue with:
55
+ Every bug gets tracked. Create a tracker issue with:
56
56
 
57
57
  - **Title**: `[Bug] Short description of the symptom`
58
58
  - **Label**: `bug`
@@ -79,7 +79,7 @@ Find WHY the bug happens, not just WHERE:
79
79
  - **Race condition** — Timing issue, hydration mismatch, async ordering
80
80
  - **CSS/Layout** — Specificity conflict, missing responsive rule, overflow
81
81
  - **Integration** — API contract mismatch, schema drift, stale cache
82
- 5. **Update the Linear issue** — Add root cause findings and affected file paths
82
+ 5. **Update the tracker issue** — Add root cause findings and affected file paths
83
83
 
84
84
  ### 4. Implement the Fix
85
85
 
@@ -87,7 +87,7 @@ Delegate to the appropriate specialist agent via **sub-agent** (inline). For bug
87
87
 
88
88
  #### Delegation Prompt Must Include
89
89
 
90
- - **Linear issue ID and title** — e.g., `TAS-XX — [Bug] Description`
90
+ - **Tracker issue ID and title** — e.g., `TAS-XX — [Bug] Description`
91
91
  - **Root cause** — What's wrong and why
92
92
  - **Fix approach** — How to fix it (be specific)
93
93
  - **File paths** — Exact files to read and modify
@@ -107,37 +107,42 @@ Delegate to the appropriate specialist agent via **sub-agent** (inline). For bug
107
107
 
108
108
  > Load the **validation-gates** skill for detailed steps on each gate.
109
109
 
110
- Every bug fix must pass ALL of these checks:
110
+ Every bug fix must pass ALL applicable gates:
111
111
 
112
- 1. **Deterministic Checks** — `yarn nx run <project>:lint --fix`, `:test`, `:build`all zero errors
113
- 2. **Bug-Specific Verification** (mandatory) start dev server, reproduce original bug (should be gone), verify correct behavior, test edge cases, screenshot before/after, check both apps if shared code
114
- 3. **Regression Check** — run tests for all projects consuming modified files, browser-test adjacent functionality
115
- 4. **Panel Review** (only if needed) — use **panel-majority-vote** skill if fix touches auth/authorization, RLS, security headers/CSP, or sensitive data
112
+ 1. **Gate 1: Secret Scanning** — scan diff for API keys, tokens, passwords, connection strings block immediately if found
113
+ 2. **Gate 2: Deterministic Checks** — run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) all zero errors
114
+ 3. **Gate 3: Blast Radius Check** — verify the fix is minimal and scoped (bug fixes should be ≤100 lines, ≤3 files; escalate if larger)
115
+ 4. **Gate 4: Dependency Audit** (when `package.json` or lockfiles change) — vulnerability scan, license check, bundle size, duplicates
116
+ 5. **Gate 5: Fast Review** (MANDATORY) — single reviewer sub-agent validates the fix. No auto-PASS for sensitive files
117
+ 6. **Gate 6: Bug-Specific Verification** (MANDATORY) — start dev server, reproduce original bug (should be gone), verify correct behavior, test edge cases, screenshot before/after, check both apps if shared code
118
+ 7. **Gate 7: Browser Testing** (for UI-related bugs) — clear cache, start server, verify fix + responsive + screenshots
119
+ 8. **Gate 8: Regression Testing** — run tests for all projects consuming modified files, browser-test adjacent functionality
120
+ 9. **Gate 9: Panel Review** (only if needed) — use **panel-majority-vote** skill if fix touches auth/authorization, RLS, security headers/CSP, or sensitive data
116
121
 
117
122
  ### 6. Delivery
118
123
 
119
- Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to Linear.
124
+ Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to the tracker.
120
125
 
121
126
  ### 7. Wrap Up
122
127
 
123
- 1. **Move Linear issue to Done** — Only after all validation passes
124
- 2. **Update Known Issues** — If this was a documented known issue, remove or update the entry in `docs/KNOWN-ISSUES.md`
128
+ 1. **Move tracker issue to Done** — Only after all validation passes
129
+ 2. **Update Known Issues** — If this was a documented known issue, remove or update the entry in `.github/customizations/KNOWN-ISSUES.md`
125
130
  3. **Capture lessons** — If the root cause reveals a pattern that other agents should know about, add it to `.github/customizations/LESSONS-LEARNED.md`
126
- 4. **Note prevention** — If this class of bug could be caught earlier (by a lint rule, test, or type check), note that in the Linear issue as a follow-up suggestion
131
+ 4. **Note prevention** — If this class of bug could be caught earlier (by a lint rule, test, or type check), note that in the tracker issue as a follow-up suggestion
127
132
 
128
133
  ### 8. Completion Criteria
129
134
 
130
135
  The bug fix is complete when:
131
136
 
132
137
  - [ ] Bug is reproduced and root cause identified
133
- - [ ] Linear issue created with full details
138
+ - [ ] Tracker issue created with full details
134
139
  - [ ] Fix implemented with minimal change
135
140
  - [ ] Test added covering the bug scenario
136
141
  - [ ] Lint, test, and build pass for all affected projects
137
142
  - [ ] Bug verified fixed in the browser
138
143
  - [ ] No regressions in adjacent functionality
139
144
  - [ ] Both apps checked if shared code was modified
140
- - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), Linear linked
141
- - [ ] Linear issue moved to Done
145
+ - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
146
+ - [ ] Tracker issue moved to Done
142
147
  - [ ] Known issues updated if applicable
143
148
  - [ ] Lessons learned captured if any retries occurred
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: 'Scaffold a new skill directory with proper frontmatter, structure, and content sections. Use when adding a new domain skill to the AI configuration.'
2
+ description: 'Scaffold a new skill file with proper frontmatter, structure, and registration. Use when adding a new domain skill to the AI configuration.'
3
3
  agent: Team Lead
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Create Skill
9
9
 
@@ -15,27 +15,44 @@ Scaffold a new skill for the AI agent configuration. Skills encode domain-specif
15
15
 
16
16
  ---
17
17
 
18
+ ## Skill Types
19
+
20
+ OpenCastle has two kinds of skills with different locations and registration paths:
21
+
22
+ | Type | Location | Bound Via | Purpose |
23
+ |------|----------|-----------|---------|
24
+ | **Process skill** | `skills/<name>/SKILL.md` | Direct reference in agent files | Stack-agnostic methodology (testing workflow, self-improvement, validation gates) |
25
+ | **Plugin skill** | `plugins/<plugin>/SKILL.md` | Capability slot in the skill matrix | Technology-specific knowledge (CMS queries, database patterns, deployment config) |
26
+
27
+ > **Rule of thumb:** If the skill would need to be rewritten when switching technologies (e.g., Supabase → Convex), it belongs in a **plugin**. If it's useful regardless of stack, it's a **process skill**.
28
+
29
+ ---
30
+
18
31
  ## Workflow
19
32
 
20
- ### Step 1: Determine Scope
33
+ ### Step 1: Classify the Skill
21
34
 
22
- Classify the skill:
35
+ Determine the type:
23
36
 
24
- | Scope | Prefix | When to Use |
25
- |-------|--------|-------------|
26
- | **Global** | `global-` | Domain knowledge applicable to any project (React, testing, security) |
27
- | **Local** | `local-` | Project-specific conventions (Linear config, Sanity schema patterns, this project's API structure) |
37
+ | Question | If Yes → | If No |
38
+ |----------|----------|---------|
39
+ | Is this tied to a specific technology/tool? | Plugin skill | Process skill |
40
+ | Would switching tech stacks invalidate this content? | Plugin skill | Process skill |
41
+ | Does a plugin already exist for this tool in `plugins/`? | Add `SKILL.md` to existing plugin | Create new plugin or process skill |
28
42
 
29
43
  ### Step 2: Name the Skill
30
44
 
31
- - Format: `<scope>-<domain>` (e.g., `global-react-development`, `local-sanity-cms`)
32
- - Use kebab-case
33
- - Be specific enough to distinguish from other skills, broad enough to be reusable
34
- - Check existing skills in `.github/skills/` to avoid overlap
45
+ - Use `kebab-case`
46
+ - **Process skills:** descriptive domain name (e.g., `testing-workflow`, `context-map`, `security-hardening`)
47
+ - **Plugin skills:** `skillName` field in the plugin's `config.ts` (e.g., `sanity-cms`, `supabase-database`, `nx-workspace`)
48
+ - Check existing skills in `skills/` and `plugins/` to avoid overlap
35
49
 
36
50
  ### Step 3: Create the Skill File
37
51
 
38
- Create `.github/skills/<skill-name>/SKILL.md` with this structure:
52
+ **Process skill:** Create `skills/<skill-name>/SKILL.md`
53
+ **Plugin skill:** Create `plugins/<plugin-name>/SKILL.md`
54
+
55
+ Use this template:
39
56
 
40
57
  ```markdown
41
58
  ````skill
@@ -44,16 +61,10 @@ name: <skill-name>
44
61
  description: "<One-line description of what the skill covers. Include key topics and when to use it.>"
45
62
  ---
46
63
 
47
- # Skill: <Display Name>
64
+ # <Display Name>
48
65
 
49
66
  <1-2 sentence overview of the skill's purpose and scope.>
50
67
 
51
- ## When to Use
52
-
53
- - <Trigger condition 1>
54
- - <Trigger condition 2>
55
- - <Trigger condition 3>
56
-
57
68
  ## Core Principles
58
69
 
59
70
  1. **<Principle>** — <Explanation>
@@ -68,11 +79,6 @@ description: "<One-line description of what the skill covers. Include key topics
68
79
 
69
80
  <More domain content.>
70
81
 
71
- ## Checklist
72
-
73
- - [ ] <Verification item 1>
74
- - [ ] <Verification item 2>
75
-
76
82
  ## Anti-Patterns
77
83
 
78
84
  - **<Bad pattern>** — <Why it's bad and what to do instead>
@@ -82,24 +88,36 @@ description: "<One-line description of what the skill covers. Include key topics
82
88
 
83
89
  ### Step 4: Register the Skill
84
90
 
85
- 1. **Add to the skill matrix** — Update `.github/customizations/agents/skill-matrix.md` with the new skill mapping
86
- 2. **Add to relevant agents** — Update the `skills` section in each agent that should use this skill
87
- 3. **Reference in instructions** — If the skill is loaded by default, add it to the appropriate `.github/instructions/` file
91
+ Registration differs by type:
92
+
93
+ #### Process Skill
94
+
95
+ 1. **Add to the skill matrix** — Add a row to the **Process Skills (Always Direct)** table in `.github/customizations/agents/skill-matrix.md`
96
+ 2. **Reference in agent files** — Add to the `Direct Skills` section of each agent that should use it
97
+ 3. **Optional: reference in instructions** — If the skill should be loaded by default, add it to the appropriate `.github/instructions/` file
98
+
99
+ #### Plugin Skill
100
+
101
+ 1. **Set `skillName` in the plugin's `config.ts`** — This connects the skill to the plugin
102
+ 2. **Update the skill matrix** — Set the Skill column for the matching capability slot row in `.github/customizations/agents/skill-matrix.md`
103
+ 3. **No agent changes needed** — Agents resolve plugin skills through capability slots automatically
88
104
 
89
105
  ### Step 5: Validate
90
106
 
91
- - [ ] File created at `.github/skills/<name>/SKILL.md`
107
+ - [ ] File created at the correct path (`skills/` or `plugins/`)
92
108
  - [ ] Frontmatter has `name` and `description` fields
93
109
  - [ ] Description is a single line (no line breaks)
94
110
  - [ ] Content follows the template structure
95
111
  - [ ] No overlap with existing skills
96
- - [ ] Skill matrix updated
97
- - [ ] At least one agent references the skill
112
+ - [ ] Skill matrix updated (process skill table or capability slot binding)
113
+ - [ ] For process skills: at least one agent references the skill directly
114
+ - [ ] For plugin skills: `config.ts` `skillName` matches the `name` in frontmatter
98
115
 
99
116
  ## Quality Guidelines
100
117
 
101
118
  - **Be prescriptive** — Skills should give clear instructions, not vague advice. "Use `fetchPlaces()` from `libs/queries`" beats "use the query library"
102
- - **Include examples** — Code snippets, file path examples, and table references from the actual codebase
119
+ - **Include examples** — Code snippets, file path examples, and table references
103
120
  - **Keep it scannable** — Use headings, tables, bullets, and code blocks. Agents need to find information fast
104
121
  - **Avoid duplication** — If a rule already exists in `.github/instructions/`, reference it instead of repeating it
122
+ - **Stay stack-agnostic in process skills** — Never hardcode technology names; use capability slot references (e.g., "the **database** skill" not "Supabase")
105
123
  - **Size target** — 100-300 lines. Under 100 is probably too thin; over 300 should be split into multiple skills
@@ -3,7 +3,7 @@ description: 'Generate a valid opencastle.tasks.yml spec file for autonomous ove
3
3
  agent: Team Lead
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Generate Task Spec for Autonomous Run
9
9
 
@@ -107,11 +107,11 @@ Each task `prompt` must be a **complete, standalone instruction**. Include:
107
107
  - **Why** — business context so the agent can make good decisions.
108
108
  - **Constraints** — coding standards, conventions, do-not-touch files.
109
109
  - **Acceptance criteria** — bullet list of pass conditions.
110
- - **Verification command** — e.g., `Run: yarn nx run project:test` so the agent self-checks.
110
+ - **Verification command** — e.g., `Run the project's test command with coverage` (see the **codebase-tool** skill) so the agent self-checks.
111
111
 
112
112
  > **Weak prompt:** "Add tests for the auth module."
113
113
  >
114
- > **Strong prompt:** "Write unit tests for `libs/auth/src/server.ts` covering token refresh, expiry edge cases, and invalid signatures. Place tests in `libs/auth/src/__tests__/server.test.ts`. Follow the existing Jest conventions (see `jest.preset.js`). Achieve ≥ 95 % coverage for `server.ts`. Run: `yarn nx run auth:test --coverage` and fix any failures."
114
+ > **Strong prompt:** "Write unit tests for `libs/auth/src/server.ts` covering token refresh, expiry edge cases, and invalid signatures. Place tests in `libs/auth/src/__tests__/server.test.ts`. Follow the existing test conventions. Achieve ≥ 95 % coverage for `server.ts`. Run the project's test command with coverage (see the **codebase-tool** skill) and fix any failures."
115
115
 
116
116
  ### 6. Validate Before Outputting
117
117
 
@@ -3,11 +3,11 @@ description: 'Instruct the Team Lead to implement a specific task from the post-
3
3
  agent: Team Lead
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Implement Roadmap Task
9
9
 
10
- You are the Team Lead. Implement the roadmap task described below following this strict workflow. The task comes from `docs/ROADMAP-POST-MVP.md`.
10
+ You are the Team Lead. Implement the roadmap task described below following this strict workflow. The task comes from `.github/customizations/project/roadmap.md`.
11
11
 
12
12
  ## Task
13
13
 
@@ -15,29 +15,29 @@ You are the Team Lead. Implement the roadmap task described below following this
15
15
 
16
16
  ---
17
17
 
18
- > **Canonical workflow:** `.github/agent-workflows/feature-implementation.md` defines the phase structure. This prompt adds Linear traceability, validation gate references, and completion criteria.
18
+ > **Canonical workflow:** `.github/agent-workflows/feature-implementation.md` defines the phase structure. This prompt adds tracker traceability, validation gate references, and completion criteria.
19
19
 
20
20
  ## Workflow
21
21
 
22
- > **HARD GATE:** Steps 1→2 are **blocking prerequisites**. Do NOT write, edit, or delegate any code until Linear issues exist for every subtask. If you catch yourself writing code before issues are created, STOP immediately, create the issues, then resume.
22
+ > **HARD GATE:** Steps 1→2 are **blocking prerequisites**. Do NOT write, edit, or delegate any code until tracker issues exist for every subtask. If you catch yourself writing code before issues are created, STOP immediately, create the issues, then resume.
23
23
 
24
24
  ### 1. Research & Context Gathering
25
25
 
26
26
  Before writing any code, gather all relevant context:
27
27
 
28
- 1. **Read the roadmap** — Open `docs/ROADMAP-POST-MVP.md` and find the full scope, status, and acceptance criteria for this task
29
- 2. **Read known issues** — Check `docs/KNOWN-ISSUES.md` for blockers or workarounds that affect this task
30
- 3. **Read architecture docs** — Check `docs/PROJECT.md` and `docs/DECISIONS.md` for constraints and prior decisions
28
+ 1. **Read the roadmap** — Open `.github/customizations/project/roadmap.md` and find the full scope, status, and acceptance criteria for this task
29
+ 2. **Read known issues** — Check `.github/customizations/KNOWN-ISSUES.md` for blockers or workarounds that affect this task
30
+ 3. **Read architecture docs** — Check `.github/customizations/project.instructions.md` and `.github/customizations/project/decisions.md` for constraints and prior decisions
31
31
  4. **Read lessons learned** — Check `.github/customizations/LESSONS-LEARNED.md` for pitfalls relevant to this feature area
32
32
  5. **Search existing code** — Find all files, components, queries, and tests related to this feature area
33
33
  6. **Identify reusable code** — Before creating anything new, check if similar logic, components, or utilities already exist in the codebase that can be reused or extended
34
34
 
35
- ### 2. Linear Board Setup (BLOCKING — must complete before Step 3)
35
+ ### 2. Task Board Setup (BLOCKING — must complete before Step 3)
36
36
 
37
- Every subtask must be tracked on Linear. **No issue = no implementation.** This step produces the issues that gate all downstream work.
37
+ Every subtask must be tracked. **No issue = no implementation.** This step produces the issues that gate all downstream work.
38
38
 
39
39
  1. **Check existing issues** — Search the board for any in-progress or completed work related to this task
40
- 2. **Decompose into issues** — Create one Linear issue per subtask using `[Area] Short description` naming
40
+ 2. **Decompose into issues** — Create one tracker issue per subtask using `[Area] Short description` naming
41
41
  3. **Set metadata** — Assign labels (agent name), priority, dependencies, and file partitions
42
42
  4. **Write descriptions** — Each issue must include:
43
43
  - **Objective:** One sentence
@@ -49,9 +49,9 @@ Every subtask must be tracked on Linear. **No issue = no implementation.** This
49
49
 
50
50
  ### 3. Implementation Rules
51
51
 
52
- #### Linear Issue Traceability
52
+ #### Issue Traceability
53
53
 
54
- - **Pass issue ID to every agent** — When delegating a subtask (sub-agent or background), include the Linear issue ID and title in the prompt so the agent knows which tracked task it is completing
54
+ - **Pass issue ID to every agent** — When delegating a subtask (sub-agent or background), include the tracker issue ID and title in the prompt so the agent knows which tracked task it is completing
55
55
  - **Reference in commits** — Include the issue ID (e.g., `TAS-42`) in commit messages when possible
56
56
  - **Update issue status** — Move issues to In Progress before starting, Done after verification passes
57
57
 
@@ -79,29 +79,34 @@ Include the self-improvement reminder in every delegation prompt (see `general.i
79
79
 
80
80
  Every subtask must pass ALL gates before being marked Done:
81
81
 
82
- 1. **Gate 1: Deterministic Checks** — `yarn nx run <project>:lint --fix`, `:test`, `:build`all zero errors
83
- 2. **Gate 2: Browser Testing** (MANDATORY for UI changes) clear cache, start server, verify features + responsive + screenshots
84
- 3. **Gate 3: Regression Testing** — full test suite for affected projects, browser-test adjacent pages if shared components changed
85
- 4. **Gate 4: Panel Review** (for high-stakes changes) — use **panel-majority-vote** skill for security, DB migrations, architecture
82
+ 1. **Gate 1: Secret Scanning** — scan diff for API keys, tokens, passwords, connection strings block immediately if found
83
+ 2. **Gate 2: Deterministic Checks** run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) all zero errors
84
+ 3. **Gate 3: Blast Radius Check** — verify scope is expected (≤200 lines, ≤5 files normal; escalate if >500 lines or >10 files)
85
+ 4. **Gate 4: Dependency Audit** (when `package.json` changes) — vulnerability scan, license check, bundle size, duplicates
86
+ 5. **Gate 5: Fast Review** (MANDATORY) — single reviewer sub-agent validates every delegation output. No auto-PASS for sensitive files
87
+ 6. **Gate 6: Browser Testing** (MANDATORY for UI changes) — clear cache, start server, verify features + responsive + screenshots
88
+ 7. **Gate 7: Regression Testing** — full test suite for affected projects, browser-test adjacent pages if shared components changed
89
+ 8. **Gate 8: Panel Review** (for high-stakes changes) — use **panel-majority-vote** skill for security, DB migrations, architecture
90
+ 9. **Gate 9: Final Smoke Test** — after all tasks Done, verify the complete feature end-to-end as a cohesive unit
86
91
 
87
92
  ### 5. Delivery
88
93
 
89
- Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to Linear.
94
+ Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to the tracker.
90
95
 
91
96
  ### 6. Documentation & Traceability
92
97
 
93
98
  Keep documentation current so future sessions have full context:
94
99
 
95
- 1. **Update roadmap** — Mark completed items in `docs/ROADMAP-POST-MVP.md` with ✅ and the completion date. **Include Linear issue IDs and links** next to each scope item so progress is traceable across sessions. Format:
100
+ 1. **Update roadmap** — Mark completed items in `.github/customizations/project/roadmap.md` with ✅ and the completion date. **Include tracker issue IDs and links** next to each scope item so progress is traceable across sessions. Format:
96
101
  ```
97
- **Linear Issues:**
98
- - [PREFIX-6](https://linear.app/<workspace>/issue/PREFIX-6) — [Search] Description ✅ Done
99
- - [PREFIX-7](https://linear.app/<workspace>/issue/PREFIX-7) — [UI] Description 📋 Todo
102
+ **Tracker Issues:**
103
+ - [PREFIX-6](<tracker-url>/PREFIX-6) — [Search] Description ✅ Done
104
+ - [PREFIX-7](<tracker-url>/PREFIX-7) — [UI] Description 📋 Todo
100
105
  ```
101
- > Replace `PREFIX` and `<workspace>` with the project's Linear prefix and workspace slug (see `linear-config.md`).
102
- 2. **Update known issues** — If new limitations are discovered, add them to `docs/KNOWN-ISSUES.md`
103
- 3. **Update architecture docs** — If architectural decisions were made, add an ADR to `docs/DECISIONS.md`
104
- 4. **Link Linear issues** — Every issue description should reference:
106
+ > Replace `PREFIX` with the project's issue prefix (see `tracker-config.md`).
107
+ 2. **Update known issues** — If new limitations are discovered, add them to `.github/customizations/KNOWN-ISSUES.md`
108
+ 3. **Update architecture docs** — If architectural decisions were made, add an ADR to `.github/customizations/project/decisions.md`
109
+ 4. **Link tracker issues** — Every issue description should reference:
105
110
  - Related roadmap section
106
111
  - Files modified (the partition)
107
112
  - Related issues (dependencies and follow-ups)
@@ -111,9 +116,9 @@ Keep documentation current so future sessions have full context:
111
116
 
112
117
  The roadmap task is complete when:
113
118
 
114
- - [ ] All Linear subtask issues are Done
119
+ - [ ] All tracker subtask issues are Done
115
120
  - [ ] All deterministic checks pass (lint, test, build) for affected projects
116
- - [ ] **Dev server started with CLEAN cache** (`rm -rf .next && yarn nx reset` before serving)
121
+ - [ ] **Dev server started with CLEAN cache** (clear framework + task runner caches before serving — see the **codebase-tool** skill)
117
122
  - [ ] **All UI changes verified in Chrome browser via MCP with screenshots taken as proof**
118
123
  - [ ] **Every feature in the acceptance criteria visually confirmed** — not just "page loads"
119
124
  - [ ] Regression tests confirm no existing functionality is broken
@@ -121,6 +126,6 @@ The roadmap task is complete when:
121
126
  - [ ] Visual consistency maintained across all affected pages and apps
122
127
  - [ ] Documentation updated (roadmap, known issues, decisions)
123
128
  - [ ] Panel review passed for any high-stakes changes
124
- - [ ] Roadmap item marked complete in `docs/ROADMAP-POST-MVP.md`
125
- - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), Linear linked
129
+ - [ ] Roadmap item marked complete in `.github/customizations/project/roadmap.md`
130
+ - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
126
131
  - [ ] Lessons learned captured if any retries occurred
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: 'Collect and report metrics from agent logs, GitHub PRs, Linear issues, and Vercel deployments'
2
+ description: 'Collect and report metrics from agent logs, GitHub PRs, tracker issues, and deployments'
3
3
  agent: Researcher
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Metrics Report
9
9
 
@@ -46,9 +46,9 @@ Compute:
46
46
  - **Commit frequency** — commits per day/week on main
47
47
  - **Bogus/closed PRs** — PRs closed without merge (potential failed agent work)
48
48
 
49
- ### 3. Linear Issues
49
+ ### 3. Tracker Issues
50
50
 
51
- Use Linear MCP tools (`list_issues`, `search_issues`):
51
+ Use tracker MCP tools (`list_issues`, `search_issues`):
52
52
 
53
53
  ```
54
54
  list_issues with status filter for each state: Backlog, Todo, In Progress, Done, Cancelled
@@ -62,9 +62,9 @@ Compute:
62
62
  - **Cycle time** — average time from In Progress → Done (if dates available)
63
63
  - **Stale issues** — In Progress for >7 days without updates
64
64
 
65
- ### 4. Vercel Deployments
65
+ ### 4. Deployments
66
66
 
67
- Use Vercel MCP tools (`list_deployments`, `get_deployment`):
67
+ Use deployment platform tools (if available via MCP or CLI):
68
68
 
69
69
  Query deployments for all configured apps (see `project.instructions.md` for the app inventory).
70
70
 
@@ -74,7 +74,7 @@ Compute:
74
74
  - **Failure rate** — error / total
75
75
  - **Build times** — average, median, p95
76
76
  - **Deployments per day** — activity timeline
77
- - **Failed deployment details** — which commits/branches failed and why (use `get_deployment_build_logs` for recent failures)
77
+ - **Failed deployment details** — which commits/branches failed and why
78
78
 
79
79
  ### 5. Panel Reviews (local)
80
80
 
@@ -110,7 +110,7 @@ Present the report as a structured markdown summary with these sections:
110
110
  - X agent sessions, Y% success rate
111
111
  - Z PRs merged, W% merge rate
112
112
  - N deployments, M% success rate
113
- - P Linear issues completed
113
+ - P tracker issues completed
114
114
 
115
115
  ## Agent Activity
116
116
  {sessions table, success rates, model usage}
@@ -121,10 +121,10 @@ Present the report as a structured markdown summary with these sections:
121
121
  ## GitHub
122
122
  {PR stats, merge rates, commit frequency}
123
123
 
124
- ## Linear Board
124
+ ## Task Board
125
125
  {issue distribution, completion rate, stale issues}
126
126
 
127
- ## Vercel Deployments
127
+ ## Deployments
128
128
  {success rate, failure rate, build times}
129
129
 
130
130
  ## Panel Reviews
@@ -141,4 +141,4 @@ Present the report as a structured markdown summary with these sections:
141
141
 
142
142
  Run this prompt periodically (weekly recommended) to track project health. Compare with previous reports to identify trends.
143
143
 
144
- If session logs are empty (no data yet), still collect GitHub/Linear/Vercel data and note that agent logging has just been enabled.
144
+ If session logs are empty (no data yet), still collect GitHub/tracker/deployment data and note that agent logging has just been enabled.
@@ -1,13 +1,13 @@
1
1
  ---
2
- description: 'Handle follow-up refinements after a roadmap task — bug fixes, UI tweaks, polish, and adjustments that are too small for Linear tracking.'
2
+ description: 'Handle follow-up refinements after a roadmap task — bug fixes, UI tweaks, polish, and adjustments that are too small for issue tracking.'
3
3
  agent: Team Lead
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
6
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
7
7
 
8
8
  # Follow-Up Refinement
9
9
 
10
- You are the Team Lead. Handle the follow-up refinement described below. This is a **post-task adjustment** — a bug fix, UI tweak, or polish item that came up after reviewing a completed roadmap task. It does NOT require Linear tracking.
10
+ You are the Team Lead. Handle the follow-up refinement described below. This is a **post-task adjustment** — a bug fix, UI tweak, or polish item that came up after reviewing a completed roadmap task. It does NOT require issue tracking.
11
11
 
12
12
  ## Request
13
13
 
@@ -19,7 +19,7 @@ You are the Team Lead. Handle the follow-up refinement described below. This is
19
19
 
20
20
  | Aspect | Roadmap Task | Follow-Up |
21
21
  |--------|-------------|-----------|
22
- | Linear issues | Required (hard gate) | Depends on scope (see triage) |
22
+ | Tracker issues | Required (hard gate) | Depends on scope (see triage) |
23
23
  | Panel review | For high-stakes changes | Only if security/data-related |
24
24
  | Documentation updates | Roadmap + known issues + ADRs | Only if behavior changes significantly |
25
25
  | Scope | Multi-step feature | Focused fix or adjustment |
@@ -31,9 +31,9 @@ You are the Team Lead. Handle the follow-up refinement described below. This is
31
31
 
32
32
  ### 1. Triage: Decide Tracking Level
33
33
 
34
- Before doing anything, decide whether this follow-up needs Linear tracking:
34
+ Before doing anything, decide whether this follow-up needs issue tracking:
35
35
 
36
- **Create a Linear issue if ANY of these are true:**
36
+ **Create a tracker issue if ANY of these are true:**
37
37
  - The change affects user-visible behavior (not just cosmetic)
38
38
  - It touches more than 2–3 files
39
39
  - It modifies shared library code (`libs/`)
@@ -41,13 +41,13 @@ Before doing anything, decide whether this follow-up needs Linear tracking:
41
41
  - It could introduce regressions in other features
42
42
  - You want a record for future reference (e.g., "why was this changed?")
43
43
 
44
- **Skip Linear if ALL of these are true:**
44
+ **Skip tracking if ALL of these are true:**
45
45
  - Pure cosmetic/spacing/copy tweak
46
46
  - Isolated to a single component or page
47
47
  - No behavioral change
48
48
  - Trivial to verify visually
49
49
 
50
- If creating a Linear issue, use:
50
+ If creating a tracker issue, use:
51
51
  - **Title**: `[Follow-up] Short description`
52
52
  - **Label**: agent name + `follow-up`
53
53
  - **Priority**: Low or Medium
@@ -59,11 +59,11 @@ Before touching any code:
59
59
 
60
60
  1. **Clarify scope** — Identify exactly which pages, components, or behaviors need to change
61
61
  2. **Find affected files** — Search the codebase for the relevant components, styles, queries, and tests
62
- 3. **Check known issues** — Scan `docs/KNOWN-ISSUES.md` in case this is a documented limitation
62
+ 3. **Check known issues** — Scan `.github/customizations/KNOWN-ISSUES.md` in case this is a documented limitation
63
63
  4. **Read lessons learned** — Check `.github/customizations/LESSONS-LEARNED.md` for relevant pitfalls before starting
64
64
  5. **Assess complexity** — If the request turns out to be larger than expected (touches >5 files, needs a migration, or affects auth/security), escalate it:
65
65
  - Inform the user that this should be a tracked task
66
- - Create a Linear issue (if not already created in triage) and switch to the `implement-feature` workflow
66
+ - Create a tracker issue (if not already created in triage) and switch to the `implement-feature` workflow
67
67
 
68
68
  ### 3. Plan the Fix
69
69
 
@@ -98,17 +98,21 @@ Delegate to the appropriate specialist agent(s). Since follow-ups are scoped and
98
98
 
99
99
  > Load the **validation-gates** skill for detailed steps on each gate.
100
100
 
101
- Every follow-up, no matter how small, must pass these checks:
101
+ Every follow-up, no matter how small, must pass these gates:
102
102
 
103
- 1. **Deterministic Checks** — `yarn nx run <project>:lint --fix`, `:test`, `:build`all zero errors
104
- 2. **Browser Testing** (MANDATORY for any visual change) clear cache, start server, verify scenario + responsive + screenshot evidence
105
- 3. **Regression Check** — if shared component/library modified, run tests for all consuming projects and browser-test at least one page per affected app
103
+ 1. **Gate 1: Secret Scanning** — scan diff for API keys, tokens, passwords, connection strings block immediately if found
104
+ 2. **Gate 2: Deterministic Checks** run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) — all zero errors
105
+ 3. **Gate 3: Blast Radius Check** — verify scope matches the "small follow-up" expectation (≤100 lines, ≤3 files normal; if larger, escalate to `implement-feature` workflow)
106
+ 4. **Gate 4: Dependency Audit** (when `package.json` or lockfiles change) — vulnerability scan, license check, bundle size, duplicates
107
+ 5. **Gate 5: Fast Review** (MANDATORY) — single reviewer sub-agent validates the change. No auto-PASS for sensitive files
108
+ 6. **Gate 6: Browser Testing** (MANDATORY for any visual change) — clear cache, start server, verify scenario + responsive + screenshot evidence
109
+ 7. **Gate 7: Regression Testing** — if shared component/library modified, run tests for all consuming projects and browser-test at least one page per affected app
106
110
 
107
111
  ### 6. Delivery
108
112
 
109
- If triage determined this follow-up needs Linear tracking, follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to Linear.
113
+ If triage determined this follow-up needs tracker tracking, follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to the tracker.
110
114
 
111
- If triage determined no Linear tracking is needed (pure cosmetic/isolated/trivial), commit the changes to the current working branch. A dedicated branch and PR are not required because the Team Lead will include these changes in the parent task's existing PR — the "every change goes through a PR" rule is still satisfied via the parent PR.
115
+ If triage determined no tracker tracking is needed (pure cosmetic/isolated/trivial), commit the changes to the current working branch. A dedicated branch and PR are not required because the Team Lead will include these changes in the parent task's existing PR — the "every change goes through a PR" rule is still satisfied via the parent PR.
112
116
 
113
117
  ### 7. Escalation Triggers
114
118
 
@@ -128,12 +132,12 @@ When escalating, explain to the user what you found and why it needs proper trac
128
132
  The follow-up is complete when:
129
133
 
130
134
  - [ ] The specific request is resolved
131
- - [ ] Linear issue created and moved to Done (if triage determined tracking was needed)
135
+ - [ ] Tracker issue created and moved to Done (if triage determined tracking was needed)
132
136
  - [ ] Lint, test, and build pass for all affected projects
133
- - [ ] **Dev server started with CLEAN cache** (`rm -rf .next && yarn nx reset` before serving)
137
+ - [ ] **Dev server started with CLEAN cache** (clear framework + task runner caches before serving — see the **codebase-tool** skill)
134
138
  - [ ] **Visual changes verified in Chrome with screenshot taken as proof**
135
139
  - [ ] No regressions in adjacent functionality
136
140
  - [ ] Shared component changes tested across all consuming apps
137
- - [ ] Delivery Outcome completed if tracked (see `general.instructions.md`) — branch pushed, PR opened (not merged), Linear linked
141
+ - [ ] Delivery Outcome completed if tracked (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
138
142
  - [ ] Lessons learned captured if any retries occurred
139
143
  - [ ] Known issues updated if a new limitation was discovered