opencastle 0.32.11 → 0.32.13

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 (133) hide show
  1. package/README.md +5 -3
  2. package/dist/cli/convoy/engine.d.ts.map +1 -1
  3. package/dist/cli/convoy/engine.js +1 -0
  4. package/dist/cli/convoy/engine.js.map +1 -1
  5. package/dist/cli/convoy/pipeline.d.ts.map +1 -1
  6. package/dist/cli/convoy/pipeline.js +5 -2
  7. package/dist/cli/convoy/pipeline.js.map +1 -1
  8. package/dist/cli/convoy/pipeline.test.js +44 -0
  9. package/dist/cli/convoy/pipeline.test.js.map +1 -1
  10. package/dist/cli/run.js +4 -4
  11. package/dist/cli/run.js.map +1 -1
  12. package/dist/dashboard/scripts/etl.d.ts +1 -0
  13. package/dist/dashboard/scripts/etl.d.ts.map +1 -1
  14. package/dist/dashboard/scripts/etl.js +7 -2
  15. package/dist/dashboard/scripts/etl.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/cli/convoy/engine.ts +1 -0
  18. package/src/cli/convoy/pipeline.test.ts +49 -0
  19. package/src/cli/convoy/pipeline.ts +7 -2
  20. package/src/cli/run.ts +4 -4
  21. package/src/dashboard/dist/_astro/{index.6xXNs4L2.css → index.CADNhRPS.css} +1 -1
  22. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  23. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  24. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +18 -18
  25. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +3 -3
  26. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  27. package/src/dashboard/dist/data/convoys/demo-docs-update.json +3 -3
  28. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +10 -10
  29. package/src/dashboard/dist/index.html +29 -6
  30. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  31. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  32. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  33. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +18 -18
  34. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +3 -3
  35. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  36. package/src/dashboard/public/data/convoys/demo-docs-update.json +3 -3
  37. package/src/dashboard/public/data/convoys/demo-perf-opt.json +10 -10
  38. package/src/dashboard/scripts/etl.ts +9 -5
  39. package/src/dashboard/src/pages/index.astro +36 -4
  40. package/src/dashboard/src/styles/dashboard.css +4 -0
  41. package/src/orchestrator/customizations/stack/sanity-config.md +43 -0
  42. package/src/orchestrator/customizations/stack/supabase-config.md +53 -0
  43. package/src/orchestrator/plugins/astro/REFERENCE.md +5 -0
  44. package/src/orchestrator/plugins/astro/SKILL.md +22 -29
  45. package/src/orchestrator/plugins/chrome-devtools/REFERENCE.md +9 -0
  46. package/src/orchestrator/plugins/chrome-devtools/SKILL.md +10 -55
  47. package/src/orchestrator/plugins/contentful/REFERENCE.md +16 -0
  48. package/src/orchestrator/plugins/contentful/SKILL.md +69 -29
  49. package/src/orchestrator/plugins/convex/REFERENCE.md +9 -0
  50. package/src/orchestrator/plugins/convex/SKILL.md +13 -1
  51. package/src/orchestrator/plugins/cypress/REFERENCE.md +5 -0
  52. package/src/orchestrator/plugins/cypress/SKILL.md +29 -93
  53. package/src/orchestrator/plugins/figma/REFERENCE.md +18 -0
  54. package/src/orchestrator/plugins/figma/SKILL.md +41 -66
  55. package/src/orchestrator/plugins/jira/REFERENCE.md +9 -0
  56. package/src/orchestrator/plugins/jira/SKILL.md +26 -114
  57. package/src/orchestrator/plugins/linear/SKILL.md +42 -109
  58. package/src/orchestrator/plugins/netlify/REFERENCE.md +33 -0
  59. package/src/orchestrator/plugins/netlify/SKILL.md +34 -64
  60. package/src/orchestrator/plugins/nextjs/REFERENCE.md +73 -0
  61. package/src/orchestrator/plugins/nextjs/SKILL.md +49 -138
  62. package/src/orchestrator/plugins/notion/SKILL.md +26 -168
  63. package/src/orchestrator/plugins/notion/TEMPLATES.md +88 -0
  64. package/src/orchestrator/plugins/nx/REFERENCE.md +10 -0
  65. package/src/orchestrator/plugins/nx/SKILL.md +12 -12
  66. package/src/orchestrator/plugins/playwright/REFERENCE.md +12 -0
  67. package/src/orchestrator/plugins/playwright/SKILL.md +33 -98
  68. package/src/orchestrator/plugins/prisma/REFERENCE.md +42 -0
  69. package/src/orchestrator/plugins/prisma/SKILL.md +18 -68
  70. package/src/orchestrator/plugins/resend/REFERENCE.md +61 -0
  71. package/src/orchestrator/plugins/resend/SKILL.md +23 -137
  72. package/src/orchestrator/plugins/sanity/SKILL.md +50 -3
  73. package/src/orchestrator/plugins/slack/REFERENCE.md +24 -0
  74. package/src/orchestrator/plugins/slack/SKILL.md +36 -111
  75. package/src/orchestrator/plugins/strapi/REFERENCE.md +35 -0
  76. package/src/orchestrator/plugins/strapi/SKILL.md +60 -24
  77. package/src/orchestrator/plugins/supabase/REFERENCE.md +9 -0
  78. package/src/orchestrator/plugins/supabase/SKILL.md +44 -16
  79. package/src/orchestrator/plugins/teams/REFERENCE.md +36 -0
  80. package/src/orchestrator/plugins/teams/SKILL.md +35 -85
  81. package/src/orchestrator/plugins/trello/REFERENCE.md +9 -0
  82. package/src/orchestrator/plugins/trello/SKILL.md +25 -97
  83. package/src/orchestrator/plugins/turborepo/REFERENCE.md +9 -0
  84. package/src/orchestrator/plugins/turborepo/SKILL.md +13 -1
  85. package/src/orchestrator/plugins/vercel/SKILL.md +45 -52
  86. package/src/orchestrator/plugins/vitest/SKILL.md +10 -14
  87. package/src/orchestrator/prompts/create-skill.prompt.md +62 -20
  88. package/src/orchestrator/skills/accessibility-standards/REFERENCE.md +34 -0
  89. package/src/orchestrator/skills/accessibility-standards/SKILL.md +6 -3
  90. package/src/orchestrator/skills/agent-hooks/HOOKS-REFERENCE.md +48 -0
  91. package/src/orchestrator/skills/agent-hooks/SKILL.md +41 -65
  92. package/src/orchestrator/skills/agent-memory/KNOWLEDGE-GRAPH.md +49 -0
  93. package/src/orchestrator/skills/agent-memory/SKILL.md +30 -67
  94. package/src/orchestrator/skills/api-patterns/SKILL.md +29 -1
  95. package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
  96. package/src/orchestrator/skills/context-map/REFERENCE.md +70 -0
  97. package/src/orchestrator/skills/context-map/SKILL.md +28 -55
  98. package/src/orchestrator/skills/data-engineering/REFERENCE.md +55 -0
  99. package/src/orchestrator/skills/data-engineering/SKILL.md +40 -34
  100. package/src/orchestrator/skills/decomposition/REFERENCE.md +28 -0
  101. package/src/orchestrator/skills/decomposition/SKILL.md +15 -30
  102. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +31 -65
  103. package/src/orchestrator/skills/documentation-standards/SKILL.md +31 -50
  104. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +39 -0
  105. package/src/orchestrator/skills/fast-review/REFERENCE.md +30 -0
  106. package/src/orchestrator/skills/fast-review/SKILL.md +11 -31
  107. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +113 -0
  108. package/src/orchestrator/skills/frontend-design/REFERENCE.md +36 -0
  109. package/src/orchestrator/skills/frontend-design/SKILL.md +36 -85
  110. package/src/orchestrator/skills/git-workflow/SKILL.md +1 -1
  111. package/src/orchestrator/skills/memory-merger/REFERENCE.md +20 -0
  112. package/src/orchestrator/skills/memory-merger/SKILL.md +29 -38
  113. package/src/orchestrator/skills/observability-logging/SKILL.md +5 -12
  114. package/src/orchestrator/skills/orchestration-protocols/REFERENCE.md +42 -0
  115. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +54 -41
  116. package/src/orchestrator/skills/panel-majority-vote/REFERENCE.md +55 -0
  117. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +30 -75
  118. package/src/orchestrator/skills/performance-optimization/SKILL.md +41 -1
  119. package/src/orchestrator/skills/project-consistency/SKILL.md +50 -89
  120. package/src/orchestrator/skills/project-consistency/TEMPLATES.md +39 -0
  121. package/src/orchestrator/skills/react-development/REFERENCE.md +7 -0
  122. package/src/orchestrator/skills/react-development/SKILL.md +50 -42
  123. package/src/orchestrator/skills/security-hardening/SKILL.md +88 -1
  124. package/src/orchestrator/skills/self-improvement/LESSON-CATEGORIES.md +36 -0
  125. package/src/orchestrator/skills/self-improvement/SKILL.md +19 -25
  126. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +54 -0
  127. package/src/orchestrator/skills/seo-patterns/SKILL.md +20 -88
  128. package/src/orchestrator/skills/session-checkpoints/CHECKPOINT-TEMPLATE.md +58 -0
  129. package/src/orchestrator/skills/session-checkpoints/SKILL.md +34 -58
  130. package/src/orchestrator/skills/team-lead-reference/SKILL.md +37 -30
  131. package/src/orchestrator/skills/testing-workflow/SKILL.md +55 -2
  132. package/src/orchestrator/skills/validation-gates/REFERENCE.md +50 -0
  133. package/src/orchestrator/skills/validation-gates/SKILL.md +39 -35
@@ -1,13 +1,11 @@
1
1
  ---
2
2
  name: trello-task-management
3
- description: "Trello board conventions for tracking feature work board/list/card workflow, checklist-driven task breakdown, due dates, and when to use comments vs checklist items. Use when decomposing features into cards or resuming interrupted sessions."
3
+ description: "Create and manage Trello cards, checklists, and boards for kanban workflows. Use when the user says: 'create a kanban board', 'add a task card', 'move card to sprint', or 'track project board'."
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
7
-
8
6
  # Task Management with Trello
9
7
 
10
- Conventions for tracking feature work on Trello boards via MCP tools. For project-specific board IDs and list IDs, see [tracker-config.md](../../.opencastle/project/tracker-config.md).
8
+ For project-specific board IDs and list IDs, see [tracker-config.md](../../.opencastle/project/tracker-config.md).
11
9
 
12
10
  ## MCP Server
13
11
 
@@ -17,43 +15,34 @@ Conventions for tracking feature work on Trello boards via MCP tools. For projec
17
15
  | **Type** | stdio (spawned via `npx -y @delorenj/mcp-server-trello`) |
18
16
  | **Auth** | API key + token via `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars |
19
17
 
20
- ### Authentication
18
+ ## Available MCP Tools (quick)
21
19
 
22
- 1. Get your API key at [trello.com/app-key](https://trello.com/app-key) → **API Key**
23
- 2. On the same page, click **"Generate a Token"** to get your token
24
- 3. Add both to your `.env` file:
20
+ - `get_boards`, `get_lists`, `get_cards_by_list_id`, `get_card_details` read-only board/list/card tools
21
+ - `create_card`, `update_card`, `add_checklist_to_card`, `add_comment_to_card` create/update tools (ensure proper auth)
25
22
 
26
- ```
27
- TRELLO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
28
- TRELLO_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
29
- ```
23
+ ### Example Invocations
30
24
 
31
- ## Available MCP Tools
25
+ ```json
26
+ // trello/create_card
27
+ { "listId": "abc123", "name": "[Feature] Add search", "desc": "Acceptance: returns results within 200ms", "labels": ["feature"] }
28
+ // → { "id": "card456", "url": "https://trello.com/c/card456", "name": "[Feature] Add search" }
32
29
 
33
- | Tool | Description |
34
- |------|-------------|
35
- | `get_boards` | List all boards accessible to the authenticated user |
36
- | `get_lists` | Get all lists on a board (by board ID) |
37
- | `get_cards_by_list_id` | Get all cards in a specific list |
38
- | `get_card_details` | Get full details of a single card |
39
- | `create_card` | Create a new card in a list |
40
- | `update_card` | Update card fields (name, description, due date, list) |
41
- | `add_checklist_to_card` | Add a checklist with items to a card |
42
- | `add_comment_to_card` | Post a comment on a card |
30
+ // trello/update_card — move card to In Progress
31
+ { "cardId": "card456", "listId": "inprogress789" }
32
+ // { "id": "card456", "idList": "inprogress789" }
43
33
 
44
- ## Discovered Issues (Bug Tickets)
34
+ // trello/add_comment_to_card
35
+ { "cardId": "card456", "text": "Blocked: waiting for API schema approval" }
36
+ // → { "id": "comment999", "data": { "text": "Blocked: ..." } }
37
+ ```
45
38
 
46
- When an agent encounters a pre-existing bug or issue unrelated to the current task, it must be tracked:
39
+ ## Discovered Issues (Bug Tickets)
47
40
 
48
- 1. **Check** existing cards on the board to see if it is already tracked
49
- 2. **If tracked** skip it, continue with current work
50
- 3. **If NOT tracked:**
51
- - **Unfixable limitation** add to known issues with severity, evidence, and root cause
52
- - **Fixable bug** create a Trello card:
53
- - **Name:** `[Bug] Short description of the symptom`
54
- - **List:** `Backlog` (or the equivalent list in your project)
55
- - **Description:** Include symptoms, reproduction steps, affected files, and any error messages
56
- - **Due date:** Set only if it is blocking current work
41
+ - Check existing cards for the issue.
42
+ - If tracked, skip and continue.
43
+ - If not tracked:
44
+ - For unfixable limitations: add to known issues with severity, evidence, and root cause.
45
+ - For fixable bugs: create a Trello card with Name (`[Bug] Short description`), List (`Backlog`), Description (symptoms, repro steps, affected files), and optional Due date if blocking.
57
46
 
58
47
  ## Card Naming
59
48
 
@@ -68,22 +57,9 @@ Use `[Area] Short description` format:
68
57
  [Docs] Update data model documentation
69
58
  ```
70
59
 
71
- **Area prefixes:** `[Schema]`, `[DB]`, `[Query]`, `[UI]`, `[Page]`, `[API]`, `[Auth]`, `[Test]`, `[Docs]`, `[Deploy]`, `[Data]`, `[Perf]`, `[Security]`, `[Bug]`
72
60
 
73
61
  ## Board and List Workflow
74
62
 
75
- ### Typical List Structure
76
-
77
- ```
78
- Backlog → To Do → In Progress → In Review → Done
79
- ```
80
-
81
- - **Backlog** — Captured but not yet planned
82
- - **To Do** — Planned and ready to start
83
- - **In Progress** — Actively being worked on
84
- - **In Review** — PR open, awaiting review or merge
85
- - **Done** — Completed and verified
86
-
87
63
  ### Agent-Driven Card Transitions (via MCP)
88
64
 
89
65
  | From | To | When |
@@ -92,53 +68,7 @@ Backlog → To Do → In Progress → In Review → Done
92
68
  | In Progress | Done | Non-PR task is verified (docs, config) |
93
69
  | Any | Backlog | Task is deferred |
94
70
 
95
- ## Checklist-Driven Task Breakdown
96
-
97
- Use checklists for **subtask decomposition within a single card**. This keeps related work together without cluttering the board with micro-cards.
98
-
99
- ### When to Use a Checklist vs a Separate Card
100
-
101
- | Use a **checklist item** when… | Use a **separate card** when… |
102
- |-------------------------------|------------------------------|
103
- | Steps are sequential and tightly coupled | Work can be assigned independently |
104
- | Total effort fits in one session | Each step spans multiple sessions |
105
- | Steps share the same assignee | Steps need different labels/due dates |
106
- | Internal implementation details | Distinct deliverables that need review |
107
-
108
- ### Checklist Pattern for Feature Decomposition
109
-
110
- ```
111
- Card: [Feature] Add price range filter
112
- Checklist: Implementation Steps
113
- ☐ Add priceRange field to schema
114
- ☐ Create DB migration
115
- ☐ Update GROQ/API query
116
- ☐ Build UI component
117
- ☐ Wire into page
118
- ☐ Write unit tests
119
- ☐ Update documentation
120
- ```
121
-
122
- ## Due and Start Dates
123
-
124
- Trello cards support both a **start date** and a **due date**.
125
-
126
- - **Due date** — The deadline for the card to move to Done. Set for tasks on the critical path.
127
- - **Start date** — When work is expected to begin. Useful for pipeline planning.
128
- - **Due time** — Be explicit with time only for time-sensitive deliverables (e.g., scheduled releases).
129
- - **Format:** Trello API uses ISO 8601: `2026-03-20T14:00:00.000Z`
130
-
131
- ## Comments vs Checklist Items
132
-
133
- | Use **comments** for… | Use **checklist items** for… |
134
- |-----------------------|------------------------------|
135
- | Progress updates visible to the team | Actionable steps with completion state |
136
- | Blocking issues or decisions | Pre-defined subtask decomposition |
137
- | Links to PRs, builds, external docs | Typed acceptance criteria |
138
- | Questions or async approvals | Implementation sub-steps |
139
- | Post-implementation notes | QA verification steps |
140
-
141
- **Rule of thumb:** If it needs to be *checked off*, it's a checklist item. If it needs to be *read*, it's a comment.
71
+ After each create/update, verify the returned card ID and URL before proceeding.
142
72
 
143
73
  ## Session Continuity
144
74
 
@@ -146,6 +76,4 @@ At the start of each work session:
146
76
 
147
77
  1. `get_boards` — confirm the right board is active
148
78
  2. `get_lists` — identify current list structure
149
- 3. `get_cards_by_list_id` for **In Progress** — find cards already in flight
150
- 4. Resume work on the relevant card, updating the checklist as steps complete
151
- 5. Move the card to the next list when the current phase is done
79
+ 3. `get_cards_by_list_id` for **In Progress** — resume work on relevant cards, updating checklists and moving to next list when done
@@ -0,0 +1,9 @@
1
+ > Parent: [SKILL.md](./SKILL.md)
2
+
3
+ Last Updated: 2026-03-31
4
+
5
+ Reference: Turborepo advanced topics
6
+
7
+ - CI snippets for `turbo run --remote` and remote cache configuration
8
+ - `inputs`/`outputs` tuning examples for common monorepo layouts
9
+ - Self-hosted remote cache options and troubleshooting cache misses
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: turborepo-monorepo
3
- description: "Turborepo monorepo commands, pipeline configuration, caching strategies, and task orchestration. Use when running builds, tests, linting, or any development commands in a Turborepo monorepo."
3
+ description: "Configure pipelines, set up local/remote caching, and run scoped tasks in a Turborepo monorepo. Use when you say: 'enable remote caching', 'optimize pipeline inputs/outputs', or 'filter builds to affected packages'."
4
4
  ---
5
5
 
6
6
  <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
@@ -95,6 +95,16 @@ turbo run build --remote-only # Force remote cache usage
95
95
  - Vercel Remote Cache or self-hosted (Ducktape, TurboCache)
96
96
  - Set `TURBO_TOKEN` and `TURBO_TEAM` in CI environment
97
97
 
98
+ ## Quick Workflow: Setup remote caching in CI
99
+ 1. Add `TURBO_TOKEN` and `TURBO_TEAM` to your CI secrets.
100
+ 2. Locally run `turbo login` and `turbo link` to verify the project is linked.
101
+ 3. Add `turbo run build --remote` to the CI pipeline and watch for cache hit/miss logs.
102
+ 4. If cache misses persist: verify `inputs`/`outputs` in `turbo.json`, stable env vars, then re-run.
103
+
104
+ **Validation (recommended):** run `turbo run build --dry-run` locally or in CI to preview the task graph and catch misconfigured inputs/outputs before executing.
105
+
106
+ See REFERENCE.md for CI snippets and advanced cache tuning.
107
+
98
108
  ## Package Workspace Structure
99
109
 
100
110
  ```
@@ -119,3 +129,5 @@ monorepo/
119
129
  - Use `--dry-run` to debug pipeline configuration
120
130
  - Add `TURBO_TOKEN` and `TURBO_TEAM` to CI for remote caching
121
131
  - Never commit `.turbo/` or `node_modules/.cache/turbo`
132
+
133
+ Further reading: see REFERENCE.md in this directory for CI snippets and advanced cache tuning.
@@ -3,43 +3,35 @@ name: vercel-deployment
3
3
  description: "Vercel deployment workflows, environment management, domain configuration, and build troubleshooting. Use when deploying, checking deployment status, reviewing build logs, or managing environments."
4
4
  ---
5
5
 
6
- <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
7
-
8
6
  # Vercel Deployment
9
7
 
10
8
  Vercel-specific deployment patterns and MCP tool usage. For project-specific deployment architecture, environment variables, and key files, see [deployment-config.md](../../.opencastle/stack/deployment-config.md).
11
9
 
12
10
  ## Deployment Model
13
11
 
14
- Vercel uses Git-based deployments with automatic preview and production environments:
15
-
16
- ```
17
- main branch → Production deployment (auto)
18
- feature/* → Preview deployment (auto)
19
- fix/* → Preview deployment (auto)
20
- ```
12
+ Branch Environment mapping:
21
13
 
22
- - Every push creates a deployment — no manual triggers needed
23
- - Preview deployments get unique URLs for testing
24
- - Production deploys only from the main branch
25
- - Rollback by redeploying a previous commit
14
+ | Branch pattern | Environment |
15
+ |----------------|-------------|
16
+ | `main` | Production deployment (auto) |
17
+ | `feature/*`, `fix/*` | Preview deployment (auto) |
26
18
 
27
19
  ## MCP Tools
28
20
 
29
21
  The Vercel MCP server provides these tools through `https://mcp.vercel.com`:
30
22
 
31
- | Tool | Purpose | Primary Agents |
32
- |------|---------|----------------|
33
- | `deploy_to_vercel` | Trigger a deployment | DevOps Expert |
34
- | `get_deployment` | Check deployment status and metadata | DevOps, Release Manager |
35
- | `get_deployment_build_logs` | Read build output for debugging | DevOps, Release Manager |
36
- | `get_runtime_logs` | Read runtime logs for debugging | DevOps, Release Manager |
37
- | `list_deployments` | List recent deployments | DevOps, Release Manager |
38
- | `get_project` | Get project configuration | DevOps Expert |
39
- | `list_projects` | List all projects in the team | DevOps Expert |
40
- | `list_teams` | List available teams | DevOps Expert |
41
- | `search_vercel_documentation` | Search Vercel docs | DevOps Expert |
42
- | `check_domain_availability_and_price` | Domain availability check | DevOps Expert |
23
+ | Tool | Purpose |
24
+ |------|---------|
25
+ | `deploy_to_vercel` | Trigger a deployment |
26
+ | `get_deployment` | Check deployment status and metadata |
27
+ | `get_deployment_build_logs` | Read build output for debugging |
28
+ | `get_runtime_logs` | Read runtime logs for debugging |
29
+ | `list_deployments` | List recent deployments |
30
+ | `get_project` | Get project configuration |
31
+ | `list_projects` | List all projects in the team |
32
+ | `list_teams` | List available teams |
33
+ | `search_vercel_documentation` | Search Vercel docs |
34
+ | `check_domain_availability_and_price` | Domain availability check |
43
35
 
44
36
  ## Environment Variables
45
37
 
@@ -55,10 +47,7 @@ Vercel supports three environment scopes — set variables for each appropriatel
55
47
 
56
48
  ### Best Practices
57
49
 
58
- - Set secrets via the Vercel dashboard or CLI never commit them
59
- - Use `NEXT_PUBLIC_*` prefix only for variables safe to expose to the browser
60
- - Verify required env vars exist in all three scopes (production, preview, development)
61
- - Use `.env.local` for local development; never commit this file
50
+ Verify required env vars exist in production and preview scopes; see REFERENCE.md for details.
62
51
 
63
52
  ## Build Troubleshooting
64
53
 
@@ -66,34 +55,38 @@ When builds fail, follow this workflow:
66
55
 
67
56
  1. **Read build logs** — use `get_deployment_build_logs` to get the full output
68
57
  2. **Check common causes:**
69
- - Missing environment variables (works locally but not on Vercel)
58
+ - Missing environment variables
70
59
  - Node.js version mismatch (check `engines` in `package.json`)
71
60
  - Build command mismatch (verify in project settings)
72
61
  - Dependency resolution issues (lockfile out of sync)
73
- 3. **Check runtime logs** — use `get_runtime_logs` for post-deploy errors
74
- 4. **Verify deployment status** — use `get_deployment` to check state and error details
62
+ 3. **Check runtime logs** — use `get_runtime_logs` for post-deploy errors
63
+ 4. **Verify deployment status** — use `get_deployment` to check state and error details
64
+
65
+ ### Example troubleshooting commands (MCP payloads)
66
+
67
+ 1) Get build logs:
68
+
69
+ ```json
70
+ // tool: vercel/get_deployment_build_logs
71
+ { "deployment_id": "dpl_abc123" }
72
+ ```
73
+
74
+ 2) Get runtime logs:
75
+
76
+ ```json
77
+ // tool: vercel/get_runtime_logs
78
+ { "deployment_id": "dpl_abc123", "limit": 200 }
79
+ ```
80
+
81
+ 3) Re-deploy a specific commit after fixing an issue:
75
82
 
76
- ## Domain Configuration
83
+ ```json
84
+ // tool: vercel/deploy_to_vercel
85
+ { "project_id": "proj_xxx", "gitCommitSha": "abcd1234" }
86
+ ```
77
87
 
78
- - Use `check_domain_availability_and_price` before purchasing
79
- - Configure domains in the Vercel dashboard
80
- - Always set up both `www` and apex domain with proper redirects
81
- - Enable HTTPS (automatic with Vercel)
82
- - Set appropriate DNS records (CNAME for subdomains, A record for apex)
88
+ After re-deploying, re-check `get_deployment_build_logs` and `get_runtime_logs` to confirm the fix. Repeat until build succeeds.
83
89
 
84
90
  ## Cron Jobs (vercel.json)
85
91
 
86
- ```json
87
- {
88
- "crons": [
89
- {
90
- "path": "/api/cron/task-name",
91
- "schedule": "0 */6 * * *"
92
- }
93
- ]
94
- }
95
- ```
96
-
97
- - Protect cron endpoints with `CRON_SECRET` — Vercel sends it in the `Authorization` header
98
- - Maximum execution time depends on plan (10s hobby, 60s pro, 900s enterprise)
99
- - Use `vercel.json` to declare cron schedules — not external schedulers
92
+ Configure cron jobs in `vercel.json` under `crons[]` with path and schedule.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: vitest-testing
3
- description: "Vitest unit and integration testing patterns, configuration, mocking, and coverage. Use when writing unit tests, configuring Vitest, or setting up test coverage."
3
+ description: "Vitest unit and integration testing patterns, commands, mocking (vi.mock), and coverage. Use when writing .test.ts files, configuring the test runner, or adding coverage thresholds."
4
4
  ---
5
5
 
6
6
  <!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
7
7
 
8
8
  # Vitest Testing
9
9
 
10
- Vitest-specific unit and integration testing patterns. For project-specific test configuration, see [testing-config.md](../../.opencastle/stack/testing-config.md).
10
+ For project-specific test configuration, see [testing-config.md](../../.opencastle/stack/testing-config.md).
11
11
 
12
12
  ## Commands
13
13
 
@@ -152,15 +152,11 @@ export default defineConfig({
152
152
  });
153
153
  ```
154
154
 
155
- ## Best Practices
156
-
157
- - Co-locate test files next to source files (`foo.test.ts` next to `foo.ts`)
158
- - Use `describe` blocks to group related tests
159
- - Each test should be independentno shared mutable state between tests
160
- - Clean up mocks with `vi.restoreAllMocks()` in `afterEach`
161
- - Mock dependencies before imports `vi.mock()` calls are hoisted automatically but declare them at the top for clarity
162
- - Prefer `toEqual` for objects, `toBe` for primitives
163
- - Use `test.each` for parameterized tests
164
- - Set coverage thresholds to prevent regression
165
- - Use `vi.useFakeTimers()` for time-dependent code — never `setTimeout` in tests
166
- - Aim for 3-5 focused tests per file for maintainability — split large test suites
155
+ ## Workflow
156
+
157
+ 1. Create `*.test.ts` adjacent to the source file.
158
+ 2. Write focused unit tests (happy path + edge cases). Use `vi.mock()` before imports; restore in `afterEach` with `vi.restoreAllMocks()`.
159
+ 3. Run `npx vitest run <file>`fix failures.
160
+ 4. If tests fail: run `npx vitest run <file> --reporter=verbose` to inspect, fix, re-run.
161
+ 5. Coverage validation: run `npx vitest run --coverage --reporter=json` (CI) or `npx vitest run --coverage --reporter=text` (local) to generate coverage reports. Inspect `coverage`/`coverage-final.json` or the human-readable summary to find uncovered files/branches. If coverage is below thresholds, add targeted tests for uncovered branches, then re-run `npx vitest run --coverage` until thresholds pass.
162
+ 6. Commit tests alongside source changes.
@@ -55,37 +55,49 @@ Determine the type:
55
55
  Use this template:
56
56
 
57
57
  ```markdown
58
- ````skill
59
58
  ---
60
59
  name: <skill-name>
61
- description: "<One-line description of what the skill covers. Include key topics and when to use it.>"
60
+ description: "<Verb1> X, <verb2> Y, and <verb3> Z. Use when <scenario1>, <scenario2>, or <scenario3>."
62
61
  ---
63
62
 
64
63
  # <Display Name>
65
64
 
66
- <1-2 sentence overview of the skill's purpose and scope.>
67
-
68
- ## Core Principles
65
+ ## Workflow
69
66
 
70
- 1. **<Principle>** — <Explanation>
71
- 2. **<Principle>** <Explanation>
72
- 3. **<Principle>** <Explanation>
67
+ 1. **<Step>** — <Action>
68
+ - Checkpoint: <what to verify before proceeding>
69
+ - Recovery: <what to do on failure>
70
+ 2. **<Step>** — <Action>
71
+ - Checkpoint: <validation>
72
+ 3. **<Step>** — <Action>
73
+ - Fail → fix → re-run from step N.
73
74
 
74
- ## <Domain Section 1>
75
+ ## <Domain Section>
75
76
 
76
77
  <Content organized by topic. Use tables, code blocks, and checklists.>
77
78
 
78
- ## <Domain Section 2>
79
+ ## <Executable Example>
79
80
 
80
- <More domain content.>
81
+ ```<lang>
82
+ // Concrete, copy-paste-ready code (5-15 lines)
83
+ ```
81
84
 
82
85
  ## Anti-Patterns
83
86
 
84
- - **<Bad pattern>** <Why it's bad and what to do instead>
85
- - **<Bad pattern>** — <Why it's bad and what to do instead>
86
- ````
87
+ | Anti-pattern | Fix |
88
+ |-------------|-----|
89
+ | <Bad pattern> | <What to do instead> |
90
+
91
+ ## References
92
+
93
+ | Resource | Purpose |
94
+ |----------|--------|
95
+ | [REFERENCE.md](./REFERENCE.md) | <Extended examples, schemas, large tables> |
96
+ | **<related-skill>** skill | <What it contributes> |
87
97
  ```
88
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)`.
100
+
89
101
  ### Step 4: Register the Skill
90
102
 
91
103
  Registration differs by type:
@@ -111,12 +123,42 @@ Registration differs by type:
111
123
  - [ ] Skill matrix updated (`directSkills` array or capability slot binding)
112
124
  - [ ] For process skills: at least one agent's `directSkills` array includes it in skill-matrix.json
113
125
  - [ ] For plugin skills: `config.ts` `skillName` matches the `name` in frontmatter
126
+ - [ ] Run `npx tessl skill review <path>` — target 100% score (see Scoring Criteria below)
127
+
128
+ ## Scoring Criteria
129
+
130
+ Skills are evaluated by `npx tessl skill review` across 8 criteria (3 pts each = 24 total). Target 100%.
131
+
132
+ ### Description (frontmatter `description` field)
133
+
134
+ | Criterion | 3/3 Pattern | Common Pitfall |
135
+ |-----------|------------|----------------|
136
+ | **Specificity** | List 3+ concrete actions as verbs: "Creates X, validates Y, and manages Z" | Vague "covers" or "handles" without listing what |
137
+ | **Trigger terms** | Natural phrases a user would say — broad synonyms and variations | Too specialized; missing common phrasings |
138
+ | **Completeness** | Explicit `Use when...` clause with 3+ trigger scenarios | Missing when-to-use guidance |
139
+ | **Distinctiveness** | Unique niche; terms unlikely to collide with other skills | Generic terms that overlap with adjacent skills |
140
+
141
+ **Formula:** `"<Verb1> X, <verb2> Y, and <verb3> Z. Use when <scenario1>, <scenario2>, or <scenario3>."`
142
+
143
+ ### Content (SKILL.md body)
144
+
145
+ | Criterion | 3/3 Pattern | Common Pitfall |
146
+ |-----------|------------|----------------|
147
+ | **Conciseness** | Every line earns its place. No info Claude already knows. Tables over prose. | Explaining obvious concepts, redundant sections, verbose anti-patterns with "Why" columns |
148
+ | **Actionability** | ≥1 executable code example (copy-paste ready), concrete CLI commands, specific thresholds | Deferring to other skills without fallback, abstract guidance without examples |
149
+ | **Workflow clarity** | Numbered steps with validation checkpoints, explicit error recovery, feedback loops (fail → fix → re-run) | Implied sequence without numbers, no checkpoints between steps, missing recovery path |
150
+ | **Progressive disclosure** | SKILL.md = lean overview. Bulky content (>30-line examples, large tables, schemas) in REFERENCE.md. External refs organized in a References section. | Everything inline making the file too heavy, or too much deferred leaving SKILL.md hollow |
114
151
 
115
152
  ## Quality Guidelines
116
153
 
117
- - **Be prescriptive** — Skills should give clear instructions, not vague advice. "Use `fetchPlaces()` from `libs/queries`" beats "use the query library"
118
- - **Include examples** — Code snippets, file path examples, and table references
119
- - **Keep it scannable** — Use headings, tables, bullets, and code blocks. Agents need to find information fast
120
- - **Avoid duplication** — If a rule already exists in `.github/instructions/`, reference it instead of repeating it
121
- - **Stay stack-agnostic in process skills** — Never hardcode technology names; use capability slot references (e.g., "the **database** skill" not "Supabase")
122
- - **Size target** — 100-300 lines. Under 100 is probably too thin; over 300 should be split into multiple skills
154
+ - **Be prescriptive** — "Use `fetchPlaces()` from `libs/queries`" beats "use the query library"
155
+ - **Include executable examples** — At least one copy-paste-ready code block (5-15 lines). CLI commands with real flags, not placeholders
156
+ - **Keep it scannable** — Tables over prose. Headings, bullets, code blocks. Agents parse structure, not paragraphs
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
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
164
+ - **Third-person voice in descriptions** — "Creates X" not "Create X" or "This skill creates X"
@@ -0,0 +1,34 @@
1
+ > Parent: [SKILL.md](./SKILL.md)
2
+
3
+ ## Composite Widgets & Form Error Handling (Reference)
4
+
5
+ ### Roving tabindex pattern
6
+
7
+ Use when a composite widget (menu, listbox, tabs) manages focus internally.
8
+
9
+ 1. Container receives `tabindex="0"` and keyboard handlers.
10
+ 2. Children are `tabindex="-1"` except one `tabindex="0"` representing active item.
11
+ 3. Arrow keys update `tabindex` values and call `.focus()` on the new active child.
12
+
13
+ Example:
14
+
15
+ ```html
16
+ <div role="listbox" tabindex="0" aria-activedescendant="item-1">
17
+ <div id="item-1" role="option">Item 1</div>
18
+ <div id="item-2" role="option">Item 2</div>
19
+ </div>
20
+ ```
21
+
22
+ ### `aria-activedescendant` pattern
23
+
24
+ When focus remains on a container but a child is visually active, use `aria-activedescendant` referencing the active child's `id`. Update the attribute on arrow navigation.
25
+
26
+ ### Form error handling
27
+
28
+ - On validation error, add `aria-invalid="true"` and `aria-describedby="#error-id"` to the input.
29
+ - Ensure the error element has role `alert` or is announced by screen readers when it appears.
30
+ - Move focus to the first invalid control and programmatically announce error summary.
31
+
32
+ ### Skip links & focus management
33
+
34
+ Provide a visible `skip to main` link as first focusable element. Ensure `main` has an `id` target.
@@ -21,11 +21,14 @@ Plain language; consistent landmarks and nav order across pages; minimal distrac
21
21
  - No `tabindex` on static elements; `tabindex="-1"` only for elements receiving programmatic focus.
22
22
  - Hidden elements must not be focusable.
23
23
 
24
- **Composite components** (grids, listboxes, menus, tabs, toolbars): tab stop on container; arrow keys navigate children via roving tabindex or `aria-activedescendant`; on focus restore last/first child.
24
+ **Composite components** and detailed complex patterns have been moved to REFERENCE.md to keep this skill focused. See REFERENCE.md for roving tabindex, `aria-activedescendant`, and composite widget examples.
25
25
 
26
- **Roving tabindex:** First child `tabindex="0"`, rest `-1`; on arrow key set prev to `-1`, new to `0`, call `.focus()`.
26
+ ### Validation checkpoints (run-fix-repeat)
27
27
 
28
- **`aria-activedescendant`:** Container `tabindex="0"` + `aria-activedescendant="IDREF"`; CSS draws outline on referenced element; arrow keys update attribute.
28
+ - Run an automated audit: `npx axe-core` or integrate `axe-core`/`axe-playwright` in CI fix high/critical findings.
29
+ - Verify keyboard tab order manually: `Tab` through the page, ensure logical order and visible focus.
30
+ - Confirm contrast ratios (spot-check key pages): use `axe`, `pa11y`, or `contrast` tools and ensure ≥4.5:1 for body text.
31
+ - Fix, re-run audits, and repeat until no high/critical a11y issues remain.
29
32
 
30
33
  **Skip link** (first focusable element):
31
34
 
@@ -0,0 +1,48 @@
1
+ > Parent: [SKILL.md](./SKILL.md)
2
+
3
+ # Agent Hooks — Detailed Reference
4
+
5
+ ## on-session-start (extended checks)
6
+
7
+ | # | Action |
8
+ |---|--------|
9
+ | 1 | `rg -n "keyword" .opencastle/LESSONS-LEARNED.md` |
10
+ | 2 | `cat .opencastle/SESSION-CHECKPOINT.md` |
11
+ | 3 | `rg -n "Pending Approvals" .opencastle/SESSION-CHECKPOINT.md || true` |
12
+ | 4 | `rg -n "ERROR\|FAIL" .opencastle/AGENT-FAILURES.md || true` |
13
+ | 5 | `jq '.bindings' .opencastle/agents/skill-matrix.json` — verify bindings present |
14
+ | 6 | Load domain skills before writing code |
15
+
16
+ ## on-pre-delegate (example commands)
17
+
18
+ | # | Check | Example Command |
19
+ |---|-------|-----------------|
20
+ | 1 | Tracker issue | `gh issue view TAS-123 || gh issue create --title "TAS-123" --body "AC: ..."` |
21
+ | 2 | File partition | `rg -n "path:" prompts/* | cut -d: -f2 | sort | uniq -d` |
22
+ | 3 | Upstream deps | Verify upstream tasks are marked Done in tracker |
23
+ | 4 | Paths + AC | Include exact file paths (not globs) and acceptance criteria in prompt |
24
+ | 5 | Self-improvement | Add `Read .opencastle/LESSONS-LEARNED.md` to prompt text |
25
+ | 6 | Context map | `opencastle context-map` — load **context-map** skill for 5+ files |
26
+
27
+ Log delegation: `opencastle log --type=delegation --issue=TAS-123 --status=started --details "spawned subagent for feature X"`
28
+
29
+ ## on-post-delegate (detailed verification)
30
+
31
+ | # | Action | Command |
32
+ |---|--------|---------|
33
+ | 1 | Log completion | `opencastle log --type=delegation --issue=TAS-XX --status=complete` |
34
+ | 2 | Fast review | `opencastle log --type=review --issue=TAS-XX --verdict=PASS` |
35
+ | 3 | CI checks | `pnpm lint && pnpm typecheck && pnpm test` |
36
+ | 4 | Verify ACs | Check each acceptance criterion against tracker issue |
37
+ | 5 | Track issues | `rg -n "Discovered issue" KNOWN-ISSUES.md || gh issue create` |
38
+ | 6 | Lesson check | If agent retried, verify lesson added via **self-improvement** |
39
+ | 7 | Close/retry | `gh issue edit TAS-XX --state done` or re-delegate; 3rd failure → `.opencastle/AGENT-FAILURES.md` |
40
+
41
+ ## on-session-end (detailed)
42
+
43
+ | # | Action | Who |
44
+ |---|--------|-----|
45
+ | 1 | `opencastle doctor --fix` | Team Lead |
46
+ | 2 | `opencastle log --type session ...` | All |
47
+ | 3 | Write `.opencastle/SESSION-CHECKPOINT.md` if incomplete | Team Lead |
48
+ | 4 | `rg -c "^Lesson:" .opencastle/LESSONS-LEARNED.md` — flag merge if ≥5 | All |