learnship 1.9.10 → 1.9.12

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "learnship",
3
3
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system. Works with Claude Code, Windsurf, Cursor, Gemini CLI, OpenCode, and Codex.",
4
- "version": "1.9.10",
4
+ "version": "1.9.12",
5
5
  "author": {
6
6
  "name": "Favio Vazquez",
7
7
  "email": "favio.vazquezp@gmail.com"
@@ -2,7 +2,7 @@
2
2
  "name": "learnship",
3
3
  "displayName": "learnship",
4
4
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system.",
5
- "version": "1.9.10",
5
+ "version": "1.9.12",
6
6
  "logo": "assets/logo.png",
7
7
  "author": {
8
8
  "name": "Favio Vazquez",
package/README.md CHANGED
@@ -136,7 +136,7 @@ What's covered:
136
136
  - **[Getting Started](https://faviovazquez.github.io/learnship/getting-started/installation/)**: install commands, first project walkthrough, the 5 commands you need to know
137
137
  - **[Platform Guide](https://faviovazquez.github.io/learnship/platform-guide/windsurf/)**: dedicated pages for Windsurf, Claude Code, Cursor, OpenCode, Gemini CLI, and Codex CLI
138
138
  - **[Core Concepts](https://faviovazquez.github.io/learnship/core-concepts/phase-loop/)**: phase loop, context engineering, planning artifacts, agentic vs vibe coding
139
- - **[Skills](https://faviovazquez.github.io/learnship/skills/agentic-learning/)**: all 11 `@agentic-learning` actions and all 18 `impeccable` design commands
139
+ - **[Skills](https://faviovazquez.github.io/learnship/skills/agentic-learning/)**: all 11 `@agentic-learning` actions and all 21 `impeccable` design commands
140
140
  - **[Workflow Reference](https://faviovazquez.github.io/learnship/workflow-reference/core/)**: all 42 workflows documented with when and why to use each
141
141
  - **[Configuration](https://faviovazquez.github.io/learnship/configuration/)**: full `.planning/config.json` schema, speed presets, parallelization
142
142
 
@@ -234,7 +234,7 @@ Three integrated layers that reinforce each other:
234
234
  |-------|-------------|
235
235
  | **Workflow Engine** | Spec-driven phases → context-engineered plans → wave-ordered execution → verified delivery |
236
236
  | **Learning Partner** | Neuroscience-backed checkpoints at every phase transition: retrieval, reflection, spacing, struggle |
237
- | **Design System** | 18 impeccable steering commands for production-grade UI: `/audit`, `/critique`, `/polish`, and more |
237
+ | **Design System** | 21 impeccable steering commands for production-grade UI: `/audit`, `/critique`, `/polish`, and more |
238
238
 
239
239
  ```mermaid
240
240
  graph LR
@@ -502,7 +502,7 @@ learning_mode: "manual" → only when you explicitly invoke @agentic-learning
502
502
 
503
503
  ## 🎨 Design System
504
504
 
505
- The **impeccable** skill suite is always active as project context for any UI work. It provides design direction, anti-patterns, and 17 steering commands that prevent generic AI aesthetics. Based on [@pbakaus/impeccable](https://github.com/pbakaus/impeccable).
505
+ The **impeccable** skill suite is always active as project context for any UI work. It provides design direction, anti-patterns, and 21 steering commands that prevent generic AI aesthetics. Based on [@pbakaus/impeccable](https://github.com/pbakaus/impeccable).
506
506
 
507
507
  ### Commands
508
508
 
@@ -746,7 +746,7 @@ learnship/
746
746
  │ ├── workflows/ # 42 workflows as slash commands
747
747
  │ └── skills/
748
748
  │ ├── agentic-learning/ # Learning partner (SKILL.md + references), native on Windsurf + Claude Code
749
- │ └── impeccable/ # Design suite: 18 skills, native on Windsurf + Claude Code
749
+ │ └── impeccable/ # Design suite: 21 skills, native on Windsurf + Claude Code
750
750
  │ ├── frontend-design/ # Base skill + 7 reference files (typography, color, motion…)
751
751
  │ ├── audit/ # /audit
752
752
  │ ├── critique/ # /critique
package/bin/install.js CHANGED
@@ -621,10 +621,10 @@ function installClaudePlugins(skillsSrc, targetDir) {
621
621
 
622
622
  // Ordered sub-actions (defines appearance order in the inlined file)
623
623
  const SUB_ACTION_ORDER = [
624
- 'adapt', 'animate', 'audit', 'bolder', 'clarify', 'colorize',
624
+ 'adapt', 'animate', 'arrange', 'audit', 'bolder', 'clarify', 'colorize',
625
625
  'critique', 'delight', 'distill', 'extract', 'frontend-design',
626
- 'harden', 'normalize', 'onboard', 'optimize', 'polish', 'quieter',
627
- 'teach-impeccable',
626
+ 'harden', 'normalize', 'onboard', 'optimize', 'overdrive', 'polish',
627
+ 'quieter', 'teach-impeccable', 'typeset',
628
628
  ];
629
629
 
630
630
  // Build inlined sections by reading each sub-skill's body
@@ -645,12 +645,13 @@ function installClaudePlugins(skillsSrc, targetDir) {
645
645
  // the "Invoke with @impeccable" preamble that confused Claude Code's matcher
646
646
  const inlinedSkillMd =
647
647
  `---\nname: impeccable\ndescription: >\n` +
648
- ` A design quality system for frontend interfaces. 18 focused actions for\n` +
648
+ ` A design quality system for frontend interfaces. 21 focused actions for\n` +
649
649
  ` auditing, refining, and elevating UI quality. Use when the user asks to\n` +
650
650
  ` audit, critique, polish, improve, review, or refine a frontend interface.\n` +
651
- ` Invoke with @impeccable followed by one of: adapt, animate, audit, bolder,\n` +
652
- ` clarify, colorize, critique, delight, distill, extract, frontend-design,\n` +
653
- ` harden, normalize, onboard, optimize, polish, quieter, or teach-impeccable.\n` +
651
+ ` Invoke with @impeccable followed by one of: adapt, animate, arrange, audit,\n` +
652
+ ` bolder, clarify, colorize, critique, delight, distill, extract,\n` +
653
+ ` frontend-design, harden, normalize, onboard, optimize, overdrive, polish,\n` +
654
+ ` quieter, teach-impeccable, or typeset.\n` +
654
655
  `---\n\n` +
655
656
  rootBody.replace(/## Actions[\s\S]*?---\n\n## How to use/, '## How to use') +
656
657
  `\n\n` +
@@ -55,6 +55,9 @@ Read `learning_mode` from `.planning/config.json` (default: "auto"):
55
55
 
56
56
  The `impeccable` skill is available for UI work. Key commands:
57
57
  - `@impeccable audit` — full quality audit
58
+ - `@impeccable critique` — UX effectiveness review
58
59
  - `@impeccable polish` — final pass before shipping
59
60
  - `@impeccable frontend-design` — apply design foundation principles
60
- - `@impeccable critique` — UX effectiveness review
61
+ - `@impeccable arrange` — fix layout, spacing, visual rhythm
62
+ - `@impeccable typeset` — fix typography, fonts, hierarchy
63
+ - `@impeccable overdrive` — technically ambitious implementations
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.10",
3
+ "version": "1.9.12",
4
4
  "description": "Agentic engineering done right — 42 structured workflows, persistent memory across sessions, integrated learning partner, and impeccable UI design system.",
5
5
  "author": "Favio Vazquez",
6
6
  "homepage": "https://faviovazquez.github.io/learnship/",
@@ -132,7 +132,9 @@ Wait for their response. Then follow the thread — each answer opens new questi
132
132
 
133
133
  Use the questioning techniques from `@./references/questioning.md`.
134
134
 
135
- When you have enough to write a clear PROJECT.md, ask:
135
+ > **⚠ MANDATORY MINIMUM — Do not ask to create PROJECT.md until you have asked AT LEAST 3 follow-up questions after the user's first answer. No matter how detailed the first response is, one answer is never enough. A single detailed prompt is not a project definition — it is a starting point. Ask follow-ups about: who uses it, what the edge cases are, what success looks like, what they've already tried, what must NOT happen. Only after at least 3 follow-ups have been exchanged may you proceed.**
136
+
137
+ When you have enough depth (minimum 3 follow-ups exchanged), ask:
136
138
 
137
139
  "I think I understand what you're after. Ready to create PROJECT.md, or do you want to explore more?"
138
140
 
@@ -145,6 +147,15 @@ Loop until ready.
145
147
 
146
148
  Synthesize all gathered context into `.planning/PROJECT.md` using `@./templates/project.md` as the template.
147
149
 
150
+ Once written, **show the user the full contents of `.planning/PROJECT.md`** and ask:
151
+
152
+ "Here's the PROJECT.md I've written from our conversation. Does this accurately capture what you want to build, or should we adjust anything?"
153
+
154
+ - **Looks good** → continue
155
+ - **Needs changes** → ask what to adjust, update PROJECT.md, re-present, loop until confirmed
156
+
157
+ > **⚠ STOP — do not proceed to Step 5 until the user has explicitly confirmed PROJECT.md. This is a mandatory gate. Do not interpret silence or a brief "ok" as confirmation — wait for a clear positive signal.**
158
+
148
159
  **If `commit_mode` is `auto`:**
149
160
  ```bash
150
161
  git add .planning/PROJECT.md && git commit -m "docs: initialize project"
@@ -11,7 +11,7 @@ Pull the latest skill content from both upstream repositories into learnship's s
11
11
  **What this touches:**
12
12
  - `.windsurf/skills/agentic-learning/SKILL.md` — replaced from upstream
13
13
  - `.windsurf/skills/agentic-learning/references/` — replaced from upstream
14
- - `.windsurf/skills/impeccable/<sub-skill>/` — each of 18 sub-skill dirs replaced from upstream
14
+ - `.windsurf/skills/impeccable/<sub-skill>/` — each of 21 sub-skill dirs replaced from upstream
15
15
  - `.windsurf/skills/impeccable/SKILL.md` — **NOT touched** (this is learnship's own dispatcher)
16
16
 
17
17
  ---
@@ -59,7 +59,7 @@ Will pull from:
59
59
  Files updated:
60
60
  .windsurf/skills/agentic-learning/SKILL.md
61
61
  .windsurf/skills/agentic-learning/references/ (full replace)
62
- .windsurf/skills/impeccable/<18 sub-skills>/ (full replace each)
62
+ .windsurf/skills/impeccable/<21 sub-skills>/ (full replace each)
63
63
 
64
64
  Files preserved (learnship-owned):
65
65
  .windsurf/skills/impeccable/SKILL.md (dispatcher — never touched)
@@ -89,7 +89,7 @@ ls "$AGENTIC_LEARN_TMP"
89
89
  ls "$IMPECCABLE_TMP/source/skills/"
90
90
  ```
91
91
 
92
- Confirm both clones succeeded — `SKILL.md` must exist in `$AGENTIC_LEARN_TMP` and the 18 sub-skill dirs must exist under `$IMPECCABLE_TMP/source/skills/`. If either is missing, stop.
92
+ Confirm both clones succeeded — `SKILL.md` must exist in `$AGENTIC_LEARN_TMP` and at least 21 sub-skill dirs must exist under `$IMPECCABLE_TMP/source/skills/`. If either is missing, stop.
93
93
 
94
94
  ---
95
95
 
@@ -175,7 +175,7 @@ Check all 18 expected sub-skills are present and have a `SKILL.md`:
175
175
 
176
176
  ```bash
177
177
  IMPECCABLE_DEST="$(pwd)/.windsurf/skills/impeccable"
178
- expected="adapt animate audit bolder clarify colorize critique delight distill extract frontend-design harden normalize onboard optimize polish quieter teach-impeccable"
178
+ expected="adapt animate arrange audit bolder clarify colorize critique delight distill extract frontend-design harden normalize onboard optimize overdrive polish quieter teach-impeccable typeset"
179
179
  missing=""
180
180
 
181
181
  for skill in $expected; do
@@ -190,7 +190,7 @@ if [ -n "$missing" ]; then
190
190
  cp -r "$BACKUP_DIR/impeccable/." "$IMPECCABLE_DEST/"
191
191
  echo "Restored. Check upstream structure manually."
192
192
  else
193
- echo "All 18 impeccable sub-skills present ✓"
193
+ echo "All 21 impeccable sub-skills present ✓"
194
194
  fi
195
195
 
196
196
  # Verify dispatcher is still intact
@@ -251,7 +251,7 @@ agentic-learning:
251
251
  references/ ✓ synced ([N] files)
252
252
 
253
253
  impeccable:
254
- 18 sub-skills ✓ synced from pbakaus/impeccable
254
+ 21 sub-skills ✓ synced from pbakaus/impeccable
255
255
  SKILL.md ✓ preserved (learnship dispatcher)
256
256
 
257
257
  All platforms updated (installer re-run):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learnship",
3
- "version": "1.9.10",
3
+ "version": "1.9.12",
4
4
  "description": "Learn as you build. Build with intent. — A multi-platform agentic engineering system for Windsurf, Claude Code, Cursor, OpenCode, Gemini CLI, and Codex: spec-driven workflows, integrated learning, and production-grade design.",
5
5
  "keywords": [
6
6
  "agentic",
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: impeccable
3
3
  description: >
4
- A design quality system for frontend interfaces. 18 focused actions for
4
+ A design quality system for frontend interfaces. 21 focused actions for
5
5
  auditing, refining, and elevating UI quality. Invoke with @impeccable
6
- followed by one of: adapt, animate, audit, bolder, clarify, colorize,
7
- critique, delight, distill, extract, frontend-design, harden, normalize,
8
- onboard, optimize, polish, quieter, or teach-impeccable.
6
+ followed by one of: adapt, animate, arrange, audit, bolder, clarify,
7
+ colorize, critique, delight, distill, extract, frontend-design, harden,
8
+ normalize, onboard, optimize, overdrive, polish, quieter, teach-impeccable,
9
+ or typeset.
9
10
  license: MIT
10
11
  compatibility: Works with Windsurf Cascade, Claude Code, and any AgentSkills-compatible agent.
11
12
  metadata:
@@ -15,7 +16,7 @@ metadata:
15
16
 
16
17
  # Impeccable
17
18
 
18
- A design quality system composed of 18 focused actions for auditing, refining,
19
+ A design quality system composed of 21 focused actions for auditing, refining,
19
20
  and elevating frontend interfaces. Each action is a specialist — invoke the one
20
21
  that matches your current need.
21
22
 
@@ -34,6 +35,9 @@ principles and anti-patterns.
34
35
  ### `animate` — Purposeful motion & micro-interactions
35
36
  [animate/SKILL.md](animate/SKILL.md)
36
37
 
38
+ ### `arrange` — Layout, spacing & visual rhythm
39
+ [arrange/SKILL.md](arrange/SKILL.md)
40
+
37
41
  ### `audit` — Comprehensive quality audit
38
42
  [audit/SKILL.md](audit/SKILL.md)
39
43
 
@@ -82,6 +86,12 @@ principles and anti-patterns.
82
86
  ### `teach-impeccable` — Project design context setup
83
87
  [teach-impeccable/SKILL.md](teach-impeccable/SKILL.md)
84
88
 
89
+ ### `typeset` — Typography: fonts, hierarchy & readability
90
+ [typeset/SKILL.md](typeset/SKILL.md)
91
+
92
+ ### `overdrive` — Technically ambitious implementations
93
+ [overdrive/SKILL.md](overdrive/SKILL.md)
94
+
85
95
  ---
86
96
 
87
97
  ## How to use
@@ -120,6 +130,6 @@ Or apply them directly now and use `/decision-log` to record what was changed an
120
130
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
121
131
  ```
122
132
 
123
- This applies after: `audit`, `critique`, `polish`, `normalize`, `harden`, `adapt`, `optimize`, `bolder`, `quieter`, `colorize`, `clarify`, `delight`, `onboard`, `animate`, `distill`, `extract`.
133
+ This applies after: `audit`, `critique`, `polish`, `normalize`, `harden`, `adapt`, `optimize`, `bolder`, `quieter`, `colorize`, `clarify`, `delight`, `onboard`, `animate`, `distill`, `extract`, `arrange`, `typeset`, `overdrive`.
124
134
 
125
135
  For `teach-impeccable` and `frontend-design` (which set up context, not produce recommendations), skip this suggestion.
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: arrange
3
+ description: Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy to create intentional compositions.
4
+ args:
5
+ - name: target
6
+ description: The feature or component to improve layout for (optional)
7
+ required: false
8
+ user-invokable: true
9
+ ---
10
+
11
+ Assess and improve layout and spacing that feels monotonous, crowded, or structurally weak — turning generic arrangements into intentional, rhythmic compositions.
12
+
13
+ ## MANDATORY PREPARATION
14
+
15
+ Use the frontend-design skill — it contains design principles, anti-patterns, and the **Context Gathering Protocol**. Follow the protocol before proceeding — if no design context exists yet, you MUST run teach-impeccable first.
16
+
17
+ ---
18
+
19
+ ## Assess Current Layout
20
+
21
+ Analyze what's weak about the current spatial design:
22
+
23
+ 1. **Spacing**:
24
+ - Is spacing consistent or arbitrary? (Random padding/margin values)
25
+ - Is all spacing the same? (Equal padding everywhere = no rhythm)
26
+ - Are related elements grouped tightly, with generous space between groups?
27
+
28
+ 2. **Visual hierarchy**:
29
+ - Apply the squint test: blur your (metaphorical) eyes — can you still identify the most important element, second most important, and clear groupings?
30
+ - Is hierarchy achieved effectively? (Space and weight alone can be enough — but is the current approach working?)
31
+ - Does whitespace guide the eye to what matters?
32
+
33
+ 3. **Grid & structure**:
34
+ - Is there a clear underlying structure, or does the layout feel random?
35
+ - Are identical card grids used everywhere? (Icon + heading + text, repeated endlessly)
36
+ - Is everything centered? (Left-aligned with asymmetric layouts feels more designed, but not a hard and fast rule)
37
+
38
+ 4. **Rhythm & variety**:
39
+ - Does the layout have visual rhythm? (Alternating tight/generous spacing)
40
+ - Is every section structured the same way? (Monotonous repetition)
41
+ - Are there intentional moments of surprise or emphasis?
42
+
43
+ 5. **Density**:
44
+ - Is the layout too cramped? (Not enough breathing room)
45
+ - Is the layout too sparse? (Excessive whitespace without purpose)
46
+ - Does density match the content type? (Data-dense UIs need tighter spacing; marketing pages need more air)
47
+
48
+ **CRITICAL**: Layout problems are often the root cause of interfaces feeling "off" even when colors and fonts are fine. Space is a design material — use it with intention.
49
+
50
+ ## Plan Layout Improvements
51
+
52
+ Consult the [spatial design reference](../frontend-design/reference/spatial-design.md) from the frontend-design skill for detailed guidance on grids, rhythm, and container queries.
53
+
54
+ Create a systematic plan:
55
+
56
+ - **Spacing system**: Use a consistent scale — whether that's a framework's built-in scale (e.g., Tailwind), rem-based tokens, or a custom system. The specific values matter less than consistency.
57
+ - **Hierarchy strategy**: How will space communicate importance?
58
+ - **Layout approach**: What structure fits the content? Flex for 1D, Grid for 2D, named areas for complex page layouts.
59
+ - **Rhythm**: Where should spacing be tight vs generous?
60
+
61
+ ## Improve Layout Systematically
62
+
63
+ ### Establish a Spacing System
64
+
65
+ - Use a consistent spacing scale — framework scales (Tailwind, etc.), rem-based tokens, or a custom scale all work. What matters is that values come from a defined set, not arbitrary numbers.
66
+ - Name tokens semantically if using custom properties: `--space-xs` through `--space-xl`, not `--spacing-8`
67
+ - Use `gap` for sibling spacing instead of margins — eliminates margin collapse hacks
68
+ - Apply `clamp()` for fluid spacing that breathes on larger screens
69
+
70
+ ### Create Visual Rhythm
71
+
72
+ - **Tight grouping** for related elements (8-12px between siblings)
73
+ - **Generous separation** between distinct sections (48-96px)
74
+ - **Varied spacing** within sections — not every row needs the same gap
75
+ - **Asymmetric compositions** — break the predictable centered-content pattern when it makes sense
76
+
77
+ ### Choose the Right Layout Tool
78
+
79
+ - **Use Flexbox for 1D layouts**: Rows of items, nav bars, button groups, card contents, most component internals. Flex is simpler and more appropriate for the majority of layout tasks.
80
+ - **Use Grid for 2D layouts**: Page-level structure, dashboards, data-dense interfaces, anything where rows AND columns need coordinated control.
81
+ - **Don't default to Grid** when Flexbox with `flex-wrap` would be simpler and more flexible.
82
+ - Use `repeat(auto-fit, minmax(280px, 1fr))` for responsive grids without breakpoints.
83
+ - Use named grid areas (`grid-template-areas`) for complex page layouts — redefine at breakpoints.
84
+
85
+ ### Break Card Grid Monotony
86
+
87
+ - Don't default to card grids for everything — spacing and alignment create visual grouping naturally
88
+ - Use cards only when content is truly distinct and actionable — never nest cards inside cards
89
+ - Vary card sizes, span columns, or mix cards with non-card content to break repetition
90
+
91
+ ### Strengthen Visual Hierarchy
92
+
93
+ - Use the fewest dimensions needed for clear hierarchy. Space alone can be enough — generous whitespace around an element draws the eye. Some of the most sophisticated designs achieve rhythm with just space and weight. Add color or size contrast only when simpler means aren't sufficient.
94
+ - Be aware of reading flow — in LTR languages, the eye naturally scans top-left to bottom-right, but primary action placement depends on context (e.g., bottom-right in dialogs, top in navigation).
95
+ - Create clear content groupings through proximity and separation.
96
+
97
+ ### Manage Depth & Elevation
98
+
99
+ - Create a semantic z-index scale (dropdown → sticky → modal-backdrop → modal → toast → tooltip)
100
+ - Build a consistent shadow scale (sm → md → lg → xl) — shadows should be subtle
101
+ - Use elevation to reinforce hierarchy, not as decoration
102
+
103
+ ### Optical Adjustments
104
+
105
+ - If an icon looks visually off-center despite being geometrically centered, nudge it — but only if you're confident it actually looks wrong. Don't adjust speculatively.
106
+
107
+ **NEVER**:
108
+ - Use arbitrary spacing values outside your scale
109
+ - Make all spacing equal — variety creates hierarchy
110
+ - Wrap everything in cards — not everything needs a container
111
+ - Nest cards inside cards — use spacing and dividers for hierarchy within
112
+ - Use identical card grids everywhere (icon + heading + text, repeated)
113
+ - Center everything — left-aligned with asymmetry feels more designed
114
+ - Default to the hero metric layout (big number, small label, stats, gradient) as a template. If showing real user data, a prominent metric can work — but it should display actual data, not decorative numbers.
115
+ - Default to CSS Grid when Flexbox would be simpler — use the simplest tool for the job
116
+ - Use arbitrary z-index values (999, 9999) — build a semantic scale
117
+
118
+ ## Verify Layout Improvements
119
+
120
+ - **Squint test**: Can you identify primary, secondary, and groupings with blurred vision?
121
+ - **Rhythm**: Does the page have a satisfying beat of tight and generous spacing?
122
+ - **Hierarchy**: Is the most important content obvious within 2 seconds?
123
+ - **Breathing room**: Does the layout feel comfortable, not cramped or wasteful?
124
+ - **Consistency**: Is the spacing system applied uniformly?
125
+ - **Responsiveness**: Does the layout adapt gracefully across screen sizes?
126
+
127
+ Remember: Space is the most underused design tool. A layout with the right rhythm and hierarchy can make even simple content feel polished and intentional.
@@ -71,7 +71,7 @@ For each issue, document:
71
71
  - **Impact**: How it affects users
72
72
  - **WCAG/Standard**: Which standard it violates (if applicable)
73
73
  - **Recommendation**: How to fix it
74
- - **Suggested command**: Which command to use (prefer: /polish, /audit, /critique, /normalize, /colorize, /animate, /bolder, /quieter, /distill, /clarify, /optimize, /harden, /delight, /extract, /adapt, /onboard, /teach-impeccable — or other installed skills you're sure exist)
74
+ - **Suggested command**: Which command to use (prefer: /polish, /audit, /critique, /normalize, /colorize, /animate, /bolder, /quieter, /distill, /clarify, /optimize, /harden, /delight, /extract, /adapt, /onboard, /arrange, /typeset, /overdrive, /teach-impeccable — or other installed skills you're sure exist)
75
75
 
76
76
  #### Critical Issues
77
77
  [Issues that block core functionality or violate WCAG A]
@@ -108,7 +108,7 @@ Create actionable plan:
108
108
 
109
109
  ### Suggested Commands for Fixes
110
110
 
111
- Map issues to available commands. Prefer these: /polish, /audit, /critique, /normalize, /colorize, /animate, /bolder, /quieter, /distill, /clarify, /optimize, /harden, /delight, /extract, /adapt, /onboard, /teach-impeccable. You may also suggest other installed skills you're sure exist, but never invent commands.
111
+ Map issues to available commands. Prefer these: /polish, /audit, /critique, /normalize, /colorize, /animate, /bolder, /quieter, /distill, /clarify, /optimize, /harden, /delight, /extract, /adapt, /onboard, /arrange, /typeset, /overdrive, /teach-impeccable. You may also suggest other installed skills you're sure exist, but never invent commands.
112
112
 
113
113
  Examples:
114
114
  - "Use `/normalize` to align with design system (addresses N theming issues)"
@@ -6,6 +6,26 @@ license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md f
6
6
 
7
7
  This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
8
8
 
9
+ ## Context Gathering Protocol
10
+
11
+ Design skills produce generic output without project context. You MUST have confirmed design context before doing any design work.
12
+
13
+ **Required context** — every design skill needs at minimum:
14
+ - **Target audience**: Who uses this product and in what context?
15
+ - **Use cases**: What jobs are they trying to get done?
16
+ - **Brand personality/tone**: How should the interface feel?
17
+
18
+ Individual skills may require additional context — check the skill's preparation section for specifics.
19
+
20
+ **CRITICAL**: You cannot infer this context by reading the codebase. Code tells you what was built, not who it's for or what it should feel like. Only the creator can provide this context.
21
+
22
+ **Gathering order:**
23
+ 1. **Check current instructions (instant)**: If your loaded instructions already contain a **Design Context** section, proceed immediately.
24
+ 2. **Check .impeccable.md (fast)**: If not in instructions, read `.impeccable.md` from the project root. If it exists and contains the required context, proceed.
25
+ 3. **Run teach-impeccable (REQUIRED)**: If neither source has context, you MUST run the teach-impeccable skill NOW before doing anything else. Do NOT skip this step. Do NOT attempt to infer context from the codebase instead.
26
+
27
+ ---
28
+
9
29
  ## Design Direction
10
30
 
11
31
  Commit to a BOLD aesthetic direction:
@@ -124,4 +144,4 @@ Match implementation complexity to the aesthetic vision. Maximalist designs need
124
144
 
125
145
  Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices across generations.
126
146
 
127
- Remember: Cascade is capable of extraordinary creative work. Don't hold back—show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
147
+ Remember: You are capable of extraordinary creative work. Don't hold back—show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
@@ -86,9 +86,11 @@ Tools like [Fontaine](https://github.com/unjs/fontaine) calculate these override
86
86
 
87
87
  ### Fluid Type
88
88
 
89
- Use `clamp(min, preferred, max)` for fluid typography. The middle value (e.g., `5vw + 1rem`) controls scaling rate—higher vw = faster scaling. Add a rem offset so it doesn't collapse to 0 on small screens.
89
+ Fluid typography via `clamp(min, preferred, max)` scales text smoothly with the viewport. The middle value (e.g., `5vw + 1rem`) controls scaling rate—higher vw = faster scaling. Add a rem offset so it doesn't collapse to 0 on small screens.
90
90
 
91
- **When NOT to use fluid type**: Button text, labels, UI elements (should be consistent), very short text, or when you need precise breakpoint control.
91
+ **Use fluid type for**: Headings and display text on marketing/content pages where text dominates the layout and needs to breathe across viewport sizes.
92
+
93
+ **Use fixed `rem` scales for**: App UIs, dashboards, and data-dense interfaces. No major app design system (Material, Polaris, Primer, Carbon) uses fluid type in product UI — fixed scales with optional breakpoint adjustments give the spatial predictability that container-based layouts need. Body text should also be fixed even on marketing pages, since the size difference across viewports is too small to warrant it.
92
94
 
93
95
  ### OpenType Features
94
96
 
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: overdrive
3
+ description: Push interfaces past conventional limits with technically ambitious implementations. Whether that's a shader, a 60fps virtual table, spring physics on a dialog, or scroll-driven reveals — make users ask "how did they do that?"
4
+ args:
5
+ - name: target
6
+ description: The feature or area to push into overdrive (optional)
7
+ required: false
8
+ user-invokable: true
9
+ ---
10
+
11
+ Start your response with:
12
+
13
+ ```
14
+ ──────────── ⚡ OVERDRIVE ─────────────
15
+ 》》》 Entering overdrive mode...
16
+ ```
17
+
18
+ Push an interface past conventional limits. This isn't just about visual effects — it's about using the full power of the browser to make any part of an interface feel extraordinary: a table that handles a million rows, a dialog that morphs from its trigger, a form that validates in real-time with streaming feedback, a page transition that feels cinematic.
19
+
20
+ ## MANDATORY PREPARATION
21
+
22
+ Use the frontend-design skill — it contains design principles, anti-patterns, and the **Context Gathering Protocol**. Follow the protocol before proceeding — if no design context exists yet, you MUST run teach-impeccable first.
23
+
24
+ **EXTRA IMPORTANT FOR THIS SKILL**: Context determines what "extraordinary" means. A particle system on a creative portfolio is impressive. The same particle system on a settings page is embarrassing. But a settings page with instant optimistic saves and animated state transitions? That's extraordinary too. Understand the project's personality and goals before deciding what's appropriate.
25
+
26
+ ### Propose Before Building
27
+
28
+ This skill has the highest potential to misfire. Do NOT jump straight into implementation. You MUST:
29
+
30
+ 1. **Think through 2-3 different directions** — consider different techniques, levels of ambition, and aesthetic approaches. For each direction, briefly describe what the result would look and feel like.
31
+ 2. **Ask the user:** to present these directions and get the user's pick before writing any code. Explain trade-offs (browser support, performance cost, complexity).
32
+ 3. Only proceed with the direction the user confirms.
33
+
34
+ Skipping this step risks building something embarrassing that needs to be thrown away.
35
+
36
+ ### Iterate with Browser Automation
37
+
38
+ Technically ambitious effects almost never work on the first try. You MUST actively use browser automation tools to preview your work, visually verify the result, and iterate. Do not assume the effect looks right — check it. Expect multiple rounds of refinement. The gap between "technically works" and "looks extraordinary" is closed through visual iteration, not code alone.
39
+
40
+ ---
41
+
42
+ ## Assess What "Extraordinary" Means Here
43
+
44
+ The right kind of technical ambition depends entirely on what you're working with. Before choosing a technique, ask: **what would make a user of THIS specific interface say "wow, that's nice"?**
45
+
46
+ ### For visual/marketing surfaces
47
+ Pages, hero sections, landing pages, portfolios — the "wow" is often sensory: a scroll-driven reveal, a shader background, a cinematic page transition, generative art that responds to the cursor.
48
+
49
+ ### For functional UI
50
+ Tables, forms, dialogs, navigation — the "wow" is in how it FEELS: a dialog that morphs from the button that triggered it via View Transitions, a data table that renders 100k rows at 60fps via virtual scrolling, a form with streaming validation that feels instant, drag-and-drop with spring physics.
51
+
52
+ ### For performance-critical UI
53
+ The "wow" is invisible but felt: a search that filters 50k items without a flicker, a complex form that never blocks the main thread, an image editor that processes in near-real-time. The interface just never hesitates.
54
+
55
+ ### For data-heavy interfaces
56
+ Charts and dashboards — the "wow" is in fluidity: GPU-accelerated rendering via Canvas/WebGL for massive datasets, animated transitions between data states, force-directed graph layouts that settle naturally.
57
+
58
+ **The common thread**: something about the implementation goes beyond what users expect from a web interface. The technique serves the experience, not the other way around.
59
+
60
+ ## The Toolkit
61
+
62
+ Organized by what you're trying to achieve, not by technology name.
63
+
64
+ ### Make transitions feel cinematic
65
+ - **View Transitions API** (same-document: all browsers; cross-document: no Firefox) — shared element morphing between states. A list item expanding into a detail page. A button morphing into a dialog. This is the closest thing to native FLIP animations.
66
+ - **`@starting-style`** (all browsers) — animate elements from `display: none` to visible with CSS only, including entry keyframes
67
+ - **Spring physics** — natural motion with mass, tension, and damping instead of cubic-bezier. Libraries: motion (formerly Framer Motion), GSAP, or roll your own spring solver.
68
+
69
+ ### Tie animation to scroll position
70
+ - **Scroll-driven animations** (`animation-timeline: scroll()`) — CSS-only, no JS. Parallax, progress bars, reveal sequences all driven by scroll position. (Chrome/Edge/Safari; Firefox: flag only — always provide a static fallback)
71
+
72
+ ### Render beyond CSS
73
+ - **WebGL** (all browsers) — shader effects, post-processing, particle systems. Libraries: Three.js, OGL (lightweight), regl. Use for effects CSS can't express.
74
+ - **WebGPU** (Chrome/Edge; Safari partial; Firefox: flag only) — next-gen GPU compute. More powerful than WebGL but limited browser support. Always fall back to WebGL2.
75
+ - **Canvas 2D / OffscreenCanvas** — custom rendering, pixel manipulation, or moving heavy rendering off the main thread entirely via Web Workers + OffscreenCanvas.
76
+ - **SVG filter chains** — displacement maps, turbulence, morphology for organic distortion effects. CSS-animatable.
77
+
78
+ ### Make data feel alive
79
+ - **Virtual scrolling** — render only visible rows for tables/lists with tens of thousands of items. No library required for simple cases; TanStack Virtual for complex ones.
80
+ - **GPU-accelerated charts** — Canvas or WebGL-rendered data visualization for datasets too large for SVG/DOM. Libraries: deck.gl, regl-based custom renderers.
81
+ - **Animated data transitions** — morph between chart states rather than replacing. D3's `transition()` or View Transitions for DOM-based charts.
82
+
83
+ ### Animate complex properties
84
+ - **`@property`** (all browsers) — register custom CSS properties with types, enabling animation of gradients, colors, and complex values that CSS can't normally interpolate.
85
+ - **Web Animations API** (all browsers) — JavaScript-driven animations with the performance of CSS. Composable, cancellable, reversible. The foundation for complex choreography.
86
+
87
+ ### Push performance boundaries
88
+ - **Web Workers** — move computation off the main thread. Heavy data processing, image manipulation, search indexing — anything that would cause jank.
89
+ - **OffscreenCanvas** — render in a Worker thread. The main thread stays free while complex visuals render in the background.
90
+ - **WASM** — near-native performance for computation-heavy features. Image processing, physics simulations, codecs.
91
+
92
+ ### Interact with the device
93
+ - **Web Audio API** — spatial audio, audio-reactive visualizations, sonic feedback. Requires user gesture to start.
94
+ - **Device APIs** — orientation, ambient light, geolocation. Use sparingly and always with user permission.
95
+
96
+ **NOTE**: This skill is about enhancing how an interface FEELS, not changing what a product DOES. Adding real-time collaboration, offline support, or new backend capabilities are product decisions, not UI enhancements. Focus on making existing features feel extraordinary.
97
+
98
+ ## Implement with Discipline
99
+
100
+ ### Progressive enhancement is non-negotiable
101
+
102
+ Every technique must degrade gracefully. The experience without the enhancement must still be good.
103
+
104
+ ```css
105
+ @supports (animation-timeline: scroll()) {
106
+ .hero { animation-timeline: scroll(); }
107
+ }
108
+ ```
109
+
110
+ ```javascript
111
+ if ('gpu' in navigator) { /* WebGPU */ }
112
+ else if (canvas.getContext('webgl2')) { /* WebGL2 fallback */ }
113
+ /* CSS-only fallback must still look good */
114
+ ```
115
+
116
+ ### Performance rules
117
+
118
+ - Target 60fps. If dropping below 50, simplify.
119
+ - Respect `prefers-reduced-motion` — always. Provide a beautiful static alternative.
120
+ - Lazy-initialize heavy resources (WebGL contexts, WASM modules) only when near viewport.
121
+ - Pause off-screen rendering. Kill what you can't see.
122
+ - Test on real mid-range devices, not just your development machine.
123
+
124
+ ### Polish is the difference
125
+
126
+ The gap between "cool" and "extraordinary" is in the last 20% of refinement: the easing curve on a spring animation, the timing offset in a staggered reveal, the subtle secondary motion that makes a transition feel physical. Don't ship the first version that works — ship the version that feels inevitable.
127
+
128
+ **NEVER**:
129
+ - Ignore `prefers-reduced-motion` — this is an accessibility requirement, not a suggestion
130
+ - Ship effects that cause jank on mid-range devices
131
+ - Use bleeding-edge APIs without a functional fallback
132
+ - Add sound without explicit user opt-in
133
+ - Use technical ambition to mask weak design fundamentals — fix those first with other skills
134
+ - Layer multiple competing extraordinary moments — focus creates impact, excess creates noise
135
+
136
+ ## Verify the Result
137
+
138
+ - **The wow test**: Show it to someone who hasn't seen it. Do they react?
139
+ - **The removal test**: Take it away. Does the experience feel diminished, or does nobody notice?
140
+ - **The device test**: Run it on a phone, a tablet, a Chromebook. Still smooth?
141
+ - **The accessibility test**: Enable reduced motion. Still beautiful?
142
+ - **The context test**: Does this make sense for THIS brand and audience?
143
+
144
+ Remember: "Technically extraordinary" isn't about using the newest API. It's about making an interface do something users didn't think a website could do.
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: typeset
3
+ description: Improve typography by fixing font choices, hierarchy, sizing, weight consistency, and readability. Makes text feel intentional and polished.
4
+ args:
5
+ - name: target
6
+ description: The feature or component to improve typography for (optional)
7
+ required: false
8
+ user-invokable: true
9
+ ---
10
+
11
+ Assess and improve typography that feels generic, inconsistent, or poorly structured — turning default-looking text into intentional, well-crafted type.
12
+
13
+ ## MANDATORY PREPARATION
14
+
15
+ Use the frontend-design skill — it contains design principles, anti-patterns, and the **Context Gathering Protocol**. Follow the protocol before proceeding — if no design context exists yet, you MUST run teach-impeccable first.
16
+
17
+ ---
18
+
19
+ ## Assess Current Typography
20
+
21
+ Analyze what's weak or generic about the current type:
22
+
23
+ 1. **Font choices**:
24
+ - Are we using invisible defaults? (Inter, Roboto, Arial, Open Sans, system defaults)
25
+ - Does the font match the brand personality? (A playful brand shouldn't use a corporate typeface)
26
+ - Are there too many font families? (More than 2-3 is almost always a mess)
27
+
28
+ 2. **Hierarchy**:
29
+ - Can you tell headings from body from captions at a glance?
30
+ - Are font sizes too close together? (14px, 15px, 16px = muddy hierarchy)
31
+ - Are weight contrasts strong enough? (Medium vs Regular is barely visible)
32
+
33
+ 3. **Sizing & scale**:
34
+ - Is there a consistent type scale, or are sizes arbitrary?
35
+ - Does body text meet minimum readability? (16px+)
36
+ - Is the sizing strategy appropriate for the context? (Fixed `rem` scales for app UIs; fluid `clamp()` for marketing/content page headings)
37
+
38
+ 4. **Readability**:
39
+ - Are line lengths comfortable? (45-75 characters ideal)
40
+ - Is line-height appropriate for the font and context?
41
+ - Is there enough contrast between text and background?
42
+
43
+ 5. **Consistency**:
44
+ - Are the same elements styled the same way throughout?
45
+ - Are font weights used consistently? (Not bold in one section, semibold in another for the same role)
46
+ - Is letter-spacing intentional or default everywhere?
47
+
48
+ **CRITICAL**: The goal isn't to make text "fancier" — it's to make it clearer, more readable, and more intentional. Good typography is invisible; bad typography is distracting.
49
+
50
+ ## Plan Typography Improvements
51
+
52
+ Consult the [typography reference](../frontend-design/reference/typography.md) from the frontend-design skill for detailed guidance on scales, pairing, and loading strategies.
53
+
54
+ Create a systematic plan:
55
+
56
+ - **Font selection**: Do fonts need replacing? What fits the brand/context?
57
+ - **Type scale**: Establish a modular scale (e.g., 1.25 ratio) with clear hierarchy
58
+ - **Weight strategy**: Which weights serve which roles? (Regular for body, Semibold for labels, Bold for headings — or whatever fits)
59
+ - **Spacing**: Line-heights, letter-spacing, and margins between typographic elements
60
+
61
+ ## Improve Typography Systematically
62
+
63
+ ### Font Selection
64
+
65
+ If fonts need replacing:
66
+ - Choose fonts that reflect the brand personality
67
+ - Pair with genuine contrast (serif + sans, geometric + humanist) — or use a single family in multiple weights
68
+ - Ensure web font loading doesn't cause layout shift (`font-display: swap`, metric-matched fallbacks)
69
+
70
+ ### Establish Hierarchy
71
+
72
+ Build a clear type scale:
73
+ - **5 sizes cover most needs**: caption, secondary, body, subheading, heading
74
+ - **Use a consistent ratio** between levels (1.25, 1.333, or 1.5)
75
+ - **Combine dimensions**: Size + weight + color + space for strong hierarchy — don't rely on size alone
76
+ - **App UIs**: Use a fixed `rem`-based type scale, optionally adjusted at 1-2 breakpoints. Fluid sizing undermines the spatial predictability that dense, container-based layouts need
77
+ - **Marketing / content pages**: Use fluid sizing via `clamp(min, preferred, max)` for headings and display text. Keep body text fixed
78
+
79
+ ### Fix Readability
80
+
81
+ - Set `max-width` on text containers using `ch` units (`max-width: 65ch`)
82
+ - Adjust line-height per context: tighter for headings (1.1-1.2), looser for body (1.5-1.7)
83
+ - Increase line-height slightly for light-on-dark text
84
+ - Ensure body text is at least 16px / 1rem
85
+
86
+ ### Refine Details
87
+
88
+ - Use `tabular-nums` for data tables and numbers that should align
89
+ - Apply proper `letter-spacing`: slightly open for small caps and uppercase, default or tight for large display text
90
+ - Use semantic token names (`--text-body`, `--text-heading`), not value names (`--font-16`)
91
+ - Set `font-kerning: normal` and consider OpenType features where appropriate
92
+
93
+ ### Weight Consistency
94
+
95
+ - Define clear roles for each weight and stick to them
96
+ - Don't use more than 3-4 weights (Regular, Medium, Semibold, Bold is plenty)
97
+ - Load only the weights you actually use (each weight adds to page load)
98
+
99
+ **NEVER**:
100
+ - Use more than 2-3 font families
101
+ - Pick sizes arbitrarily — commit to a scale
102
+ - Set body text below 16px
103
+ - Use decorative/display fonts for body text
104
+ - Disable browser zoom (`user-scalable=no`)
105
+ - Use `px` for font sizes — use `rem` to respect user settings
106
+ - Default to Inter/Roboto/Open Sans when personality matters
107
+ - Pair fonts that are similar but not identical (two geometric sans-serifs)
108
+
109
+ ## Verify Typography Improvements
110
+
111
+ - **Hierarchy**: Can you identify heading vs body vs caption instantly?
112
+ - **Readability**: Is body text comfortable to read in long passages?
113
+ - **Consistency**: Are same-role elements styled identically throughout?
114
+ - **Personality**: Does the typography reflect the brand?
115
+ - **Performance**: Are web fonts loading efficiently without layout shift?
116
+ - **Accessibility**: Does text meet WCAG contrast ratios? Is it zoomable to 200%?
117
+
118
+ Remember: Typography is the foundation of interface design — it carries the majority of information. Getting it right is the highest-leverage improvement you can make.