opencastle 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +30 -3
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +27 -3
- package/dist/cli/adapters/cursor.js.map +1 -1
- package/dist/cli/adapters/opencode.d.ts +20 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +265 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/vscode.d.ts.map +1 -1
- package/dist/cli/adapters/vscode.js +37 -6
- package/dist/cli/adapters/vscode.js.map +1 -1
- package/dist/cli/copy.d.ts +12 -0
- package/dist/cli/copy.d.ts.map +1 -1
- package/dist/cli/copy.js +27 -0
- package/dist/cli/copy.js.map +1 -1
- package/dist/cli/detect.d.ts +1 -1
- package/dist/cli/detect.js +21 -15
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +143 -94
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -6
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +104 -33
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/prompt.d.ts +19 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +143 -0
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/stack-config.d.ts +23 -0
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +128 -124
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +26 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +26 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +60 -19
- package/dist/cli/update.js.map +1 -1
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.js +48 -0
- package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
- package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
- package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/convex/config.js +32 -0
- package/dist/orchestrator/plugins/convex/config.js.map +1 -0
- package/dist/orchestrator/plugins/index.d.ts +28 -0
- package/dist/orchestrator/plugins/index.d.ts.map +1 -0
- package/dist/orchestrator/plugins/index.js +63 -0
- package/dist/orchestrator/plugins/index.js.map +1 -0
- package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
- package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/jira/config.js +29 -0
- package/dist/orchestrator/plugins/jira/config.js.map +1 -0
- package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
- package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/linear/config.js +33 -0
- package/dist/orchestrator/plugins/linear/config.js.map +1 -0
- package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
- package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/nx/config.js +28 -0
- package/dist/orchestrator/plugins/nx/config.js.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.js +43 -0
- package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
- package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
- package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/slack/config.js +34 -0
- package/dist/orchestrator/plugins/slack/config.js.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.js +40 -0
- package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.js +33 -0
- package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
- package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
- package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/teams/config.js +43 -0
- package/dist/orchestrator/plugins/teams/config.js.map +1 -0
- package/dist/orchestrator/plugins/types.d.ts +61 -0
- package/dist/orchestrator/plugins/types.d.ts.map +1 -0
- package/dist/orchestrator/plugins/types.js +2 -0
- package/dist/orchestrator/plugins/types.js.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.js +32 -0
- package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/adapters/claude-code.ts +36 -4
- package/src/cli/adapters/cursor.ts +42 -4
- package/src/cli/adapters/opencode.ts +320 -0
- package/src/cli/adapters/vscode.ts +40 -8
- package/src/cli/copy.ts +32 -0
- package/src/cli/detect.ts +17 -17
- package/src/cli/init.ts +157 -99
- package/src/cli/manifest.ts +2 -1
- package/src/cli/mcp.ts +129 -50
- package/src/cli/prompt.ts +176 -0
- package/src/cli/stack-config.ts +174 -145
- package/src/cli/types.ts +39 -8
- package/src/cli/update.ts +71 -20
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/orchestrator/agent-workflows/README.md +1 -1
- package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
- package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
- package/src/orchestrator/agent-workflows/database-migration.md +11 -11
- package/src/orchestrator/agent-workflows/feature-implementation.md +19 -12
- package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
- package/src/orchestrator/agent-workflows/refactoring.md +10 -10
- package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
- package/src/orchestrator/agent-workflows/security-audit.md +12 -12
- package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
- package/src/orchestrator/agents/api-designer.agent.md +1 -1
- package/src/orchestrator/agents/architect.agent.md +2 -2
- package/src/orchestrator/agents/content-engineer.agent.md +3 -3
- package/src/orchestrator/agents/copywriter.agent.md +2 -2
- package/src/orchestrator/agents/data-expert.agent.md +6 -6
- package/src/orchestrator/agents/database-engineer.agent.md +3 -3
- package/src/orchestrator/agents/developer.agent.md +4 -4
- package/src/orchestrator/agents/devops-expert.agent.md +5 -5
- package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
- package/src/orchestrator/agents/performance-expert.agent.md +2 -2
- package/src/orchestrator/agents/release-manager.agent.md +4 -4
- package/src/orchestrator/agents/researcher.agent.md +3 -3
- package/src/orchestrator/agents/reviewer.agent.md +1 -1
- package/src/orchestrator/agents/security-expert.agent.md +4 -4
- package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
- package/src/orchestrator/agents/team-lead.agent.md +56 -38
- package/src/orchestrator/agents/testing-expert.agent.md +5 -5
- package/src/orchestrator/agents/ui-ux-expert.agent.md +6 -6
- package/src/orchestrator/copilot-instructions.md +1 -1
- package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
- package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
- package/src/orchestrator/customizations/DISPUTES.md +5 -5
- package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
- package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
- package/src/orchestrator/customizations/README.md +5 -2
- package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
- package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
- package/src/orchestrator/customizations/logs/README.md +1 -1
- package/src/orchestrator/customizations/project/decisions.md +31 -0
- package/src/orchestrator/customizations/project/docs-structure.md +16 -5
- package/src/orchestrator/customizations/project/roadmap.md +24 -0
- package/src/orchestrator/customizations/project/tracker-config.md +1 -1
- package/src/orchestrator/customizations/stack/cms-config.md +1 -1
- package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
- package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
- package/src/orchestrator/instructions/general.instructions.md +102 -40
- package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
- package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
- package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
- package/src/orchestrator/plugins/contentful/config.ts +49 -0
- package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
- package/src/orchestrator/plugins/convex/config.ts +33 -0
- package/src/orchestrator/plugins/index.ts +85 -0
- package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
- package/src/orchestrator/plugins/jira/config.ts +30 -0
- package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
- package/src/orchestrator/plugins/linear/config.ts +34 -0
- package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
- package/src/orchestrator/plugins/nx/config.ts +29 -0
- package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
- package/src/orchestrator/plugins/sanity/config.ts +44 -0
- package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
- package/src/orchestrator/plugins/slack/config.ts +35 -0
- package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
- package/src/orchestrator/plugins/strapi/config.ts +41 -0
- package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
- package/src/orchestrator/plugins/supabase/config.ts +34 -0
- package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
- package/src/orchestrator/plugins/teams/config.ts +44 -0
- package/src/orchestrator/plugins/types.ts +79 -0
- package/src/orchestrator/plugins/vercel/config.ts +33 -0
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +8 -8
- package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
- package/src/orchestrator/prompts/bug-fix.prompt.md +27 -22
- package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
- package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
- package/src/orchestrator/prompts/implement-feature.prompt.md +34 -29
- package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
- package/src/orchestrator/prompts/quick-refinement.prompt.md +23 -19
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +19 -5
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
- package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
- package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/SKILL.md +4 -4
- package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
- package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/fast-review/SKILL.md +18 -7
- package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
- package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
- package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
- package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
- package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
- package/src/orchestrator/skills/react-development/SKILL.md +3 -3
- package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
- package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
- package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
- package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
- package/src/orchestrator/skills/validation-gates/SKILL.md +157 -27
- package/src/orchestrator/mcp.json +0 -69
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!-- Populated by agents. Add ADRs here when architectural decisions are made. -->
|
|
2
|
+
|
|
3
|
+
# Architecture Decision Records
|
|
4
|
+
|
|
5
|
+
Log of architectural decisions made during the project. Each ADR captures the context, decision, and consequences so future sessions understand why things are the way they are.
|
|
6
|
+
|
|
7
|
+
## How to Use
|
|
8
|
+
|
|
9
|
+
- **Before making an architectural decision:** Check existing ADRs for prior decisions in the same area
|
|
10
|
+
- **After making a decision:** Add a new ADR with the next available ID
|
|
11
|
+
- **When revisiting a decision:** Update the status to `Superseded` and reference the new ADR
|
|
12
|
+
|
|
13
|
+
## Decisions
|
|
14
|
+
|
|
15
|
+
### ADR-001: _Template — Short Decision Title_
|
|
16
|
+
|
|
17
|
+
| Field | Value |
|
|
18
|
+
|-------|-------|
|
|
19
|
+
| **ID** | ADR-001 |
|
|
20
|
+
| **Date** | YYYY-MM-DD |
|
|
21
|
+
| **Status** | Proposed / Accepted / Deprecated / Superseded |
|
|
22
|
+
|
|
23
|
+
**Context:** _What is the issue that we're seeing that motivates this decision?_
|
|
24
|
+
|
|
25
|
+
**Decision:** _What is the change that we're proposing and/or doing?_
|
|
26
|
+
|
|
27
|
+
**Consequences:** _What becomes easier or more difficult to do because of this change?_
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
_Add new ADRs above this line, incrementing the ID._
|
|
@@ -4,20 +4,31 @@
|
|
|
4
4
|
|
|
5
5
|
Project-specific documentation layout referenced by the `documentation-standards` skill.
|
|
6
6
|
|
|
7
|
+
Documentation files live in the `.github/customizations/` directory alongside other project-specific configuration. Key documentation files:
|
|
8
|
+
|
|
9
|
+
- `.github/customizations/KNOWN-ISSUES.md` — Tracked issues, limitations, and accepted risks
|
|
10
|
+
- `.github/customizations/project/roadmap.md` — Project roadmap and feature status
|
|
11
|
+
- `.github/customizations/project/decisions.md` — Architecture Decision Records
|
|
12
|
+
- `.github/customizations/LESSONS-LEARNED.md` — Agent knowledge base of retries and workarounds
|
|
13
|
+
|
|
7
14
|
## Directory Tree
|
|
8
15
|
|
|
9
|
-
<!-- Map your project's
|
|
16
|
+
<!-- Map your project's documentation directory here if one exists -->
|
|
10
17
|
|
|
11
18
|
```
|
|
12
|
-
|
|
13
|
-
├──
|
|
14
|
-
|
|
19
|
+
.github/customizations/
|
|
20
|
+
├── KNOWN-ISSUES.md — Tracked issues and limitations
|
|
21
|
+
├── LESSONS-LEARNED.md — Agent knowledge base
|
|
22
|
+
└── project/
|
|
23
|
+
├── roadmap.md — Feature roadmap
|
|
24
|
+
├── decisions.md — Architecture Decision Records
|
|
25
|
+
└── docs-structure.md — This file
|
|
15
26
|
```
|
|
16
27
|
|
|
17
28
|
## Practices
|
|
18
29
|
|
|
19
30
|
- **Check Known Issues** before starting any task
|
|
20
|
-
- **Review Architecture**
|
|
31
|
+
- **Review Architecture** decisions for context
|
|
21
32
|
- **Update roadmap** after completing features
|
|
22
33
|
- **Add new issues** with: Issue ID, Status, Severity, Evidence, Root Cause, Solution Options
|
|
23
34
|
- **Archive** outdated docs rather than deleting
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!-- Populated by the bootstrap-customizations prompt or manually. -->
|
|
2
|
+
|
|
3
|
+
# Project Roadmap
|
|
4
|
+
|
|
5
|
+
High-level roadmap of planned features and improvements. Updated by agents as tasks are completed.
|
|
6
|
+
|
|
7
|
+
## How to Use
|
|
8
|
+
|
|
9
|
+
- **Before implementing a feature:** Check the roadmap for scope, status, and acceptance criteria
|
|
10
|
+
- **After completing a feature:** Mark the item with ✅, add the completion date and tracker issue IDs
|
|
11
|
+
- **When planning:** Add new items with priority and description
|
|
12
|
+
|
|
13
|
+
## Roadmap Items
|
|
14
|
+
|
|
15
|
+
| Status | Priority | Description | Tracker Issues |
|
|
16
|
+
|--------|----------|-------------|----------------|
|
|
17
|
+
| Planned | High | _Example: Short description of the feature_ | — |
|
|
18
|
+
|
|
19
|
+
### Status Values
|
|
20
|
+
|
|
21
|
+
- **Planned** — Scoped but not yet started
|
|
22
|
+
- **In Progress** — Actively being worked on
|
|
23
|
+
- **Done** — Completed and verified
|
|
24
|
+
- **Cancelled** — Removed from scope with documented reason
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Populated by the `bootstrap-customizations` prompt.
|
|
4
4
|
Rename this file to match your tracker: linear-config.md, jira-config.md, etc. -->
|
|
5
5
|
|
|
6
|
-
Project-specific task tracker details referenced by
|
|
6
|
+
Project-specific task tracker details referenced by task management workflows.
|
|
7
7
|
|
|
8
8
|
## Workspace
|
|
9
9
|
|
|
@@ -19,7 +19,7 @@ Project-specific CMS details referenced by the corresponding CMS skill (e.g., `s
|
|
|
19
19
|
|
|
20
20
|
## Query Examples
|
|
21
21
|
|
|
22
|
-
<!-- Provide representative query examples for the CMS query language (GROQ, GraphQL
|
|
22
|
+
<!-- Provide representative query examples for the CMS query language (e.g., GROQ, GraphQL) -->
|
|
23
23
|
|
|
24
24
|
## Key Files
|
|
25
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Notifications Configuration
|
|
2
2
|
|
|
3
|
-
<!-- Populated by the `bootstrap-customizations` prompt based on `.opencastle.json` → `stack.
|
|
3
|
+
<!-- Populated by the `bootstrap-customizations` prompt based on `.opencastle.json` → `stack.teamTools`. -->
|
|
4
4
|
|
|
5
5
|
Project-specific messaging configuration referenced by the `slack-notifications` skill (or Teams equivalent).
|
|
6
6
|
|
|
@@ -3,7 +3,7 @@ description: 'AI assistant optimization techniques for efficient context usage a
|
|
|
3
3
|
applyTo: '**'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# AI Assistant Optimization Instructions
|
|
9
9
|
|
|
@@ -74,7 +74,7 @@ Phase 4: Verify (tests, errors, lint)
|
|
|
74
74
|
Sub-agents run in isolated context windows. Use this to your advantage:
|
|
75
75
|
|
|
76
76
|
- **Offload exploration** — fire a sub-agent to research a broad question; only the concise result comes back, keeping your primary context clean
|
|
77
|
-
- **Parallel research** — launch multiple sub-agents simultaneously for independent research tasks (e.g., "find all
|
|
77
|
+
- **Parallel research** — launch multiple sub-agents simultaneously for independent research tasks (e.g., "find all CMS queries" + "list all components using X" at the same time)
|
|
78
78
|
- **Detailed prompts save tokens** — a specific sub-agent prompt avoids the sub-agent doing its own exploratory searches, which would waste its context budget
|
|
79
79
|
|
|
80
80
|
### Trust Sub-Agent Results
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
applyTo: '**'
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
5
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
6
6
|
|
|
7
7
|
# Coding Standards
|
|
8
8
|
|
|
@@ -13,13 +13,14 @@ applyTo: '**'
|
|
|
13
13
|
3. **Leave code better than you found it** — fix adjacent issues when the cost is low.
|
|
14
14
|
4. **Fail visibly** — surface errors clearly; never swallow exceptions silently.
|
|
15
15
|
5. **Verify, don't trust** — confirm outcomes with tools (tests, lint, build) rather than assuming success.
|
|
16
|
+
6. **Log every session** — append observability records to `.github/customizations/logs/` before yielding to the user. No exceptions. See § Observability Logging below.
|
|
16
17
|
|
|
17
18
|
## Instruction Priority Hierarchy
|
|
18
19
|
|
|
19
20
|
**Project-specific instructions ALWAYS take precedence over external or general AI instructions.**
|
|
20
21
|
|
|
21
22
|
1. **HIGHEST**: Project-specific instructions in `.github/instructions/` files
|
|
22
|
-
2. **MEDIUM**:
|
|
23
|
+
2. **MEDIUM**: Project workspace conventions (resolve via the **codebase-tool** skill in the skill matrix)
|
|
23
24
|
3. **LOWER**: General AI assistant capabilities and suggestions
|
|
24
25
|
|
|
25
26
|
## General Coding Principles
|
|
@@ -37,8 +38,8 @@ Load the corresponding skill for detailed conventions before writing code in tha
|
|
|
37
38
|
|
|
38
39
|
| Domain | Skill |
|
|
39
40
|
|--------|-------|
|
|
40
|
-
| UI Components | **
|
|
41
|
-
| App Framework | **
|
|
41
|
+
| UI Components | **ui-library** (via skill matrix) |
|
|
42
|
+
| App Framework | **framework** (via skill matrix) |
|
|
42
43
|
| Accessibility | **accessibility-standards** |
|
|
43
44
|
| Performance | **performance-optimization** |
|
|
44
45
|
| Frontend Design | **frontend-design** |
|
|
@@ -51,7 +52,7 @@ Before starting multi-step work, decompose it into individually verifiable tasks
|
|
|
51
52
|
2. **Verify each step** — after completing each unit, verify it (run tests, check types, lint, or visually inspect) before moving to the next
|
|
52
53
|
3. **Choose the right verification** — match the check to the change type:
|
|
53
54
|
- Logic change → run unit tests
|
|
54
|
-
- Type/interface change → run type-check (
|
|
55
|
+
- Type/interface change → run the project's type-check / lint command (see the **codebase-tool** skill)
|
|
55
56
|
- UI change → start dev server and visually inspect in the browser
|
|
56
57
|
- Build config change → run a full build
|
|
57
58
|
4. **Batch edits, then build** — group related edits across files, then run one build — not build-per-edit
|
|
@@ -70,9 +71,9 @@ Before starting multi-step work, decompose it into individually verifiable tasks
|
|
|
70
71
|
**NEVER commit or push directly to the `main` branch.** All changes must go through a feature/fix branch and a pull request.
|
|
71
72
|
|
|
72
73
|
1. **Create a branch** from `main` before making any changes: `git checkout -b <type>/<ticket-id>-<short-description>` (e.g., `fix/tas-21-places-redirect-loop`, `feat/tas-15-new-filter`)
|
|
73
|
-
2. **Commit to the branch** — never to `main`. Reference the
|
|
74
|
+
2. **Commit to the branch** — never to `main`. Reference the task tracker issue ID in every commit message (e.g., `TAS-42: Fix token refresh logic`)
|
|
74
75
|
3. **Push the branch** and open a pull request on GitHub. **Do NOT merge** — PRs are opened for review only
|
|
75
|
-
4. **Link the PR to
|
|
76
|
+
4. **Link the PR to the task tracker** — Update the issue description with the PR URL so progress is traceable
|
|
76
77
|
5. **Merge via PR** — the only way code reaches `main`, and only after review/approval
|
|
77
78
|
|
|
78
79
|
Branch naming convention: `<type>/<ticket-id>-<short-description>` where type is `fix`, `feat`, `chore`, `refactor`, `perf`, or `docs`.
|
|
@@ -91,31 +92,27 @@ Branch naming convention: `<type>/<ticket-id>-<short-description>` where type is
|
|
|
91
92
|
Every task that produces code changes — whether a roadmap feature, bug fix, follow-up, data pipeline, or refactor — must deliver:
|
|
92
93
|
|
|
93
94
|
1. **Dedicated branch** — `<type>/<ticket-id>-<short-description>` created from `main`
|
|
94
|
-
2. **Atomic commits** — Each commit references the
|
|
95
|
+
2. **Atomic commits** — Each commit references the issue ID (e.g., `TAS-42: Add filter component`)
|
|
95
96
|
3. **Pushed branch** — Branch pushed to origin
|
|
96
97
|
4. **Open PR** — Use `gh` CLI to create the PR. **Do NOT merge** — PRs are opened for review only:
|
|
97
98
|
```bash
|
|
98
99
|
GH_PAGER=cat gh pr create --base main --title "TAS-XX: Short description" --body "Resolves TAS-XX"
|
|
99
100
|
```
|
|
100
|
-
5. **
|
|
101
|
+
5. **Task tracker linkage** — The issue is updated with the PR URL, and the PR description references the issue ID
|
|
101
102
|
|
|
102
|
-
##
|
|
103
|
+
## Build & Task Commands
|
|
103
104
|
|
|
104
|
-
**
|
|
105
|
+
Use the project's configured task runner for all build, test, lint, and serve commands. **Never invoke test runners or linters directly** — always use the task runner wrapper.
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
yarn nx run <project-name>:test [--coverage] [-u]
|
|
108
|
-
yarn nx run <project-name>:lint --fix
|
|
109
|
-
yarn nx run <project-name>:lint-styles --fix
|
|
110
|
-
yarn nx run <project-name>:build
|
|
111
|
-
yarn nx run <project-name>:serve
|
|
112
|
-
yarn nx generate <generator-name>
|
|
113
|
-
yarn nx affected -t <target>
|
|
114
|
-
```
|
|
107
|
+
Resolve exact commands by loading the **codebase-tool** skill from the skill matrix. Common tasks:
|
|
115
108
|
|
|
116
|
-
**
|
|
109
|
+
- **Test** — run project tests (with optional coverage)
|
|
110
|
+
- **Lint** — run linter with auto-fix
|
|
111
|
+
- **Build** — production build
|
|
112
|
+
- **Serve** — start dev server
|
|
113
|
+
- **Affected** — run a target for all projects affected by current changes
|
|
117
114
|
|
|
118
|
-
|
|
115
|
+
**Exception:** Tools without task runner targets may be invoked directly (e.g., CMS CLI commands, database CLI commands). Check the project's task runner config first; only bypass it when no target exists.
|
|
119
116
|
|
|
120
117
|
## Documentation
|
|
121
118
|
|
|
@@ -127,25 +124,27 @@ Follow prompt caching and batch processing best practices. See [AI Optimization
|
|
|
127
124
|
|
|
128
125
|
## Discovered Issues Policy
|
|
129
126
|
|
|
130
|
-
|
|
127
|
+
> **⛔ No issue gets ignored.** Untracked bugs discovered during work are a quality gate failure.
|
|
128
|
+
|
|
129
|
+
When you encounter a bug, error, or unexpected behavior that is unrelated to the current task:
|
|
131
130
|
|
|
132
131
|
1. **Check if already tracked:**
|
|
133
|
-
- Search
|
|
134
|
-
- If you have
|
|
132
|
+
- Search `.github/customizations/KNOWN-ISSUES.md` for a matching entry
|
|
133
|
+
- If you have task tracker tools available, also search for open bugs (use `search_issues` or `list_issues` with bug label)
|
|
135
134
|
2. **If found tracked** — skip it, continue with your current work
|
|
136
135
|
3. **If NOT tracked** — you must act:
|
|
137
|
-
- **Unfixable limitation** (third-party constraint, platform restriction, upstream dependency) → add it to
|
|
138
|
-
- **Fixable bug** → if you have
|
|
136
|
+
- **Unfixable limitation** (third-party constraint, platform restriction, upstream dependency) → add it to `.github/customizations/KNOWN-ISSUES.md` with: Issue ID, Status, Severity, Evidence, Root Cause, Solution Options
|
|
137
|
+
- **Fixable bug** → if you have task tracker tools, create a ticket with label `bug`, appropriate priority, and a clear description of the symptoms, reproduction steps, and affected files. If you do NOT have task tracker tools, add a `**Discovered Issues**` section to your output listing the bug details so the Team Lead can track it.
|
|
139
138
|
|
|
140
139
|
Never assume a pre-existing issue is somebody else's problem. If it's not tracked, track it.
|
|
141
140
|
|
|
142
141
|
## Task Tracking
|
|
143
142
|
|
|
144
|
-
Feature work is tracked
|
|
143
|
+
Feature work is tracked in the **task tracker** (see `tracker-config.md` for project details). The Team Lead agent creates and updates issues via MCP. For conventions, load the **task-management** skill.
|
|
145
144
|
|
|
146
|
-
### When
|
|
145
|
+
### When Task Tracker MCP Tools Are Unavailable
|
|
147
146
|
|
|
148
|
-
If
|
|
147
|
+
If task tracker MCP tools are not available in the current session, do NOT block on issue creation. Instead:
|
|
149
148
|
|
|
150
149
|
1. **Document planned issues** in your output with the title, description, and acceptance criteria you would have used
|
|
151
150
|
2. **Proceed with implementation** — the work is still valuable without a ticket number
|
|
@@ -155,37 +154,79 @@ If Linear MCP tools are not available in the current session, do NOT block on is
|
|
|
155
154
|
|
|
156
155
|
## Observability Logging (Mandatory)
|
|
157
156
|
|
|
157
|
+
> **⛔ HARD GATE — This is a blocking requirement, not a suggestion.**
|
|
158
|
+
> Do NOT respond to the user until you have appended the required log records.
|
|
159
|
+
> A session without log records is a failed session — regardless of code quality.
|
|
160
|
+
|
|
158
161
|
**Every agent MUST log every session to the observability NDJSON files.** No exceptions. No threshold. No "too small to log." The dashboard depends on this data.
|
|
159
162
|
|
|
160
163
|
### What to log
|
|
161
164
|
|
|
162
|
-
| File | Who appends | When |
|
|
163
|
-
|
|
164
|
-
| `sessions.ndjson` | **All agents** | After every session — always |
|
|
165
|
-
| `delegations.ndjson` | **Team Lead** | After each delegation to a specialist agent |
|
|
166
|
-
| `
|
|
165
|
+
| File | Who appends | When | Example command below |
|
|
166
|
+
|------|------------|------|----------------------|
|
|
167
|
+
| `sessions.ndjson` | **All agents** | After every session — always | ✅ |
|
|
168
|
+
| `delegations.ndjson` | **Team Lead** | After each delegation to a specialist agent | ✅ |
|
|
169
|
+
| `reviews.ndjson` | **Team Lead** (via fast-review skill) | After each fast review | ✅ |
|
|
170
|
+
| `panels.ndjson` | **Panel runner** (via panel majority vote skill) | After each majority-vote review | ✅ |
|
|
171
|
+
| `disputes.ndjson` | **Team Lead** (via dispute protocol) | After each dispute record | ✅ |
|
|
167
172
|
|
|
168
173
|
See `.github/customizations/logs/README.md` for the full schema of each record.
|
|
169
174
|
|
|
170
175
|
### How to log
|
|
171
176
|
|
|
172
|
-
Append one JSON line per task
|
|
177
|
+
Append one JSON line per task using `echo '...' >> <file>`. When the Team Lead works directly, use the agent role that best describes the work (e.g., `"agent": "Developer"`, `"agent": "UI-UX Expert"`). If a single conversation involves multiple distinct tasks, log one record per task.
|
|
173
178
|
|
|
179
|
+
**Session record** (ALL agents, EVERY session):
|
|
174
180
|
```bash
|
|
175
181
|
echo '{"timestamp":"2026-03-01T14:00:00Z","agent":"Developer","model":"claude-opus-4-6","task":"Fix login redirect bug","outcome":"success","duration_min":15,"files_changed":3,"retries":0,"lessons_added":[],"discoveries":[]}' >> .github/customizations/logs/sessions.ndjson
|
|
176
182
|
```
|
|
177
183
|
|
|
184
|
+
**Delegation record** (Team Lead only, after each delegation):
|
|
185
|
+
```bash
|
|
186
|
+
echo '{"timestamp":"2026-03-01T14:00:00Z","session_id":"feat/prj-57","agent":"Developer","model":"gpt-5.3-codex","tier":"fast","mechanism":"sub-agent","linear_issue":"PRJ-57","outcome":"success","retries":0,"phase":2,"file_partition":["src/components/"]}' >> .github/customizations/logs/delegations.ndjson
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Fast review record** (Team Lead, after each fast review):
|
|
190
|
+
```bash
|
|
191
|
+
echo '{"timestamp":"2026-03-01T14:30:00Z","linear_issue":"PRJ-42","agent":"Developer","reviewer_model":"gpt-5-mini","verdict":"pass","attempt":1,"issues_critical":0,"issues_major":0,"issues_minor":2,"confidence":"high","escalated":false,"duration_sec":45}' >> .github/customizations/logs/reviews.ndjson
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Panel record** (after each panel majority vote):
|
|
195
|
+
```bash
|
|
196
|
+
echo '{"timestamp":"2026-03-01T15:00:00Z","panel_key":"auth-review","verdict":"pass","pass_count":2,"block_count":1,"must_fix":0,"should_fix":3,"reviewer_model":"claude-opus-4-6","weighted":false,"attempt":1,"linear_issue":"PRJ-42","artifacts_count":5}' >> .github/customizations/logs/panels.ndjson
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Dispute record** (Team Lead, after each dispute):
|
|
200
|
+
```bash
|
|
201
|
+
echo '{"timestamp":"2026-03-01T16:00:00Z","dispute_id":"DSP-001","linear_issue":"PRJ-42","priority":"high","trigger":"panel-3x-block","implementing_agent":"Developer","reviewing_agents":["Reviewer","Panel (3x)"],"total_attempts":6,"est_tokens_spent":120000,"status":"pending","resolution_option_chosen":null,"resolved_at":null}' >> .github/customizations/logs/disputes.ndjson
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Pre-Response Logging Checklist
|
|
205
|
+
|
|
206
|
+
**STOP before responding to the user.** Verify each applicable item:
|
|
207
|
+
|
|
208
|
+
- [ ] **Session logged** — `sessions.ndjson` has a new line for this session (ALWAYS required)
|
|
209
|
+
- [ ] **Delegations logged** — `delegations.ndjson` has a line for each delegation (Team Lead only)
|
|
210
|
+
- [ ] **Reviews logged** — `reviews.ndjson` has a line for each fast review performed (if any)
|
|
211
|
+
- [ ] **Panels logged** — `panels.ndjson` has a line for each panel review performed (if any)
|
|
212
|
+
- [ ] **Disputes logged** — `disputes.ndjson` has a line for each dispute created (if any)
|
|
213
|
+
|
|
214
|
+
If ANY required log is missing, append it NOW before responding.
|
|
215
|
+
|
|
178
216
|
### Rules
|
|
179
217
|
|
|
180
|
-
- **Log before yielding to the user** — logging is the
|
|
218
|
+
- **Log before yielding to the user** — logging is the LAST action before responding. This is Constitution rule #6.
|
|
181
219
|
- **Log per task**, not per conversation. Multiple tasks = multiple records.
|
|
182
220
|
- **Never batch-log retrospectively** across sessions.
|
|
221
|
+
- **Verify the append succeeded** — if unsure, `tail -1` the file to confirm.
|
|
183
222
|
|
|
184
223
|
## Self-Improvement Protocol
|
|
185
224
|
|
|
225
|
+
> **⛔ HARD GATE — Lessons are the team's collective memory. Skipping them causes repeated failures.**
|
|
226
|
+
|
|
186
227
|
**Every agent must learn from mistakes and share knowledge.** This prevents the same pitfalls from being repeated across sessions.
|
|
187
228
|
|
|
188
|
-
1. **Before starting work:** Read `.github/customizations/LESSONS-LEARNED.md` — apply relevant lessons proactively
|
|
229
|
+
1. **Before starting work:** Read `.github/customizations/LESSONS-LEARNED.md` — apply relevant lessons proactively. This is NOT optional.
|
|
189
230
|
2. **During execution:** If you retry a command/tool with a different approach and it works, **immediately** add a lesson entry to `.github/customizations/LESSONS-LEARNED.md`
|
|
190
231
|
3. **Update source files:** If the lesson reveals a gap in instruction/skill files, update those files too
|
|
191
232
|
4. **Update instructions:** Proactively suggest updates to `.github/instructions/` or `.github/skills/` files when:
|
|
@@ -210,16 +251,37 @@ These rules apply to ALL specialist agents automatically. **Do not duplicate the
|
|
|
210
251
|
1. **Never delegate** — Specialist agents complete their own work and return results. Never invoke the Team Lead or spawn sub-agents. If work requires another domain, document the need in your output contract.
|
|
211
252
|
2. **Follow the Discovered Issues Policy** — Track any pre-existing bugs found during your work (see § Discovered Issues Policy above).
|
|
212
253
|
3. **Read and update lessons** — Read `.github/customizations/LESSONS-LEARNED.md` before starting. If you retry anything with a different approach that works, add a lesson immediately.
|
|
213
|
-
4. **Log every session** — Append to `.github/customizations/logs/sessions.ndjson` after every session. No exceptions. See § Observability Logging above.
|
|
254
|
+
4. **Log every session** — Append to `.github/customizations/logs/sessions.ndjson` after every session. No exceptions. See § Observability Logging above. This is Constitution rule #6 — a blocking gate, not optional.
|
|
214
255
|
|
|
215
256
|
## Base Output Contract
|
|
216
257
|
|
|
217
258
|
Every specialist agent's Output Contract MUST end with these standard items (in addition to domain-specific items above them):
|
|
218
259
|
|
|
219
|
-
- **
|
|
260
|
+
- **Observability Logged** — Confirm ALL applicable log records were appended (Constitution rule #6):
|
|
261
|
+
- `sessions.ndjson` — ALWAYS (every agent, every session)
|
|
262
|
+
- `delegations.ndjson` — if delegations occurred (Team Lead only)
|
|
263
|
+
- `reviews.ndjson` — if fast reviews occurred
|
|
264
|
+
- `panels.ndjson` — if panel reviews occurred
|
|
265
|
+
- `disputes.ndjson` — if disputes were created
|
|
220
266
|
- **Discovered Issues** — Pre-existing bugs or anomalies found during work, with tracking action taken per the Discovered Issues Policy
|
|
221
267
|
- **Lessons Applied** — Lessons from `.github/customizations/LESSONS-LEARNED.md` that influenced this work, and any new lessons added
|
|
222
268
|
|
|
223
269
|
Agents reference this contract with: `See **Base Output Contract** in general.instructions.md for the standard closing items.`
|
|
224
270
|
|
|
271
|
+
## Pre-Response Quality Gate
|
|
272
|
+
|
|
273
|
+
> **⛔ STOP before responding to the user.** Run through this checklist. If ANY required item is missing, fix it NOW.
|
|
274
|
+
|
|
275
|
+
This is the single exit gate for every session. All items are mandatory unless marked conditional.
|
|
276
|
+
|
|
277
|
+
- [ ] **Lessons read** — `.github/customizations/LESSONS-LEARNED.md` was read at session start (Self-Improvement Protocol)
|
|
278
|
+
- [ ] **Lessons captured** — If any retry occurred, a new lesson was added to `LESSONS-LEARNED.md`
|
|
279
|
+
- [ ] **Discovered issues tracked** — Any pre-existing bugs found were added to `KNOWN-ISSUES.md` or a tracker ticket was created (Discovered Issues Policy)
|
|
280
|
+
- [ ] **Lint/type/test pass** — No new errors introduced; verification ran after code changes (Constitution rule #5)
|
|
281
|
+
- [ ] **Session logged** — `sessions.ndjson` has a new line for this session (Constitution rule #6 — ALWAYS required)
|
|
282
|
+
- [ ] **Delegations logged** — `delegations.ndjson` has a line for each delegation (Team Lead only)
|
|
283
|
+
- [ ] **Reviews logged** — `reviews.ndjson` has a line for each fast review performed (if any)
|
|
284
|
+
- [ ] **Panels logged** — `panels.ndjson` has a line for each panel review performed (if any)
|
|
285
|
+
- [ ] **Disputes logged** — `disputes.ndjson` has a line for each dispute created (if any)
|
|
286
|
+
|
|
225
287
|
<!-- End of Coding Standards -->
|
|
@@ -3,7 +3,7 @@ name: browser-testing
|
|
|
3
3
|
description: "Chrome DevTools MCP automation patterns for validating UI changes in real browsers. Use when performing E2E browser testing, validating visual changes, testing user interactions, or debugging UI issues with Chrome DevTools."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Browser Testing with Chrome DevTools MCP
|
|
9
9
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'chrome-devtools',
|
|
5
|
+
name: 'Chrome DevTools',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'testing',
|
|
8
|
+
label: 'Chrome DevTools',
|
|
9
|
+
hint: 'Browser testing, screenshots, DOM inspection',
|
|
10
|
+
skillName: 'browser-testing',
|
|
11
|
+
mcpServerKey: 'chrome-devtools',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', 'chrome-devtools-mcp@latest'],
|
|
16
|
+
},
|
|
17
|
+
authType: 'none',
|
|
18
|
+
envVars: [],
|
|
19
|
+
agentToolMap: {
|
|
20
|
+
'performance-expert': ['chrome-devtools/*'],
|
|
21
|
+
'seo-specialist': ['chrome-devtools/*'],
|
|
22
|
+
'testing-expert': ['chrome-devtools/*'],
|
|
23
|
+
'ui-ux-expert': ['chrome-devtools/*'],
|
|
24
|
+
},
|
|
25
|
+
docsUrl: '/guides/plugins#chrome-devtools',
|
|
26
|
+
officialDocs: 'https://developer.chrome.com/docs/devtools',
|
|
27
|
+
mcpPackage: 'chrome-devtools-mcp',
|
|
28
|
+
preselected: true,
|
|
29
|
+
};
|
|
@@ -3,7 +3,7 @@ name: contentful-cms
|
|
|
3
3
|
description: "Contentful CMS development patterns, GraphQL/REST API usage, content modeling, and migration best practices. Use when working with Contentful content types, entries, assets, or the Management API."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Contentful CMS
|
|
9
9
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'contentful',
|
|
5
|
+
name: 'Contentful',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'cms',
|
|
8
|
+
label: 'Contentful',
|
|
9
|
+
hint: 'GraphQL / REST API, structured content',
|
|
10
|
+
skillName: 'contentful-cms',
|
|
11
|
+
mcpServerKey: 'Contentful',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', '@contentful/mcp-server'],
|
|
16
|
+
},
|
|
17
|
+
authType: 'none',
|
|
18
|
+
envVars: [],
|
|
19
|
+
agentToolMap: {
|
|
20
|
+
'content-engineer': [
|
|
21
|
+
'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
|
|
22
|
+
'contentful/create_content_type', 'contentful/update_content_type', 'contentful/publish_content_type',
|
|
23
|
+
'contentful/unpublish_content_type', 'contentful/delete_content_type', 'contentful/search_entries',
|
|
24
|
+
'contentful/get_entry', 'contentful/create_entry', 'contentful/update_entry',
|
|
25
|
+
'contentful/publish_entry', 'contentful/unpublish_entry', 'contentful/delete_entry',
|
|
26
|
+
'contentful/list_editor_interfaces', 'contentful/get_editor_interface', 'contentful/update_editor_interface',
|
|
27
|
+
'contentful/upload_asset', 'contentful/list_assets', 'contentful/get_asset',
|
|
28
|
+
'contentful/update_asset', 'contentful/publish_asset', 'contentful/unpublish_asset',
|
|
29
|
+
'contentful/delete_asset', 'contentful/list_spaces', 'contentful/get_space',
|
|
30
|
+
'contentful/list_environments', 'contentful/create_environment', 'contentful/delete_environment',
|
|
31
|
+
'contentful/list_locales', 'contentful/get_locale', 'contentful/create_locale',
|
|
32
|
+
'contentful/update_locale', 'contentful/delete_locale', 'contentful/list_tags',
|
|
33
|
+
'contentful/create_tag', 'contentful/list_orgs', 'contentful/get_org',
|
|
34
|
+
],
|
|
35
|
+
'copywriter': [
|
|
36
|
+
'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
|
|
37
|
+
'contentful/search_entries', 'contentful/get_entry', 'contentful/update_entry',
|
|
38
|
+
'contentful/publish_entry', 'contentful/list_spaces', 'contentful/get_space',
|
|
39
|
+
],
|
|
40
|
+
'data-expert': [
|
|
41
|
+
'contentful/get_initial_context', 'contentful/list_content_types', 'contentful/get_content_type',
|
|
42
|
+
'contentful/search_entries', 'contentful/get_entry', 'contentful/create_entry',
|
|
43
|
+
'contentful/update_entry', 'contentful/list_spaces', 'contentful/get_space',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
docsUrl: null,
|
|
47
|
+
officialDocs: 'https://www.contentful.com/developers/docs/',
|
|
48
|
+
mcpPackage: '@contentful/mcp-server',
|
|
49
|
+
};
|
|
@@ -3,7 +3,7 @@ name: convex-database
|
|
|
3
3
|
description: "Convex reactive database patterns, schema design, real-time queries, mutations, actions, and deployment best practices. Use when designing Convex schemas, writing queries/mutations, or managing the Convex backend."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Convex Database
|
|
9
9
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PluginConfig } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const config: PluginConfig = {
|
|
4
|
+
id: 'convex',
|
|
5
|
+
name: 'Convex',
|
|
6
|
+
category: 'tech',
|
|
7
|
+
subCategory: 'database',
|
|
8
|
+
label: 'Convex',
|
|
9
|
+
hint: 'Reactive backend with real-time sync',
|
|
10
|
+
skillName: 'convex-database',
|
|
11
|
+
mcpServerKey: 'Convex',
|
|
12
|
+
mcpConfig: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: 'npx',
|
|
15
|
+
args: ['-y', 'convex@latest', 'mcp', 'start'],
|
|
16
|
+
},
|
|
17
|
+
authType: 'none',
|
|
18
|
+
envVars: [],
|
|
19
|
+
agentToolMap: {
|
|
20
|
+
'database-engineer': [
|
|
21
|
+
'convex/status', 'convex/data', 'convex/tables', 'convex/functionSpec',
|
|
22
|
+
'convex/run', 'convex/envList', 'convex/envGet', 'convex/envSet',
|
|
23
|
+
'convex/envRemove', 'convex/runOneoffQuery', 'convex/logs', 'convex/insights',
|
|
24
|
+
],
|
|
25
|
+
'security-expert': [
|
|
26
|
+
'convex/status', 'convex/tables', 'convex/functionSpec',
|
|
27
|
+
'convex/envList', 'convex/envGet', 'convex/logs', 'convex/insights',
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
docsUrl: null,
|
|
31
|
+
officialDocs: 'https://docs.convex.dev/',
|
|
32
|
+
mcpPackage: 'convex',
|
|
33
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { PluginConfig } from './types.js';
|
|
2
|
+
import { config as sanity } from './sanity/config.js';
|
|
3
|
+
import { config as contentful } from './contentful/config.js';
|
|
4
|
+
import { config as strapi } from './strapi/config.js';
|
|
5
|
+
import { config as supabase } from './supabase/config.js';
|
|
6
|
+
import { config as convex } from './convex/config.js';
|
|
7
|
+
import { config as vercel } from './vercel/config.js';
|
|
8
|
+
import { config as nx } from './nx/config.js';
|
|
9
|
+
import { config as linear } from './linear/config.js';
|
|
10
|
+
import { config as jira } from './jira/config.js';
|
|
11
|
+
import { config as slack } from './slack/config.js';
|
|
12
|
+
import { config as teams } from './teams/config.js';
|
|
13
|
+
import { config as chromeDevtools } from './chrome-devtools/config.js';
|
|
14
|
+
|
|
15
|
+
export type { PluginConfig, McpServerConfig, McpInput, EnvVarRequirement } from './types.js';
|
|
16
|
+
|
|
17
|
+
/** All registered plugins, keyed by ID. */
|
|
18
|
+
export const PLUGINS: Record<string, PluginConfig> = {
|
|
19
|
+
sanity,
|
|
20
|
+
contentful,
|
|
21
|
+
strapi,
|
|
22
|
+
supabase,
|
|
23
|
+
convex,
|
|
24
|
+
vercel,
|
|
25
|
+
nx,
|
|
26
|
+
'chrome-devtools': chromeDevtools,
|
|
27
|
+
linear,
|
|
28
|
+
jira,
|
|
29
|
+
slack,
|
|
30
|
+
teams,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** Tech tool plugins only. */
|
|
34
|
+
export const TECH_PLUGINS = Object.values(PLUGINS).filter(
|
|
35
|
+
(p) => p.category === 'tech'
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
/** Team tool plugins only. */
|
|
39
|
+
export const TEAM_PLUGINS = Object.values(PLUGINS).filter(
|
|
40
|
+
(p) => p.category === 'team'
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/** CMS plugins (subset of tech). */
|
|
44
|
+
export const CMS_PLUGINS = TECH_PLUGINS.filter(
|
|
45
|
+
(p) => p.subCategory === 'cms'
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
/** Database plugins (subset of tech). */
|
|
49
|
+
export const DB_PLUGINS = TECH_PLUGINS.filter(
|
|
50
|
+
(p) => p.subCategory === 'database'
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
/** Get a plugin by ID. */
|
|
54
|
+
export function getPlugin(id: string): PluginConfig | undefined {
|
|
55
|
+
return PLUGINS[id];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Get all plugins in a category. */
|
|
59
|
+
export function getPluginsByCategory(category: 'tech' | 'team'): PluginConfig[] {
|
|
60
|
+
return Object.values(PLUGINS).filter((p) => p.category === category);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Get all plugins in a sub-category. */
|
|
64
|
+
export function getPluginsBySubCategory(
|
|
65
|
+
subCategory: PluginConfig['subCategory']
|
|
66
|
+
): PluginConfig[] {
|
|
67
|
+
return Object.values(PLUGINS).filter((p) => p.subCategory === subCategory);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get all skill names from selected plugins.
|
|
72
|
+
* Returns only non-null skill names for the given tool IDs.
|
|
73
|
+
*/
|
|
74
|
+
export function getSelectedSkillNames(toolIds: string[]): string[] {
|
|
75
|
+
return toolIds
|
|
76
|
+
.map((id) => PLUGINS[id]?.skillName)
|
|
77
|
+
.filter((s): s is string => s !== null);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* All possible tool-specific skill names (used to compute exclusions).
|
|
82
|
+
*/
|
|
83
|
+
export const ALL_PLUGIN_SKILL_NAMES: string[] = Object.values(PLUGINS)
|
|
84
|
+
.map((p) => p.skillName)
|
|
85
|
+
.filter((s): s is string => s !== null);
|