opencastle 0.32.12 → 0.33.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/LICENSE +21 -93
- package/README.md +5 -3
- package/package.json +2 -2
- 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 +3 -3
- 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 +3 -3
- 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/customizations/stack/sanity-config.md +43 -0
- package/src/orchestrator/customizations/stack/supabase-config.md +53 -0
- package/src/orchestrator/plugins/astro/REFERENCE.md +5 -0
- package/src/orchestrator/plugins/astro/SKILL.md +22 -29
- package/src/orchestrator/plugins/chrome-devtools/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/chrome-devtools/SKILL.md +10 -55
- package/src/orchestrator/plugins/contentful/REFERENCE.md +16 -0
- package/src/orchestrator/plugins/contentful/SKILL.md +69 -29
- package/src/orchestrator/plugins/convex/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/convex/SKILL.md +13 -1
- package/src/orchestrator/plugins/cypress/REFERENCE.md +5 -0
- package/src/orchestrator/plugins/cypress/SKILL.md +29 -93
- package/src/orchestrator/plugins/figma/REFERENCE.md +18 -0
- package/src/orchestrator/plugins/figma/SKILL.md +41 -66
- package/src/orchestrator/plugins/jira/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/jira/SKILL.md +26 -114
- package/src/orchestrator/plugins/linear/SKILL.md +42 -109
- package/src/orchestrator/plugins/netlify/REFERENCE.md +33 -0
- package/src/orchestrator/plugins/netlify/SKILL.md +34 -64
- package/src/orchestrator/plugins/nextjs/REFERENCE.md +73 -0
- package/src/orchestrator/plugins/nextjs/SKILL.md +49 -138
- package/src/orchestrator/plugins/notion/SKILL.md +26 -168
- package/src/orchestrator/plugins/notion/TEMPLATES.md +88 -0
- package/src/orchestrator/plugins/nx/REFERENCE.md +10 -0
- package/src/orchestrator/plugins/nx/SKILL.md +12 -12
- package/src/orchestrator/plugins/playwright/REFERENCE.md +12 -0
- package/src/orchestrator/plugins/playwright/SKILL.md +33 -98
- package/src/orchestrator/plugins/prisma/REFERENCE.md +42 -0
- package/src/orchestrator/plugins/prisma/SKILL.md +18 -68
- package/src/orchestrator/plugins/resend/REFERENCE.md +61 -0
- package/src/orchestrator/plugins/resend/SKILL.md +23 -137
- package/src/orchestrator/plugins/sanity/SKILL.md +50 -3
- package/src/orchestrator/plugins/slack/REFERENCE.md +24 -0
- package/src/orchestrator/plugins/slack/SKILL.md +36 -111
- package/src/orchestrator/plugins/strapi/REFERENCE.md +35 -0
- package/src/orchestrator/plugins/strapi/SKILL.md +60 -24
- package/src/orchestrator/plugins/supabase/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/supabase/SKILL.md +44 -16
- package/src/orchestrator/plugins/teams/REFERENCE.md +36 -0
- package/src/orchestrator/plugins/teams/SKILL.md +35 -85
- package/src/orchestrator/plugins/trello/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/trello/SKILL.md +25 -97
- package/src/orchestrator/plugins/turborepo/REFERENCE.md +9 -0
- package/src/orchestrator/plugins/turborepo/SKILL.md +13 -1
- package/src/orchestrator/plugins/vercel/SKILL.md +45 -52
- package/src/orchestrator/plugins/vitest/SKILL.md +10 -14
- package/src/orchestrator/prompts/create-skill.prompt.md +62 -20
- package/src/orchestrator/prompts/generate-convoy.prompt.md +6 -0
- package/src/orchestrator/prompts/generate-prd.prompt.md +4 -0
- package/src/orchestrator/skills/accessibility-standards/REFERENCE.md +34 -0
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +6 -3
- package/src/orchestrator/skills/agent-hooks/HOOKS-REFERENCE.md +48 -0
- package/src/orchestrator/skills/agent-hooks/SKILL.md +41 -65
- package/src/orchestrator/skills/agent-memory/KNOWLEDGE-GRAPH.md +49 -0
- package/src/orchestrator/skills/agent-memory/SKILL.md +30 -67
- package/src/orchestrator/skills/api-patterns/SKILL.md +29 -1
- package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +16 -0
- package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +99 -0
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/REFERENCE.md +70 -0
- package/src/orchestrator/skills/context-map/SKILL.md +28 -55
- package/src/orchestrator/skills/data-engineering/REFERENCE.md +55 -0
- package/src/orchestrator/skills/data-engineering/SKILL.md +40 -34
- package/src/orchestrator/skills/decomposition/REFERENCE.md +28 -0
- package/src/orchestrator/skills/decomposition/SKILL.md +15 -30
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +31 -65
- package/src/orchestrator/skills/documentation-standards/SKILL.md +31 -50
- package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +39 -0
- package/src/orchestrator/skills/fast-review/REFERENCE.md +30 -0
- package/src/orchestrator/skills/fast-review/SKILL.md +11 -31
- package/src/orchestrator/skills/frontend-design/COMPONENTS.md +113 -0
- package/src/orchestrator/skills/frontend-design/REFERENCE.md +36 -0
- package/src/orchestrator/skills/frontend-design/SKILL.md +36 -85
- package/src/orchestrator/skills/git-workflow/SKILL.md +13 -2
- package/src/orchestrator/skills/memory-merger/REFERENCE.md +20 -0
- package/src/orchestrator/skills/memory-merger/SKILL.md +29 -38
- package/src/orchestrator/skills/observability-logging/SKILL.md +5 -12
- package/src/orchestrator/skills/orchestration-protocols/REFERENCE.md +42 -0
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +54 -41
- package/src/orchestrator/skills/panel-majority-vote/REFERENCE.md +55 -0
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +30 -75
- package/src/orchestrator/skills/performance-optimization/SKILL.md +41 -1
- package/src/orchestrator/skills/project-consistency/SKILL.md +50 -89
- package/src/orchestrator/skills/project-consistency/TEMPLATES.md +39 -0
- package/src/orchestrator/skills/react-development/REFERENCE.md +7 -0
- package/src/orchestrator/skills/react-development/SKILL.md +50 -42
- package/src/orchestrator/skills/security-hardening/SKILL.md +88 -1
- package/src/orchestrator/skills/self-improvement/LESSON-CATEGORIES.md +36 -0
- package/src/orchestrator/skills/self-improvement/SKILL.md +19 -25
- package/src/orchestrator/skills/seo-patterns/REFERENCE.md +54 -0
- package/src/orchestrator/skills/seo-patterns/SKILL.md +20 -88
- package/src/orchestrator/skills/session-checkpoints/CHECKPOINT-TEMPLATE.md +58 -0
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +34 -58
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +37 -30
- package/src/orchestrator/skills/testing-workflow/SKILL.md +55 -2
- package/src/orchestrator/skills/validation-gates/REFERENCE.md +50 -0
- package/src/orchestrator/skills/validation-gates/SKILL.md +39 -35
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
+
|
|
3
|
+
# Writing & Formatting Guide
|
|
4
|
+
|
|
5
|
+
## Voice & Tone
|
|
6
|
+
|
|
7
|
+
- **Imperative mood** for instructions: "Add the header" not "You should add the header"
|
|
8
|
+
- **Active voice**: "The function returns X" not "X is returned by the function"
|
|
9
|
+
- **Concise**: one idea per sentence; trim filler words (just, simply, basically, very)
|
|
10
|
+
|
|
11
|
+
## Formatting Rules
|
|
12
|
+
|
|
13
|
+
| Element | Convention |
|
|
14
|
+
|---------|-----------|
|
|
15
|
+
| Headings | Sentence case (`## Core principles`, not `## Core Principles`). Exception: proper nouns and acronyms. |
|
|
16
|
+
| Lists | Parallel structure — all items start with the same part of speech |
|
|
17
|
+
| Code | Inline backticks for symbols/commands; fenced blocks for multi-line |
|
|
18
|
+
| Links | Descriptive text: `[migration guide](./migrate.md)` not `[click here](./migrate.md)` |
|
|
19
|
+
| Tables | Use for structured comparisons; keep columns ≤5 |
|
|
20
|
+
| Line length | Wrap prose at ~120 characters for diff readability |
|
|
21
|
+
|
|
22
|
+
## Markdown Standards
|
|
23
|
+
|
|
24
|
+
- One blank line before and after headings, code blocks, and tables
|
|
25
|
+
- No trailing whitespace
|
|
26
|
+
- Files end with a single newline
|
|
27
|
+
- Use `---` for horizontal rules (sparingly)
|
|
28
|
+
- Prefer `-` for unordered lists
|
|
29
|
+
|
|
30
|
+
## Anti-Patterns
|
|
31
|
+
|
|
32
|
+
| Anti-pattern | Fix |
|
|
33
|
+
|-------------|-----|
|
|
34
|
+
| Walls of prose without structure | Break into headings, bullets, or tables |
|
|
35
|
+
| Duplicate content across docs | Link to the canonical source |
|
|
36
|
+
| Stale "Last Updated" dates | Remove or automate; manual dates drift |
|
|
37
|
+
| TODO/FIXME placeholders in published docs | Resolve before merging |
|
|
38
|
+
| Screenshots without alt text | Add descriptive alt text for accessibility |
|
|
39
|
+
| Overly nested headings (h4+) | Flatten; if you need h4, consider splitting the doc |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
+
|
|
3
|
+
# Fast Review — Reviewer Prompt Template
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
You are a code reviewer. Be concise and specific.
|
|
7
|
+
|
|
8
|
+
## Task: [ID] — [Title]
|
|
9
|
+
Acceptance Criteria: [list]
|
|
10
|
+
|
|
11
|
+
## File Partition: [allowed dirs/files]
|
|
12
|
+
## Changed Files: [path + key diff]
|
|
13
|
+
## Deterministic: Lint: [P/F] | Tests: [P/F] | Build: [P/F]
|
|
14
|
+
|
|
15
|
+
## Checklist
|
|
16
|
+
1. Acceptance criteria met?
|
|
17
|
+
2. Partition respected?
|
|
18
|
+
3. No regressions?
|
|
19
|
+
4. Errors surfaced (no swallowed exceptions)?
|
|
20
|
+
5. Type safety (no `as any`)?
|
|
21
|
+
6. No secrets/injection vectors?
|
|
22
|
+
7. Edge cases handled?
|
|
23
|
+
|
|
24
|
+
## Prior Feedback (retry only): [previous FAIL]
|
|
25
|
+
|
|
26
|
+
VERDICT: PASS | FAIL
|
|
27
|
+
ISSUES: - [severity:critical|major|minor] Description
|
|
28
|
+
FEEDBACK: [Actionable feedback.]
|
|
29
|
+
CONFIDENCE: low | medium | high
|
|
30
|
+
```
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
````skill
|
|
2
1
|
---
|
|
3
2
|
name: fast-review
|
|
4
|
-
description: "Mandatory
|
|
3
|
+
description: "Mandatory post-delegation gate that checks output completeness, verifies acceptance criteria compliance, flags regressions, and produces a PASS/FAIL verdict. Use when checking delegated work against acceptance criteria, running the post-delegation gate, validating agent output before acceptance, verifying a sub-agent completed its assignment, or running a post-delegation QA check."
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Skill: Fast Review
|
|
@@ -14,7 +13,7 @@ description: "Mandatory single-reviewer gate that runs after every agent delegat
|
|
|
14
13
|
| Reviewer | Single sub-agent; Economy tier (Standard for premium/security work) |
|
|
15
14
|
| Verdict | PASS or FAIL with structured feedback |
|
|
16
15
|
| Retry | ≤2 retries on FAIL; 3rd FAIL → panel review |
|
|
17
|
-
|
|
16
|
+
|
|
18
17
|
|
|
19
18
|
## Procedure
|
|
20
19
|
|
|
@@ -26,6 +25,10 @@ Issue + acceptance criteria, file diff, file partition, deterministic results (l
|
|
|
26
25
|
|
|
27
26
|
Single `runSubagent`. Context = acceptance criteria, diff, partition, deterministic results **only** — no session history, no delegation prompt.
|
|
28
27
|
|
|
28
|
+
```js
|
|
29
|
+
runSubagent({ agentName: 'Reviewer', prompt: `Review against ACs:\n${criteria}\nDiff:\n${diff}\nGates: lint ✅ test ✅ build ✅` });
|
|
30
|
+
```
|
|
31
|
+
|
|
29
32
|
### 3 — Parse Verdict
|
|
30
33
|
|
|
31
34
|
```
|
|
@@ -54,37 +57,16 @@ CONFIDENCE: low | medium | high
|
|
|
54
57
|
|
|
55
58
|
## Reviewer Prompt Template
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
You are a code reviewer. Be concise and specific.
|
|
59
|
-
|
|
60
|
-
## Task: [ID] — [Title]
|
|
61
|
-
Acceptance Criteria: [list]
|
|
60
|
+
See [REFERENCE.md](REFERENCE.md) for the full reviewer prompt template.
|
|
62
61
|
|
|
63
|
-
##
|
|
64
|
-
## Changed Files: [path + key diff]
|
|
65
|
-
## Deterministic: Lint: [P/F] | Tests: [P/F] | Build: [P/F]
|
|
66
|
-
|
|
67
|
-
## Checklist
|
|
68
|
-
1. Acceptance criteria met?
|
|
69
|
-
2. Partition respected?
|
|
70
|
-
3. No regressions?
|
|
71
|
-
4. Errors surfaced (no swallowed exceptions)?
|
|
72
|
-
5. Type safety (no `as any`)?
|
|
73
|
-
6. No secrets/injection vectors?
|
|
74
|
-
7. Edge cases handled?
|
|
62
|
+
## Logging
|
|
75
63
|
|
|
76
|
-
|
|
64
|
+
> **⛔ HARD GATE — Log the review before proceeding.**
|
|
77
65
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
FEEDBACK: [Actionable feedback.]
|
|
81
|
-
CONFIDENCE: low | medium | high
|
|
66
|
+
```sh
|
|
67
|
+
npx opencastle log review --skill <name> --outcome pass|fail --reviewer "Reviewer" --mechanism sub-agent
|
|
82
68
|
```
|
|
83
69
|
|
|
84
|
-
## Logging
|
|
85
|
-
|
|
86
|
-
> **⛔ HARD GATE — Log the review before proceeding.** Use **observability-logging** skill's review record command.
|
|
87
|
-
|
|
88
70
|
## Integration & Overnight Mode
|
|
89
71
|
|
|
90
72
|
`on-post-delegate` Gate 5 (after deterministic Gates 1–4), ~5–15% token overhead. Overnight: upgrade one tier, escalate after 2 FAILs, checkpoint before panel.
|
|
@@ -97,5 +79,3 @@ CONFIDENCE: low | medium | high
|
|
|
97
79
|
- **Ignoring minor issues** — track; 3+ recurrences → ticket.
|
|
98
80
|
- **Force-accepting FAIL** — retry or escalate.
|
|
99
81
|
- **Skipping deterministic checks** — does NOT replace lint/test/build.
|
|
100
|
-
|
|
101
|
-
````
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
+
|
|
3
|
+
# Frontend Design Components
|
|
4
|
+
|
|
5
|
+
Extended component patterns, card variants, and hero animations for the **frontend-design** skill.
|
|
6
|
+
|
|
7
|
+
## Design Tokens (starter)
|
|
8
|
+
|
|
9
|
+
```css
|
|
10
|
+
:root {
|
|
11
|
+
--color-bg: #0f1724;
|
|
12
|
+
--color-ink: #e6eef8;
|
|
13
|
+
--color-accent: #ff7a59;
|
|
14
|
+
--space-1: 4px;
|
|
15
|
+
--space-2: 8px;
|
|
16
|
+
--space-3: 16px;
|
|
17
|
+
--radius-1: 6px;
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Entrance Animation (starter)
|
|
22
|
+
|
|
23
|
+
```css
|
|
24
|
+
@keyframes fadeUp {
|
|
25
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
26
|
+
to { opacity: 1; transform: translateY(0); }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
30
|
+
.fade-in-up { animation: fadeUp 420ms cubic-bezier(.2,.9,.2,1) both; }
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Card Patterns
|
|
35
|
+
|
|
36
|
+
### Glass Card
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
.card-glass {
|
|
40
|
+
background: rgba(255, 255, 255, 0.05);
|
|
41
|
+
backdrop-filter: blur(12px);
|
|
42
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
43
|
+
border-radius: var(--radius-1);
|
|
44
|
+
padding: var(--space-3);
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Elevated Card
|
|
49
|
+
|
|
50
|
+
```css
|
|
51
|
+
.card-elevated {
|
|
52
|
+
background: var(--color-bg);
|
|
53
|
+
border-radius: var(--radius-1);
|
|
54
|
+
padding: var(--space-3);
|
|
55
|
+
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
|
|
56
|
+
transition: transform 200ms ease, box-shadow 200ms ease;
|
|
57
|
+
}
|
|
58
|
+
.card-elevated:hover {
|
|
59
|
+
transform: translateY(-2px);
|
|
60
|
+
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Hero Animations
|
|
65
|
+
|
|
66
|
+
### Staggered Fade-In
|
|
67
|
+
|
|
68
|
+
```css
|
|
69
|
+
.hero-stagger > * {
|
|
70
|
+
opacity: 0;
|
|
71
|
+
transform: translateY(12px);
|
|
72
|
+
animation: fadeUp 500ms cubic-bezier(.2,.9,.2,1) forwards;
|
|
73
|
+
}
|
|
74
|
+
.hero-stagger > *:nth-child(1) { animation-delay: 0ms; }
|
|
75
|
+
.hero-stagger > *:nth-child(2) { animation-delay: 80ms; }
|
|
76
|
+
.hero-stagger > *:nth-child(3) { animation-delay: 160ms; }
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Gradient Shift
|
|
80
|
+
|
|
81
|
+
```css
|
|
82
|
+
.hero-gradient {
|
|
83
|
+
background: linear-gradient(135deg, var(--color-accent), var(--color-bg));
|
|
84
|
+
background-size: 200% 200%;
|
|
85
|
+
animation: gradientShift 6s ease infinite;
|
|
86
|
+
}
|
|
87
|
+
@keyframes gradientShift {
|
|
88
|
+
0%, 100% { background-position: 0% 50%; }
|
|
89
|
+
50% { background-position: 100% 50%; }
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Button Variants
|
|
94
|
+
|
|
95
|
+
```css
|
|
96
|
+
.btn-primary {
|
|
97
|
+
background: var(--color-accent);
|
|
98
|
+
color: #fff;
|
|
99
|
+
padding: var(--space-2) var(--space-3);
|
|
100
|
+
border-radius: var(--radius-1);
|
|
101
|
+
font-weight: 600;
|
|
102
|
+
transition: opacity 150ms ease;
|
|
103
|
+
}
|
|
104
|
+
.btn-primary:hover { opacity: 0.9; }
|
|
105
|
+
|
|
106
|
+
.btn-ghost {
|
|
107
|
+
background: transparent;
|
|
108
|
+
color: var(--color-ink);
|
|
109
|
+
border: 1px solid currentColor;
|
|
110
|
+
padding: var(--space-2) var(--space-3);
|
|
111
|
+
border-radius: var(--radius-1);
|
|
112
|
+
}
|
|
113
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
> Parent: [SKILL.md](./SKILL.md)
|
|
2
|
+
|
|
3
|
+
Frontend Design REFERENCE: detailed principles, typography catalogue, tokens, and component patterns.
|
|
4
|
+
|
|
5
|
+
Last Updated: 2026-03-31
|
|
6
|
+
|
|
7
|
+
## Design Principles (extended)
|
|
8
|
+
|
|
9
|
+
| Dimension | Rule |
|
|
10
|
+
|-----------|------|
|
|
11
|
+
| Direction | Pick an extreme aesthetic (brutally minimal, maximalist, retro-futuristic, luxury, brutalist, art deco, editorial…) and commit fully. Name it in 2–3 words. |
|
|
12
|
+
| Typography | Characterful display+body pair. No Inter/Roboto/Arial. `clamp()` fluid scale; heading lh ~1.1–1.2, body lh ~1.5–1.7; letter-spacing on uppercase/small. |
|
|
13
|
+
| Color | CSS vars only; dominant + sharp accent hierarchy; WCAG AA (4.5:1 body, 3:1 large); dark/light both intentional. |
|
|
14
|
+
| Motion | CSS-only for HTML; Motion library for React; staggered page entrance; custom easing; `prefers-reduced-motion` fallback. |
|
|
15
|
+
| Layout | Asymmetry, overlap, diagonal flow, grid-breaking. Consistent spacing tokens — no ad-hoc values. Holds at mobile/tablet/desktop. |
|
|
16
|
+
| Atmosphere | Gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows. No purple-on-white defaults. |
|
|
17
|
+
|
|
18
|
+
## Typography Pairings (catalogue)
|
|
19
|
+
|
|
20
|
+
| Aesthetic | Display | Body | Mood |
|
|
21
|
+
|-----------|---------|------|------|
|
|
22
|
+
| Editorial luxury | Playfair Display | Source Serif 4 | Authoritative, rich |
|
|
23
|
+
| Swiss precision | Darker Grotesque | IBM Plex Sans | Sharp grotesque |
|
|
24
|
+
| Warm humanist | Fraunces | Nunito Sans | Friendly, approachable |
|
|
25
|
+
| Brutalist edge | Monument Extended | JetBrains Mono | Raw technical power |
|
|
26
|
+
| Art nouveau organic | Cormorant Garamond | Lora | Flowing, calligraphic |
|
|
27
|
+
| Retro-futuristic | Syne | Outfit | Geometric boldness |
|
|
28
|
+
|
|
29
|
+
## Tokens & Patterns
|
|
30
|
+
|
|
31
|
+
See `COMPONENTS.md` for tokens and component code snippets. This reference holds the rationale and extended examples used across projects.
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
- Use these tables to choose a type system and enforce token fallbacks.
|
|
36
|
+
- Link lessons and PRs that change foundational tokens to the `project-consistency` skill guidance.
|
|
@@ -1,111 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-design
|
|
3
|
-
description: "
|
|
3
|
+
description: "Defines a named visual aesthetic, selects typography pairings, builds CSS token systems, and adds entrance animations for high-design-quality pages. Use when the user asks to design a landing page, style a marketing site, create a distinctive UI theme, pick fonts, or add CSS animations — specifically when visual polish and brand identity matter rather than generic component scaffolding."
|
|
4
4
|
license: Complete terms in LICENSE.txt
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .opencastle/ directory instead. -->
|
|
8
8
|
|
|
9
|
-
## Design
|
|
10
|
-
|
|
11
|
-
| Dimension | Rule |
|
|
12
|
-
|-----------|------|
|
|
13
|
-
| Direction | Pick an extreme aesthetic (brutally minimal, maximalist, retro-futuristic, luxury, brutalist, art deco, editorial…) and commit fully. Name it in 2–3 words. |
|
|
14
|
-
| Typography | Characterful display+body pair. No Inter/Roboto/Arial. `clamp()` fluid scale; heading lh ~1.1–1.2, body lh ~1.5–1.7; letter-spacing on uppercase/small. |
|
|
15
|
-
| Color | CSS vars only; dominant + sharp accent hierarchy; WCAG AA (4.5:1 body, 3:1 large); dark/light both intentional. |
|
|
16
|
-
| Motion | CSS-only for HTML; Motion library for React; staggered page entrance; custom easing; `prefers-reduced-motion` fallback. |
|
|
17
|
-
| Layout | Asymmetry, overlap, diagonal flow, grid-breaking. Consistent spacing tokens — no ad-hoc values. Holds at mobile/tablet/desktop. |
|
|
18
|
-
| Atmosphere | Gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows. No purple-on-white defaults. |
|
|
9
|
+
## Design Workflow
|
|
19
10
|
|
|
20
|
-
**
|
|
11
|
+
1. **Name the aesthetic** — declare a 2–3 word direction in a code comment at the top of the main CSS file
|
|
12
|
+
2. **Set foundations** — define `:root` CSS custom properties for colors, spacing, and radii
|
|
13
|
+
3. **Build components** — implement layout, cards, heroes, forms using only tokens from step 2
|
|
14
|
+
4. **Add motion** — add `@keyframes` entrance animations wrapped in a reduced-motion guard
|
|
15
|
+
5. **Validate** — run Quality Checklist below; fix any failing item before marking done
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
### Quick-start example
|
|
23
18
|
|
|
24
19
|
```css
|
|
20
|
+
/* Aesthetic: minimal neon */
|
|
25
21
|
:root {
|
|
26
|
-
--color-
|
|
27
|
-
--color-
|
|
28
|
-
--
|
|
29
|
-
|
|
30
|
-
--
|
|
31
|
-
--
|
|
32
|
-
--text-xl: clamp(1.563rem, 1.35rem + 1.06vw, 2rem);
|
|
33
|
-
--text-2xl: clamp(1.953rem, 1.6rem + 1.77vw, 2.75rem);
|
|
34
|
-
--text-hero: clamp(2.441rem, 1.8rem + 3.2vw, 4.5rem);
|
|
35
|
-
|
|
36
|
-
--space-2: 0.5rem; --space-4: 1rem; --space-6: 1.5rem;
|
|
37
|
-
--space-8: 2rem; --space-16: 4rem; --space-32: 8rem;
|
|
38
|
-
|
|
39
|
-
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
40
|
-
--ease-in-out-back: cubic-bezier(0.68, -0.6, 0.32, 1.6);
|
|
41
|
-
--duration-fast: 150ms; --duration-normal: 300ms; --duration-slow: 600ms;
|
|
42
|
-
|
|
43
|
-
--shadow-md: 0 4px 16px rgba(26, 22, 20, 0.08);
|
|
44
|
-
--shadow-lg: 0 12px 48px rgba(26, 22, 20, 0.12);
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Component Patterns
|
|
49
|
-
|
|
50
|
-
**Card:**
|
|
51
|
-
```css
|
|
52
|
-
.card {
|
|
53
|
-
position: relative;
|
|
54
|
-
background: var(--color-paper);
|
|
55
|
-
border: 1px solid var(--color-border);
|
|
56
|
-
border-left: 4px solid var(--color-accent);
|
|
57
|
-
padding: var(--space-8) var(--space-6);
|
|
58
|
-
transition: transform var(--duration-normal) var(--ease-out-expo),
|
|
59
|
-
box-shadow var(--duration-normal) var(--ease-out-expo);
|
|
60
|
-
}
|
|
61
|
-
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
|
|
62
|
-
.card__label {
|
|
63
|
-
position: absolute; top: calc(-1 * var(--space-3)); left: var(--space-4);
|
|
64
|
-
background: var(--color-accent); color: var(--color-ink);
|
|
65
|
-
font-size: var(--text-xs); font-weight: 700;
|
|
66
|
-
letter-spacing: 0.08em; text-transform: uppercase;
|
|
67
|
-
padding: var(--space-1) var(--space-3);
|
|
22
|
+
--color-bg: #0a0a0f; --color-surface: #141420;
|
|
23
|
+
--color-text: #e8e6e3; --color-accent: #6366f1;
|
|
24
|
+
--space-sm: 8px; --space-md: 16px; --space-lg: 32px;
|
|
25
|
+
--radius-md: 8px;
|
|
26
|
+
--font-heading: 'Fraunces', 'Georgia', serif;
|
|
27
|
+
--font-body: 'Inter', system-ui, sans-serif;
|
|
68
28
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
**Hero staggered reveal:**
|
|
72
|
-
```css
|
|
73
|
-
@keyframes rise {
|
|
74
|
-
from { opacity: 0; transform: translateY(24px); }
|
|
29
|
+
@keyframes fade-up {
|
|
30
|
+
from { opacity: 0; transform: translateY(12px); }
|
|
75
31
|
to { opacity: 1; transform: translateY(0); }
|
|
76
32
|
}
|
|
77
|
-
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
.hero__body { animation: rise var(--duration-slow) var(--ease-out-expo) both; animation-delay: 400ms; }
|
|
81
|
-
.hero__cta { animation: rise var(--duration-slow) var(--ease-out-expo) both; animation-delay: 550ms; }
|
|
33
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
34
|
+
.hero__title { animation: fade-up 0.4s ease-out both; }
|
|
35
|
+
}
|
|
82
36
|
```
|
|
83
37
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
| Aesthetic | Display | Body | Mood |
|
|
87
|
-
|-----------|---------|------|------|
|
|
88
|
-
| Editorial luxury | Playfair Display | Source Serif 4 | Authoritative, rich |
|
|
89
|
-
| Swiss precision | Darker Grotesque | IBM Plex Sans | Sharp grotesque |
|
|
90
|
-
| Warm humanist | Fraunces | Nunito Sans | Friendly, approachable |
|
|
91
|
-
| Brutalist edge | Monument Extended | JetBrains Mono | Raw technical power |
|
|
92
|
-
| Art nouveau organic | Cormorant Garamond | Lora | Flowing, calligraphic |
|
|
93
|
-
| Retro-futuristic | Syne | Outfit | Geometric boldness |
|
|
38
|
+
Card patterns, hero animations, and extended token sets are in [COMPONENTS.md](./COMPONENTS.md).
|
|
94
39
|
|
|
95
|
-
|
|
40
|
+
## Design Principles
|
|
96
41
|
|
|
97
|
-
|
|
42
|
+
High-level design principles and the full set of example constraints live in [REFERENCE.md](./REFERENCE.md). Keep this checklist as a short reminder:
|
|
98
43
|
|
|
99
|
-
|
|
44
|
+
- Pick a named aesthetic (2–3 words) and commit to it.
|
|
45
|
+
- Use tokenized colors/spacing, respect WCAG contrast, and prefer semantic HTML.
|
|
46
|
+
- Respect `prefers-reduced-motion` and keep critical animations under 500ms.
|
|
100
47
|
|
|
101
|
-
**
|
|
48
|
+
**Every design must have one unforgettable detail.** No two designs should look alike.
|
|
102
49
|
|
|
103
|
-
|
|
50
|
+
## Typography Pairings
|
|
104
51
|
|
|
105
|
-
|
|
52
|
+
Recommended typography pairings and an extended catalogue are in [REFERENCE.md](./REFERENCE.md). For production, always include a metric-preserving fallback chain (e.g., `'Fraunces', 'Georgia', serif`).
|
|
106
53
|
|
|
107
|
-
|
|
54
|
+
> Load the **project-consistency** skill for the full Foundation Phase pattern and prompt templates.
|
|
108
55
|
|
|
109
|
-
|
|
56
|
+
### Quality Checklist (quick)
|
|
110
57
|
|
|
111
|
-
|
|
58
|
+
- **Contrast:** Text ≥4.5:1 body, ≥3:1 large.
|
|
59
|
+
- **Tokens:** All spacing/colors in `:root` tokens; avoid ad-hoc values.
|
|
60
|
+
- **Responsiveness:** Layouts break at defined tokens; no overflow at mobile sizes.
|
|
61
|
+
- **Motion:** `prefers-reduced-motion` respected; key animations <500ms.
|
|
62
|
+
- **Accessibility:** Keyboard focus states visible; semantic HTML used.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-workflow
|
|
3
|
-
description: "
|
|
3
|
+
description: "Defines branch naming conventions, PR template requirements, commit message format, discovered-issues escalation policy, and task tracking conventions. Load when committing, pushing, or opening PRs."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Git Workflow & Delivery
|
|
@@ -22,7 +22,18 @@ description: "Git branching, PR workflow, delivery requirements, discovered issu
|
|
|
22
22
|
1. Branch `<type>/<ticket-id>-<slug>` from `main`
|
|
23
23
|
2. Atomic commits referencing issue ID
|
|
24
24
|
3. Push branch to origin
|
|
25
|
-
4. Open PR (do NOT merge)
|
|
25
|
+
4. Open PR (do NOT merge) — write the body to a temp file first, then use `--body-file`:
|
|
26
|
+
```sh
|
|
27
|
+
# Write PR body to a temp file to avoid shell escaping issues
|
|
28
|
+
cat > /tmp/pr-body.md << 'EOF'
|
|
29
|
+
Resolves TAS-XX
|
|
30
|
+
|
|
31
|
+
## Changes
|
|
32
|
+
- ...
|
|
33
|
+
EOF
|
|
34
|
+
GH_PAGER=cat gh pr create --base main --title "TAS-XX: Short description" --body-file /tmp/pr-body.md
|
|
35
|
+
```
|
|
36
|
+
**Never use inline `--body` with markdown/backticks/special chars** — it breaks in zsh heredocs and quoted strings.
|
|
26
37
|
5. Update issue with PR URL
|
|
27
38
|
|
|
28
39
|
## Discovered Issues Policy
|
|
@@ -0,0 +1,20 @@
|
|
|
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,49 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memory-merger
|
|
3
|
-
description: "
|
|
3
|
+
description: "Reviews mature LESSONS-LEARNED.md entries, rewrites them as permanent rules in skill/instruction files, and archives graduated lessons. Use when graduating lessons into skills, promoting validated lessons, updating skills from past learnings, archiving mature lessons, codifying repeated patterns, or cleaning up a crowded LESSONS-LEARNED.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Memory Merger
|
|
7
7
|
|
|
8
|
-
Promotes validated lessons from `.opencastle/LESSONS-LEARNED.md` into instruction/skill files where they have permanent impact.
|
|
9
8
|
|
|
10
|
-
##
|
|
9
|
+
## Run Criteria
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
|
11
|
+
Combined signals to identify merge candidates.
|
|
12
|
+
|
|
13
|
+
| Criterion | Signal / Threshold |
|
|
14
|
+
|-----------|--------------------|
|
|
15
|
+
| File size | LESSONS-LEARNED.md > 50 entries |
|
|
16
|
+
| Citation count | Cited 3+ times across sessions |
|
|
17
|
+
| Age | >60 days and still relevant |
|
|
17
18
|
| Category cluster | 5+ lessons in same category |
|
|
18
|
-
|
|
|
19
|
+
| Severity | Marked `high` or blocking |
|
|
20
|
+
| Discretionary | Curator / maintainer judgement (stale file) |
|
|
19
21
|
|
|
20
|
-
##
|
|
22
|
+
## Workflow (numbered)
|
|
23
|
+
|
|
24
|
+
1. Scan LESSONS-LEARNED.md for candidate entries (frequency, severity, age).
|
|
25
|
+
2. Map each candidate to a target file and section.
|
|
26
|
+
3. Draft the exact edit (concise rule or example).
|
|
27
|
+
4. Apply the edit with an attribution comment.
|
|
28
|
+
5. Archive the migrated lesson in LESSONS-LEARNED.md with a merge note.
|
|
29
|
+
6. Update the index and run validation checks.
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
| Criterion | Signal |
|
|
25
|
-
|-----------|--------|
|
|
26
|
-
| Frequency | Cited/re-discovered 3+ times |
|
|
27
|
-
| Severity | Marked `high` |
|
|
28
|
-
| Age | >60 days, still relevant |
|
|
29
|
-
| Concentration | 5+ in same category → extract pattern |
|
|
30
|
-
| Tool-specific | MCP tool, codebase-tool command, or framework pattern |
|
|
31
|
-
|
|
32
|
-
### 2 — Map to Target File
|
|
33
|
-
|
|
34
|
-
| Category | Target |
|
|
35
|
-
|----------|--------|
|
|
36
|
-
| `task-management` | skill-matrix `task-management` slot |
|
|
37
|
-
| `mcp-tools` | agent/skill that uses the tool |
|
|
38
|
-
| `codebase-tool` | skill-matrix `codebase-tool` slot |
|
|
39
|
-
| `cms` / `database` | respective skill-matrix slots |
|
|
40
|
-
| `browser-testing` | skill-matrix `e2e-testing` slot |
|
|
41
|
-
| `git-workflow` | `.github/skills/git-workflow/SKILL.md` |
|
|
42
|
-
| `deployment` | `.github/skills/deployment-infrastructure/SKILL.md` |
|
|
43
|
-
| `delegation` | `.github/agents/team-lead.agent.md` or `team-lead-reference` skill |
|
|
44
|
-
| `testing` | `.github/skills/testing-workflow/SKILL.md` |
|
|
45
|
-
| `ui` / `framework` | `framework` slot or `react-development` skill |
|
|
46
|
-
| Cross-cutting | `.github/instructions/general.instructions.md` |
|
|
31
|
+
## Merge Protocol
|
|
47
32
|
|
|
48
33
|
### 3 — Draft Edit
|
|
49
34
|
|
|
@@ -73,12 +58,18 @@ Move merged lessons to `## Archived (Merged)` at the bottom of `LESSONS-LEARNED.
|
|
|
73
58
|
|
|
74
59
|
Update `## Index by Category` in `LESSONS-LEARNED.md` to mark archived lessons.
|
|
75
60
|
|
|
76
|
-
|
|
61
|
+
### Worked Example
|
|
62
|
+
|
|
63
|
+
See [REFERENCE.md](./REFERENCE.md) for a full worked merge example (LES-042: MCP tool timeout).
|
|
64
|
+
|
|
65
|
+
## Quality Gates (validation checkpoints)
|
|
77
66
|
|
|
78
67
|
- [ ] Merged content reads naturally (not copy-pasted)
|
|
79
|
-
- [ ] No duplicate rules created
|
|
80
|
-
- [ ] Archived lesson references target file
|
|
68
|
+
- [ ] No duplicate rules created in target files or other skills
|
|
69
|
+
- [ ] Archived lesson references target file and date
|
|
81
70
|
- [ ] Core insight preserved — no loss of nuance
|
|
71
|
+
- [ ] Target file still passes lint/markdown checks (if applicable)
|
|
72
|
+
- [ ] A quick smoke verification (search for relevant keyword) confirms merge applied
|
|
82
73
|
|
|
83
74
|
## Anti-Patterns
|
|
84
75
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: observability-logging
|
|
3
|
-
description: "
|
|
3
|
+
description: "Writes session logs, records delegation decisions, and tracks review/dispute outcomes in NDJSON format. Use when logging session activity, recording audit trails, or running pre-response verification checklists."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Observability Logging
|
|
@@ -62,21 +62,14 @@ Verify any append: `tail -1 .opencastle/logs/events.ndjson`
|
|
|
62
62
|
**⛔ STOP.** Verify before responding — fix any missing log NOW.
|
|
63
63
|
|
|
64
64
|
- [ ] **Lessons read** — `.opencastle/LESSONS-LEARNED.md` read at session start
|
|
65
|
-
- [ ] **Lessons captured** — new lesson added via **self-improvement** if any retry occurred
|
|
66
|
-
- [ ] **Discovered issues tracked** — pre-existing bugs added to `KNOWN-ISSUES.md` or tracker
|
|
67
|
-
- [ ] **Lint/type/test pass** — no new errors after code changes
|
|
68
65
|
- [ ] **Session logged** — `events.ndjson` has a `session` record (ALWAYS)
|
|
69
|
-
- [ ] **Delegations logged** — `delegation` record per delegation (Team Lead)
|
|
70
|
-
- [ ] **Reviews logged** — `review` record per fast review (if
|
|
71
|
-
- [ ] **Panels logged** — `panel` record per panel vote (if any)
|
|
72
|
-
- [ ] **Disputes logged** — `dispute` record per dispute (if any)
|
|
66
|
+
- [ ] **Delegations logged** — `delegation` record per delegation (Team Lead) (if applicable)
|
|
67
|
+
- [ ] **Reviews logged** — `review` record per fast review (if applicable)
|
|
73
68
|
|
|
74
69
|
## Universal Agent Rules
|
|
75
70
|
|
|
76
|
-
1. **
|
|
77
|
-
2. **
|
|
78
|
-
3. **Read and update lessons** — Read `.opencastle/LESSONS-LEARNED.md` before starting; add lessons after retries via **self-improvement** skill.
|
|
79
|
-
4. **Log every session** — See [logging-mandatory](../../snippets/logging-mandatory.md).
|
|
71
|
+
1. **Read and update lessons** — Read `.opencastle/LESSONS-LEARNED.md` before starting; add lessons after retries via **self-improvement** skill.
|
|
72
|
+
2. **Log every session** — See [logging-mandatory](../../snippets/logging-mandatory.md).
|
|
80
73
|
|
|
81
74
|
## Base Output Contract
|
|
82
75
|
|