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.
- package/README.md +5 -3
- package/dist/cli/convoy/engine.d.ts.map +1 -1
- package/dist/cli/convoy/engine.js +1 -0
- package/dist/cli/convoy/engine.js.map +1 -1
- package/dist/cli/convoy/pipeline.d.ts.map +1 -1
- package/dist/cli/convoy/pipeline.js +5 -2
- package/dist/cli/convoy/pipeline.js.map +1 -1
- package/dist/cli/convoy/pipeline.test.js +44 -0
- package/dist/cli/convoy/pipeline.test.js.map +1 -1
- package/dist/cli/run.js +4 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/dashboard/scripts/etl.d.ts +1 -0
- package/dist/dashboard/scripts/etl.d.ts.map +1 -1
- package/dist/dashboard/scripts/etl.js +7 -2
- package/dist/dashboard/scripts/etl.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/convoy/engine.ts +1 -0
- package/src/cli/convoy/pipeline.test.ts +49 -0
- package/src/cli/convoy/pipeline.ts +7 -2
- package/src/cli/run.ts +4 -4
- package/src/dashboard/dist/_astro/{index.6xXNs4L2.css → index.CADNhRPS.css} +1 -1
- package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +18 -18
- package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/dist/data/convoys/demo-docs-update.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-perf-opt.json +10 -10
- package/src/dashboard/dist/index.html +29 -6
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +18 -18
- package/src/dashboard/public/data/convoys/demo-data-pipeline.json +3 -3
- package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/public/data/convoys/demo-docs-update.json +3 -3
- package/src/dashboard/public/data/convoys/demo-perf-opt.json +10 -10
- package/src/dashboard/scripts/etl.ts +9 -5
- package/src/dashboard/src/pages/index.astro +36 -4
- package/src/dashboard/src/styles/dashboard.css +4 -0
- package/src/orchestrator/customizations/stack/sanity-config.md +43 -0
- package/src/orchestrator/customizations/stack/supabase-config.md +53 -0
- package/src/orchestrator/plugins/astro/REFERENCE.md +5 -0
- package/src/orchestrator/plugins/astro/SKILL.md +22 -29
- package/src/orchestrator/plugins/chrome-devtools/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/chrome-devtools/SKILL.md +10 -55
- package/src/orchestrator/plugins/contentful/REFERENCE.md +16 -0
- package/src/orchestrator/plugins/contentful/SKILL.md +69 -29
- package/src/orchestrator/plugins/convex/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/convex/SKILL.md +13 -1
- package/src/orchestrator/plugins/cypress/REFERENCE.md +5 -0
- package/src/orchestrator/plugins/cypress/SKILL.md +29 -93
- package/src/orchestrator/plugins/figma/REFERENCE.md +18 -0
- package/src/orchestrator/plugins/figma/SKILL.md +41 -66
- package/src/orchestrator/plugins/jira/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/jira/SKILL.md +26 -114
- package/src/orchestrator/plugins/linear/SKILL.md +42 -109
- package/src/orchestrator/plugins/netlify/REFERENCE.md +33 -0
- package/src/orchestrator/plugins/netlify/SKILL.md +34 -64
- package/src/orchestrator/plugins/nextjs/REFERENCE.md +73 -0
- package/src/orchestrator/plugins/nextjs/SKILL.md +49 -138
- package/src/orchestrator/plugins/notion/SKILL.md +26 -168
- package/src/orchestrator/plugins/notion/TEMPLATES.md +88 -0
- package/src/orchestrator/plugins/nx/REFERENCE.md +10 -0
- package/src/orchestrator/plugins/nx/SKILL.md +12 -12
- package/src/orchestrator/plugins/playwright/REFERENCE.md +12 -0
- package/src/orchestrator/plugins/playwright/SKILL.md +33 -98
- package/src/orchestrator/plugins/prisma/REFERENCE.md +42 -0
- package/src/orchestrator/plugins/prisma/SKILL.md +18 -68
- package/src/orchestrator/plugins/resend/REFERENCE.md +61 -0
- package/src/orchestrator/plugins/resend/SKILL.md +23 -137
- package/src/orchestrator/plugins/sanity/SKILL.md +50 -3
- package/src/orchestrator/plugins/slack/REFERENCE.md +24 -0
- package/src/orchestrator/plugins/slack/SKILL.md +36 -111
- package/src/orchestrator/plugins/strapi/REFERENCE.md +35 -0
- package/src/orchestrator/plugins/strapi/SKILL.md +60 -24
- package/src/orchestrator/plugins/supabase/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/supabase/SKILL.md +44 -16
- package/src/orchestrator/plugins/teams/REFERENCE.md +36 -0
- package/src/orchestrator/plugins/teams/SKILL.md +35 -85
- package/src/orchestrator/plugins/trello/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/trello/SKILL.md +25 -97
- package/src/orchestrator/plugins/turborepo/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/turborepo/SKILL.md +13 -1
- package/src/orchestrator/plugins/vercel/SKILL.md +45 -52
- package/src/orchestrator/plugins/vitest/SKILL.md +10 -14
- package/src/orchestrator/prompts/create-skill.prompt.md +62 -20
- package/src/orchestrator/skills/accessibility-standards/REFERENCE.md +34 -0
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +6 -3
- package/src/orchestrator/skills/agent-hooks/HOOKS-REFERENCE.md +48 -0
- package/src/orchestrator/skills/agent-hooks/SKILL.md +41 -65
- package/src/orchestrator/skills/agent-memory/KNOWLEDGE-GRAPH.md +49 -0
- package/src/orchestrator/skills/agent-memory/SKILL.md +30 -67
- package/src/orchestrator/skills/api-patterns/SKILL.md +29 -1
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/REFERENCE.md +70 -0
- package/src/orchestrator/skills/context-map/SKILL.md +28 -55
- package/src/orchestrator/skills/data-engineering/REFERENCE.md +55 -0
- package/src/orchestrator/skills/data-engineering/SKILL.md +40 -34
- package/src/orchestrator/skills/decomposition/REFERENCE.md +28 -0
- package/src/orchestrator/skills/decomposition/SKILL.md +15 -30
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +31 -65
- package/src/orchestrator/skills/documentation-standards/SKILL.md +31 -50
- package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +39 -0
- package/src/orchestrator/skills/fast-review/REFERENCE.md +30 -0
- package/src/orchestrator/skills/fast-review/SKILL.md +11 -31
- package/src/orchestrator/skills/frontend-design/COMPONENTS.md +113 -0
- package/src/orchestrator/skills/frontend-design/REFERENCE.md +36 -0
- package/src/orchestrator/skills/frontend-design/SKILL.md +36 -85
- package/src/orchestrator/skills/git-workflow/SKILL.md +1 -1
- package/src/orchestrator/skills/memory-merger/REFERENCE.md +20 -0
- package/src/orchestrator/skills/memory-merger/SKILL.md +29 -38
- package/src/orchestrator/skills/observability-logging/SKILL.md +5 -12
- package/src/orchestrator/skills/orchestration-protocols/REFERENCE.md +42 -0
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +54 -41
- package/src/orchestrator/skills/panel-majority-vote/REFERENCE.md +55 -0
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +30 -75
- package/src/orchestrator/skills/performance-optimization/SKILL.md +41 -1
- package/src/orchestrator/skills/project-consistency/SKILL.md +50 -89
- package/src/orchestrator/skills/project-consistency/TEMPLATES.md +39 -0
- package/src/orchestrator/skills/react-development/REFERENCE.md +7 -0
- package/src/orchestrator/skills/react-development/SKILL.md +50 -42
- package/src/orchestrator/skills/security-hardening/SKILL.md +88 -1
- package/src/orchestrator/skills/self-improvement/LESSON-CATEGORIES.md +36 -0
- package/src/orchestrator/skills/self-improvement/SKILL.md +19 -25
- package/src/orchestrator/skills/seo-patterns/REFERENCE.md +54 -0
- package/src/orchestrator/skills/seo-patterns/SKILL.md +20 -88
- package/src/orchestrator/skills/session-checkpoints/CHECKPOINT-TEMPLATE.md +58 -0
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +34 -58
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +37 -30
- package/src/orchestrator/skills/testing-workflow/SKILL.md +55 -2
- package/src/orchestrator/skills/validation-gates/REFERENCE.md +50 -0
- package/src/orchestrator/skills/validation-gates/SKILL.md +39 -35
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trello-task-management
|
|
3
|
-
description: "
|
|
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
|
-
|
|
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
|
-
|
|
18
|
+
## Available MCP Tools (quick)
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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
|
-
|
|
39
|
+
## Discovered Issues (Bug Tickets)
|
|
47
40
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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** —
|
|
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: "
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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 |
|
|
32
|
-
|
|
33
|
-
| `deploy_to_vercel` | Trigger a deployment |
|
|
34
|
-
| `get_deployment` | Check deployment status and metadata |
|
|
35
|
-
| `get_deployment_build_logs` | Read build output for debugging |
|
|
36
|
-
| `get_runtime_logs` | Read runtime logs for debugging |
|
|
37
|
-
| `list_deployments` | List recent deployments |
|
|
38
|
-
| `get_project` | Get project configuration |
|
|
39
|
-
| `list_projects` | List all projects in the team |
|
|
40
|
-
| `list_teams` | List available teams |
|
|
41
|
-
| `search_vercel_documentation` | Search Vercel docs |
|
|
42
|
-
| `check_domain_availability_and_price` | Domain availability check |
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
83
|
+
```json
|
|
84
|
+
// tool: vercel/deploy_to_vercel
|
|
85
|
+
{ "project_id": "proj_xxx", "gitCommitSha": "abcd1234" }
|
|
86
|
+
```
|
|
77
87
|
|
|
78
|
-
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
##
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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: "<
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
## Core Principles
|
|
65
|
+
## Workflow
|
|
69
66
|
|
|
70
|
-
1. **<
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
75
|
+
## <Domain Section>
|
|
75
76
|
|
|
76
77
|
<Content organized by topic. Use tables, code blocks, and checklists.>
|
|
77
78
|
|
|
78
|
-
## <
|
|
79
|
+
## <Executable Example>
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
```<lang>
|
|
82
|
+
// Concrete, copy-paste-ready code (5-15 lines)
|
|
83
|
+
```
|
|
81
84
|
|
|
82
85
|
## Anti-Patterns
|
|
83
86
|
|
|
84
|
-
-
|
|
85
|
-
|
|
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** —
|
|
118
|
-
- **Include examples** —
|
|
119
|
-
- **Keep it scannable** —
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
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**
|
|
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
|
-
|
|
26
|
+
### Validation checkpoints (run-fix-repeat)
|
|
27
27
|
|
|
28
|
-
|
|
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 |
|