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
@@ -14,6 +14,7 @@ Skills reference these files with relative links like `../../customizations/stac
14
14
  |------|---------|
15
15
  | `project.instructions.md` | High-level project context — apps, libraries, tech stack, ports, URLs |
16
16
  | `LESSONS-LEARNED.md` | Knowledge base of retries, workarounds, and gotchas — read before every session |
17
+ | `KNOWN-ISSUES.md` | Tracked issues, limitations, and accepted risks discovered during sessions |
17
18
  | `AGENT-FAILURES.md` | Dead letter queue for failed agent delegations |
18
19
  | `AGENT-PERFORMANCE.md` | Agent success tracking, log query recipes, performance metrics |
19
20
  | `AGENT-EXPERTISE.md` | Structured tracking of agent strengths/weaknesses across sessions |
@@ -36,7 +37,9 @@ Skills reference these files with relative links like `../../customizations/stac
36
37
 
37
38
  | File | Purpose |
38
39
  |------|---------|
39
- | `docs-structure.md` | `docs/` directory tree and documentation practices |
40
+ | `docs-structure.md` | Project documentation directory tree and practices |
41
+ | `roadmap.md` | Project roadmap with planned features and their status |
42
+ | `decisions.md` | Architecture Decision Records (ADRs) for the project |
40
43
  | _(task tracker config created by `bootstrap-customizations` prompt)_ | |
41
44
 
42
45
  ### `logs/` — Append-only NDJSON session logs
@@ -52,7 +55,7 @@ Structured machine-readable logs appended automatically by agents during session
52
55
 
53
56
  ## When to update
54
57
 
55
- Update these files when the project changes — new tables, new API routes, new apps, new Linear labels, etc. The skills themselves should rarely need editing; changing a project ID or adding a table column is a customization change, not a skill change.
58
+ Update these files when the project changes — new tables, new API routes, new apps, new tracker labels, etc. The skills themselves should rarely need editing; changing a project ID or adding a table column is a customization change, not a skill change.
56
59
 
57
60
  ## Bootstrap
58
61
 
@@ -11,7 +11,7 @@ Project-specific agent-to-model assignments and scope examples referenced by the
11
11
  |-------|-------|------|----------|
12
12
  | **Developer** | Gemini 3.1 Pro | Standard | Full-stack feature implementation, pages, components, routing, API routes |
13
13
  | **Testing Expert** | GPT-5.3-Codex | Utility | E2E tests, browser validation, terminal-heavy test loops |
14
- | **Content Engineer** | Gemini 3.1 Pro | Standard | CMS schema, GROQ queries, MCP tool coordination |
14
+ | **Content Engineer** | Gemini 3.1 Pro | Standard | CMS schema, content queries, MCP tool coordination |
15
15
  | **Database Engineer** | Gemini 3.1 Pro | Standard | Migrations, RLS policies, SQL optimization |
16
16
  | **UI/UX Expert** | Gemini 3.1 Pro | Standard | Components, styling, accessibility |
17
17
  | **Performance Expert** | Gemini 3.1 Pro | Standard | Bundle size, Core Web Vitals, profiling |
@@ -41,7 +41,7 @@ Agent file Skill Matrix Skill file
41
41
  | `database` | | | Schema, migrations, auth flow, roles |
42
42
  | `cms` | | | Document types, queries, schema management |
43
43
  | `deployment` | | | Hosting, cron jobs, env vars, caching, headers |
44
- | `monorepo` | | | Task running, caching, affected commands, generators |
44
+ | `codebase-tool` | | | Task running, building, linting, testing, code generation |
45
45
 
46
46
  ### Tooling
47
47
 
@@ -50,8 +50,7 @@ Agent file Skill Matrix Skill file
50
50
  | `api-layer` | | | API routes, validation, search architecture |
51
51
  | `data-pipeline` | | | ETL, scraping, data processing |
52
52
  | `testing` | | | Unit/integration tests, coverage, test planning |
53
- | `e2e-testing` | | | Browser automation, viewport testing, visual validation |
54
-
53
+ | `e2e-testing` | | | Browser automation, viewport testing, visual validation || `task-management` | | | Issue tracking, naming, priorities, workflow states |
55
54
  ### Disciplines
56
55
 
57
56
  | Slot | Approach | Skill | Description |
@@ -77,14 +76,14 @@ Each row shows which capability slots an agent needs (resolved through this matr
77
76
  | **Data Expert** | `data-pipeline` | — |
78
77
  | **DevOps Expert** | `deployment` | — |
79
78
  | **Performance Expert** | `performance` | — |
80
- | **Architect** | `monorepo` | `documentation-standards` |
79
+ | **Architect** | `codebase-tool` | `documentation-standards` |
81
80
  | **Copywriter** | `cms` | `documentation-standards` |
82
81
  | **SEO Specialist** | `framework`, `cms`, `seo` | — |
83
82
  | **API Designer** | `api-layer`, `framework`, `security` | — |
84
- | **Release Manager** | `monorepo`, `deployment` | `validation-gates`, `documentation-standards` |
83
+ | **Release Manager** | `codebase-tool`, `deployment` | `validation-gates`, `documentation-standards` |
85
84
  | **Documentation Writer** | — | `documentation-standards`, `code-commenting` |
86
85
  | **Researcher** | — | `context-map`, `self-improvement` |
87
- | **Team Lead** | | `team-lead-reference`, `task-management`, `session-checkpoints`, `validation-gates`, `fast-review`, `panel-majority-vote`, `context-map`, `memory-merger`, `agent-hooks` |
86
+ | **Team Lead** | `task-management` | `team-lead-reference`, `session-checkpoints`, `validation-gates`, `fast-review`, `panel-majority-vote`, `context-map`, `memory-merger`, `agent-hooks` |
88
87
 
89
88
  ¹ UI/UX Expert uses `e2e-testing` as a utility (viewport resize commands) — resolved through the matrix like other slots.
90
89
 
@@ -102,7 +101,7 @@ These are methodology/workflow skills — not tied to any technology. Referenced
102
101
  | `code-commenting` | Self-documenting code patterns, annotation tags |
103
102
  | `agent-hooks` | Agent lifecycle hooks (session-start, session-end, etc.) |
104
103
  | `agent-memory` | Agent expertise tracking, cross-session knowledge graph |
105
- | `task-management` | Linear board conventions, issue naming, priorities |
104
+ | `task-management` | Issue tracking conventions, naming, priorities |
106
105
  | `team-lead-reference` | Team Lead orchestration reference, model routing |
107
106
  | `fast-review` | Mandatory single-reviewer gate after every delegation |
108
107
  | `validation-gates` | Shared validation gate definitions (lint, test, build) |
@@ -131,6 +130,12 @@ These are methodology/workflow skills — not tied to any technology. Referenced
131
130
  2. Update matrix: `testing` → `Vitest` / `vitest-workflow`
132
131
  3. **No agent files change** — Testing Expert still references the `testing` slot
133
132
 
133
+ ### Example: Linear → Jira
134
+
135
+ 1. Skill already exists: `skills/jira-management/SKILL.md`
136
+ 2. Update matrix: `task-management` → `Jira` / `jira-management`
137
+ 3. **No agent files change** — Team Lead still references the `task-management` slot
138
+
134
139
  ## Design Principles
135
140
 
136
141
  1. **Single source of truth** — Technology choices live here, not scattered across agent files
@@ -126,7 +126,7 @@ Append-only NDJSON logs for agent activity tracking. Each file stores one JSON o
126
126
  "attempt": 1,
127
127
  "linear_issue": "PRJ-57",
128
128
  "artifacts_count": 14,
129
- "report_path": "customizations/logs/panel/instruction-refactoring.md"
129
+ "report_path": ".github/customizations/logs/panel/instruction-refactoring.md"
130
130
  }
131
131
  ```
132
132
 
@@ -0,0 +1,31 @@
1
+ <!-- Populated by agents. Add ADRs here when architectural decisions are made. -->
2
+
3
+ # Architecture Decision Records
4
+
5
+ Log of architectural decisions made during the project. Each ADR captures the context, decision, and consequences so future sessions understand why things are the way they are.
6
+
7
+ ## How to Use
8
+
9
+ - **Before making an architectural decision:** Check existing ADRs for prior decisions in the same area
10
+ - **After making a decision:** Add a new ADR with the next available ID
11
+ - **When revisiting a decision:** Update the status to `Superseded` and reference the new ADR
12
+
13
+ ## Decisions
14
+
15
+ ### ADR-001: _Template — Short Decision Title_
16
+
17
+ | Field | Value |
18
+ |-------|-------|
19
+ | **ID** | ADR-001 |
20
+ | **Date** | YYYY-MM-DD |
21
+ | **Status** | Proposed / Accepted / Deprecated / Superseded |
22
+
23
+ **Context:** _What is the issue that we're seeing that motivates this decision?_
24
+
25
+ **Decision:** _What is the change that we're proposing and/or doing?_
26
+
27
+ **Consequences:** _What becomes easier or more difficult to do because of this change?_
28
+
29
+ ---
30
+
31
+ _Add new ADRs above this line, incrementing the ID._
@@ -4,20 +4,31 @@
4
4
 
5
5
  Project-specific documentation layout referenced by the `documentation-standards` skill.
6
6
 
7
+ Documentation files live in the `.github/customizations/` directory alongside other project-specific configuration. Key documentation files:
8
+
9
+ - `.github/customizations/KNOWN-ISSUES.md` — Tracked issues, limitations, and accepted risks
10
+ - `.github/customizations/project/roadmap.md` — Project roadmap and feature status
11
+ - `.github/customizations/project/decisions.md` — Architecture Decision Records
12
+ - `.github/customizations/LESSONS-LEARNED.md` — Agent knowledge base of retries and workarounds
13
+
7
14
  ## Directory Tree
8
15
 
9
- <!-- Map your project's docs/ directory here -->
16
+ <!-- Map your project's documentation directory here if one exists -->
10
17
 
11
18
  ```
12
- docs/
13
- ├── README.md Documentation index
14
- └── ... Add entries as docs are created
19
+ .github/customizations/
20
+ ├── KNOWN-ISSUES.md Tracked issues and limitations
21
+ ├── LESSONS-LEARNED.md Agent knowledge base
22
+ └── project/
23
+ ├── roadmap.md — Feature roadmap
24
+ ├── decisions.md — Architecture Decision Records
25
+ └── docs-structure.md — This file
15
26
  ```
16
27
 
17
28
  ## Practices
18
29
 
19
30
  - **Check Known Issues** before starting any task
20
- - **Review Architecture** docs for context
31
+ - **Review Architecture** decisions for context
21
32
  - **Update roadmap** after completing features
22
33
  - **Add new issues** with: Issue ID, Status, Severity, Evidence, Root Cause, Solution Options
23
34
  - **Archive** outdated docs rather than deleting
@@ -0,0 +1,24 @@
1
+ <!-- Populated by the bootstrap-customizations prompt or manually. -->
2
+
3
+ # Project Roadmap
4
+
5
+ High-level roadmap of planned features and improvements. Updated by agents as tasks are completed.
6
+
7
+ ## How to Use
8
+
9
+ - **Before implementing a feature:** Check the roadmap for scope, status, and acceptance criteria
10
+ - **After completing a feature:** Mark the item with ✅, add the completion date and tracker issue IDs
11
+ - **When planning:** Add new items with priority and description
12
+
13
+ ## Roadmap Items
14
+
15
+ | Status | Priority | Description | Tracker Issues |
16
+ |--------|----------|-------------|----------------|
17
+ | Planned | High | _Example: Short description of the feature_ | — |
18
+
19
+ ### Status Values
20
+
21
+ - **Planned** — Scoped but not yet started
22
+ - **In Progress** — Actively being worked on
23
+ - **Done** — Completed and verified
24
+ - **Cancelled** — Removed from scope with documented reason
@@ -3,7 +3,7 @@
3
3
  <!-- Populated by the `bootstrap-customizations` prompt.
4
4
  Rename this file to match your tracker: linear-config.md, jira-config.md, etc. -->
5
5
 
6
- Project-specific task tracker details referenced by the `task-management` skill.
6
+ Project-specific task tracker details referenced by task management workflows.
7
7
 
8
8
  ## Workspace
9
9
 
@@ -19,7 +19,7 @@ Project-specific CMS details referenced by the corresponding CMS skill (e.g., `s
19
19
 
20
20
  ## Query Examples
21
21
 
22
- <!-- Provide representative query examples for the CMS query language (GROQ, GraphQL, etc.) -->
22
+ <!-- Provide representative query examples for the CMS query language (e.g., GROQ, GraphQL) -->
23
23
 
24
24
  ## Key Files
25
25
 
@@ -1,6 +1,6 @@
1
1
  # Notifications Configuration
2
2
 
3
- <!-- Populated by the `bootstrap-customizations` prompt based on `.opencastle.json` → `stack.notifications`. -->
3
+ <!-- Populated by the `bootstrap-customizations` prompt based on `.opencastle.json` → `stack.teamTools`. -->
4
4
 
5
5
  Project-specific messaging configuration referenced by the `slack-notifications` skill (or Teams equivalent).
6
6
 
@@ -3,7 +3,7 @@ description: 'AI assistant optimization techniques for efficient context usage a
3
3
  applyTo: '**'
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
  # AI Assistant Optimization Instructions
9
9
 
@@ -74,7 +74,7 @@ Phase 4: Verify (tests, errors, lint)
74
74
  Sub-agents run in isolated context windows. Use this to your advantage:
75
75
 
76
76
  - **Offload exploration** — fire a sub-agent to research a broad question; only the concise result comes back, keeping your primary context clean
77
- - **Parallel research** — launch multiple sub-agents simultaneously for independent research tasks (e.g., "find all GROQ queries" + "list all components using X" at the same time)
77
+ - **Parallel research** — launch multiple sub-agents simultaneously for independent research tasks (e.g., "find all CMS queries" + "list all components using X" at the same time)
78
78
  - **Detailed prompts save tokens** — a specific sub-agent prompt avoids the sub-agent doing its own exploratory searches, which would waste its context budget
79
79
 
80
80
  ### Trust Sub-Agent Results
@@ -2,7 +2,7 @@
2
2
  applyTo: '**'
3
3
  ---
4
4
 
5
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
5
+ <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
6
6
 
7
7
  # Coding Standards
8
8
 
@@ -13,13 +13,14 @@ applyTo: '**'
13
13
  3. **Leave code better than you found it** — fix adjacent issues when the cost is low.
14
14
  4. **Fail visibly** — surface errors clearly; never swallow exceptions silently.
15
15
  5. **Verify, don't trust** — confirm outcomes with tools (tests, lint, build) rather than assuming success.
16
+ 6. **Log every session** — append observability records to `.github/customizations/logs/` before yielding to the user. No exceptions. See § Observability Logging below.
16
17
 
17
18
  ## Instruction Priority Hierarchy
18
19
 
19
20
  **Project-specific instructions ALWAYS take precedence over external or general AI instructions.**
20
21
 
21
22
  1. **HIGHEST**: Project-specific instructions in `.github/instructions/` files
22
- 2. **MEDIUM**: NX workspace conventions (`yarn nx` commands, not `npm`/`npx`)
23
+ 2. **MEDIUM**: Project workspace conventions (resolve via the **codebase-tool** skill in the skill matrix)
23
24
  3. **LOWER**: General AI assistant capabilities and suggestions
24
25
 
25
26
  ## General Coding Principles
@@ -37,8 +38,8 @@ Load the corresponding skill for detailed conventions before writing code in tha
37
38
 
38
39
  | Domain | Skill |
39
40
  |--------|-------|
40
- | UI Components | **react-development** |
41
- | App Framework | **nextjs-patterns** |
41
+ | UI Components | **ui-library** (via skill matrix) |
42
+ | App Framework | **framework** (via skill matrix) |
42
43
  | Accessibility | **accessibility-standards** |
43
44
  | Performance | **performance-optimization** |
44
45
  | Frontend Design | **frontend-design** |
@@ -51,7 +52,7 @@ Before starting multi-step work, decompose it into individually verifiable tasks
51
52
  2. **Verify each step** — after completing each unit, verify it (run tests, check types, lint, or visually inspect) before moving to the next
52
53
  3. **Choose the right verification** — match the check to the change type:
53
54
  - Logic change → run unit tests
54
- - Type/interface change → run type-check (`yarn nx run <project>:lint`)
55
+ - Type/interface change → run the project's type-check / lint command (see the **codebase-tool** skill)
55
56
  - UI change → start dev server and visually inspect in the browser
56
57
  - Build config change → run a full build
57
58
  4. **Batch edits, then build** — group related edits across files, then run one build — not build-per-edit
@@ -70,9 +71,9 @@ Before starting multi-step work, decompose it into individually verifiable tasks
70
71
  **NEVER commit or push directly to the `main` branch.** All changes must go through a feature/fix branch and a pull request.
71
72
 
72
73
  1. **Create a branch** from `main` before making any changes: `git checkout -b <type>/<ticket-id>-<short-description>` (e.g., `fix/tas-21-places-redirect-loop`, `feat/tas-15-new-filter`)
73
- 2. **Commit to the branch** — never to `main`. Reference the Linear issue ID in every commit message (e.g., `TAS-42: Fix token refresh logic`)
74
+ 2. **Commit to the branch** — never to `main`. Reference the task tracker issue ID in every commit message (e.g., `TAS-42: Fix token refresh logic`)
74
75
  3. **Push the branch** and open a pull request on GitHub. **Do NOT merge** — PRs are opened for review only
75
- 4. **Link the PR to Linear** — Update the Linear issue description with the PR URL so progress is traceable
76
+ 4. **Link the PR to the task tracker** — Update the issue description with the PR URL so progress is traceable
76
77
  5. **Merge via PR** — the only way code reaches `main`, and only after review/approval
77
78
 
78
79
  Branch naming convention: `<type>/<ticket-id>-<short-description>` where type is `fix`, `feat`, `chore`, `refactor`, `perf`, or `docs`.
@@ -91,31 +92,27 @@ Branch naming convention: `<type>/<ticket-id>-<short-description>` where type is
91
92
  Every task that produces code changes — whether a roadmap feature, bug fix, follow-up, data pipeline, or refactor — must deliver:
92
93
 
93
94
  1. **Dedicated branch** — `<type>/<ticket-id>-<short-description>` created from `main`
94
- 2. **Atomic commits** — Each commit references the Linear issue ID (e.g., `TAS-42: Add filter component`)
95
+ 2. **Atomic commits** — Each commit references the issue ID (e.g., `TAS-42: Add filter component`)
95
96
  3. **Pushed branch** — Branch pushed to origin
96
97
  4. **Open PR** — Use `gh` CLI to create the PR. **Do NOT merge** — PRs are opened for review only:
97
98
  ```bash
98
99
  GH_PAGER=cat gh pr create --base main --title "TAS-XX: Short description" --body "Resolves TAS-XX"
99
100
  ```
100
- 5. **Linear linkage** — The Linear issue is updated with the PR URL, and the PR description references the Linear issue ID
101
+ 5. **Task tracker linkage** — The issue is updated with the PR URL, and the PR description references the issue ID
101
102
 
102
- ## NX Commands
103
+ ## Build & Task Commands
103
104
 
104
- **NEVER use `npm`/`npx`/`jest`/`eslint` directly. Always use `yarn nx` commands.**
105
+ Use the project's configured task runner for all build, test, lint, and serve commands. **Never invoke test runners or linters directly** always use the task runner wrapper.
105
106
 
106
- ```bash
107
- yarn nx run <project-name>:test [--coverage] [-u]
108
- yarn nx run <project-name>:lint --fix
109
- yarn nx run <project-name>:lint-styles --fix
110
- yarn nx run <project-name>:build
111
- yarn nx run <project-name>:serve
112
- yarn nx generate <generator-name>
113
- yarn nx affected -t <target>
114
- ```
107
+ Resolve exact commands by loading the **codebase-tool** skill from the skill matrix. Common tasks:
115
108
 
116
- **Exception:** Tools without NX targets may be invoked directly e.g., `npx sanity@latest schema deploy`, `npx supabase gen types`, `next start`. Check `project.json` targets first; only bypass NX when no target exists.
109
+ - **Test**run project tests (with optional coverage)
110
+ - **Lint** — run linter with auto-fix
111
+ - **Build** — production build
112
+ - **Serve** — start dev server
113
+ - **Affected** — run a target for all projects affected by current changes
117
114
 
118
- For comprehensive NX conventions, load the **nx-workspace** skill.
115
+ **Exception:** Tools without task runner targets may be invoked directly (e.g., CMS CLI commands, database CLI commands). Check the project's task runner config first; only bypass it when no target exists.
119
116
 
120
117
  ## Documentation
121
118
 
@@ -127,25 +124,27 @@ Follow prompt caching and batch processing best practices. See [AI Optimization
127
124
 
128
125
  ## Discovered Issues Policy
129
126
 
130
- **No issue gets ignored.** When you encounter a bug, error, or unexpected behavior that is unrelated to the current task:
127
+ > **⛔ No issue gets ignored.** Untracked bugs discovered during work are a quality gate failure.
128
+
129
+ When you encounter a bug, error, or unexpected behavior that is unrelated to the current task:
131
130
 
132
131
  1. **Check if already tracked:**
133
- - Search `docs/KNOWN-ISSUES.md` for a matching entry
134
- - If you have Linear tools available, also search Linear for open bugs (use `search_issues` or `list_issues` with bug label)
132
+ - Search `.github/customizations/KNOWN-ISSUES.md` for a matching entry
133
+ - If you have task tracker tools available, also search for open bugs (use `search_issues` or `list_issues` with bug label)
135
134
  2. **If found tracked** — skip it, continue with your current work
136
135
  3. **If NOT tracked** — you must act:
137
- - **Unfixable limitation** (third-party constraint, platform restriction, upstream dependency) → add it to `docs/KNOWN-ISSUES.md` with: Issue ID, Status, Severity, Evidence, Root Cause, Solution Options
138
- - **Fixable bug** → if you have Linear tools, create a ticket with label `bug`, appropriate priority, and a clear description of the symptoms, reproduction steps, and affected files. If you do NOT have Linear tools, add a `**Discovered Issues**` section to your output listing the bug details so the Team Lead can track it.
136
+ - **Unfixable limitation** (third-party constraint, platform restriction, upstream dependency) → add it to `.github/customizations/KNOWN-ISSUES.md` with: Issue ID, Status, Severity, Evidence, Root Cause, Solution Options
137
+ - **Fixable bug** → if you have task tracker tools, create a ticket with label `bug`, appropriate priority, and a clear description of the symptoms, reproduction steps, and affected files. If you do NOT have task tracker tools, add a `**Discovered Issues**` section to your output listing the bug details so the Team Lead can track it.
139
138
 
140
139
  Never assume a pre-existing issue is somebody else's problem. If it's not tracked, track it.
141
140
 
142
141
  ## Task Tracking
143
142
 
144
- Feature work is tracked on **Linear** (see `linear-config.md` for team and project details). The Team Lead agent creates and updates issues via MCP. For conventions, load the **task-management** skill.
143
+ Feature work is tracked in the **task tracker** (see `tracker-config.md` for project details). The Team Lead agent creates and updates issues via MCP. For conventions, load the **task-management** skill.
145
144
 
146
- ### When Linear MCP Tools Are Unavailable
145
+ ### When Task Tracker MCP Tools Are Unavailable
147
146
 
148
- If Linear MCP tools are not available in the current session, do NOT block on issue creation. Instead:
147
+ If task tracker MCP tools are not available in the current session, do NOT block on issue creation. Instead:
149
148
 
150
149
  1. **Document planned issues** in your output with the title, description, and acceptance criteria you would have used
151
150
  2. **Proceed with implementation** — the work is still valuable without a ticket number
@@ -155,37 +154,79 @@ If Linear MCP tools are not available in the current session, do NOT block on is
155
154
 
156
155
  ## Observability Logging (Mandatory)
157
156
 
157
+ > **⛔ HARD GATE — This is a blocking requirement, not a suggestion.**
158
+ > Do NOT respond to the user until you have appended the required log records.
159
+ > A session without log records is a failed session — regardless of code quality.
160
+
158
161
  **Every agent MUST log every session to the observability NDJSON files.** No exceptions. No threshold. No "too small to log." The dashboard depends on this data.
159
162
 
160
163
  ### What to log
161
164
 
162
- | File | Who appends | When |
163
- |------|------------|------|
164
- | `sessions.ndjson` | **All agents** | After every session — always |
165
- | `delegations.ndjson` | **Team Lead** | After each delegation to a specialist agent |
166
- | `panels.ndjson` | **Panel runner** | After each majority-vote review |
165
+ | File | Who appends | When | Example command below |
166
+ |------|------------|------|----------------------|
167
+ | `sessions.ndjson` | **All agents** | After every session — always | ✅ |
168
+ | `delegations.ndjson` | **Team Lead** | After each delegation to a specialist agent | ✅ |
169
+ | `reviews.ndjson` | **Team Lead** (via fast-review skill) | After each fast review | ✅ |
170
+ | `panels.ndjson` | **Panel runner** (via panel majority vote skill) | After each majority-vote review | ✅ |
171
+ | `disputes.ndjson` | **Team Lead** (via dispute protocol) | After each dispute record | ✅ |
167
172
 
168
173
  See `.github/customizations/logs/README.md` for the full schema of each record.
169
174
 
170
175
  ### How to log
171
176
 
172
- Append one JSON line per task. When the Team Lead works directly, use the agent role that best describes the work (e.g., `"agent": "Developer"`, `"agent": "UI-UX Expert"`). If a single conversation involves multiple distinct tasks, log one record per task.
177
+ Append one JSON line per task using `echo '...' >> <file>`. When the Team Lead works directly, use the agent role that best describes the work (e.g., `"agent": "Developer"`, `"agent": "UI-UX Expert"`). If a single conversation involves multiple distinct tasks, log one record per task.
173
178
 
179
+ **Session record** (ALL agents, EVERY session):
174
180
  ```bash
175
181
  echo '{"timestamp":"2026-03-01T14:00:00Z","agent":"Developer","model":"claude-opus-4-6","task":"Fix login redirect bug","outcome":"success","duration_min":15,"files_changed":3,"retries":0,"lessons_added":[],"discoveries":[]}' >> .github/customizations/logs/sessions.ndjson
176
182
  ```
177
183
 
184
+ **Delegation record** (Team Lead only, after each delegation):
185
+ ```bash
186
+ echo '{"timestamp":"2026-03-01T14:00:00Z","session_id":"feat/prj-57","agent":"Developer","model":"gpt-5.3-codex","tier":"fast","mechanism":"sub-agent","linear_issue":"PRJ-57","outcome":"success","retries":0,"phase":2,"file_partition":["src/components/"]}' >> .github/customizations/logs/delegations.ndjson
187
+ ```
188
+
189
+ **Fast review record** (Team Lead, after each fast review):
190
+ ```bash
191
+ echo '{"timestamp":"2026-03-01T14:30:00Z","linear_issue":"PRJ-42","agent":"Developer","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":1,"issues_critical":0,"issues_major":0,"issues_minor":2,"confidence":"high","escalated":false,"duration_sec":45}' >> .github/customizations/logs/reviews.ndjson
192
+ ```
193
+
194
+ **Panel record** (after each panel majority vote):
195
+ ```bash
196
+ echo '{"timestamp":"2026-03-01T15:00:00Z","panel_key":"auth-review","verdict":"pass","pass_count":2,"block_count":1,"must_fix":0,"should_fix":3,"reviewer_model":"claude-opus-4-6","weighted":false,"attempt":1,"linear_issue":"PRJ-42","artifacts_count":5}' >> .github/customizations/logs/panels.ndjson
197
+ ```
198
+
199
+ **Dispute record** (Team Lead, after each dispute):
200
+ ```bash
201
+ echo '{"timestamp":"2026-03-01T16:00:00Z","dispute_id":"DSP-001","linear_issue":"PRJ-42","priority":"high","trigger":"panel-3x-block","implementing_agent":"Developer","reviewing_agents":["Reviewer","Panel (3x)"],"total_attempts":6,"est_tokens_spent":120000,"status":"pending","resolution_option_chosen":null,"resolved_at":null}' >> .github/customizations/logs/disputes.ndjson
202
+ ```
203
+
204
+ ### Pre-Response Logging Checklist
205
+
206
+ **STOP before responding to the user.** Verify each applicable item:
207
+
208
+ - [ ] **Session logged** — `sessions.ndjson` has a new line for this session (ALWAYS required)
209
+ - [ ] **Delegations logged** — `delegations.ndjson` has a line for each delegation (Team Lead only)
210
+ - [ ] **Reviews logged** — `reviews.ndjson` has a line for each fast review performed (if any)
211
+ - [ ] **Panels logged** — `panels.ndjson` has a line for each panel review performed (if any)
212
+ - [ ] **Disputes logged** — `disputes.ndjson` has a line for each dispute created (if any)
213
+
214
+ If ANY required log is missing, append it NOW before responding.
215
+
178
216
  ### Rules
179
217
 
180
- - **Log before yielding to the user** — logging is the last action before responding.
218
+ - **Log before yielding to the user** — logging is the LAST action before responding. This is Constitution rule #6.
181
219
  - **Log per task**, not per conversation. Multiple tasks = multiple records.
182
220
  - **Never batch-log retrospectively** across sessions.
221
+ - **Verify the append succeeded** — if unsure, `tail -1` the file to confirm.
183
222
 
184
223
  ## Self-Improvement Protocol
185
224
 
225
+ > **⛔ HARD GATE — Lessons are the team's collective memory. Skipping them causes repeated failures.**
226
+
186
227
  **Every agent must learn from mistakes and share knowledge.** This prevents the same pitfalls from being repeated across sessions.
187
228
 
188
- 1. **Before starting work:** Read `.github/customizations/LESSONS-LEARNED.md` — apply relevant lessons proactively
229
+ 1. **Before starting work:** Read `.github/customizations/LESSONS-LEARNED.md` — apply relevant lessons proactively. This is NOT optional.
189
230
  2. **During execution:** If you retry a command/tool with a different approach and it works, **immediately** add a lesson entry to `.github/customizations/LESSONS-LEARNED.md`
190
231
  3. **Update source files:** If the lesson reveals a gap in instruction/skill files, update those files too
191
232
  4. **Update instructions:** Proactively suggest updates to `.github/instructions/` or `.github/skills/` files when:
@@ -210,16 +251,37 @@ These rules apply to ALL specialist agents automatically. **Do not duplicate the
210
251
  1. **Never delegate** — Specialist agents complete their own work and return results. Never invoke the Team Lead or spawn sub-agents. If work requires another domain, document the need in your output contract.
211
252
  2. **Follow the Discovered Issues Policy** — Track any pre-existing bugs found during your work (see § Discovered Issues Policy above).
212
253
  3. **Read and update lessons** — Read `.github/customizations/LESSONS-LEARNED.md` before starting. If you retry anything with a different approach that works, add a lesson immediately.
213
- 4. **Log every session** — Append to `.github/customizations/logs/sessions.ndjson` after every session. No exceptions. See § Observability Logging above.
254
+ 4. **Log every session** — Append to `.github/customizations/logs/sessions.ndjson` after every session. No exceptions. See § Observability Logging above. This is Constitution rule #6 — a blocking gate, not optional.
214
255
 
215
256
  ## Base Output Contract
216
257
 
217
258
  Every specialist agent's Output Contract MUST end with these standard items (in addition to domain-specific items above them):
218
259
 
219
- - **Session Logged** — Confirm that a session record was appended to `.github/customizations/logs/sessions.ndjson` (mandatory per § Observability Logging)
260
+ - **Observability Logged** — Confirm ALL applicable log records were appended (Constitution rule #6):
261
+ - `sessions.ndjson` — ALWAYS (every agent, every session)
262
+ - `delegations.ndjson` — if delegations occurred (Team Lead only)
263
+ - `reviews.ndjson` — if fast reviews occurred
264
+ - `panels.ndjson` — if panel reviews occurred
265
+ - `disputes.ndjson` — if disputes were created
220
266
  - **Discovered Issues** — Pre-existing bugs or anomalies found during work, with tracking action taken per the Discovered Issues Policy
221
267
  - **Lessons Applied** — Lessons from `.github/customizations/LESSONS-LEARNED.md` that influenced this work, and any new lessons added
222
268
 
223
269
  Agents reference this contract with: `See **Base Output Contract** in general.instructions.md for the standard closing items.`
224
270
 
271
+ ## Pre-Response Quality Gate
272
+
273
+ > **⛔ STOP before responding to the user.** Run through this checklist. If ANY required item is missing, fix it NOW.
274
+
275
+ This is the single exit gate for every session. All items are mandatory unless marked conditional.
276
+
277
+ - [ ] **Lessons read** — `.github/customizations/LESSONS-LEARNED.md` was read at session start (Self-Improvement Protocol)
278
+ - [ ] **Lessons captured** — If any retry occurred, a new lesson was added to `LESSONS-LEARNED.md`
279
+ - [ ] **Discovered issues tracked** — Any pre-existing bugs found were added to `KNOWN-ISSUES.md` or a tracker ticket was created (Discovered Issues Policy)
280
+ - [ ] **Lint/type/test pass** — No new errors introduced; verification ran after code changes (Constitution rule #5)
281
+ - [ ] **Session logged** — `sessions.ndjson` has a new line for this session (Constitution rule #6 — ALWAYS required)
282
+ - [ ] **Delegations logged** — `delegations.ndjson` has a line for each delegation (Team Lead only)
283
+ - [ ] **Reviews logged** — `reviews.ndjson` has a line for each fast review performed (if any)
284
+ - [ ] **Panels logged** — `panels.ndjson` has a line for each panel review performed (if any)
285
+ - [ ] **Disputes logged** — `disputes.ndjson` has a line for each dispute created (if any)
286
+
225
287
  <!-- End of Coding Standards -->
@@ -3,7 +3,7 @@ name: browser-testing
3
3
  description: "Chrome DevTools MCP automation patterns for validating UI changes in real browsers. Use when performing E2E browser testing, validating visual changes, testing user interactions, or debugging UI issues with Chrome DevTools."
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
  # Browser Testing with Chrome DevTools MCP
9
9
 
@@ -0,0 +1,29 @@
1
+ import type { PluginConfig } from '../types.js';
2
+
3
+ export const config: PluginConfig = {
4
+ id: 'chrome-devtools',
5
+ name: 'Chrome DevTools',
6
+ category: 'tech',
7
+ subCategory: 'testing',
8
+ label: 'Chrome DevTools',
9
+ hint: 'Browser testing, screenshots, DOM inspection',
10
+ skillName: 'browser-testing',
11
+ mcpServerKey: 'chrome-devtools',
12
+ mcpConfig: {
13
+ type: 'stdio',
14
+ command: 'npx',
15
+ args: ['-y', 'chrome-devtools-mcp@latest'],
16
+ },
17
+ authType: 'none',
18
+ envVars: [],
19
+ agentToolMap: {
20
+ 'performance-expert': ['chrome-devtools/*'],
21
+ 'seo-specialist': ['chrome-devtools/*'],
22
+ 'testing-expert': ['chrome-devtools/*'],
23
+ 'ui-ux-expert': ['chrome-devtools/*'],
24
+ },
25
+ docsUrl: '/guides/plugins#chrome-devtools',
26
+ officialDocs: 'https://developer.chrome.com/docs/devtools',
27
+ mcpPackage: 'chrome-devtools-mcp',
28
+ preselected: true,
29
+ };
@@ -3,7 +3,7 @@ name: contentful-cms
3
3
  description: "Contentful CMS development patterns, GraphQL/REST API usage, content modeling, and migration best practices. Use when working with Contentful content types, entries, assets, or the Management API."
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
  # Contentful CMS
9
9
 
@@ -0,0 +1,49 @@
1
+ import type { PluginConfig } from '../types.js';
2
+
3
+ export const config: PluginConfig = {
4
+ id: 'contentful',
5
+ name: 'Contentful',
6
+ category: 'tech',
7
+ subCategory: 'cms',
8
+ label: 'Contentful',
9
+ hint: 'GraphQL / REST API, structured content',
10
+ skillName: 'contentful-cms',
11
+ mcpServerKey: 'Contentful',
12
+ mcpConfig: {
13
+ type: 'stdio',
14
+ command: 'npx',
15
+ args: ['-y', '@contentful/mcp-server'],
16
+ },
17
+ authType: 'none',
18
+ envVars: [],
19
+ agentToolMap: {
20
+ 'content-engineer': [
21
+ 'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
22
+ 'contentful/create_content_type', 'contentful/update_content_type', 'contentful/publish_content_type',
23
+ 'contentful/unpublish_content_type', 'contentful/delete_content_type', 'contentful/search_entries',
24
+ 'contentful/get_entry', 'contentful/create_entry', 'contentful/update_entry',
25
+ 'contentful/publish_entry', 'contentful/unpublish_entry', 'contentful/delete_entry',
26
+ 'contentful/list_editor_interfaces', 'contentful/get_editor_interface', 'contentful/update_editor_interface',
27
+ 'contentful/upload_asset', 'contentful/list_assets', 'contentful/get_asset',
28
+ 'contentful/update_asset', 'contentful/publish_asset', 'contentful/unpublish_asset',
29
+ 'contentful/delete_asset', 'contentful/list_spaces', 'contentful/get_space',
30
+ 'contentful/list_environments', 'contentful/create_environment', 'contentful/delete_environment',
31
+ 'contentful/list_locales', 'contentful/get_locale', 'contentful/create_locale',
32
+ 'contentful/update_locale', 'contentful/delete_locale', 'contentful/list_tags',
33
+ 'contentful/create_tag', 'contentful/list_orgs', 'contentful/get_org',
34
+ ],
35
+ 'copywriter': [
36
+ 'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
37
+ 'contentful/search_entries', 'contentful/get_entry', 'contentful/update_entry',
38
+ 'contentful/publish_entry', 'contentful/list_spaces', 'contentful/get_space',
39
+ ],
40
+ 'data-expert': [
41
+ 'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
42
+ 'contentful/search_entries', 'contentful/get_entry', 'contentful/create_entry',
43
+ 'contentful/update_entry', 'contentful/list_spaces', 'contentful/get_space',
44
+ ],
45
+ },
46
+ docsUrl: null,
47
+ officialDocs: 'https://www.contentful.com/developers/docs/',
48
+ mcpPackage: '@contentful/mcp-server',
49
+ };
@@ -3,7 +3,7 @@ name: convex-database
3
3
  description: "Convex reactive database patterns, schema design, real-time queries, mutations, actions, and deployment best practices. Use when designing Convex schemas, writing queries/mutations, or managing the Convex backend."
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
  # Convex Database
9
9