opencastle 0.32.4 → 0.32.6
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 +13 -3
- package/bin/cli.mjs +2 -0
- package/dist/cli/bootstrap.js +1 -1
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/bootstrap.test.js +16 -0
- package/dist/cli/bootstrap.test.js.map +1 -1
- package/dist/cli/init.test.js +38 -0
- package/dist/cli/init.test.js.map +1 -1
- package/dist/cli/stack-config-update.test.js +18 -0
- package/dist/cli/stack-config-update.test.js.map +1 -1
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +1 -0
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/orchestrator/plugins/index.d.ts.map +1 -1
- package/dist/orchestrator/plugins/index.js +4 -0
- package/dist/orchestrator/plugins/index.js.map +1 -1
- package/dist/orchestrator/plugins/notion/config.d.ts +3 -0
- package/dist/orchestrator/plugins/notion/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/notion/config.js +46 -0
- package/dist/orchestrator/plugins/notion/config.js.map +1 -0
- package/dist/orchestrator/plugins/trello/config.d.ts +3 -0
- package/dist/orchestrator/plugins/trello/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/trello/config.js +43 -0
- package/dist/orchestrator/plugins/trello/config.js.map +1 -0
- package/dist/orchestrator/plugins/types.d.ts +1 -1
- package/dist/orchestrator/plugins/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cli/bootstrap.test.ts +21 -0
- package/src/cli/bootstrap.ts +1 -1
- package/src/cli/init.test.ts +46 -0
- package/src/cli/stack-config-update.test.ts +20 -0
- package/src/cli/stack-config.ts +1 -0
- package/src/cli/types.ts +1 -1
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/orchestrator/agents/api-designer.agent.md +25 -34
- package/src/orchestrator/agents/architect.agent.md +40 -84
- package/src/orchestrator/agents/content-engineer.agent.md +29 -31
- package/src/orchestrator/agents/copywriter.agent.md +35 -60
- package/src/orchestrator/agents/data-expert.agent.md +24 -30
- package/src/orchestrator/agents/database-engineer.agent.md +26 -31
- package/src/orchestrator/agents/developer.agent.md +32 -34
- package/src/orchestrator/agents/devops-expert.agent.md +31 -26
- package/src/orchestrator/agents/documentation-writer.agent.md +29 -29
- package/src/orchestrator/agents/performance-expert.agent.md +36 -33
- package/src/orchestrator/agents/release-manager.agent.md +25 -34
- package/src/orchestrator/agents/researcher.agent.md +41 -95
- package/src/orchestrator/agents/reviewer.agent.md +24 -34
- package/src/orchestrator/agents/security-expert.agent.md +35 -39
- package/src/orchestrator/agents/seo-specialist.agent.md +25 -32
- package/src/orchestrator/agents/session-guard.agent.md +20 -79
- package/src/orchestrator/agents/team-lead.agent.md +50 -254
- package/src/orchestrator/agents/testing-expert.agent.md +37 -49
- package/src/orchestrator/agents/ui-ux-expert.agent.md +33 -39
- package/src/orchestrator/customizations/KNOWN-ISSUES.md +0 -1
- package/src/orchestrator/customizations/agents/skill-matrix.json +20 -4
- package/src/orchestrator/customizations/agents/skill-matrix.md +20 -0
- package/src/orchestrator/instructions/general.instructions.md +24 -84
- package/src/orchestrator/plugins/astro/SKILL.md +23 -179
- package/src/orchestrator/plugins/convex/SKILL.md +38 -12
- package/src/orchestrator/plugins/index.ts +4 -0
- package/src/orchestrator/plugins/netlify/SKILL.md +17 -13
- package/src/orchestrator/plugins/nextjs/SKILL.md +55 -261
- package/src/orchestrator/plugins/notion/SKILL.md +205 -0
- package/src/orchestrator/plugins/notion/config.ts +47 -0
- package/src/orchestrator/plugins/nx/SKILL.md +20 -72
- package/src/orchestrator/plugins/playwright/SKILL.md +5 -17
- package/src/orchestrator/plugins/slack/SKILL.md +28 -190
- package/src/orchestrator/plugins/teams/SKILL.md +10 -140
- package/src/orchestrator/plugins/trello/SKILL.md +151 -0
- package/src/orchestrator/plugins/trello/config.ts +44 -0
- package/src/orchestrator/plugins/types.ts +1 -1
- package/src/orchestrator/plugins/vitest/SKILL.md +2 -2
- package/src/orchestrator/prompts/bug-fix.prompt.md +25 -63
- package/src/orchestrator/prompts/implement-feature.prompt.md +29 -66
- package/src/orchestrator/prompts/quick-refinement.prompt.md +31 -66
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +50 -105
- package/src/orchestrator/skills/agent-hooks/SKILL.md +60 -110
- package/src/orchestrator/skills/agent-memory/SKILL.md +44 -93
- package/src/orchestrator/skills/api-patterns/SKILL.md +20 -68
- package/src/orchestrator/skills/code-commenting/SKILL.md +49 -101
- package/src/orchestrator/skills/context-map/SKILL.md +47 -88
- package/src/orchestrator/skills/data-engineering/SKILL.md +27 -74
- package/src/orchestrator/skills/decomposition/SKILL.md +50 -98
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +44 -107
- package/src/orchestrator/skills/documentation-standards/SKILL.md +28 -89
- package/src/orchestrator/skills/fast-review/SKILL.md +51 -276
- package/src/orchestrator/skills/frontend-design/SKILL.md +53 -163
- package/src/orchestrator/skills/git-workflow/SKILL.md +18 -54
- package/src/orchestrator/skills/memory-merger/SKILL.md +51 -88
- package/src/orchestrator/skills/observability-logging/SKILL.md +29 -75
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +58 -117
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +65 -140
- package/src/orchestrator/skills/performance-optimization/SKILL.md +21 -85
- package/src/orchestrator/skills/project-consistency/SKILL.md +62 -281
- package/src/orchestrator/skills/react-development/SKILL.md +38 -86
- package/src/orchestrator/skills/security-hardening/SKILL.md +40 -84
- package/src/orchestrator/skills/self-improvement/SKILL.md +26 -60
- package/src/orchestrator/skills/seo-patterns/SKILL.md +40 -105
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +26 -68
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +66 -206
- package/src/orchestrator/skills/testing-workflow/SKILL.md +42 -112
- package/src/orchestrator/skills/validation-gates/SKILL.md +39 -170
- package/src/orchestrator/snippets/base-output-contract.md +14 -0
- package/src/orchestrator/snippets/discovered-issues-policy.md +15 -0
- package/src/orchestrator/snippets/logging-mandatory.md +11 -0
- package/src/orchestrator/snippets/never-expose-secrets.md +22 -0
|
@@ -26,26 +26,14 @@ Agent communication patterns via the Microsoft Teams MCP server (Microsoft Agent
|
|
|
26
26
|
3. **Graph API permissions:** `McpServers.Teams.All` (delegated or application)
|
|
27
27
|
4. **Admin consent** for the registered app
|
|
28
28
|
|
|
29
|
-
> **Note:** The Teams MCP server is in preview and not yet generally available as a standalone endpoint. Features and availability may change.
|
|
30
|
-
|
|
31
29
|
## Available MCP Tools
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- **Chats** — Create, list, read, update, delete chats
|
|
36
|
-
- **Messages** — Send, read, edit, delete messages in chats and channels
|
|
37
|
-
- **Channels** — List, create, manage channel settings
|
|
38
|
-
- **Members** — List, add, remove members from chats and channels
|
|
39
|
-
- **Teams** — List teams, get team details, manage team settings
|
|
40
|
-
|
|
41
|
-
Tool names follow the pattern `teams_<resource>_<action>`. Use tool discovery to list available tools at runtime.
|
|
31
|
+
Tool names follow `teams_<resource>_<action>`. Covers: chats, messages, channels, members, and team settings. Use tool discovery to list available tools at runtime.
|
|
42
32
|
|
|
43
33
|
## Agent Notification Patterns
|
|
44
34
|
|
|
45
35
|
### Progress Updates
|
|
46
36
|
|
|
47
|
-
Post structured progress updates to a designated channel:
|
|
48
|
-
|
|
49
37
|
```
|
|
50
38
|
Channel: Agent Updates (or project-specific channel)
|
|
51
39
|
Format:
|
|
@@ -55,52 +43,21 @@ Format:
|
|
|
55
43
|
**ETA:** ~5 minutes
|
|
56
44
|
```
|
|
57
45
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
✅ **Task:** TAS-42 — Add price filter component
|
|
62
|
-
**Status:** Complete — PR opened
|
|
63
|
-
**PR:** https://github.com/org/repo/pull/123
|
|
64
|
-
**Summary:** Added PriceRangeFilter with 4 range options, 12 unit tests passing
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Error / Blocking Notifications
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
🚨 **Task:** TAS-42 — Add price filter component
|
|
71
|
-
**Status:** Blocked — needs human input
|
|
72
|
-
**Issue:** Cannot determine correct price ranges for the market
|
|
73
|
-
**Action needed:** Reply in this thread with the desired price range values
|
|
74
|
-
```
|
|
46
|
+
## Human-in-the-Loop Approval
|
|
75
47
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
### Human-in-the-Loop Approval
|
|
79
|
-
|
|
80
|
-
When an agent needs approval before proceeding:
|
|
81
|
-
|
|
82
|
-
1. **Post approval request** to the channel with clear instructions:
|
|
48
|
+
1. **Post approval request** to the channel:
|
|
83
49
|
```
|
|
84
50
|
⏳ **Approval Required**
|
|
85
51
|
Task: TAS-42 — Database migration adds `price_range` column
|
|
86
52
|
Action: Run migration on production database
|
|
87
|
-
|
|
53
|
+
|
|
88
54
|
Reply with:
|
|
89
55
|
✅ Approve — to proceed
|
|
90
56
|
❌ Reject — to stop
|
|
91
57
|
Or reply with questions/comments
|
|
92
58
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
3. **Acknowledge** — Post confirmation of the action taken
|
|
96
|
-
|
|
97
|
-
### Reading User Responses
|
|
98
|
-
|
|
99
|
-
To check for approvals or instructions:
|
|
100
|
-
|
|
101
|
-
1. Read message replies in the channel or chat thread
|
|
102
|
-
2. Parse reply content for approval keywords (`approve`, `approved`, `yes`, `proceed`, `reject`, `no`, `stop`)
|
|
103
|
-
3. Check for reactions on messages (Teams supports reactions via Graph API)
|
|
59
|
+
2. **Poll for response** — Read replies to determine the decision.
|
|
60
|
+
3. **Acknowledge** — Post confirmation of the action taken.
|
|
104
61
|
|
|
105
62
|
### Parsing Conventions
|
|
106
63
|
|
|
@@ -114,15 +71,6 @@ To check for approvals or instructions:
|
|
|
114
71
|
|
|
115
72
|
## Channel & Chat Conventions
|
|
116
73
|
|
|
117
|
-
### Channel Structure
|
|
118
|
-
|
|
119
|
-
| Channel | Purpose |
|
|
120
|
-
|---------|---------|
|
|
121
|
-
| Agent Updates | General agent activity feed |
|
|
122
|
-
| Agent Approvals | Approval requests requiring human action |
|
|
123
|
-
| Agent Errors | Error reports and blocked tasks |
|
|
124
|
-
| Project-specific channel | All activity for a specific project |
|
|
125
|
-
|
|
126
74
|
### Threading Rules
|
|
127
75
|
|
|
128
76
|
- **Always reply in threads** — use message replies, not top-level posts for follow-ups
|
|
@@ -130,33 +78,11 @@ To check for approvals or instructions:
|
|
|
130
78
|
- **Include task ID** — every message references the tracker issue ID
|
|
131
79
|
- **Mark important messages** — use importance flags for approval requests
|
|
132
80
|
|
|
133
|
-
### Chat vs Channel
|
|
134
|
-
|
|
135
|
-
| Use Case | Preferred |
|
|
136
|
-
|----------|-----------|
|
|
137
|
-
| Team-wide updates | Channel |
|
|
138
|
-
| Approval requests | Channel (for visibility) |
|
|
139
|
-
| Direct questions | 1:1 or group chat |
|
|
140
|
-
| Sensitive discussions | 1:1 chat |
|
|
141
|
-
|
|
142
81
|
## Message Formatting
|
|
143
82
|
|
|
144
|
-
Teams messages support HTML and a subset of Markdown:
|
|
145
|
-
|
|
146
|
-
| Format | Syntax |
|
|
147
|
-
|--------|--------|
|
|
148
|
-
| Bold | `**bold**` or `<strong>bold</strong>` |
|
|
149
|
-
| Italic | `*italic*` or `<em>italic</em>` |
|
|
150
|
-
| Code | `` `inline code` `` |
|
|
151
|
-
| Code block | ` ```code block``` ` |
|
|
152
|
-
| Link | `[Display Text](https://example.com)` |
|
|
153
|
-
| User mention | `<at>User Name</at>` (requires user ID in adaptive card) |
|
|
154
|
-
| List | `- item` or `1. item` |
|
|
155
|
-
| Heading | `### Heading` |
|
|
156
|
-
|
|
157
83
|
### Adaptive Cards
|
|
158
84
|
|
|
159
|
-
For richer formatting,
|
|
85
|
+
For richer formatting, use Adaptive Cards (JSON-based):
|
|
160
86
|
|
|
161
87
|
```json
|
|
162
88
|
{
|
|
@@ -178,74 +104,18 @@ Use Adaptive Cards for approval workflows when available — they provide struct
|
|
|
178
104
|
|
|
179
105
|
## Rate Limits
|
|
180
106
|
|
|
181
|
-
Microsoft Graph API
|
|
182
|
-
|
|
183
|
-
| Resource | Limit |
|
|
184
|
-
|----------|-------|
|
|
185
|
-
| Messages (per app per tenant) | 50 per second |
|
|
186
|
-
| Channel messages | 50 per second |
|
|
187
|
-
| Chat creation | 50 per second |
|
|
188
|
-
| Individual API calls | 10,000 per 10 minutes |
|
|
107
|
+
Microsoft Graph API: 50 messages/second per app per tenant; 10,000 individual API calls per 10 minutes.
|
|
189
108
|
|
|
190
109
|
**Best practices:**
|
|
191
110
|
- Batch updates into single messages rather than posting many small messages
|
|
192
|
-
- Use threads to consolidate related updates
|
|
193
111
|
- Cache team/channel/user IDs — don't look them up repeatedly
|
|
194
|
-
- Respect 429 (Too Many Requests) responses with retry-after headers
|
|
195
112
|
|
|
196
113
|
## Security Considerations
|
|
197
114
|
|
|
198
115
|
- **OAuth tokens** are managed by the MCP server — agents never see raw tokens
|
|
199
116
|
- **Scope minimization** — request only the Graph API permissions agents actually need
|
|
200
|
-
- **
|
|
201
|
-
- **Conditional Access** — Microsoft Entra Conditional Access policies apply to API calls
|
|
202
|
-
- **Audit logging** — Microsoft 365 audit logs capture all Graph API activity
|
|
203
|
-
- **No secrets in messages** — never post tokens, passwords, or credentials in Teams messages (per Constitution #1)
|
|
204
|
-
- **Data residency** — Teams data is stored in the tenant's Microsoft 365 region
|
|
205
|
-
|
|
206
|
-
## Integration with Agent Workflows
|
|
207
|
-
|
|
208
|
-
### Session Start
|
|
209
|
-
|
|
210
|
-
At the beginning of a work session, post a brief status message:
|
|
211
|
-
```
|
|
212
|
-
🏁 **Session started**
|
|
213
|
-
Agent: Frontend Engineer
|
|
214
|
-
Task: TAS-42 — Add price filter component
|
|
215
|
-
Mode: Autonomous (will request approval for destructive actions)
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Session End
|
|
219
|
-
|
|
220
|
-
At the end of a work session, post a summary:
|
|
221
|
-
```
|
|
222
|
-
🏁 **Session complete**
|
|
223
|
-
Agent: Frontend Engineer
|
|
224
|
-
Task: TAS-42 — Add price filter component
|
|
225
|
-
Result: ✅ PR opened (#123)
|
|
226
|
-
Duration: 12 minutes
|
|
227
|
-
Files changed: 5
|
|
228
|
-
Tests: 12 passing, 0 failing
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Error Recovery
|
|
232
|
-
|
|
233
|
-
If an agent encounters an unrecoverable error, notify before stopping:
|
|
234
|
-
```
|
|
235
|
-
💥 **Session failed**
|
|
236
|
-
Agent: Frontend Engineer
|
|
237
|
-
Task: TAS-42 — Add price filter component
|
|
238
|
-
Error: TypeScript compilation failed — 3 type errors in PriceFilter.tsx
|
|
239
|
-
Action: Posted details in thread. Needs manual fix or re-delegation.
|
|
240
|
-
```
|
|
117
|
+
- **No secrets in messages** — never post tokens, passwords, or credentials in Teams messages
|
|
241
118
|
|
|
242
119
|
## Preview Limitations
|
|
243
120
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
- **Availability** may change without notice
|
|
247
|
-
- **Tool surface** may be incomplete compared to the full Graph API
|
|
248
|
-
- **Performance** may vary during preview
|
|
249
|
-
- **Breaking changes** are possible between preview versions
|
|
250
|
-
|
|
251
|
-
Check [Microsoft Agent 365 documentation](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/) for the latest status.
|
|
121
|
+
The Teams MCP server is in Frontier preview — availability and tool surface may change without notice. Check [Microsoft Agent 365 documentation](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/) for the latest status.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
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."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
|
|
7
|
+
|
|
8
|
+
# Task Management with Trello
|
|
9
|
+
|
|
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).
|
|
11
|
+
|
|
12
|
+
## MCP Server
|
|
13
|
+
|
|
14
|
+
| Field | Value |
|
|
15
|
+
|-------|-------|
|
|
16
|
+
| **Package** | [`@delorenj/mcp-server-trello`](https://www.npmjs.com/package/@delorenj/mcp-server-trello) |
|
|
17
|
+
| **Type** | stdio (spawned via `npx -y @delorenj/mcp-server-trello`) |
|
|
18
|
+
| **Auth** | API key + token via `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars |
|
|
19
|
+
|
|
20
|
+
### Authentication
|
|
21
|
+
|
|
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:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
TRELLO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
28
|
+
TRELLO_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Available MCP Tools
|
|
32
|
+
|
|
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 |
|
|
43
|
+
|
|
44
|
+
## Discovered Issues (Bug Tickets)
|
|
45
|
+
|
|
46
|
+
When an agent encounters a pre-existing bug or issue unrelated to the current task, it must be tracked:
|
|
47
|
+
|
|
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
|
|
57
|
+
|
|
58
|
+
## Card Naming
|
|
59
|
+
|
|
60
|
+
Use `[Area] Short description` format:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
[Schema] Add priceRange field to place type
|
|
64
|
+
[DB] Add price_range column and migration
|
|
65
|
+
[UI] Build PriceRangeFilter component
|
|
66
|
+
[API] Add price filter endpoint
|
|
67
|
+
[Test] Unit tests for price filter
|
|
68
|
+
[Docs] Update data model documentation
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Area prefixes:** `[Schema]`, `[DB]`, `[Query]`, `[UI]`, `[Page]`, `[API]`, `[Auth]`, `[Test]`, `[Docs]`, `[Deploy]`, `[Data]`, `[Perf]`, `[Security]`, `[Bug]`
|
|
72
|
+
|
|
73
|
+
## Board and List Workflow
|
|
74
|
+
|
|
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
|
+
### Agent-Driven Card Transitions (via MCP)
|
|
88
|
+
|
|
89
|
+
| From | To | When |
|
|
90
|
+
|------|----|------|
|
|
91
|
+
| Backlog / To Do | In Progress | Agent starts working on the card |
|
|
92
|
+
| In Progress | Done | Non-PR task is verified (docs, config) |
|
|
93
|
+
| Any | Backlog | Task is deferred |
|
|
94
|
+
|
|
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.
|
|
142
|
+
|
|
143
|
+
## Session Continuity
|
|
144
|
+
|
|
145
|
+
At the start of each work session:
|
|
146
|
+
|
|
147
|
+
1. `get_boards` — confirm the right board is active
|
|
148
|
+
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
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'trello',
|
|
5
|
+
name: 'Trello',
|
|
6
|
+
category: 'team',
|
|
7
|
+
subCategory: 'task-management',
|
|
8
|
+
label: 'Trello',
|
|
9
|
+
hint: 'Visual board task management via MCP',
|
|
10
|
+
skillName: 'trello-task-management',
|
|
11
|
+
mcpServerKey: 'Trello',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', '@delorenj/mcp-server-trello'],
|
|
16
|
+
envFile: '${workspaceFolder}/.env',
|
|
17
|
+
},
|
|
18
|
+
authType: 'env-token',
|
|
19
|
+
envVars: [
|
|
20
|
+
{
|
|
21
|
+
name: 'TRELLO_API_KEY',
|
|
22
|
+
hint: 'Create at trello.com/app-key -> API Key',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'TRELLO_TOKEN',
|
|
26
|
+
hint: 'Generate at trello.com/app-key -> Token (click "Generate a Token")',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
agentToolMap: {
|
|
30
|
+
'team-lead': [
|
|
31
|
+
'Trello/get_boards',
|
|
32
|
+
'Trello/get_lists',
|
|
33
|
+
'Trello/get_cards_by_list_id',
|
|
34
|
+
'Trello/get_card_details',
|
|
35
|
+
'Trello/create_card',
|
|
36
|
+
'Trello/update_card',
|
|
37
|
+
'Trello/add_checklist_to_card',
|
|
38
|
+
'Trello/add_comment_to_card',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
docsUrl: 'https://www.opencastle.dev/docs/plugins#trello',
|
|
42
|
+
officialDocs: 'https://developer.atlassian.com/cloud/trello/',
|
|
43
|
+
mcpPackage: '@delorenj/mcp-server-trello',
|
|
44
|
+
};
|
|
@@ -13,7 +13,7 @@ export interface PluginConfig {
|
|
|
13
13
|
category: 'tech' | 'team';
|
|
14
14
|
|
|
15
15
|
/** Sub-category for grouping */
|
|
16
|
-
subCategory: 'cms' | 'database' | 'deployment' | 'framework' | 'codebase-tool' | 'task-management' | 'notifications' | 'testing' | 'e2e-testing' | 'design' | 'email';
|
|
16
|
+
subCategory: 'cms' | 'database' | 'deployment' | 'framework' | 'codebase-tool' | 'task-management' | 'knowledge-management' | 'notifications' | 'testing' | 'e2e-testing' | 'design' | 'email';
|
|
17
17
|
|
|
18
18
|
/** Label shown in the `npx opencastle init` multiselect */
|
|
19
19
|
label: string;
|
|
@@ -158,9 +158,9 @@ export default defineConfig({
|
|
|
158
158
|
- Use `describe` blocks to group related tests
|
|
159
159
|
- Each test should be independent — no shared mutable state between tests
|
|
160
160
|
- Clean up mocks with `vi.restoreAllMocks()` in `afterEach`
|
|
161
|
-
-
|
|
161
|
+
- Mock dependencies before imports — `vi.mock()` calls are hoisted automatically but declare them at the top for clarity
|
|
162
162
|
- Prefer `toEqual` for objects, `toBe` for primitives
|
|
163
163
|
- Use `test.each` for parameterized tests
|
|
164
164
|
- Set coverage thresholds to prevent regression
|
|
165
165
|
- Use `vi.useFakeTimers()` for time-dependent code — never `setTimeout` in tests
|
|
166
|
-
-
|
|
166
|
+
- Aim for 3-5 focused tests per file for maintainability — split large test suites
|
|
@@ -15,8 +15,6 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
> **Canonical workflow:** `.github/agent-workflows/bug-fix.md` defines the phase structure. This prompt expands each phase with delegation-specific detail. If the two diverge, update the workflow first (SSOT) then sync the prompt.
|
|
19
|
-
|
|
20
18
|
## How Bug Fixes Differ from Other Workflows
|
|
21
19
|
|
|
22
20
|
| Aspect | Roadmap Task | Follow-Up | Bug Fix |
|
|
@@ -33,52 +31,27 @@ You are the Team Lead. Investigate and fix the bug described below. Bugs are rea
|
|
|
33
31
|
|
|
34
32
|
### 1. Triage & Reproduce
|
|
35
33
|
|
|
36
|
-
Before fixing anything, understand the bug:
|
|
37
|
-
|
|
38
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
|
|
39
35
|
2. **Check tracker** — Search for existing bug tickets. If one exists, take it over instead of creating a duplicate
|
|
40
36
|
3. **Read lessons learned** — Check `.opencastle/LESSONS-LEARNED.md` for related pitfalls
|
|
41
|
-
4. **Reproduce the bug** — Start the dev server
|
|
42
|
-
- Start the dev server (see the **codebase-tool** skill for the serve command)
|
|
43
|
-
- Navigate to the affected page in Chrome
|
|
44
|
-
- Follow the reproduction steps from the bug report
|
|
45
|
-
- Take a screenshot of the broken state as evidence
|
|
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
|
|
46
38
|
5. **Determine scope** — Which apps are affected? (see `project.instructions.md` for the app inventory)
|
|
47
|
-
6. **Assess severity**:
|
|
48
|
-
- **Critical** — App crashes, data loss, auth bypass, page won't load
|
|
49
|
-
- **High** — Feature broken but workaround exists, significant UI breakage
|
|
50
|
-
- **Medium** — Minor functional issue, cosmetic but noticeable
|
|
51
|
-
- **Low** — Edge case, minor visual glitch
|
|
39
|
+
6. **Assess severity**: Critical (crash/data loss/auth bypass) | High (broken + workaround) | Medium (minor functional) | Low (edge case/cosmetic)
|
|
52
40
|
|
|
53
41
|
### 2. Create Tracker Issue
|
|
54
42
|
|
|
55
43
|
Every bug gets tracked. Create a tracker issue with:
|
|
56
44
|
|
|
57
45
|
- **Title**: `[Bug] Short description of the symptom`
|
|
58
|
-
- **Label**: `bug
|
|
59
|
-
- **
|
|
60
|
-
- **Description**:
|
|
61
|
-
- **Symptom**: What the user sees
|
|
62
|
-
- **Reproduction steps**: Exact steps to trigger
|
|
63
|
-
- **Expected behavior**: What should happen
|
|
64
|
-
- **Actual behavior**: What happens instead
|
|
65
|
-
- **Affected apps**: which apps from the project inventory
|
|
66
|
-
- **Affected files** (once identified): File paths for the partition
|
|
67
|
-
- **Screenshot**: Link or description of the broken state
|
|
46
|
+
- **Label**: `bug`; **Priority**: based on severity
|
|
47
|
+
- **Description**: Symptom, reproduction steps, expected vs actual behavior, affected apps + files, screenshot
|
|
68
48
|
|
|
69
49
|
### 3. Root Cause Analysis
|
|
70
50
|
|
|
71
|
-
Find WHY the bug happens, not just WHERE:
|
|
72
|
-
|
|
73
51
|
1. **Search the codebase** — Find the components, queries, styles, and logic involved
|
|
74
|
-
2. **Trace the data flow** —
|
|
75
|
-
3. **Check recent changes** —
|
|
76
|
-
4. **Identify the root cause** —
|
|
77
|
-
- **Code bug** — Logic error, wrong condition, missing null check
|
|
78
|
-
- **Data issue** — Unexpected data shape, missing field, bad reference
|
|
79
|
-
- **Race condition** — Timing issue, hydration mismatch, async ordering
|
|
80
|
-
- **CSS/Layout** — Specificity conflict, missing responsive rule, overflow
|
|
81
|
-
- **Integration** — API contract mismatch, schema drift, stale cache
|
|
52
|
+
2. **Trace the data flow** — Source (CMS/database) → query → component → render
|
|
53
|
+
3. **Check recent changes** — `git log` on suspected files
|
|
54
|
+
4. **Identify the root cause** — Code bug, Data issue, Race condition, CSS/Layout, or Integration failure
|
|
82
55
|
5. **Update the tracker issue** — Add root cause findings and affected file paths
|
|
83
56
|
|
|
84
57
|
### 4. Implement the Fix
|
|
@@ -91,37 +64,29 @@ All bug fixes are executed via the convoy engine — even single-task fixes —
|
|
|
91
64
|
|
|
92
65
|
#### Convoy Task Prompt Must Include
|
|
93
66
|
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
- **File paths** — Exact files to read and modify
|
|
98
|
-
- **Reproduction steps** — So the agent can verify the fix
|
|
99
|
-
- **Boundaries** — "Only modify files listed above. Fix the bug, do not refactor surrounding code."
|
|
100
|
-
- **Self-improvement reminder** — include per the **self-improvement** skill
|
|
67
|
+
- Tracker issue ID and title, root cause, fix approach, file paths, reproduction steps
|
|
68
|
+
- Boundaries: "Only modify files listed above. Fix the bug, do not refactor surrounding code."
|
|
69
|
+
- Self-improvement reminder (see **self-improvement** skill)
|
|
101
70
|
|
|
102
71
|
#### Implementation Rules
|
|
103
72
|
|
|
104
|
-
- **
|
|
105
|
-
- **
|
|
106
|
-
- **
|
|
107
|
-
- **Add a test** — If no test covers this scenario, add one. Bugs that aren't tested come back
|
|
108
|
-
- **Cross-app awareness** — If the fix is in shared code (`libs/`), verify it works for both apps
|
|
73
|
+
- **Fix cause not symptom** — Minimal change, no refactoring. A CSS `!important` or silent `catch {}` is not a fix
|
|
74
|
+
- **Add a test** — If no test covers this scenario, add one
|
|
75
|
+
- **Cross-app awareness** — If the fix is in `libs/`, verify it works in all consuming apps
|
|
109
76
|
|
|
110
77
|
### 5. Validate
|
|
111
78
|
|
|
112
79
|
> Load the **validation-gates** skill for detailed steps on each gate.
|
|
113
80
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
8. **Gate 8: Regression Testing** — run tests for all projects consuming modified files, browser-test adjacent functionality
|
|
124
|
-
9. **Gate 9: Panel Review** (only if needed) — use **panel-majority-vote** skill if fix touches auth/authorization, RLS, security headers/CSP, or sensitive data
|
|
81
|
+
1. **Secret Scanning** — block if API keys/tokens/passwords found in diff
|
|
82
|
+
2. **Deterministic Checks** — lint, test, build — zero errors (see **codebase-tool** skill)
|
|
83
|
+
3. **Blast Radius** — bug fixes should be ≤100 lines / ≤3 files; escalate if larger
|
|
84
|
+
4. **Dependency Audit** — when `package.json` or lockfiles change
|
|
85
|
+
5. **Fast Review** (MANDATORY) — single reviewer sub-agent
|
|
86
|
+
6. **Bug-Specific Verification** (MANDATORY) — reproduce original bug (should be gone), verify correct behavior, screenshot before/after, check both apps if shared code
|
|
87
|
+
7. **Browser Testing** (for UI bugs) — clear cache, verify fix + responsive + screenshots
|
|
88
|
+
8. **Regression Testing** — run tests for all projects consuming modified files
|
|
89
|
+
9. **Panel Review** — only if fix touches auth/authorization, RLS, security headers, or sensitive data (use **panel-majority-vote** skill)
|
|
125
90
|
|
|
126
91
|
### 6. Delivery
|
|
127
92
|
|
|
@@ -129,10 +94,9 @@ Follow the **Delivery Outcome** defined in the **git-workflow** skill — commit
|
|
|
129
94
|
|
|
130
95
|
### 7. Wrap Up
|
|
131
96
|
|
|
132
|
-
1. **Move tracker
|
|
133
|
-
2. **
|
|
134
|
-
3. **
|
|
135
|
-
4. **Note prevention** — If this class of bug could be caught earlier (by a lint rule, test, or type check), note that in the tracker issue as a follow-up suggestion
|
|
97
|
+
1. **Close out** — Move tracker to Done; remove or update any `.opencastle/KNOWN-ISSUES.md` entry if applicable
|
|
98
|
+
2. **Capture lessons** — Use the **self-improvement** skill if the root cause reveals a pattern others should know
|
|
99
|
+
3. **Note prevention** — If the bug class could be caught earlier, note it in the tracker as a follow-up
|
|
136
100
|
|
|
137
101
|
### 8. Completion Criteria
|
|
138
102
|
|
|
@@ -142,9 +106,7 @@ The bug fix is complete when:
|
|
|
142
106
|
- [ ] Tracker issue created with full details
|
|
143
107
|
- [ ] Fix implemented with minimal change
|
|
144
108
|
- [ ] Test added covering the bug scenario
|
|
145
|
-
- [ ] Lint, test, and build pass for all affected projects
|
|
146
109
|
- [ ] Bug verified fixed in the browser
|
|
147
|
-
- [ ] No regressions in adjacent functionality
|
|
148
110
|
- [ ] Both apps checked if shared code was modified
|
|
149
111
|
- [ ] Delivery Outcome completed (see the **git-workflow** skill) — branch pushed, PR opened (not merged), tracker linked
|
|
150
112
|
- [ ] Tracker issue moved to Done
|