opencastle 0.5.1 → 0.7.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 +5 -4
- package/dist/cli/adapters/claude-code.d.ts +2 -2
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +31 -4
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts +2 -2
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +28 -4
- 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 +2 -2
- package/dist/cli/adapters/vscode.d.ts.map +1 -1
- package/dist/cli/adapters/vscode.js +38 -7
- 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 +18 -0
- package/dist/cli/detect.d.ts.map +1 -0
- package/dist/cli/detect.js +434 -0
- package/dist/cli/detect.js.map +1 -0
- package/dist/cli/gitignore.d.ts.map +1 -1
- package/dist/cli/gitignore.js +0 -2
- package/dist/cli/gitignore.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +154 -91
- 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 +105 -34
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/prompt.d.ts +22 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +239 -0
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/stack-config.d.ts +26 -3
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +140 -125
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +46 -10
- 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 +66 -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 +40 -6
- package/src/cli/adapters/cursor.ts +46 -6
- package/src/cli/adapters/opencode.ts +320 -0
- package/src/cli/adapters/vscode.ts +43 -9
- package/src/cli/copy.ts +32 -0
- package/src/cli/detect.ts +483 -0
- package/src/cli/gitignore.ts +0 -3
- package/src/cli/init.ts +169 -96
- package/src/cli/manifest.ts +2 -1
- package/src/cli/mcp.ts +131 -51
- package/src/cli/prompt.ts +299 -0
- package/src/cli/stack-config.ts +187 -145
- package/src/cli/types.ts +60 -9
- package/src/cli/update.ts +78 -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 +10 -10
- 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 +2 -2
- package/src/orchestrator/agents/architect.agent.md +2 -2
- package/src/orchestrator/agents/content-engineer.agent.md +4 -4
- 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 +4 -4
- package/src/orchestrator/agents/developer.agent.md +5 -5
- 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 +3 -3
- package/src/orchestrator/agents/release-manager.agent.md +4 -4
- package/src/orchestrator/agents/researcher.agent.md +19 -3
- package/src/orchestrator/agents/reviewer.agent.md +2 -4
- 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 +97 -101
- package/src/orchestrator/agents/testing-expert.agent.md +5 -5
- package/src/orchestrator/agents/ui-ux-expert.agent.md +7 -7
- 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 +59 -12
- package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
- package/src/orchestrator/prompts/bug-fix.prompt.md +18 -18
- 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 +26 -26
- package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
- package/src/orchestrator/prompts/quick-refinement.prompt.md +16 -16
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +2 -2
- 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 +3 -3
- 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 +8 -15
- package/src/orchestrator/mcp.json +0 -61
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
id: 'supabase',
|
|
3
|
+
name: 'Supabase',
|
|
4
|
+
category: 'tech',
|
|
5
|
+
subCategory: 'database',
|
|
6
|
+
label: 'Supabase',
|
|
7
|
+
hint: 'Postgres + Auth + RLS + Edge Functions',
|
|
8
|
+
skillName: 'supabase-database',
|
|
9
|
+
mcpServerKey: 'Supabase',
|
|
10
|
+
mcpConfig: {
|
|
11
|
+
type: 'http',
|
|
12
|
+
url: 'https://mcp.supabase.com/mcp',
|
|
13
|
+
},
|
|
14
|
+
authType: 'oauth',
|
|
15
|
+
envVars: [],
|
|
16
|
+
agentToolMap: {
|
|
17
|
+
'database-engineer': [
|
|
18
|
+
'supabase/apply_migration', 'supabase/execute_sql', 'supabase/list_tables',
|
|
19
|
+
'supabase/list_migrations', 'supabase/list_extensions', 'supabase/get_logs',
|
|
20
|
+
'supabase/get_project', 'supabase/get_project_url', 'supabase/list_projects',
|
|
21
|
+
'supabase/search_docs', 'supabase/generate_typescript_types', 'supabase/get_advisors',
|
|
22
|
+
'supabase/create_branch', 'supabase/list_branches',
|
|
23
|
+
],
|
|
24
|
+
'security-expert': [
|
|
25
|
+
'supabase/execute_sql', 'supabase/list_tables', 'supabase/get_advisors',
|
|
26
|
+
'supabase/list_migrations', 'supabase/get_project',
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
docsUrl: null,
|
|
30
|
+
officialDocs: 'https://supabase.com/docs',
|
|
31
|
+
mcpPackage: null,
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/orchestrator/plugins/supabase/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,UAAU;IACvB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,wCAAwC;IAC9C,SAAS,EAAE,mBAAmB;IAC9B,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,8BAA8B;KACpC;IACD,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE;QACZ,mBAAmB,EAAE;YACnB,0BAA0B,EAAE,sBAAsB,EAAE,sBAAsB;YAC1E,0BAA0B,EAAE,0BAA0B,EAAE,mBAAmB;YAC3E,sBAAsB,EAAE,0BAA0B,EAAE,wBAAwB;YAC5E,sBAAsB,EAAE,oCAAoC,EAAE,uBAAuB;YACrF,wBAAwB,EAAE,wBAAwB;SACnD;QACD,iBAAiB,EAAE;YACjB,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB;YACvE,0BAA0B,EAAE,sBAAsB;SACnD;KACF;IACD,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,2BAA2B;IACzC,UAAU,EAAE,IAAI;CACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/plugins/teams/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,MAAM,EAAE,YAyCpB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
id: 'teams',
|
|
3
|
+
name: 'Microsoft Teams',
|
|
4
|
+
category: 'team',
|
|
5
|
+
subCategory: 'notifications',
|
|
6
|
+
label: 'Microsoft Teams',
|
|
7
|
+
hint: 'Agent notifications via Teams channels',
|
|
8
|
+
skillName: 'teams-notifications',
|
|
9
|
+
mcpServerKey: 'Teams',
|
|
10
|
+
mcpConfig: {
|
|
11
|
+
type: 'http',
|
|
12
|
+
url: 'https://agent365.svc.cloud.microsoft/agents/tenants/${input:tenant_id}/servers/mcp_TeamsServer',
|
|
13
|
+
},
|
|
14
|
+
authType: 'oauth',
|
|
15
|
+
envVars: [],
|
|
16
|
+
agentToolMap: {
|
|
17
|
+
'team-lead': [
|
|
18
|
+
'Teams/mcp_graph_chat_createChat', 'Teams/mcp_graph_chat_listChats',
|
|
19
|
+
'Teams/mcp_graph_chat_getChat', 'Teams/mcp_graph_chat_postMessage',
|
|
20
|
+
'Teams/mcp_graph_chat_listChatMessages', 'Teams/mcp_graph_chat_getChatMessage',
|
|
21
|
+
'Teams/mcp_graph_teams_listTeams', 'Teams/mcp_graph_teams_listChannels',
|
|
22
|
+
'Teams/mcp_graph_teams_getChannel', 'Teams/mcp_graph_teams_postChannelMessage',
|
|
23
|
+
'Teams/mcp_graph_teams_replyToChannelMessage', 'Teams/mcp_graph_teams_listChannelMessages',
|
|
24
|
+
],
|
|
25
|
+
'release-manager': [
|
|
26
|
+
'Teams/mcp_graph_chat_postMessage', 'Teams/mcp_graph_chat_listChats',
|
|
27
|
+
'Teams/mcp_graph_teams_listTeams', 'Teams/mcp_graph_teams_listChannels',
|
|
28
|
+
'Teams/mcp_graph_teams_postChannelMessage', 'Teams/mcp_graph_teams_replyToChannelMessage',
|
|
29
|
+
'Teams/mcp_graph_teams_listChannelMessages',
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
docsUrl: null,
|
|
33
|
+
officialDocs: 'https://learn.microsoft.com/en-us/microsoftteams/',
|
|
34
|
+
mcpPackage: null,
|
|
35
|
+
mcpInputs: [
|
|
36
|
+
{
|
|
37
|
+
id: 'tenant_id',
|
|
38
|
+
type: 'promptString',
|
|
39
|
+
description: 'Microsoft Entra tenant ID (GUID)',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/orchestrator/plugins/teams/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,eAAe;IAC5B,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,wCAAwC;IAC9C,SAAS,EAAE,qBAAqB;IAChC,YAAY,EAAE,OAAO;IACrB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,gGAAgG;KACtG;IACD,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE;QACZ,WAAW,EAAE;YACX,iCAAiC,EAAE,gCAAgC;YACnE,8BAA8B,EAAE,kCAAkC;YAClE,uCAAuC,EAAE,qCAAqC;YAC9E,iCAAiC,EAAE,oCAAoC;YACvE,kCAAkC,EAAE,0CAA0C;YAC9E,6CAA6C,EAAE,2CAA2C;SAC3F;QACD,iBAAiB,EAAE;YACjB,kCAAkC,EAAE,gCAAgC;YACpE,iCAAiC,EAAE,oCAAoC;YACvE,0CAA0C,EAAE,6CAA6C;YACzF,2CAA2C;SAC5C;KACF;IACD,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,mDAAmD;IACjE,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE;QACT;YACE,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,kCAAkC;SAChD;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
/** Human-readable display name */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Plugin category */
|
|
11
|
+
category: 'tech' | 'team';
|
|
12
|
+
/** Sub-category for grouping */
|
|
13
|
+
subCategory: 'cms' | 'database' | 'deployment' | 'monorepo' | 'tracker' | 'notifications' | 'testing';
|
|
14
|
+
/** Label shown in the `npx opencastle init` multiselect */
|
|
15
|
+
label: string;
|
|
16
|
+
/** Hint shown next to the label in multiselect */
|
|
17
|
+
hint: string;
|
|
18
|
+
/** Skill directory name (matches the old skills/ dirname). null if no skill. */
|
|
19
|
+
skillName: string | null;
|
|
20
|
+
/** MCP server key used in the generated MCP config. null if no MCP server. */
|
|
21
|
+
mcpServerKey: string | null;
|
|
22
|
+
/** Raw MCP server config */
|
|
23
|
+
mcpConfig: McpServerConfig;
|
|
24
|
+
/** Authentication type */
|
|
25
|
+
authType: 'oauth' | 'env-token' | 'none';
|
|
26
|
+
/** Required environment variables for this plugin */
|
|
27
|
+
envVars: EnvVarRequirement[];
|
|
28
|
+
/** Tools to inject into specific agent definitions when this plugin is selected.
|
|
29
|
+
* Key = agent name (e.g. 'content-engineer'), Value = tool names to append. */
|
|
30
|
+
agentToolMap?: Record<string, string[]>;
|
|
31
|
+
/** URL to setup guide on opencastle.dev (null if none) */
|
|
32
|
+
docsUrl: string | null;
|
|
33
|
+
/** Official product documentation URL */
|
|
34
|
+
officialDocs: string;
|
|
35
|
+
/** NPM package for the MCP server (null for HTTP/OAuth servers) */
|
|
36
|
+
mcpPackage: string | null;
|
|
37
|
+
/** Whether this plugin should be preselected in the init prompt */
|
|
38
|
+
preselected?: boolean;
|
|
39
|
+
/** VS Code input prompts required by this plugin's MCP config (e.g. tenant ID) */
|
|
40
|
+
mcpInputs?: McpInput[];
|
|
41
|
+
}
|
|
42
|
+
export interface McpInput {
|
|
43
|
+
id: string;
|
|
44
|
+
type: 'promptString';
|
|
45
|
+
description: string;
|
|
46
|
+
}
|
|
47
|
+
export interface McpServerConfig {
|
|
48
|
+
type: 'stdio' | 'http';
|
|
49
|
+
command?: string;
|
|
50
|
+
args?: string[];
|
|
51
|
+
url?: string;
|
|
52
|
+
env?: Record<string, string>;
|
|
53
|
+
envFile?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface EnvVarRequirement {
|
|
56
|
+
/** Environment variable name */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Short description of where to get the value */
|
|
59
|
+
hint: string;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/plugins/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IAEX,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,sBAAsB;IACtB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B,gCAAgC;IAChC,WAAW,EAAE,KAAK,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;IAEtG,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IAEd,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IAEb,gFAAgF;IAChF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,4BAA4B;IAC5B,SAAS,EAAE,eAAe,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;IAEzC,qDAAqD;IACrD,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B;mFAC+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,mEAAmE;IACnE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,kFAAkF;IAClF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/orchestrator/plugins/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/plugins/vercel/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,MAAM,EAAE,YA8BpB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
id: 'vercel',
|
|
3
|
+
name: 'Vercel',
|
|
4
|
+
category: 'tech',
|
|
5
|
+
subCategory: 'deployment',
|
|
6
|
+
label: 'Vercel',
|
|
7
|
+
hint: 'Deployment and hosting platform',
|
|
8
|
+
skillName: null,
|
|
9
|
+
mcpServerKey: 'Vercel',
|
|
10
|
+
mcpConfig: {
|
|
11
|
+
type: 'http',
|
|
12
|
+
url: 'https://mcp.vercel.com',
|
|
13
|
+
},
|
|
14
|
+
authType: 'oauth',
|
|
15
|
+
envVars: [],
|
|
16
|
+
agentToolMap: {
|
|
17
|
+
'devops-expert': [
|
|
18
|
+
'vercel/deploy_to_vercel', 'vercel/get_deployment', 'vercel/get_deployment_build_logs',
|
|
19
|
+
'vercel/get_project', 'vercel/get_runtime_logs', 'vercel/list_deployments',
|
|
20
|
+
'vercel/list_projects', 'vercel/list_teams', 'vercel/search_vercel_documentation',
|
|
21
|
+
'vercel/check_domain_availability_and_price',
|
|
22
|
+
],
|
|
23
|
+
'release-manager': [
|
|
24
|
+
'vercel/get_deployment', 'vercel/get_deployment_build_logs',
|
|
25
|
+
'vercel/get_runtime_logs', 'vercel/list_deployments', 'vercel/list_projects',
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
docsUrl: null,
|
|
29
|
+
officialDocs: 'https://vercel.com/docs',
|
|
30
|
+
mcpPackage: null,
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/orchestrator/plugins/vercel/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,YAAY;IACzB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,iCAAiC;IACvC,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,QAAQ;IACtB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,wBAAwB;KAC9B;IACD,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE;QACZ,eAAe,EAAE;YACf,yBAAyB,EAAE,uBAAuB,EAAE,kCAAkC;YACtF,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;YAC1E,sBAAsB,EAAE,mBAAmB,EAAE,oCAAoC;YACjF,4CAA4C;SAC7C;QACD,iBAAiB,EAAE;YACjB,uBAAuB,EAAE,kCAAkC;YAC3D,yBAAyB,EAAE,yBAAyB,EAAE,sBAAsB;SAC7E;KACF;IACD,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,yBAAyB;IACvC,UAAU,EAAE,IAAI;CACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolve, basename } from 'node:path'
|
|
2
2
|
import { mkdir, writeFile, readdir, readFile, unlink, rm } from 'node:fs/promises'
|
|
3
3
|
import { existsSync } from 'node:fs'
|
|
4
|
-
import { copyDir, getOrchestratorRoot } from '../copy.js'
|
|
4
|
+
import { copyDir, getOrchestratorRoot, getPluginsRoot, getPluginSkillEntries } from '../copy.js'
|
|
5
5
|
import { scaffoldMcpConfig } from '../mcp.js'
|
|
6
|
-
import { getExcludedSkills, getExcludedAgents, getCustomizationsTransform } from '../stack-config.js'
|
|
7
|
-
import type { CopyResults, ManagedPaths, StackConfig } from '../types.js'
|
|
6
|
+
import { getExcludedSkills, getExcludedAgents, getCustomizationsTransform, getIncludedPluginIds } from '../stack-config.js'
|
|
7
|
+
import type { CopyResults, ManagedPaths, RepoInfo, StackConfig } from '../types.js'
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Claude Code adapter.
|
|
@@ -48,7 +48,8 @@ function parseFrontmatterMeta(content: string): Record<string, string> {
|
|
|
48
48
|
export async function install(
|
|
49
49
|
pkgRoot: string,
|
|
50
50
|
projectRoot: string,
|
|
51
|
-
stack?: StackConfig
|
|
51
|
+
stack?: StackConfig,
|
|
52
|
+
repoInfo?: RepoInfo
|
|
52
53
|
): Promise<CopyResults> {
|
|
53
54
|
const srcRoot = getOrchestratorRoot(pkgRoot)
|
|
54
55
|
const results: CopyResults = { copied: [], skipped: [], created: [] }
|
|
@@ -126,6 +127,19 @@ export async function install(
|
|
|
126
127
|
`- **${entry.name}** (\`.claude/skills/${entry.name}.md\`): ${desc}`
|
|
127
128
|
)
|
|
128
129
|
}
|
|
130
|
+
|
|
131
|
+
// Plugin skills
|
|
132
|
+
const pluginsRoot = getPluginsRoot(pkgRoot)
|
|
133
|
+
const includedPlugins = stack ? getIncludedPluginIds(stack) : undefined
|
|
134
|
+
const pluginEntries = await getPluginSkillEntries(pluginsRoot, includedPlugins)
|
|
135
|
+
for (const { id, skillPath } of pluginEntries.sort((a, b) => a.id.localeCompare(b.id))) {
|
|
136
|
+
const pluginMeta = parseFrontmatterMeta(await readFile(skillPath, 'utf8'))
|
|
137
|
+
const pluginDesc = pluginMeta['description'] ?? ''
|
|
138
|
+
skillLines.push(
|
|
139
|
+
`- **${id}** (\`.claude/skills/${id}.md\`): ${pluginDesc}`
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
|
|
129
143
|
sections.push(skillLines.join('\n'))
|
|
130
144
|
}
|
|
131
145
|
|
|
@@ -179,6 +193,25 @@ export async function install(
|
|
|
179
193
|
}
|
|
180
194
|
}
|
|
181
195
|
|
|
196
|
+
// 3b. Plugin skills → .claude/skills/<plugin-id>.md
|
|
197
|
+
{
|
|
198
|
+
const pluginsRoot = getPluginsRoot(pkgRoot)
|
|
199
|
+
const includedPlugins = stack ? getIncludedPluginIds(stack) : undefined
|
|
200
|
+
const pluginEntries = await getPluginSkillEntries(pluginsRoot, includedPlugins)
|
|
201
|
+
const destSkills = resolve(claudeDir, 'skills')
|
|
202
|
+
await mkdir(destSkills, { recursive: true })
|
|
203
|
+
for (const { id, skillPath } of pluginEntries) {
|
|
204
|
+
const destPath = resolve(destSkills, `${id}.md`)
|
|
205
|
+
if (existsSync(destPath)) {
|
|
206
|
+
results.skipped.push(destPath)
|
|
207
|
+
continue
|
|
208
|
+
}
|
|
209
|
+
const content = await readFile(skillPath, 'utf8')
|
|
210
|
+
await writeFile(destPath, stripFrontmatter(content) + '\n')
|
|
211
|
+
results.created.push(destPath)
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
182
215
|
// 4. Prompts → .claude/commands/<name>.md
|
|
183
216
|
const promptDir = resolve(srcRoot, 'prompts')
|
|
184
217
|
if (existsSync(promptDir)) {
|
|
@@ -230,10 +263,11 @@ export async function install(
|
|
|
230
263
|
|
|
231
264
|
// 7. MCP server config → .claude/mcp.json (scaffold once)
|
|
232
265
|
const mcpResult = await scaffoldMcpConfig(
|
|
233
|
-
pkgRoot,
|
|
234
266
|
projectRoot,
|
|
235
267
|
'.claude/mcp.json',
|
|
236
|
-
stack
|
|
268
|
+
stack,
|
|
269
|
+
repoInfo,
|
|
270
|
+
'claude-code'
|
|
237
271
|
)
|
|
238
272
|
results[mcpResult.action].push(mcpResult.path)
|
|
239
273
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolve, basename } from 'node:path'
|
|
2
2
|
import { mkdir, writeFile, readdir, readFile, unlink } from 'node:fs/promises'
|
|
3
3
|
import { existsSync } from 'node:fs'
|
|
4
|
-
import { copyDir, getOrchestratorRoot, removeDirIfExists } from '../copy.js'
|
|
4
|
+
import { copyDir, getOrchestratorRoot, removeDirIfExists, getPluginsRoot, getPluginSkillEntries } from '../copy.js'
|
|
5
5
|
import { scaffoldMcpConfig } from '../mcp.js'
|
|
6
|
-
import { getExcludedSkills, getExcludedAgents, getCustomizationsTransform } from '../stack-config.js'
|
|
7
|
-
import type { CopyResults, ManagedPaths, StackConfig } from '../types.js'
|
|
6
|
+
import { getExcludedSkills, getExcludedAgents, getCustomizationsTransform, getIncludedPluginIds } from '../stack-config.js'
|
|
7
|
+
import type { CopyResults, ManagedPaths, RepoInfo, StackConfig } from '../types.js'
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Cursor adapter.
|
|
@@ -122,7 +122,8 @@ async function writeConverted(
|
|
|
122
122
|
export async function install(
|
|
123
123
|
pkgRoot: string,
|
|
124
124
|
projectRoot: string,
|
|
125
|
-
stack?: StackConfig
|
|
125
|
+
stack?: StackConfig,
|
|
126
|
+
repoInfo?: RepoInfo
|
|
126
127
|
): Promise<CopyResults> {
|
|
127
128
|
const srcRoot = getOrchestratorRoot(pkgRoot)
|
|
128
129
|
const results: CopyResults = { copied: [], skipped: [], created: [] }
|
|
@@ -163,6 +164,24 @@ export async function install(
|
|
|
163
164
|
// 4. Skills → .cursor/rules/skills/*.mdc
|
|
164
165
|
await convertSkills(srcRoot, resolve(rulesRoot, 'skills'), results, false, excludedSkills)
|
|
165
166
|
|
|
167
|
+
// 4b. Plugin skills → .cursor/rules/skills/<plugin-id>.mdc
|
|
168
|
+
{
|
|
169
|
+
const pluginsRoot = getPluginsRoot(pkgRoot)
|
|
170
|
+
const includedPlugins = stack ? getIncludedPluginIds(stack) : undefined
|
|
171
|
+
const pluginEntries = await getPluginSkillEntries(pluginsRoot, includedPlugins)
|
|
172
|
+
const skillsDest = resolve(rulesRoot, 'skills')
|
|
173
|
+
await mkdir(skillsDest, { recursive: true })
|
|
174
|
+
for (const { id, skillPath } of pluginEntries) {
|
|
175
|
+
const destPath = resolve(skillsDest, `${id}.mdc`)
|
|
176
|
+
await writeConverted(
|
|
177
|
+
skillPath,
|
|
178
|
+
destPath,
|
|
179
|
+
{ descriptionFallback: `Skill: ${id}` },
|
|
180
|
+
results
|
|
181
|
+
)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
166
185
|
// 5. Agent Workflows → .cursor/rules/agent-workflows/*.mdc
|
|
167
186
|
await convertDir(
|
|
168
187
|
srcRoot,
|
|
@@ -190,10 +209,11 @@ export async function install(
|
|
|
190
209
|
|
|
191
210
|
// 8. MCP server config → .cursor/mcp.json (scaffold once)
|
|
192
211
|
const mcpResult = await scaffoldMcpConfig(
|
|
193
|
-
pkgRoot,
|
|
194
212
|
projectRoot,
|
|
195
213
|
'.cursor/mcp.json',
|
|
196
|
-
stack
|
|
214
|
+
stack,
|
|
215
|
+
repoInfo,
|
|
216
|
+
'cursor'
|
|
197
217
|
)
|
|
198
218
|
results[mcpResult.action].push(mcpResult.path)
|
|
199
219
|
|
|
@@ -253,6 +273,26 @@ export async function update(
|
|
|
253
273
|
{ descriptionPrefix: 'Agent: ', removeExt: '.agent.md', overwrite: true, excludeFiles: excludedAgents }
|
|
254
274
|
)
|
|
255
275
|
await convertSkills(srcRoot, resolve(rulesRoot, 'skills'), results, true, excludedSkills)
|
|
276
|
+
|
|
277
|
+
// Plugin skills → .cursor/rules/skills/<plugin-id>.mdc (overwrite)
|
|
278
|
+
{
|
|
279
|
+
const pluginsRoot = getPluginsRoot(pkgRoot)
|
|
280
|
+
const includedPlugins = stack ? getIncludedPluginIds(stack) : undefined
|
|
281
|
+
const pluginEntries = await getPluginSkillEntries(pluginsRoot, includedPlugins)
|
|
282
|
+
const skillsDest = resolve(rulesRoot, 'skills')
|
|
283
|
+
await mkdir(skillsDest, { recursive: true })
|
|
284
|
+
for (const { id, skillPath } of pluginEntries) {
|
|
285
|
+
const destPath = resolve(skillsDest, `${id}.mdc`)
|
|
286
|
+
await writeConverted(
|
|
287
|
+
skillPath,
|
|
288
|
+
destPath,
|
|
289
|
+
{ descriptionFallback: `Skill: ${id}` },
|
|
290
|
+
results,
|
|
291
|
+
true
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
256
296
|
await convertDir(
|
|
257
297
|
srcRoot,
|
|
258
298
|
'agent-workflows',
|