opencastle 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +30 -3
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +27 -3
- package/dist/cli/adapters/cursor.js.map +1 -1
- package/dist/cli/adapters/opencode.d.ts +20 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +265 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/vscode.d.ts.map +1 -1
- package/dist/cli/adapters/vscode.js +37 -6
- package/dist/cli/adapters/vscode.js.map +1 -1
- package/dist/cli/copy.d.ts +12 -0
- package/dist/cli/copy.d.ts.map +1 -1
- package/dist/cli/copy.js +27 -0
- package/dist/cli/copy.js.map +1 -1
- package/dist/cli/detect.d.ts +1 -1
- package/dist/cli/detect.js +21 -15
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +143 -94
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -6
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +104 -33
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/prompt.d.ts +19 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +143 -0
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/stack-config.d.ts +23 -0
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +128 -124
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +26 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +26 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +60 -19
- package/dist/cli/update.js.map +1 -1
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.js +48 -0
- package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
- package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
- package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/convex/config.js +32 -0
- package/dist/orchestrator/plugins/convex/config.js.map +1 -0
- package/dist/orchestrator/plugins/index.d.ts +28 -0
- package/dist/orchestrator/plugins/index.d.ts.map +1 -0
- package/dist/orchestrator/plugins/index.js +63 -0
- package/dist/orchestrator/plugins/index.js.map +1 -0
- package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
- package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/jira/config.js +29 -0
- package/dist/orchestrator/plugins/jira/config.js.map +1 -0
- package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
- package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/linear/config.js +33 -0
- package/dist/orchestrator/plugins/linear/config.js.map +1 -0
- package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
- package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/nx/config.js +28 -0
- package/dist/orchestrator/plugins/nx/config.js.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.js +43 -0
- package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
- package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
- package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/slack/config.js +34 -0
- package/dist/orchestrator/plugins/slack/config.js.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.js +40 -0
- package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.js +33 -0
- package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
- package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
- package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/teams/config.js +43 -0
- package/dist/orchestrator/plugins/teams/config.js.map +1 -0
- package/dist/orchestrator/plugins/types.d.ts +61 -0
- package/dist/orchestrator/plugins/types.d.ts.map +1 -0
- package/dist/orchestrator/plugins/types.js +2 -0
- package/dist/orchestrator/plugins/types.js.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.js +32 -0
- package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/adapters/claude-code.ts +36 -4
- package/src/cli/adapters/cursor.ts +42 -4
- package/src/cli/adapters/opencode.ts +320 -0
- package/src/cli/adapters/vscode.ts +40 -8
- package/src/cli/copy.ts +32 -0
- package/src/cli/detect.ts +17 -17
- package/src/cli/init.ts +157 -99
- package/src/cli/manifest.ts +2 -1
- package/src/cli/mcp.ts +129 -50
- package/src/cli/prompt.ts +176 -0
- package/src/cli/stack-config.ts +174 -145
- package/src/cli/types.ts +39 -8
- package/src/cli/update.ts +71 -20
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/orchestrator/agent-workflows/README.md +1 -1
- package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
- package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
- package/src/orchestrator/agent-workflows/database-migration.md +11 -11
- package/src/orchestrator/agent-workflows/feature-implementation.md +19 -12
- package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
- package/src/orchestrator/agent-workflows/refactoring.md +10 -10
- package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
- package/src/orchestrator/agent-workflows/security-audit.md +12 -12
- package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
- package/src/orchestrator/agents/api-designer.agent.md +1 -1
- package/src/orchestrator/agents/architect.agent.md +2 -2
- package/src/orchestrator/agents/content-engineer.agent.md +3 -3
- package/src/orchestrator/agents/copywriter.agent.md +2 -2
- package/src/orchestrator/agents/data-expert.agent.md +6 -6
- package/src/orchestrator/agents/database-engineer.agent.md +3 -3
- package/src/orchestrator/agents/developer.agent.md +4 -4
- package/src/orchestrator/agents/devops-expert.agent.md +5 -5
- package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
- package/src/orchestrator/agents/performance-expert.agent.md +2 -2
- package/src/orchestrator/agents/release-manager.agent.md +4 -4
- package/src/orchestrator/agents/researcher.agent.md +3 -3
- package/src/orchestrator/agents/reviewer.agent.md +1 -1
- package/src/orchestrator/agents/security-expert.agent.md +4 -4
- package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
- package/src/orchestrator/agents/team-lead.agent.md +56 -38
- package/src/orchestrator/agents/testing-expert.agent.md +5 -5
- package/src/orchestrator/agents/ui-ux-expert.agent.md +6 -6
- package/src/orchestrator/copilot-instructions.md +1 -1
- package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
- package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
- package/src/orchestrator/customizations/DISPUTES.md +5 -5
- package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
- package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
- package/src/orchestrator/customizations/README.md +5 -2
- package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
- package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
- package/src/orchestrator/customizations/logs/README.md +1 -1
- package/src/orchestrator/customizations/project/decisions.md +31 -0
- package/src/orchestrator/customizations/project/docs-structure.md +16 -5
- package/src/orchestrator/customizations/project/roadmap.md +24 -0
- package/src/orchestrator/customizations/project/tracker-config.md +1 -1
- package/src/orchestrator/customizations/stack/cms-config.md +1 -1
- package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
- package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
- package/src/orchestrator/instructions/general.instructions.md +102 -40
- package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
- package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
- package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
- package/src/orchestrator/plugins/contentful/config.ts +49 -0
- package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
- package/src/orchestrator/plugins/convex/config.ts +33 -0
- package/src/orchestrator/plugins/index.ts +85 -0
- package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
- package/src/orchestrator/plugins/jira/config.ts +30 -0
- package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
- package/src/orchestrator/plugins/linear/config.ts +34 -0
- package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
- package/src/orchestrator/plugins/nx/config.ts +29 -0
- package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
- package/src/orchestrator/plugins/sanity/config.ts +44 -0
- package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
- package/src/orchestrator/plugins/slack/config.ts +35 -0
- package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
- package/src/orchestrator/plugins/strapi/config.ts +41 -0
- package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
- package/src/orchestrator/plugins/supabase/config.ts +34 -0
- package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
- package/src/orchestrator/plugins/teams/config.ts +44 -0
- package/src/orchestrator/plugins/types.ts +79 -0
- package/src/orchestrator/plugins/vercel/config.ts +33 -0
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +8 -8
- package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
- package/src/orchestrator/prompts/bug-fix.prompt.md +27 -22
- package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
- package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
- package/src/orchestrator/prompts/implement-feature.prompt.md +34 -29
- package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
- package/src/orchestrator/prompts/quick-refinement.prompt.md +23 -19
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +19 -5
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
- package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
- package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/SKILL.md +4 -4
- package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
- package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/fast-review/SKILL.md +18 -7
- package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
- package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
- package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
- package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
- package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
- package/src/orchestrator/skills/react-development/SKILL.md +3 -3
- package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
- package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
- package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
- package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
- package/src/orchestrator/skills/validation-gates/SKILL.md +157 -27
- package/src/orchestrator/mcp.json +0 -69
|
@@ -3,7 +3,7 @@ description: 'Resolve GitHub PR review comments by reading them, grouping by fil
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Resolve PR Comments
|
|
9
9
|
|
|
@@ -57,10 +57,21 @@ Acceptance criteria:
|
|
|
57
57
|
|
|
58
58
|
### Phase 4: Verify & Report
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
> Load the **validation-gates** skill for detailed steps on each gate.
|
|
61
|
+
|
|
62
|
+
All fixes must pass applicable gates before pushing:
|
|
63
|
+
|
|
64
|
+
1. **Gate 1: Secret Scanning** — scan diff for API keys, tokens, passwords, connection strings — block immediately if found
|
|
65
|
+
2. **Gate 2: Deterministic Checks** — run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands) — all zero errors
|
|
66
|
+
3. **Gate 3: Blast Radius Check** — verify changes are scoped to commented files only; flag any files modified outside the comment scope
|
|
67
|
+
4. **Gate 4: Fast Review** (MANDATORY) — single reviewer sub-agent validates the combined PR comment fixes
|
|
68
|
+
5. **Gate 5: Regression Testing** — run tests for all projects consuming modified files
|
|
69
|
+
|
|
70
|
+
After all gates pass:
|
|
71
|
+
|
|
72
|
+
6. **Commit fixes** — Use descriptive commit messages referencing the PR: `TAS-XX: Address PR review — [summary]`
|
|
73
|
+
7. **Push to the same branch** — The PR updates automatically
|
|
74
|
+
8. **Report back** — Provide a structured summary of what was resolved
|
|
64
75
|
|
|
65
76
|
## Output Format
|
|
66
77
|
|
|
@@ -85,9 +96,12 @@ After resolving comments, report:
|
|
|
85
96
|
| path/to/file.ts | [question/debate] | [your take + options] |
|
|
86
97
|
|
|
87
98
|
### Verification
|
|
99
|
+
- Secret Scanning: PASS/FAIL
|
|
88
100
|
- Lint: PASS/FAIL
|
|
89
101
|
- Tests: PASS/FAIL
|
|
90
102
|
- Build: PASS/FAIL
|
|
103
|
+
- Blast Radius: PASS/ESCALATED
|
|
104
|
+
- Fast Review: PASS/FAIL
|
|
91
105
|
|
|
92
106
|
### Commits
|
|
93
107
|
- `abc1234` TAS-XX: Address PR review — [summary]
|
|
@@ -3,7 +3,7 @@ name: accessibility-standards
|
|
|
3
3
|
description: "WCAG 2.2 Level AA accessibility patterns for React/HTML/CSS. Use when creating or modifying UI components, forms, navigation, tables, images, or any user-facing elements. Covers keyboard navigation, screen reader semantics, low vision contrast, voice access, and inclusive language."
|
|
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
|
# Accessibility Standards
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: agent-hooks
|
|
|
3
3
|
description: "Lifecycle hooks for AI agent sessions — reusable actions that run at specific points (session start, session end, pre-delegation, post-delegation). Defines what to do at each lifecycle event so agents behave consistently."
|
|
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
|
# Agent Lifecycle Hooks
|
|
9
9
|
|
|
@@ -29,8 +29,8 @@ Session Lifecycle:
|
|
|
29
29
|
### Actions
|
|
30
30
|
|
|
31
31
|
1. **Read lessons learned** — Scan `.github/customizations/LESSONS-LEARNED.md` for entries relevant to the current task domain. Apply proactively.
|
|
32
|
-
2. **Check for checkpoint** — If
|
|
33
|
-
3. **Check pending approvals** — If the checkpoint has a `## Pending Approvals` section, check for replies using the configured messaging provider's MCP tools (e.g., `conversations_replies` for Slack). Read `.opencastle.json` → `stack.
|
|
32
|
+
2. **Check for checkpoint** — If `.github/customizations/SESSION-CHECKPOINT.md` exists, read it. Resume from last known state instead of re-analyzing.
|
|
33
|
+
3. **Check pending approvals** — If the checkpoint has a `## Pending Approvals` section, check for replies using the configured messaging provider's MCP tools (e.g., `conversations_replies` for Slack). Read `.opencastle.json` → `stack.teamTools` to determine the provider. If no messaging is configured, skip this step.
|
|
34
34
|
4. **Check dead letter queue** — Scan `.github/customizations/AGENT-FAILURES.md` for pending failures related to the current scope.
|
|
35
35
|
5. **Load domain skills** — Based on the task description, load the appropriate skills before writing code. Don't start coding without the relevant skill loaded.
|
|
36
36
|
|
|
@@ -40,7 +40,7 @@ Include this reminder in every delegation:
|
|
|
40
40
|
|
|
41
41
|
```
|
|
42
42
|
**Session Start:** Read `.github/customizations/LESSONS-LEARNED.md` before starting.
|
|
43
|
-
Check
|
|
43
|
+
Check `.github/customizations/SESSION-CHECKPOINT.md` for prior state and pending approvals.
|
|
44
44
|
If pending approvals exist, check for replies via the messaging provider.
|
|
45
45
|
Load relevant skills before writing code.
|
|
46
46
|
```
|
|
@@ -51,22 +51,31 @@ Load relevant skills before writing code.
|
|
|
51
51
|
|
|
52
52
|
**When:** Before the agent yields control back to the user — every time, unconditionally.
|
|
53
53
|
|
|
54
|
-
>
|
|
54
|
+
> **⛔ HARD GATE — Run the Pre-Response Quality Gate checklist from `general.instructions.md` before responding.**
|
|
55
|
+
> A session without log records is a failed session. A session without lessons captured after retries is a failed session.
|
|
55
56
|
|
|
56
57
|
### Actions
|
|
57
58
|
|
|
58
|
-
1. **
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
1. **Run the Pre-Response Quality Gate** — This is the single exit gate. Verify ALL items from the checklist in `general.instructions.md` § Pre-Response Quality Gate:
|
|
60
|
+
- [ ] Lessons read at session start
|
|
61
|
+
- [ ] Lessons captured for any retries
|
|
62
|
+
- [ ] Discovered issues tracked (not ignored)
|
|
63
|
+
- [ ] Lint/type/test pass (no new errors)
|
|
64
|
+
- [ ] Session logged to `sessions.ndjson` (ALWAYS)
|
|
65
|
+
- [ ] Delegations logged (Team Lead only)
|
|
66
|
+
- [ ] Reviews/panels/disputes logged (if applicable)
|
|
67
|
+
2. **Save checkpoint** (Team Lead only) — If work is incomplete, write `.github/customizations/SESSION-CHECKPOINT.md` with current state so the next session can resume. Load **session-checkpoints** skill for format.
|
|
68
|
+
3. **Memory merge check** — If `LESSONS-LEARNED.md` has grown significantly (5+ new entries this session), flag for memory merge consideration.
|
|
69
|
+
4. **Clean up** — Remove any temporary files created during the session (e.g., test fixtures, debug outputs).
|
|
63
70
|
|
|
64
71
|
### Template for Delegation Prompts
|
|
65
72
|
|
|
66
73
|
```
|
|
67
|
-
**Session End:**
|
|
68
|
-
|
|
69
|
-
to `.github/customizations/LESSONS-LEARNED.md
|
|
74
|
+
**Session End:** Run the Pre-Response Quality Gate from general.instructions.md:
|
|
75
|
+
- Log your session to `.github/customizations/logs/sessions.ndjson` (Constitution rule #6)
|
|
76
|
+
- If you retried anything with a different approach that worked, add a lesson to `.github/customizations/LESSONS-LEARNED.md`
|
|
77
|
+
- Track any discovered issues in KNOWN-ISSUES.md or a tracker ticket
|
|
78
|
+
- Clean up temp files
|
|
70
79
|
```
|
|
71
80
|
|
|
72
81
|
---
|
|
@@ -77,7 +86,7 @@ to `.github/customizations/LESSONS-LEARNED.md`. Clean up temp files.
|
|
|
77
86
|
|
|
78
87
|
### Actions
|
|
79
88
|
|
|
80
|
-
1. **
|
|
89
|
+
1. **Tracker issue exists** — Verify the task has a tracker issue. If not, create one first.
|
|
81
90
|
2. **File partition clean** — Confirm no overlap with other active agents' file ownership.
|
|
82
91
|
3. **Dependencies verified** — All prerequisite tasks are marked Done with independent verification.
|
|
83
92
|
4. **Prompt is specific** — Includes: objective, file paths, acceptance criteria, patterns to follow, self-improvement reminder.
|
|
@@ -88,7 +97,7 @@ to `.github/customizations/LESSONS-LEARNED.md`. Clean up temp files.
|
|
|
88
97
|
|
|
89
98
|
```
|
|
90
99
|
Pre-Delegate:
|
|
91
|
-
☐
|
|
100
|
+
☐ Tracker issue ID included
|
|
92
101
|
☐ File partition specified
|
|
93
102
|
☐ Dependencies are Done
|
|
94
103
|
☐ Prompt has file paths + acceptance criteria
|
|
@@ -107,10 +116,10 @@ Pre-Delegate:
|
|
|
107
116
|
0. **Fast review (mandatory)** — Run the `fast-review` skill against the agent's output. This is a **non-skippable gate**. See the fast-review skill for the full procedure (single reviewer sub-agent, automatic retry, escalation). Only after the fast review passes do you proceed to the remaining post-delegate actions below.
|
|
108
117
|
1. **Verify output** — Read changed files. Check that changes stay within the agent's file partition.
|
|
109
118
|
2. **Run verification** — Execute appropriate checks: lint, type-check, tests, or visual inspection.
|
|
110
|
-
3. **Check acceptance criteria** — Compare output against the
|
|
111
|
-
4. **Discovered issues tracked** — Verify the agent followed the Discovered Issues Policy. If they found issues, check that they're in KNOWN-ISSUES.md or a new
|
|
119
|
+
3. **Check acceptance criteria** — Compare output against the tracker issue's acceptance criteria. Each criterion must be independently verified.
|
|
120
|
+
4. **Discovered issues tracked** — Verify the agent followed the Discovered Issues Policy. If they found issues, check that they're in KNOWN-ISSUES.md or a new tracker ticket.
|
|
112
121
|
5. **Lessons captured** — If the agent retried anything, verify a lesson was added to LESSONS-LEARNED.md.
|
|
113
|
-
6. **Update
|
|
122
|
+
6. **Update tracker** — Move the issue to Done (if passing) or add failure notes and re-delegate (if failing).
|
|
114
123
|
|
|
115
124
|
### Quick Checklist
|
|
116
125
|
|
|
@@ -3,7 +3,7 @@ name: agent-memory
|
|
|
3
3
|
description: "Agent expertise tracking and cross-session knowledge graph. Use when delegating tasks to track agent strengths/weaknesses, or when building context about file relationships and patterns."
|
|
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
|
# Agent Memory Protocol
|
|
9
9
|
|
|
@@ -30,7 +30,7 @@ Template structure:
|
|
|
30
30
|
### Weak Areas
|
|
31
31
|
| Area | Evidence | Last Updated |
|
|
32
32
|
|------|----------|-------------|
|
|
33
|
-
|
|
|
33
|
+
| Styling approach | Required 2 retries on styling task (TAS-AA) | YYYY-MM-DD |
|
|
34
34
|
|
|
35
35
|
### File Familiarity
|
|
36
36
|
- `apps/tastebeer.eu/app/places/` — 3 tasks completed
|
|
@@ -67,8 +67,8 @@ Add relevant expertise context to delegation prompts. Example addition:
|
|
|
67
67
|
|
|
68
68
|
```
|
|
69
69
|
### Agent Context (from expertise registry)
|
|
70
|
-
- Strong: Server Components,
|
|
71
|
-
- Weak:
|
|
70
|
+
- Strong: Server Components, CMS queries (3 successful tasks)
|
|
71
|
+
- Weak: Component styling (1 retry on TAS-AA)
|
|
72
72
|
- Familiar files: libs/queries/src/lib/search/ (2 tasks)
|
|
73
73
|
```
|
|
74
74
|
|
|
@@ -95,7 +95,7 @@ Capture structured relationships between concepts, files, agents, and decisions.
|
|
|
95
95
|
|-------------|---------|---------|
|
|
96
96
|
| `depends-on` | X requires Y to function | `F:places/page.tsx depends-on F:searchModule.ts` |
|
|
97
97
|
| `caused-by` | X was caused by Y | `B:KI-042 caused-by D:use-server-components` |
|
|
98
|
-
| `expert-in` | Agent X has expertise in Y | `A:Content Engineer expert-in P:
|
|
98
|
+
| `expert-in` | Agent X has expertise in Y | `A:Content Engineer expert-in P:CMS-queries` |
|
|
99
99
|
| `related-to` | Loose conceptual connection | `L:LES-15 related-to P:RLS-policies` |
|
|
100
100
|
| `obsoletes` | X replaces/supersedes Y | `D:use-app-router obsoletes D:use-pages-router` |
|
|
101
101
|
| `blocks` | X prevents Y from working | `B:KI-099 blocks F:auth/middleware.ts` |
|
|
@@ -113,8 +113,8 @@ Template structure:
|
|
|
113
113
|
|
|
114
114
|
| Source | Relationship | Target | Added | Context |
|
|
115
115
|
|--------|-------------|--------|-------|---------|
|
|
116
|
-
| A:
|
|
117
|
-
| F:searchModule.ts | depends-on | F:
|
|
116
|
+
| A:Content Engineer | expert-in | P:CMS-queries | 2026-02-23 | Completed 3 CMS query tasks |
|
|
117
|
+
| F:searchModule.ts | depends-on | F:cms-client.ts | 2026-02-23 | Search uses CMS client |
|
|
118
118
|
| L:LES-15 | related-to | P:cookie-sessions | 2026-02-23 | Lesson about auth token format |
|
|
119
119
|
```
|
|
120
120
|
|
|
@@ -3,15 +3,15 @@ name: api-patterns
|
|
|
3
3
|
description: "API design patterns for route handlers, Server Actions, Zod validation, and external API integration. Use when creating API routes, Server Actions, or integrating external services."
|
|
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
|
# API Patterns
|
|
9
9
|
|
|
10
|
-
Generic API design patterns for
|
|
10
|
+
Generic API design patterns for server-rendered framework projects. For project-specific endpoints, actions, and external API inventory, see [api-config.md](../../customizations/stack/api-config.md).
|
|
11
11
|
|
|
12
12
|
## Architecture
|
|
13
13
|
|
|
14
|
-
This project uses **
|
|
14
|
+
This project uses **App Router** API patterns (resolve the specific framework via the **framework** capability slot in the skill matrix):
|
|
15
15
|
|
|
16
16
|
- **Server Actions** (preferred for mutations) — form submissions, data writes, auth operations
|
|
17
17
|
- **Route Handlers** (`route.ts`) — analytics endpoints, autocomplete, external integrations
|
|
@@ -43,12 +43,12 @@ export async function GET(request: NextRequest) {
|
|
|
43
43
|
|
|
44
44
|
```typescript
|
|
45
45
|
'use server';
|
|
46
|
-
import { createServerClient } from '@libs/
|
|
46
|
+
import { createServerClient } from '@libs/auth';
|
|
47
47
|
import { revalidatePath } from 'next/cache';
|
|
48
48
|
|
|
49
49
|
export async function submitAction(formData: FormData) {
|
|
50
|
-
const
|
|
51
|
-
const { data: { user } } = await
|
|
50
|
+
const client = await createServerClient();
|
|
51
|
+
const { data: { user } } = await client.auth.getUser();
|
|
52
52
|
if (!user) return { error: 'Unauthorized' };
|
|
53
53
|
// ... validate and process
|
|
54
54
|
revalidatePath('/places');
|
|
@@ -3,7 +3,7 @@ name: code-commenting
|
|
|
3
3
|
description: "Guidelines for writing self-explanatory code with minimal comments. Covers when to comment (WHY not WHAT), anti-patterns to avoid, annotation tags, and public API documentation. Use when writing or reviewing code comments."
|
|
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
|
# Self-explanatory Code Commenting
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: context-map
|
|
|
3
3
|
description: "Generate a structured file impact map before making changes. Identifies all files that will be affected, their relationships, and cascade effects — improving file partitioning for parallel work and reducing unexpected side effects."
|
|
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
|
# Skill: Context Map
|
|
9
9
|
|
|
@@ -43,7 +43,7 @@ For each entry point, trace what depends on it:
|
|
|
43
43
|
|
|
44
44
|
For each entry point, trace what it depends on:
|
|
45
45
|
|
|
46
|
-
1. **Data sources** — which
|
|
46
|
+
1. **Data sources** — which CMS schemas, content queries, or database tables feed this code?
|
|
47
47
|
2. **Shared utilities** — which `libs/` modules does it use?
|
|
48
48
|
3. **Configuration** — which config files affect its behavior?
|
|
49
49
|
|
|
@@ -75,8 +75,8 @@ Produce a structured map in this format:
|
|
|
75
75
|
### Unaffected (explicitly safe)
|
|
76
76
|
| Area | Why |
|
|
77
77
|
|------|-----|
|
|
78
|
-
| `
|
|
79
|
-
| `libs/
|
|
78
|
+
| `db/migrations/` | No DB changes |
|
|
79
|
+
| `libs/auth/` | No auth changes |
|
|
80
80
|
| `apps/cms-studio/` | No schema changes |
|
|
81
81
|
```
|
|
82
82
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: data-engineering
|
|
3
|
-
description: "Data pipeline ETL workflows, web scraping
|
|
3
|
+
description: "Data pipeline ETL workflows, web scraping, NDJSON processing, and CMS data import. Use when building scrapers, processing data, running CLI tools, or importing to a CMS."
|
|
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
|
# Data Engineering
|
|
9
9
|
|
|
@@ -31,9 +31,12 @@ abstract class BaseScraper {
|
|
|
31
31
|
}
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
###
|
|
34
|
+
### Browser-Based Scraper Setup
|
|
35
|
+
|
|
36
|
+
Use a headless browser cluster for concurrent scraping (e.g., Puppeteer Cluster, Playwright):
|
|
35
37
|
|
|
36
38
|
```typescript
|
|
39
|
+
// Example using Puppeteer Cluster — adapt to your project's scraping library
|
|
37
40
|
const cluster = await Cluster.launch({
|
|
38
41
|
concurrency: Cluster.CONCURRENCY_CONTEXT,
|
|
39
42
|
maxConcurrency: config.concurrency,
|
|
@@ -53,7 +56,7 @@ const cluster = await Cluster.launch({
|
|
|
53
56
|
- Random delays between requests (2-5 seconds default)
|
|
54
57
|
- Randomize viewport sizes
|
|
55
58
|
- Block unnecessary resources (images, fonts, CSS) for speed
|
|
56
|
-
- Use stealth plugin for
|
|
59
|
+
- Use stealth plugin for the scraping library
|
|
57
60
|
- Request interception for resource optimization
|
|
58
61
|
|
|
59
62
|
### Error Recovery
|
|
@@ -3,7 +3,7 @@ name: deployment-infrastructure
|
|
|
3
3
|
description: "Deployment architecture, environment variables, cron jobs, security headers, and caching patterns. Use when configuring deployments, managing environment variables, setting up cron jobs, or troubleshooting build/deployment issues."
|
|
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
|
# Deployment Infrastructure
|
|
9
9
|
|
|
@@ -22,7 +22,7 @@ All deployment configuration is project-specific. See [deployment-config.md](../
|
|
|
22
22
|
## Release Process
|
|
23
23
|
|
|
24
24
|
### 1. Pre-Release Audit
|
|
25
|
-
- Run
|
|
25
|
+
- Run lint, test, and build for all affected projects (see the **codebase-tool** skill for commands)
|
|
26
26
|
- Review all changed files since last release (`git diff` against last tag/release)
|
|
27
27
|
- Check for uncommitted work or unmerged branches
|
|
28
28
|
- Verify no draft PRs are accidentally included
|
|
@@ -3,7 +3,7 @@ name: documentation-standards
|
|
|
3
3
|
description: "Documentation templates, structure, and standards for project docs, roadmaps, ADRs, and known issues. Use when writing or updating documentation files."
|
|
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
|
# Documentation Standards
|
|
9
9
|
|
|
@@ -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
|
````skill
|
|
4
4
|
---
|
|
@@ -123,7 +123,9 @@ CONFIDENCE: low | medium | high
|
|
|
123
123
|
**Auto-PASS conditions (skip reviewer):**
|
|
124
124
|
- The delegation was pure research/exploration with no code changes
|
|
125
125
|
- The delegation only modified documentation files (`.md`)
|
|
126
|
-
- All deterministic gates already passed AND the change is ≤10 lines across ≤2 files
|
|
126
|
+
- All deterministic gates already passed AND the change is ≤10 lines across ≤2 files AND **no sensitive files were touched** (see validation-gates Gate 3 sensitive file list)
|
|
127
|
+
|
|
128
|
+
> **Sensitive file override:** Changes to auth/middleware files, database migrations, RLS policies, security headers, CSP configuration, environment variable schemas, or CI/CD configuration **always** require a reviewer — even for 1-line changes. Auto-PASS never applies to these files.
|
|
127
129
|
|
|
128
130
|
### Step 4: Handle Verdict
|
|
129
131
|
|
|
@@ -218,12 +220,12 @@ CONFIDENCE: low | medium | high
|
|
|
218
220
|
|
|
219
221
|
## Logging
|
|
220
222
|
|
|
221
|
-
Append a JSON line to
|
|
223
|
+
Append a JSON line to `.github/customizations/logs/reviews.ndjson` after each fast review:
|
|
222
224
|
|
|
223
225
|
```json
|
|
224
226
|
{
|
|
225
227
|
"timestamp": "2026-02-28T14:30:00Z",
|
|
226
|
-
"
|
|
228
|
+
"tracker_issue": "PRJ-42",
|
|
227
229
|
"agent": "Developer",
|
|
228
230
|
"reviewer_model": "gpt-5-mini",
|
|
229
231
|
"verdict": "pass",
|
|
@@ -247,14 +249,23 @@ Fast review sits between the agent's output and the Team Lead's acceptance:
|
|
|
247
249
|
Agent completes work
|
|
248
250
|
│
|
|
249
251
|
▼
|
|
250
|
-
|
|
252
|
+
Secret Scanning ← validation-gates Gate 1
|
|
253
|
+
│
|
|
254
|
+
▼
|
|
255
|
+
Deterministic checks (lint, test, build) ← validation-gates Gate 2
|
|
256
|
+
│
|
|
257
|
+
▼
|
|
258
|
+
Blast Radius Check ← validation-gates Gate 3
|
|
259
|
+
│
|
|
260
|
+
▼
|
|
261
|
+
Dependency Audit (if packages changed) ← validation-gates Gate 4
|
|
251
262
|
│
|
|
252
263
|
▼
|
|
253
|
-
Fast Review (this skill) ← validation-gates Gate
|
|
264
|
+
Fast Review (this skill) ← validation-gates Gate 5
|
|
254
265
|
│
|
|
255
266
|
├── PASS → Accept, move to next task
|
|
256
267
|
├── FAIL → Retry loop (up to 2x)
|
|
257
|
-
└── 3x FAIL → Escalate to Panel (Gate
|
|
268
|
+
└── 3x FAIL → Escalate to Panel (Gate 9)
|
|
258
269
|
```
|
|
259
270
|
|
|
260
271
|
### Relationship to on-post-delegate Hook
|
|
@@ -4,7 +4,7 @@ description: "Create distinctive, production-grade frontend interfaces with high
|
|
|
4
4
|
license: Complete terms in LICENSE.txt
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
8
8
|
|
|
9
9
|
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
|
|
10
10
|
|
|
@@ -3,7 +3,7 @@ name: memory-merger
|
|
|
3
3
|
description: "Protocol for graduating mature lessons from LESSONS-LEARNED.md into permanent instruction and skill files. Closes the self-improvement loop by codifying validated knowledge at the source level."
|
|
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
|
# Skill: Memory Merger
|
|
9
9
|
|
|
@@ -35,7 +35,7 @@ Read `.github/customizations/LESSONS-LEARNED.md` and identify lessons that meet
|
|
|
35
35
|
| **High severity** | Marked `high` severity |
|
|
36
36
|
| **Age** | Added more than 60 days ago and still relevant |
|
|
37
37
|
| **Category concentration** | 5+ lessons in the same category → extract a pattern |
|
|
38
|
-
| **Tool-specific** | Lesson about a specific MCP tool,
|
|
38
|
+
| **Tool-specific** | Lesson about a specific MCP tool, codebase-tool command, or framework pattern |
|
|
39
39
|
|
|
40
40
|
### Step 2: Map Lessons to Target Files
|
|
41
41
|
|
|
@@ -43,17 +43,17 @@ Each lesson has a natural home in the instruction/skill hierarchy:
|
|
|
43
43
|
|
|
44
44
|
| Lesson Category | Target File |
|
|
45
45
|
|----------------|-------------|
|
|
46
|
-
| `
|
|
46
|
+
| `task-management` | The skill mapped by the `task-management` slot in the skill matrix |
|
|
47
47
|
| `mcp-tools` | The corresponding agent file or skill that uses the tool |
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `browser-testing` |
|
|
48
|
+
| `codebase-tool` | The skill mapped by the `codebase-tool` slot in the skill matrix |
|
|
49
|
+
| `cms` | The skill mapped by the `cms` slot in the skill matrix |
|
|
50
|
+
| `database` | The skill mapped by the `database` slot in the skill matrix |
|
|
51
|
+
| `browser-testing` | The skill mapped by the `e2e-testing` slot in the skill matrix |
|
|
52
52
|
| `git-workflow` | `.github/instructions/general.instructions.md` |
|
|
53
53
|
| `deployment` | `.github/skills/deployment-infrastructure/SKILL.md` |
|
|
54
54
|
| `delegation` | `.github/agents/team-lead.agent.md` or `.github/skills/team-lead-reference/SKILL.md` |
|
|
55
55
|
| `testing` | `.github/skills/testing-workflow/SKILL.md` |
|
|
56
|
-
| `
|
|
56
|
+
| `ui-library` / `framework` | The skill mapped by the corresponding slot in the skill matrix |
|
|
57
57
|
| Cross-cutting pattern | `.github/instructions/general.instructions.md` |
|
|
58
58
|
|
|
59
59
|
### Step 3: Draft the Merge
|
|
@@ -3,7 +3,7 @@ name: nextjs-patterns
|
|
|
3
3
|
description: "Next.js App Router best practices for server/client components, routing, API routes, and project structure. Use when creating or modifying Next.js pages, layouts, route handlers, or Server Actions."
|
|
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
|
# Next.js Patterns (2025)
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: panel-majority-vote
|
|
|
3
3
|
description: "Run 3 isolated reviewer sub-agents against the same question and decide PASS/BLOCK by majority vote (2/3 wins). Use when deterministic verification is insufficient."
|
|
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
|
# Skill: Panel majority vote (3 reviewers)
|
|
9
9
|
|
|
@@ -136,7 +136,7 @@ Each reviewer gets a weight based on 3 factors:
|
|
|
136
136
|
|
|
137
137
|
```text
|
|
138
138
|
Reviewer 1 (Security Expert, reviewing auth): base 1 + domain 2 + confidence 1 = weight 4
|
|
139
|
-
Reviewer 2 (
|
|
139
|
+
Reviewer 2 (Frontend Dev, reviewing auth): base 1 + domain 0 + confidence 1 = weight 2
|
|
140
140
|
Reviewer 3 (Architect, reviewing auth): base 1 + domain 1 + confidence 0 = weight 2
|
|
141
141
|
```
|
|
142
142
|
|
|
@@ -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
|
# Panel Report
|
|
4
4
|
|
|
@@ -3,7 +3,7 @@ name: performance-optimization
|
|
|
3
3
|
description: "Frontend and backend performance optimization patterns including rendering, asset optimization, JavaScript performance, caching, profiling, and code review checklist. Use when optimizing components, reviewing code for performance, or analyzing bundle size and Core Web Vitals."
|
|
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
|
# Performance Optimization
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: react-development
|
|
3
|
-
description: "React development standards for functional components, hooks, TypeScript integration, state management, styling
|
|
3
|
+
description: "React development standards for functional components, hooks, TypeScript integration, state management, styling, and testing patterns. Use when creating or modifying React components, custom hooks, or component tests."
|
|
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
|
# React Development Standards
|
|
9
9
|
|
|
@@ -108,7 +108,7 @@ Modern React patterns following the official React documentation at https://reac
|
|
|
108
108
|
- Co-locate tests in `__tests__` subdirectory.
|
|
109
109
|
- **CRITICAL**: Never mix static imports and `require()` for lazy-loaded libraries in tests.
|
|
110
110
|
- Use `jest.requireMock()` instead of `require()` in test functions.
|
|
111
|
-
- Use `jest.requireActual()` in mock setup.
|
|
111
|
+
- Use `jest.requireActual()` or equivalent in mock setup.
|
|
112
112
|
|
|
113
113
|
## Security
|
|
114
114
|
|