opencastle 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +30 -3
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +27 -3
- package/dist/cli/adapters/cursor.js.map +1 -1
- package/dist/cli/adapters/opencode.d.ts +20 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +265 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/vscode.d.ts.map +1 -1
- package/dist/cli/adapters/vscode.js +37 -6
- package/dist/cli/adapters/vscode.js.map +1 -1
- package/dist/cli/copy.d.ts +12 -0
- package/dist/cli/copy.d.ts.map +1 -1
- package/dist/cli/copy.js +27 -0
- package/dist/cli/copy.js.map +1 -1
- package/dist/cli/detect.d.ts +1 -1
- package/dist/cli/detect.js +21 -15
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +143 -94
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -6
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +104 -33
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/prompt.d.ts +19 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +143 -0
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/stack-config.d.ts +23 -0
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +128 -124
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +26 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +26 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +60 -19
- package/dist/cli/update.js.map +1 -1
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.js +48 -0
- package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
- package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
- package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/convex/config.js +32 -0
- package/dist/orchestrator/plugins/convex/config.js.map +1 -0
- package/dist/orchestrator/plugins/index.d.ts +28 -0
- package/dist/orchestrator/plugins/index.d.ts.map +1 -0
- package/dist/orchestrator/plugins/index.js +63 -0
- package/dist/orchestrator/plugins/index.js.map +1 -0
- package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
- package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/jira/config.js +29 -0
- package/dist/orchestrator/plugins/jira/config.js.map +1 -0
- package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
- package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/linear/config.js +33 -0
- package/dist/orchestrator/plugins/linear/config.js.map +1 -0
- package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
- package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/nx/config.js +28 -0
- package/dist/orchestrator/plugins/nx/config.js.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.js +43 -0
- package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
- package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
- package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/slack/config.js +34 -0
- package/dist/orchestrator/plugins/slack/config.js.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.js +40 -0
- package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.js +33 -0
- package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
- package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
- package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/teams/config.js +43 -0
- package/dist/orchestrator/plugins/teams/config.js.map +1 -0
- package/dist/orchestrator/plugins/types.d.ts +61 -0
- package/dist/orchestrator/plugins/types.d.ts.map +1 -0
- package/dist/orchestrator/plugins/types.js +2 -0
- package/dist/orchestrator/plugins/types.js.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.js +32 -0
- package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/adapters/claude-code.ts +36 -4
- package/src/cli/adapters/cursor.ts +42 -4
- package/src/cli/adapters/opencode.ts +320 -0
- package/src/cli/adapters/vscode.ts +40 -8
- package/src/cli/copy.ts +32 -0
- package/src/cli/detect.ts +17 -17
- package/src/cli/init.ts +157 -99
- package/src/cli/manifest.ts +2 -1
- package/src/cli/mcp.ts +129 -50
- package/src/cli/prompt.ts +176 -0
- package/src/cli/stack-config.ts +174 -145
- package/src/cli/types.ts +39 -8
- package/src/cli/update.ts +71 -20
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/orchestrator/agent-workflows/README.md +1 -1
- package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
- package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
- package/src/orchestrator/agent-workflows/database-migration.md +11 -11
- package/src/orchestrator/agent-workflows/feature-implementation.md +19 -12
- package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
- package/src/orchestrator/agent-workflows/refactoring.md +10 -10
- package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
- package/src/orchestrator/agent-workflows/security-audit.md +12 -12
- package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
- package/src/orchestrator/agents/api-designer.agent.md +1 -1
- package/src/orchestrator/agents/architect.agent.md +2 -2
- package/src/orchestrator/agents/content-engineer.agent.md +3 -3
- package/src/orchestrator/agents/copywriter.agent.md +2 -2
- package/src/orchestrator/agents/data-expert.agent.md +6 -6
- package/src/orchestrator/agents/database-engineer.agent.md +3 -3
- package/src/orchestrator/agents/developer.agent.md +4 -4
- package/src/orchestrator/agents/devops-expert.agent.md +5 -5
- package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
- package/src/orchestrator/agents/performance-expert.agent.md +2 -2
- package/src/orchestrator/agents/release-manager.agent.md +4 -4
- package/src/orchestrator/agents/researcher.agent.md +3 -3
- package/src/orchestrator/agents/reviewer.agent.md +1 -1
- package/src/orchestrator/agents/security-expert.agent.md +4 -4
- package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
- package/src/orchestrator/agents/team-lead.agent.md +56 -38
- package/src/orchestrator/agents/testing-expert.agent.md +5 -5
- package/src/orchestrator/agents/ui-ux-expert.agent.md +6 -6
- package/src/orchestrator/copilot-instructions.md +1 -1
- package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
- package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
- package/src/orchestrator/customizations/DISPUTES.md +5 -5
- package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
- package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
- package/src/orchestrator/customizations/README.md +5 -2
- package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
- package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
- package/src/orchestrator/customizations/logs/README.md +1 -1
- package/src/orchestrator/customizations/project/decisions.md +31 -0
- package/src/orchestrator/customizations/project/docs-structure.md +16 -5
- package/src/orchestrator/customizations/project/roadmap.md +24 -0
- package/src/orchestrator/customizations/project/tracker-config.md +1 -1
- package/src/orchestrator/customizations/stack/cms-config.md +1 -1
- package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
- package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
- package/src/orchestrator/instructions/general.instructions.md +102 -40
- package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
- package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
- package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
- package/src/orchestrator/plugins/contentful/config.ts +49 -0
- package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
- package/src/orchestrator/plugins/convex/config.ts +33 -0
- package/src/orchestrator/plugins/index.ts +85 -0
- package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
- package/src/orchestrator/plugins/jira/config.ts +30 -0
- package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
- package/src/orchestrator/plugins/linear/config.ts +34 -0
- package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
- package/src/orchestrator/plugins/nx/config.ts +29 -0
- package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
- package/src/orchestrator/plugins/sanity/config.ts +44 -0
- package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
- package/src/orchestrator/plugins/slack/config.ts +35 -0
- package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
- package/src/orchestrator/plugins/strapi/config.ts +41 -0
- package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
- package/src/orchestrator/plugins/supabase/config.ts +34 -0
- package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
- package/src/orchestrator/plugins/teams/config.ts +44 -0
- package/src/orchestrator/plugins/types.ts +79 -0
- package/src/orchestrator/plugins/vercel/config.ts +33 -0
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +8 -8
- package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
- package/src/orchestrator/prompts/bug-fix.prompt.md +27 -22
- package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
- package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
- package/src/orchestrator/prompts/implement-feature.prompt.md +34 -29
- package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
- package/src/orchestrator/prompts/quick-refinement.prompt.md +23 -19
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +19 -5
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
- package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
- package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/SKILL.md +4 -4
- package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
- package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/fast-review/SKILL.md +18 -7
- package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
- package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
- package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
- package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
- package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
- package/src/orchestrator/skills/react-development/SKILL.md +3 -3
- package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
- package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
- package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
- package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
- package/src/orchestrator/skills/validation-gates/SKILL.md +157 -27
- package/src/orchestrator/mcp.json +0 -69
|
@@ -3,11 +3,11 @@ name: jira-management
|
|
|
3
3
|
description: "Jira board conventions for tracking feature work — issue naming, labels, priorities, status workflow, and session continuity via Atlassian Rovo MCP. Use when decomposing features into tasks or resuming interrupted sessions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Task Management with Jira
|
|
9
9
|
|
|
10
|
-
Conventions for tracking feature work on Jira via the Atlassian Rovo MCP server. For project-specific project keys, workflow state IDs, and board configuration, see [
|
|
10
|
+
Conventions for tracking feature work on Jira via the Atlassian Rovo MCP server. For project-specific project keys, workflow state IDs, and board configuration, see [tracker-config.md](../../customizations/project/tracker-config.md).
|
|
11
11
|
|
|
12
12
|
## Atlassian Rovo MCP Server
|
|
13
13
|
|
|
@@ -167,4 +167,4 @@ project = PROJ AND sprint in openSprints() ORDER BY priority DESC
|
|
|
167
167
|
project = PROJ AND priority = Highest AND status != Done
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
Replace `PROJ` with the actual project key from [
|
|
170
|
+
Replace `PROJ` with the actual project key from [tracker-config.md](../../customizations/project/tracker-config.md).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'jira',
|
|
5
|
+
name: 'Jira',
|
|
6
|
+
category: 'team',
|
|
7
|
+
subCategory: 'tracker',
|
|
8
|
+
label: 'Jira',
|
|
9
|
+
hint: 'Atlassian issue tracking via Rovo MCP',
|
|
10
|
+
skillName: 'jira-management',
|
|
11
|
+
mcpServerKey: 'Jira',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'http',
|
|
14
|
+
url: 'https://mcp.atlassian.com/v1/mcp',
|
|
15
|
+
},
|
|
16
|
+
authType: 'oauth',
|
|
17
|
+
envVars: [],
|
|
18
|
+
agentToolMap: {
|
|
19
|
+
'team-lead': [
|
|
20
|
+
'Jira/searchJiraIssuesUsingJql', 'Jira/getJiraIssue', 'Jira/createJiraIssue',
|
|
21
|
+
'Jira/addCommentToJiraIssue', 'Jira/getJiraProjectIssueTypesMetadata',
|
|
22
|
+
'Jira/getJiraIssueTypeMetaWithFields', 'Jira/search',
|
|
23
|
+
'Jira/getConfluencePage', 'Jira/searchConfluenceUsingCql',
|
|
24
|
+
'Jira/getAccessibleAtlassianResources',
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
docsUrl: null,
|
|
28
|
+
officialDocs: 'https://developer.atlassian.com/cloud/jira/platform/',
|
|
29
|
+
mcpPackage: null,
|
|
30
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: task-management
|
|
2
|
+
name: linear-task-management
|
|
3
3
|
description: "Linear board conventions for tracking feature work — issue naming, labels, priorities, status workflow, and session continuity. Use when decomposing features into tasks or resuming interrupted sessions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Task Management with Linear
|
|
9
9
|
|
|
10
|
-
Conventions for tracking feature work on the Linear board via MCP tools. For project-specific team ID, workflow state UUIDs, and label UUIDs, see [
|
|
10
|
+
Conventions for tracking feature work on the Linear board via MCP tools. For project-specific team ID, workflow state UUIDs, and label UUIDs, see [tracker-config.md](../../customizations/project/tracker-config.md).
|
|
11
11
|
|
|
12
12
|
## Discovered Issues (Bug Tickets)
|
|
13
13
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'linear',
|
|
5
|
+
name: 'Linear',
|
|
6
|
+
category: 'team',
|
|
7
|
+
subCategory: 'tracker',
|
|
8
|
+
label: 'Linear',
|
|
9
|
+
hint: 'Issue tracking with MCP integration',
|
|
10
|
+
skillName: 'linear-task-management',
|
|
11
|
+
mcpServerKey: 'Linear',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', '@mseep/linear-mcp'],
|
|
16
|
+
envFile: '${workspaceFolder}/.env',
|
|
17
|
+
},
|
|
18
|
+
authType: 'env-token',
|
|
19
|
+
envVars: [
|
|
20
|
+
{
|
|
21
|
+
name: 'LINEAR_API_KEY',
|
|
22
|
+
hint: 'Create at linear.app → Settings → API → Personal API keys',
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
agentToolMap: {
|
|
26
|
+
'team-lead': [
|
|
27
|
+
'linear/create_issue', 'linear/list_issues', 'linear/update_issue',
|
|
28
|
+
'linear/list_teams', 'linear/list_projects', 'linear/get_issue', 'linear/search_issues',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
docsUrl: '/guides/linear-setup',
|
|
32
|
+
officialDocs: 'https://linear.app/docs',
|
|
33
|
+
mcpPackage: '@mseep/linear-mcp',
|
|
34
|
+
};
|
|
@@ -3,7 +3,7 @@ name: nx-workspace
|
|
|
3
3
|
description: "NX monorepo commands, conventions, code generation, and task running patterns. Use when running builds, tests, linting, code generation, or any development commands."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# NX Workspace
|
|
9
9
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'nx',
|
|
5
|
+
name: 'NX',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'monorepo',
|
|
8
|
+
label: 'NX',
|
|
9
|
+
hint: 'Monorepo build system',
|
|
10
|
+
skillName: 'nx-workspace',
|
|
11
|
+
mcpServerKey: 'Nx',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['nx', 'mcp'],
|
|
16
|
+
},
|
|
17
|
+
authType: 'none',
|
|
18
|
+
envVars: [],
|
|
19
|
+
agentToolMap: {
|
|
20
|
+
'architect': ['nx-mcp-server/nx_workspace', 'nx-mcp-server/nx_project_details', 'nx-mcp-server/nx_visualize_graph'],
|
|
21
|
+
'developer': ['nx-mcp-server/nx_project_details', 'nx-mcp-server/nx_workspace', 'nx-mcp-server/nx_generators'],
|
|
22
|
+
'devops-expert': ['nx-mcp-server/nx_project_details', 'nx-mcp-server/nx_workspace', 'nx-mcp-server/nx_workspace_path'],
|
|
23
|
+
'performance-expert': ['nx-mcp-server/nx_project_details', 'nx-mcp-server/nx_workspace'],
|
|
24
|
+
'release-manager': ['nx-mcp-server/nx_project_details', 'nx-mcp-server/nx_workspace', 'nx-mcp-server/nx_workspace_path'],
|
|
25
|
+
},
|
|
26
|
+
docsUrl: null,
|
|
27
|
+
officialDocs: 'https://nx.dev/getting-started/intro',
|
|
28
|
+
mcpPackage: null,
|
|
29
|
+
};
|
|
@@ -3,7 +3,7 @@ name: sanity-cms
|
|
|
3
3
|
description: "Sanity CMS development rules, GROQ query patterns, and content management best practices. Use when working with Sanity schemas, writing GROQ queries, modifying content models, or managing CMS configuration."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Sanity CMS
|
|
9
9
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'sanity',
|
|
5
|
+
name: 'Sanity',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'cms',
|
|
8
|
+
label: 'Sanity',
|
|
9
|
+
hint: 'GROQ queries, real-time collaboration',
|
|
10
|
+
skillName: 'sanity-cms',
|
|
11
|
+
mcpServerKey: 'Sanity',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'http',
|
|
14
|
+
url: 'https://mcp.sanity.io',
|
|
15
|
+
},
|
|
16
|
+
authType: 'oauth',
|
|
17
|
+
envVars: [],
|
|
18
|
+
agentToolMap: {
|
|
19
|
+
'content-engineer': [
|
|
20
|
+
'sanity/get_schema', 'sanity/get_sanity_rules', 'sanity/list_sanity_rules',
|
|
21
|
+
'sanity/query_documents', 'sanity/get_document', 'sanity/create_documents_from_json',
|
|
22
|
+
'sanity/create_documents_from_markdown', 'sanity/patch_document_from_json',
|
|
23
|
+
'sanity/patch_document_from_markdown', 'sanity/deploy_schema', 'sanity/publish_documents',
|
|
24
|
+
'sanity/unpublish_documents', 'sanity/discard_drafts', 'sanity/list_projects',
|
|
25
|
+
'sanity/list_datasets', 'sanity/list_workspace_schemas', 'sanity/list_embeddings_indices',
|
|
26
|
+
'sanity/search_docs', 'sanity/read_docs', 'sanity/semantic_search',
|
|
27
|
+
'sanity/migration_guide', 'sanity/create_version', 'sanity/generate_image',
|
|
28
|
+
'sanity/transform_image', 'sanity/add_cors_origin',
|
|
29
|
+
],
|
|
30
|
+
'copywriter': [
|
|
31
|
+
'sanity/get_schema', 'sanity/query_documents', 'sanity/get_document',
|
|
32
|
+
'sanity/patch_document_from_json', 'sanity/patch_document_from_markdown',
|
|
33
|
+
'sanity/list_datasets', 'sanity/list_projects',
|
|
34
|
+
],
|
|
35
|
+
'data-expert': [
|
|
36
|
+
'sanity/get_schema', 'sanity/query_documents', 'sanity/create_documents_from_json',
|
|
37
|
+
'sanity/patch_document_from_json', 'sanity/get_document', 'sanity/list_datasets',
|
|
38
|
+
'sanity/list_projects',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
docsUrl: null,
|
|
42
|
+
officialDocs: 'https://www.sanity.io/docs',
|
|
43
|
+
mcpPackage: null,
|
|
44
|
+
};
|
|
@@ -3,7 +3,7 @@ name: slack-notifications
|
|
|
3
3
|
description: "Slack MCP integration for agent-to-human notifications and bi-directional communication. Use when agents need to post progress updates, request approvals, or read user responses via Slack channels and threads."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Slack Notifications
|
|
9
9
|
|
|
@@ -232,7 +232,7 @@ Project-specific channel mappings are defined in `.github/customizations/stack/n
|
|
|
232
232
|
|
|
233
233
|
- **Always thread replies** — never post top-level messages for follow-ups
|
|
234
234
|
- **One thread per task** — keep all updates for a single task in one thread
|
|
235
|
-
- **Include task ID** — every message references the
|
|
235
|
+
- **Include task ID** — every message references the tracker issue ID
|
|
236
236
|
- **Pin important threads** — pin approval requests and blocking issues
|
|
237
237
|
|
|
238
238
|
## Message Formatting
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'slack',
|
|
5
|
+
name: 'Slack',
|
|
6
|
+
category: 'team',
|
|
7
|
+
subCategory: 'notifications',
|
|
8
|
+
label: 'Slack',
|
|
9
|
+
hint: 'Agent notifications and communication',
|
|
10
|
+
skillName: 'slack-notifications',
|
|
11
|
+
mcpServerKey: 'Slack',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', '@kazuph/mcp-slack'],
|
|
16
|
+
envFile: '${workspaceFolder}/.env',
|
|
17
|
+
env: {
|
|
18
|
+
SLACK_MCP_ADD_MESSAGE_TOOL: 'true',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
authType: 'env-token',
|
|
22
|
+
envVars: [
|
|
23
|
+
{
|
|
24
|
+
name: 'SLACK_MCP_XOXB_TOKEN',
|
|
25
|
+
hint: 'Create a Slack App at api.slack.com/apps → Bot User OAuth Token',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
agentToolMap: {
|
|
29
|
+
'team-lead': ['slack/*'],
|
|
30
|
+
'release-manager': ['slack/*'],
|
|
31
|
+
},
|
|
32
|
+
docsUrl: '/guides/plugins#slack',
|
|
33
|
+
officialDocs: 'https://api.slack.com/docs',
|
|
34
|
+
mcpPackage: '@kazuph/mcp-slack',
|
|
35
|
+
};
|
|
@@ -3,7 +3,7 @@ name: strapi-cms
|
|
|
3
3
|
description: "Strapi CMS development patterns, REST/GraphQL API usage, content type building, plugin development, and deployment best practices. Use when working with Strapi content types, controllers, services, or plugins."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Strapi CMS
|
|
9
9
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'strapi',
|
|
5
|
+
name: 'Strapi',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'cms',
|
|
8
|
+
label: 'Strapi',
|
|
9
|
+
hint: 'Open-source headless CMS',
|
|
10
|
+
skillName: 'strapi-cms',
|
|
11
|
+
mcpServerKey: 'Strapi',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', 'strapi-mcp'],
|
|
16
|
+
},
|
|
17
|
+
authType: 'none',
|
|
18
|
+
envVars: [],
|
|
19
|
+
agentToolMap: {
|
|
20
|
+
'content-engineer': [
|
|
21
|
+
'strapi/list_content_types', 'strapi/get_content_type_schema', 'strapi/get_entries',
|
|
22
|
+
'strapi/get_entry', 'strapi/create_entry', 'strapi/update_entry', 'strapi/delete_entry',
|
|
23
|
+
'strapi/publish_entry', 'strapi/unpublish_entry', 'strapi/upload_media',
|
|
24
|
+
'strapi/upload_media_from_path', 'strapi/connect_relation', 'strapi/disconnect_relation',
|
|
25
|
+
'strapi/create_content_type', 'strapi/update_content_type', 'strapi/delete_content_type',
|
|
26
|
+
'strapi/list_components', 'strapi/get_component_schema', 'strapi/create_component',
|
|
27
|
+
'strapi/update_component',
|
|
28
|
+
],
|
|
29
|
+
'copywriter': [
|
|
30
|
+
'strapi/list_content_types', 'strapi/get_content_type_schema', 'strapi/get_entries',
|
|
31
|
+
'strapi/get_entry', 'strapi/update_entry', 'strapi/publish_entry',
|
|
32
|
+
],
|
|
33
|
+
'data-expert': [
|
|
34
|
+
'strapi/list_content_types', 'strapi/get_content_type_schema', 'strapi/get_entries',
|
|
35
|
+
'strapi/get_entry', 'strapi/create_entry', 'strapi/update_entry',
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
docsUrl: null,
|
|
39
|
+
officialDocs: 'https://docs.strapi.io/',
|
|
40
|
+
mcpPackage: 'strapi-mcp',
|
|
41
|
+
};
|
|
@@ -3,7 +3,7 @@ name: supabase-database
|
|
|
3
3
|
description: "Supabase database migration rules, RLS policy patterns, and auth integration best practices. Use when designing database tables, writing migrations, configuring RLS policies, implementing auth, or managing user roles."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Supabase Database
|
|
9
9
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'supabase',
|
|
5
|
+
name: 'Supabase',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'database',
|
|
8
|
+
label: 'Supabase',
|
|
9
|
+
hint: 'Postgres + Auth + RLS + Edge Functions',
|
|
10
|
+
skillName: 'supabase-database',
|
|
11
|
+
mcpServerKey: 'Supabase',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'http',
|
|
14
|
+
url: 'https://mcp.supabase.com/mcp',
|
|
15
|
+
},
|
|
16
|
+
authType: 'oauth',
|
|
17
|
+
envVars: [],
|
|
18
|
+
agentToolMap: {
|
|
19
|
+
'database-engineer': [
|
|
20
|
+
'supabase/apply_migration', 'supabase/execute_sql', 'supabase/list_tables',
|
|
21
|
+
'supabase/list_migrations', 'supabase/list_extensions', 'supabase/get_logs',
|
|
22
|
+
'supabase/get_project', 'supabase/get_project_url', 'supabase/list_projects',
|
|
23
|
+
'supabase/search_docs', 'supabase/generate_typescript_types', 'supabase/get_advisors',
|
|
24
|
+
'supabase/create_branch', 'supabase/list_branches',
|
|
25
|
+
],
|
|
26
|
+
'security-expert': [
|
|
27
|
+
'supabase/execute_sql', 'supabase/list_tables', 'supabase/get_advisors',
|
|
28
|
+
'supabase/list_migrations', 'supabase/get_project',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
docsUrl: null,
|
|
32
|
+
officialDocs: 'https://supabase.com/docs',
|
|
33
|
+
mcpPackage: null,
|
|
34
|
+
};
|
|
@@ -3,7 +3,7 @@ name: teams-notifications
|
|
|
3
3
|
description: "Microsoft Teams MCP integration for agent-to-human notifications and bi-directional communication. Use when agents need to post progress updates, request approvals, or read user responses via Teams channels and chats."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Teams Notifications
|
|
9
9
|
|
|
@@ -127,7 +127,7 @@ To check for approvals or instructions:
|
|
|
127
127
|
|
|
128
128
|
- **Always reply in threads** — use message replies, not top-level posts for follow-ups
|
|
129
129
|
- **One thread per task** — keep all updates for a single task in one conversation thread
|
|
130
|
-
- **Include task ID** — every message references the
|
|
130
|
+
- **Include task ID** — every message references the tracker issue ID
|
|
131
131
|
- **Mark important messages** — use importance flags for approval requests
|
|
132
132
|
|
|
133
133
|
### Chat vs Channel
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'teams',
|
|
5
|
+
name: 'Microsoft Teams',
|
|
6
|
+
category: 'team',
|
|
7
|
+
subCategory: 'notifications',
|
|
8
|
+
label: 'Microsoft Teams',
|
|
9
|
+
hint: 'Agent notifications via Teams channels',
|
|
10
|
+
skillName: 'teams-notifications',
|
|
11
|
+
mcpServerKey: 'Teams',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'http',
|
|
14
|
+
url: 'https://agent365.svc.cloud.microsoft/agents/tenants/${input:tenant_id}/servers/mcp_TeamsServer',
|
|
15
|
+
},
|
|
16
|
+
authType: 'oauth',
|
|
17
|
+
envVars: [],
|
|
18
|
+
agentToolMap: {
|
|
19
|
+
'team-lead': [
|
|
20
|
+
'Teams/mcp_graph_chat_createChat', 'Teams/mcp_graph_chat_listChats',
|
|
21
|
+
'Teams/mcp_graph_chat_getChat', 'Teams/mcp_graph_chat_postMessage',
|
|
22
|
+
'Teams/mcp_graph_chat_listChatMessages', 'Teams/mcp_graph_chat_getChatMessage',
|
|
23
|
+
'Teams/mcp_graph_teams_listTeams', 'Teams/mcp_graph_teams_listChannels',
|
|
24
|
+
'Teams/mcp_graph_teams_getChannel', 'Teams/mcp_graph_teams_postChannelMessage',
|
|
25
|
+
'Teams/mcp_graph_teams_replyToChannelMessage', 'Teams/mcp_graph_teams_listChannelMessages',
|
|
26
|
+
],
|
|
27
|
+
'release-manager': [
|
|
28
|
+
'Teams/mcp_graph_chat_postMessage', 'Teams/mcp_graph_chat_listChats',
|
|
29
|
+
'Teams/mcp_graph_teams_listTeams', 'Teams/mcp_graph_teams_listChannels',
|
|
30
|
+
'Teams/mcp_graph_teams_postChannelMessage', 'Teams/mcp_graph_teams_replyToChannelMessage',
|
|
31
|
+
'Teams/mcp_graph_teams_listChannelMessages',
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
docsUrl: null,
|
|
35
|
+
officialDocs: 'https://learn.microsoft.com/en-us/microsoftteams/',
|
|
36
|
+
mcpPackage: null,
|
|
37
|
+
mcpInputs: [
|
|
38
|
+
{
|
|
39
|
+
id: 'tenant_id',
|
|
40
|
+
type: 'promptString',
|
|
41
|
+
description: 'Microsoft Entra tenant ID (GUID)',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for a tool plugin.
|
|
3
|
+
* Single source of truth for tool metadata used by init, adapters, and agents.
|
|
4
|
+
*/
|
|
5
|
+
export interface PluginConfig {
|
|
6
|
+
/** Unique ID matching TechTool | TeamTool union type */
|
|
7
|
+
id: string;
|
|
8
|
+
|
|
9
|
+
/** Human-readable display name */
|
|
10
|
+
name: string;
|
|
11
|
+
|
|
12
|
+
/** Plugin category */
|
|
13
|
+
category: 'tech' | 'team';
|
|
14
|
+
|
|
15
|
+
/** Sub-category for grouping */
|
|
16
|
+
subCategory: 'cms' | 'database' | 'deployment' | 'monorepo' | 'tracker' | 'notifications' | 'testing';
|
|
17
|
+
|
|
18
|
+
/** Label shown in the `npx opencastle init` multiselect */
|
|
19
|
+
label: string;
|
|
20
|
+
|
|
21
|
+
/** Hint shown next to the label in multiselect */
|
|
22
|
+
hint: string;
|
|
23
|
+
|
|
24
|
+
/** Skill directory name (matches the old skills/ dirname). null if no skill. */
|
|
25
|
+
skillName: string | null;
|
|
26
|
+
|
|
27
|
+
/** MCP server key used in the generated MCP config. null if no MCP server. */
|
|
28
|
+
mcpServerKey: string | null;
|
|
29
|
+
|
|
30
|
+
/** Raw MCP server config */
|
|
31
|
+
mcpConfig: McpServerConfig;
|
|
32
|
+
|
|
33
|
+
/** Authentication type */
|
|
34
|
+
authType: 'oauth' | 'env-token' | 'none';
|
|
35
|
+
|
|
36
|
+
/** Required environment variables for this plugin */
|
|
37
|
+
envVars: EnvVarRequirement[];
|
|
38
|
+
|
|
39
|
+
/** Tools to inject into specific agent definitions when this plugin is selected.
|
|
40
|
+
* Key = agent name (e.g. 'content-engineer'), Value = tool names to append. */
|
|
41
|
+
agentToolMap?: Record<string, string[]>;
|
|
42
|
+
|
|
43
|
+
/** URL to setup guide on opencastle.dev (null if none) */
|
|
44
|
+
docsUrl: string | null;
|
|
45
|
+
|
|
46
|
+
/** Official product documentation URL */
|
|
47
|
+
officialDocs: string;
|
|
48
|
+
|
|
49
|
+
/** NPM package for the MCP server (null for HTTP/OAuth servers) */
|
|
50
|
+
mcpPackage: string | null;
|
|
51
|
+
|
|
52
|
+
/** Whether this plugin should be preselected in the init prompt */
|
|
53
|
+
preselected?: boolean;
|
|
54
|
+
|
|
55
|
+
/** VS Code input prompts required by this plugin's MCP config (e.g. tenant ID) */
|
|
56
|
+
mcpInputs?: McpInput[];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface McpInput {
|
|
60
|
+
id: string;
|
|
61
|
+
type: 'promptString';
|
|
62
|
+
description: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface McpServerConfig {
|
|
66
|
+
type: 'stdio' | 'http';
|
|
67
|
+
command?: string;
|
|
68
|
+
args?: string[];
|
|
69
|
+
url?: string;
|
|
70
|
+
env?: Record<string, string>;
|
|
71
|
+
envFile?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface EnvVarRequirement {
|
|
75
|
+
/** Environment variable name */
|
|
76
|
+
name: string;
|
|
77
|
+
/** Short description of where to get the value */
|
|
78
|
+
hint: string;
|
|
79
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'vercel',
|
|
5
|
+
name: 'Vercel',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'deployment',
|
|
8
|
+
label: 'Vercel',
|
|
9
|
+
hint: 'Deployment and hosting platform',
|
|
10
|
+
skillName: null,
|
|
11
|
+
mcpServerKey: 'Vercel',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'http',
|
|
14
|
+
url: 'https://mcp.vercel.com',
|
|
15
|
+
},
|
|
16
|
+
authType: 'oauth',
|
|
17
|
+
envVars: [],
|
|
18
|
+
agentToolMap: {
|
|
19
|
+
'devops-expert': [
|
|
20
|
+
'vercel/deploy_to_vercel', 'vercel/get_deployment', 'vercel/get_deployment_build_logs',
|
|
21
|
+
'vercel/get_project', 'vercel/get_runtime_logs', 'vercel/list_deployments',
|
|
22
|
+
'vercel/list_projects', 'vercel/list_teams', 'vercel/search_vercel_documentation',
|
|
23
|
+
'vercel/check_domain_availability_and_price',
|
|
24
|
+
],
|
|
25
|
+
'release-manager': [
|
|
26
|
+
'vercel/get_deployment', 'vercel/get_deployment_build_logs',
|
|
27
|
+
'vercel/get_runtime_logs', 'vercel/list_deployments', 'vercel/list_projects',
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
docsUrl: null,
|
|
31
|
+
officialDocs: 'https://vercel.com/docs',
|
|
32
|
+
mcpPackage: null,
|
|
33
|
+
};
|
|
@@ -3,7 +3,7 @@ description: 'Bootstrap the .github/customizations/ directory for a new project.
|
|
|
3
3
|
agent: Researcher
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Bootstrap Project Customizations
|
|
9
9
|
|
|
@@ -69,7 +69,7 @@ The result is a single unified view of the project's tech stack:
|
|
|
69
69
|
|
|
70
70
|
**Still verify:** `repoInfo` detects presence, not configuration details. You still need to read the actual config files for schemas, IDs, routes, etc.
|
|
71
71
|
|
|
72
|
-
The skill matrix (
|
|
72
|
+
The skill matrix (`.github/customizations/agents/skill-matrix.md`) will already have the `cms` and `database` rows pre-filled based on this selection. The appropriate task management skill (`linear-task-management` for Linear, `jira-management` for Jira) and notifications skill (`slack-notifications` for Slack, `teams-notifications` for Teams) will already be installed. Verify they are correct and fill in any remaining empty rows.
|
|
73
73
|
|
|
74
74
|
## Workflow
|
|
75
75
|
|
|
@@ -112,7 +112,7 @@ For each detected technology, dig into the config:
|
|
|
112
112
|
- **API**: Find route handlers, Server Actions, middleware, external API integrations
|
|
113
113
|
- **Deployment**: Read deploy config, environment variables, cron jobs, security headers
|
|
114
114
|
- **Testing**: Find test config, test suites, test utilities, coverage setup
|
|
115
|
-
- **Docs**: Map the
|
|
115
|
+
- **Docs**: Map the project's documentation directory tree (if it exists)
|
|
116
116
|
- **Task tracking**: Find team IDs, project IDs, workflow states (check Linear/Jira config or docs)
|
|
117
117
|
|
|
118
118
|
### Phase 2: Generate Customization Files
|
|
@@ -122,7 +122,7 @@ Create `.github/customizations/` and generate files based on what you discovered
|
|
|
122
122
|
Files are organized into subdirectories by domain:
|
|
123
123
|
|
|
124
124
|
```
|
|
125
|
-
customizations/
|
|
125
|
+
.github/customizations/
|
|
126
126
|
├── README.md # Directory index
|
|
127
127
|
├── project.instructions.md # High-level project context
|
|
128
128
|
├── LESSONS-LEARNED.md # Knowledge base (retries, workarounds)
|
|
@@ -226,7 +226,7 @@ customizations/
|
|
|
226
226
|
|
|
227
227
|
#### `project/` — Project Management Config
|
|
228
228
|
|
|
229
|
-
14. **`project/docs-structure.md`** — If a
|
|
229
|
+
14. **`project/docs-structure.md`** — If a documentation directory exists:
|
|
230
230
|
- Full directory tree
|
|
231
231
|
- Purpose of each document
|
|
232
232
|
- Documentation conventions
|
|
@@ -259,7 +259,7 @@ For each file created, report:
|
|
|
259
259
|
- Number of lines
|
|
260
260
|
- Key sections included
|
|
261
261
|
|
|
262
|
-
End with a summary of what was discovered, what was generated, and what (if anything) needs manual input (e.g.,
|
|
262
|
+
End with a summary of what was discovered, what was generated, and what (if anything) needs manual input (e.g., tracker team IDs that require API access to discover).
|
|
263
263
|
|
|
264
264
|
After your summary, suggest next steps:
|
|
265
265
|
|
|
@@ -267,10 +267,10 @@ After your summary, suggest next steps:
|
|
|
267
267
|
|
|
268
268
|
Now that your project is configured, here's what you can do:
|
|
269
269
|
|
|
270
|
-
1. **Review the generated files** — Scan
|
|
270
|
+
1. **Review the generated files** — Scan `.github/customizations/` for any `<!-- TODO: verify -->` comments and fill in missing values (e.g., tracker team IDs, Supabase project IDs)
|
|
271
271
|
2. **Commit the customizations** — `git add .github/customizations/ && git commit -m "chore: bootstrap OpenCastle customizations"`
|
|
272
272
|
3. **Implement a feature** — Use the **"Implement Feature"** prompt to have the Team Lead orchestrate a full feature build with task tracking, delegation, and verification
|
|
273
|
-
4. **Fix a bug** — Use the **"Bug Fix"** prompt for structured triage, root cause analysis, and fix with
|
|
273
|
+
4. **Fix a bug** — Use the **"Bug Fix"** prompt for structured triage, root cause analysis, and fix with tracker tracking
|
|
274
274
|
5. **Brainstorm first** — Not sure how to approach something? Use the **"Brainstorm"** prompt to explore requirements and trade-offs before committing to a plan
|
|
275
275
|
6. **Create a task spec** — Use the **"Generate Task Spec"** prompt to create `opencastle.tasks.yml` for autonomous overnight runs with `npx opencastle run` CLI command.
|
|
276
276
|
|
|
@@ -3,7 +3,7 @@ description: 'Collaborative brainstorm to explore requirements, approaches, and
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Brainstorm
|
|
9
9
|
|
|
@@ -35,7 +35,7 @@ Before exploring solutions, make sure the problem is well-understood:
|
|
|
35
35
|
Research before proposing. Gather data, don't guess:
|
|
36
36
|
|
|
37
37
|
1. **Search existing code** — is there already a partial implementation, similar pattern, or relevant utility?
|
|
38
|
-
2. **Check documentation** — read
|
|
38
|
+
2. **Check documentation** — read `.github/customizations/project.instructions.md`, `.github/customizations/project/decisions.md`, `.github/customizations/KNOWN-ISSUES.md` for constraints
|
|
39
39
|
3. **Check lessons learned** — read `.github/customizations/LESSONS-LEARNED.md` for pitfalls in this area
|
|
40
40
|
4. **Identify affected layers** — which apps, libs, data stores, and third-party services are involved?
|
|
41
41
|
|
|
@@ -114,4 +114,4 @@ Once the brainstorm is complete and the user confirms (or you're confident in th
|
|
|
114
114
|
|
|
115
115
|
1. **Transition to planning** — use the brainstorm report as input for `implement-feature` or the appropriate workflow
|
|
116
116
|
2. **Preserve context** — include the brainstorm report in delegation prompts so agents understand *why* an approach was chosen
|
|
117
|
-
3. **Reference in
|
|
117
|
+
3. **Reference in tracker** — link the brainstorm findings in the tracker issue description
|