opencastle 0.32.11 → 0.32.13

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 (133) hide show
  1. package/README.md +5 -3
  2. package/dist/cli/convoy/engine.d.ts.map +1 -1
  3. package/dist/cli/convoy/engine.js +1 -0
  4. package/dist/cli/convoy/engine.js.map +1 -1
  5. package/dist/cli/convoy/pipeline.d.ts.map +1 -1
  6. package/dist/cli/convoy/pipeline.js +5 -2
  7. package/dist/cli/convoy/pipeline.js.map +1 -1
  8. package/dist/cli/convoy/pipeline.test.js +44 -0
  9. package/dist/cli/convoy/pipeline.test.js.map +1 -1
  10. package/dist/cli/run.js +4 -4
  11. package/dist/cli/run.js.map +1 -1
  12. package/dist/dashboard/scripts/etl.d.ts +1 -0
  13. package/dist/dashboard/scripts/etl.d.ts.map +1 -1
  14. package/dist/dashboard/scripts/etl.js +7 -2
  15. package/dist/dashboard/scripts/etl.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/cli/convoy/engine.ts +1 -0
  18. package/src/cli/convoy/pipeline.test.ts +49 -0
  19. package/src/cli/convoy/pipeline.ts +7 -2
  20. package/src/cli/run.ts +4 -4
  21. package/src/dashboard/dist/_astro/{index.6xXNs4L2.css → index.CADNhRPS.css} +1 -1
  22. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  23. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  24. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +18 -18
  25. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +3 -3
  26. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  27. package/src/dashboard/dist/data/convoys/demo-docs-update.json +3 -3
  28. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +10 -10
  29. package/src/dashboard/dist/index.html +29 -6
  30. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  31. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  32. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  33. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +18 -18
  34. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +3 -3
  35. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  36. package/src/dashboard/public/data/convoys/demo-docs-update.json +3 -3
  37. package/src/dashboard/public/data/convoys/demo-perf-opt.json +10 -10
  38. package/src/dashboard/scripts/etl.ts +9 -5
  39. package/src/dashboard/src/pages/index.astro +36 -4
  40. package/src/dashboard/src/styles/dashboard.css +4 -0
  41. package/src/orchestrator/customizations/stack/sanity-config.md +43 -0
  42. package/src/orchestrator/customizations/stack/supabase-config.md +53 -0
  43. package/src/orchestrator/plugins/astro/REFERENCE.md +5 -0
  44. package/src/orchestrator/plugins/astro/SKILL.md +22 -29
  45. package/src/orchestrator/plugins/chrome-devtools/REFERENCE.md +9 -0
  46. package/src/orchestrator/plugins/chrome-devtools/SKILL.md +10 -55
  47. package/src/orchestrator/plugins/contentful/REFERENCE.md +16 -0
  48. package/src/orchestrator/plugins/contentful/SKILL.md +69 -29
  49. package/src/orchestrator/plugins/convex/REFERENCE.md +9 -0
  50. package/src/orchestrator/plugins/convex/SKILL.md +13 -1
  51. package/src/orchestrator/plugins/cypress/REFERENCE.md +5 -0
  52. package/src/orchestrator/plugins/cypress/SKILL.md +29 -93
  53. package/src/orchestrator/plugins/figma/REFERENCE.md +18 -0
  54. package/src/orchestrator/plugins/figma/SKILL.md +41 -66
  55. package/src/orchestrator/plugins/jira/REFERENCE.md +9 -0
  56. package/src/orchestrator/plugins/jira/SKILL.md +26 -114
  57. package/src/orchestrator/plugins/linear/SKILL.md +42 -109
  58. package/src/orchestrator/plugins/netlify/REFERENCE.md +33 -0
  59. package/src/orchestrator/plugins/netlify/SKILL.md +34 -64
  60. package/src/orchestrator/plugins/nextjs/REFERENCE.md +73 -0
  61. package/src/orchestrator/plugins/nextjs/SKILL.md +49 -138
  62. package/src/orchestrator/plugins/notion/SKILL.md +26 -168
  63. package/src/orchestrator/plugins/notion/TEMPLATES.md +88 -0
  64. package/src/orchestrator/plugins/nx/REFERENCE.md +10 -0
  65. package/src/orchestrator/plugins/nx/SKILL.md +12 -12
  66. package/src/orchestrator/plugins/playwright/REFERENCE.md +12 -0
  67. package/src/orchestrator/plugins/playwright/SKILL.md +33 -98
  68. package/src/orchestrator/plugins/prisma/REFERENCE.md +42 -0
  69. package/src/orchestrator/plugins/prisma/SKILL.md +18 -68
  70. package/src/orchestrator/plugins/resend/REFERENCE.md +61 -0
  71. package/src/orchestrator/plugins/resend/SKILL.md +23 -137
  72. package/src/orchestrator/plugins/sanity/SKILL.md +50 -3
  73. package/src/orchestrator/plugins/slack/REFERENCE.md +24 -0
  74. package/src/orchestrator/plugins/slack/SKILL.md +36 -111
  75. package/src/orchestrator/plugins/strapi/REFERENCE.md +35 -0
  76. package/src/orchestrator/plugins/strapi/SKILL.md +60 -24
  77. package/src/orchestrator/plugins/supabase/REFERENCE.md +9 -0
  78. package/src/orchestrator/plugins/supabase/SKILL.md +44 -16
  79. package/src/orchestrator/plugins/teams/REFERENCE.md +36 -0
  80. package/src/orchestrator/plugins/teams/SKILL.md +35 -85
  81. package/src/orchestrator/plugins/trello/REFERENCE.md +9 -0
  82. package/src/orchestrator/plugins/trello/SKILL.md +25 -97
  83. package/src/orchestrator/plugins/turborepo/REFERENCE.md +9 -0
  84. package/src/orchestrator/plugins/turborepo/SKILL.md +13 -1
  85. package/src/orchestrator/plugins/vercel/SKILL.md +45 -52
  86. package/src/orchestrator/plugins/vitest/SKILL.md +10 -14
  87. package/src/orchestrator/prompts/create-skill.prompt.md +62 -20
  88. package/src/orchestrator/skills/accessibility-standards/REFERENCE.md +34 -0
  89. package/src/orchestrator/skills/accessibility-standards/SKILL.md +6 -3
  90. package/src/orchestrator/skills/agent-hooks/HOOKS-REFERENCE.md +48 -0
  91. package/src/orchestrator/skills/agent-hooks/SKILL.md +41 -65
  92. package/src/orchestrator/skills/agent-memory/KNOWLEDGE-GRAPH.md +49 -0
  93. package/src/orchestrator/skills/agent-memory/SKILL.md +30 -67
  94. package/src/orchestrator/skills/api-patterns/SKILL.md +29 -1
  95. package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
  96. package/src/orchestrator/skills/context-map/REFERENCE.md +70 -0
  97. package/src/orchestrator/skills/context-map/SKILL.md +28 -55
  98. package/src/orchestrator/skills/data-engineering/REFERENCE.md +55 -0
  99. package/src/orchestrator/skills/data-engineering/SKILL.md +40 -34
  100. package/src/orchestrator/skills/decomposition/REFERENCE.md +28 -0
  101. package/src/orchestrator/skills/decomposition/SKILL.md +15 -30
  102. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +31 -65
  103. package/src/orchestrator/skills/documentation-standards/SKILL.md +31 -50
  104. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +39 -0
  105. package/src/orchestrator/skills/fast-review/REFERENCE.md +30 -0
  106. package/src/orchestrator/skills/fast-review/SKILL.md +11 -31
  107. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +113 -0
  108. package/src/orchestrator/skills/frontend-design/REFERENCE.md +36 -0
  109. package/src/orchestrator/skills/frontend-design/SKILL.md +36 -85
  110. package/src/orchestrator/skills/git-workflow/SKILL.md +1 -1
  111. package/src/orchestrator/skills/memory-merger/REFERENCE.md +20 -0
  112. package/src/orchestrator/skills/memory-merger/SKILL.md +29 -38
  113. package/src/orchestrator/skills/observability-logging/SKILL.md +5 -12
  114. package/src/orchestrator/skills/orchestration-protocols/REFERENCE.md +42 -0
  115. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +54 -41
  116. package/src/orchestrator/skills/panel-majority-vote/REFERENCE.md +55 -0
  117. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +30 -75
  118. package/src/orchestrator/skills/performance-optimization/SKILL.md +41 -1
  119. package/src/orchestrator/skills/project-consistency/SKILL.md +50 -89
  120. package/src/orchestrator/skills/project-consistency/TEMPLATES.md +39 -0
  121. package/src/orchestrator/skills/react-development/REFERENCE.md +7 -0
  122. package/src/orchestrator/skills/react-development/SKILL.md +50 -42
  123. package/src/orchestrator/skills/security-hardening/SKILL.md +88 -1
  124. package/src/orchestrator/skills/self-improvement/LESSON-CATEGORIES.md +36 -0
  125. package/src/orchestrator/skills/self-improvement/SKILL.md +19 -25
  126. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +54 -0
  127. package/src/orchestrator/skills/seo-patterns/SKILL.md +20 -88
  128. package/src/orchestrator/skills/session-checkpoints/CHECKPOINT-TEMPLATE.md +58 -0
  129. package/src/orchestrator/skills/session-checkpoints/SKILL.md +34 -58
  130. package/src/orchestrator/skills/team-lead-reference/SKILL.md +37 -30
  131. package/src/orchestrator/skills/testing-workflow/SKILL.md +55 -2
  132. package/src/orchestrator/skills/validation-gates/REFERENCE.md +50 -0
  133. package/src/orchestrator/skills/validation-gates/SKILL.md +39 -35
@@ -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
@@ -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
 
@@ -0,0 +1,42 @@
1
+ > Parent: [SKILL.md](./SKILL.md)
2
+
3
+ ## Agent Health Monitoring
4
+
5
+ ### Health Signals
6
+
7
+ | Signal | Threshold | Recovery |
8
+ |--------|-----------|----------|
9
+ | **Stuck** — no output/changes | Sub: 5 min / BG: 15 min | Nudge; if frozen, abort + re-delegate with simpler scope |
10
+ | **Looping** — same error repeated | 3 consecutive failures | Abort; add context; re-delegate with explicit fix path |
11
+ | **Scope creep** — files outside partition | Any | Redirect: "Only modify files in [partition]. Revert [file]." |
12
+ | **Context exhaustion** — confused/repetitive | Visible instruction amnesia | Checkpoint, end session, resume in fresh context |
13
+ | **Permission loop** — waiting for input | 2+ prompts without progress | Auto-approve if safe; abort + re-delegate |
14
+
15
+ **Cadence:** Sub-agents — continuous (real-time). Background agents — check at 10 min, then every 10 min. Always review full diff before accepting.
16
+
17
+ ### Escalation Path
18
+
19
+ 1. **Failure 1:** Re-delegate with more specific prompt + error context
20
+ 2. **Failure 2:** Downscope (split into smaller pieces), re-delegate
21
+ 3. **Failure 3:** Log to `.opencastle/AGENT-FAILURES.md`; if 3× panel BLOCK or conflict, create dispute in `.opencastle/DISPUTES.md` (see **team-lead-reference** § Dispute Protocol)
22
+
23
+ ## Error Recovery Playbook
24
+
25
+ | Failure | Symptom | Recovery |
26
+ |---------|---------|----------|
27
+ | **Retry loop** | Same command fails 3+ times | Abort; identify root cause; re-delegate with explicit fix; log lesson |
28
+ | **MCP unavailable** | Tool connection/timeout errors | Check server; retry once; fall back to CLI; log to DLQ if critical |
29
+ | **Broken BG output** | Lint/type/test errors on return | Fix inline if small; discard + re-delegate if fundamental; DLQ after 2 fails |
30
+ | **Parallel merge conflict** | Two agents modified overlapping files | Accept complex side first; re-delegate simple side to adapt; log lesson |
31
+ | **Context exhausted** | Confused/repetitive responses | Checkpoint; end session; resume with checkpoint; reduce parallel work |
32
+ | **Post-merge test failure** | Tests pass alone but fail merged | Run affected tests; check import/state conflicts; delegate fix to likely cause |
33
+
34
+ ## Agent Circuit Breaker
35
+
36
+ | Threshold | Action |
37
+ |-----------|--------|
38
+ | **2 failures** | Investigate: same error class? Model healthy? Prompt pattern? |
39
+ | **3 failures** | Open circuit — stop delegating; reassign or escalate to user |
40
+ | **Next session** | Half-open — resets; re-open + add lesson if fails again |
41
+
42
+ Judgment-based, not a hard gate. 3 similar failures with the same error is more concerning than 3 unrelated failures.
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: orchestration-protocols
3
- description: "Runtime orchestration patterns for the Team Lead: parallel research spawning, agent health monitoring, active steering, background agent management, Context Compaction, Agent Circuit Breaker, and escalation paths."
3
+ description: "Coordinates multiple agents with parallel task spawning, health monitoring, circuit breakers, and escalation paths. Use when managing parallel agents, handling agent timeouts, orchestrate agents, run tasks in parallel, concurrent agent execution, or fan-out tasks. Use when coordinating multi-agent task delegation."
4
4
  ---
5
5
 
6
6
  # Orchestration Protocols
7
7
 
8
- Runtime patterns for managing delegated agents. **Load at:** Execution phase (Step 4+), when monitoring active agents or spawning parallel work.
8
+ Runtime patterns for managing delegated agents.
9
9
 
10
10
  ## Active Steering
11
11
 
@@ -13,11 +13,11 @@ Intervene early when you spot:
13
13
 
14
14
  | Signal | Action |
15
15
  |--------|--------|
16
- | Failing tests/builds | Can't resolve dependency or breaks existing code |
17
- | Unexpected file changes | Files outside partition in diff |
18
- | Scope creep | Refactors code not in scope |
19
- | Circular behavior | Same failing approach retried without change |
20
- | Intent misunderstanding | Session log shows wrong prompt interpretation |
16
+ | Failing tests/builds | Check dependency resolution; revert if builds break |
17
+ | Unexpected file changes | Revert; enforce partition |
18
+ | Scope creep | Redirect to scoped files only |
19
+ | Circular behavior | Halt; switch approach |
20
+ | Intent misunderstanding | Clarify prompt; re-delegate |
21
21
 
22
22
  When redirecting, explain *why* and *how*:
23
23
 
@@ -35,7 +35,7 @@ Run autonomously in isolated Git worktrees. Reserve for well-scoped tasks >5 min
35
35
 
36
36
  ## Parallel Research Protocol
37
37
 
38
- Spawn multiple research sub-agents in parallel when 3+ independent questions must be answered before implementation. **Use when:** 3+ independent research questions, broad codebase exploration, or multi-area analysis (frontend/backend/CMS). **Skip when:** single-file investigation, answer in one known location, sequential results, or fewer than 3 questions.
38
+ Spawn multiple research sub-agents in parallel when 3+ independent questions must be answered before implementation. **Spawn if:** 3 independent questions AND answers span multiple codebase areas otherwise handle sequentially.
39
39
 
40
40
  ### Spawn Strategy
41
41
 
@@ -56,9 +56,11 @@ Return: key findings, relevant file paths (with line numbers), patterns, unanswe
56
56
  ### Result Merge Protocol
57
57
 
58
58
  1. Collect all results into single context
59
- 2. Deduplicate (same file/pattern counts once)
60
- 3. Resolve conflicts specific evidence beats general observations
61
- 4. Synthesize into concise context block for implementation prompts
59
+ 2. **Checkpoint:** verify every researcher returned a result (no timeout or error); re-run any that failed before proceeding.
60
+ 3. Deduplicate (same file/pattern counts once)
61
+ 4. Resolve conflicts specific evidence beats general observations
62
+ 5. Synthesize into concise context block for implementation prompts
63
+ 6. **Checkpoint:** confirm synthesized block covers every original question; mark any unanswered questions as blockers.
62
64
 
63
65
  ## Batch Reviews
64
66
 
@@ -80,43 +82,54 @@ Summarize prior phase output before passing to the next agent. **Extract:** file
80
82
  - Blockers: [none | list]
81
83
  ```
82
84
 
83
- ## Agent Health Monitoring
85
+ **Concrete example:**
86
+ ```
87
+ ### Prior Phase Output
88
+ **Phase 2 — Researcher A — Find usages of `calculateTotal()`**
89
+ - Files changed: none (read-only research)
90
+ - Decisions: `calculateTotal` lives in `libs/cart/src/lib/total.ts`; new logic should live in `libs/cart/src/lib/discounts.ts`
91
+ - Verification: lint ✅ | types ✅ | unit smoke test (cart total) ✅
92
+ - Blockers: design question on rounding behavior (see `docs/rounding.md`)
93
+ ```
94
+
95
+ ## Health & Recovery Reference
84
96
 
85
- ### Health Signals
97
+ Detailed Agent Health Monitoring, Error Recovery Playbook, and Agent Circuit Breaker tables have been moved to REFERENCE.md to keep this skill concise. See REFERENCE.md in this directory for thresholds, recovery steps, and escalation flows.
86
98
 
87
- | Signal | Threshold | Recovery |
88
- |--------|-----------|----------|
89
- | **Stuck** — no output/changes | Sub: 5 min / BG: 15 min | Nudge; if frozen, abort + re-delegate with simpler scope |
90
- | **Looping** — same error repeated | 3 consecutive failures | Abort; add context; re-delegate with explicit fix path |
91
- | **Scope creep** — files outside partition | Any | Redirect: "Only modify files in [partition]. Revert [file]." |
92
- | **Context exhaustion** — confused/repetitive | Visible instruction amnesia | Checkpoint, end session, resume in fresh context |
93
- | **Permission loop** — waiting for input | 2+ prompts without progress | Auto-approve if safe; abort + re-delegate |
94
99
 
95
- **Cadence:** Sub-agents continuous (real-time). Background agents — check at 10 min, then every 10 min. Always review full diff before accepting.
100
+ ### CLI examples (spawn & monitor)
96
101
 
97
- ### Escalation Path
102
+ These use the OpenCastle CLI (`npx opencastle` or `bin/cli.mjs`):
98
103
 
99
- 1. **Failure 1:** Re-delegate with more specific prompt + error context
100
- 2. **Failure 2:** Downscope (split into smaller pieces), re-delegate
101
- 3. **Failure 3:** Log to `.opencastle/AGENT-FAILURES.md`; if panel BLOCK or conflict, create dispute in `.opencastle/DISPUTES.md` (see **team-lead-reference** § Dispute Protocol)
104
+ ```bash
105
+ opencastle run --file convoy.yml --dry-run
106
+ opencastle run --file convoy.yml --verbose
107
+ opencastle run --resume
108
+ opencastle run --status
109
+ opencastle run --retry-failed
110
+ ```
111
+
112
+ **Post-run verification (copy-paste checks):**
102
113
 
103
- ## Error Recovery Playbook
114
+ ```bash
115
+ if [ $? -ne 0 ]; then
116
+ echo "opencastle run failed — inspect .opencastle/convoy.log" \
117
+ && tail -n 200 .opencastle/convoy.log && exit 1
118
+ fi
104
119
 
105
- | Failure | Symptom | Recovery |
106
- |---------|---------|----------|
107
- | **Retry loop** | Same command fails 3+ times | Abort; identify root cause; re-delegate with explicit fix; log lesson |
108
- | **MCP unavailable** | Tool connection/timeout errors | Check server; retry once; fall back to CLI; log to DLQ if critical |
109
- | **Broken BG output** | Lint/type/test errors on return | Fix inline if small; discard + re-delegate if fundamental; DLQ after 2 fails |
110
- | **Parallel merge conflict** | Two agents modified overlapping files | Accept complex side first; re-delegate simple side to adapt; log lesson |
111
- | **Context exhausted** | Confused/repetitive responses | Checkpoint; end session; resume with checkpoint; reduce parallel work |
112
- | **Post-merge test failure** | Tests pass alone but fail merged | Run affected tests; check import/state conflicts; delegate fix to likely cause |
120
+ npx opencastle run --status
121
+
122
+ grep -i "error\|failed" .opencastle/convoy.log || echo "no obvious errors in logs"
123
+ ```
113
124
 
114
- ## Agent Circuit Breaker
125
+ ## Validation & Verification Checkpoints
115
126
 
116
- | Threshold | Action |
117
- |-----------|--------|
118
- | **2 failures** | Investigate: same error class? Model healthy? Prompt pattern? |
119
- | **3 failures** | Open circuit stop delegating; reassign or escalate to user |
120
- | **Next session** | Half-open resets; re-open + add lesson if fails again |
127
+ | Phase | Check | Command / Action |
128
+ |-------|-------|-----------------|
129
+ | Pre-spawn | Inputs present (task, scope, ACs) | `test -s convoy.yml \|\| exit 1` |
130
+ | During-run | Tail for fatal errors | `tail -F .opencastle/convoy.log \| grep -i "fatal\|error"` |
131
+ | Pre-merge | All agents exited 0 | `jq -e '.agents[] \| .exit_code == 0' .opencastle/results.json` |
132
+ | Output schema | Required fields present | `jq -e '.agents[] \| (.findings and .file_paths)' .opencastle/results.json` |
133
+ | Post-merge | Lint + smoke tests pass | `npm run lint && npm test -- -t "smoke"` |
134
+ | Blocker | Any failure | Block merge; reopen to original researcher(s) |
121
135
 
122
- Judgment-based, not a hard gate. 3 similar failures with the same error is more concerning than 3 unrelated failures.