@bastani/atomic 0.6.5-0 → 0.6.6-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/ado-commit/SKILL.md +2 -0
- package/.agents/skills/ado-create-pr/SKILL.md +2 -0
- package/.agents/skills/advanced-evaluation/SKILL.md +2 -0
- package/.agents/skills/ast-grep/SKILL.md +2 -0
- package/.agents/skills/bdi-mental-states/SKILL.md +2 -0
- package/.agents/skills/bun/SKILL.md +156 -122
- package/.agents/skills/context-compression/SKILL.md +2 -0
- package/.agents/skills/context-degradation/SKILL.md +2 -0
- package/.agents/skills/context-fundamentals/SKILL.md +2 -0
- package/.agents/skills/context-optimization/SKILL.md +2 -0
- package/.agents/skills/create-spec/SKILL.md +2 -0
- package/.agents/skills/docx/SKILL.md +2 -0
- package/.agents/skills/evaluation/SKILL.md +2 -0
- package/.agents/skills/explain-code/SKILL.md +2 -0
- package/.agents/skills/filesystem-context/SKILL.md +2 -0
- package/.agents/skills/find-skills/SKILL.md +2 -0
- package/.agents/skills/gh-commit/SKILL.md +2 -0
- package/.agents/skills/gh-create-pr/SKILL.md +2 -0
- package/.agents/skills/hosted-agents/SKILL.md +2 -0
- package/.agents/skills/impeccable/SKILL.md +117 -304
- package/.agents/skills/impeccable/agents/openai.yaml +4 -0
- package/.agents/skills/{adapt/SKILL.md → impeccable/reference/adapt.md} +2 -11
- package/.agents/skills/{animate/SKILL.md → impeccable/reference/animate.md} +15 -15
- package/.agents/skills/{audit/SKILL.md → impeccable/reference/audit.md} +8 -22
- package/.agents/skills/{bolder/SKILL.md → impeccable/reference/bolder.md} +9 -13
- package/.agents/skills/impeccable/reference/brand.md +114 -0
- package/.agents/skills/{clarify/SKILL.md → impeccable/reference/clarify.md} +2 -11
- package/.agents/skills/{colorize/SKILL.md → impeccable/reference/colorize.md} +23 -12
- package/.agents/skills/impeccable/reference/craft.md +152 -29
- package/.agents/skills/{critique/SKILL.md → impeccable/reference/critique.md} +25 -37
- package/.agents/skills/{delight/SKILL.md → impeccable/reference/delight.md} +9 -11
- package/.agents/skills/{distill/SKILL.md → impeccable/reference/distill.md} +2 -13
- package/.agents/skills/impeccable/reference/document.md +427 -0
- package/.agents/skills/impeccable/reference/extract.md +1 -1
- package/.agents/skills/{harden/SKILL.md → impeccable/reference/harden.md} +1 -43
- package/.agents/skills/{layout/SKILL.md → impeccable/reference/layout.md} +27 -11
- package/.agents/skills/impeccable/reference/live.md +594 -0
- package/.agents/skills/impeccable/reference/motion-design.md +12 -2
- package/.agents/skills/impeccable/reference/onboard.md +234 -0
- package/.agents/skills/{optimize/SKILL.md → impeccable/reference/optimize.md} +4 -12
- package/.agents/skills/{overdrive/SKILL.md → impeccable/reference/overdrive.md} +9 -21
- package/.agents/skills/{critique → impeccable}/reference/personas.md +1 -1
- package/.agents/skills/{polish/SKILL.md → impeccable/reference/polish.md} +31 -23
- package/.agents/skills/impeccable/reference/product.md +62 -0
- package/.agents/skills/{quieter/SKILL.md → impeccable/reference/quieter.md} +7 -11
- package/.agents/skills/impeccable/reference/shape.md +151 -0
- package/.agents/skills/impeccable/reference/teach.md +156 -0
- package/.agents/skills/{typeset/SKILL.md → impeccable/reference/typeset.md} +19 -11
- package/.agents/skills/impeccable/reference/typography.md +31 -14
- package/.agents/skills/impeccable/scripts/cleanup-deprecated.mjs +87 -17
- package/.agents/skills/impeccable/scripts/command-metadata.json +94 -0
- package/.agents/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/.agents/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/.agents/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/.agents/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/.agents/skills/impeccable/scripts/live-browser.js +4781 -0
- package/.agents/skills/impeccable/scripts/live-inject.mjs +445 -0
- package/.agents/skills/impeccable/scripts/live-poll.mjs +186 -0
- package/.agents/skills/impeccable/scripts/live-server.mjs +694 -0
- package/.agents/skills/impeccable/scripts/live-wrap.mjs +571 -0
- package/.agents/skills/impeccable/scripts/live.mjs +247 -0
- package/.agents/skills/impeccable/scripts/load-context.mjs +141 -0
- package/.agents/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/.agents/skills/impeccable/scripts/pin.mjs +214 -0
- package/.agents/skills/init/SKILL.md +2 -0
- package/.agents/skills/liteparse/SKILL.md +1 -0
- package/.agents/skills/memory-systems/SKILL.md +2 -0
- package/.agents/skills/multi-agent-patterns/SKILL.md +2 -0
- package/.agents/skills/opentui/SKILL.md +1 -0
- package/.agents/skills/pdf/SKILL.md +2 -0
- package/.agents/skills/playwright-cli/SKILL.md +51 -5
- package/.agents/skills/playwright-cli/references/playwright-tests.md +1 -1
- package/.agents/skills/playwright-cli/references/running-code.md +10 -0
- package/.agents/skills/playwright-cli/references/session-management.md +56 -0
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/.agents/skills/playwright-cli/references/test-generation.md +49 -3
- package/.agents/skills/pptx/SKILL.md +2 -0
- package/.agents/skills/project-development/SKILL.md +2 -0
- package/.agents/skills/prompt-engineer/SKILL.md +2 -0
- package/.agents/skills/research-codebase/SKILL.md +2 -0
- package/.agents/skills/ripgrep/SKILL.md +2 -0
- package/.agents/skills/skill-creator/LICENSE.txt +1 -1
- package/.agents/skills/skill-creator/SKILL.md +2 -0
- package/.agents/skills/sl-commit/SKILL.md +2 -0
- package/.agents/skills/sl-submit-diff/SKILL.md +2 -0
- package/.agents/skills/tdd/SKILL.md +4 -0
- package/.agents/skills/tool-design/SKILL.md +2 -0
- package/.agents/skills/typescript-advanced-types/SKILL.md +2 -1
- package/.agents/skills/typescript-expert/SKILL.md +7 -1
- package/.agents/skills/typescript-react-reviewer/SKILL.md +2 -1
- package/.agents/skills/workflow-creator/SKILL.md +75 -72
- package/.agents/skills/workflow-creator/references/session-config.md +48 -1
- package/.agents/skills/xlsx/SKILL.md +2 -0
- package/.opencode/opencode.json +4 -2
- package/dist/sdk/runtime/executor.d.ts +8 -0
- package/dist/sdk/runtime/executor.d.ts.map +1 -1
- package/dist/sdk/runtime/port-discovery.d.ts +71 -0
- package/dist/sdk/runtime/port-discovery.d.ts.map +1 -0
- package/dist/sdk/runtime/tmux.d.ts +10 -0
- package/dist/sdk/runtime/tmux.d.ts.map +1 -1
- package/dist/sdk/types.d.ts +1 -0
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/open-claude-design/opencode/index.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +15 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +1 -1
- package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/sdk/runtime/executor.test.ts +254 -1
- package/src/sdk/runtime/executor.ts +135 -89
- package/src/sdk/runtime/port-discovery.test.ts +573 -0
- package/src/sdk/runtime/port-discovery.ts +496 -0
- package/src/sdk/runtime/tmux.ts +16 -0
- package/src/sdk/types.ts +1 -0
- package/src/sdk/workflows/builtin/deep-research-codebase/opencode/index.ts +24 -6
- package/src/sdk/workflows/builtin/open-claude-design/opencode/index.ts +52 -13
- package/src/sdk/workflows/builtin/ralph/claude/index.ts +31 -3
- package/src/sdk/workflows/builtin/ralph/copilot/index.ts +16 -0
- package/src/sdk/workflows/builtin/ralph/helpers/prompts.ts +70 -3
- package/src/sdk/workflows/builtin/ralph/opencode/index.ts +50 -6
- package/.agents/skills/shape/SKILL.md +0 -96
- /package/.agents/skills/{critique → impeccable}/reference/cognitive-load.md +0 -0
- /package/.agents/skills/{critique → impeccable}/reference/heuristics-scoring.md +0 -0
|
@@ -1,365 +1,178 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: impeccable
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
argument-hint: "[craft|teach|extract]"
|
|
7
|
-
license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution.
|
|
3
|
+
description: Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
|
|
4
|
+
metadata:
|
|
5
|
+
provider: atomic
|
|
8
6
|
---
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
BEFORE doing any design work, run this one-time maintenance step. Tell the user:
|
|
8
|
+
Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
## Setup (non-optional)
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
Before any design work or file edits, pass these gates. Skipping them produces generic output that ignores the project.
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
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.
|
|
27
|
-
|
|
28
|
-
## Context Gathering Protocol
|
|
29
|
-
|
|
30
|
-
Design skills produce generic output without project context. You MUST have confirmed design context before doing any design work.
|
|
31
|
-
|
|
32
|
-
**Required context** (every design skill needs at minimum):
|
|
33
|
-
- **Target audience**: Who uses this product and in what context?
|
|
34
|
-
- **Use cases**: What jobs are they trying to get done?
|
|
35
|
-
- **Brand personality/tone**: How should the interface feel?
|
|
14
|
+
| Gate | Required check | If fail |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| Context | The PRODUCT.md / DESIGN.md loader result is known from `node .agents/skills/impeccable/scripts/load-context.mjs`. | Run the loader before continuing. |
|
|
17
|
+
| Product | PRODUCT.md exists and is not empty or placeholder (`[TODO]` markers, <200 chars). | Run `$impeccable teach`, refresh context, then resume. Never synthesize PRODUCT.md from the user's original prompt alone. |
|
|
18
|
+
| Command | The matching command reference is loaded when a sub-command is used. | Load the reference before continuing. |
|
|
19
|
+
| Craft | `$impeccable craft` has a user-confirmed shape brief for this task. `teach` / PRODUCT.md never counts as shape. | Run `$impeccable shape` and wait for explicit brief confirmation. |
|
|
20
|
+
| Image | Required visual probes / mocks are generated or skipped with a reason. | Resolve the image-generation gate in `shape.md` or `craft.md` before code. |
|
|
21
|
+
| Mutation | All active gates above pass. | Do not edit project files yet. |
|
|
36
22
|
|
|
37
|
-
|
|
23
|
+
Codex-style agents must state this before editing files:
|
|
38
24
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
1. **Check current instructions (instant)**: If your loaded instructions already contain a **Design Context** section, proceed immediately.
|
|
43
|
-
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.
|
|
44
|
-
3. **Run impeccable teach (REQUIRED)**: If neither source has context, you MUST run /impeccable teach NOW before doing anything else. Do NOT skip this step. Do NOT attempt to infer context from the codebase instead.
|
|
25
|
+
```text
|
|
26
|
+
IMPECCABLE_PREFLIGHT: context=pass product=pass command_reference=pass shape=pass|not_required image_gate=pass|skipped:<reason> mutation=open
|
|
27
|
+
```
|
|
45
28
|
|
|
46
|
-
|
|
29
|
+
For `$impeccable craft`, `shape=pass` is only valid after a separate user response approving the shape design brief, or when the user provided an already-confirmed brief in the request. Do not mark `shape=pass` after writing PRODUCT.md, summarizing assumptions, or drafting an unconfirmed brief yourself.
|
|
47
30
|
|
|
48
|
-
|
|
31
|
+
Other harnesses should follow the same checklist when they can expose this state.
|
|
49
32
|
|
|
50
|
-
|
|
51
|
-
- **Purpose**: What problem does this interface solve? Who uses it?
|
|
52
|
-
- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
|
|
53
|
-
- **Constraints**: Technical requirements (framework, performance, accessibility).
|
|
54
|
-
- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
|
|
33
|
+
### 1. Context gathering
|
|
55
34
|
|
|
56
|
-
|
|
35
|
+
Two files, case-insensitive. The loader looks at the project root by default and falls back to `.agents/context/` and `docs/` if the root is clean. Override with `IMPECCABLE_CONTEXT_DIR=path/to/dir` (absolute or relative to cwd).
|
|
57
36
|
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
- Visually striking and memorable
|
|
61
|
-
- Cohesive with a clear aesthetic point-of-view
|
|
62
|
-
- Meticulously refined in every detail
|
|
37
|
+
- **PRODUCT.md** — required. Users, brand, tone, anti-references, strategic principles.
|
|
38
|
+
- **DESIGN.md** — optional, strongly recommended. Colors, typography, elevation, components.
|
|
63
39
|
|
|
64
|
-
|
|
40
|
+
Load both in one call:
|
|
65
41
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
Choose fonts that are beautiful, unique, and interesting. Pair a distinctive display font with a refined body font.
|
|
70
|
-
|
|
71
|
-
<typography_principles>
|
|
72
|
-
Always apply these — do not consult a reference, just do them:
|
|
73
|
-
|
|
74
|
-
- Use a modular type scale with fluid sizing (clamp) for headings on marketing/content pages. Use fixed `rem` scales for app UIs and dashboards (no major design system uses fluid type in product UI).
|
|
75
|
-
- Use fewer sizes with more contrast. A 5-step scale with at least a 1.25 ratio between steps creates clearer hierarchy than 8 sizes that are 1.1× apart.
|
|
76
|
-
- Line-height scales inversely with line length. Narrow columns want tighter leading, wide columns want more. For light text on dark backgrounds, ADD 0.05-0.1 to your normal line-height — light type reads as lighter weight and needs more breathing room.
|
|
77
|
-
- Cap line length at ~65-75ch. Body text wider than that is fatiguing.
|
|
78
|
-
</typography_principles>
|
|
79
|
-
|
|
80
|
-
<font_selection_procedure>
|
|
81
|
-
DO THIS BEFORE TYPING ANY FONT NAME.
|
|
82
|
-
|
|
83
|
-
The model's natural failure mode is "I was told not to use Inter, so I will pick my next favorite font, which becomes the new monoculture." Avoid this by performing the following procedure on every project, in order:
|
|
84
|
-
|
|
85
|
-
Step 1. Read the brief once. Write down 3 concrete words for the brand voice (e.g., "warm and mechanical and opinionated", "calm and clinical and careful", "fast and dense and unimpressed", "handmade and a little weird"). NOT "modern" or "elegant" — those are dead categories.
|
|
86
|
-
|
|
87
|
-
Step 2. List the 3 fonts you would normally reach for given those words. Write them down. They are most likely from this list:
|
|
88
|
-
|
|
89
|
-
<reflex_fonts_to_reject>
|
|
90
|
-
Fraunces
|
|
91
|
-
Newsreader
|
|
92
|
-
Lora
|
|
93
|
-
Crimson
|
|
94
|
-
Crimson Pro
|
|
95
|
-
Crimson Text
|
|
96
|
-
Playfair Display
|
|
97
|
-
Cormorant
|
|
98
|
-
Cormorant Garamond
|
|
99
|
-
Syne
|
|
100
|
-
IBM Plex Mono
|
|
101
|
-
IBM Plex Sans
|
|
102
|
-
IBM Plex Serif
|
|
103
|
-
Space Mono
|
|
104
|
-
Space Grotesk
|
|
105
|
-
Inter
|
|
106
|
-
DM Sans
|
|
107
|
-
DM Serif Display
|
|
108
|
-
DM Serif Text
|
|
109
|
-
Outfit
|
|
110
|
-
Plus Jakarta Sans
|
|
111
|
-
Instrument Sans
|
|
112
|
-
Instrument Serif
|
|
113
|
-
</reflex_fonts_to_reject>
|
|
114
|
-
|
|
115
|
-
Reject every font that appears in the reflex_fonts_to_reject list. They are your training-data defaults and they create monoculture across projects.
|
|
116
|
-
|
|
117
|
-
Step 3. Browse a font catalog with the 3 brand words in mind. Sources: Google Fonts, Pangram Pangram, Future Fonts, Adobe Fonts, ABC Dinamo, Klim Type Foundry, Velvetyne. Look for something that fits the brand as a *physical object* — a museum exhibit caption, a hand-painted shop sign, a 1970s mainframe terminal manual, a fabric label on the inside of a coat, a children's book printed on cheap newsprint. Reject the first thing that "looks designy" — that's the trained reflex too. Keep looking.
|
|
118
|
-
|
|
119
|
-
Step 4. Cross-check the result. The right font for an "elegant" brief is NOT necessarily a serif. The right font for a "technical" brief is NOT necessarily a sans-serif. The right font for a "warm" brief is NOT Fraunces. If your final pick lines up with your reflex pattern, go back to Step 3.
|
|
120
|
-
</font_selection_procedure>
|
|
121
|
-
|
|
122
|
-
<typography_rules>
|
|
123
|
-
DO use a modular type scale with fluid sizing (clamp) on headings.
|
|
124
|
-
DO vary font weights and sizes to create clear visual hierarchy.
|
|
125
|
-
DO vary your font choices across projects. If you used a serif display font on the last project, look for a sans, monospace, or display face on this one.
|
|
126
|
-
|
|
127
|
-
DO NOT use overused fonts like Inter, Roboto, Arial, Open Sans, or system defaults — but also do not simply switch to your second-favorite. Every font in the reflex_fonts_to_reject list above is banned. Look further.
|
|
128
|
-
DO NOT use monospace typography as lazy shorthand for "technical/developer" vibes.
|
|
129
|
-
DO NOT put large icons with rounded corners above every heading. They rarely add value and make sites look templated.
|
|
130
|
-
DO NOT use only one font family for the entire page. Pair a distinctive display font with a refined body font.
|
|
131
|
-
DO NOT use a flat type hierarchy where sizes are too close together. Aim for at least a 1.25 ratio between steps.
|
|
132
|
-
DO NOT set long body passages in uppercase. Reserve all-caps for short labels and headings.
|
|
133
|
-
</typography_rules>
|
|
134
|
-
|
|
135
|
-
### Color & Theme
|
|
136
|
-
→ *Consult [color reference](reference/color-and-contrast.md) for the deeper material on contrast, accessibility, and palette construction.*
|
|
137
|
-
|
|
138
|
-
Commit to a cohesive palette. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
|
|
139
|
-
|
|
140
|
-
<color_principles>
|
|
141
|
-
Always apply these — do not consult a reference, just do them:
|
|
142
|
-
|
|
143
|
-
- Use OKLCH, not HSL. OKLCH is perceptually uniform: equal steps in lightness *look* equal, which HSL does not deliver. As you move toward white or black, REDUCE chroma — high chroma at extreme lightness looks garish. A light blue at 85% lightness wants ~0.08 chroma, not the 0.15 of your base color.
|
|
144
|
-
- Tint your neutrals toward your brand hue. Even a chroma of 0.005-0.01 is perceptible and creates subconscious cohesion between brand color and UI surfaces. The hue you tint toward should come from THIS brand, not from a "warm = friendly" or "cool = tech" formula. Pick the brand's actual hue first, then tint everything toward it.
|
|
145
|
-
- The 60-30-10 rule is about visual *weight*, not pixel count. 60% neutral / surface, 30% secondary text and borders, 10% accent. Accents work BECAUSE they're rare. Overuse kills their power.
|
|
146
|
-
</color_principles>
|
|
147
|
-
|
|
148
|
-
<theme_selection>
|
|
149
|
-
Theme (light vs dark) should be DERIVED from audience and viewing context, not picked from a default. Read the brief and ask: when is this product used, by whom, in what physical setting?
|
|
150
|
-
|
|
151
|
-
- A perp DEX consumed during fast trading sessions → dark
|
|
152
|
-
- A hospital portal consumed by anxious patients on phones late at night → light
|
|
153
|
-
- A children's reading app → light
|
|
154
|
-
- A vintage motorcycle forum where users sit in their garage at 9pm → dark
|
|
155
|
-
- An observability dashboard for SREs in a dark office → dark
|
|
156
|
-
- A wedding planning checklist for couples on a Sunday morning → light
|
|
157
|
-
- A music player app for headphone listening at night → dark
|
|
158
|
-
- A food magazine homepage browsed during a coffee break → light
|
|
159
|
-
|
|
160
|
-
Do not default everything to light "to play it safe." Do not default everything to dark "to look cool." Both defaults are the lazy reflex. The correct theme is the one the actual user wants in their actual context.
|
|
161
|
-
</theme_selection>
|
|
162
|
-
|
|
163
|
-
<color_rules>
|
|
164
|
-
DO use modern CSS color functions (oklch, color-mix, light-dark) for perceptually uniform, maintainable palettes.
|
|
165
|
-
DO tint your neutrals toward your brand hue. Even a subtle hint creates subconscious cohesion.
|
|
166
|
-
|
|
167
|
-
DO NOT use gray text on colored backgrounds; it looks washed out. Use a shade of the background color instead.
|
|
168
|
-
DO NOT use pure black (#000) or pure white (#fff). Always tint; pure black/white never appears in nature.
|
|
169
|
-
DO NOT use the AI color palette: cyan-on-dark, purple-to-blue gradients, neon accents on dark backgrounds.
|
|
170
|
-
DO NOT use gradient text for impact — see <absolute_bans> below for the strict definition. Solid colors only for text.
|
|
171
|
-
DO NOT default to dark mode with glowing accents. It looks "cool" without requiring actual design decisions.
|
|
172
|
-
DO NOT default to light mode "to be safe" either. The point is to choose, not to retreat to a safe option.
|
|
173
|
-
</color_rules>
|
|
174
|
-
|
|
175
|
-
### Layout & Space
|
|
176
|
-
→ *Consult [spatial reference](reference/spatial-design.md) for the deeper material on grids, container queries, and optical adjustments.*
|
|
177
|
-
|
|
178
|
-
Create visual rhythm through varied spacing, not the same padding everywhere. Embrace asymmetry and unexpected compositions. Break the grid intentionally for emphasis.
|
|
179
|
-
|
|
180
|
-
<spatial_principles>
|
|
181
|
-
Always apply these — do not consult a reference, just do them:
|
|
182
|
-
|
|
183
|
-
- Use a 4pt spacing scale with semantic token names (`--space-sm`, `--space-md`), not pixel-named (`--spacing-8`). Scale: 4, 8, 12, 16, 24, 32, 48, 64, 96. 8pt is too coarse — you'll often want 12px between two values.
|
|
184
|
-
- Use `gap` instead of margins for sibling spacing. It eliminates margin collapse and the cleanup hacks that come with it.
|
|
185
|
-
- Vary spacing for hierarchy. A heading with extra space above it reads as more important — make use of that. Don't apply the same padding everywhere.
|
|
186
|
-
- Self-adjusting grid pattern: `grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))` is the breakpoint-free responsive grid for card-style content.
|
|
187
|
-
- Container queries are for components, viewport queries are for page layout. A card in a sidebar should adapt to the sidebar's width, not the viewport's.
|
|
188
|
-
</spatial_principles>
|
|
189
|
-
|
|
190
|
-
<spatial_rules>
|
|
191
|
-
DO create visual rhythm through varied spacing: tight groupings, generous separations.
|
|
192
|
-
DO use fluid spacing with clamp() that breathes on larger screens.
|
|
193
|
-
DO use asymmetry and unexpected compositions; break the grid intentionally for emphasis.
|
|
194
|
-
|
|
195
|
-
DO NOT wrap everything in cards. Not everything needs a container.
|
|
196
|
-
DO NOT nest cards inside cards. Visual noise; flatten the hierarchy.
|
|
197
|
-
DO NOT use identical card grids (same-sized cards with icon + heading + text, repeated endlessly).
|
|
198
|
-
DO NOT use the hero metric layout template (big number, small label, supporting stats, gradient accent).
|
|
199
|
-
DO NOT center everything. Left-aligned text with asymmetric layouts feels more designed.
|
|
200
|
-
DO NOT use the same spacing everywhere. Without rhythm, layouts feel monotonous.
|
|
201
|
-
DO NOT let body text wrap beyond ~80 characters per line. Add a max-width like 65–75ch so the eye can track easily.
|
|
202
|
-
</spatial_rules>
|
|
203
|
-
|
|
204
|
-
### Visual Details
|
|
205
|
-
|
|
206
|
-
<absolute_bans>
|
|
207
|
-
These CSS patterns are NEVER acceptable. They are the most recognizable AI design tells. Match-and-refuse: if you find yourself about to write any of these, stop and rewrite the element with a different structure entirely.
|
|
208
|
-
|
|
209
|
-
BAN 1: Side-stripe borders on cards/list items/callouts/alerts
|
|
210
|
-
- PATTERN: `border-left:` or `border-right:` with width greater than 1px
|
|
211
|
-
- INCLUDES: hard-coded colors AND CSS variables
|
|
212
|
-
- FORBIDDEN: `border-left: 3px solid red`, `border-left: 4px solid #ff0000`, `border-left: 4px solid var(--color-warning)`, `border-left: 5px solid oklch(...)`, etc.
|
|
213
|
-
- WHY: this is the single most overused "design touch" in admin, dashboard, and medical UIs. It never looks intentional regardless of color, radius, opacity, or whether the variable name is "primary" or "warning" or "accent."
|
|
214
|
-
- REWRITE: use a different element structure entirely. Do not just swap to box-shadow inset. Reach for full borders, background tints, leading numbers/icons, or no visual indicator at all.
|
|
215
|
-
|
|
216
|
-
BAN 2: Gradient text
|
|
217
|
-
- PATTERN: `background-clip: text` (or `-webkit-background-clip: text`) combined with a gradient background
|
|
218
|
-
- FORBIDDEN: any combination that makes text fill come from a `linear-gradient`, `radial-gradient`, or `conic-gradient`
|
|
219
|
-
- WHY: gradient text is decorative rather than meaningful and is one of the top three AI design tells
|
|
220
|
-
- REWRITE: use a single solid color for text. If you want emphasis, use weight or size, not gradient fill.
|
|
221
|
-
</absolute_bans>
|
|
222
|
-
|
|
223
|
-
DO: Use intentional, purposeful decorative elements that reinforce brand.
|
|
224
|
-
DO NOT: Use border-left or border-right greater than 1px as a colored accent stripe on cards, list items, callouts, or alerts. See <absolute_bans> above for the strict CSS pattern.
|
|
225
|
-
DO NOT: Use glassmorphism everywhere (blur effects, glass cards, glow borders used decoratively rather than purposefully).
|
|
226
|
-
DO NOT: Use sparklines as decoration. Tiny charts that look sophisticated but convey nothing meaningful.
|
|
227
|
-
DO NOT: Use rounded rectangles with generic drop shadows. Safe, forgettable, could be any AI output.
|
|
228
|
-
DO NOT: Use modals unless there's truly no better alternative. Modals are lazy.
|
|
229
|
-
|
|
230
|
-
### Motion
|
|
231
|
-
→ *Consult [motion reference](reference/motion-design.md) for timing, easing, and reduced motion.*
|
|
42
|
+
```bash
|
|
43
|
+
node .agents/skills/impeccable/scripts/load-context.mjs
|
|
44
|
+
```
|
|
232
45
|
|
|
233
|
-
|
|
46
|
+
Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. The output's `contextDir` field tells you where the files were resolved from.
|
|
234
47
|
|
|
235
|
-
|
|
236
|
-
**DO**: Use exponential easing (ease-out-quart/quint/expo) for natural deceleration
|
|
237
|
-
**DO**: For height animations, use grid-template-rows transitions instead of animating height directly
|
|
238
|
-
**DON'T**: Animate layout properties (width, height, padding, margin). Use transform and opacity only
|
|
239
|
-
**DON'T**: Use bounce or elastic easing. They feel dated and tacky; real objects decelerate smoothly
|
|
48
|
+
If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran `$impeccable teach` or `$impeccable document` (they rewrite the files), or the user manually edited one.
|
|
240
49
|
|
|
241
|
-
|
|
242
|
-
→ *Consult [interaction reference](reference/interaction-design.md) for forms, focus, and loading patterns.*
|
|
50
|
+
`$impeccable live` already warms context via `live.mjs` — if you've run `live.mjs`, don't also run `load-context.mjs` this session.
|
|
243
51
|
|
|
244
|
-
|
|
52
|
+
If PRODUCT.md is missing, empty, or placeholder (`[TODO]` markers, <200 chars): run `$impeccable teach`, then resume the user's original task with the fresh context. If the original task was `$impeccable craft`, resume into `$impeccable shape` before any implementation work.
|
|
245
53
|
|
|
246
|
-
|
|
247
|
-
**DO**: Design empty states that teach the interface, not just say "nothing here"
|
|
248
|
-
**DO**: Make every interactive surface feel intentional and responsive
|
|
249
|
-
**DON'T**: Repeat the same information (redundant headers, intros that restate the heading)
|
|
250
|
-
**DON'T**: Make every button primary. Use ghost buttons, text links, secondary styles; hierarchy matters
|
|
54
|
+
If DESIGN.md is missing: nudge once per session (*"Run `$impeccable document` for more on-brand output"*), then proceed.
|
|
251
55
|
|
|
252
|
-
###
|
|
253
|
-
→ *Consult [responsive reference](reference/responsive-design.md) for mobile-first, fluid design, and container queries.*
|
|
56
|
+
### 2. Register
|
|
254
57
|
|
|
255
|
-
|
|
256
|
-
**DO**: Adapt the interface for different contexts, not just shrink it
|
|
257
|
-
**DON'T**: Hide critical functionality on mobile. Adapt the interface, don't amputate it
|
|
58
|
+
Every design task is **brand** (marketing, landing, campaign, long-form content, portfolio — design IS the product) or **product** (app UI, admin, dashboard, tool — design SERVES the product).
|
|
258
59
|
|
|
259
|
-
|
|
260
|
-
→ *Consult [ux-writing reference](reference/ux-writing.md) for labels, errors, and empty states.*
|
|
60
|
+
Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) `register` field in PRODUCT.md. First match wins.
|
|
261
61
|
|
|
262
|
-
|
|
263
|
-
**DON'T**: Repeat information users can already see
|
|
62
|
+
If PRODUCT.md lacks the `register` field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run `$impeccable teach` to add the field explicitly.
|
|
264
63
|
|
|
265
|
-
|
|
64
|
+
Load the matching reference: [reference/brand.md](reference/brand.md) or [reference/product.md](reference/product.md). The shared design laws below apply to both.
|
|
266
65
|
|
|
267
|
-
##
|
|
66
|
+
## Shared design laws
|
|
268
67
|
|
|
269
|
-
|
|
68
|
+
Apply to every design, both registers. Match implementation complexity to the aesthetic vision — maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. GPT is capable of extraordinary work — don't hold back.
|
|
270
69
|
|
|
271
|
-
|
|
70
|
+
### Color
|
|
272
71
|
|
|
273
|
-
|
|
72
|
+
- Use OKLCH. Reduce chroma as lightness approaches 0 or 100 — high chroma at extremes looks garish.
|
|
73
|
+
- Never use `#000` or `#fff`. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough).
|
|
74
|
+
- Pick a **color strategy** before picking colors. Four steps on the commitment axis:
|
|
75
|
+
- **Restrained** — tinted neutrals + one accent ≤10%. Product default; brand minimalism.
|
|
76
|
+
- **Committed** — one saturated color carries 30–60% of the surface. Brand default for identity-driven pages.
|
|
77
|
+
- **Full palette** — 3–4 named roles, each used deliberately. Brand campaigns; product data viz.
|
|
78
|
+
- **Drenched** — the surface IS the color. Brand heroes, campaign pages.
|
|
79
|
+
- The "one accent ≤10%" rule is Restrained only. Committed / Full palette / Drenched exceed it on purpose. Don't collapse every design to Restrained by reflex.
|
|
274
80
|
|
|
275
|
-
|
|
81
|
+
### Theme
|
|
276
82
|
|
|
277
|
-
|
|
83
|
+
Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."
|
|
278
84
|
|
|
279
|
-
|
|
85
|
+
Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough — add detail until it does.
|
|
280
86
|
|
|
281
|
-
|
|
87
|
+
"Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.
|
|
282
88
|
|
|
283
|
-
|
|
89
|
+
### Typography
|
|
284
90
|
|
|
285
|
-
|
|
91
|
+
- Cap body line length at 65–75ch.
|
|
92
|
+
- Hierarchy through scale + weight contrast (≥1.25 ratio between steps). Avoid flat scales.
|
|
286
93
|
|
|
287
|
-
|
|
94
|
+
### Layout
|
|
288
95
|
|
|
289
|
-
|
|
96
|
+
- Vary spacing for rhythm. Same padding everywhere is monotony.
|
|
97
|
+
- Cards are the lazy answer. Use them only when they're truly the best affordance. Nested cards are always wrong.
|
|
98
|
+
- Don't wrap everything in a container. Most things don't need one.
|
|
290
99
|
|
|
291
|
-
|
|
100
|
+
### Motion
|
|
292
101
|
|
|
293
|
-
|
|
102
|
+
- Don't animate CSS layout properties.
|
|
103
|
+
- Ease out with exponential curves (ease-out-quart / quint / expo). No bounce, no elastic.
|
|
294
104
|
|
|
295
|
-
|
|
105
|
+
### Absolute bans
|
|
296
106
|
|
|
297
|
-
|
|
107
|
+
Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.
|
|
298
108
|
|
|
299
|
-
|
|
109
|
+
- **Side-stripe borders.** `border-left` or `border-right` greater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing.
|
|
110
|
+
- **Gradient text.** `background-clip: text` combined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size.
|
|
111
|
+
- **Glassmorphism as default.** Blurs and glass cards used decoratively. Rare and purposeful, or nothing.
|
|
112
|
+
- **The hero-metric template.** Big number, small label, supporting stats, gradient accent. SaaS cliché.
|
|
113
|
+
- **Identical card grids.** Same-sized cards with icon + heading + text, repeated endlessly.
|
|
114
|
+
- **Modal as first thought.** Modals are usually laziness. Exhaust inline / progressive alternatives first.
|
|
300
115
|
|
|
301
|
-
|
|
302
|
-
- **Package.json / config files**: Tech stack, dependencies, existing design libraries
|
|
303
|
-
- **Existing components**: Current design patterns, spacing, typography in use
|
|
304
|
-
- **Brand assets**: Logos, favicons, color values already defined
|
|
305
|
-
- **Design tokens / CSS variables**: Existing color palettes, font stacks, spacing scales
|
|
306
|
-
- **Any style guides or brand documentation**
|
|
116
|
+
### Copy
|
|
307
117
|
|
|
308
|
-
|
|
118
|
+
- Every word earns its place. No restated headings, no intros that repeat the title.
|
|
119
|
+
- **No em dashes.** Use commas, colons, semicolons, periods, or parentheses. Also not `--`.
|
|
309
120
|
|
|
310
|
-
###
|
|
121
|
+
### The AI slop test
|
|
311
122
|
|
|
312
|
-
|
|
123
|
+
If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.
|
|
313
124
|
|
|
314
|
-
|
|
315
|
-
- Who uses this? What's their context when using it?
|
|
316
|
-
- What job are they trying to get done?
|
|
317
|
-
- What emotions should the interface evoke? (confidence, delight, calm, urgency, etc.)
|
|
125
|
+
**Category-reflex check.** Run at two altitudes — the second one catches what the first one misses.
|
|
318
126
|
|
|
319
|
-
|
|
320
|
-
-
|
|
321
|
-
- Any reference sites or apps that capture the right feel? What specifically about them?
|
|
322
|
-
- What should this explicitly NOT look like? Any anti-references?
|
|
127
|
+
- **First-order:** if someone could guess the theme + palette from the category alone — "observability → dark blue", "healthcare → white + teal", "finance → navy + gold", "crypto → neon on black" — it's the first training-data reflex. Rework the scene sentence and color strategy until the answer isn't obvious from the domain.
|
|
128
|
+
- **Second-order:** if someone could guess the aesthetic family from category-plus-anti-references — "AI workflow tool that's not SaaS-cream → editorial-typographic", "fintech that's not navy-and-gold → terminal-native dark mode" — it's the trap one tier deeper. The first reflex was avoided; the second wasn't. Rework until both answers are not obvious. The brand register's [reflex-reject aesthetic lanes](reference/brand.md) list catches the currently-saturated families.
|
|
323
129
|
|
|
324
|
-
|
|
325
|
-
- Any strong preferences for visual direction? (minimal, bold, elegant, playful, technical, organic, etc.)
|
|
326
|
-
- Light mode, dark mode, or both?
|
|
327
|
-
- Any colors that must be used or avoided?
|
|
130
|
+
## Commands
|
|
328
131
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
132
|
+
| Command | Category | Description | Reference |
|
|
133
|
+
|---|---|---|---|
|
|
134
|
+
| `craft [feature]` | Build | Shape, then build a feature end-to-end | [reference/craft.md](reference/craft.md) |
|
|
135
|
+
| `shape [feature]` | Build | Plan UX/UI before writing code | [reference/shape.md](reference/shape.md) |
|
|
136
|
+
| `teach` | Build | Set up PRODUCT.md and DESIGN.md context | [reference/teach.md](reference/teach.md) |
|
|
137
|
+
| `document` | Build | Generate DESIGN.md from existing project code | [reference/document.md](reference/document.md) |
|
|
138
|
+
| `extract [target]` | Build | Pull reusable tokens and components into design system | [reference/extract.md](reference/extract.md) |
|
|
139
|
+
| `critique [target]` | Evaluate | UX design review with heuristic scoring | [reference/critique.md](reference/critique.md) |
|
|
140
|
+
| `audit [target]` | Evaluate | Technical quality checks (a11y, perf, responsive) | [reference/audit.md](reference/audit.md) |
|
|
141
|
+
| `polish [target]` | Refine | Final quality pass before shipping | [reference/polish.md](reference/polish.md) |
|
|
142
|
+
| `bolder [target]` | Refine | Amplify safe or bland designs | [reference/bolder.md](reference/bolder.md) |
|
|
143
|
+
| `quieter [target]` | Refine | Tone down aggressive or overstimulating designs | [reference/quieter.md](reference/quieter.md) |
|
|
144
|
+
| `distill [target]` | Refine | Strip to essence, remove complexity | [reference/distill.md](reference/distill.md) |
|
|
145
|
+
| `harden [target]` | Refine | Production-ready: errors, i18n, edge cases | [reference/harden.md](reference/harden.md) |
|
|
146
|
+
| `onboard [target]` | Refine | Design first-run flows, empty states, activation | [reference/onboard.md](reference/onboard.md) |
|
|
147
|
+
| `animate [target]` | Enhance | Add purposeful animations and motion | [reference/animate.md](reference/animate.md) |
|
|
148
|
+
| `colorize [target]` | Enhance | Add strategic color to monochromatic UIs | [reference/colorize.md](reference/colorize.md) |
|
|
149
|
+
| `typeset [target]` | Enhance | Improve typography hierarchy and fonts | [reference/typeset.md](reference/typeset.md) |
|
|
150
|
+
| `layout [target]` | Enhance | Fix spacing, rhythm, and visual hierarchy | [reference/layout.md](reference/layout.md) |
|
|
151
|
+
| `delight [target]` | Enhance | Add personality and memorable touches | [reference/delight.md](reference/delight.md) |
|
|
152
|
+
| `overdrive [target]` | Enhance | Push past conventional limits | [reference/overdrive.md](reference/overdrive.md) |
|
|
153
|
+
| `clarify [target]` | Fix | Improve UX copy, labels, and error messages | [reference/clarify.md](reference/clarify.md) |
|
|
154
|
+
| `adapt [target]` | Fix | Adapt for different devices and screen sizes | [reference/adapt.md](reference/adapt.md) |
|
|
155
|
+
| `optimize [target]` | Fix | Diagnose and fix UI performance | [reference/optimize.md](reference/optimize.md) |
|
|
156
|
+
| `live` | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | [reference/live.md](reference/live.md) |
|
|
332
157
|
|
|
333
|
-
|
|
158
|
+
Plus two management commands — `pin <command>` and `unpin <command>`, detailed below.
|
|
334
159
|
|
|
335
|
-
###
|
|
160
|
+
### Routing rules
|
|
336
161
|
|
|
337
|
-
|
|
162
|
+
1. **No argument** — render the table above as the user-facing command menu, grouped by category. Ask what they'd like to do.
|
|
163
|
+
2. **First word matches a command** — load its reference file and follow its instructions. Everything after the command name is the target.
|
|
164
|
+
3. **First word doesn't match** — general design invocation. Apply the setup steps, shared design laws, and the loaded register reference, using the full argument as context.
|
|
338
165
|
|
|
339
|
-
|
|
340
|
-
## Design Context
|
|
166
|
+
Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke `$impeccable`.
|
|
341
167
|
|
|
342
|
-
|
|
343
|
-
[Who they are, their context, the job to be done]
|
|
168
|
+
If the first word is `craft`, setup still runs first, but [reference/craft.md](reference/craft.md) owns the rest of the flow. If setup invokes `teach` as a blocker, finish teach, refresh context, then resume the original command and target.
|
|
344
169
|
|
|
345
|
-
|
|
346
|
-
[Voice, tone, 3-word personality, emotional goals]
|
|
170
|
+
## Pin / Unpin
|
|
347
171
|
|
|
348
|
-
|
|
349
|
-
[Visual tone, references, anti-references, theme]
|
|
172
|
+
**Pin** creates a standalone shortcut so `$<command>` invokes `$impeccable <command>` directly. **Unpin** removes it. The script writes to every harness directory present in the project.
|
|
350
173
|
|
|
351
|
-
|
|
352
|
-
|
|
174
|
+
```bash
|
|
175
|
+
node .agents/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>
|
|
353
176
|
```
|
|
354
177
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
Then ask the user directly to clarify what you cannot infer. whether they'd also like the Design Context appended to .github/copilot-instructions.md. If yes, append or update the section there as well.
|
|
358
|
-
|
|
359
|
-
Confirm completion and summarize the key design principles that will now guide all future work.
|
|
360
|
-
|
|
361
|
-
---
|
|
362
|
-
|
|
363
|
-
## Extract Mode
|
|
364
|
-
|
|
365
|
-
If this skill is invoked with the argument "extract" (e.g., `/impeccable extract [target]`), follow the [extract flow](reference/extract.md). Pass any additional arguments as the extraction target.
|
|
178
|
+
Valid `<command>` is any command from the table above. Report the script's result concisely — confirm the new shortcut on success, relay stderr verbatim on error.
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
name: adapt
|
|
3
|
-
description: Adapt designs to work across different screen sizes, devices, contexts, or platforms. Implements breakpoints, fluid layouts, and touch targets. Use when the user mentions responsive design, mobile layouts, breakpoints, viewport adaptation, or cross-device compatibility.
|
|
4
|
-
version: 2.1.1
|
|
5
|
-
user-invocable: true
|
|
6
|
-
argument-hint: "[target] [context (mobile, tablet, print...)]"
|
|
7
|
-
---
|
|
1
|
+
> **Additional context needed**: target platforms/devices and usage contexts.
|
|
8
2
|
|
|
9
3
|
Adapt existing designs to work effectively across different contexts - different screen sizes, devices, platforms, or use cases.
|
|
10
4
|
|
|
11
|
-
## MANDATORY PREPARATION
|
|
12
|
-
|
|
13
|
-
Invoke /impeccable — 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 /impeccable teach first. Additionally gather: target platforms/devices and usage contexts.
|
|
14
5
|
|
|
15
6
|
---
|
|
16
7
|
|
|
@@ -196,4 +187,4 @@ Test thoroughly across contexts:
|
|
|
196
187
|
- **Edge cases**: Very small screens (320px), very large screens (4K)
|
|
197
188
|
- **Slow connections**: Test on throttled network
|
|
198
189
|
|
|
199
|
-
Remember: You're a cross-platform design expert. Make experiences that feel native to each context while maintaining brand and functionality consistency. Adapt intentionally, test thoroughly.
|
|
190
|
+
Remember: You're a cross-platform design expert. Make experiences that feel native to each context while maintaining brand and functionality consistency. Adapt intentionally, test thoroughly.
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
name: animate
|
|
3
|
-
description: Review a feature and enhance it with purposeful animations, micro-interactions, and motion effects that improve usability and delight. Use when the user mentions adding animation, transitions, micro-interactions, motion design, hover effects, or making the UI feel more alive.
|
|
4
|
-
version: 2.1.1
|
|
5
|
-
user-invocable: true
|
|
6
|
-
argument-hint: "[target]"
|
|
7
|
-
---
|
|
1
|
+
> **Additional context needed**: performance constraints.
|
|
8
2
|
|
|
9
3
|
Analyze a feature and strategically add animations and micro-interactions that enhance understanding, provide feedback, and create delight.
|
|
10
4
|
|
|
11
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Register
|
|
8
|
+
|
|
9
|
+
Brand: orchestrated page-load sequences, staggered reveals, scroll-driven animation. Motion is part of the voice; one well-rehearsed entrance beats scattered micro-interactions.
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
Product: 150–250 ms on most transitions. Motion conveys state — feedback, reveal, loading, transitions between views. No page-load choreography; users are in a task and won't wait for it.
|
|
14
12
|
|
|
15
13
|
---
|
|
16
14
|
|
|
@@ -31,7 +29,7 @@ Analyze where motion would improve the experience:
|
|
|
31
29
|
- Who's the audience? (Motion-sensitive users? Power users who want speed?)
|
|
32
30
|
- What matters most? (One hero animation vs many micro-interactions?)
|
|
33
31
|
|
|
34
|
-
If any of these are unclear from the codebase,
|
|
32
|
+
If any of these are unclear from the codebase, STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer.
|
|
35
33
|
|
|
36
34
|
**CRITICAL**: Respect `prefers-reduced-motion`. Always provide non-animated alternatives for users who need them.
|
|
37
35
|
|
|
@@ -124,7 +122,8 @@ Use appropriate techniques for each animation:
|
|
|
124
122
|
/* Prefer for simple, declarative animations */
|
|
125
123
|
- transitions for state changes
|
|
126
124
|
- @keyframes for complex sequences
|
|
127
|
-
- transform
|
|
125
|
+
- transform and opacity for reliable movement
|
|
126
|
+
- blur, filters, masks, clip paths, shadows, and color shifts for premium atmospheric effects when verified smooth
|
|
128
127
|
```
|
|
129
128
|
|
|
130
129
|
### JavaScript Animation
|
|
@@ -136,9 +135,10 @@ Use appropriate techniques for each animation:
|
|
|
136
135
|
```
|
|
137
136
|
|
|
138
137
|
### Performance
|
|
139
|
-
- **
|
|
138
|
+
- **Motion materials**: Use transform/opacity for reliable movement, but use blur, filters, masks, shadows, and color shifts when they materially improve the effect
|
|
139
|
+
- **Layout safety**: Avoid casual animation of layout-driving properties (`width`, `height`, `top`, `left`, margins)
|
|
140
140
|
- **will-change**: Add sparingly for known expensive animations
|
|
141
|
-
- **
|
|
141
|
+
- **Bound expensive effects**: Keep blur/filter/shadow areas small or isolated, use `contain` where appropriate
|
|
142
142
|
- **Monitor FPS**: Ensure 60fps on target devices
|
|
143
143
|
|
|
144
144
|
### Accessibility
|
|
@@ -154,7 +154,7 @@ Use appropriate techniques for each animation:
|
|
|
154
154
|
|
|
155
155
|
**NEVER**:
|
|
156
156
|
- Use bounce or elastic easing curves—they feel dated and draw attention to the animation itself
|
|
157
|
-
- Animate layout properties (width
|
|
157
|
+
- Animate layout properties casually (`width`, `height`, `top`, `left`, margins) when transform, FLIP, or grid-based techniques would work
|
|
158
158
|
- Use durations over 500ms for feedback—it feels laggy
|
|
159
159
|
- Animate without purpose—every animation needs a reason
|
|
160
160
|
- Ignore `prefers-reduced-motion`—this is an accessibility violation
|
|
@@ -172,4 +172,4 @@ Test animations thoroughly:
|
|
|
172
172
|
- **Doesn't block**: Users can interact during/after animations
|
|
173
173
|
- **Adds value**: Makes interface clearer or more delightful
|
|
174
174
|
|
|
175
|
-
Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.
|
|
175
|
+
Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.
|