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.
Files changed (115) hide show
  1. package/LICENSE +21 -93
  2. package/README.md +5 -3
  3. package/package.json +2 -2
  4. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  5. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  6. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +12 -12
  7. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +3 -3
  8. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  9. package/src/dashboard/dist/data/convoys/demo-docs-update.json +7 -7
  10. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
  11. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  12. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  13. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  14. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +12 -12
  15. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +3 -3
  16. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  17. package/src/dashboard/public/data/convoys/demo-docs-update.json +7 -7
  18. package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
  19. package/src/orchestrator/customizations/stack/sanity-config.md +43 -0
  20. package/src/orchestrator/customizations/stack/supabase-config.md +53 -0
  21. package/src/orchestrator/plugins/astro/REFERENCE.md +5 -0
  22. package/src/orchestrator/plugins/astro/SKILL.md +22 -29
  23. package/src/orchestrator/plugins/chrome-devtools/REFERENCE.md +9 -0
  24. package/src/orchestrator/plugins/chrome-devtools/SKILL.md +10 -55
  25. package/src/orchestrator/plugins/contentful/REFERENCE.md +16 -0
  26. package/src/orchestrator/plugins/contentful/SKILL.md +69 -29
  27. package/src/orchestrator/plugins/convex/REFERENCE.md +9 -0
  28. package/src/orchestrator/plugins/convex/SKILL.md +13 -1
  29. package/src/orchestrator/plugins/cypress/REFERENCE.md +5 -0
  30. package/src/orchestrator/plugins/cypress/SKILL.md +29 -93
  31. package/src/orchestrator/plugins/figma/REFERENCE.md +18 -0
  32. package/src/orchestrator/plugins/figma/SKILL.md +41 -66
  33. package/src/orchestrator/plugins/jira/REFERENCE.md +9 -0
  34. package/src/orchestrator/plugins/jira/SKILL.md +26 -114
  35. package/src/orchestrator/plugins/linear/SKILL.md +42 -109
  36. package/src/orchestrator/plugins/netlify/REFERENCE.md +33 -0
  37. package/src/orchestrator/plugins/netlify/SKILL.md +34 -64
  38. package/src/orchestrator/plugins/nextjs/REFERENCE.md +73 -0
  39. package/src/orchestrator/plugins/nextjs/SKILL.md +49 -138
  40. package/src/orchestrator/plugins/notion/SKILL.md +26 -168
  41. package/src/orchestrator/plugins/notion/TEMPLATES.md +88 -0
  42. package/src/orchestrator/plugins/nx/REFERENCE.md +10 -0
  43. package/src/orchestrator/plugins/nx/SKILL.md +12 -12
  44. package/src/orchestrator/plugins/playwright/REFERENCE.md +12 -0
  45. package/src/orchestrator/plugins/playwright/SKILL.md +33 -98
  46. package/src/orchestrator/plugins/prisma/REFERENCE.md +42 -0
  47. package/src/orchestrator/plugins/prisma/SKILL.md +18 -68
  48. package/src/orchestrator/plugins/resend/REFERENCE.md +61 -0
  49. package/src/orchestrator/plugins/resend/SKILL.md +23 -137
  50. package/src/orchestrator/plugins/sanity/SKILL.md +50 -3
  51. package/src/orchestrator/plugins/slack/REFERENCE.md +24 -0
  52. package/src/orchestrator/plugins/slack/SKILL.md +36 -111
  53. package/src/orchestrator/plugins/strapi/REFERENCE.md +35 -0
  54. package/src/orchestrator/plugins/strapi/SKILL.md +60 -24
  55. package/src/orchestrator/plugins/supabase/REFERENCE.md +9 -0
  56. package/src/orchestrator/plugins/supabase/SKILL.md +44 -16
  57. package/src/orchestrator/plugins/teams/REFERENCE.md +36 -0
  58. package/src/orchestrator/plugins/teams/SKILL.md +35 -85
  59. package/src/orchestrator/plugins/trello/REFERENCE.md +9 -0
  60. package/src/orchestrator/plugins/trello/SKILL.md +25 -97
  61. package/src/orchestrator/plugins/turborepo/REFERENCE.md +9 -0
  62. package/src/orchestrator/plugins/turborepo/SKILL.md +13 -1
  63. package/src/orchestrator/plugins/vercel/SKILL.md +45 -52
  64. package/src/orchestrator/plugins/vitest/SKILL.md +10 -14
  65. package/src/orchestrator/prompts/create-skill.prompt.md +62 -20
  66. package/src/orchestrator/prompts/generate-convoy.prompt.md +6 -0
  67. package/src/orchestrator/prompts/generate-prd.prompt.md +4 -0
  68. package/src/orchestrator/skills/accessibility-standards/REFERENCE.md +34 -0
  69. package/src/orchestrator/skills/accessibility-standards/SKILL.md +6 -3
  70. package/src/orchestrator/skills/agent-hooks/HOOKS-REFERENCE.md +48 -0
  71. package/src/orchestrator/skills/agent-hooks/SKILL.md +41 -65
  72. package/src/orchestrator/skills/agent-memory/KNOWLEDGE-GRAPH.md +49 -0
  73. package/src/orchestrator/skills/agent-memory/SKILL.md +30 -67
  74. package/src/orchestrator/skills/api-patterns/SKILL.md +29 -1
  75. package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +16 -0
  76. package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +99 -0
  77. package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
  78. package/src/orchestrator/skills/context-map/REFERENCE.md +70 -0
  79. package/src/orchestrator/skills/context-map/SKILL.md +28 -55
  80. package/src/orchestrator/skills/data-engineering/REFERENCE.md +55 -0
  81. package/src/orchestrator/skills/data-engineering/SKILL.md +40 -34
  82. package/src/orchestrator/skills/decomposition/REFERENCE.md +28 -0
  83. package/src/orchestrator/skills/decomposition/SKILL.md +15 -30
  84. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +31 -65
  85. package/src/orchestrator/skills/documentation-standards/SKILL.md +31 -50
  86. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +39 -0
  87. package/src/orchestrator/skills/fast-review/REFERENCE.md +30 -0
  88. package/src/orchestrator/skills/fast-review/SKILL.md +11 -31
  89. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +113 -0
  90. package/src/orchestrator/skills/frontend-design/REFERENCE.md +36 -0
  91. package/src/orchestrator/skills/frontend-design/SKILL.md +36 -85
  92. package/src/orchestrator/skills/git-workflow/SKILL.md +13 -2
  93. package/src/orchestrator/skills/memory-merger/REFERENCE.md +20 -0
  94. package/src/orchestrator/skills/memory-merger/SKILL.md +29 -38
  95. package/src/orchestrator/skills/observability-logging/SKILL.md +5 -12
  96. package/src/orchestrator/skills/orchestration-protocols/REFERENCE.md +42 -0
  97. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +54 -41
  98. package/src/orchestrator/skills/panel-majority-vote/REFERENCE.md +55 -0
  99. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +30 -75
  100. package/src/orchestrator/skills/performance-optimization/SKILL.md +41 -1
  101. package/src/orchestrator/skills/project-consistency/SKILL.md +50 -89
  102. package/src/orchestrator/skills/project-consistency/TEMPLATES.md +39 -0
  103. package/src/orchestrator/skills/react-development/REFERENCE.md +7 -0
  104. package/src/orchestrator/skills/react-development/SKILL.md +50 -42
  105. package/src/orchestrator/skills/security-hardening/SKILL.md +88 -1
  106. package/src/orchestrator/skills/self-improvement/LESSON-CATEGORIES.md +36 -0
  107. package/src/orchestrator/skills/self-improvement/SKILL.md +19 -25
  108. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +54 -0
  109. package/src/orchestrator/skills/seo-patterns/SKILL.md +20 -88
  110. package/src/orchestrator/skills/session-checkpoints/CHECKPOINT-TEMPLATE.md +58 -0
  111. package/src/orchestrator/skills/session-checkpoints/SKILL.md +34 -58
  112. package/src/orchestrator/skills/team-lead-reference/SKILL.md +37 -30
  113. package/src/orchestrator/skills/testing-workflow/SKILL.md +55 -2
  114. package/src/orchestrator/skills/validation-gates/REFERENCE.md +50 -0
  115. 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 single-reviewer gate that runs after every agent delegation. Provides automatic retry with feedback and escalation to panel review after repeated failures. Essential for overnight/long-running autonomous sessions."
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
- | Budget | ~2–5 min |
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
- ```markdown
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
- ## File Partition: [allowed dirs/files]
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
- ## Prior Feedback (retry only): [previous FAIL]
64
+ > **⛔ HARD GATE Log the review before proceeding.**
77
65
 
78
- VERDICT: PASS | FAIL
79
- ISSUES: - [severity:critical|major|minor] Description
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: "Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics."
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 Principles
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
- **Every design must have one unforgettable detail.** No two designs should look alike.
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
- ## Design System Foundations
17
+ ### Quick-start example
23
18
 
24
19
  ```css
20
+ /* Aesthetic: minimal neon */
25
21
  :root {
26
- --color-ink: #1a1614; --color-paper: #f5f0e8;
27
- --color-accent: #c8e630; --color-muted: #9b9083;
28
- --color-surface: #eae3d8; --color-border: rgba(26, 22, 20, 0.08);
29
-
30
- --text-sm: clamp(0.875rem, 0.83rem + 0.22vw, 1rem);
31
- --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
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
- .hero { overflow: hidden; padding: var(--space-32) var(--space-8); }
78
- .hero__eyebrow { animation: rise var(--duration-slow) var(--ease-out-expo) both; animation-delay: 100ms; }
79
- .hero__headline { animation: rise var(--duration-slow) var(--ease-out-expo) both; animation-delay: 250ms; }
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
- ## Typography Pairings
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
- Include a metric-preserving fallback chain (e.g., `'Fraunces', 'Georgia', serif`).
40
+ ## Design Principles
96
41
 
97
- ## Quality Checklist
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
- **Identity:** aesthetic named in 2–3 words · color/type/space/motion tell one story · one memorable detail
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
- **Typography:** display+body pair distinct · `clamp()` fluid scale · heading lh ~1.1–1.2 / body lh ~1.5–1.7 · letter-spacing on uppercase/small
48
+ **Every design must have one unforgettable detail.** No two designs should look alike.
102
49
 
103
- **Color:** CSS vars only · dominant+accent hierarchy · WCAG AA (4.5:1 body, 3:1 large) · dark/light both intentional
50
+ ## Typography Pairings
104
51
 
105
- **Layout:** spacing tokens throughout · one grid-breaking element · responsive at mobile/tablet/desktop
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
- **Motion:** coordinated entrance sequence · hover/focus on all interactives · custom easing curves · `prefers-reduced-motion` fallback
54
+ > Load the **project-consistency** skill for the full Foundation Phase pattern and prompt templates.
108
55
 
109
- **Production:** no hardcoded widths · `alt`/`aria-hidden` on images · visible focus indicators · no scroll-animation layout thrashing
56
+ ### Quality Checklist (quick)
110
57
 
111
- > Load the **project-consistency** skill for the full Foundation Phase pattern and prompt templates.
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: "Git branching, PR workflow, delivery requirements, discovered issues policy, and task tracking conventions. Load when committing, pushing, or opening PRs."
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): `GH_PAGER=cat gh pr create --base main --title "TAS-XX: …" --body "Resolves TAS-XX"`
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: "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."
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
- ## When to Run
9
+ ## Run Criteria
11
10
 
12
- | Trigger | Threshold |
13
- |---------|-----------|
14
- | File size | >50 entries |
15
- | Citation count | Cited 3+ times |
16
- | Age | >60 days old |
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
- | Discretionary | Lessons file feels stale |
19
+ | Severity | Marked `high` or blocking |
20
+ | Discretionary | Curator / maintainer judgement (stale file) |
19
21
 
20
- ## Merge Protocol
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
- ### 1 — Scan Candidates
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
- ## Quality Gates
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: "Session logging, delegation records, review/panel/dispute NDJSON logging, pre-response checklists. Load before responding to verify all logs are written."
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 any)
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. **Never delegate** — complete own work; document cross-domain needs in output contract.
77
- 2. **Follow Discovered Issues Policy** — See [discovered-issues-policy](../../snippets/discovered-issues-policy.md).
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