opencastle 0.35.2 → 0.35.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/package.json +1 -1
  2. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  3. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  4. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +12 -12
  5. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +9 -9
  6. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  7. package/src/dashboard/dist/data/convoys/demo-docs-update.json +7 -7
  8. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
  9. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  10. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  11. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  12. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +12 -12
  13. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +9 -9
  14. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  15. package/src/dashboard/public/data/convoys/demo-docs-update.json +7 -7
  16. package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
  17. package/src/orchestrator/agents/api-designer.agent.md +10 -10
  18. package/src/orchestrator/agents/architect.agent.md +8 -8
  19. package/src/orchestrator/agents/content-engineer.agent.md +5 -5
  20. package/src/orchestrator/agents/copywriter.agent.md +7 -7
  21. package/src/orchestrator/agents/data-expert.agent.md +9 -9
  22. package/src/orchestrator/agents/database-engineer.agent.md +7 -7
  23. package/src/orchestrator/agents/developer.agent.md +13 -13
  24. package/src/orchestrator/agents/devops-expert.agent.md +10 -10
  25. package/src/orchestrator/agents/documentation-writer.agent.md +8 -8
  26. package/src/orchestrator/agents/performance-expert.agent.md +9 -9
  27. package/src/orchestrator/agents/release-manager.agent.md +8 -8
  28. package/src/orchestrator/agents/researcher.agent.md +5 -5
  29. package/src/orchestrator/agents/reviewer.agent.md +5 -5
  30. package/src/orchestrator/agents/security-expert.agent.md +10 -10
  31. package/src/orchestrator/agents/seo-specialist.agent.md +11 -11
  32. package/src/orchestrator/agents/session-guard.agent.md +2 -2
  33. package/src/orchestrator/agents/team-lead.agent.md +4 -4
  34. package/src/orchestrator/agents/testing-expert.agent.md +7 -7
  35. package/src/orchestrator/agents/ui-ux-expert.agent.md +15 -15
  36. package/src/orchestrator/prompts/assess-complexity.prompt.md +8 -8
  37. package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +17 -17
  38. package/src/orchestrator/prompts/brainstorm.prompt.md +17 -17
  39. package/src/orchestrator/prompts/bug-fix.prompt.md +11 -11
  40. package/src/orchestrator/prompts/create-skill.prompt.md +21 -21
  41. package/src/orchestrator/prompts/fix-convoy.prompt.md +8 -8
  42. package/src/orchestrator/prompts/fix-prd.prompt.md +12 -12
  43. package/src/orchestrator/prompts/generate-convoy.prompt.md +50 -50
  44. package/src/orchestrator/prompts/generate-prd.prompt.md +32 -32
  45. package/src/orchestrator/prompts/implement-feature.prompt.md +16 -16
  46. package/src/orchestrator/prompts/quick-refinement.prompt.md +18 -18
  47. package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +9 -9
  48. package/src/orchestrator/prompts/validate-convoy.prompt.md +10 -10
  49. package/src/orchestrator/prompts/validate-prd.prompt.md +10 -10
  50. package/src/orchestrator/skills/accessibility-standards/SKILL.md +8 -8
  51. package/src/orchestrator/skills/agent-hooks/SKILL.md +1 -1
  52. package/src/orchestrator/skills/agent-memory/SKILL.md +11 -11
  53. package/src/orchestrator/skills/api-patterns/SKILL.md +5 -5
  54. package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +24 -51
  55. package/src/orchestrator/skills/code-commenting/SKILL.md +3 -3
  56. package/src/orchestrator/skills/context-map/REFERENCE.md +2 -2
  57. package/src/orchestrator/skills/context-map/SKILL.md +5 -5
  58. package/src/orchestrator/skills/data-engineering/SKILL.md +12 -12
  59. package/src/orchestrator/skills/decomposition/SKILL.md +34 -7
  60. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +4 -4
  61. package/src/orchestrator/skills/documentation-standards/SKILL.md +7 -7
  62. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +3 -3
  63. package/src/orchestrator/skills/fast-review/SKILL.md +2 -2
  64. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +1 -1
  65. package/src/orchestrator/skills/frontend-design/SKILL.md +11 -11
  66. package/src/orchestrator/skills/git-workflow/SKILL.md +5 -5
  67. package/src/orchestrator/skills/memory-merger/SKILL.md +32 -8
  68. package/src/orchestrator/skills/observability-logging/SKILL.md +6 -11
  69. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +15 -15
  70. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -4
  71. package/src/orchestrator/skills/performance-optimization/SKILL.md +5 -5
  72. package/src/orchestrator/skills/project-consistency/SKILL.md +4 -4
  73. package/src/orchestrator/skills/react-development/SKILL.md +8 -8
  74. package/src/orchestrator/skills/security-hardening/SKILL.md +12 -12
  75. package/src/orchestrator/skills/self-improvement/SKILL.md +11 -11
  76. package/src/orchestrator/skills/seo-patterns/SKILL.md +49 -23
  77. package/src/orchestrator/skills/session-checkpoints/SKILL.md +12 -12
  78. package/src/orchestrator/skills/team-lead-reference/SKILL.md +6 -6
  79. package/src/orchestrator/skills/testing-workflow/SKILL.md +3 -3
  80. package/src/orchestrator/skills/validation-gates/SKILL.md +6 -6
  81. package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +0 -16
  82. package/src/orchestrator/skills/decomposition/REFERENCE.md +0 -28
  83. package/src/orchestrator/skills/memory-merger/REFERENCE.md +0 -20
  84. package/src/orchestrator/skills/react-development/REFERENCE.md +0 -7
  85. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +0 -54
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Task orchestrator that analyzes work, decomposes it into subtasks, and delegates to specialized agents via sub-agents (inline) or background sessions (parallel worktrees).'
2
+ description: 'Task orchestrator: analyzes work, decomposes into subtasks, delegates to specialized agents via sub-agents (inline) or background sessions (parallel worktrees).'
3
3
  name: 'Team Lead (OpenCastle)'
4
4
  model: Claude Opus 4.7
5
5
  tools: [read/problems, read/readFile, agent/runSubagent, edit/createDirectory, edit/createFile, edit/createJupyterNotebook, edit/editFiles, edit/editNotebook, search/changes, search/codebase, search/fileSearch, search/listDirectory, search/searchResults, search/textSearch, search/usages, web/fetch, agent, execute/runInTerminal, execute/getTerminalOutput, read/terminalLastCommand, read/terminalSelection]
@@ -59,7 +59,7 @@ Developer | UI/UX Expert | Content Engineer | Database Engineer | Testing Expert
59
59
 
60
60
  ## Delegation
61
61
 
62
- **Sub-agents** (`runSubagent`): synchronous, critical-path. **Background agents**: async in isolated worktrees, parallel work. Always name the agent explicitly. Include: issue ID, objective, file paths, acceptance criteria, self-improvement reminder.
62
+ **Sub-agents** (`runSubagent`): synchronous, critical-path. **Background agents**: async in isolated worktrees, parallel work. Always name agent explicitly. Include: issue ID, objective, file paths, acceptance criteria, self-improvement reminder.
63
63
 
64
64
  **⛔ Hard gates:**
65
65
  - Log delegation record immediately after each return/spawn — **observability-logging** (`--mechanism sub-agent` or `--mechanism background`).
@@ -88,11 +88,11 @@ Developer | UI/UX Expert | Content Engineer | Database Engineer | Testing Expert
88
88
 
89
89
  **Step 5 — Deliver:** See [shared-delivery-phase.md](../agent-workflows/shared-delivery-phase.md). Verify all Done → build/lint/test → commit feature branch → `GH_PAGER=cat gh pr create` — do NOT merge → link PR → clean checkpoint → call **Session Guard**.
90
90
 
91
- **On Resume:** Read `SESSION-CHECKPOINT.md`. Check `AGENT-FAILURES.md` and `DISPUTES.md`. List In Progress / Todo → continue.
91
+ **On Resume:** Read `SESSION-CHECKPOINT.md`. Check `AGENT-FAILURES.md`, `DISPUTES.md`. List In Progress / Todo → continue.
92
92
 
93
93
  ## Observability
94
94
 
95
- > **⛔ HARD GATE.** Load **observability-logging** for schemas, commands, and pre-response quality gate. Before Session Guard: delegation count + review count = records written.
95
+ > **⛔ HARD GATE.** Load **observability-logging** for schemas, commands, pre-response quality gate. Before Session Guard: delegation count + review count = records written.
96
96
 
97
97
  ## Rules
98
98
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Testing expert for E2E tests, integration tests, browser validation, and test suites using browser automation and test file authoring.'
2
+ description: 'Testing expert: E2E tests, integration tests, browser validation, test suites via browser automation, test file authoring.'
3
3
  name: 'Testing Expert'
4
4
  model: GPT-5.5-Codex
5
5
  tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
@@ -12,7 +12,7 @@ Validates UI changes via browser automation; writes E2E/integration suites. TDD-
12
12
 
13
13
  ## Skills
14
14
 
15
- Resolve all skills via [skill-matrix.json](.opencastle/agents/skill-matrix.json).
15
+ Resolve skills via [skill-matrix.json](.opencastle/agents/skill-matrix.json).
16
16
 
17
17
  ## Rules
18
18
 
@@ -27,7 +27,7 @@ Resolve all skills via [skill-matrix.json](.opencastle/agents/skill-matrix.json)
27
27
 
28
28
  ## Anti-Patterns
29
29
 
30
- - Assert mock behavior; skip the full suite; test-after; desktop-only testing; test-only prod methods
30
+ - Assert mock behavior; skip full suite; test-after; desktop-only testing; test-only prod methods
31
31
 
32
32
  ## Test Plan
33
33
 
@@ -38,8 +38,8 @@ Every suite covers: Initial State · User Interactions · State Transitions · E
38
38
  - `data-testid` for element selection; mock external APIs only (not internal modules)
39
39
  - Deterministic tests — no `sleep`/timing hacks; use `waitFor`/expect-based polling
40
40
  - Browser: `evaluate_script()` over `take_snapshot()`, max 3 screenshots, clear state between flows
41
- - Test keyboard navigation and accessibility
42
- - Load **browser-testing** skill for breakpoint checklists and exact commands
41
+ - Test keyboard navigation, accessibility
42
+ - Load **browser-testing** skill for breakpoint checklists, exact commands
43
43
 
44
44
  ## When Stuck
45
45
 
@@ -60,8 +60,8 @@ Every suite covers: Initial State · User Interactions · State Transitions · E
60
60
 
61
61
  1. **Test Files** — created/modified
62
62
  2. **Coverage** — count, pass/fail, percentage
63
- 3. **Browser Validation** — screenshots and what they prove
63
+ 3. **Browser Validation** — screenshots, what they prove
64
64
  4. **Edge Cases** — covered and gaps
65
65
  5. **Regressions** — adjacent features verified
66
66
 
67
- See [Base Output Contract](../snippets/base-output-contract.md) for the standard closing items.
67
+ See [Base Output Contract](../snippets/base-output-contract.md) for standard closing items.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'UI/UX expert for designing and building accessible, consistent UI components with deep knowledge of the design system.'
2
+ description: 'UI/UX expert: designs, builds accessible, consistent UI components with deep design system knowledge.'
3
3
  name: 'UI/UX Expert'
4
4
  model: Claude Sonnet 4.6
5
5
  tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/newWorkspace', 'vscode/runCommand', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
@@ -9,11 +9,11 @@ user-invocable: false
9
9
  # UI/UX Expert
10
10
 
11
11
  ## Critical Rules
12
- 1. **Design system first** — check existing tokens, components, and patterns before creating new
12
+ 1. **Design system first** — check existing tokens, components, patterns before creating new
13
13
  2. **Semantic HTML before ARIA** — fix structure first; only add ARIA when semantic HTML is insufficient
14
- 3. **Mobile-first always** — design at the smallest breakpoint; never start at desktop
15
- 4. **Place shared components in the UI library** — never in app-specific directories
16
- 5. **Validate at all breakpoints** — load the **e2e-testing** skill for resize commands and checklists
14
+ 3. **Mobile-first always** — design at smallest breakpoint; never start at desktop
15
+ 4. **Place shared components in UI library** — never in app-specific directories
16
+ 5. **Validate at all breakpoints** — load **e2e-testing** skill for resize commands, checklists
17
17
 
18
18
  ## Anti-Patterns
19
19
  - Generic AI aesthetics (Inter font, purple gradients, card grids) — be distinctive
@@ -21,25 +21,25 @@ user-invocable: false
21
21
  - Adding ARIA before fixing semantic HTML; desktop-first development
22
22
 
23
23
  ## Skills
24
- Resolve all skills (slots and direct) via [skill-matrix.json](.opencastle/agents/skill-matrix.json).
24
+ Resolve skills (slots, direct) via [skill-matrix.json](.opencastle/agents/skill-matrix.json).
25
25
 
26
26
  ## When Stuck
27
27
  | Problem | Solution |
28
28
  |---------|----------|
29
- | Can't find the design token | Check the UI library's token file before hardcoding |
29
+ | Can't find the design token | Check UI library's token file before hardcoding |
30
30
  | Component looks generic / AI-generated | Add one distinctive element: type scale, spacing, or brand motion |
31
- | Keyboard navigation is broken | Trace focus order from the first focusable element |
31
+ | Keyboard navigation is broken | Trace focus order from first focusable element |
32
32
  | Responsive breakpoint fails | Check `testing-config.md` for project-defined breakpoints |
33
33
 
34
34
  ## Guidelines
35
- - Export all components from the UI library index; use `clsx` for conditional classes
36
- - Implement hover, focus, and active states for all interactive elements
37
- - Co-locate component styles with the component file; test with keyboard-only navigation
35
+ - Export all components from UI library index; use `clsx` for conditional classes
36
+ - Implement hover, focus, active states for all interactive elements
37
+ - Co-locate component styles with component file; test with keyboard-only navigation
38
38
 
39
39
  ### Multi-Page Convoy Consistency
40
- - **Foundation task:** create design tokens, shared layout, and UI component library — choices are the project contract
41
- - **Page task:** import from foundation — no new tokens, layouts, or design values
42
- - Load the **project-consistency** skill for full guidance
40
+ - **Foundation task:** create design tokens, shared layout, UI component library — choices are project contract
41
+ - **Page task:** import from foundation — no new tokens, layouts, design values
42
+ - Load **project-consistency** skill for full guidance
43
43
 
44
44
  ## Done When
45
45
  - Components render at all defined responsive breakpoints
@@ -57,4 +57,4 @@ Resolve all skills (slots and direct) via [skill-matrix.json](.opencastle/agents
57
57
  3. **Responsive** — breakpoints tested (per project testing config)
58
58
  4. **Visual Evidence** — screenshots at each breakpoint
59
59
 
60
- See [Base Output Contract](../snippets/base-output-contract.md) for the standard closing items.
60
+ See [Base Output Contract](../snippets/base-output-contract.md) for standard closing items.
@@ -8,7 +8,7 @@ output: json
8
8
 
9
9
  # Assess PRD Complexity
10
10
 
11
- Analyze the PRD below and produce a complexity assessment as a **single JSON object**. This JSON is consumed programmatically by the pipeline to decide whether to generate one convoy spec or a chain of convoy specs.
11
+ Analyze the PRD below; produce complexity assessment as **single JSON object**. Consumed programmatically by pipeline to decide whether to generate one convoy spec or chain of convoy specs.
12
12
 
13
13
  ## PRD to Analyze
14
14
 
@@ -22,7 +22,7 @@ Analyze the PRD below and produce a complexity assessment as a **single JSON obj
22
22
 
23
23
  ## Output Rules
24
24
 
25
- **CRITICAL:** Return ONLY a single fenced JSON block — no prose, no explanation, no markdown headings. Start your response with the opening fence and end with the closing fence.
25
+ **CRITICAL:** Return ONLY single fenced JSON block — no prose, no explanation, no markdown headings. Start with opening fence; end with closing fence.
26
26
 
27
27
  ## Required JSON Schema
28
28
 
@@ -57,7 +57,7 @@ Analyze the PRD below and produce a complexity assessment as a **single JSON obj
57
57
 
58
58
  ## Field Rules
59
59
 
60
- - `original_prompt`: Copy the user's original feature request verbatim from the "Original User Prompt" section above. If that section is empty, extract a one-sentence summary from the PRD's Overview section.
60
+ - `original_prompt`: Copy user's original feature request verbatim from "Original User Prompt" section above. If empty, extract one-sentence summary from PRD's Overview section.
61
61
  - `total_tasks`: Count of individual workstreams in the Task Breakdown.
62
62
  - `total_phases`: Count of phases in the Task Breakdown.
63
63
  - `domains`: List of technical domains involved (e.g., "frontend", "api", "database", "testing", "config").
@@ -66,15 +66,15 @@ Analyze the PRD below and produce a complexity assessment as a **single JSON obj
66
66
  - `recommended_strategy`:
67
67
  - `"single"` when: total tasks ≤ 8, OR total phases ≤ 3, OR all tasks are tightly coupled with heavy cross-phase file sharing.
68
68
  - `"chain"` when: total tasks > 8 AND total phases > 3 AND domains have natural boundaries — AND splitting improves failure isolation, observability, or retry granularity.
69
- - `chain_rationale`: Only filled when `recommended_strategy` is `"chain"` — explain WHY splitting benefits this specific feature.
69
+ - `chain_rationale`: Only filled when `recommended_strategy` is `"chain"` — explain WHY splitting benefits this feature.
70
70
  - `convoy_groups`:
71
71
  - When `"single"`: exactly one group covering all phases.
72
72
  - When `"chain"`: 2–4 groups with explicit `depends_on` order. Each group covers a coherent domain boundary.
73
- - **Minimum 3 tasks per group.** Never create a group that would produce a convoy with only 1–2 tasks — merge small groups with adjacent ones. A convoy with a single task is pointless overhead.
74
- - **Do NOT map phases 1:1 to groups.** Groups should bundle multiple related phases when tasks are tightly coupled (e.g., config + data in one group, components + pages in another). Only split at genuine domain boundaries where failure isolation matters.
73
+ - **Minimum 3 tasks per group.** Never create a group producing a convoy with only 1–2 tasks — merge small groups with adjacent ones. Single-task convoy is pointless overhead.
74
+ - **Do NOT map phases 1:1 to groups.** Bundle multiple related phases when tasks are tightly coupled (e.g., config + data in one group, components + pages in another). Only split at genuine domain boundaries where failure isolation matters.
75
75
  - Maximum 3 groups for projects with ≤ 15 tasks. Maximum 4 groups for 16+ tasks.
76
76
  - `task_complexity`: Array of per-workstream complexity assessments using Fibonacci scale.
77
- - `workstream`: Exact workstream title from the PRD's Task Breakdown section.
78
- - `phase`: Phase number the workstream belongs to.
77
+ - `workstream`: Exact workstream title from PRD's Task Breakdown section.
78
+ - `phase`: Phase number workstream belongs to.
79
79
  - `complexity`: Fibonacci score: `1` (trivial — single file edit), `2` (simple — small fix, one test), `3` (moderate — new component/endpoint), `5` (significant — multi-file feature), `8` (complex — cross-cutting), `13` (epic — architecture-level).
80
80
  - `rationale`: One sentence explaining the score.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Deep-analyze the project to complete the .opencastle/ configuration with schema details, API routes, environment variables, and other information that requires reading actual config files. The programmatic bootstrap (run during opencastle init) has already populated the deterministic parts — do not redo that work.'
2
+ description: 'Deep-analyze project to complete .opencastle/ configuration with schema details, API routes, environment variables, other info requiring reading actual config files. Programmatic bootstrap (run during opencastle init) already populated deterministic parts — do not redo that work.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Complete Project Customizations
9
9
 
10
- You are completing the AI agent framework setup for a new project. The programmatic bootstrap (run automatically during `opencastle init`) has already populated the `.opencastle/` configuration files with everything it could determine automatically. Your job is to **deep-analyze** the project — reading actual config files, schemas, and source code — to **fill in the details** that require reading real file contents.
10
+ Complete AI agent framework setup for a new project. Programmatic bootstrap (run automatically during `opencastle init`) already populated `.opencastle/` configuration files with everything it could determine automatically. Your job: **deep-analyze** project — reading actual config files, schemas, source code — to **fill in details** requiring reading real file contents.
11
11
 
12
12
  ## Additional Context (optional)
13
13
 
@@ -17,9 +17,9 @@ You are completing the AI agent framework setup for a new project. The programma
17
17
 
18
18
  ## Background
19
19
 
20
- The `.opencastle/` directory holds project-specific configuration that skills load at runtime. Skills contain generic methodology (how to write migrations, how to test, how to deploy); customizations hold the concrete values (which database, which endpoints, which project IDs).
20
+ The `.opencastle/` directory holds project-specific configuration that skills load at runtime. Skills contain generic methodology (how to write migrations, how to test, how to deploy); customizations hold concrete values (which database, which endpoints, which project IDs).
21
21
 
22
- Without customizations, agents operate blind — they don't know the project's table schema, API routes, deployment target, or task board. This prompt fixes that.
22
+ Without customizations, agents operate blind — they don't know project's table schema, API routes, deployment target, task board. This prompt fixes that.
23
23
 
24
24
  ## Pre-Existing Setup
25
25
 
@@ -27,10 +27,10 @@ Without customizations, agents operate blind — they don't know the project's t
27
27
 
28
28
  The project root contains **`.opencastle.json`** with a `repoInfo` field populated by `opencastle init`. It merges two sources:
29
29
 
30
- 1. **Auto-detected tooling** — the init command scanned config files, `package.json` dependencies, and directory structures
31
- 2. **User-declared choices** — the user selected CMS, database, project management, and notifications via the interactive questionnaire
30
+ 1. **Auto-detected tooling** — init command scanned config files, `package.json` dependencies, and directory structures
31
+ 2. **User-declared choices** — user selected CMS, database, project management, notifications via interactive questionnaire
32
32
 
33
- The result is a single unified view of the project's tech stack:
33
+ Result: single unified view of project's tech stack:
34
34
 
35
35
  ```json
36
36
  {
@@ -63,17 +63,17 @@ The result is a single unified view of the project's tech stack:
63
63
  **Use `repoInfo` to:**
64
64
  - Know which technologies are present — skip re-scanning, go straight to reading their config files
65
65
  - Identify `configFiles` to read for deep inspection
66
- - Know which `project/` config files to create if they're missing (e.g., if `repoInfo.pm` includes `"linear"`, ensure `project/linear-config.md` exists)
66
+ - Know which `project/` config files to create if missing (e.g., if `repoInfo.pm` includes `"linear"`, ensure `project/linear-config.md` exists)
67
67
 
68
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 — it includes everything from `stack` plus all auto-detected tooling.
69
69
 
70
70
  **Still inspect:** `repoInfo` detects presence, not configuration details. You still need to read the actual config files for schemas, IDs, routes, etc.
71
71
 
72
- The skill matrix (`.opencastle/agents/skill-matrix.json`) will already have the `cms` and `database` binding entries pre-filled. The appropriate task management and notifications skills will already be installed. Verify they are correct and fill in any remaining empty bindings.
72
+ Skill matrix (`.opencastle/agents/skill-matrix.json`) already has `cms`, `database` binding entries pre-filled. Appropriate task management, notifications skills already installed. Verify correctness; fill in remaining empty bindings.
73
73
 
74
74
  ### Pre-populated `.opencastle/` Files — What's Already Done
75
75
 
76
- The programmatic bootstrap that runs during `opencastle init` has already created and partially filled these files. **Do not regenerate them from scratch — update them instead.**
76
+ Programmatic bootstrap running during `opencastle init` already created, partially filled these files. **Do not regenerate from scratch — update them instead.**
77
77
 
78
78
  | File | What's already there | What's missing |
79
79
  |------|---------------------|----------------|
@@ -92,25 +92,25 @@ The programmatic bootstrap that runs during `opencastle init` has already create
92
92
  - `stack/data-pipeline-config.md` — requires reading pipeline scripts
93
93
  - `agents/agent-registry.md`, `agents/skill-matrix.json`, `agents/skill-matrix.md` — if `.github/agents/` and `.github/skills/` exist
94
94
 
95
- Any template file for a technology NOT detected (no DB, no CMS, etc.) has already been removed.
95
+ Any template file for technology NOT detected (no DB, no CMS, etc.) already removed.
96
96
 
97
97
  ## Workflow
98
98
 
99
99
  ### Phase 1: Discovery
100
100
 
101
- The programmatic bootstrap has already detected the tech stack. **Skip re-scanning** — focus on reading actual file contents to extract details.
101
+ Programmatic bootstrap already detected tech stack. **Skip re-scanning** — focus on reading actual file contents to extract details.
102
102
 
103
103
  #### 1.1 Read Pre-populated Files
104
104
 
105
105
  - **First**: Read all existing `.opencastle/` files to understand what's already filled in
106
- - Read `.opencastle/project.instructions.md` to see the current tech stack table and gaps
106
+ - Read `.opencastle/project.instructions.md` to see current tech stack table, gaps
107
107
  - Read each `stack/*.md` file — note any `<!-- TODO: verify -->` markers and empty table rows
108
108
  - Read `.opencastle.json` for `repoInfo` and `configFiles` — use `configFiles` as your reading list
109
109
  - Note what's missing (empty sections, placeholders, TODO markers)
110
110
 
111
111
  #### 1.2 Deep Inspection
112
112
 
113
- For each technology listed in the pre-populated files, read its actual config files to extract the details that couldn't be auto-detected:
113
+ For each technology in pre-populated files, read its actual config files to extract details that couldn't be auto-detected:
114
114
 
115
115
  - **Database**: Read migration files, schema definitions, RLS policies, auth setup — extract table names, column types, policy names
116
116
  - **CMS**: Read schema files, document types, plugin config — extract content model names, field definitions, project/space IDs
@@ -122,7 +122,7 @@ For each technology listed in the pre-populated files, read its actual config fi
122
122
 
123
123
  ### Phase 2: Complete Customization Files
124
124
 
125
- Update the existing `.opencastle/` files using the deep inspection data gathered in Phase 1. **Do not regenerate files that already exist** — update them.
125
+ Update existing `.opencastle/` files using deep inspection data from Phase 1. **Do not regenerate files that already exist** — update them.
126
126
 
127
127
  Target file structure for reference:
128
128
 
@@ -174,7 +174,7 @@ Target file structure for reference:
174
174
  5. **`agents/skill-matrix.json`** — If `.github/skills/` exists with skill definitions:
175
175
  - Capability slot bindings and `directSkills` per agent role (in JSON format)
176
176
  - Which agents load which skills (slots for plugin skills, directSkills for process skills)
177
- - Note: `skill-matrix.md` is a companion documentation file — the JSON is the source of truth
177
+ - Note: `skill-matrix.md` is companion documentation file — JSON is source of truth
178
178
 
179
179
  #### `stack/` — Update Existing, Create Missing
180
180
 
@@ -271,7 +271,7 @@ Now that your `.opencastle/` configuration is complete, here's what you can do:
271
271
 
272
272
  - **Discover, don't assume.** Read actual config files. Don't guess that the project uses Supabase because it's a Next.js app.
273
273
  - **Skip what doesn't exist.** If there's no CMS, don't create a CMS config file.
274
- - **Names, not secrets.** Document environment variable names (`SUPABASE_URL`) but never their values.
274
+ - **Names, not secrets.** Document environment variable names (`SUPABASE_URL`) but never values.
275
275
  - **Be specific.** Write actual table names, actual endpoint paths, actual file paths — not placeholders.
276
276
  - **Flag uncertainty.** If you can't determine something from the code, add a `<!-- TODO: verify -->` comment rather than guessing.
277
277
  - **Keep files focused.** Each file covers one domain. Don't put database schema in the deployment config.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Collaborative brainstorm to explore requirements, approaches, and trade-offs BEFORE committing to a plan. Use when the task has ambiguity, multiple valid approaches, or significant design decisions.'
2
+ description: 'Collaborative brainstorm to explore requirements, approaches, trade-offs BEFORE committing to a plan. Use when task has ambiguity, multiple valid approaches, or significant design decisions.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Brainstorm
9
9
 
10
- You are the Team Lead. Before planning or writing any code, run a structured brainstorm to explore the request described below. The goal is to **surface assumptions, alternative approaches, and trade-offs** before locking in a plan.
10
+ You are the Team Lead. Before planning or writing any code, run structured brainstorm to explore the request below. Goal: **surface assumptions, alternative approaches, trade-offs** before locking in a plan.
11
11
 
12
12
  ## Request
13
13
 
@@ -17,17 +17,17 @@ You are the Team Lead. Before planning or writing any code, run a structured bra
17
17
 
18
18
  ## Why Brainstorm?
19
19
 
20
- Planning too early locks in assumptions. A brainstorm phase catches misunderstandings, reveals better approaches, and aligns on scope — paying for 10 minutes of thinking instead of hours of rework.
20
+ Planning too early locks in assumptions. Brainstorm phase catches misunderstandings, reveals better approaches, aligns on scope — 10 minutes of thinking instead of hours of rework.
21
21
 
22
22
  ## Workflow
23
23
 
24
24
  ### 1. Clarify the Problem
25
25
 
26
- Before exploring solutions, make sure the problem is well-understood:
26
+ Before exploring solutions, ensure problem is well-understood:
27
27
 
28
28
  1. **Restate the request** in your own words — verify you understand what's being asked
29
29
  2. **Identify the user's goals** — what outcome do they want? (not just what they asked for)
30
- 3. **Surface assumptions** — what are you assuming about scope, constraints, and priorities?
30
+ 3. **Surface assumptions** — what are you assuming about scope, constraints, priorities?
31
31
  4. **Ask clarifying questions** — if anything is ambiguous, ask now (max 3 questions, batch them)
32
32
 
33
33
  ### 2. Explore the Solution Space
@@ -37,7 +37,7 @@ Research before proposing. Gather data, don't guess:
37
37
  1. **Search existing code** — is there already a partial implementation, similar pattern, or relevant utility?
38
38
  2. **Check documentation** — read `.opencastle/project.instructions.md`, `.opencastle/project/decisions.md`, `.opencastle/KNOWN-ISSUES.md` for constraints
39
39
  3. **Check lessons learned** — read `.opencastle/LESSONS-LEARNED.md` for pitfalls in this area
40
- 4. **Identify affected layers** — which apps, libs, data stores, and third-party services are involved?
40
+ 4. **Identify affected layers** — which apps, libs, data stores, third-party services are involved?
41
41
  5. **Research unknown topics** — if the request involves a real-world person, place, organization, or topic you don't have confident knowledge about, **search the internet** using any available web search or fetch tools (e.g. `fetch_webpage`, web search MCP, or similar) to gather accurate facts. Never fabricate content about real-world subjects.
42
42
 
43
43
  ### 3. Generate Alternatives
@@ -53,16 +53,16 @@ Propose 2-3 approaches, not just the obvious one:
53
53
  For each approach, consider:
54
54
  - **Simplicity** — which is the boring, proven solution? (prefer this per Constitution #2)
55
55
  - **Reversibility** — which is easiest to undo if wrong?
56
- - **Impact on future work** — which makes the next task easier or harder?
56
+ - **Impact on future work** — which makes next task easier or harder?
57
57
  - **Risk** — which has the most unknowns?
58
58
 
59
59
  ### 4. Evaluate Trade-offs
60
60
 
61
- Pick the recommended approach and defend it:
61
+ Pick recommended approach; defend it:
62
62
 
63
- 1. **Why this approach?** — articulate the key reason (1-2 sentences)
64
- 2. **What are we giving up?** — name the trade-off explicitly
65
- 3. **What could go wrong?** — the biggest risk and how to mitigate it
63
+ 1. **Why this approach?** — articulate key reason (1-2 sentences)
64
+ 2. **What are we giving up?** — name trade-off explicitly
65
+ 3. **What could go wrong?** — biggest risk + mitigation
66
66
  4. **What's the exit strategy?** — if this approach fails, what's plan B?
67
67
 
68
68
  ### 5. Define Scope
@@ -75,7 +75,7 @@ Draw a clear boundary:
75
75
 
76
76
  #### Design Direction (for multi-page projects)
77
77
 
78
- If the request involves building 2+ pages or UI sections, define the design direction during brainstorming — not during implementation:
78
+ If request involves building 2+ pages or UI sections, define design direction during brainstorming — not during implementation:
79
79
 
80
80
  - **Aesthetic direction:** 2-3 words (e.g., "warm editorial", "clean minimal", "brutalist edge")
81
81
  - **Typography pairing:** display font + body font (avoid generic defaults like Inter/Roboto)
@@ -83,11 +83,11 @@ If the request involves building 2+ pages or UI sections, define the design dire
83
83
  - **Content tone:** formal/casual, active/passive, target audience voice
84
84
  - **Key terminology:** terms that could be said multiple ways — pick one (e.g., "projects" not "portfolio")
85
85
 
86
- Include this in the Brainstorm Report so the planning phase can inject it into convoy foundation tasks.
86
+ Include this in Brainstorm Report so planning phase can inject into convoy foundation tasks.
87
87
 
88
88
  ### 6. Output
89
89
 
90
- Summarize the brainstorm as a **Brainstorm Report** — this becomes the input for the planning/decomposition phase:
90
+ Summarize the brainstorm as **Brainstorm Report** — becomes input for planning/decomposition phase:
91
91
 
92
92
  ```markdown
93
93
  ## Brainstorm Report: [Title]
@@ -105,7 +105,7 @@ Summarize the brainstorm as a **Brainstorm Report** — this becomes the input f
105
105
  ### Affected Areas
106
106
  - Apps: [list]
107
107
  - Libs: [list]
108
- - Data: [which data layers are affected — see `project.instructions.md` for the tech stack]
108
+ - Data: [which data layers are affected — see `project.instructions.md` for tech stack]
109
109
  - Routes: [list]
110
110
 
111
111
  ### Open Questions
@@ -120,11 +120,11 @@ Summarize the brainstorm as a **Brainstorm Report** — this becomes the input f
120
120
 
121
121
  ## When to Skip Brainstorming
122
122
 
123
- Not every task needs a brainstorm. Skip this prompt and go directly to `implement-feature` or `quick-refinement` when:
123
+ Not every task needs brainstorm. Skip this prompt; go directly to `implement-feature` or `quick-refinement` when:
124
124
 
125
125
  - The task is a well-defined bug with clear reproduction steps
126
126
  - The task is a simple config change or docs update
127
- - The technical approach is obvious and unambiguous
127
+ - Technical approach is obvious and unambiguous
128
128
  - The scope is a single file or component with no design decisions
129
129
  - The task is well-understood and can be expressed as a convoy spec directly → use `generate-convoy` instead
130
130
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Investigate and fix a reported bug with proper triage, root cause analysis, issue tracking, and verification.'
2
+ description: 'Investigate and fix reported bug with proper triage, root cause analysis, issue tracking, verification.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Fix Bug
9
9
 
10
- You are the Team Lead. Investigate and fix the bug described below. Bugs are real defects that affect users — treat them seriously with proper triage, tracking, and verification.
10
+ You are the Team Lead. Investigate and fix the bug described below. Bugs are real defects affecting users — treat seriously with proper triage, tracking, verification.
11
11
 
12
12
  ## Bug Report
13
13
 
@@ -32,7 +32,7 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
32
32
  ### 1. Triage & Reproduce
33
33
 
34
34
  1. **Check known issues** — Search `.opencastle/KNOWN-ISSUES.md` for an existing entry. If found, note workarounds and decide if a fix is now feasible
35
- 2. **Check tracker** — Search for existing bug tickets. If one exists, take it over instead of creating a duplicate
35
+ 2. **Check tracker** — Search for existing bug tickets. If one exists, take it over instead of creating duplicate
36
36
  3. **Read lessons learned** — Check `.opencastle/LESSONS-LEARNED.md` for related pitfalls
37
37
  4. **Reproduce the bug** — Start the dev server (see **codebase-tool** skill), navigate to the affected page in Chrome, follow the repro steps, and screenshot the broken state
38
38
  5. **Determine scope** — Which apps are affected? (see `project.instructions.md` for the app inventory)
@@ -40,9 +40,9 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
40
40
 
41
41
  ### 2. Create Tracker Issue
42
42
 
43
- Every bug gets tracked. Create a tracker issue with:
43
+ Every bug gets tracked. Create tracker issue with:
44
44
 
45
- - **Title**: `[Bug] Short description of the symptom`
45
+ - **Title**: `[Bug] Short description of symptom`
46
46
  - **Label**: `bug`; **Priority**: based on severity
47
47
  - **Description**: Symptom, reproduction steps, expected vs actual behavior, affected apps + files, screenshot
48
48
 
@@ -56,7 +56,7 @@ Every bug gets tracked. Create a tracker issue with:
56
56
 
57
57
  ### 4. Implement the Fix
58
58
 
59
- All bug fixes are executed via the convoy engine — even single-task fixes — to ensure observability and crash recovery.
59
+ All bug fixes execute via convoy engine — even single-task fixes — for observability, crash recovery.
60
60
 
61
61
  1. **Generate a convoy spec** — use the `generate-convoy` prompt with the root cause analysis, fix approach, and file paths as context.
62
62
  2. **Hand the spec to the user** — tell them to run: `npx opencastle run -f .opencastle/convoys/<name>.convoy.yml`
@@ -64,7 +64,7 @@ All bug fixes are executed via the convoy engine — even single-task fixes —
64
64
 
65
65
  #### Convoy Task Prompt Must Include
66
66
 
67
- - Tracker issue ID and title, root cause, fix approach, file paths, reproduction steps
67
+ - Tracker issue ID, title, root cause, fix approach, file paths, reproduction steps
68
68
  - Boundaries: "Only modify files listed above. Fix the bug, do not refactor surrounding code."
69
69
  - Self-improvement reminder (see **self-improvement** skill)
70
70
 
@@ -76,7 +76,7 @@ All bug fixes are executed via the convoy engine — even single-task fixes —
76
76
 
77
77
  ### 5. Validate
78
78
 
79
- > Load the **validation-gates** skill for detailed steps on each gate.
79
+ > Load **validation-gates** skill for detailed steps on each gate.
80
80
 
81
81
  1. **Secret Scanning** — block if API keys/tokens/passwords found in diff
82
82
  2. **Deterministic Checks** — lint, test, build — zero errors (see **codebase-tool** skill)
@@ -90,7 +90,7 @@ All bug fixes are executed via the convoy engine — even single-task fixes —
90
90
 
91
91
  ### 6. Delivery
92
92
 
93
- Follow the **Delivery Outcome** defined in the **git-workflow** skill — commit, push, open PR (not merged), and link to the tracker.
93
+ Follow **Delivery Outcome** in **git-workflow** skill — commit, push, open PR (not merged), link to tracker.
94
94
 
95
95
  ### 7. Wrap Up
96
96
 
@@ -100,7 +100,7 @@ Follow the **Delivery Outcome** defined in the **git-workflow** skill — commit
100
100
 
101
101
  ### 8. Completion Criteria
102
102
 
103
- The bug fix is complete when:
103
+ Bug fix is complete when:
104
104
 
105
105
  - [ ] Bug is reproduced and root cause identified
106
106
  - [ ] Tracker issue created with full details
@@ -108,7 +108,7 @@ The bug fix is complete when:
108
108
  - [ ] Test added covering the bug scenario
109
109
  - [ ] Bug verified fixed in the browser
110
110
  - [ ] Both apps checked if shared code was modified
111
- - [ ] Delivery Outcome completed (see the **git-workflow** skill) — branch pushed, PR opened (not merged), tracker linked
111
+ - [ ] Delivery Outcome completed (see **git-workflow** skill) — branch pushed, PR opened (not merged), tracker linked
112
112
  - [ ] Tracker issue moved to Done
113
113
  - [ ] Known issues updated if applicable
114
114
  - [ ] Lessons learned captured if any retries occurred
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Scaffold a new skill file with proper frontmatter, structure, and registration. Use when adding a new domain skill to the AI configuration.'
2
+ description: 'Scaffold new skill file with proper frontmatter, structure, registration. Use when adding new domain skill to AI configuration.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Create Skill
9
9
 
10
- Scaffold a new skill for the AI agent configuration. Skills encode domain-specific knowledge that agents load on demand.
10
+ Scaffold new skill for AI agent configuration. Skills encode domain-specific knowledge agents load on demand.
11
11
 
12
12
  ## Skill Request
13
13
 
@@ -17,14 +17,14 @@ Scaffold a new skill for the AI agent configuration. Skills encode domain-specif
17
17
 
18
18
  ## Skill Types
19
19
 
20
- OpenCastle has two kinds of skills with different locations and registration paths:
20
+ OpenCastle has two skill kinds with different locations, registration paths:
21
21
 
22
22
  | Type | Location | Bound Via | Purpose |
23
23
  |------|----------|-----------|---------|
24
24
  | **Process skill** | `skills/<name>/SKILL.md` | `directSkills` in skill-matrix.json | Stack-agnostic methodology (testing workflow, self-improvement, validation gates) |
25
25
  | **Plugin skill** | `plugins/<plugin>/SKILL.md` | Capability slot in the skill matrix | Technology-specific knowledge (CMS queries, database patterns, deployment config) |
26
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**.
27
+ > **Rule of thumb:** If skill would need rewriting when switching technologies (e.g., Supabase → Convex), it belongs in a **plugin**. If useful regardless of stack, it's a **process skill**.
28
28
 
29
29
  ---
30
30
 
@@ -45,7 +45,7 @@ Determine the type:
45
45
  - Use `kebab-case`
46
46
  - **Process skills:** descriptive domain name (e.g., `testing-workflow`, `context-map`, `security-hardening`)
47
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
48
+ - Check existing skills in `skills/`, `plugins/` to avoid overlap
49
49
 
50
50
  ### Step 3: Create the Skill File
51
51
 
@@ -96,7 +96,7 @@ description: "<Verb1> X, <verb2> Y, and <verb3> Z. Use when <scenario1>, <scenar
96
96
  | **<related-skill>** skill | <What it contributes> |
97
97
  ```
98
98
 
99
- If the skill has large code examples (>30 lines), schema tables, or verbose reference material, create a companion `REFERENCE.md` in the same directory and link to it from SKILL.md. Keep SKILL.md as the lean operational overview. Companion files must start with a backlink: `> Parent: [SKILL.md](./SKILL.md)`.
99
+ If skill has large code examples (>30 lines), schema tables, or verbose reference material, create companion `REFERENCE.md` in same directory; link to it from SKILL.md. Keep SKILL.md as lean operational overview. Companion files must start with backlink: `> Parent: [SKILL.md](./SKILL.md)`.
100
100
 
101
101
  ### Step 4: Register the Skill
102
102
 
@@ -104,30 +104,30 @@ Registration differs by type:
104
104
 
105
105
  #### Process Skill
106
106
 
107
- 1. **Add to the skill matrix** — Add the skill name to the `directSkills` array of each relevant agent in `.opencastle/agents/skill-matrix.json`
108
- 2. **Optional: reference in instructions** — If the skill should be loaded by default, add it to the appropriate `.github/instructions/` file
107
+ 1. **Add to skill matrix** — Add skill name to `directSkills` array of each relevant agent in `.opencastle/agents/skill-matrix.json`
108
+ 2. **Optional: reference in instructions** — If skill should load by default, add to appropriate `.github/instructions/` file
109
109
 
110
110
  #### Plugin Skill
111
111
 
112
- 1. **Set `skillName` in the plugin's `config.ts`** — This connects the skill to the plugin
113
- 2. **Update the skill matrix** — Add an entry to the matching capability slot's `entries` array in `.opencastle/agents/skill-matrix.json`
114
- 3. **No agent changes needed** — Agents resolve plugin skills through capability slots automatically
112
+ 1. **Set `skillName` in plugin's `config.ts`** — Connects skill to plugin
113
+ 2. **Update skill matrix** — Add entry to matching capability slot's `entries` array in `.opencastle/agents/skill-matrix.json`
114
+ 3. **No agent changes** — Agents resolve plugin skills through capability slots automatically
115
115
 
116
116
  ### Step 5: Validate
117
117
 
118
- - [ ] File created at the correct path (`skills/` or `plugins/`)
118
+ - [ ] File created at correct path (`skills/` or `plugins/`)
119
119
  - [ ] Frontmatter has `name` and `description` fields
120
- - [ ] Description is a single line (no line breaks)
121
- - [ ] Content follows the template structure
120
+ - [ ] Description is single line (no line breaks)
121
+ - [ ] Content follows template structure
122
122
  - [ ] No overlap with existing skills
123
123
  - [ ] Skill matrix updated (`directSkills` array or capability slot binding)
124
124
  - [ ] For process skills: at least one agent's `directSkills` array includes it in skill-matrix.json
125
- - [ ] For plugin skills: `config.ts` `skillName` matches the `name` in frontmatter
125
+ - [ ] For plugin skills: `config.ts` `skillName` matches `name` in frontmatter
126
126
  - [ ] Run `npx tessl skill review <path>` — target 100 score (see Scoring Criteria below)
127
127
 
128
128
  ## Scoring Criteria
129
129
 
130
- Skills are evaluated by `npx tessl skill review` across 8 criteria (3 pts each = 24 total). Target 100.
130
+ Skills evaluated by `npx tessl skill review` across 8 criteria (3 pts each = 24 total). Target 100.
131
131
 
132
132
  ### Description (frontmatter `description` field)
133
133
 
@@ -155,10 +155,10 @@ Skills are evaluated by `npx tessl skill review` across 8 criteria (3 pts each =
155
155
  - **Include executable examples** — At least one copy-paste-ready code block (5-15 lines). CLI commands with real flags, not placeholders
156
156
  - **Keep it scannable** — Tables over prose. Headings, bullets, code blocks. Agents parse structure, not paragraphs
157
157
  - **Number your workflows** — Every multi-step process needs numbered steps, checkpoints ("Gate: X passes"), and recovery ("Fail → fix → re-run step N")
158
- - **Don't explain what Claude knows** — Skip "what is X" explanations, obvious anti-pattern justifications, and concept definitions. Jump straight to the rules
159
- - **Avoid duplication** — If a rule exists in another skill or instruction file, reference it: "Load **security-hardening** skill for CSP configuration"
160
- - **Use REFERENCE.md for bulk** — Large code examples, schema tables, worked examples, and template libraries go in a companion `REFERENCE.md`. Link once from SKILL.md
158
+ - **Don't explain what Claude knows** — Skip "what is X" explanations, obvious anti-pattern justifications, concept definitions. Jump straight to the rules
159
+ - **Avoid duplication** — If rule exists in another skill or instruction file, reference it: "Load **security-hardening** skill for CSP configuration"
160
+ - **Use REFERENCE.md for bulk** — Large code examples, schema tables, worked examples, template libraries go in companion `REFERENCE.md`. Link once from SKILL.md
161
161
  - **Stay stack-agnostic in process skills** — Use capability slot references ("the **database** skill" not "Supabase")
162
- - **Size target** — 80-200 lines in SKILL.md. Under 80 is too thin; over 200 should split content to REFERENCE.md. Over 300 should be split into multiple skills
163
- - **No standalone trigger-term sections** — Weave trigger terms naturally into the description's `Use when...` clause
162
+ - **Size target** — 80-200 lines in SKILL.md. Under 80 too thin; over 200 split content to REFERENCE.md. Over 300 split into multiple skills
163
+ - **No standalone trigger-term sections** — Weave trigger terms naturally into description's `Use when...` clause
164
164
  - **Third-person voice in descriptions** — "Creates X" not "Create X" or "This skill creates X"