opencastle 0.5.1 → 0.7.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 (231) hide show
  1. package/README.md +5 -4
  2. package/dist/cli/adapters/claude-code.d.ts +2 -2
  3. package/dist/cli/adapters/claude-code.d.ts.map +1 -1
  4. package/dist/cli/adapters/claude-code.js +31 -4
  5. package/dist/cli/adapters/claude-code.js.map +1 -1
  6. package/dist/cli/adapters/cursor.d.ts +2 -2
  7. package/dist/cli/adapters/cursor.d.ts.map +1 -1
  8. package/dist/cli/adapters/cursor.js +28 -4
  9. package/dist/cli/adapters/cursor.js.map +1 -1
  10. package/dist/cli/adapters/opencode.d.ts +20 -0
  11. package/dist/cli/adapters/opencode.d.ts.map +1 -0
  12. package/dist/cli/adapters/opencode.js +265 -0
  13. package/dist/cli/adapters/opencode.js.map +1 -0
  14. package/dist/cli/adapters/vscode.d.ts +2 -2
  15. package/dist/cli/adapters/vscode.d.ts.map +1 -1
  16. package/dist/cli/adapters/vscode.js +38 -7
  17. package/dist/cli/adapters/vscode.js.map +1 -1
  18. package/dist/cli/copy.d.ts +12 -0
  19. package/dist/cli/copy.d.ts.map +1 -1
  20. package/dist/cli/copy.js +27 -0
  21. package/dist/cli/copy.js.map +1 -1
  22. package/dist/cli/detect.d.ts +18 -0
  23. package/dist/cli/detect.d.ts.map +1 -0
  24. package/dist/cli/detect.js +434 -0
  25. package/dist/cli/detect.js.map +1 -0
  26. package/dist/cli/gitignore.d.ts.map +1 -1
  27. package/dist/cli/gitignore.js +0 -2
  28. package/dist/cli/gitignore.js.map +1 -1
  29. package/dist/cli/init.d.ts.map +1 -1
  30. package/dist/cli/init.js +154 -91
  31. package/dist/cli/init.js.map +1 -1
  32. package/dist/cli/manifest.d.ts +1 -1
  33. package/dist/cli/manifest.d.ts.map +1 -1
  34. package/dist/cli/manifest.js +2 -1
  35. package/dist/cli/manifest.js.map +1 -1
  36. package/dist/cli/mcp.d.ts +6 -6
  37. package/dist/cli/mcp.d.ts.map +1 -1
  38. package/dist/cli/mcp.js +105 -34
  39. package/dist/cli/mcp.js.map +1 -1
  40. package/dist/cli/prompt.d.ts +22 -0
  41. package/dist/cli/prompt.d.ts.map +1 -1
  42. package/dist/cli/prompt.js +239 -0
  43. package/dist/cli/prompt.js.map +1 -1
  44. package/dist/cli/stack-config.d.ts +26 -3
  45. package/dist/cli/stack-config.d.ts.map +1 -1
  46. package/dist/cli/stack-config.js +140 -125
  47. package/dist/cli/stack-config.js.map +1 -1
  48. package/dist/cli/types.d.ts +46 -10
  49. package/dist/cli/types.d.ts.map +1 -1
  50. package/dist/cli/types.js +26 -1
  51. package/dist/cli/types.js.map +1 -1
  52. package/dist/cli/update.d.ts.map +1 -1
  53. package/dist/cli/update.js +66 -19
  54. package/dist/cli/update.js.map +1 -1
  55. package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
  56. package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
  57. package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
  58. package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
  59. package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
  60. package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
  61. package/dist/orchestrator/plugins/contentful/config.js +48 -0
  62. package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
  63. package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
  64. package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
  65. package/dist/orchestrator/plugins/convex/config.js +32 -0
  66. package/dist/orchestrator/plugins/convex/config.js.map +1 -0
  67. package/dist/orchestrator/plugins/index.d.ts +28 -0
  68. package/dist/orchestrator/plugins/index.d.ts.map +1 -0
  69. package/dist/orchestrator/plugins/index.js +63 -0
  70. package/dist/orchestrator/plugins/index.js.map +1 -0
  71. package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
  72. package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
  73. package/dist/orchestrator/plugins/jira/config.js +29 -0
  74. package/dist/orchestrator/plugins/jira/config.js.map +1 -0
  75. package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
  76. package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
  77. package/dist/orchestrator/plugins/linear/config.js +33 -0
  78. package/dist/orchestrator/plugins/linear/config.js.map +1 -0
  79. package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
  80. package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
  81. package/dist/orchestrator/plugins/nx/config.js +28 -0
  82. package/dist/orchestrator/plugins/nx/config.js.map +1 -0
  83. package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
  84. package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
  85. package/dist/orchestrator/plugins/sanity/config.js +43 -0
  86. package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
  87. package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
  88. package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
  89. package/dist/orchestrator/plugins/slack/config.js +34 -0
  90. package/dist/orchestrator/plugins/slack/config.js.map +1 -0
  91. package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
  92. package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
  93. package/dist/orchestrator/plugins/strapi/config.js +40 -0
  94. package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
  95. package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
  96. package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
  97. package/dist/orchestrator/plugins/supabase/config.js +33 -0
  98. package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
  99. package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
  100. package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
  101. package/dist/orchestrator/plugins/teams/config.js +43 -0
  102. package/dist/orchestrator/plugins/teams/config.js.map +1 -0
  103. package/dist/orchestrator/plugins/types.d.ts +61 -0
  104. package/dist/orchestrator/plugins/types.d.ts.map +1 -0
  105. package/dist/orchestrator/plugins/types.js +2 -0
  106. package/dist/orchestrator/plugins/types.js.map +1 -0
  107. package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
  108. package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
  109. package/dist/orchestrator/plugins/vercel/config.js +32 -0
  110. package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
  111. package/package.json +1 -1
  112. package/src/cli/adapters/claude-code.ts +40 -6
  113. package/src/cli/adapters/cursor.ts +46 -6
  114. package/src/cli/adapters/opencode.ts +320 -0
  115. package/src/cli/adapters/vscode.ts +43 -9
  116. package/src/cli/copy.ts +32 -0
  117. package/src/cli/detect.ts +483 -0
  118. package/src/cli/gitignore.ts +0 -3
  119. package/src/cli/init.ts +169 -96
  120. package/src/cli/manifest.ts +2 -1
  121. package/src/cli/mcp.ts +131 -51
  122. package/src/cli/prompt.ts +299 -0
  123. package/src/cli/stack-config.ts +187 -145
  124. package/src/cli/types.ts +60 -9
  125. package/src/cli/update.ts +78 -20
  126. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  127. package/src/orchestrator/agent-workflows/README.md +1 -1
  128. package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
  129. package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
  130. package/src/orchestrator/agent-workflows/database-migration.md +11 -11
  131. package/src/orchestrator/agent-workflows/feature-implementation.md +10 -10
  132. package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
  133. package/src/orchestrator/agent-workflows/refactoring.md +10 -10
  134. package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
  135. package/src/orchestrator/agent-workflows/security-audit.md +12 -12
  136. package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
  137. package/src/orchestrator/agents/api-designer.agent.md +2 -2
  138. package/src/orchestrator/agents/architect.agent.md +2 -2
  139. package/src/orchestrator/agents/content-engineer.agent.md +4 -4
  140. package/src/orchestrator/agents/copywriter.agent.md +2 -2
  141. package/src/orchestrator/agents/data-expert.agent.md +6 -6
  142. package/src/orchestrator/agents/database-engineer.agent.md +4 -4
  143. package/src/orchestrator/agents/developer.agent.md +5 -5
  144. package/src/orchestrator/agents/devops-expert.agent.md +5 -5
  145. package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
  146. package/src/orchestrator/agents/performance-expert.agent.md +3 -3
  147. package/src/orchestrator/agents/release-manager.agent.md +4 -4
  148. package/src/orchestrator/agents/researcher.agent.md +19 -3
  149. package/src/orchestrator/agents/reviewer.agent.md +2 -4
  150. package/src/orchestrator/agents/security-expert.agent.md +4 -4
  151. package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
  152. package/src/orchestrator/agents/team-lead.agent.md +97 -101
  153. package/src/orchestrator/agents/testing-expert.agent.md +5 -5
  154. package/src/orchestrator/agents/ui-ux-expert.agent.md +7 -7
  155. package/src/orchestrator/copilot-instructions.md +1 -1
  156. package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
  157. package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
  158. package/src/orchestrator/customizations/DISPUTES.md +5 -5
  159. package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
  160. package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
  161. package/src/orchestrator/customizations/README.md +5 -2
  162. package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
  163. package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
  164. package/src/orchestrator/customizations/logs/README.md +1 -1
  165. package/src/orchestrator/customizations/project/decisions.md +31 -0
  166. package/src/orchestrator/customizations/project/docs-structure.md +16 -5
  167. package/src/orchestrator/customizations/project/roadmap.md +24 -0
  168. package/src/orchestrator/customizations/project/tracker-config.md +1 -1
  169. package/src/orchestrator/customizations/stack/cms-config.md +1 -1
  170. package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
  171. package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
  172. package/src/orchestrator/instructions/general.instructions.md +102 -40
  173. package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
  174. package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
  175. package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
  176. package/src/orchestrator/plugins/contentful/config.ts +49 -0
  177. package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
  178. package/src/orchestrator/plugins/convex/config.ts +33 -0
  179. package/src/orchestrator/plugins/index.ts +85 -0
  180. package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
  181. package/src/orchestrator/plugins/jira/config.ts +30 -0
  182. package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
  183. package/src/orchestrator/plugins/linear/config.ts +34 -0
  184. package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
  185. package/src/orchestrator/plugins/nx/config.ts +29 -0
  186. package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
  187. package/src/orchestrator/plugins/sanity/config.ts +44 -0
  188. package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
  189. package/src/orchestrator/plugins/slack/config.ts +35 -0
  190. package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
  191. package/src/orchestrator/plugins/strapi/config.ts +41 -0
  192. package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
  193. package/src/orchestrator/plugins/supabase/config.ts +34 -0
  194. package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
  195. package/src/orchestrator/plugins/teams/config.ts +44 -0
  196. package/src/orchestrator/plugins/types.ts +79 -0
  197. package/src/orchestrator/plugins/vercel/config.ts +33 -0
  198. package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +59 -12
  199. package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
  200. package/src/orchestrator/prompts/bug-fix.prompt.md +18 -18
  201. package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
  202. package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
  203. package/src/orchestrator/prompts/implement-feature.prompt.md +26 -26
  204. package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
  205. package/src/orchestrator/prompts/quick-refinement.prompt.md +16 -16
  206. package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +2 -2
  207. package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
  208. package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
  209. package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
  210. package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
  211. package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
  212. package/src/orchestrator/skills/context-map/SKILL.md +4 -4
  213. package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
  214. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
  215. package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
  216. package/src/orchestrator/skills/fast-review/SKILL.md +3 -3
  217. package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
  218. package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
  219. package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
  220. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
  221. package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
  222. package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
  223. package/src/orchestrator/skills/react-development/SKILL.md +3 -3
  224. package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
  225. package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
  226. package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
  227. package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
  228. package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
  229. package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
  230. package/src/orchestrator/skills/validation-gates/SKILL.md +8 -15
  231. package/src/orchestrator/mcp.json +0 -61
@@ -3,7 +3,7 @@ description: 'Bootstrap the .github/customizations/ directory for a new project.
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
  # Bootstrap Project Customizations
9
9
 
@@ -23,20 +23,53 @@ Without customizations, agents operate blind — they don't know the project's t
23
23
 
24
24
  ## Pre-Existing Stack Info
25
25
 
26
- Before starting discovery, check for **`.opencastle.json`** in the project root. If it exists and contains a `stack` field, the user already declared their CMS, database, project management, and notifications tool during `opencastle init`. Use these as confirmed facts — skip re-detecting them and focus discovery on the project-specific details (IDs, schemas, config values).
26
+ Before starting discovery, check for **`.opencastle.json`** in the project root. If it exists, it contains a combined `repoInfo` field from `opencastle init` that merges two sources:
27
+
28
+ 1. **Auto-detected tooling** — the init command scanned config files, `package.json` dependencies, and directory structures
29
+ 2. **User-declared choices** — the user selected CMS, database, project management, and notifications via the interactive questionnaire
30
+
31
+ The result is a single unified view of the project's tech stack:
27
32
 
28
33
  ```json
29
34
  {
35
+ "repoInfo": {
36
+ "packageManager": "pnpm",
37
+ "monorepo": "nx",
38
+ "language": "typescript",
39
+ "frameworks": ["next", "astro"],
40
+ "databases": ["prisma", "supabase"],
41
+ "cms": ["sanity"],
42
+ "deployment": ["vercel"],
43
+ "testing": ["playwright", "vitest"],
44
+ "cicd": ["github-actions"],
45
+ "styling": ["css-modules", "tailwind"],
46
+ "auth": ["next-auth", "supabase-auth"],
47
+ "pm": ["linear"],
48
+ "notifications": ["slack"],
49
+ "mcpConfig": true,
50
+ "configFiles": ["nx.json", "package.json", "tsconfig.json", "vercel.json"]
51
+ },
30
52
  "stack": {
31
- "cms": "sanity", // sanity | contentful | strapi | none
32
- "db": "supabase", // supabase | convex | none
33
- "pm": "linear", // linear | jira | none
34
- "notifications": "slack" // slack | teams | none
53
+ "cms": "sanity",
54
+ "db": "supabase",
55
+ "pm": "linear",
56
+ "notifications": "slack"
35
57
  }
36
58
  }
37
59
  ```
38
60
 
39
- The skill matrix (`customizations/agents/skill-matrix.md`) will already have the `cms` and `database` rows pre-filled based on this selection. The appropriate task management skill (`task-management` for Linear, `jira-management` for Jira) and notifications skill (`slack-notifications` for Slack, `teams-notifications` for Teams) will already be installed. Verify they are correct and fill in any remaining empty rows.
61
+ **Use `repoInfo` to:**
62
+ - Skip re-scanning for technologies already listed — go straight to reading their config files
63
+ - Pre-fill the tech stack table in `project.instructions.md`
64
+ - Know which `stack/` config files to create (e.g., if `repoInfo.databases` includes `"prisma"`, create `stack/prisma-config.md`)
65
+ - Know which `project/` config files to create (e.g., if `repoInfo.pm` includes `"linear"`, create `project/linear-config.md`)
66
+ - Identify `configFiles` to read for deep inspection (Phase 1.3)
67
+
68
+ **`stack` vs `repoInfo`:** The `stack` field holds the raw user questionnaire answers (used internally for MCP server filtering and skill selection). The `repoInfo` field is the combined view you should use for discovery — it includes everything from `stack` plus all auto-detected tooling.
69
+
70
+ **Still verify:** `repoInfo` detects presence, not configuration details. You still need to read the actual config files for schemas, IDs, routes, etc.
71
+
72
+ The skill matrix (`.github/customizations/agents/skill-matrix.md`) will already have the `cms` and `database` rows pre-filled based on this selection. The appropriate task management skill (`linear-task-management` for Linear, `jira-management` for Jira) and notifications skill (`slack-notifications` for Slack, `teams-notifications` for Teams) will already be installed. Verify they are correct and fill in any remaining empty rows.
40
73
 
41
74
  ## Workflow
42
75
 
@@ -46,7 +79,8 @@ Explore the project systematically. Gather facts — don't assume.
46
79
 
47
80
  #### 1.1 Project Overview
48
81
 
49
- - **First**: Read `.opencastle.json` if it exists — note the `stack.cms` and `stack.db` values
82
+ - **First**: Read `.opencastle.json` if it exists — note `stack` choices and `repoInfo` detections
83
+ - If `repoInfo` is present, use it as your starting inventory — skip re-scanning for the technologies it already lists
50
84
  - Read `README.md`, `package.json`, and any workspace config (`nx.json`, `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`)
51
85
  - Identify: monorepo vs single app, package manager, language, framework(s)
52
86
  - List all apps and libraries with their purpose
@@ -78,7 +112,7 @@ For each detected technology, dig into the config:
78
112
  - **API**: Find route handlers, Server Actions, middleware, external API integrations
79
113
  - **Deployment**: Read deploy config, environment variables, cron jobs, security headers
80
114
  - **Testing**: Find test config, test suites, test utilities, coverage setup
81
- - **Docs**: Map the `docs/` directory tree (if it exists)
115
+ - **Docs**: Map the project's documentation directory tree (if it exists)
82
116
  - **Task tracking**: Find team IDs, project IDs, workflow states (check Linear/Jira config or docs)
83
117
 
84
118
  ### Phase 2: Generate Customization Files
@@ -88,7 +122,7 @@ Create `.github/customizations/` and generate files based on what you discovered
88
122
  Files are organized into subdirectories by domain:
89
123
 
90
124
  ```
91
- customizations/
125
+ .github/customizations/
92
126
  ├── README.md # Directory index
93
127
  ├── project.instructions.md # High-level project context
94
128
  ├── LESSONS-LEARNED.md # Knowledge base (retries, workarounds)
@@ -192,7 +226,7 @@ customizations/
192
226
 
193
227
  #### `project/` — Project Management Config
194
228
 
195
- 14. **`project/docs-structure.md`** — If a `docs/` directory exists:
229
+ 14. **`project/docs-structure.md`** — If a documentation directory exists:
196
230
  - Full directory tree
197
231
  - Purpose of each document
198
232
  - Documentation conventions
@@ -225,7 +259,20 @@ For each file created, report:
225
259
  - Number of lines
226
260
  - Key sections included
227
261
 
228
- End with a summary of what was discovered, what was generated, and what (if anything) needs manual input (e.g., Linear team IDs that require API access to discover).
262
+ End with a summary of what was discovered, what was generated, and what (if anything) needs manual input (e.g., tracker team IDs that require API access to discover).
263
+
264
+ After your summary, suggest next steps:
265
+
266
+ ### Suggested Next Steps
267
+
268
+ Now that your project is configured, here's what you can do:
269
+
270
+ 1. **Review the generated files** — Scan `.github/customizations/` for any `<!-- TODO: verify -->` comments and fill in missing values (e.g., tracker team IDs, Supabase project IDs)
271
+ 2. **Commit the customizations** — `git add .github/customizations/ && git commit -m "chore: bootstrap OpenCastle customizations"`
272
+ 3. **Implement a feature** — Use the **"Implement Feature"** prompt to have the Team Lead orchestrate a full feature build with task tracking, delegation, and verification
273
+ 4. **Fix a bug** — Use the **"Bug Fix"** prompt for structured triage, root cause analysis, and fix with tracker tracking
274
+ 5. **Brainstorm first** — Not sure how to approach something? Use the **"Brainstorm"** prompt to explore requirements and trade-offs before committing to a plan
275
+ 6. **Create a task spec** — Use the **"Generate Task Spec"** prompt to create `opencastle.tasks.yml` for autonomous overnight runs with `npx opencastle run` CLI command.
229
276
 
230
277
  ## Guidelines
231
278
 
@@ -3,7 +3,7 @@ description: 'Collaborative brainstorm to explore requirements, approaches, and
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
  # Brainstorm
9
9
 
@@ -35,7 +35,7 @@ Before exploring solutions, make sure the problem is well-understood:
35
35
  Research before proposing. Gather data, don't guess:
36
36
 
37
37
  1. **Search existing code** — is there already a partial implementation, similar pattern, or relevant utility?
38
- 2. **Check documentation** — read `docs/PROJECT.md`, `docs/DECISIONS.md`, `docs/KNOWN-ISSUES.md` for constraints
38
+ 2. **Check documentation** — read `.github/customizations/project.instructions.md`, `.github/customizations/project/decisions.md`, `.github/customizations/KNOWN-ISSUES.md` for constraints
39
39
  3. **Check lessons learned** — read `.github/customizations/LESSONS-LEARNED.md` for pitfalls in this area
40
40
  4. **Identify affected layers** — which apps, libs, data stores, and third-party services are involved?
41
41
 
@@ -114,4 +114,4 @@ Once the brainstorm is complete and the user confirms (or you're confident in th
114
114
 
115
115
  1. **Transition to planning** — use the brainstorm report as input for `implement-feature` or the appropriate workflow
116
116
  2. **Preserve context** — include the brainstorm report in delegation prompts so agents understand *why* an approach was chosen
117
- 3. **Reference in Linear** — link the brainstorm findings in the Linear issue description
117
+ 3. **Reference in tracker** — link the brainstorm findings in the tracker issue description
@@ -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
@@ -109,35 +109,35 @@ Delegate to the appropriate specialist agent via **sub-agent** (inline). For bug
109
109
 
110
110
  Every bug fix must pass ALL of these checks:
111
111
 
112
- 1. **Deterministic Checks** — `yarn nx run <project>:lint --fix`, `:test`, `:build` — all zero errors
112
+ 1. **Deterministic Checks** — run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) — all zero errors
113
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
114
  3. **Regression Check** — run tests for all projects consuming modified files, browser-test adjacent functionality
115
115
  4. **Panel Review** (only if needed) — use **panel-majority-vote** skill if fix touches auth/authorization, RLS, security headers/CSP, or sensitive data
116
116
 
117
117
  ### 6. Delivery
118
118
 
119
- Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to Linear.
119
+ Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to the tracker.
120
120
 
121
121
  ### 7. Wrap Up
122
122
 
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`
123
+ 1. **Move tracker 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 `.github/customizations/KNOWN-ISSUES.md`
125
125
  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
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 tracker issue as a follow-up suggestion
127
127
 
128
128
  ### 8. Completion Criteria
129
129
 
130
130
  The bug fix is complete when:
131
131
 
132
132
  - [ ] Bug is reproduced and root cause identified
133
- - [ ] Linear issue created with full details
133
+ - [ ] Tracker issue created with full details
134
134
  - [ ] Fix implemented with minimal change
135
135
  - [ ] Test added covering the bug scenario
136
136
  - [ ] Lint, test, and build pass for all affected projects
137
137
  - [ ] Bug verified fixed in the browser
138
138
  - [ ] No regressions in adjacent functionality
139
139
  - [ ] 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
140
+ - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
141
+ - [ ] Tracker issue moved to Done
142
142
  - [ ] Known issues updated if applicable
143
143
  - [ ] 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,29 @@ 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
82
+ 1. **Gate 1: Deterministic Checks** — run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) — all zero errors
83
83
  2. **Gate 2: Browser Testing** (MANDATORY for UI changes) — clear cache, start server, verify features + responsive + screenshots
84
84
  3. **Gate 3: Regression Testing** — full test suite for affected projects, browser-test adjacent pages if shared components changed
85
85
  4. **Gate 4: Panel Review** (for high-stakes changes) — use **panel-majority-vote** skill for security, DB migrations, architecture
86
86
 
87
87
  ### 5. Delivery
88
88
 
89
- Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to Linear.
89
+ Follow the **Delivery Outcome** defined in `general.instructions.md` — commit, push, open PR (not merged), and link to the tracker.
90
90
 
91
91
  ### 6. Documentation & Traceability
92
92
 
93
93
  Keep documentation current so future sessions have full context:
94
94
 
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:
95
+ 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
96
  ```
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
97
+ **Tracker Issues:**
98
+ - [PREFIX-6](<tracker-url>/PREFIX-6) — [Search] Description ✅ Done
99
+ - [PREFIX-7](<tracker-url>/PREFIX-7) — [UI] Description 📋 Todo
100
100
  ```
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:
101
+ > Replace `PREFIX` with the project's issue prefix (see `tracker-config.md`).
102
+ 2. **Update known issues** — If new limitations are discovered, add them to `.github/customizations/KNOWN-ISSUES.md`
103
+ 3. **Update architecture docs** — If architectural decisions were made, add an ADR to `.github/customizations/project/decisions.md`
104
+ 4. **Link tracker issues** — Every issue description should reference:
105
105
  - Related roadmap section
106
106
  - Files modified (the partition)
107
107
  - Related issues (dependencies and follow-ups)
@@ -111,9 +111,9 @@ Keep documentation current so future sessions have full context:
111
111
 
112
112
  The roadmap task is complete when:
113
113
 
114
- - [ ] All Linear subtask issues are Done
114
+ - [ ] All tracker subtask issues are Done
115
115
  - [ ] 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)
116
+ - [ ] **Dev server started with CLEAN cache** (clear framework + task runner caches before serving — see the **codebase-tool** skill)
117
117
  - [ ] **All UI changes verified in Chrome browser via MCP with screenshots taken as proof**
118
118
  - [ ] **Every feature in the acceptance criteria visually confirmed** — not just "page loads"
119
119
  - [ ] Regression tests confirm no existing functionality is broken
@@ -121,6 +121,6 @@ The roadmap task is complete when:
121
121
  - [ ] Visual consistency maintained across all affected pages and apps
122
122
  - [ ] Documentation updated (roadmap, known issues, decisions)
123
123
  - [ ] 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
124
+ - [ ] Roadmap item marked complete in `.github/customizations/project/roadmap.md`
125
+ - [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
126
126
  - [ ] 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.