@andespindola/crow-skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +62 -0
  2. package/bin/npm-crow-skills.cjs +20 -0
  3. package/catalog.json +398 -0
  4. package/crow_skills/__init__.py +3 -0
  5. package/crow_skills/__main__.py +3 -0
  6. package/crow_skills/agents.py +45 -0
  7. package/crow_skills/cli.py +241 -0
  8. package/crow_skills/npm_entry.py +14 -0
  9. package/crow_skills/source.py +256 -0
  10. package/crow_skills/storage.py +396 -0
  11. package/docs/cli-security.md +33 -0
  12. package/docs/cli.md +138 -0
  13. package/package.json +35 -0
  14. package/release.json +607 -0
  15. package/skills/crow-accessibility/SKILL.md +33 -0
  16. package/skills/crow-agent-security/SKILL.md +33 -0
  17. package/skills/crow-api-test/SKILL.md +34 -0
  18. package/skills/crow-architecture/SKILL.md +33 -0
  19. package/skills/crow-backend/SKILL.md +33 -0
  20. package/skills/crow-behaviour/SKILL.md +70 -0
  21. package/skills/crow-behaviour/agents/openai.yaml +4 -0
  22. package/skills/crow-behaviour/references/orchestration.md +64 -0
  23. package/skills/crow-behaviour/references/quality-patterns.md +56 -0
  24. package/skills/crow-browser/SKILL.md +33 -0
  25. package/skills/crow-debug/SKILL.md +33 -0
  26. package/skills/crow-design/SKILL.md +33 -0
  27. package/skills/crow-discovery/SKILL.md +33 -0
  28. package/skills/crow-documents/SKILL.md +33 -0
  29. package/skills/crow-domain/SKILL.md +33 -0
  30. package/skills/crow-frontend/SKILL.md +33 -0
  31. package/skills/crow-growth/SKILL.md +33 -0
  32. package/skills/crow-infra/SKILL.md +38 -0
  33. package/skills/crow-infra/references/kubernetes.md +3 -0
  34. package/skills/crow-interface/NOTICE.md +20 -0
  35. package/skills/crow-interface/SKILL.md +55 -0
  36. package/skills/crow-interface/agents/impeccable_asset_producer.toml +43 -0
  37. package/skills/crow-interface/agents/impeccable_documenter.toml +28 -0
  38. package/skills/crow-interface/agents/impeccable_finish_reviewer.toml +42 -0
  39. package/skills/crow-interface/agents/impeccable_manual_edit_applier.toml +96 -0
  40. package/skills/crow-interface/agents/openai.yaml +3 -0
  41. package/skills/crow-interface/licenses/Apache-2.0.txt +191 -0
  42. package/skills/crow-interface/licenses/Impeccable-NOTICE.md +11 -0
  43. package/skills/crow-interface/licenses/modern-screenshot-MIT.txt +9 -0
  44. package/skills/crow-interface/licenses/platform-design-MIT.txt +21 -0
  45. package/skills/crow-interface/reference/adapt.md +320 -0
  46. package/skills/crow-interface/reference/adapt.native.md +60 -0
  47. package/skills/crow-interface/reference/android.md +48 -0
  48. package/skills/crow-interface/reference/animate.md +91 -0
  49. package/skills/crow-interface/reference/audit.md +139 -0
  50. package/skills/crow-interface/reference/audit.native.md +141 -0
  51. package/skills/crow-interface/reference/bolder.md +35 -0
  52. package/skills/crow-interface/reference/clarify.md +96 -0
  53. package/skills/crow-interface/reference/colorize.md +88 -0
  54. package/skills/crow-interface/reference/craft-floor.md +52 -0
  55. package/skills/crow-interface/reference/craft.md +7 -0
  56. package/skills/crow-interface/reference/critique.md +828 -0
  57. package/skills/crow-interface/reference/degraded/asset-producer.md +5 -0
  58. package/skills/crow-interface/reference/degraded/documenter.md +5 -0
  59. package/skills/crow-interface/reference/degraded/finish-reviewer.md +5 -0
  60. package/skills/crow-interface/reference/degraded/manual-edit-applier.md +5 -0
  61. package/skills/crow-interface/reference/delight.md +72 -0
  62. package/skills/crow-interface/reference/distill.md +113 -0
  63. package/skills/crow-interface/reference/doctor.md +56 -0
  64. package/skills/crow-interface/reference/document.md +418 -0
  65. package/skills/crow-interface/reference/extract.md +70 -0
  66. package/skills/crow-interface/reference/generate.md +103 -0
  67. package/skills/crow-interface/reference/harden.md +347 -0
  68. package/skills/crow-interface/reference/hooks.md +113 -0
  69. package/skills/crow-interface/reference/init.md +133 -0
  70. package/skills/crow-interface/reference/ios.md +53 -0
  71. package/skills/crow-interface/reference/layout.md +90 -0
  72. package/skills/crow-interface/reference/live-setup.md +106 -0
  73. package/skills/crow-interface/reference/live.md +329 -0
  74. package/skills/crow-interface/reference/new-work.md +149 -0
  75. package/skills/crow-interface/reference/onboard.md +236 -0
  76. package/skills/crow-interface/reference/operate.md +63 -0
  77. package/skills/crow-interface/reference/optimize.md +260 -0
  78. package/skills/crow-interface/reference/overdrive.md +129 -0
  79. package/skills/crow-interface/reference/polish.md +107 -0
  80. package/skills/crow-interface/reference/quieter.md +101 -0
  81. package/skills/crow-interface/reference/roles/asset-producer.md +38 -0
  82. package/skills/crow-interface/reference/roles/documenter.md +23 -0
  83. package/skills/crow-interface/reference/roles/finish-reviewer.md +37 -0
  84. package/skills/crow-interface/reference/roles/manual-edit-applier.md +91 -0
  85. package/skills/crow-interface/reference/routing.md +26 -0
  86. package/skills/crow-interface/reference/runtime.md +30 -0
  87. package/skills/crow-interface/reference/shape.md +61 -0
  88. package/skills/crow-interface/reference/typeset.md +86 -0
  89. package/skills/crow-interface/reference/visualize.md +48 -0
  90. package/skills/crow-interface/reference/workflow.md +53 -0
  91. package/skills/crow-interface/scripts/VERSION +1 -0
  92. package/skills/crow-interface/scripts/command-metadata.json +98 -0
  93. package/skills/crow-interface/scripts/data/font-index-failures.json +121 -0
  94. package/skills/crow-interface/scripts/data/font-index.json +1 -0
  95. package/skills/crow-interface/scripts/engine-manifest.json +13 -0
  96. package/skills/crow-interface/scripts/impeccable +106 -0
  97. package/skills/crow-interface/scripts/impeccable.cmd +3 -0
  98. package/skills/crow-interface/scripts/live-browser-dom.js +167 -0
  99. package/skills/crow-interface/scripts/live-browser-ignores.js +242 -0
  100. package/skills/crow-interface/scripts/live-browser-session.js +144 -0
  101. package/skills/crow-interface/scripts/live-browser.js +13510 -0
  102. package/skills/crow-interface/scripts/modern-screenshot.umd.js +14 -0
  103. package/skills/crow-media/SKILL.md +33 -0
  104. package/skills/crow-native-mobile/SKILL.md +33 -0
  105. package/skills/crow-observe/SKILL.md +33 -0
  106. package/skills/crow-performance/SKILL.md +38 -0
  107. package/skills/crow-performance/references/measurement.md +3 -0
  108. package/skills/crow-platform/SKILL.md +33 -0
  109. package/skills/crow-postgres/SKILL.md +33 -0
  110. package/skills/crow-product-leadership/SKILL.md +33 -0
  111. package/skills/crow-qa/SKILL.md +34 -0
  112. package/skills/crow-release/SKILL.md +35 -0
  113. package/skills/crow-reverse/SKILL.md +33 -0
  114. package/skills/crow-secrets/SKILL.md +33 -0
  115. package/skills/crow-security-review/SKILL.md +33 -0
  116. package/skills/crow-security-scan/SKILL.md +33 -0
  117. package/skills/crow-security-test/SKILL.md +33 -0
  118. package/skills/crow-seo/SKILL.md +33 -0
  119. package/skills/crow-skill-author/SKILL.md +34 -0
  120. package/skills/crow-spec/SKILL.md +33 -0
  121. package/skills/crow-threat-model/SKILL.md +33 -0
@@ -0,0 +1,260 @@
1
+ <!-- Modified for Crow, 2026-10-20: portable paths and capability-specific corrections. Shared flow: workflow.md. Derived from Impeccable, Copyright 2025 Paul Bakaus, Apache-2.0. -->
2
+
3
+ Performance is a feature. Identify the actual bottleneck for THIS interface, fix it, then measure. Don't optimize what isn't slow.
4
+
5
+ ## Assess Performance Issues
6
+
7
+ Understand current performance and identify problems:
8
+
9
+ 1. **Measure current state**:
10
+ - **Core Web Vitals**: LCP, INP, CLS scores
11
+ - **Load time**: Time to interactive, first contentful paint
12
+ - **Bundle size**: JavaScript, CSS, image sizes
13
+ - **Runtime performance**: Frame rate, memory usage, CPU usage
14
+ - **Network**: Request count, payload sizes, waterfall
15
+
16
+ 2. **Identify bottlenecks**:
17
+ - What's slow? (Initial load? Interactions? Animations?)
18
+ - What's causing it? (Large images? Expensive JavaScript? Layout thrashing?)
19
+ - How bad is it? (Perceivable? Annoying? Blocking?)
20
+ - Who's affected? (All users? Mobile only? Slow connections?)
21
+
22
+ **CRITICAL**: Measure before and after. Premature optimization wastes time. Optimize what actually matters.
23
+
24
+ ## Optimization Strategy
25
+
26
+ Create systematic improvement plan:
27
+
28
+ ### Loading Performance
29
+
30
+ **Optimize Images**:
31
+ - Use modern formats (WebP, AVIF)
32
+ - Proper sizing (don't load 3000px image for 300px display)
33
+ - Lazy loading for below-fold images
34
+ - Responsive images (`srcset`, `picture` element)
35
+ - Compress images (80-85% quality is usually imperceptible)
36
+ - Use CDN for faster delivery
37
+
38
+ ```html
39
+ <img
40
+ src="hero.webp"
41
+ srcset="hero-400.webp 400w, hero-800.webp 800w, hero-1200.webp 1200w"
42
+ sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, 1200px"
43
+ loading="lazy"
44
+ alt="Hero image"
45
+ />
46
+ ```
47
+
48
+ **Reduce JavaScript Bundle**:
49
+ - Code splitting (route-based, component-based)
50
+ - Tree shaking (remove unused code)
51
+ - Remove unused dependencies
52
+ - Lazy load non-critical code
53
+ - Use dynamic imports for large components
54
+
55
+ ```javascript
56
+ // Lazy load heavy component
57
+ const HeavyChart = lazy(() => import('./HeavyChart'));
58
+ ```
59
+
60
+ **Optimize CSS**:
61
+ - Remove unused CSS
62
+ - Critical CSS inline, rest async
63
+ - Minimize CSS files
64
+ - Use CSS containment for independent regions
65
+
66
+ **Optimize Fonts**:
67
+ - Use `font-display: swap` or `optional`
68
+ - Subset fonts (only characters you need)
69
+ - Preload critical fonts
70
+ - Use system fonts when appropriate
71
+ - Limit font weights loaded
72
+
73
+ ```css
74
+ @font-face {
75
+ font-family: 'CustomFont';
76
+ src: url('/fonts/custom.woff2') format('woff2');
77
+ font-display: swap; /* Show fallback immediately */
78
+ unicode-range: U+0020-007F; /* Basic Latin only */
79
+ }
80
+ ```
81
+
82
+ **Optimize Loading Strategy**:
83
+ - Critical resources first (async/defer non-critical)
84
+ - Preload critical assets
85
+ - Prefetch likely next pages
86
+ - Service worker for offline/caching
87
+ - HTTP/2 or HTTP/3 for multiplexing
88
+
89
+ ### Rendering Performance
90
+
91
+ **Avoid Layout Thrashing**:
92
+ ```javascript
93
+ // ❌ Bad: Alternating reads and writes (causes reflows)
94
+ elements.forEach(el => {
95
+ const height = el.offsetHeight; // Read (forces layout)
96
+ el.style.height = height * 2; // Write
97
+ });
98
+
99
+ // ✅ Good: Batch reads, then batch writes
100
+ const heights = elements.map(el => el.offsetHeight); // All reads
101
+ elements.forEach((el, i) => {
102
+ el.style.height = heights[i] * 2; // All writes
103
+ });
104
+ ```
105
+
106
+ **Optimize Rendering**:
107
+ - Use CSS `contain` property for independent regions
108
+ - Minimize DOM depth (flatter is faster)
109
+ - Reduce DOM size (fewer elements)
110
+ - Use `content-visibility: auto` for long lists
111
+ - Virtual scrolling for very long lists (react-window, TanStack Virtual)
112
+
113
+ **Reduce Paint & Composite**:
114
+ - Use `transform` and `opacity` for reliable movement, but allow blur, filters, masks, clip paths, shadows, and color shifts when they create meaningful polish
115
+ - Avoid casual animation of layout-driving properties (`width`, `height`, `top`, `left`, margins)
116
+ - Use `will-change` sparingly for known expensive operations
117
+ - Bound expensive paint areas for blur/filter/shadow effects (smaller and isolated is faster)
118
+
119
+ ### Animation Performance
120
+
121
+ **GPU Acceleration**:
122
+ ```css
123
+ /* ✅ GPU-accelerated (fast) */
124
+ .animated {
125
+ transform: translateX(100px);
126
+ opacity: 0.5;
127
+ }
128
+
129
+ /* ❌ CPU-bound (slow) */
130
+ .animated {
131
+ left: 100px;
132
+ width: 300px;
133
+ }
134
+ ```
135
+
136
+ **Smooth 60fps**:
137
+ - Target 16ms per frame (60fps)
138
+ - Use `requestAnimationFrame` for JS animations
139
+ - Debounce/throttle scroll handlers
140
+ - Use CSS animations when possible
141
+ - Avoid long-running JavaScript during animations
142
+
143
+ **Intersection Observer**:
144
+ ```javascript
145
+ // Efficiently detect when elements enter viewport
146
+ const observer = new IntersectionObserver((entries) => {
147
+ entries.forEach(entry => {
148
+ if (entry.isIntersecting) {
149
+ // Element is visible, lazy load or animate
150
+ }
151
+ });
152
+ });
153
+ ```
154
+
155
+ ### React/Framework Optimization
156
+
157
+ **React-specific**:
158
+ - Use `memo()` for expensive components
159
+ - `useMemo()` and `useCallback()` for expensive computations
160
+ - Virtualize long lists
161
+ - Code split routes
162
+ - Avoid inline function creation in render
163
+ - Use React DevTools Profiler
164
+
165
+ **Framework-agnostic**:
166
+ - Minimize re-renders
167
+ - Debounce expensive operations
168
+ - Memoize computed values
169
+ - Lazy load routes and components
170
+
171
+ ### Network Optimization
172
+
173
+ **Reduce Requests**:
174
+ - Combine small files
175
+ - Use SVG sprites for icons
176
+ - Inline small critical assets
177
+ - Remove unused third-party scripts
178
+
179
+ **Optimize APIs**:
180
+ - Use pagination (don't load everything)
181
+ - GraphQL to request only needed fields
182
+ - Response compression (gzip, brotli)
183
+ - HTTP caching headers
184
+ - CDN for static assets
185
+
186
+ **Optimize for Slow Connections**:
187
+ - Adaptive loading based on connection (navigator.connection)
188
+ - Optimistic UI updates
189
+ - Request prioritization
190
+ - Progressive enhancement
191
+
192
+ ## Core Web Vitals Optimization
193
+
194
+ ### Largest Contentful Paint (LCP < 2.5s)
195
+ - Optimize hero images
196
+ - Inline critical CSS
197
+ - Preload key resources
198
+ - Use CDN
199
+ - Server-side rendering
200
+
201
+ ### Interaction to Next Paint (INP < 200ms)
202
+ - Break up long tasks
203
+ - Defer non-critical JavaScript
204
+ - Use web workers for heavy computation
205
+ - Reduce JavaScript execution time
206
+
207
+ ### Cumulative Layout Shift (CLS < 0.1)
208
+ - Set dimensions on images and videos
209
+ - Don't inject content above existing content
210
+ - Use `aspect-ratio` CSS property
211
+ - Reserve space for ads/embeds
212
+ - Avoid animations that cause layout shifts
213
+
214
+ ```css
215
+ /* Reserve space for image */
216
+ .image-container {
217
+ aspect-ratio: 16 / 9;
218
+ }
219
+ ```
220
+
221
+ ## Performance Monitoring
222
+
223
+ **Tools to use**:
224
+ - Chrome DevTools (Lighthouse, Performance panel)
225
+ - WebPageTest
226
+ - Core Web Vitals (Chrome UX Report)
227
+ - Bundle analyzers (webpack-bundle-analyzer)
228
+ - Performance monitoring (Sentry, DataDog, New Relic)
229
+
230
+ **Key metrics**:
231
+ - LCP, INP, CLS (Core Web Vitals; INP replaced FID in March 2024)
232
+ - Time to Interactive (TTI)
233
+ - First Contentful Paint (FCP)
234
+ - Total Blocking Time (TBT)
235
+ - Bundle size
236
+ - Request count
237
+
238
+ **IMPORTANT**: Measure on real devices with real network conditions. Desktop Chrome with fast connection isn't representative.
239
+
240
+ **NEVER**:
241
+ - Optimize without measuring (premature optimization)
242
+ - Sacrifice accessibility for performance
243
+ - Break functionality while optimizing
244
+ - Use `will-change` everywhere (creates new layers, uses memory)
245
+ - Lazy load above-fold content
246
+ - Optimize micro-optimizations while ignoring major issues (optimize the biggest bottleneck first)
247
+ - Forget about mobile performance (often slower devices, slower connections)
248
+
249
+ ## Verify Improvements
250
+
251
+ Test that optimizations worked:
252
+
253
+ - **Before/after metrics**: Compare Lighthouse scores
254
+ - **Real user monitoring**: Track improvements for real users
255
+ - **Different devices**: Test on low-end Android, not just flagship iPhone
256
+ - **Slow connections**: Throttle to 3G, test experience
257
+ - **No regressions**: Ensure functionality still works
258
+ - **User perception**: Does it *feel* faster?
259
+
260
+ When the user-facing numbers move, hand off to `$crow-interface polish` for the final pass.
@@ -0,0 +1,129 @@
1
+ <!-- Modified for Crow, 2026-10-20: portable paths and capability-specific corrections. Shared flow: workflow.md. Derived from Impeccable, Copyright 2025 Paul Bakaus, Apache-2.0. -->
2
+
3
+ Start your response with:
4
+
5
+ ```
6
+ ──────────── ⚡ OVERDRIVE ─────────────
7
+ 》》》 Entering overdrive mode...
8
+ ```
9
+
10
+ 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.
11
+
12
+ **EXTRA IMPORTANT FOR THIS COMMAND**: 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.
13
+
14
+ ### Propose Before Building
15
+
16
+ This command has the highest potential to misfire. Do NOT jump straight into implementation. You MUST:
17
+
18
+ 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.
19
+ 2. **Get the user's pick before writing any code.** STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer. Carry each direction's description and its trade-offs (browser support, performance cost, complexity) inside the option itself, so the user is choosing between things they can read. A structured question blocks the message it rides in until the user answers, so directions written alongside the question stay invisible while the user is being asked to choose between them.
20
+ 3. Only proceed with the direction the user confirms.
21
+
22
+ Skipping this step risks building something embarrassing that needs to be thrown away.
23
+
24
+ ### Iterate with Browser Automation
25
+
26
+ 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.
27
+
28
+ ---
29
+
30
+ ## Assess What "Extraordinary" Means Here
31
+
32
+ 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"?**
33
+
34
+ ### For visual/marketing surfaces
35
+ 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.
36
+
37
+ ### For functional UI
38
+ 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.
39
+
40
+ ### For performance-critical UI
41
+ 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.
42
+
43
+ ### For data-heavy interfaces
44
+ 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.
45
+
46
+ **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.
47
+
48
+ ## The Toolkit
49
+
50
+ Organized by what you're trying to achieve, not by technology name.
51
+
52
+ ### Make transitions feel cinematic
53
+ - **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.
54
+ - **`@starting-style`** (all browsers): animate elements from `display: none` to visible with CSS only, including entry keyframes
55
+ - **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.
56
+
57
+ ### Tie animation to scroll position
58
+ - **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)
59
+
60
+ ### Render beyond CSS
61
+ - **WebGL** (all browsers): shader effects, post-processing, particle systems. Libraries: Three.js, OGL (lightweight), regl. Use for effects CSS can't express.
62
+ - **WebGPU** (Chrome/Edge; Safari 26+; Firefox on Windows/macOS; flag only on Firefox Linux/Android): next-gen GPU compute, more powerful than WebGL. Always fall back to WebGL2.
63
+ - **Canvas 2D / OffscreenCanvas**: custom rendering, pixel manipulation, or moving heavy rendering off the main thread entirely via Web Workers + OffscreenCanvas.
64
+ - **SVG filter chains**: displacement maps, turbulence, morphology for organic distortion effects. CSS-animatable.
65
+
66
+ ### Make data feel alive
67
+ - **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.
68
+ - **GPU-accelerated charts**: Canvas or WebGL-rendered data visualization for datasets too large for SVG/DOM. Libraries: deck.gl, regl-based custom renderers.
69
+ - **Animated data transitions**: morph between chart states rather than replacing. D3's `transition()` or View Transitions for DOM-based charts.
70
+
71
+ ### Animate complex properties
72
+ - **`@property`** (all browsers): register custom CSS properties with types, enabling animation of gradients, colors, and complex values that CSS can't normally interpolate.
73
+ - **Web Animations API** (all browsers): JavaScript-driven animations with the performance of CSS. Composable, cancellable, reversible. The foundation for complex choreography.
74
+
75
+ ### Push performance boundaries
76
+ - **Web Workers**: move computation off the main thread. Heavy data processing, image manipulation, search indexing: anything that would cause jank.
77
+ - **OffscreenCanvas**: render in a Worker thread. The main thread stays free while complex visuals render in the background.
78
+ - **WASM**: near-native performance for computation-heavy features. Image processing, physics simulations, codecs.
79
+
80
+ ### Interact with the device
81
+ - **Web Audio API**: spatial audio, audio-reactive visualizations, sonic feedback. Requires user gesture to start.
82
+ - **Device APIs**: orientation, ambient light, geolocation. Use sparingly and always with user permission.
83
+
84
+ **NOTE**: This command 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.
85
+
86
+ ## Implement with Discipline
87
+
88
+ ### Progressive enhancement is non-negotiable
89
+
90
+ Every technique must degrade gracefully. The experience without the enhancement must still be good.
91
+
92
+ ```css
93
+ @supports (animation-timeline: scroll()) {
94
+ .hero { animation-timeline: scroll(); }
95
+ }
96
+ ```
97
+
98
+ ```javascript
99
+ if ('gpu' in navigator) { /* WebGPU */ }
100
+ else if (canvas.getContext('webgl2')) { /* WebGL2 fallback */ }
101
+ /* CSS-only fallback must still look good */
102
+ ```
103
+
104
+ ### Performance rules
105
+
106
+ - Target 60fps. If dropping below 50, simplify.
107
+ - Lazy-initialize heavy resources (WebGL contexts, WASM modules) only when near viewport.
108
+ - Pause off-screen rendering. Kill what you can't see.
109
+ - Test on real mid-range devices, not just your development machine.
110
+
111
+ ### Polish is the difference
112
+
113
+ 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.
114
+
115
+ **NEVER**:
116
+ - Ship effects that cause jank on mid-range devices
117
+ - Use bleeding-edge APIs without a functional fallback
118
+ - Add sound without explicit user opt-in
119
+ - Use technical ambition to mask weak design fundamentals; fix those first with other commands
120
+ - Layer multiple competing extraordinary moments. Focus creates impact, excess creates noise
121
+
122
+ ## Verify the Result
123
+
124
+ - **The wow test**: Show it to someone who hasn't seen it. Do they react?
125
+ - **The removal test**: Take it away. Does the experience feel diminished, or does nobody notice?
126
+ - **The device test**: Run it on a phone, a tablet, a Chromebook. Still smooth?
127
+ - **The context test**: Does this make sense for THIS brand and audience?
128
+
129
+ "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,107 @@
1
+ <!-- Modified for Crow, 2026-10-20: portable paths and capability-specific corrections. Shared flow: workflow.md. Derived from Impeccable, Copyright 2025 Paul Bakaus, Apache-2.0. -->
2
+
3
+ > **Additional context needed**: quality bar and shipping constraints.
4
+
5
+ Polish is refinement, never concealed redesign. Preserve the incumbent visual world, content, behavior, and everything outside scope. If the concept itself is wrong, say so and recommend redesign or `bolder` instead of smuggling in a replacement.
6
+
7
+ A detector result is defect evidence, not proof of quality. Inspect the rendered experience and real interaction path.
8
+
9
+ ## 1. Establish the system
10
+
11
+ Read DESIGN.md and representative tokens, shared components, patterns, and neighboring flows. If no formal system exists, use coherent project conventions.
12
+
13
+ Classify each drift before fixing it:
14
+
15
+ - **missing token:** the system needs a reusable value;
16
+ - **one-off implementation:** an existing shared component or pattern should replace it;
17
+ - **conceptual mismatch:** the flow, information architecture, or hierarchy differs from comparable product areas;
18
+ - **local defect:** the implementation is simply incomplete or inconsistent.
19
+
20
+ Fix the cause at the narrowest correct level. Ask when a binding system principle cannot be inferred.
21
+
22
+ ## 2. Gather the evidence
23
+
24
+ Use the feature yourself at the surface's representative sizes: desktop and mobile on the web; on a native platform (`ios` / `android` / `adaptive`), the shipped device classes on the simulator, emulator, or hardware, captured per the platform reference's Verifying the build section. Determine:
25
+
26
+ - whether the path is functionally complete;
27
+ - the intended quality bar and time available;
28
+ - known constraints or deliberately unfinished work;
29
+ - the states, content lengths, roles, and input methods users will actually encounter.
30
+
31
+ If a prior critique exists, use it as one input:
32
+
33
+ ```bash
34
+ <skill-base-dir>/scripts/impeccable critique-storage latest "<resolved target>" --json
35
+ ```
36
+
37
+ Exit 0 returns JSON with the latest snapshot's `body` and an exact `snapshot_file` identity. Retain `snapshot_file` until the end of the pass. For a local file target, the helper compares the file's exact current content fingerprint with the fingerprint captured by critique. Unchanged staged, unstaged, or untracked content remains current; any byte change, deletion, or replacement with a non-file closes the backlog it identified while preserving its trend history and exits 2. A URL target has no local fingerprint and remains current until explicitly closed. When current, incorporate relevant P0/P1 findings from `body` and name the snapshot read. Exit 2 means none exists or the target changed. Perform an independent pass either way.
38
+
39
+ ## 3. Triage
40
+
41
+ Separate functional defects from cosmetic ones and fix in this order:
42
+
43
+ 1. broken or blocked tasks, data loss, misleading state, and inaccessible paths;
44
+ 2. missing loading, empty, error, success, disabled, and permission states;
45
+ 3. flow, hierarchy, responsive, and design-system drift;
46
+ 4. visual and motion inconsistencies;
47
+ 5. code and asset cleanup.
48
+
49
+ Do not perfect one corner while leaving the rest below the same quality bar.
50
+
51
+ ## 4. Polish the whole path
52
+
53
+ ### Flow and hierarchy
54
+
55
+ - Match neighboring mental models, terminology, disclosure, routing, save behavior, and optimistic or pessimistic patterns.
56
+ - Make the primary task and current state obvious without flattening every element to equal weight.
57
+ - Ensure arrival, transition, empty, and recovery paths connect instead of behaving as isolated screens.
58
+
59
+ ### Layout and type
60
+
61
+ - Align to the project's grid and spacing scale; fix optical as well as mathematical alignment.
62
+ - Group related content tightly and separate distinct groups generously.
63
+ - Keep same-role typography consistent; test measure, wrapping, localization expansion, zoom, and font loading.
64
+ - Verify every supported viewport rather than correcting only the current screenshot.
65
+
66
+ ### Color, imagery, and icons
67
+
68
+ - Use semantic tokens and stable color meanings across themes.
69
+ - Verify text, control, and focus contrast in every state.
70
+ - Keep icon families, stroke/weight, sizing, and optical alignment coherent.
71
+ - Prevent image layout shift; use correct aspect ratios, responsive sources, and useful alt text.
72
+
73
+ ### Interaction and state
74
+
75
+ - Every control needs appropriate default, hover, focus, active, disabled, loading, error, and success behavior.
76
+ - Preserve visible keyboard focus, logical tab order, labels, and platform-appropriate touch targets.
77
+ - Keep motion coherent, interruptible, and performant. Do not add animation merely to make polish visible.
78
+ - Validate long, missing, localized, offline, slow, and permission-limited content where the product can encounter it.
79
+
80
+ ### Content and code
81
+
82
+ - Keep terminology, capitalization, punctuation, and factual copy consistent. Ask before changing claims.
83
+ - Remove debug output, dead code, unused imports, obsolete styles, and polish-created duplication.
84
+ - Replace custom implementations with shared components where the system owns the pattern.
85
+ - Promote genuinely reusable values to tokens; do not create a system abstraction for one local exception.
86
+
87
+ ## 5. Verify and finish
88
+
89
+ Walk the complete path again with mouse, keyboard, and touch where applicable. Check:
90
+
91
+ - mobile, intermediate, and wide layouts on the web; phone and tablet size classes in both supported orientations on native;
92
+ - loading, empty, error, success, disabled, long-content, and missing-content states;
93
+ - zoom, contrast, focus, semantics, and screen-reader names;
94
+ - console errors, layout shift, interaction latency, and image loading everywhere; supported browsers on the web; supported OS versions, runtime warnings, and dropped frames on native;
95
+ - agreement with DESIGN.md, neighboring features, and the user's scope.
96
+
97
+ Follow the quality guidance supplied by `impeccable context` and hooks, then run any other relevant QA commands. Context requests a manual scan only when no automatic detector is active; never add another detector pass. Fix real defects and document only narrow intentional exceptions. A clean scan does not replace visual judgment.
98
+
99
+ Finish with a source diff: remove accidental churn, orphaned code, redundant values, and temporary artifacts. Ship only when the feature is functionally complete and consistently finished across the path.
100
+
101
+ When this pass clears every Priority Issue it took from a snapshot, close that snapshot:
102
+
103
+ ```bash
104
+ <skill-base-dir>/scripts/impeccable critique-storage close "<resolved target>" "<snapshot_file returned by latest>"
105
+ ```
106
+
107
+ This closes only the snapshot this pass actually processed; if a newer critique landed meanwhile, its backlog stays live. Do not close when no snapshot was read, when `snapshot_file` was not retained, or when Priority Issues remain.
@@ -0,0 +1,101 @@
1
+ <!-- Modified for Crow, 2026-10-20: portable paths and capability-specific corrections. Shared flow: workflow.md. Derived from Impeccable, Copyright 2025 Paul Bakaus, Apache-2.0. -->
2
+
3
+ Quiet design is harder than bold design. Subtlety needs precision. Reduce visual intensity in designs that are too loud, aggressive, or overstimulating without losing personality or making the result generic.
4
+
5
+ ---
6
+
7
+ ## Visitor mode
8
+
9
+ Persuade + Experience: "quieter" means more restrained palette, more whitespace, more typographic air. Drama is reduced, not eliminated; the POV stays intact.
10
+
11
+ Operate + Read: "quieter" means reducing visual noise. Fewer background accents, flatter cards, less color, less motion. The tool should disappear more completely into the task.
12
+
13
+ ---
14
+
15
+ ## Assess Current State
16
+
17
+ Analyze what makes the design feel too intense:
18
+
19
+ 1. **Identify intensity sources**:
20
+ - **Color saturation**: Overly bright or saturated colors
21
+ - **Contrast extremes**: Too much high-contrast juxtaposition
22
+ - **Visual weight**: Too many bold, heavy elements competing
23
+ - **Animation excess**: Too much motion or overly dramatic effects
24
+ - **Complexity**: Too many visual elements, patterns, or decorations
25
+ - **Scale**: Everything is large and loud with no hierarchy
26
+
27
+ 2. **Understand the context**:
28
+ - What's the purpose? (Marketing vs tool vs reading experience)
29
+ - Who's the audience? (Some contexts need energy)
30
+ - What's working? (Don't throw away good ideas)
31
+ - What's the core message? (Preserve what matters)
32
+
33
+ If any of these are unclear from the codebase, do not guess. STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer.
34
+
35
+ **CRITICAL**: "Quieter" doesn't mean boring or generic. It means refined and easier on the eyes. Think luxury, not laziness.
36
+
37
+ ## Plan Refinement
38
+
39
+ Create a strategy to reduce intensity while maintaining impact:
40
+
41
+ - **Color approach**: Desaturate or shift to more restrained tones?
42
+ - **Hierarchy approach**: Which elements should stay bold (very few), which should recede?
43
+ - **Simplification approach**: What can be removed entirely?
44
+ - **Sophistication approach**: How can we signal quality through restraint?
45
+
46
+ **IMPORTANT**: Subtlety requires precision. Quiet without intent collapses to generic.
47
+
48
+ ## Refine the Design
49
+
50
+ Systematically reduce intensity across these dimensions:
51
+
52
+ ### Color Refinement
53
+ - **Reduce saturation**: Shift from fully saturated to 70-85% saturation
54
+ - **Soften palette**: Replace bright colors with muted tones
55
+ - **Reduce color variety**: Use fewer colors more thoughtfully
56
+ - **Neutral dominance**: Let neutrals do more work, use color as accent (10% rule)
57
+ - **Gentler contrasts**: High contrast only where it matters most
58
+ - **Tinted grays**: Use warm or cool tinted grays instead of pure gray. Adds depth without loudness
59
+ - **Never gray on color**: If you have gray text on a colored background, use a darker shade of that color or transparency instead
60
+
61
+ ### Visual Weight Reduction
62
+ - **Typography**: Reduce font weights (900 → 600, 700 → 500), decrease sizes where appropriate
63
+ - **Hierarchy through subtlety**: Use weight, size, and space instead of color and boldness
64
+ - **White space**: Increase breathing room, reduce density
65
+ - **Borders & lines**: Reduce thickness, decrease opacity, or remove entirely
66
+
67
+ ### Simplification
68
+ - **Remove decorative elements**: Gradients, shadows, patterns, textures that don't serve purpose
69
+ - **Simplify shapes**: Reduce border radius extremes, simplify custom shapes
70
+ - **Reduce layering**: Flatten visual hierarchy where possible
71
+ - **Clean up effects**: Reduce or remove blur effects, glows, multiple shadows
72
+
73
+ ### Motion Reduction
74
+ - **Reduce animation intensity**: Shorter distances (10-20px instead of 40px), gentler easing
75
+ - **Remove decorative animations**: Keep functional motion, remove flourishes
76
+ - **Subtle micro-interactions**: Replace dramatic effects with gentle feedback
77
+ - **Refined easing**: Use ease-out-quart for smooth, understated motion. Never bounce or elastic
78
+ - **Remove animations entirely** if they're not serving a clear purpose
79
+
80
+ ### Composition Refinement
81
+ - **Reduce scale jumps**: Smaller contrast between sizes creates calmer feeling
82
+ - **Align to grid**: Bring rogue elements back into systematic alignment
83
+ - **Even out spacing**: Replace extreme spacing variations with consistent rhythm
84
+
85
+ **NEVER**:
86
+ - Make everything the same size/weight (hierarchy still matters)
87
+ - Remove all color (quiet ≠ grayscale)
88
+ - Eliminate all personality (maintain character through refinement)
89
+ - Sacrifice usability for aesthetics (functional elements still need clear affordances)
90
+ - Make everything small and light (some anchors needed)
91
+
92
+ ## Verify Quality
93
+
94
+ Ensure refinement maintains quality:
95
+
96
+ - **Still functional**: Can users still accomplish tasks easily?
97
+ - **Still distinctive**: Does it have character, or is it generic now?
98
+ - **Better reading**: Is text easier to read for extended periods?
99
+ - **Restrained, not absent**: Does the POV survive the cuts?
100
+
101
+ When the result feels right, hand off to `$crow-interface polish` for the final pass.
@@ -0,0 +1,38 @@
1
+ <!-- Modified for Crow, 2026-10-20: portable paths and capability-specific corrections. Shared flow: workflow.md. Derived from Impeccable, Copyright 2025 Paul Bakaus, Apache-2.0. -->
2
+
3
+ # Impeccable Asset Producer
4
+
5
+ You are the asset production agent for Impeccable craft. Your job is production cleanup, not new art direction. Work only from the approved mock, assigned crops, contact sheets, and constraints the parent gives you. Every raster you create is a raw ingredient that HTML, CSS, SVG, canvas, and component code will compose.
6
+
7
+ ## Core Rule
8
+
9
+ Do not redesign. Preserve the reference's visual role, silhouette, palette, lighting, material, texture, camera angle, and composition unless the parent explicitly asks for a change. Preserve perspective only when it belongs to the object or scene itself; when CSS should create the card transform, shadow, rounded clipping, border, or layout, remove that presentation chrome from the raster.
10
+
11
+ ## Decision Comps
12
+
13
+ When the parent hands you a decision card packet instead of an approved mock, the job is one comp: one card, one file, written to the card's declared `comp` path the moment it renders. The parent runs several of you in parallel, one per card, so this card is your entire contract; generate first, plan never, because the file on disk is the deliverable and the decision page is waiting on it. Work from the card's structured fields and PRODUCT.md alone; report a card too thin to brief a comp, never pad it from imagination. Render the card's direction as a north-star comp at full fidelity: the requested surface's first viewport, prompt led by the surface's own structure (regions named in order with their scale relationships, never the world's atmosphere), fully committed in the card's own palette, type character, and material world. A native app or mobile-first surface is a portrait frame at its device viewport, never a landscape default. Every sibling renders at the same full fidelity in its own grammar, one surface, one aspect; equal commitment keeps the comparison honest. Real product name and real content only; never invent commercial claims, prices, benchmarks, or dates PRODUCT.md does not carry. Exclusions bind those claims, never a medium the card's own world has not excluded: a subject that lives in photographs keeps its photographs. Write the prompt sidecar beside the file. Return one line naming the path and any deviation, nothing more. Everything below this section is the asset-production job; none of it applies to a decision-comp run.
14
+
15
+ ## Input Contract
16
+
17
+ Expect the measured spec (`.impeccable/build/spec.json`, written by `impeccable comp-spec` from the approved comp), the approved comp path, and the skill scripts path. Optionally: a subset of region ids to produce, extra prompt notes per region, and format or transparency needs. Everything else you need is in the spec: each raster region's id, kind (plate, image, texture), pixel box, sampled palette, aspect, note, and the plate path it must land on.
18
+
19
+ If there is no spec, stop and return one line asking the parent to run `impeccable comp-spec` first. You do not inventory the comp yourself; the spec is the inventory, and a second inventory disagrees with the first.
20
+
21
+ ## The job
22
+
23
+ Every region with `medium: raster` in the spec ships as a plate at its `plate` path. A plate is the region regenerated at asset resolution from the comp crop as reference: same subject, same composition, same palette, same lighting and material, with the UI text and page chrome removed, at 1.5x the comp region's pixel size or more. The page draws text, controls, radius, shadow, and layout in code; the plate carries what code cannot draw. Crops from the comp are references, never shipping pixels: a comp is reference grade and a shipped crop is how a beautiful comp becomes a blurry site.
24
+
25
+ Per region, in the spec's order:
26
+
27
+ 1. `<skill-base-dir>/scripts/impeccable comp-spec --crop <id>` writes the reference crop under `.impeccable/build/crops/`.
28
+ 2. Choose the background from the approved region: an isolated figure, object, or line drawing on the page ground is a **transparent cutout**; a photograph, full-frame illustration, or texture stays **opaque**. Save `<skill-base-dir>/scripts/impeccable comp-spec --plate-prompt <id> --background transparent` to a UTF-8 prompt file for a cutout; use `--background opaque` otherwise. The transparent prompt preserves reference placement and clear margins, white paint, fine edges, and interior holes.
29
+ 3. Produce the plate at its exact spec `plate` path. Create the output directory first and choose a supported output size matching the region's aspect, at least 1.5x its pixel dimensions. Prefer the harness-native image tool with the crop as input and the saved prompt; request a transparent PNG for cutouts, then run `<skill-base-dir>/scripts/impeccable embed-prompt <plate> --prompt-file <prompt.txt>` (if you refine the prompt, save and embed the exact text sent). With the API fallback, run `<skill-base-dir>/scripts/impeccable generate-image --ref <crop.png> --prompt-file <prompt.txt> --out <plate.png> --size <WxH> --quality high --background transparent` for a cutout, or `--background opaque` otherwise. The API fallback embeds the prompt and records the background in the sidecar. The output must be PNG; the fallback requests native alpha and performs no chroma-keying.
30
+ 4. Open the plate beside the crop and compare subject, placement, scale, palette, and style. For cutouts, verify a real alpha channel and inspect composites on light and dark grounds: white paint must stay solid, interior holes must clear, and fine edges must avoid halos. Inspect glass and soft shadows carefully; partial alpha alone does not ensure convincing translucency. Never chroma-key native transparent output or flatten it before saving. If a native tool returns opaque pixels or a painted checkerboard, retry with the API fallback when available; otherwise report the transparency blocker. On a visual miss, tighten the prompt and regenerate once. Two misses on one region: keep the better plate, mark it `needs_parent_review`, and name the drift. The parent runs the plates gate after all assets exist; report `unscored` until a gate score is available.
31
+
32
+ Codex: the imagegen skill's built-in `image_gen` path is the native tool here; prefer it for generation and editing, with the crop as the input image.
33
+
34
+ Do not redesign. Do not add objects, restyle, or reinterpret; the comp was approved as it is. Do not touch the page code, the spec, or the comp. Do not produce anything the spec does not list; a region the parent forgot goes back as a one-line note, not a plate.
35
+
36
+ ## Output Contract
37
+
38
+ Return one line per raster region: `<id> <plate path> <WxH> <score%|unscored> <accepted|needs_parent_review|blocked> <one-line note or ->`. Then `blockers` (missing spec, missing comp, no image capability, exhausted key) and `assumptions`, each global and minimal. Nothing else: no summary, no praise, no implementation advice. The parent runs `impeccable build-phase advance` to verify the plates against the same spec; a visual acceptance does not override a failing gate.