@cubis/foundry 0.3.32 → 0.3.33
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 +23 -0
- package/bin/cubis.js +461 -37
- package/mcp/README.md +17 -0
- package/mcp/catalogs/default.json +14 -0
- package/mcp/powers/atlassian-mcp/POWER.md +91 -0
- package/mcp/powers/atlassian-mcp/SKILL.md +88 -0
- package/mcp/powers/building-mcp-server-on-cloudflare/POWER.md +261 -0
- package/mcp/powers/building-mcp-server-on-cloudflare/SKILL.md +258 -0
- package/mcp/powers/datadog-automation/POWER.md +238 -0
- package/mcp/powers/datadog-automation/SKILL.md +235 -0
- package/mcp/powers/github-automation/POWER.md +230 -0
- package/mcp/powers/github-automation/SKILL.md +227 -0
- package/mcp/powers/mcp-builder/POWER.md +179 -0
- package/mcp/powers/mcp-builder/SKILL.md +176 -0
- package/mcp/powers/mcp-developer/POWER.md +88 -0
- package/mcp/powers/mcp-developer/SKILL.md +85 -0
- package/mcp/powers/postman/POWER.md +243 -0
- package/mcp/powers/postman/SKILL.md +240 -0
- package/mcp/powers/sentry-automation/POWER.md +235 -0
- package/mcp/powers/sentry-automation/SKILL.md +232 -0
- package/mcp/skills/atlassian-mcp/SKILL.md +88 -0
- package/mcp/skills/building-mcp-server-on-cloudflare/SKILL.md +258 -0
- package/mcp/skills/datadog-automation/SKILL.md +235 -0
- package/mcp/skills/github-automation/SKILL.md +227 -0
- package/mcp/skills/mcp-builder/SKILL.md +176 -0
- package/mcp/skills/mcp-developer/SKILL.md +85 -0
- package/mcp/skills/postman/SKILL.md +240 -0
- package/mcp/skills/sentry-automation/SKILL.md +232 -0
- package/package.json +2 -1
- package/workflows/powers/architecture/POWER.md +12 -46
- package/workflows/powers/architecture/SKILL.md +12 -46
- package/workflows/powers/atlassian-mcp/POWER.md +11 -81
- package/workflows/powers/atlassian-mcp/SKILL.md +11 -81
- package/workflows/powers/building-mcp-server-on-cloudflare/POWER.md +12 -252
- package/workflows/powers/building-mcp-server-on-cloudflare/SKILL.md +12 -252
- package/workflows/powers/code-review-checklist/POWER.md +11 -99
- package/workflows/powers/code-review-checklist/SKILL.md +11 -99
- package/workflows/powers/csharp-pro/POWER.md +43 -0
- package/workflows/powers/csharp-pro/SKILL.md +40 -0
- package/workflows/powers/database-design/POWER.md +47 -5
- package/workflows/powers/database-design/SKILL.md +45 -4
- package/workflows/powers/database-optimizer/POWER.md +11 -23
- package/workflows/powers/database-optimizer/SKILL.md +5 -5
- package/workflows/powers/datadog-automation/POWER.md +12 -229
- package/workflows/powers/datadog-automation/SKILL.md +12 -229
- package/workflows/powers/debugging-wizard/POWER.md +12 -78
- package/workflows/powers/debugging-wizard/SKILL.md +12 -78
- package/workflows/powers/deployment-procedures/POWER.md +11 -231
- package/workflows/powers/deployment-procedures/SKILL.md +11 -231
- package/workflows/powers/drift-flutter/POWER.md +51 -0
- package/workflows/powers/drift-flutter/SKILL.md +2 -2
- package/workflows/powers/github-automation/POWER.md +12 -221
- package/workflows/powers/github-automation/SKILL.md +12 -221
- package/workflows/powers/golang-pro/POWER.md +38 -66
- package/workflows/powers/golang-pro/SKILL.md +38 -66
- package/workflows/powers/java-pro/POWER.md +43 -0
- package/workflows/powers/java-pro/SKILL.md +40 -0
- package/workflows/powers/javascript-pro/POWER.md +37 -67
- package/workflows/powers/javascript-pro/SKILL.md +37 -67
- package/workflows/powers/kotlin-pro/POWER.md +43 -0
- package/workflows/powers/kotlin-pro/SKILL.md +40 -0
- package/workflows/powers/mcp-builder/POWER.md +12 -170
- package/workflows/powers/mcp-builder/SKILL.md +12 -170
- package/workflows/powers/mcp-developer/POWER.md +11 -78
- package/workflows/powers/mcp-developer/SKILL.md +11 -78
- package/workflows/powers/nextjs-developer/POWER.md +41 -148
- package/workflows/powers/nextjs-developer/SKILL.md +41 -148
- package/workflows/powers/nextjs-react-expert/POWER.md +10 -281
- package/workflows/powers/nextjs-react-expert/SKILL.md +10 -281
- package/workflows/powers/nodejs-best-practices/POWER.md +33 -317
- package/workflows/powers/nodejs-best-practices/SKILL.md +33 -317
- package/workflows/powers/postman/POWER.md +11 -233
- package/workflows/powers/postman/SKILL.md +11 -233
- package/workflows/powers/python-patterns/POWER.md +11 -431
- package/workflows/powers/python-patterns/SKILL.md +11 -431
- package/workflows/powers/python-pro/POWER.md +38 -66
- package/workflows/powers/python-pro/SKILL.md +38 -66
- package/workflows/powers/react-best-practices/POWER.md +35 -118
- package/workflows/powers/react-best-practices/SKILL.md +35 -118
- package/workflows/powers/react-expert/POWER.md +38 -66
- package/workflows/powers/react-expert/SKILL.md +38 -66
- package/workflows/powers/rust-engineer/POWER.md +10 -75
- package/workflows/powers/rust-engineer/SKILL.md +10 -75
- package/workflows/powers/rust-pro/POWER.md +36 -163
- package/workflows/powers/rust-pro/SKILL.md +36 -163
- package/workflows/powers/sentry-automation/POWER.md +12 -226
- package/workflows/powers/sentry-automation/SKILL.md +12 -226
- package/workflows/powers/server-management/POWER.md +11 -151
- package/workflows/powers/server-management/SKILL.md +11 -151
- package/workflows/powers/tdd-workflow/POWER.md +12 -140
- package/workflows/powers/tdd-workflow/SKILL.md +12 -140
- package/workflows/powers/testing-patterns/POWER.md +11 -168
- package/workflows/powers/testing-patterns/SKILL.md +11 -168
- package/workflows/powers/typescript-pro/POWER.md +43 -70
- package/workflows/powers/typescript-pro/SKILL.md +43 -70
- package/workflows/powers/vercel-ai/POWER.md +43 -0
- package/workflows/powers/vercel-ai/SKILL.md +40 -0
- package/workflows/powers/vercel-ai-gateway/POWER.md +11 -69
- package/workflows/powers/vercel-ai-gateway/SKILL.md +11 -69
- package/workflows/powers/vercel-ai-sdk/POWER.md +11 -49
- package/workflows/powers/vercel-ai-sdk/SKILL.md +11 -49
- package/workflows/powers/vercel-caching/POWER.md +10 -72
- package/workflows/powers/vercel-caching/SKILL.md +10 -72
- package/workflows/powers/vercel-cli/POWER.md +11 -75
- package/workflows/powers/vercel-cli/SKILL.md +11 -75
- package/workflows/powers/vercel-delivery/POWER.md +45 -0
- package/workflows/powers/vercel-delivery/SKILL.md +42 -0
- package/workflows/powers/vercel-deployments/POWER.md +10 -90
- package/workflows/powers/vercel-deployments/SKILL.md +10 -90
- package/workflows/powers/vercel-domains/POWER.md +10 -69
- package/workflows/powers/vercel-domains/SKILL.md +10 -69
- package/workflows/powers/vercel-firewall/POWER.md +10 -61
- package/workflows/powers/vercel-firewall/SKILL.md +10 -61
- package/workflows/powers/vercel-flags/POWER.md +10 -62
- package/workflows/powers/vercel-flags/SKILL.md +10 -62
- package/workflows/powers/vercel-functions/POWER.md +10 -70
- package/workflows/powers/vercel-functions/SKILL.md +10 -70
- package/workflows/powers/vercel-routing/POWER.md +10 -68
- package/workflows/powers/vercel-routing/SKILL.md +10 -68
- package/workflows/powers/vercel-runtime/POWER.md +43 -0
- package/workflows/powers/vercel-runtime/SKILL.md +40 -0
- package/workflows/powers/vercel-security/POWER.md +43 -0
- package/workflows/powers/vercel-security/SKILL.md +40 -0
- package/workflows/powers/vulnerability-scanner/POWER.md +11 -266
- package/workflows/powers/vulnerability-scanner/SKILL.md +11 -266
- package/workflows/scripts/generate-powers.mjs +95 -202
- package/workflows/skills/atlassian-mcp/SKILL.md +11 -81
- package/workflows/skills/building-mcp-server-on-cloudflare/SKILL.md +12 -252
- package/workflows/skills/catalogs/core.json +30 -0
- package/workflows/skills/catalogs/web-backend.json +70 -0
- package/workflows/skills/csharp-pro/SKILL.md +40 -0
- package/workflows/skills/datadog-automation/SKILL.md +12 -229
- package/workflows/skills/github-automation/SKILL.md +12 -221
- package/workflows/skills/golang-pro/SKILL.md +38 -66
- package/workflows/skills/java-pro/SKILL.md +40 -0
- package/workflows/skills/javascript-pro/SKILL.md +37 -67
- package/workflows/skills/kotlin-pro/SKILL.md +40 -0
- package/workflows/skills/mcp-builder/SKILL.md +12 -170
- package/workflows/skills/mcp-developer/SKILL.md +11 -78
- package/workflows/skills/nextjs-developer/SKILL.md +41 -148
- package/workflows/skills/nextjs-react-expert/SKILL.md +5 -11
- package/workflows/skills/nodejs-best-practices/SKILL.md +33 -317
- package/workflows/skills/postman/SKILL.md +11 -233
- package/workflows/skills/python-pro/SKILL.md +38 -66
- package/workflows/skills/react-best-practices/SKILL.md +35 -118
- package/workflows/skills/react-expert/SKILL.md +38 -66
- package/workflows/skills/rust-pro/SKILL.md +36 -163
- package/workflows/skills/sentry-automation/SKILL.md +12 -226
- package/workflows/skills/skills_index.json +43 -57
- package/workflows/skills/typescript-pro/SKILL.md +43 -70
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/backend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/code-archaeologist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/database-architect.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/debugger.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/devops-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/documentation-writer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/explorer-agent.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/frontend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/game-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/mobile-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/orchestrator.md +28 -400
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/penetration-tester.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/performance-optimizer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/product-manager.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/product-owner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/project-planner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/qa-automation-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/security-auditor.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/seo-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/test-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/vercel-expert.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/rules/GEMINI.md +7 -6
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/backend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/code-archaeologist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/database-architect.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/debugger.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/devops-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/documentation-writer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/explorer-agent.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/frontend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/game-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/mobile-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/orchestrator.md +28 -400
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/penetration-tester.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/performance-optimizer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/product-manager.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/product-owner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/project-planner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/qa-automation-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/security-auditor.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/seo-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/test-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/vercel-expert.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/codex/rules/AGENTS.md +7 -6
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/backend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/code-archaeologist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/database-architect.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/debugger.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/devops-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/documentation-writer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/explorer-agent.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/frontend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/game-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/mobile-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/orchestrator.md +28 -400
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/penetration-tester.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/performance-optimizer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/product-manager.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/product-owner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/project-planner.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/qa-automation-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/security-auditor.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/seo-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/test-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/vercel-expert.md +1 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/rules/AGENTS.md +7 -6
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/csharp-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/golang-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/java-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/javascript-pro/SKILL.md +37 -67
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/kotlin-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-developer/SKILL.md +41 -148
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-react-expert/SKILL.md +6 -12
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nodejs-best-practices/SKILL.md +33 -317
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/python-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-best-practices/SKILL.md +35 -118
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-expert/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/rust-pro/SKILL.md +36 -163
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skills_index.json +43 -57
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/typescript-pro/SKILL.md +43 -70
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/csharp-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/golang-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/java-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/javascript-pro/SKILL.md +37 -67
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/kotlin-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-developer/SKILL.md +41 -148
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-react-expert/SKILL.md +6 -12
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nodejs-best-practices/SKILL.md +33 -317
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/python-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/react-best-practices/SKILL.md +35 -118
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/react-expert/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/rust-pro/SKILL.md +36 -163
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/skills_index.json +43 -57
- package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/typescript-pro/SKILL.md +43 -70
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/csharp-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/golang-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/java-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/javascript-pro/SKILL.md +37 -67
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/kotlin-pro/SKILL.md +40 -0
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-developer/SKILL.md +41 -148
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-react-expert/SKILL.md +6 -12
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nodejs-best-practices/SKILL.md +33 -317
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/python-pro/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/react-best-practices/SKILL.md +35 -118
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/react-expert/SKILL.md +38 -66
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/rust-pro/SKILL.md +36 -163
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/skills_index.json +43 -57
- package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/typescript-pro/SKILL.md +43 -70
- package/workflows/workflows/agent-environment-setup/shared/agents/backend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/code-archaeologist.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/database-architect.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/debugger.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/devops-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/documentation-writer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/explorer-agent.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/frontend-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/game-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/mobile-developer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/orchestrator.md +28 -400
- package/workflows/workflows/agent-environment-setup/shared/agents/penetration-tester.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/performance-optimizer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/product-manager.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/product-owner.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/project-planner.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/qa-automation-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/security-auditor.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/seo-specialist.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/test-engineer.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/vercel-expert.md +1 -1
- package/workflows/powers/sub-agents/scripts/run_subagent.py.bak +0 -512
- /package/{workflows → mcp}/powers/atlassian-mcp/steering/authentication-patterns.md +0 -0
- /package/{workflows → mcp}/powers/atlassian-mcp/steering/common-workflows.md +0 -0
- /package/{workflows → mcp}/powers/atlassian-mcp/steering/confluence-operations.md +0 -0
- /package/{workflows → mcp}/powers/atlassian-mcp/steering/jira-queries.md +0 -0
- /package/{workflows → mcp}/powers/atlassian-mcp/steering/mcp-server-setup.md +0 -0
- /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/examples.md +0 -0
- /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/oauth-setup.md +0 -0
- /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/troubleshooting.md +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/LICENSE.txt +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/reference/evaluation.md +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/reference/mcp_best_practices.md +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/reference/node_mcp_server.md +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/reference/python_mcp_server.md +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/scripts/connections.py +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/scripts/evaluation.py +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/scripts/example_evaluation.xml +0 -0
- /package/{workflows → mcp}/powers/mcp-builder/scripts/requirements.txt +0 -0
- /package/{workflows → mcp}/powers/mcp-developer/steering/protocol.md +0 -0
- /package/{workflows → mcp}/powers/mcp-developer/steering/python-sdk.md +0 -0
- /package/{workflows → mcp}/powers/mcp-developer/steering/resources.md +0 -0
- /package/{workflows → mcp}/powers/mcp-developer/steering/tools.md +0 -0
- /package/{workflows → mcp}/powers/mcp-developer/steering/typescript-sdk.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/bloc-state.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/engineering-principles.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/gorouter-navigation.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/performance.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/project-structure.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/riverpod-state.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-expert/steering/widget-patterns.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/log_redaction.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/network_hardening.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/secret-scanning.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/secure_storage_policy.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/vulnerability-patterns.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/templates/security_review_response.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/golden-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/integration-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/property-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/riverpod-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/test-utilities.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/unit-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/widget-testing.md +0 -0
- /package/{workflows → mcp}/powers/postman/git-commit/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/git-commit/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/steering/guard_patterns.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/steering/tab_preservation.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/templates/guard_redirect.md +0 -0
- /package/{workflows → mcp}/powers/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -0
- /package/{workflows → mcp}/powers/postman/mcp.json +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/steering/communication.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/steering/data.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/steering/decomposition.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/steering/observability.md +0 -0
- /package/{workflows → mcp}/powers/postman/microservices-architect/steering/patterns.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/authentication.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/controllers-routing.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/dtos-validation.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/migration-from-express.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/secure-sessions.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/services-di.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/strangler-fig-pattern.md +0 -0
- /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/testing-patterns.md +0 -0
- /package/{workflows → mcp}/powers/postman/oneup-design/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/oneup-design/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/oneup-design/steering/colors.md +0 -0
- /package/{workflows → mcp}/powers/postman/oneup-design/steering/components.md +0 -0
- /package/{workflows → mcp}/powers/postman/oneup-design/steering/spacing.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/POWER.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/SKILL.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/crud-templates.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-express.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-fastapi.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-nestjs.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-raw-openapi.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/openapi-checklist.md +0 -0
- /package/{workflows → mcp}/powers/postman/openapi-docs/steering/stoplight-ui.md +0 -0
- /package/{workflows → mcp}/powers/postman/steering/steering.md +0 -0
- /package/{workflows → mcp}/skills/atlassian-mcp/references/authentication-patterns.md +0 -0
- /package/{workflows → mcp}/skills/atlassian-mcp/references/common-workflows.md +0 -0
- /package/{workflows → mcp}/skills/atlassian-mcp/references/confluence-operations.md +0 -0
- /package/{workflows → mcp}/skills/atlassian-mcp/references/jira-queries.md +0 -0
- /package/{workflows → mcp}/skills/atlassian-mcp/references/mcp-server-setup.md +0 -0
- /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -0
- /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -0
- /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -0
- /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/LICENSE.txt +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/reference/evaluation.md +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/reference/mcp_best_practices.md +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/reference/node_mcp_server.md +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/reference/python_mcp_server.md +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/scripts/connections.py +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/scripts/evaluation.py +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/scripts/example_evaluation.xml +0 -0
- /package/{workflows → mcp}/skills/mcp-builder/scripts/requirements.txt +0 -0
- /package/{workflows → mcp}/skills/mcp-developer/references/protocol.md +0 -0
- /package/{workflows → mcp}/skills/mcp-developer/references/python-sdk.md +0 -0
- /package/{workflows → mcp}/skills/mcp-developer/references/resources.md +0 -0
- /package/{workflows → mcp}/skills/mcp-developer/references/tools.md +0 -0
- /package/{workflows → mcp}/skills/mcp-developer/references/typescript-sdk.md +0 -0
- /package/{workflows → mcp}/skills/postman/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/bloc-state.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/engineering-principles.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/performance.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/project-structure.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/riverpod-state.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-expert/references/widget-patterns.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/golden-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/integration-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/property-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/test-utilities.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/unit-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/flutter-test-master/references/widget-testing.md +0 -0
- /package/{workflows → mcp}/skills/postman/git-commit/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/git-commit/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -0
- /package/{workflows → mcp}/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -0
- /package/{workflows → mcp}/skills/postman/mcp.json +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/references/communication.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/references/data.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/references/decomposition.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/references/observability.md +0 -0
- /package/{workflows → mcp}/skills/postman/microservices-architect/references/patterns.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/authentication.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/controllers-routing.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/dtos-validation.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/migration-from-express.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/secure-sessions.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/services-di.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -0
- /package/{workflows → mcp}/skills/postman/nestjs-expert/references/testing-patterns.md +0 -0
- /package/{workflows → mcp}/skills/postman/oneup-design/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/oneup-design/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/oneup-design/references/colors.md +0 -0
- /package/{workflows → mcp}/skills/postman/oneup-design/references/components.md +0 -0
- /package/{workflows → mcp}/skills/postman/oneup-design/references/spacing.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/POWER.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/SKILL.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/crud-templates.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-express.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-fastapi.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-nestjs.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/openapi-checklist.md +0 -0
- /package/{workflows → mcp}/skills/postman/openapi-docs/references/stoplight-ui.md +0 -0
- /package/{workflows → mcp}/skills/postman/references/steering.md +0 -0
|
@@ -2,22 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* generate-powers.mjs
|
|
4
4
|
*
|
|
5
|
-
* Generates POWER.md files for Kiro from
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Source priority (matching cubis.js installBundleArtifacts):
|
|
10
|
-
* 1. skills/<name>/SKILL.md ← canonical (what `cbx install` uses)
|
|
11
|
-
* 2. powers/<name>/SKILL.md ← fallback (local override only)
|
|
12
|
-
*
|
|
13
|
-
* Usage:
|
|
14
|
-
* node "workflows/scripts/generate-powers.mjs" [--dry-run] [--force] [--from-skills] [--sync-skills]
|
|
15
|
-
*
|
|
16
|
-
* Options:
|
|
17
|
-
* --dry-run Preview changes without writing files
|
|
18
|
-
* --force Overwrite existing POWER.md files
|
|
19
|
-
* --from-skills Also create missing power directories from skills/
|
|
20
|
-
* --sync-skills Sync canonical SKILL.md from skills/ → powers/ for every power
|
|
5
|
+
* Generates POWER.md files for Kiro from canonical SKILL.md files.
|
|
6
|
+
* Supports both workflow and MCP catalogs:
|
|
7
|
+
* - workflows/skills -> workflows/powers
|
|
8
|
+
* - mcp/skills -> mcp/powers
|
|
21
9
|
*/
|
|
22
10
|
|
|
23
11
|
import path from "node:path";
|
|
@@ -27,9 +15,19 @@ import { promises as fs } from "node:fs";
|
|
|
27
15
|
|
|
28
16
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
29
17
|
const ROOT = path.resolve(__dirname, "..", "..");
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
18
|
+
|
|
19
|
+
const ROOT_PAIRS = [
|
|
20
|
+
{
|
|
21
|
+
label: "workflows",
|
|
22
|
+
skillsRoot: path.join(ROOT, "workflows", "skills"),
|
|
23
|
+
powersRoot: path.join(ROOT, "workflows", "powers")
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: "mcp",
|
|
27
|
+
skillsRoot: path.join(ROOT, "mcp", "skills"),
|
|
28
|
+
powersRoot: path.join(ROOT, "mcp", "powers")
|
|
29
|
+
}
|
|
30
|
+
];
|
|
33
31
|
|
|
34
32
|
const ARGS = new Set(process.argv.slice(2));
|
|
35
33
|
const DRY_RUN = ARGS.has("--dry-run");
|
|
@@ -37,14 +35,10 @@ const FORCE = ARGS.has("--force");
|
|
|
37
35
|
const FROM_SKILLS = ARGS.has("--from-skills");
|
|
38
36
|
const SYNC_SKILLS = ARGS.has("--sync-skills");
|
|
39
37
|
|
|
40
|
-
// ─── Kiro POWER.md frontmatter keys ────────────────────────────────────────
|
|
41
|
-
// Keys added/ensured for Kiro power format
|
|
42
38
|
const KIRO_REQUIRED_KEYS = {
|
|
43
|
-
inclusion: "manual"
|
|
39
|
+
inclusion: "manual"
|
|
44
40
|
};
|
|
45
41
|
|
|
46
|
-
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
47
|
-
|
|
48
42
|
async function pathExists(p) {
|
|
49
43
|
try {
|
|
50
44
|
await fs.stat(p);
|
|
@@ -79,110 +73,72 @@ async function copyDir(src, dest) {
|
|
|
79
73
|
}
|
|
80
74
|
}
|
|
81
75
|
|
|
82
|
-
/**
|
|
83
|
-
* Strip an outer code fence wrapper from file content.
|
|
84
|
-
* Handles both:
|
|
85
|
-
* ```skill (backtick × 3)
|
|
86
|
-
* ````skill (backtick × 4)
|
|
87
|
-
* Returns the raw inner content (the markdown string inside the fence),
|
|
88
|
-
* or the original content unchanged if no fence is found.
|
|
89
|
-
*/
|
|
90
76
|
function stripCodeFence(content) {
|
|
91
77
|
const trimmed = content.trim();
|
|
92
|
-
// Match opening fence: 3+ backticks followed by optional language identifier
|
|
93
78
|
const fenceMatch = trimmed.match(/^(`{3,})([a-zA-Z]*)\n([\s\S]*)\n\1\s*$/);
|
|
94
79
|
if (!fenceMatch) return trimmed;
|
|
95
80
|
return fenceMatch[3];
|
|
96
81
|
}
|
|
97
82
|
|
|
98
|
-
/**
|
|
99
|
-
* Parse YAML frontmatter block from raw markdown.
|
|
100
|
-
* Returns { frontmatterRaw, body } or null if no frontmatter found.
|
|
101
|
-
*/
|
|
102
83
|
function parseFrontmatter(markdown) {
|
|
103
84
|
const match = markdown.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
|
|
104
85
|
if (!match) return null;
|
|
105
86
|
return {
|
|
106
87
|
frontmatterRaw: match[1],
|
|
107
|
-
body: match[2]
|
|
88
|
+
body: match[2]
|
|
108
89
|
};
|
|
109
90
|
}
|
|
110
91
|
|
|
111
|
-
/**
|
|
112
|
-
* Inject Kiro-specific keys into a raw frontmatter string if they are absent.
|
|
113
|
-
* Returns updated frontmatter string.
|
|
114
|
-
*/
|
|
115
92
|
function injectKiroKeys(frontmatterRaw) {
|
|
116
93
|
let result = frontmatterRaw;
|
|
117
94
|
for (const [key, value] of Object.entries(KIRO_REQUIRED_KEYS)) {
|
|
118
95
|
const keyPresent = new RegExp(`^${key}\\s*:`, "m").test(result);
|
|
119
96
|
if (!keyPresent) {
|
|
120
|
-
// Prepend the key at the top of the frontmatter block
|
|
121
97
|
result = `${key}: ${value}\n${result}`;
|
|
122
98
|
}
|
|
123
99
|
}
|
|
124
100
|
return result;
|
|
125
101
|
}
|
|
126
102
|
|
|
127
|
-
/**
|
|
128
|
-
* Build POWER.md content from a SKILL.md source string.
|
|
129
|
-
* - Strips outer `skill` / ````skill fence if present
|
|
130
|
-
* - Parses frontmatter and injects Kiro keys
|
|
131
|
-
* - Re-wraps in a `markdown` code fence (matching the existing POWER.md convention)
|
|
132
|
-
*/
|
|
133
103
|
function buildPowerContent(skillMdContent) {
|
|
134
|
-
// 1. Strip outer code fence (the ````skill ... ```` wrapper)
|
|
135
104
|
const inner = stripCodeFence(skillMdContent);
|
|
136
|
-
|
|
137
|
-
// 2. Parse and update frontmatter
|
|
138
105
|
const parsed = parseFrontmatter(inner);
|
|
139
106
|
if (!parsed) {
|
|
140
|
-
// No frontmatter found – just re-wrap with markdown fence and return
|
|
141
107
|
return `\`\`\`\`markdown\n${inner}\n\`\`\`\`\n`;
|
|
142
108
|
}
|
|
143
109
|
|
|
144
110
|
const updatedFrontmatter = injectKiroKeys(parsed.frontmatterRaw);
|
|
145
111
|
const reconstructed = `---\n${updatedFrontmatter}\n---\n${parsed.body}`;
|
|
146
|
-
|
|
147
|
-
// 3. Wrap in markdown code fence for Kiro power format
|
|
148
112
|
return `\`\`\`\`markdown\n${reconstructed}\n\`\`\`\`\n`;
|
|
149
113
|
}
|
|
150
114
|
|
|
151
|
-
// ─── Core logic ─────────────────────────────────────────────────────────────
|
|
152
|
-
|
|
153
115
|
async function getSubdirectories(dir) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return [];
|
|
161
|
-
}
|
|
116
|
+
if (!(await pathExists(dir))) return [];
|
|
117
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
118
|
+
return entries
|
|
119
|
+
.filter((e) => e.isDirectory() && !e.name.startsWith("."))
|
|
120
|
+
.map((e) => e.name)
|
|
121
|
+
.sort((a, b) => a.localeCompare(b));
|
|
162
122
|
}
|
|
163
123
|
|
|
164
|
-
async function processPowerDir(powerName) {
|
|
165
|
-
const powerDir = path.join(
|
|
124
|
+
async function processPowerDir(pair, powerName) {
|
|
125
|
+
const powerDir = path.join(pair.powersRoot, powerName);
|
|
166
126
|
const powerMdPath = path.join(powerDir, "POWER.md");
|
|
167
127
|
|
|
168
|
-
|
|
169
|
-
// skills/<name>/SKILL.md ← canonical; what `cbx install` copies to the platform
|
|
170
|
-
// powers/<name>/SKILL.md ← local fallback only (may be a stale copy)
|
|
171
|
-
// Using skills/ as primary ensures POWER.md is generated from the same
|
|
172
|
-
// content that users receive when they run `cbx install`.
|
|
173
|
-
const canonicalSkill = path.join(SKILLS_ROOT, powerName, "SKILL.md");
|
|
128
|
+
const canonicalSkill = path.join(pair.skillsRoot, powerName, "SKILL.md");
|
|
174
129
|
const localSkill = path.join(powerDir, "SKILL.md");
|
|
175
130
|
|
|
176
131
|
let skillSource;
|
|
177
132
|
if (await pathExists(canonicalSkill)) {
|
|
178
133
|
skillSource = canonicalSkill;
|
|
179
134
|
} else if (await pathExists(localSkill)) {
|
|
180
|
-
skillSource = localSkill;
|
|
135
|
+
skillSource = localSkill;
|
|
181
136
|
} else {
|
|
182
137
|
return {
|
|
183
138
|
name: powerName,
|
|
184
139
|
result: "skip",
|
|
185
140
|
reason: "no SKILL.md found in skills/ or powers/",
|
|
141
|
+
pair: pair.label
|
|
186
142
|
};
|
|
187
143
|
}
|
|
188
144
|
|
|
@@ -192,45 +148,42 @@ async function processPowerDir(powerName) {
|
|
|
192
148
|
name: powerName,
|
|
193
149
|
result: "skip",
|
|
194
150
|
reason: "POWER.md already exists (use --force to overwrite)",
|
|
151
|
+
pair: pair.label
|
|
195
152
|
};
|
|
196
153
|
}
|
|
197
154
|
|
|
198
155
|
const skillContent = await readUtf8(skillSource);
|
|
199
156
|
const powerContent = buildPowerContent(skillContent);
|
|
200
|
-
|
|
201
157
|
await writeUtf8(powerMdPath, powerContent);
|
|
202
158
|
|
|
203
159
|
return {
|
|
204
160
|
name: powerName,
|
|
205
161
|
result: powerExists ? "updated" : "created",
|
|
206
162
|
source: path.relative(ROOT, skillSource),
|
|
163
|
+
pair: pair.label
|
|
207
164
|
};
|
|
208
165
|
}
|
|
209
166
|
|
|
210
|
-
async function syncFromSkills() {
|
|
211
|
-
const skillDirs = await getSubdirectories(
|
|
167
|
+
async function syncFromSkills(pair) {
|
|
168
|
+
const skillDirs = await getSubdirectories(pair.skillsRoot);
|
|
212
169
|
const created = [];
|
|
213
170
|
|
|
214
171
|
for (const name of skillDirs) {
|
|
215
|
-
|
|
216
|
-
if (name.startsWith(".") || name.endsWith(".json") || name.endsWith(".md"))
|
|
217
|
-
continue;
|
|
172
|
+
if (name.startsWith(".") || name.endsWith(".json") || name.endsWith(".md")) continue;
|
|
218
173
|
|
|
219
|
-
const powerDir = path.join(
|
|
220
|
-
const skillDir = path.join(
|
|
174
|
+
const powerDir = path.join(pair.powersRoot, name);
|
|
175
|
+
const skillDir = path.join(pair.skillsRoot, name);
|
|
221
176
|
const skillMdSrc = path.join(skillDir, "SKILL.md");
|
|
222
177
|
|
|
223
178
|
if (!(await pathExists(skillMdSrc))) continue;
|
|
224
|
-
if (await pathExists(powerDir)) continue;
|
|
179
|
+
if (await pathExists(powerDir)) continue;
|
|
225
180
|
|
|
226
|
-
// Create power directory and copy SKILL.md
|
|
227
181
|
const skillMdDest = path.join(powerDir, "SKILL.md");
|
|
228
182
|
if (!DRY_RUN) {
|
|
229
183
|
await fs.mkdir(powerDir, { recursive: true });
|
|
230
184
|
await fs.copyFile(skillMdSrc, skillMdDest);
|
|
231
185
|
}
|
|
232
186
|
|
|
233
|
-
// Copy steering/, templates/, references/ if they exist
|
|
234
187
|
for (const subdir of ["steering", "templates", "references"]) {
|
|
235
188
|
const srcSub = path.join(skillDir, subdir);
|
|
236
189
|
const destSub = path.join(powerDir, subdir);
|
|
@@ -245,166 +198,106 @@ async function syncFromSkills() {
|
|
|
245
198
|
return created;
|
|
246
199
|
}
|
|
247
200
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
* This keeps powers/<name>/SKILL.md byte-identical to what `cbx install` will
|
|
251
|
-
* deliver to users, so Kiro and cbx users always see the same skill content.
|
|
252
|
-
*/
|
|
253
|
-
async function syncSkillsToPowers() {
|
|
254
|
-
const powerDirs = await getSubdirectories(POWERS_ROOT);
|
|
201
|
+
async function syncSkillsToPowers(pair) {
|
|
202
|
+
const powerDirs = await getSubdirectories(pair.powersRoot);
|
|
255
203
|
const synced = [];
|
|
256
204
|
const unchanged = [];
|
|
257
205
|
const missing = [];
|
|
258
206
|
|
|
259
207
|
for (const name of powerDirs) {
|
|
260
|
-
const canonicalSkill = path.join(
|
|
261
|
-
const powerSkill = path.join(
|
|
208
|
+
const canonicalSkill = path.join(pair.skillsRoot, name, "SKILL.md");
|
|
209
|
+
const powerSkill = path.join(pair.powersRoot, name, "SKILL.md");
|
|
262
210
|
|
|
263
211
|
if (!(await pathExists(canonicalSkill))) {
|
|
264
212
|
missing.push(name);
|
|
265
213
|
continue;
|
|
266
214
|
}
|
|
267
215
|
|
|
268
|
-
const
|
|
269
|
-
const
|
|
270
|
-
? await readUtf8(powerSkill)
|
|
271
|
-
: null;
|
|
216
|
+
const canonicalContent = await readUtf8(canonicalSkill);
|
|
217
|
+
const existingContent = (await pathExists(powerSkill)) ? await readUtf8(powerSkill) : null;
|
|
272
218
|
|
|
273
|
-
if (
|
|
219
|
+
if (existingContent === canonicalContent) {
|
|
274
220
|
unchanged.push(name);
|
|
275
221
|
continue;
|
|
276
222
|
}
|
|
277
223
|
|
|
278
|
-
|
|
279
|
-
await fs.mkdir(path.join(POWERS_ROOT, name), { recursive: true });
|
|
280
|
-
await fs.copyFile(canonicalSkill, powerSkill);
|
|
281
|
-
}
|
|
282
|
-
|
|
224
|
+
await writeUtf8(powerSkill, canonicalContent);
|
|
283
225
|
synced.push(name);
|
|
284
226
|
}
|
|
285
227
|
|
|
286
228
|
return { synced, unchanged, missing };
|
|
287
229
|
}
|
|
288
230
|
|
|
289
|
-
// ─── Main ───────────────────────────────────────────────────────────────────
|
|
290
|
-
|
|
291
231
|
async function main() {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
"Sync-skills: syncing canonical SKILL.md from skills/ → powers/",
|
|
298
|
-
);
|
|
299
|
-
if (FROM_SKILLS)
|
|
300
|
-
console.log("From-skills: creating missing power dirs from skills/");
|
|
301
|
-
console.log();
|
|
302
|
-
|
|
303
|
-
// 1a. Sync canonical SKILL.md from skills/ → powers/ so powers/SKILL.md matches
|
|
304
|
-
// what `cbx install` delivers (cubis.js always installs from skills/, not powers/).
|
|
305
|
-
if (SYNC_SKILLS) {
|
|
306
|
-
const { synced, missing } = await syncSkillsToPowers();
|
|
307
|
-
if (synced.length > 0) {
|
|
308
|
-
console.log(
|
|
309
|
-
`Synced SKILL.md for ${synced.length} power${synced.length === 1 ? "" : "s"} from skills/:`,
|
|
310
|
-
);
|
|
311
|
-
for (const name of synced) {
|
|
312
|
-
console.log(` ↺ ${name}/SKILL.md`);
|
|
313
|
-
}
|
|
314
|
-
console.log();
|
|
315
|
-
} else {
|
|
316
|
-
console.log(
|
|
317
|
-
"All power SKILL.md files are already in sync with skills/.\n",
|
|
318
|
-
);
|
|
232
|
+
const pairResults = [];
|
|
233
|
+
|
|
234
|
+
for (const pair of ROOT_PAIRS) {
|
|
235
|
+
if (!(await pathExists(pair.skillsRoot)) && !(await pathExists(pair.powersRoot))) {
|
|
236
|
+
continue;
|
|
319
237
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
)
|
|
324
|
-
|
|
325
|
-
|
|
238
|
+
|
|
239
|
+
if (FROM_SKILLS) {
|
|
240
|
+
const created = await syncFromSkills(pair);
|
|
241
|
+
if (created.length > 0) {
|
|
242
|
+
console.log(`${DRY_RUN ? "[dry-run] " : ""}Created ${created.length} missing powers from ${pair.label}/skills:`);
|
|
243
|
+
for (const name of created) {
|
|
244
|
+
console.log(` + ${pair.label}/${name}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
326
247
|
}
|
|
327
|
-
}
|
|
328
248
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
for (const name of created) {
|
|
337
|
-
console.log(` + ${name}/`);
|
|
249
|
+
if (SYNC_SKILLS) {
|
|
250
|
+
const syncResult = await syncSkillsToPowers(pair);
|
|
251
|
+
if (syncResult.synced.length > 0) {
|
|
252
|
+
console.log(`${DRY_RUN ? "[dry-run] " : ""}Synced ${syncResult.synced.length} SKILL.md files from ${pair.label}/skills to ${pair.label}/powers`);
|
|
253
|
+
}
|
|
254
|
+
if (syncResult.missing.length > 0) {
|
|
255
|
+
console.log(`Skipping ${syncResult.missing.length} ${pair.label}/powers entries with no canonical ${pair.label}/skills source.`);
|
|
338
256
|
}
|
|
339
|
-
console.log();
|
|
340
|
-
} else {
|
|
341
|
-
console.log("No new power directories needed from skills/.\n");
|
|
342
257
|
}
|
|
343
|
-
}
|
|
344
258
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
const results = { created: [], updated: [], skipped: [], errors: [] };
|
|
259
|
+
const powerDirs = await getSubdirectories(pair.powersRoot);
|
|
260
|
+
if (powerDirs.length === 0) continue;
|
|
348
261
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
if (result.result === "created") results.created.push(result);
|
|
353
|
-
else if (result.result === "updated") results.updated.push(result);
|
|
354
|
-
else results.skipped.push(result);
|
|
355
|
-
} catch (err) {
|
|
356
|
-
results.errors.push({ name, error: err.message });
|
|
262
|
+
const results = [];
|
|
263
|
+
for (const powerName of powerDirs) {
|
|
264
|
+
results.push(await processPowerDir(pair, powerName));
|
|
357
265
|
}
|
|
266
|
+
pairResults.push({ pair, results });
|
|
358
267
|
}
|
|
359
268
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
);
|
|
365
|
-
for (const r of results.created) {
|
|
366
|
-
console.log(` ✓ ${r.name}/POWER.md (from ${r.source})`);
|
|
367
|
-
}
|
|
368
|
-
console.log();
|
|
369
|
-
}
|
|
269
|
+
const allResults = pairResults.flatMap((item) => item.results);
|
|
270
|
+
const created = allResults.filter((r) => r.result === "created");
|
|
271
|
+
const updated = allResults.filter((r) => r.result === "updated");
|
|
272
|
+
const skipped = allResults.filter((r) => r.result === "skip");
|
|
370
273
|
|
|
371
|
-
if (
|
|
372
|
-
console.log(
|
|
373
|
-
|
|
374
|
-
);
|
|
375
|
-
for (const r of results.updated) {
|
|
376
|
-
console.log(` ↺ ${r.name}/POWER.md (from ${r.source})`);
|
|
377
|
-
}
|
|
378
|
-
console.log();
|
|
274
|
+
if (created.length === 0 && updated.length === 0 && skipped.length === 0) {
|
|
275
|
+
console.log("No powers directories found.");
|
|
276
|
+
return;
|
|
379
277
|
}
|
|
380
278
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
}
|
|
388
|
-
console.log();
|
|
279
|
+
console.log("\nPOWER.md generation summary");
|
|
280
|
+
console.log(` Created: ${created.length}`);
|
|
281
|
+
console.log(` Updated: ${updated.length}`);
|
|
282
|
+
console.log(` Skipped: ${skipped.length}`);
|
|
283
|
+
|
|
284
|
+
for (const result of [...created, ...updated]) {
|
|
285
|
+
console.log(` ${result.result === "created" ? "+" : "~"} [${result.pair}] ${result.name} (${result.source})`);
|
|
389
286
|
}
|
|
390
287
|
|
|
391
|
-
if (
|
|
392
|
-
console.
|
|
393
|
-
for (const
|
|
394
|
-
console.
|
|
288
|
+
if (skipped.length > 0) {
|
|
289
|
+
console.log("\nSkipped:");
|
|
290
|
+
for (const result of skipped) {
|
|
291
|
+
console.log(` - [${result.pair}] ${result.name}: ${result.reason}`);
|
|
395
292
|
}
|
|
396
|
-
console.log();
|
|
397
293
|
}
|
|
398
294
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
);
|
|
403
|
-
|
|
404
|
-
if (results.errors.length > 0) process.exit(1);
|
|
295
|
+
if (DRY_RUN) {
|
|
296
|
+
console.log("\nDry-run mode: no files were written.");
|
|
297
|
+
}
|
|
405
298
|
}
|
|
406
299
|
|
|
407
300
|
main().catch((err) => {
|
|
408
|
-
console.error(err);
|
|
301
|
+
console.error(err?.stack || err?.message || String(err));
|
|
409
302
|
process.exit(1);
|
|
410
303
|
});
|
|
@@ -1,88 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: atlassian-mcp
|
|
3
|
-
description:
|
|
4
|
-
license: MIT
|
|
2
|
+
name: "atlassian-mcp"
|
|
3
|
+
description: "Compatibility wrapper skill. Canonical MCP skill moved to mcp/skills/atlassian-mcp."
|
|
5
4
|
metadata:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
role: expert
|
|
11
|
-
scope: implementation
|
|
12
|
-
output-format: code
|
|
13
|
-
related-skills: mcp-developer, api-designer, security-reviewer
|
|
5
|
+
deprecated: true
|
|
6
|
+
replaced_by: "atlassian-mcp"
|
|
7
|
+
moved_to: "mcp/skills/atlassian-mcp/SKILL.md"
|
|
8
|
+
removal_target: "v0.6.0"
|
|
14
9
|
---
|
|
15
10
|
|
|
16
|
-
#
|
|
11
|
+
# atlassian-mcp (Compatibility Wrapper)
|
|
17
12
|
|
|
18
|
-
|
|
13
|
+
This legacy workflow-path skill is kept for backward compatibility.
|
|
19
14
|
|
|
20
|
-
|
|
15
|
+
Canonical MCP skill path:
|
|
16
|
+
- mcp/skills/atlassian-mcp/SKILL.md
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
## When to Use This Skill
|
|
25
|
-
|
|
26
|
-
- Querying Jira issues with JQL filters
|
|
27
|
-
- Searching or creating Confluence pages
|
|
28
|
-
- Automating sprint workflows and backlog management
|
|
29
|
-
- Setting up MCP server authentication (OAuth/API tokens)
|
|
30
|
-
- Syncing meeting notes to Jira tickets
|
|
31
|
-
- Generating documentation from issue data
|
|
32
|
-
- Debugging Atlassian API integration issues
|
|
33
|
-
- Choosing between official vs open-source MCP servers
|
|
34
|
-
|
|
35
|
-
## Core Workflow
|
|
36
|
-
|
|
37
|
-
1. **Select server** - Choose official cloud, open-source, or self-hosted MCP server
|
|
38
|
-
2. **Authenticate** - Configure OAuth 2.1, API tokens, or PAT credentials
|
|
39
|
-
3. **Design queries** - Write JQL for Jira, CQL for Confluence, test filters
|
|
40
|
-
4. **Implement workflow** - Build tool calls, handle pagination, error recovery
|
|
41
|
-
5. **Deploy** - Configure IDE integration, test permissions, monitor rate limits
|
|
42
|
-
|
|
43
|
-
## Reference Guide
|
|
44
|
-
|
|
45
|
-
Load detailed guidance based on context:
|
|
46
|
-
|
|
47
|
-
| Topic | Reference | Load When |
|
|
48
|
-
|-------|-----------|-----------|
|
|
49
|
-
| Server Setup | `references/mcp-server-setup.md` | Installation, choosing servers, configuration |
|
|
50
|
-
| Jira Operations | `references/jira-queries.md` | JQL syntax, issue CRUD, sprints, boards |
|
|
51
|
-
| Confluence Ops | `references/confluence-operations.md` | CQL search, page creation, spaces, comments |
|
|
52
|
-
| Authentication | `references/authentication-patterns.md` | OAuth 2.0, API tokens, permission scopes |
|
|
53
|
-
| Common Workflows | `references/common-workflows.md` | Issue triage, doc sync, sprint automation |
|
|
54
|
-
|
|
55
|
-
## Constraints
|
|
56
|
-
|
|
57
|
-
### MUST DO
|
|
58
|
-
- Respect user permissions and workspace access controls
|
|
59
|
-
- Validate JQL/CQL queries before execution
|
|
60
|
-
- Handle rate limits with exponential backoff
|
|
61
|
-
- Use pagination for large result sets (50-100 items per page)
|
|
62
|
-
- Implement error recovery for network failures
|
|
63
|
-
- Log API calls for debugging and audit trails
|
|
64
|
-
- Test with read-only operations first
|
|
65
|
-
- Document required permission scopes
|
|
66
|
-
|
|
67
|
-
### MUST NOT DO
|
|
68
|
-
- Hardcode API tokens or OAuth secrets in code
|
|
69
|
-
- Ignore rate limit headers from Atlassian APIs
|
|
70
|
-
- Create issues without validating required fields
|
|
71
|
-
- Skip input sanitization on user-provided query strings
|
|
72
|
-
- Deploy without testing permission boundaries
|
|
73
|
-
- Update production data without confirmation prompts
|
|
74
|
-
- Mix different authentication methods in same session
|
|
75
|
-
- Expose sensitive issue data in logs or error messages
|
|
76
|
-
|
|
77
|
-
## Output Templates
|
|
78
|
-
|
|
79
|
-
When implementing Atlassian MCP features, provide:
|
|
80
|
-
1. MCP server configuration (JSON/environment vars)
|
|
81
|
-
2. Query examples (JQL/CQL with explanations)
|
|
82
|
-
3. Tool call implementation with error handling
|
|
83
|
-
4. Authentication setup instructions
|
|
84
|
-
5. Brief explanation of permission requirements
|
|
85
|
-
|
|
86
|
-
## Knowledge Reference
|
|
87
|
-
|
|
88
|
-
Atlassian MCP Server (official), mcp-atlassian (sooperset), atlassian-mcp (xuanxt), JQL (Jira Query Language), CQL (Confluence Query Language), OAuth 2.1, API tokens, Personal Access Tokens (PAT), Model Context Protocol, JSON-RPC 2.0, rate limiting, pagination, permission scopes, Jira REST API, Confluence REST API
|
|
18
|
+
Install MCP skills with: cbx workflows install --include-mcp
|