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
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
1
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
2
2
|
|
|
3
3
|
# Workflow: Schema / CMS Changes
|
|
4
4
|
|
|
5
5
|
Structured workflow for CMS schema modifications, query updates, and content model changes.
|
|
6
6
|
|
|
7
|
-
> **Project config:** For CMS-specific paths, schema locations, and query library details, see the relevant CMS customization file
|
|
7
|
+
> **Project config:** For CMS-specific paths, schema locations, and query library details, see the relevant CMS customization file in `customizations/stack/`.
|
|
8
8
|
|
|
9
9
|
## Phases
|
|
10
10
|
|
|
@@ -37,14 +37,14 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
37
37
|
3. Check the query library (see CMS customization) for queries that will be affected
|
|
38
38
|
4. Verify schema changes don't conflict with existing content in the CMS
|
|
39
39
|
5. Document field mapping (new vs existing fields)
|
|
40
|
-
6. Create
|
|
40
|
+
6. Create tracker issue with schema change details
|
|
41
41
|
|
|
42
42
|
### Exit Criteria
|
|
43
43
|
|
|
44
44
|
- [ ] Existing schema understood
|
|
45
45
|
- [ ] Impact on data queries assessed
|
|
46
46
|
- [ ] Impact on existing content assessed
|
|
47
|
-
- [ ]
|
|
47
|
+
- [ ] Tracker issue created
|
|
48
48
|
- [ ] Approach decided (new type vs modify existing)
|
|
49
49
|
|
|
50
50
|
---
|
|
@@ -146,7 +146,7 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
146
146
|
3. Start dev server and verify pages render correctly
|
|
147
147
|
4. Check both apps if shared schema/queries changed
|
|
148
148
|
5. Verify data model documentation is updated
|
|
149
|
-
6. Move
|
|
149
|
+
6. Move tracker issue to Done
|
|
150
150
|
|
|
151
151
|
### Exit Criteria
|
|
152
152
|
|
|
@@ -154,8 +154,8 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
154
154
|
- [ ] Pages render correctly in browser
|
|
155
155
|
- [ ] Both apps verified (if shared code changed)
|
|
156
156
|
- [ ] Data model documentation updated (if applicable)
|
|
157
|
-
- [ ]
|
|
158
|
-
- [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged),
|
|
157
|
+
- [ ] Tracker issue moved to Done
|
|
158
|
+
- [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
|
|
159
159
|
|
|
160
160
|
---
|
|
161
161
|
|
|
@@ -163,4 +163,4 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
163
163
|
|
|
164
164
|
> **See [shared-delivery-phase.md](shared-delivery-phase.md) for the standard delivery steps.**
|
|
165
165
|
>
|
|
166
|
-
> Commit → Push → PR →
|
|
166
|
+
> Commit → Push → PR → tracker linkage. Team Lead owns delivery.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
1
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
2
2
|
|
|
3
3
|
# Workflow: Security Audit
|
|
4
4
|
|
|
@@ -31,19 +31,19 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
31
31
|
### Steps
|
|
32
32
|
|
|
33
33
|
1. Define audit scope (full audit vs. targeted area)
|
|
34
|
-
2. Read
|
|
35
|
-
3. Read
|
|
34
|
+
2. Read `.github/customizations/project.instructions.md` security sections
|
|
35
|
+
3. Read `.github/customizations/KNOWN-ISSUES.md` for existing security items
|
|
36
36
|
4. Check current CSP configuration in `next.config.js`
|
|
37
37
|
5. Review auth flow (see database/auth customization for library paths)
|
|
38
38
|
6. Map all API routes and Server Actions
|
|
39
|
-
7. Create
|
|
39
|
+
7. Create tracker issue for the audit
|
|
40
40
|
|
|
41
41
|
### Exit Criteria
|
|
42
42
|
|
|
43
43
|
- [ ] Scope defined (which apps, libs, routes)
|
|
44
44
|
- [ ] Existing security docs reviewed
|
|
45
45
|
- [ ] Attack surface mapped
|
|
46
|
-
- [ ]
|
|
46
|
+
- [ ] Tracker issue created
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
@@ -114,7 +114,7 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
114
114
|
### Exit Criteria
|
|
115
115
|
|
|
116
116
|
- [ ] Panel completed (PASS or BLOCK)
|
|
117
|
-
- [ ] Panel report linked to
|
|
117
|
+
- [ ] Panel report linked to tracker issue
|
|
118
118
|
- [ ] If BLOCK: MUST-FIX items extracted
|
|
119
119
|
|
|
120
120
|
---
|
|
@@ -127,19 +127,19 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
127
127
|
### Steps
|
|
128
128
|
|
|
129
129
|
1. Fix Critical and High severity findings first
|
|
130
|
-
2. Create separate
|
|
130
|
+
2. Create separate tracker issues for Medium/Low findings if not fixing now
|
|
131
131
|
3. Run verification after each fix
|
|
132
132
|
4. Re-run panel review if initial panel BLOCKed
|
|
133
|
-
5. Update
|
|
133
|
+
5. Update `.github/customizations/KNOWN-ISSUES.md` for any accepted risks
|
|
134
134
|
|
|
135
135
|
### Exit Criteria
|
|
136
136
|
|
|
137
137
|
- [ ] Critical/High findings remediated
|
|
138
|
-
- [ ] Medium/Low findings tracked in
|
|
138
|
+
- [ ] Medium/Low findings tracked in tracker
|
|
139
139
|
- [ ] Panel review passed (if applicable)
|
|
140
140
|
- [ ] Known issues updated for accepted risks
|
|
141
|
-
- [ ] All
|
|
142
|
-
- [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged),
|
|
141
|
+
- [ ] All tracker issues updated
|
|
142
|
+
- [ ] Delivery Outcome completed (see `general.instructions.md`) — branch pushed, PR opened (not merged), tracker linked
|
|
143
143
|
|
|
144
144
|
---
|
|
145
145
|
|
|
@@ -147,4 +147,4 @@ Follow the **Delivery Outcome** in `general.instructions.md` and the **Branch Ow
|
|
|
147
147
|
|
|
148
148
|
> **See [shared-delivery-phase.md](shared-delivery-phase.md) for the standard delivery steps.**
|
|
149
149
|
>
|
|
150
|
-
> Commit → Push → PR →
|
|
150
|
+
> Commit → Push → PR → tracker linkage. Team Lead owns delivery.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
1
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
2
2
|
|
|
3
3
|
# Shared Delivery Phase
|
|
4
4
|
|
|
@@ -6,14 +6,14 @@ This phase is referenced by all workflow templates. It covers the final delivery
|
|
|
6
6
|
|
|
7
7
|
## Steps
|
|
8
8
|
|
|
9
|
-
1. **Commit all changes** to the feature branch with
|
|
9
|
+
1. **Commit all changes** to the feature branch with tracker issue IDs in commit messages
|
|
10
10
|
2. **Push the branch** to origin: `git push -u origin <branch-name>`
|
|
11
11
|
3. **Open a PR** using `gh` CLI (always use `GH_PAGER=cat` to prevent pager issues):
|
|
12
12
|
```bash
|
|
13
13
|
GH_PAGER=cat gh pr create --base main --title "TAS-XX: Short description" --body "Resolves TAS-XX"
|
|
14
14
|
```
|
|
15
15
|
4. **Do NOT merge** — PRs are opened for human review only
|
|
16
|
-
5. **Update
|
|
16
|
+
5. **Update tracker issues** with the PR URL for traceability
|
|
17
17
|
6. **Clean up session checkpoint** if one exists
|
|
18
18
|
|
|
19
19
|
## Branch & Delivery Strategy
|
|
@@ -28,8 +28,8 @@ The **Team Lead owns delivery**, not individual specialist agents:
|
|
|
28
28
|
|
|
29
29
|
## Exit Criteria
|
|
30
30
|
|
|
31
|
-
- [ ] All changes committed with
|
|
31
|
+
- [ ] All changes committed with tracker issue IDs in messages
|
|
32
32
|
- [ ] Branch pushed to origin
|
|
33
33
|
- [ ] PR opened on GitHub (NOT merged)
|
|
34
|
-
- [ ]
|
|
34
|
+
- [ ] Tracker issues updated with PR URL
|
|
35
35
|
- [ ] All project issues marked Done or Cancelled
|
|
@@ -5,7 +5,7 @@ model: Gemini 3.1 Pro (Preview)
|
|
|
5
5
|
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# API Designer
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Software architect for strategic architecture decisions, roadmap planning, ADRs, system design, and technology evaluation.'
|
|
3
3
|
name: 'Architect'
|
|
4
4
|
model: Claude Opus 4.6
|
|
5
|
-
tools: ['search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'search', 'search/usages', 'execute/runInTerminal', 'execute/getTerminalOutput', 'read/terminalLastCommand'
|
|
5
|
+
tools: ['search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'search', 'search/usages', 'execute/runInTerminal', 'execute/getTerminalOutput', 'read/terminalLastCommand']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Software Architect
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Content engineer for CMS schema design, content queries, content modeling, releases, and studio customization.'
|
|
3
3
|
name: 'Content Engineer'
|
|
4
4
|
model: Gemini 3.1 Pro (Preview)
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Content Engineer
|
|
11
11
|
|
|
@@ -42,7 +42,7 @@ Resolve via [skill-matrix.md](.github/customizations/agents/skill-matrix.md).
|
|
|
42
42
|
|
|
43
43
|
## Out of Scope
|
|
44
44
|
|
|
45
|
-
- Building
|
|
45
|
+
- Building UI components that render CMS content
|
|
46
46
|
- Creating database migrations for data that mirrors CMS content
|
|
47
47
|
- Writing E2E tests for pages that consume CMS data
|
|
48
48
|
- Deploying frontend applications
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Copywriter for UI microcopy, marketing text, email templates, venue descriptions, error messages, and all user-facing text.'
|
|
3
3
|
name: 'Copywriter'
|
|
4
4
|
model: GPT-5 mini
|
|
5
|
-
tools: ['search/codebase', 'edit/editFiles', 'web/fetch', 'search', 'read/problems', 'search/usages'
|
|
5
|
+
tools: ['search/codebase', 'edit/editFiles', 'web/fetch', 'search', 'read/problems', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Copywriter
|
|
11
11
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: 'Data engineering expert for ETL pipelines, web
|
|
2
|
+
description: 'Data engineering expert for ETL pipelines, web crowlers, data processors, CLI tools, and CMS data import.'
|
|
3
3
|
name: 'Data Expert'
|
|
4
4
|
model: GPT-5.3-Codex
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Data Expert
|
|
11
11
|
|
|
@@ -32,7 +32,7 @@ Resolve via [skill-matrix.md](.github/customizations/agents/skill-matrix.md).
|
|
|
32
32
|
- Idempotent imports with `createOrReplace` and deterministic `_id`
|
|
33
33
|
- Validate with Zod before importing — never import invalid data
|
|
34
34
|
- Respect `robots.txt` and rate limit all scraping requests
|
|
35
|
-
- Use
|
|
35
|
+
- Use the project's web crawling library for concurrent crowling (see the **data-pipeline** skill)
|
|
36
36
|
- Handle errors gracefully — skip bad records, don't halt pipeline
|
|
37
37
|
- Preserve UTF-8 encoding for special characters and diacritics
|
|
38
38
|
- Backup before bulk operations
|
|
@@ -48,9 +48,9 @@ Resolve via [skill-matrix.md](.github/customizations/agents/skill-matrix.md).
|
|
|
48
48
|
|
|
49
49
|
## Out of Scope
|
|
50
50
|
|
|
51
|
-
- Modifying
|
|
51
|
+
- Modifying CMS schemas (report needed changes to Team Lead)
|
|
52
52
|
- Building UI components that consume the imported data
|
|
53
|
-
- Creating
|
|
53
|
+
- Creating database migrations or RLS policies
|
|
54
54
|
- Deploying scrapers to production infrastructure
|
|
55
55
|
|
|
56
56
|
## Output Contract
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Database engineer for schema design, migrations, security policies, performance optimization, and auth integration.'
|
|
3
3
|
name: 'Database Engineer'
|
|
4
4
|
model: Gemini 3.1 Pro (Preview)
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Database Engineer
|
|
11
11
|
|
|
@@ -47,7 +47,7 @@ Resolve via [skill-matrix.md](.github/customizations/agents/skill-matrix.md).
|
|
|
47
47
|
## Out of Scope
|
|
48
48
|
|
|
49
49
|
- Building API routes or Server Actions that use the new schema
|
|
50
|
-
- Creating
|
|
50
|
+
- Creating UI components for data display
|
|
51
51
|
- CMS schema changes
|
|
52
52
|
- Deploying migrations to production (only development/preview)
|
|
53
53
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Full-stack developer for building pages, components, routing, layouts, API routes, server-side logic, and feature implementation.'
|
|
3
3
|
name: 'Developer'
|
|
4
4
|
model: Gemini 3.1 Pro (Preview)
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/newWorkspace', 'vscode/runCommand', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'vscode/getProjectSetupInfo', 'vscode/installExtension', 'vscode/newWorkspace', 'vscode/runCommand', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Developer
|
|
11
11
|
|
|
@@ -44,7 +44,7 @@ After code changes, always run lint, test, and build for affected projects. The
|
|
|
44
44
|
|
|
45
45
|
## Done When
|
|
46
46
|
|
|
47
|
-
- All acceptance criteria from the
|
|
47
|
+
- All acceptance criteria from the tracker issue are met
|
|
48
48
|
- Lint, test, and build pass for the affected project(s)
|
|
49
49
|
- Changed files stay within the assigned file partition
|
|
50
50
|
- TypeScript compiler reports zero errors in modified files
|
|
@@ -62,7 +62,7 @@ When completing a task, return a structured summary:
|
|
|
62
62
|
|
|
63
63
|
1. **Files Changed** — List every file created or modified with a one-line description
|
|
64
64
|
2. **Verification Results** — Lint, test, and build output (pass/fail + error count)
|
|
65
|
-
3. **Acceptance Criteria Status** — Checklist from the
|
|
65
|
+
3. **Acceptance Criteria Status** — Checklist from the tracker issue, each item marked ✅ or ❌
|
|
66
66
|
4. **Assumptions Made** — Decisions you made that weren't explicitly specified
|
|
67
67
|
|
|
68
68
|
See **Base Output Contract** in `general.instructions.md` for the standard closing items (Discovered Issues + Lessons Applied).
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "DevOps expert for
|
|
2
|
+
description: "DevOps expert for deployments, CI/CD integration, cron jobs, security headers, caching, environment variables, and build optimization."
|
|
3
3
|
name: "DevOps Expert"
|
|
4
4
|
model: GPT-5.3-Codex
|
|
5
|
-
tools: ["search/changes", "search/codebase", "edit/editFiles", "web/fetch", "vscode/getProjectSetupInfo", "vscode/installExtension", "vscode/newWorkspace", "vscode/runCommand", "read/problems", "execute/getTerminalOutput", "execute/runInTerminal", "read/terminalLastCommand", "read/terminalSelection", "search", "execute/testFailure", "search/usages"
|
|
5
|
+
tools: ["search/changes", "search/codebase", "edit/editFiles", "web/fetch", "vscode/getProjectSetupInfo", "vscode/installExtension", "vscode/newWorkspace", "vscode/runCommand", "read/problems", "execute/getTerminalOutput", "execute/runInTerminal", "read/terminalLastCommand", "read/terminalSelection", "search", "execute/testFailure", "search/usages"]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# DevOps Expert
|
|
11
11
|
|
|
12
|
-
You are a DevOps expert specializing in
|
|
12
|
+
You are a DevOps expert specializing in deployments, CI/CD pipelines, cron jobs, security headers, caching strategies, and build optimization.
|
|
13
13
|
|
|
14
14
|
## Critical Rules
|
|
15
15
|
|
|
@@ -43,7 +43,7 @@ Resolve via [skill-matrix.md](.github/customizations/agents/skill-matrix.md).
|
|
|
43
43
|
|
|
44
44
|
- Writing application code or business logic
|
|
45
45
|
- Creating database migrations or RLS policies
|
|
46
|
-
- Designing
|
|
46
|
+
- Designing CMS schemas or content queries
|
|
47
47
|
- Writing tests beyond build verification
|
|
48
48
|
|
|
49
49
|
## Output Contract
|
|
@@ -5,7 +5,7 @@ model: GPT-5 mini
|
|
|
5
5
|
tools: ['search/codebase', 'edit/editFiles', 'web/fetch', 'search', 'read/problems']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Documentation Writer
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Performance optimization expert for frontend, backend, and build performance.'
|
|
3
3
|
name: 'Performance Expert'
|
|
4
4
|
model: Gemini 3.1 Pro (Preview)
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Performance Expert
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'Release manager for pre-release verification, changelog generation, version management, regression checks, and release coordination.'
|
|
3
3
|
name: 'Release Manager'
|
|
4
4
|
model: GPT-5.3-Codex
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'read/terminalSelection', 'search', 'execute/testFailure', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Release Manager
|
|
11
11
|
|
|
@@ -38,8 +38,8 @@ Load the **deployment-infrastructure** skill for the detailed release process st
|
|
|
38
38
|
|
|
39
39
|
## Guidelines
|
|
40
40
|
|
|
41
|
-
- Review
|
|
42
|
-
- Cross-reference merged PRs with
|
|
41
|
+
- Review tracker board for Done issues that should be in the release
|
|
42
|
+
- Cross-reference merged PRs with tracker issues for completeness
|
|
43
43
|
- Never skip the regression check — "it's a small change" is when things break
|
|
44
44
|
- Keep changelogs audience-appropriate (users care about features, not refactors)
|
|
45
45
|
- Coordinate with DevOps Expert for deployment-specific concerns
|
|
@@ -21,7 +21,7 @@ handoffs:
|
|
|
21
21
|
prompt: 'Use the generate-task-spec prompt to create an opencastle.tasks.yml spec for autonomous overnight runs based on:'
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
24
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
25
25
|
|
|
26
26
|
# Researcher
|
|
27
27
|
|
|
@@ -87,7 +87,7 @@ Given a feature request, answer:
|
|
|
87
87
|
Given a bug report, answer:
|
|
88
88
|
- Where does the relevant code live? (entry points → data flow)
|
|
89
89
|
- What does the git history show? (recent changes that might have caused it)
|
|
90
|
-
- Are there related known issues in
|
|
90
|
+
- Are there related known issues in `.github/customizations/KNOWN-ISSUES.md`?
|
|
91
91
|
- Are there related lessons in `.github/customizations/LESSONS-LEARNED.md`?
|
|
92
92
|
- What test coverage exists for the affected area?
|
|
93
93
|
|
|
@@ -118,7 +118,7 @@ Given a file or module, answer:
|
|
|
118
118
|
|
|
119
119
|
- Writing or editing code files
|
|
120
120
|
- Running tests or builds
|
|
121
|
-
- Creating
|
|
121
|
+
- Creating tracker issues or updating the board
|
|
122
122
|
- Making architectural decisions (present options, don't decide)
|
|
123
123
|
|
|
124
124
|
## Output Contract
|
|
@@ -5,7 +5,7 @@ model: GPT-5 mini
|
|
|
5
5
|
tools: [read/readFile, search/codebase, search/fileSearch, search/textSearch, search/listDirectory, read/problems]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Reviewer
|
|
11
11
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
description: "Security expert for authentication, authorization, RLS policies, security headers, input validation, API security, and vulnerability management."
|
|
3
3
|
name: "Security Expert"
|
|
4
4
|
model: Claude Opus 4.6
|
|
5
|
-
tools: ["search/changes", "search/codebase", "edit/editFiles", "web/fetch", "vscode/getProjectSetupInfo", "vscode/installExtension", "vscode/newWorkspace", "vscode/runCommand", "read/problems", "execute/getTerminalOutput", "execute/runInTerminal", "read/terminalLastCommand", "read/terminalSelection", "search", "execute/testFailure", "search/usages"
|
|
5
|
+
tools: ["search/changes", "search/codebase", "edit/editFiles", "web/fetch", "vscode/getProjectSetupInfo", "vscode/installExtension", "vscode/newWorkspace", "vscode/runCommand", "read/problems", "execute/getTerminalOutput", "execute/runInTerminal", "read/terminalLastCommand", "read/terminalSelection", "search", "execute/testFailure", "search/usages"]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# Security Expert
|
|
11
11
|
|
|
12
|
-
You are a security expert specializing in authentication, authorization, security headers, input validation, API security, and vulnerability management
|
|
12
|
+
You are a security expert specializing in authentication, authorization, security headers, input validation, API security, and vulnerability management. Resolve technology-specific details via the **security** and **database** capability slots in the skill matrix.
|
|
13
13
|
|
|
14
14
|
## Critical Rules
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ You are a security expert specializing in authentication, authorization, securit
|
|
|
18
18
|
3. **Enable RLS on all tables** — default-deny, explicit-allow policies
|
|
19
19
|
4. **Validate all inputs** — use Zod schemas before database operations
|
|
20
20
|
5. **Sanitize user content** — escape HTML in user-generated content
|
|
21
|
-
6. **Use parameterized queries** —
|
|
21
|
+
6. **Use parameterized queries** — use the database client's built-in parameterization
|
|
22
22
|
7. **Rotate secrets regularly** — cron secrets, API keys, OAuth secrets
|
|
23
23
|
|
|
24
24
|
## Skills
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
description: 'SEO specialist for meta tags, structured data, sitemap strategy, Open Graph, search visibility, and crawlability audits.'
|
|
3
3
|
name: 'SEO Specialist'
|
|
4
4
|
model: GPT-5 mini
|
|
5
|
-
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'search', 'search/usages'
|
|
5
|
+
tools: ['search/changes', 'search/codebase', 'edit/editFiles', 'web/fetch', 'read/problems', 'execute/getTerminalOutput', 'execute/runInTerminal', 'read/terminalLastCommand', 'search', 'search/usages']
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
9
9
|
|
|
10
10
|
# SEO Specialist
|
|
11
11
|
|