opencastle 0.35.2 → 0.35.3
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/package.json +1 -1
- package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +12 -12
- package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +9 -9
- package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/dist/data/convoys/demo-docs-update.json +7 -7
- package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +12 -12
- package/src/dashboard/public/data/convoys/demo-data-pipeline.json +9 -9
- package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/public/data/convoys/demo-docs-update.json +7 -7
- package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
- package/src/orchestrator/agents/api-designer.agent.md +10 -10
- package/src/orchestrator/agents/architect.agent.md +8 -8
- package/src/orchestrator/agents/content-engineer.agent.md +5 -5
- package/src/orchestrator/agents/copywriter.agent.md +7 -7
- package/src/orchestrator/agents/data-expert.agent.md +9 -9
- package/src/orchestrator/agents/database-engineer.agent.md +7 -7
- package/src/orchestrator/agents/developer.agent.md +13 -13
- package/src/orchestrator/agents/devops-expert.agent.md +10 -10
- package/src/orchestrator/agents/documentation-writer.agent.md +8 -8
- package/src/orchestrator/agents/performance-expert.agent.md +9 -9
- package/src/orchestrator/agents/release-manager.agent.md +8 -8
- package/src/orchestrator/agents/researcher.agent.md +5 -5
- package/src/orchestrator/agents/reviewer.agent.md +5 -5
- package/src/orchestrator/agents/security-expert.agent.md +10 -10
- package/src/orchestrator/agents/seo-specialist.agent.md +11 -11
- package/src/orchestrator/agents/session-guard.agent.md +2 -2
- package/src/orchestrator/agents/team-lead.agent.md +4 -4
- package/src/orchestrator/agents/testing-expert.agent.md +7 -7
- package/src/orchestrator/agents/ui-ux-expert.agent.md +15 -15
- package/src/orchestrator/prompts/assess-complexity.prompt.md +8 -8
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +17 -17
- package/src/orchestrator/prompts/brainstorm.prompt.md +17 -17
- package/src/orchestrator/prompts/bug-fix.prompt.md +11 -11
- package/src/orchestrator/prompts/create-skill.prompt.md +21 -21
- package/src/orchestrator/prompts/fix-convoy.prompt.md +8 -8
- package/src/orchestrator/prompts/fix-prd.prompt.md +12 -12
- package/src/orchestrator/prompts/generate-convoy.prompt.md +50 -50
- package/src/orchestrator/prompts/generate-prd.prompt.md +32 -32
- package/src/orchestrator/prompts/implement-feature.prompt.md +16 -16
- package/src/orchestrator/prompts/quick-refinement.prompt.md +18 -18
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +9 -9
- package/src/orchestrator/prompts/validate-convoy.prompt.md +10 -10
- package/src/orchestrator/prompts/validate-prd.prompt.md +10 -10
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +8 -8
- package/src/orchestrator/skills/agent-hooks/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-memory/SKILL.md +11 -11
- package/src/orchestrator/skills/api-patterns/SKILL.md +5 -5
- package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +24 -51
- package/src/orchestrator/skills/code-commenting/SKILL.md +3 -3
- package/src/orchestrator/skills/context-map/REFERENCE.md +2 -2
- package/src/orchestrator/skills/context-map/SKILL.md +5 -5
- package/src/orchestrator/skills/data-engineering/SKILL.md +12 -12
- package/src/orchestrator/skills/decomposition/SKILL.md +34 -7
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +4 -4
- package/src/orchestrator/skills/documentation-standards/SKILL.md +7 -7
- package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +3 -3
- package/src/orchestrator/skills/fast-review/SKILL.md +2 -2
- package/src/orchestrator/skills/frontend-design/COMPONENTS.md +1 -1
- package/src/orchestrator/skills/frontend-design/SKILL.md +11 -11
- package/src/orchestrator/skills/git-workflow/SKILL.md +5 -5
- package/src/orchestrator/skills/memory-merger/SKILL.md +32 -8
- package/src/orchestrator/skills/observability-logging/SKILL.md +6 -11
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +15 -15
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -4
- package/src/orchestrator/skills/performance-optimization/SKILL.md +5 -5
- package/src/orchestrator/skills/project-consistency/SKILL.md +4 -4
- package/src/orchestrator/skills/react-development/SKILL.md +8 -8
- package/src/orchestrator/skills/security-hardening/SKILL.md +12 -12
- package/src/orchestrator/skills/self-improvement/SKILL.md +11 -11
- package/src/orchestrator/skills/seo-patterns/SKILL.md +49 -23
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +12 -12
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +6 -6
- package/src/orchestrator/skills/testing-workflow/SKILL.md +3 -3
- package/src/orchestrator/skills/validation-gates/SKILL.md +6 -6
- package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +0 -16
- package/src/orchestrator/skills/decomposition/REFERENCE.md +0 -28
- package/src/orchestrator/skills/memory-merger/REFERENCE.md +0 -20
- package/src/orchestrator/skills/react-development/REFERENCE.md +0 -7
- package/src/orchestrator/skills/seo-patterns/REFERENCE.md +0 -54
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: react-development
|
|
3
|
-
description: "Enforces
|
|
3
|
+
description: "Enforces React-specific patterns: functional components with hooks, TypeScript prop interfaces, CSS Modules co-location, React Testing Library behavioral tests. Use when creating React components, writing custom hooks, structuring component folders, applying RTL test patterns, or wiring TypeScript prop types. Trigger terms: React, .tsx, component, hook, RTL, jsx, useState, useEffect, prop interface"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# React Development Standards
|
|
@@ -9,7 +9,7 @@ description: "Enforces naming conventions, prop typing patterns, file structure,
|
|
|
9
9
|
|
|
10
10
|
## New Component Workflow
|
|
11
11
|
|
|
12
|
-
1. **Create file** — `ComponentName.tsx` in
|
|
12
|
+
1. **Create file** — `ComponentName.tsx` in feature folder; co-locate `ComponentName.module.scss`, `ComponentName.test.tsx`
|
|
13
13
|
2. **Define interface** — export `ComponentNameProps` with TypeScript; destructure in function signature
|
|
14
14
|
3. **Implement** — functional component with hooks; use CSS Modules for styling
|
|
15
15
|
4. **Test** — RTL behavioral tests; cover render, interaction, edge cases, accessibility
|
|
@@ -17,7 +17,7 @@ description: "Enforces naming conventions, prop typing patterns, file structure,
|
|
|
17
17
|
|
|
18
18
|
## Architecture & Components (concise)
|
|
19
19
|
|
|
20
|
-
- Functional components with hooks. Follow domain/feature folder structure
|
|
20
|
+
- Functional components with hooks. Follow domain/feature folder structure; co-locate tests/styles with components.
|
|
21
21
|
- PascalCase names; destructure props; use TypeScript interfaces for props.
|
|
22
22
|
|
|
23
23
|
```tsx
|
|
@@ -34,7 +34,7 @@ export function UserCard({ name, role }: UserCardProps) {
|
|
|
34
34
|
|
|
35
35
|
## TypeScript
|
|
36
36
|
|
|
37
|
-
- Use interfaces for props
|
|
37
|
+
- Use interfaces for props, shared types; keep strict mode enabled in `tsconfig.json`. Generic constraints: `<T extends Record<string, unknown>>`. Discriminated unions for variant props. Avoid `as` casts.
|
|
38
38
|
|
|
39
39
|
## Styling
|
|
40
40
|
|
|
@@ -47,8 +47,8 @@ export function UserCard({ name, role }: UserCardProps) {
|
|
|
47
47
|
## Testing
|
|
48
48
|
|
|
49
49
|
- React Testing Library (behavior, not implementation); Jest runner.
|
|
50
|
-
- Co-locate tests next to components; mock external deps
|
|
51
|
-
- Test accessibility
|
|
50
|
+
- Co-locate tests next to components; mock external deps, API calls.
|
|
51
|
+
- Test accessibility, keyboard navigation; verify component public surface via unit tests.
|
|
52
52
|
|
|
53
53
|
```tsx
|
|
54
54
|
import { render, screen } from '@testing-library/react';
|
|
@@ -72,8 +72,8 @@ pnpm test # rerun failing tests with `pnpm test -- -t <name>`
|
|
|
72
72
|
pnpm build # ensure production build succeeds
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
If `lint` fails: run `pnpm lint --fix
|
|
75
|
+
If `lint` fails: run `pnpm lint --fix`; re-run. If `typecheck` fails: inspect reported files; add missing types. If tests fail: run with `--runInBand` to collect stack traces; reproduce locally.
|
|
76
76
|
|
|
77
77
|
## Security
|
|
78
78
|
|
|
79
|
-
-
|
|
79
|
+
- Sanitize user-supplied HTML before rendering (e.g. `dompurify`); never trust client validation alone — validate server-side. See **api-patterns** skill for server validation patterns.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security-hardening
|
|
3
|
-
description: "Security architecture
|
|
3
|
+
description: "Security architecture: authentication, authorization, RLS policies, CSP, input validation, API security. Use when implementing auth flows, writing RLS policies, configuring CSP/headers, validating inputs, or auditing security. Trigger terms: RLS, CSP, Server Actions, Zod, auth flow"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Security Hardening
|
|
@@ -33,7 +33,7 @@ Auth provider with Server Actions pattern. Resolve library via **database** capa
|
|
|
33
33
|
|
|
34
34
|
## CSP
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Least privilege. External domains are project-specific (see deployment customization).
|
|
37
37
|
|
|
38
38
|
- `default-src 'self'` — deny by default
|
|
39
39
|
- `object-src 'none'` — block plugins
|
|
@@ -43,7 +43,7 @@ Principle of least privilege. External domains are project-specific (see deploym
|
|
|
43
43
|
|
|
44
44
|
**Note:** `'unsafe-inline'`/`'unsafe-eval'` may be required in dev mode — use nonces/hashes in production.
|
|
45
45
|
|
|
46
|
-
**Examples** — Next.js `next.config.js` headers
|
|
46
|
+
**Examples** — Next.js `next.config.js` headers + middleware:
|
|
47
47
|
|
|
48
48
|
```js
|
|
49
49
|
// next.config.js
|
|
@@ -97,7 +97,7 @@ WHERE relname = 'your_table_name';
|
|
|
97
97
|
|
|
98
98
|
`relrowsecurity = true` indicates RLS enabled.
|
|
99
99
|
|
|
100
|
-
2. Test pattern: verify
|
|
100
|
+
2. Test pattern: verify user without privileges cannot read rows.
|
|
101
101
|
|
|
102
102
|
```sql
|
|
103
103
|
-- As owner (create test row)
|
|
@@ -109,7 +109,7 @@ SELECT * FROM your_table_name WHERE id = 1;
|
|
|
109
109
|
-- expected: 0 rows
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
Automate this check in CI: run the enabling query
|
|
112
|
+
Automate this check in CI: run the enabling query + positive/negative test as part of the security gate.
|
|
113
113
|
|
|
114
114
|
## Server Action Zod example
|
|
115
115
|
|
|
@@ -141,7 +141,7 @@ if (!authHeader || authHeader !== `Bearer ${process.env.CRON_SECRET}`) {
|
|
|
141
141
|
|
|
142
142
|
Generate secret: `openssl rand -hex 32`. Rotate quarterly.
|
|
143
143
|
|
|
144
|
-
Input: Zod schemas in all Server Actions
|
|
144
|
+
Input: Zod schemas in all Server Actions, route handlers; React Hook Form client-side.
|
|
145
145
|
|
|
146
146
|
## Critical Rules
|
|
147
147
|
|
|
@@ -154,10 +154,10 @@ Input: Zod schemas in all Server Actions and route handlers; React Hook Form cli
|
|
|
154
154
|
7. Rotate secrets quarterly.
|
|
155
155
|
|
|
156
156
|
## Implementation checklist
|
|
157
|
-
1. Enable RLS on tables
|
|
158
|
-
2. Configure authentication
|
|
159
|
-
3. Add CSP
|
|
160
|
-
4. Add Zod validation to all Server Actions
|
|
161
|
-
5. Run
|
|
157
|
+
1. Enable RLS on tables, add automated enablement check in CI (example: `SELECT relrowsecurity FROM pg_class WHERE relname = 'your_table'`).
|
|
158
|
+
2. Configure authentication + session middleware; verify via integration smoke test against protected endpoint (e.g., `/api/me`).
|
|
159
|
+
3. Add CSP + security headers in `next.config.js` or middleware; validate with `curl -I` against preview URL.
|
|
160
|
+
4. Add Zod validation to all Server Actions, route handlers (see Zod example above).
|
|
161
|
+
5. Run security audit (RLS positive/negative tests, header validation, input fuzzing); block merges on failing gates.
|
|
162
162
|
|
|
163
|
-
Cross-reference:
|
|
163
|
+
Cross-reference: [api-patterns/SKILL.md](../api-patterns/SKILL.md#architecture) for Server Action patterns; [session-checkpoints/SKILL.md](../session-checkpoints/SKILL.md) for checkpointing security-sensitive work.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: self-improvement
|
|
3
|
-
description: "Appends new entries to LESSONS-LEARNED.md via
|
|
3
|
+
description: "Appends new entries to LESSONS-LEARNED.md via opencastle lesson CLI; searches past lessons for matching errors; proposes skill updates when retry patterns exceed thresholds. Use when consulting or updating LESSONS-LEARNED.md, after task failures, when capturing retrospective insights, or when a retry succeeds."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Self-Improvement Protocol
|
|
7
7
|
|
|
8
8
|
## Core Rule
|
|
9
9
|
|
|
10
|
-
**Retry with
|
|
10
|
+
**Retry with different approach and it works → document lesson immediately.** File: `.opencastle/LESSONS-LEARNED.md`
|
|
11
11
|
|
|
12
12
|
## Writing a Lesson
|
|
13
13
|
|
|
@@ -21,16 +21,16 @@ opencastle lesson --title "Short descriptive title" --category general --severit
|
|
|
21
21
|
|
|
22
22
|
Required: `--title`, `--category`, `--severity`, `--problem` · Optional: `--wrong`, `--correct`, `--why`
|
|
23
23
|
|
|
24
|
-
After writing: if
|
|
24
|
+
After writing: if lesson reveals gap in skill/instruction file, update that file too (prevents pitfall at source).
|
|
25
25
|
|
|
26
26
|
## Workflow
|
|
27
27
|
|
|
28
28
|
1. Search LESSONS-LEARNED.md for matching entries or similar errors.
|
|
29
|
-
2. Attempt
|
|
30
|
-
3. On failure: retry with modified approach (up to threshold)
|
|
31
|
-
4. On success: run `opencastle lesson` to record
|
|
32
|
-
5. Verify: `tail -1 .opencastle/LESSONS-LEARNED.md` — confirm entry has title, category,
|
|
33
|
-
6. If
|
|
29
|
+
2. Attempt task with conservative flags/options informed by lessons.
|
|
30
|
+
3. On failure: retry with modified approach (up to threshold); capture error details, context.
|
|
31
|
+
4. On success: run `opencastle lesson` to record working approach.
|
|
32
|
+
5. Verify: `tail -1 .opencastle/LESSONS-LEARNED.md` — confirm entry has title, category, severity. If malformed → re-run with corrected flags.
|
|
33
|
+
6. If lesson indicates needed skill/instruction update: draft change; propose a PR.
|
|
34
34
|
|
|
35
35
|
Quick search example:
|
|
36
36
|
|
|
@@ -40,11 +40,11 @@ rg "missing CRON_SECRET" .opencastle/LESSONS-LEARNED.md || true
|
|
|
40
40
|
|
|
41
41
|
## Categories & Severity
|
|
42
42
|
|
|
43
|
-
Category
|
|
43
|
+
Category, severity tables moved to [LESSON-CATEGORIES.md](LESSON-CATEGORIES.md). Use that file when tagging lessons.
|
|
44
44
|
|
|
45
45
|
## Quality Rules
|
|
46
46
|
|
|
47
|
-
- Include exact error messages, commands,
|
|
47
|
+
- Include exact error messages, commands, tool parameters
|
|
48
48
|
- Show wrong **and** correct approaches — the contrast is actionable
|
|
49
49
|
- Explain why (root cause)
|
|
50
50
|
- One lesson per entry; code blocks mandatory for commands
|
|
@@ -55,4 +55,4 @@ Never skip reading lessons · Never fix without documenting · Never write vague
|
|
|
55
55
|
|
|
56
56
|
## Agent Memory
|
|
57
57
|
|
|
58
|
-
For expertise tracking
|
|
58
|
+
For expertise tracking, cross-session knowledge graphs, load **agent-memory** skill.
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo-patterns
|
|
3
|
-
description: "Implements technical SEO: meta tags, JSON-LD structured data, sitemaps,
|
|
3
|
+
description: "Implements technical SEO: meta tags, JSON-LD structured data, sitemaps, crawlability fixes. Use when adding schema markup, JSON-LD, robots.txt updates, canonical URLs, Open Graph tags, or improving crawlability."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# SEO Patterns
|
|
7
7
|
|
|
8
8
|
## Core Principles
|
|
9
9
|
|
|
10
|
-
-
|
|
11
|
-
- Structured data MUST
|
|
12
|
-
- Server-render
|
|
13
|
-
- Canonical URLs are mandatory on every page.
|
|
10
|
+
- Unique `<title>` + `<meta name="description">` per public page
|
|
11
|
+
- Structured data MUST pass Google's Rich Results Test before shipping
|
|
12
|
+
- Server-render indexable content; canonical URL on every page
|
|
14
13
|
|
|
15
14
|
## Implementation Workflow
|
|
16
15
|
|
|
17
|
-
1. Add meta tags
|
|
18
|
-
|
|
19
|
-
2. Add
|
|
20
|
-
|
|
21
|
-
3. Generate
|
|
22
|
-
|
|
23
|
-
4. Verify robots.txt
|
|
24
|
-
|
|
25
|
-
5. Monitor Search Console for warnings
|
|
16
|
+
1. Add meta tags + canonical URLs in server-rendered HTML.
|
|
17
|
+
- Checkpoint: every page has unique `<title>` + description.
|
|
18
|
+
2. Add JSON-LD for page type (server-rendered).
|
|
19
|
+
- Checkpoint: Rich Results Test → 0 errors.
|
|
20
|
+
3. Generate sitemap + reference from `robots.txt`.
|
|
21
|
+
- Checkpoint: sitemap URL accessible, listed in `robots.txt`.
|
|
22
|
+
4. Verify `robots.txt` allows public pages.
|
|
23
|
+
- Recovery: remove accidental `Disallow:` entries; resubmit sitemap.
|
|
24
|
+
5. Monitor Search Console for warnings post-deploy.
|
|
26
25
|
|
|
27
26
|
## Meta Tags & Open Graph
|
|
28
27
|
|
|
@@ -43,14 +42,38 @@ export const metadata: Metadata = {
|
|
|
43
42
|
};
|
|
44
43
|
```
|
|
45
44
|
|
|
46
|
-
**
|
|
45
|
+
**Constraints:** title 50–60 chars · description 150–160 chars · OG image 1200×630 px · `noindex` only on admin/draft pages.
|
|
47
46
|
|
|
48
|
-
## Structured Data
|
|
49
|
-
For structured data reference examples and detailed anti-patterns see [REFERENCE.md](./REFERENCE.md).
|
|
47
|
+
## Structured Data (JSON-LD)
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
```tsx
|
|
50
|
+
function StructuredData({ breadcrumbs, article }: Props) {
|
|
51
|
+
const breadcrumbLd = {
|
|
52
|
+
'@context': 'https://schema.org', '@type': 'BreadcrumbList',
|
|
53
|
+
itemListElement: breadcrumbs.map((crumb, i) => ({ '@type': 'ListItem', position: i + 1, name: crumb.label, item: crumb.url })),
|
|
54
|
+
};
|
|
55
|
+
const articleLd = {
|
|
56
|
+
'@context': 'https://schema.org', '@type': 'Article',
|
|
57
|
+
headline: article.title, description: article.summary,
|
|
58
|
+
image: article.imageUrl, datePublished: article.publishedAt,
|
|
59
|
+
dateModified: article.updatedAt, author: { '@type': 'Person', name: article.author },
|
|
60
|
+
};
|
|
61
|
+
return (
|
|
62
|
+
<>
|
|
63
|
+
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbLd) }} />
|
|
64
|
+
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(articleLd) }} />
|
|
65
|
+
</>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Validate:** `curl -s https://example.com/page | pup 'script[type=application/ld+json] text{}' | jq .` then run Google's Rich Results Test (https://search.google.com/test/rich-results).
|
|
71
|
+
|
|
72
|
+
## Sitemap & robots.txt
|
|
73
|
+
|
|
74
|
+
- Generate XML sitemap dynamically from your data source (CMS, DB, filesystem)
|
|
75
|
+
- Use **sitemap index** when >50,000 URLs or >50 MB
|
|
76
|
+
- Include `<lastmod>` only if accurate
|
|
54
77
|
|
|
55
78
|
```txt
|
|
56
79
|
User-agent: *
|
|
@@ -61,7 +84,10 @@ Disallow: /preview/
|
|
|
61
84
|
Sitemap: https://example.com/sitemap.xml
|
|
62
85
|
```
|
|
63
86
|
|
|
64
|
-
|
|
87
|
+
## Anti-Patterns
|
|
65
88
|
|
|
66
|
-
|
|
67
|
-
|
|
89
|
+
- Duplicate titles across pages
|
|
90
|
+
- Missing canonical URL → duplicate content
|
|
91
|
+
- Client-only rendered primary content → not indexed
|
|
92
|
+
- Unvalidated structured data shipped to prod
|
|
93
|
+
- Page load >3s on mobile
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: session-checkpoints
|
|
3
|
-
description: "Saves
|
|
3
|
+
description: "Saves, restores session state including task progress, file changes, delegation history. Use when saving progress, resuming interrupted work, picking up where you left off, or checkpointing current work."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: Session Checkpoints
|
|
@@ -17,14 +17,14 @@ description: "Saves and restores session state including task progress, file cha
|
|
|
17
17
|
|
|
18
18
|
## Checkpoint Template
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Full checkpoint template moved to `CHECKPOINT-TEMPLATE.md` in this directory for progressive disclosure. Use that file as canonical, copy-pasteable checkpoint document.
|
|
21
21
|
|
|
22
|
-
See
|
|
22
|
+
See Decomposition Flow in `decomposition` skill for when to create checkpoints: [decomposition](../../skills/decomposition/SKILL.md).
|
|
23
23
|
## Checkpoint creation (quick)
|
|
24
24
|
|
|
25
|
-
1. Create `.opencastle/SESSION-CHECKPOINT.md` from
|
|
26
|
-
2. Commit checkpoint or save to workspace
|
|
27
|
-
3. Verify: `cat .opencastle/SESSION-CHECKPOINT.md
|
|
25
|
+
1. Create `.opencastle/SESSION-CHECKPOINT.md` from example below.
|
|
26
|
+
2. Commit checkpoint or save to workspace; attach to tracker issue.
|
|
27
|
+
3. Verify: `cat .opencastle/SESSION-CHECKPOINT.md`; confirm listed files exist.
|
|
28
28
|
|
|
29
29
|
```markdown
|
|
30
30
|
# Session Checkpoint — 2026-04-01
|
|
@@ -48,20 +48,20 @@ Implementing search filters — unit tests passing, E2E pending.
|
|
|
48
48
|
3. Continue TASK-13: write E2E tests for filter interactions
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
For
|
|
51
|
+
For complete copy-pasteable template, see [CHECKPOINT-TEMPLATE.md](./CHECKPOINT-TEMPLATE.md).
|
|
52
52
|
|
|
53
53
|
## Resuming
|
|
54
54
|
|
|
55
55
|
1. Read `.opencastle/SESSION-CHECKPOINT.md`
|
|
56
|
-
2. Run `git status
|
|
56
|
+
2. Run `git status`, `git branch` — confirm you are on correct branch
|
|
57
57
|
3. Check In Progress tasks — if stale (>1 session old), verify files match expected state
|
|
58
58
|
4. Check Pending Approvals — remove rows for questions answered via VS Code chat
|
|
59
|
-
5. Read tracker issues for
|
|
60
|
-
6. Follow
|
|
59
|
+
5. Read tracker issues for tasks marked In Progress or Todo
|
|
60
|
+
6. Follow Resume Instructions section in checkpoint
|
|
61
61
|
7. Update checkpoint progress after each completed task
|
|
62
62
|
|
|
63
|
-
**If checkpoint
|
|
63
|
+
**If checkpoint missing or corrupt:** Rebuild from `git log --oneline -20`, tracker state.
|
|
64
64
|
|
|
65
65
|
## Cleanup & Team Lead
|
|
66
66
|
|
|
67
|
-
When all issues Done: archive to tracker
|
|
67
|
+
When all issues Done: archive to tracker; delete `.opencastle/SESSION-CHECKPOINT.md`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: team-lead-reference
|
|
3
|
-
description: "Provides model routing rules, validates delegation prerequisites, supplies cost tracking templates,
|
|
3
|
+
description: "Provides model routing rules, validates delegation prerequisites, supplies cost tracking templates, defines dead-letter queue formats for Team Lead orchestration. Load when assigning tasks to agents, choosing model tiers, starting delegation session, running multi-agent workflow, delegating work, choosing which model to use, or assigning tasks."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Team Lead Reference
|
|
@@ -15,7 +15,7 @@ description: "Provides model routing rules, validates delegation prerequisites,
|
|
|
15
15
|
6. **Handle** output per Status Handling table
|
|
16
16
|
7. **Log** via **observability-logging** skill
|
|
17
17
|
|
|
18
|
-
For
|
|
18
|
+
For specialist agent registry, model assignments, see [agent-registry.md](../../.opencastle/agents/agent-registry.md).
|
|
19
19
|
|
|
20
20
|
## Cost-Aware Model Routing
|
|
21
21
|
|
|
@@ -56,7 +56,7 @@ For the specialist agent registry and model assignments, see [agent-registry.md]
|
|
|
56
56
|
| 3–5 subtasks, mixed | Quick deepen — single Researcher sub-agent |
|
|
57
57
|
| 6+ subtasks, unfamiliar | Full deepen — parallel Researcher sub-agents |
|
|
58
58
|
|
|
59
|
-
**Quick deepen:** Fire one Researcher for exact file paths & line numbers, patterns to follow (file:line examples), relevant lessons from `LESSONS-LEARNED.md`,
|
|
59
|
+
**Quick deepen:** Fire one Researcher for exact file paths & line numbers, patterns to follow (file:line examples), relevant lessons from `LESSONS-LEARNED.md`, risks/blockers per subtask.
|
|
60
60
|
**Full deepen:** Split by domain into parallel Researchers. See [agent-registry.md](../../.opencastle/agents/agent-registry.md) for scope examples.
|
|
61
61
|
|
|
62
62
|
| Field | Before Deepen | After Deepen |
|
|
@@ -79,8 +79,8 @@ For the specialist agent registry and model assignments, see [agent-registry.md]
|
|
|
79
79
|
## Pre-Delegation Policy Checks
|
|
80
80
|
|
|
81
81
|
1. Tracker issue exists for this task
|
|
82
|
-
2. File partition
|
|
83
|
-
3. All dependency tasks
|
|
82
|
+
2. File partition clean (no overlap with parallel agents)
|
|
83
|
+
3. All dependency tasks Done
|
|
84
84
|
4. Delegation prompt has file paths + acceptance criteria
|
|
85
85
|
5. Self-improvement reminder included (`Read LESSONS-LEARNED.md first`)
|
|
86
86
|
|
|
@@ -115,7 +115,7 @@ Entry (`DLQ-XXX: Short description`): **Date**, **Agent**, **Tracker Issue**, **
|
|
|
115
115
|
|
|
116
116
|
## Error Recovery
|
|
117
117
|
|
|
118
|
-
For common failure modes
|
|
118
|
+
For common failure modes, recovery procedures, load **orchestration-protocols** skill.
|
|
119
119
|
|
|
120
120
|
## Dispute Protocol
|
|
121
121
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: testing-workflow
|
|
3
|
-
description: "Generates test plans, writes unit/integration/E2E test files, identifies coverage gaps,
|
|
3
|
+
description: "Generates test plans, writes unit/integration/E2E test files, identifies coverage gaps, flags common testing anti-patterns. Use when writing tests, creating test suites, planning test strategies, mocking dependencies, measuring code coverage, or test planning."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Testing Workflow
|
|
@@ -16,7 +16,7 @@ description: "Generates test plans, writes unit/integration/E2E test files, iden
|
|
|
16
16
|
## Core Rules
|
|
17
17
|
|
|
18
18
|
- Validate every feature: happy paths, edge cases, error conditions, interactions.
|
|
19
|
-
- **Mandatory**: Test in browser via
|
|
19
|
+
- **Mandatory**: Test in browser via **e2e-testing** capability slot before marking complete.
|
|
20
20
|
|
|
21
21
|
## E2E Context Limits
|
|
22
22
|
|
|
@@ -53,7 +53,7 @@ Suite files: see `.opencastle/project.instructions.md`.
|
|
|
53
53
|
|
|
54
54
|
| Anti-Pattern | Correct Approach |
|
|
55
55
|
|---|---|
|
|
56
|
-
| Testing only initial page load | Test filter changes
|
|
56
|
+
| Testing only initial page load | Test filter changes, different results |
|
|
57
57
|
| Assuming filters work because they render | Verify each option changes results |
|
|
58
58
|
| Client-side only | Verify server requests are triggered |
|
|
59
59
|
| Single scenario | Test urban, rural, edge, out-of-range |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: validation-gates
|
|
3
|
-
description: "Defines 10 sequential validation gates: secret scanning, lint/test/build checks, blast radius analysis, dependency auditing, browser testing, cache management, regression checks,
|
|
3
|
+
description: "Defines 10 sequential validation gates: secret scanning, lint/test/build checks, blast radius analysis, dependency auditing, browser testing, cache management, regression checks, smoke tests. Use when running pre-deploy validation or CI checks, CI/CD pipelines, deployment pipeline validation, pre-merge checks, continuous integration, or pull request validation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Validation Gates
|
|
@@ -28,7 +28,7 @@ Example tool: `gitleaks detect --source . --verbosity warn` (or CI equivalent)
|
|
|
28
28
|
|
|
29
29
|
## Gate 2: Deterministic Checks
|
|
30
30
|
|
|
31
|
-
Run for every affected project (resolve exact commands via
|
|
31
|
+
Run for every affected project (resolve exact commands via **codebase-tool** skill): lint (with auto-fix), test, build. All must pass with zero errors.
|
|
32
32
|
|
|
33
33
|
Example (project with npm scripts):
|
|
34
34
|
|
|
@@ -59,7 +59,7 @@ npm run lint && npm test --silent && npm run build
|
|
|
59
59
|
| Vulnerability | `npm audit --audit-level=moderate` | No new high/critical | BLOCK — use patched version or alternative |
|
|
60
60
|
| Bundle size | `npx source-map-explorer dist/*.js` or `npx bundlesize` | Frontend pkgs ≤50KB gzipped (project policy) | SHOULD-FIX; blocking if >200KB |
|
|
61
61
|
|
|
62
|
-
See [REFERENCE.md](REFERENCE.md) for
|
|
62
|
+
See [REFERENCE.md](REFERENCE.md) for full dependency-audit checklist (license, duplicates, maintenance, additional checks).
|
|
63
63
|
|
|
64
64
|
## Gate 5: Fast Review
|
|
65
65
|
|
|
@@ -83,8 +83,8 @@ Additional options: see [REFERENCE.md](REFERENCE.md).
|
|
|
83
83
|
## Gate 8: Regression Testing
|
|
84
84
|
|
|
85
85
|
1. `npm test -- --runInBand` for all affected projects
|
|
86
|
-
2. Browser-test adjacent pages (navigation, routing, back-button). Identify adjacent pages by searching for route imports or links to
|
|
87
|
-
3. Check consuming apps / packages
|
|
86
|
+
2. Browser-test adjacent pages (navigation, routing, back-button). Identify adjacent pages by searching for route imports or links to changed path (e.g., `rg "href=\"/changed-path|import .*from '@/components/changed'"`).
|
|
87
|
+
3. Check consuming apps / packages importing changed files: search repo for component or package name (e.g., `rg "from '@/components/PriceRange'|@my-org/ui-package"`) and run their tests or quick smoke builds.
|
|
88
88
|
|
|
89
89
|
## Gate 9: Panel Review
|
|
90
90
|
|
|
@@ -102,4 +102,4 @@ runSubagent({ agentName: 'Reviewer', prompt: `Panel review 1/3: ${criteria}` });
|
|
|
102
102
|
npm run build && npm test && npx playwright test
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
Full build + test from clean state → E2E browser walkthrough → cross-task integration check → responsive sweep (if UI). On failure: re-delegate
|
|
105
|
+
Full build + test from clean state → E2E browser walkthrough → cross-task integration check → responsive sweep (if UI). On failure: re-delegate specific failing integration only.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# backbone-scaffolding Examples
|
|
2
|
-
|
|
3
|
-
## Convoy Scaffolding Task
|
|
4
|
-
|
|
5
|
-
```json
|
|
6
|
-
{
|
|
7
|
-
"id": "scaffolding",
|
|
8
|
-
"description": "Scaffold monorepo with backbone CLI",
|
|
9
|
-
"agent": "developer",
|
|
10
|
-
"complexity": 2,
|
|
11
|
-
"prompt": "Scaffold the project monorepo using the backbone CLI. Ensure Node.js >= 22.5.0 is available. Run: `npx @monkilabs/backbone my-project` and select the following options when prompted:\n- Monorepo: Turborepo\n- Framework: Next.js\n- Backend: Supabase\n- CMS: Sanity\n- Testing: Playwright\n- Deployment: Vercel\n- Mobile: None\n- Packages: Email Library, LLM Library\n- Payments: Stripe\n- Observability: Sentry\n\nAfter scaffolding completes, run `npm install` in the generated `my-project/` directory. Then run `npx turbo build` and verify it exits 0.",
|
|
12
|
-
"files": ["my-project/"]
|
|
13
|
-
}
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
All subsequent tasks should declare `depends_on: ["scaffolding"]` and build on the generated structure.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
-
|
|
3
|
-
# Delegation Spec — Full Template
|
|
4
|
-
|
|
5
|
-
## Delegation Spec: [Task Title]
|
|
6
|
-
**Tracker Issue:** TAS-XX — [Title]
|
|
7
|
-
**Complexity:** [score]/13 → [tier] tier
|
|
8
|
-
**Agent:** [Agent Name]
|
|
9
|
-
|
|
10
|
-
### Objective
|
|
11
|
-
1-3 sentences: what to build/change and why.
|
|
12
|
-
|
|
13
|
-
### Context
|
|
14
|
-
- Key files: [list]
|
|
15
|
-
- Related patterns: [file:line references]
|
|
16
|
-
- Prior phase output: [compacted summary if applicable]
|
|
17
|
-
- Relevant lessons: [LES-XXX from LESSONS-LEARNED.md]
|
|
18
|
-
|
|
19
|
-
### Constraints
|
|
20
|
-
- File partition: Only modify files under [paths]
|
|
21
|
-
- Do NOT modify: [explicit exclusions]
|
|
22
|
-
- Dependencies: Requires [TAS-XX] Done first
|
|
23
|
-
|
|
24
|
-
### Acceptance Criteria
|
|
25
|
-
- [ ] Criterion 1
|
|
26
|
-
|
|
27
|
-
### Expected Output
|
|
28
|
-
Files changed · Verification (lint/test/build) · AC status (✅/❌) · Discovered issues · Lessons applied
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
-
|
|
3
|
-
## Memory Merger Reference
|
|
4
|
-
|
|
5
|
-
### Worked Example: LES-042 — MCP Tool Timeout
|
|
6
|
-
|
|
7
|
-
**Lesson:** `LES-042: MCP tool timeout causes silent failures — always set explicit timeout and check return value` (cited 4×, severity high, 90 days old)
|
|
8
|
-
|
|
9
|
-
**Draft:**
|
|
10
|
-
```
|
|
11
|
-
Lesson: LES-042 — MCP tool timeout
|
|
12
|
-
Target: .github/skills/orchestration-protocols/SKILL.md
|
|
13
|
-
Section: Error Recovery Playbook
|
|
14
|
-
Edit: Add row: | **MCP timeout** | Tool returns null/undefined after delay | Set explicit timeout (30s); check return value; retry once; fall back to CLI; log to DLQ | <!-- Merged from LES-042 -->
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
**After merge in target file**, archive in LESSONS-LEARNED.md:
|
|
18
|
-
```markdown
|
|
19
|
-
### LES-042: MCP tool timeout → Merged to `.github/skills/orchestration-protocols/SKILL.md` on 2026-03-15
|
|
20
|
-
```
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
-
|
|
3
|
-
Reference materials for React development guidance.
|
|
4
|
-
|
|
5
|
-
- See `src/orchestrator/skills/react-development/SKILL.md` for concise rules and quick examples.
|
|
6
|
-
|
|
7
|
-
Examples, deep-dive topics, and extended patterns (performance, forms, advanced typing) live here when needed.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
-
|
|
3
|
-
# SEO Reference: Structured Data & Anti-Patterns
|
|
4
|
-
|
|
5
|
-
## Structured Data Examples (JSON-LD)
|
|
6
|
-
|
|
7
|
-
### Breadcrumb + Article example
|
|
8
|
-
|
|
9
|
-
```tsx
|
|
10
|
-
function StructuredData({ breadcrumbs, article }: Props) {
|
|
11
|
-
const breadcrumbLd = {
|
|
12
|
-
'@context': 'https://schema.org', '@type': 'BreadcrumbList',
|
|
13
|
-
itemListElement: breadcrumbs.map((crumb, i) => ({ '@type': 'ListItem', position: i + 1, name: crumb.label, item: crumb.url })),
|
|
14
|
-
};
|
|
15
|
-
const articleLd = {
|
|
16
|
-
'@context': 'https://schema.org', '@type': 'Article',
|
|
17
|
-
headline: article.title, description: article.summary,
|
|
18
|
-
image: article.imageUrl, datePublished: article.publishedAt,
|
|
19
|
-
dateModified: article.updatedAt, author: { '@type': 'Person', name: article.author },
|
|
20
|
-
};
|
|
21
|
-
return (
|
|
22
|
-
<>
|
|
23
|
-
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbLd) }} />
|
|
24
|
-
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(articleLd) }} />
|
|
25
|
-
</>
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### FAQPage example (minimal)
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"@context": "https://schema.org",
|
|
35
|
-
"@type": "FAQPage",
|
|
36
|
-
"mainEntity": [
|
|
37
|
-
{ "@type": "Question", "name": "Q?", "acceptedAnswer": { "@type": "Answer", "text": "A." } }
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Validation
|
|
43
|
-
|
|
44
|
-
- Validate with Google's Rich Results Test: https://search.google.com/test/rich-results
|
|
45
|
-
- CLI quick-check: `curl -s https://example.com/page | pup 'script[type=application/ld+json] text{}'` then `jq .`
|
|
46
|
-
|
|
47
|
-
## Anti-Patterns (trimmed)
|
|
48
|
-
|
|
49
|
-
- Duplicate titles across pages — produce unique, descriptive titles.
|
|
50
|
-
- Missing canonical URLs — add `<link rel="canonical">` to avoid duplicate content.
|
|
51
|
-
- Client-only rendered primary content — server-render or prerender indexable content.
|
|
52
|
-
- Unvalidated structured data — validate before merge and include tests in PRs.
|
|
53
|
-
|
|
54
|
-
Last Updated: 2026-03-31
|