@skilly-hand/skilly-hand 0.13.0 → 0.15.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/CHANGELOG.md CHANGED
@@ -4,6 +4,61 @@ All notable changes to this project are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ### Added
8
+ - _None._
9
+
10
+ ### Changed
11
+ - _None._
12
+
13
+ ### Fixed
14
+ - _None._
15
+
16
+ ### Removed
17
+ - _None._
18
+
19
+ ## [0.15.0] - 2026-04-05
20
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.15.0)
21
+
22
+ ### Added
23
+
24
+ - **frontend-design skill v1.1.0:** New `design-context-setter` agent for capturing design intent on greenfield projects via a persistent `DESIGN.md` file
25
+ - **frontend-design skill v1.1.0:** New `motion-designer` agent for stack-aware animations and micro-interactions with GPU safety and `prefers-reduced-motion` compliance
26
+ - **frontend-design skill v1.1.0:** New `visual-refiner` agent for post-generation quality evaluation (AI slop detection, interaction state coverage, Nielsen's heuristics, directional refinement)
27
+ - **frontend-design skill v1.1.0:** New `aesthetic-archetypes` reference asset with 8 design archetypes for greenfield project direction
28
+ - Enhanced `component-designer` with aesthetic principles, DESIGN.md integration, and complete interaction-state checklist
29
+
30
+ ### Changed
31
+
32
+ - Updated `AGENTS.md` with expanded frontend-design workflow triggers and routing
33
+ - Updated frontend-design routing map to include optional motion and visual refinement phases
34
+ - Expanded frontend-design auto-invoke triggers to include greenfield setup, motion, and visual refinement scenarios
35
+
36
+ ### Fixed
37
+
38
+ - _None._
39
+
40
+ ### Removed
41
+
42
+ - Removed "Clarification-First Planning Workflow" from `AGENTS.md` (superseded by refined workflows)
43
+
44
+ ## [0.14.0] - 2026-04-06
45
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.14.0)
46
+
47
+ ### Added
48
+ - _None._
49
+
50
+ ### Changed
51
+ - _None._
52
+
53
+ ### Fixed
54
+ - _None._
55
+
56
+ ### Removed
57
+ - _None._
58
+
59
+ ## [0.13.0] - 2026-04-05
60
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.13.0)
61
+
7
62
  ### Added
8
63
  - Figma plugin detection support
9
64
  - New test fixtures for figma-plugin projects
@@ -18,8 +73,6 @@ All notable changes to this project are documented in this file.
18
73
 
19
74
  ### Removed
20
75
  - _None._
21
-
22
- ## [0.12.0] - 2026-04-05
23
76
  [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.12.0)
24
77
 
25
78
  ### Added
@@ -8,10 +8,10 @@ Use this skill when:
8
8
  - You are adding new visual elements that must match the project's existing design language.
9
9
  - You are refactoring styling or structure of frontend code to align with established patterns.
10
10
  - You need to choose between UI components, tokens, or styles already available in the project.
11
+ - You are starting a greenfield project and need to establish a design direction before building.
11
12
 
12
13
  Do not use this skill for:
13
14
 
14
- - Greenfield design system creation with no existing codebase to read from.
15
15
  - Backend, API, or data-layer tasks with no UI surface.
16
16
  - Design tool work (Figma, Sketch) unrelated to code implementation.
17
17
  - Projects where the user has explicitly opted out of stack detection.
@@ -25,17 +25,40 @@ Always run stack detection first. Never skip to design.
25
25
  | Step | Intent | Sub-agent |
26
26
  | --- | --- | --- |
27
27
  | 0 (always first) | Detect framework, UI library, CSS approach, tokens, and existing patterns | [agents/stack-detector.md](agents/stack-detector.md) |
28
+ | 0b (if no DESIGN.md and no existing components) | Gather design intent and create DESIGN.md | [agents/design-context-setter.md](agents/design-context-setter.md) |
28
29
  | 1 (only after confirmation) | Design and implement components using confirmed stack | [agents/component-designer.md](agents/component-designer.md) |
30
+ | 2 (optional) | Add motion and micro-interactions | [agents/motion-designer.md](agents/motion-designer.md) |
31
+ | 3 (optional) | Evaluate quality and refine the output | [agents/visual-refiner.md](agents/visual-refiner.md) |
29
32
 
30
33
  ---
31
34
 
32
35
  ## Standard Execution Sequence
33
36
 
34
37
  1. **Run stack detection** — always start with `stack-detector`, no exceptions.
35
- 2. **Present findings to the user** — surface the detected stack clearly and ask for explicit confirmation.
36
- 3. **If anything is unclear or ambiguous, ask** — do not proceed with partial or uncertain information.
37
- 4. **Scan existing tokens and components** — read what already exists before proposing anything.
38
- 5. **Design with confirmed context only** — hand off to `component-designer` only after step 2 is complete.
38
+ 2. **Check for DESIGN.md** — if it exists, read it before any design work. If it does not exist and the project has no existing components to sample, run `design-context-setter` to create it.
39
+ 3. **Present findings to the user** — surface the detected stack and any DESIGN.md context clearly, then ask for explicit confirmation.
40
+ 4. **If anything is unclear or ambiguous, ask** — do not proceed with partial or uncertain information.
41
+ 5. **Scan existing tokens and components** — read what already exists before proposing anything.
42
+ 6. **Design with confirmed context only** — hand off to `component-designer` only after steps 2–4 are complete.
43
+ 7. **Optionally add motion** — invoke `motion-designer` if the component needs micro-interactions.
44
+ 8. **Optionally refine** — invoke `visual-refiner` for a quality pass before handoff.
45
+
46
+ ---
47
+
48
+ ## DESIGN.md — Persistent Design Brief
49
+
50
+ `DESIGN.md` is a plain Markdown file at the project root that captures the project's design intent: target users, brand personality, aesthetic direction, color strategy, typography intent, spacing philosophy, and motion character.
51
+
52
+ It is created by `design-context-setter` on greenfield projects and can be updated at any time by the user.
53
+
54
+ **Every agent in this skill reads `DESIGN.md` if it exists before making aesthetic decisions.** This prevents design drift between sessions.
55
+
56
+ ```bash
57
+ # Check if DESIGN.md exists before starting work
58
+ cat DESIGN.md 2>/dev/null
59
+ ```
60
+
61
+ If `DESIGN.md` exists, surface its contents in the stack confirmation step. If it conflicts with what the stack detector found (e.g., DESIGN.md says "warm neutrals" but all existing tokens are cool blues), surface the conflict and ask the user which to follow.
39
62
 
40
63
  ---
41
64
 
@@ -46,6 +69,7 @@ Always run stack detection first. Never skip to design.
46
69
  Before writing a single line of UI code or proposing any design, run [agents/stack-detector.md](agents/stack-detector.md).
47
70
 
48
71
  This means:
72
+
49
73
  - Reading `package.json` to identify the framework and installed libraries.
50
74
  - Detecting CSS approach (Tailwind, CSS Modules, styled-components, Sass, vanilla).
51
75
  - Finding existing design tokens (CSS custom properties, theme files, `tokens.json`).
@@ -67,9 +91,10 @@ If the token does not exist in the project, do not invent it. Ask the user: "Thi
67
91
 
68
92
  ### Pattern 3: Confirm Before Every Design Decision
69
93
 
70
- At every fork — layout choice, component variant, color, interaction pattern — if the right answer is not derivable from the existing code, ask the user.
94
+ At every fork — layout choice, component variant, color, interaction pattern — if the right answer is not derivable from the existing code or from `DESIGN.md`, ask the user.
71
95
 
72
96
  Examples of things that require confirmation:
97
+
73
98
  - Which existing component to base a new one on.
74
99
  - Whether to use Tailwind utility classes or a CSS module.
75
100
  - Whether to match a specific existing page's spacing rhythm or start fresh.
@@ -80,12 +105,15 @@ Short, specific questions are better than long ambiguous ones. One question at a
80
105
  ### Pattern 4: Follow the Project's Visual Language
81
106
 
82
107
  After stack detection, read 3–5 existing components before proposing any design. Identify:
108
+
83
109
  - The naming convention (PascalCase components, BEM CSS, camelCase tokens, etc.)
84
110
  - The composition pattern (atomic components, compound components, render props, slots)
85
111
  - The styling approach (co-located styles, global theme, utility-first classes)
86
112
 
87
113
  Every new component or style must feel like it was written by the same team that wrote the existing code — not imported from a different design system.
88
114
 
115
+ If no existing components are found, use `DESIGN.md` as the visual language reference. If neither exists, run `design-context-setter` before proceeding.
116
+
89
117
  ---
90
118
 
91
119
  ## What Not To Do
@@ -95,13 +123,14 @@ These are the most critical rules. Violating any of them produces AI slop.
95
123
  - **Never assume a UI library is present** without verifying it in `package.json`. Shadcn and Radix look similar in JSX — check the deps.
96
124
  - **Never pick colors, fonts, or spacing values not already in the project**. If the project has no purple, do not introduce purple.
97
125
  - **Never use Inter as a default font** unless it is explicitly declared in the project. Inter is a sign of uncontextualized AI output.
98
- - **Never generate a component without reading at least one existing component first**. The project's conventions must be the template.
126
+ - **Never generate a component without reading at least one existing component first** (or DESIGN.md if no components exist). The project's conventions must be the template.
99
127
  - **Never apply a generic layout** (hero + cards + CTA, standard nav + footer) without verifying the project already uses or wants that structure.
100
- - **Never chain design decisions silently**. If one decision implies a downstream choice (e.g. using a grid library implies a layout system), surface it.
128
+ - **Never chain design decisions silently**. If one decision implies a downstream choice (e.g., using a grid library implies a layout system), surface it.
101
129
  - **Never proceed after ambiguity**. If the detected stack is inconsistent (e.g., Tailwind and styled-components both present), stop and ask which one is canonical.
102
130
  - **Never treat a partial stack detection as complete**. If `package.json` was readable but no component files were found, say so and ask for the component directory.
103
131
  - **Never ship a "placeholder" or "you can customize this later" design**. Every value must be intentional and project-derived.
104
132
  - **Never skip the confirmation step** even if the stack looks obvious. One confirmation prevents ten corrections.
133
+ - **Never ignore DESIGN.md when it exists**. It represents deliberate decisions the user has already made.
105
134
 
106
135
  ---
107
136
 
@@ -113,11 +142,17 @@ User asks for UI work
113
142
  NO -> Run stack-detector, present findings, ask for confirmation
114
143
  YES -> Continue
115
144
 
145
+ -> Does DESIGN.md exist?
146
+ YES -> Read it; surface any conflicts with detected stack
147
+ NO -> Are there existing components to sample?
148
+ YES -> Sample them (Pattern 4)
149
+ NO -> Run design-context-setter to create DESIGN.md
150
+
116
151
  Is the requested component similar to an existing one in the project?
117
152
  YES -> Read the existing component, use it as the structural and styling template
118
153
  NO -> Ask the user which existing component is closest, or if this is a net-new pattern
119
154
 
120
- Does the design require a token/value (color, spacing, font) not yet found in the project?
155
+ Does the design require a token/value (color, spacing, font) not yet found in the project or DESIGN.md?
121
156
  YES -> Ask the user: add a new token, use an existing one, or clarify?
122
157
  NO -> Use the existing token
123
158
 
@@ -135,6 +170,10 @@ Is the CSS approach styled-components or CSS-in-JS?
135
170
 
136
171
  Ready to implement?
137
172
  YES -> Hand off to component-designer with full confirmed context
173
+
174
+ After generation:
175
+ -> Does the component need motion? -> Invoke motion-designer
176
+ -> Does the output need a quality pass? -> Invoke visual-refiner
138
177
  ```
139
178
 
140
179
  ---
@@ -192,6 +231,9 @@ grep '"@radix-ui' package.json
192
231
  ## Commands
193
232
 
194
233
  ```bash
234
+ # Check for DESIGN.md at project root
235
+ cat DESIGN.md 2>/dev/null
236
+
195
237
  # Read project dependencies
196
238
  cat package.json | grep -A 50 '"dependencies"'
197
239
 
@@ -213,5 +255,9 @@ find src/components -maxdepth 2 -name "*.tsx" -o -name "*.vue" | head -10
213
255
  ## Resources
214
256
 
215
257
  - Stack detection procedure: [agents/stack-detector.md](agents/stack-detector.md)
258
+ - Design context setup (greenfield): [agents/design-context-setter.md](agents/design-context-setter.md)
216
259
  - Component design rules: [agents/component-designer.md](agents/component-designer.md)
260
+ - Motion and micro-interactions: [agents/motion-designer.md](agents/motion-designer.md)
261
+ - Visual quality refinement: [agents/visual-refiner.md](agents/visual-refiner.md)
217
262
  - Full scan checklist: [assets/stack-scan-checklist.md](assets/stack-scan-checklist.md)
263
+ - Aesthetic archetypes reference: [assets/aesthetic-archetypes.md](assets/aesthetic-archetypes.md)
@@ -8,6 +8,8 @@ If the user asks you to design something and no confirmed stack summary exists,
8
8
  "Before I design anything, I need to scan the project. Running stack detection first."
9
9
  Then invoke stack-detector. Do not skip this, even if the task feels small.
10
10
 
11
+ **Also read `DESIGN.md` before making any aesthetic decisions.** If it exists at the project root, its aesthetic direction, color strategy, and typography intent govern all choices that are not already constrained by the project's existing tokens or components. If `DESIGN.md` conflicts with detected project tokens, surface the conflict to the user before proceeding.
12
+
11
13
  ---
12
14
 
13
15
  ## When to Use
@@ -42,23 +44,39 @@ These rules are absolute. No exceptions without explicit user confirmation.
42
44
 
43
45
  ---
44
46
 
47
+ ## Aesthetic Principles
48
+
49
+ These apply within the constraints of the confirmed stack — they guide choices when multiple options are equally valid.
50
+
51
+ - Prefer generous whitespace over cramped layouts. When in doubt, add more space.
52
+ - Use size and weight to establish hierarchy before reaching for color.
53
+ - One clear visual focus per component — the most important element should be unmistakable.
54
+ - Avoid equal-weight elements. If everything is emphasized, nothing is.
55
+ - When `DESIGN.md` defines a motion character, let it inform transition presence even at this stage — flag it for `motion-designer` rather than omitting it entirely.
56
+
57
+ ---
58
+
45
59
  ## Questioning Protocol
46
60
 
47
61
  At every point of uncertainty, ask the user a short, specific question before proceeding.
48
62
 
49
63
  **Layout questions:**
64
+
50
65
  - "Should this component use the same grid as [ExistingPage], or does it have different spacing requirements?"
51
66
  - "The project breakpoints in tailwind.config are `sm`, `md`, `lg`. Should this component be responsive at all three, or only `md` and above?"
52
67
 
53
68
  **Style questions:**
69
+
54
70
  - "I see `--color-primary` and `--color-accent` in globals.css. Which one should this button use for its default state?"
55
71
  - "The existing Card uses `rounded-md`. Should this modal also use `rounded-md`, or does it need a sharper or rounder corner?"
56
72
 
57
73
  **Interaction / state questions:**
74
+
58
75
  - "Should this component have a loading state? I don't see a Skeleton or Spinner imported in other components — should I add one or skip it?"
59
76
  - "The existing Input has a `disabled` prop. Should this new Select also handle `disabled`?"
60
77
 
61
78
  **Composition questions:**
79
+
62
80
  - "Do you want this to accept children (composable) or receive structured props (data-driven)? The existing Card uses both — which pattern fits here?"
63
81
 
64
82
  One question at a time. Do not front-load a list of 8 questions before starting.
@@ -79,6 +97,11 @@ Before finalizing any output, verify every item:
79
97
  - [ ] No new design tokens were invented without explicit user approval.
80
98
  - [ ] The component was cross-referenced against at least one existing component for structural consistency.
81
99
  - [ ] Accessibility: semantic HTML elements, aria attributes consistent with existing components.
100
+ - [ ] All interactive states handled: hover, focus-visible, active, disabled.
101
+ - [ ] Loading and empty states considered — ask the user if not obvious from the request.
102
+ - [ ] Error state handled where the component can receive or display errors.
103
+ - [ ] If any animation was added, `prefers-reduced-motion` is respected.
104
+ - [ ] `DESIGN.md` was read and its aesthetic direction informed choices where tokens left room for judgment.
82
105
 
83
106
  ---
84
107
 
@@ -89,7 +112,8 @@ A finished component from this agent:
89
112
  - Reads like it was written by the existing team.
90
113
  - Uses the same imports, utilities, and style tokens as the rest of the codebase.
91
114
  - Has no values that can't be traced back to a confirmed project resource.
92
- - Includes no design decisions that weren't explicitly confirmed by the user or directly derived from existing code.
115
+ - Includes no design decisions that weren't explicitly confirmed by the user or directly derived from existing code or `DESIGN.md`.
93
116
  - Has no "you can customize this" placeholder comments.
117
+ - Has all interactive states implemented, not deferred.
94
118
 
95
119
  If the output doesn't meet this bar, it is not done.
@@ -0,0 +1,156 @@
1
+ # Design Context Setter
2
+
3
+ ## Goal
4
+
5
+ Gather the project's design intent once, then write it to `DESIGN.md` at the project root. This file becomes the single source of truth for all design decisions across sessions and across agents. Every other agent in this skill reads `DESIGN.md` before making aesthetic choices.
6
+
7
+ This agent is modeled on how modern AI-first design platforms (Stitch, v0, Galileo) treat a persistent design brief — a short, always-available document that anchors every generation.
8
+
9
+ ---
10
+
11
+ ## When to Use
12
+
13
+ Run this agent when:
14
+
15
+ - `DESIGN.md` does not exist at the project root and the project has no existing components to read style conventions from.
16
+ - The user starts a greenfield project (no `src/components`, no existing UI, blank or near-blank codebase).
17
+ - The user says "let's set up the design" or "define the visual direction" before any component work.
18
+ - The stack detector finds no design tokens and no existing components to sample.
19
+
20
+ Do not run this agent when:
21
+
22
+ - `DESIGN.md` already exists and the user has not asked to update it. Read it instead.
23
+ - The project has existing components — stack detection provides sufficient context for matching.
24
+ - The user has explicitly said "just match what's there."
25
+
26
+ ---
27
+
28
+ ## Check First
29
+
30
+ Before starting the interview, check:
31
+
32
+ ```bash
33
+ # Is DESIGN.md already present?
34
+ cat DESIGN.md 2>/dev/null
35
+
36
+ # Are there existing components to learn from instead?
37
+ find src -name "*.tsx" -o -name "*.vue" -o -name "*.svelte" 2>/dev/null | head -5
38
+ ```
39
+
40
+ If `DESIGN.md` exists, surface it to the user and ask: "A `DESIGN.md` already exists. Should I use it as-is, update it, or start fresh?"
41
+
42
+ If components exist but no `DESIGN.md`, suggest: "I found existing components. I can either read those to infer style conventions, or we can write a `DESIGN.md` to set a deliberate direction. Which do you prefer?"
43
+
44
+ ---
45
+
46
+ ## Interview Protocol
47
+
48
+ Ask these questions one at a time. Do not front-load the full list.
49
+
50
+ **1. Who is this for?**
51
+ "Who are the primary users of this interface? (e.g., technical professionals, general public, enterprise ops teams, consumers aged 25–35)"
52
+
53
+ **2. What does this product do — in one sentence?**
54
+ "Describe the product's core value proposition in a single sentence."
55
+
56
+ **3. What's the brand personality?**
57
+ "Pick 3 adjectives that describe how this interface should feel. Examples: sharp, friendly, calm, bold, minimal, playful, authoritative, warm, precise."
58
+
59
+ **4. Are there any visual references?**
60
+ "Any products, sites, or brands whose aesthetic this should feel close to? (Optional — skip if none.)"
61
+
62
+ **5. What's the accessibility baseline?**
63
+ "Should we target WCAG 2.2 Level AA (standard), AAA (enhanced), or is there a specific requirement? Default is AA."
64
+
65
+ **6. Any hard constraints?**
66
+ "Are there colors, fonts, or patterns that must be used or must be avoided? (brand guidelines, corporate requirements, legal restrictions)"
67
+
68
+ After collecting answers, propose a brief aesthetic direction and ask for confirmation before writing the file.
69
+
70
+ ---
71
+
72
+ ## Output Format
73
+
74
+ Write the following structure to `DESIGN.md` at the project root. Every field must come from user answers — no invented values.
75
+
76
+ ```markdown
77
+ # DESIGN.md
78
+
79
+ > This file is the canonical design brief for this project.
80
+ > All AI agents and contributors should read it before making visual decisions.
81
+ > Update it when the design direction changes.
82
+
83
+ ## Product
84
+
85
+ **What it is:** [one-sentence description]
86
+ **Primary users:** [user description]
87
+
88
+ ## Brand Personality
89
+
90
+ **Adjectives:** [3 adjectives from user]
91
+ **Visual references:** [references, or "none specified"]
92
+
93
+ ## Aesthetic Direction
94
+
95
+ [2–4 sentences written in plain language describing the desired look and feel.
96
+ Derived from the adjectives and references above.
97
+ Example: "Clean, high-contrast layouts with generous whitespace. Typography-driven hierarchy — let size and weight do the work before reaching for color. Warm neutrals, not pure grays. Motion should feel intentional and restrained."]
98
+
99
+ ## Color Strategy
100
+
101
+ > Intent only — not token declarations. Actual color values are determined after stack detection reads the project's existing tokens.
102
+
103
+ **Approach:** [e.g., "Monochromatic with a single warm accent" / "High contrast, dark-first" / "Muted palette, earthy tones" / "To be defined — read from stack tokens"]
104
+ **Accent color intent:** [e.g., "Call-to-action only" / "Interactive states only" / "Not yet defined"]
105
+
106
+ ## Typography Intent
107
+
108
+ > Intent only — not font declarations. Actual font families and sizes are determined after stack detection reads the project's existing tokens or dependencies.
109
+
110
+ **Character:** [e.g., "Geometric sans-serif for clarity" / "Humanist serif for warmth" / "Monospace for technical credibility" / "To be determined from stack"]
111
+ **Scale approach:** [e.g., "Tight utilitarian scale for app UI" / "Dramatic editorial scale for marketing" / "Match existing project scale"]
112
+
113
+ ## Spacing Philosophy
114
+
115
+ [e.g., "Generous whitespace — let content breathe" / "Dense, information-rich — prioritize data density" / "Match existing project rhythm"]
116
+
117
+ ## Motion Character
118
+
119
+ [e.g., "Subtle and purposeful — transitions only, no decorative motion" / "Expressive — micro-interactions on every interaction" / "Minimal — respect reduced-motion by default"]
120
+
121
+ ## Accessibility
122
+
123
+ **Target level:** [WCAG 2.2 AA / AAA / project-specific]
124
+ **Hard constraints:** [any must-have or must-avoid rules from user]
125
+
126
+ ## Notes
127
+
128
+ [Any other constraints, references, or decisions captured during setup]
129
+ ```
130
+
131
+ ---
132
+
133
+ ## After Writing DESIGN.md
134
+
135
+ Tell the user:
136
+
137
+ > `DESIGN.md` has been created at the project root. Every design agent in this skill will read it before making visual decisions. You can edit it at any time — it's plain Markdown.
138
+ >
139
+ > Ready to proceed with stack detection and component design.
140
+
141
+ Then hand off to `stack-detector.md`.
142
+
143
+ **If the assistant cannot write files** (sandboxed or read-only environment): Tell the user the DESIGN.md content that would have been written, and ask them to create the file manually or paste it into the project. Do not block on the write failure — treat the content as confirmed context for the current session even if the file was not persisted.
144
+
145
+ ---
146
+
147
+ ## Updating DESIGN.md
148
+
149
+ If the user asks to update the design direction mid-project:
150
+
151
+ 1. Read the current `DESIGN.md`.
152
+ 2. Ask which section they want to change.
153
+ 3. Make only the requested change — do not rewrite the whole file.
154
+ 4. Confirm the update before writing.
155
+
156
+ Never overwrite the entire file silently.
@@ -0,0 +1,184 @@
1
+ # Motion Designer
2
+
3
+ ## Precondition
4
+
5
+ **Stack detection must be complete before this agent runs.**
6
+
7
+ Motion must be implemented using the animation primitives already available in the project's stack. Never introduce a new animation library without the user's explicit approval.
8
+
9
+ ---
10
+
11
+ ## When to Use
12
+
13
+ Use this agent when:
14
+
15
+ - A component has been generated and the user asks "add animations," "make this feel alive," or "add micro-interactions."
16
+ - You identify that a key interaction is missing feedback (e.g., a button with no active state transition).
17
+ - The user wants to add entrance animations, loading skeletons, or scroll-driven reveals.
18
+ - You need to implement reduced-motion-safe transitions.
19
+
20
+ Do not use this agent when:
21
+
22
+ - Stack detection has not been run.
23
+ - The project has zero animation dependencies and no CSS transition usage in existing components — ask the user before adding anything.
24
+ - The user has explicitly said "no animations."
25
+
26
+ ---
27
+
28
+ ## Animation Stack Detection
29
+
30
+ Before proposing any motion, identify what animation primitives the project already uses.
31
+
32
+ ```bash
33
+ # Check for animation libraries
34
+ grep -E '"framer-motion"|"@motionone/dom"|"gsap"|"animejs"|"motion"' package.json
35
+
36
+ # Check for CSS transitions in existing components
37
+ grep -rn "transition" src/ --include="*.css" --include="*.scss" --include="*.module.css" | head -10
38
+
39
+ # Check for @keyframes usage
40
+ grep -rn "@keyframes" src/ --include="*.css" --include="*.scss" | head -5
41
+
42
+ # Check for Tailwind animation utilities
43
+ grep -n "transition\|duration\|ease\|animate-" src/ --include="*.tsx" --include="*.vue" | head -10
44
+ ```
45
+
46
+ Report what was found:
47
+
48
+ ```
49
+ Animation stack:
50
+ Library: [framer-motion v11 | @motionone/dom | GSAP | none detected]
51
+ CSS approach: [Tailwind transition utilities | CSS custom properties | @keyframes | none]
52
+ Existing patterns: [fade-in on mount | slide transitions | skeleton loaders | none found]
53
+ ```
54
+
55
+ If no animation primitives are found, ask: "This project has no existing animation setup. Should I use CSS transitions only (no new dependencies), or would you like to add a library? If so, which one?"
56
+
57
+ ---
58
+
59
+ ## Opportunity Assessment
60
+
61
+ Evaluate the component for four animation opportunities. Before implementing any of them, summarize what you found and confirm with the user: "I identified N animation opportunities. Here's what I'd add — confirm before I make any changes?" All code changes in this agent require user confirmation, even when framed as feedback fixes.
62
+
63
+ ### 1. Missing Feedback
64
+
65
+ UI actions that complete silently feel broken. Look for:
66
+
67
+ - Buttons with no active/press state visual change
68
+ - Form submissions with no loading indicator
69
+ - Toggle switches with no transition
70
+ - Tabs or accordion panels that snap without transition
71
+
72
+ **Fix**: Add a 100–200ms `transition` on `transform`, `opacity`, or `background-color`. Never animate `width`, `height`, `top`, `left`, `margin`, or `padding` — these trigger layout and cause jank.
73
+
74
+ ### 2. Jarring Transitions
75
+
76
+ Elements that appear/disappear instantly feel glitchy:
77
+
78
+ - Modals, drawers, tooltips that pop in without entrance
79
+ - Dropdown menus that appear with no transition
80
+ - Route changes with no fade
81
+
82
+ **Fix**: 200–350ms `opacity` + `transform: translateY(4px)` entrance. Exit should be faster than entrance (150–250ms).
83
+
84
+ ### 3. Unclear Relationships
85
+
86
+ Motion can communicate hierarchy and causality:
87
+
88
+ - List items that load simultaneously when staggered would feel more natural
89
+ - A parent collapsing without carrying its children
90
+ - A notification appearing without connecting to its trigger
91
+
92
+ **Fix**: Stagger delays of 30–60ms between sibling elements. Keep total stagger duration under 400ms for lists of 6+ items.
93
+
94
+ ### 4. Delight Opportunities
95
+
96
+ Moments where a small motion adds personality without adding noise:
97
+
98
+ - Success state on form submission
99
+ - Empty state illustrations that have a subtle loop
100
+ - First-load entrance for a hero section
101
+
102
+ **Fix**: These are always optional and always ask the user first. Never add delight motion without explicit approval.
103
+
104
+ ---
105
+
106
+ ## Timing Reference
107
+
108
+ | Use Case | Duration | Easing |
109
+ | -------- | -------- | ------ |
110
+ | Button feedback (press, hover) | 100–150ms | ease-out |
111
+ | Tooltip / popover entrance | 150–200ms | ease-out |
112
+ | Dropdown open | 200–250ms | ease-out |
113
+ | Modal / drawer entrance | 250–350ms | cubic-bezier(0.16, 1, 0.3, 1) |
114
+ | Page / route transition | 300–400ms | ease-in-out |
115
+ | Hero entrance (first load) | 500–800ms | cubic-bezier(0.16, 1, 0.3, 1) |
116
+ | Stagger delay between siblings | 30–60ms | — |
117
+
118
+ Never exceed 800ms for any UI transition. If it needs more than 800ms, it is decorative animation, not UI motion — ask the user.
119
+
120
+ ---
121
+
122
+ ## GPU Safety Rules
123
+
124
+ **Only animate these properties** — they are GPU-composited and do not trigger layout:
125
+
126
+ - `transform` (translate, scale, rotate)
127
+ - `opacity`
128
+ - `filter` (use sparingly — can be expensive)
129
+
130
+ **Never animate** layout-triggering properties:
131
+
132
+ - `width`, `height`, `max-height`
133
+ - `top`, `left`, `right`, `bottom`
134
+ - `margin`, `padding`
135
+ - `border-width`
136
+ - `font-size`
137
+
138
+ If you need a height animation (e.g., accordion expand), use `max-height` with caution, or prefer `transform: scaleY()` + `transform-origin: top`.
139
+
140
+ ---
141
+
142
+ ## Reduced Motion — Non-Negotiable
143
+
144
+ Every animation added by this agent must respect `prefers-reduced-motion`. No exceptions.
145
+
146
+ **CSS approach:**
147
+
148
+ ```css
149
+ @media (prefers-reduced-motion: reduce) {
150
+ .animated-element {
151
+ transition: none;
152
+ animation: none;
153
+ }
154
+ }
155
+ ```
156
+
157
+ **Tailwind approach:**
158
+
159
+ ```html
160
+ <div class="transition-opacity duration-200 motion-reduce:transition-none">
161
+ ```
162
+
163
+ **Framer Motion approach:**
164
+
165
+ ```tsx
166
+ const shouldReduce = useReducedMotion();
167
+ <motion.div animate={shouldReduce ? {} : { opacity: 1, y: 0 }} />
168
+ ```
169
+
170
+ If the existing project has no `prefers-reduced-motion` handling anywhere, note it and add it to every animation you introduce.
171
+
172
+ ---
173
+
174
+ ## Implementation Checklist
175
+
176
+ Before finalizing any motion work:
177
+
178
+ - [ ] All animation primitives are from the confirmed stack — no new dependencies added without approval.
179
+ - [ ] No layout-triggering properties are animated.
180
+ - [ ] All animations have a `prefers-reduced-motion` fallback.
181
+ - [ ] Timing values are within the reference ranges above.
182
+ - [ ] Delight animations were explicitly approved by the user.
183
+ - [ ] No animation duration exceeds 800ms.
184
+ - [ ] Stagger lists cap total duration at 400ms.
@@ -0,0 +1,137 @@
1
+ # Visual Refiner
2
+
3
+ ## Precondition
4
+
5
+ **Run only after `component-designer` has produced output.**
6
+
7
+ This agent evaluates what was just generated — not what the user wants next. Its job is to close the quality gap between "technically correct" and "ready to ship."
8
+
9
+ ---
10
+
11
+ ## When to Use
12
+
13
+ Use this agent when:
14
+
15
+ - A component or page has been generated and needs a quality check before the user moves on.
16
+ - The user asks "does this look right?", "can you improve this?", or "polish this."
17
+ - The generated output feels generic or inconsistent — even if it technically matches the stack.
18
+ - You want to verify all interactive states are handled before handoff.
19
+
20
+ Do not use this agent when:
21
+
22
+ - Stack detection has not yet been run.
23
+ - No component has been generated in this session yet.
24
+ - The user has explicitly said "it's fine as-is."
25
+
26
+ ---
27
+
28
+ ## Evaluation Protocol
29
+
30
+ Run all four checks. Do not skip any. Report findings grouped by check — do not interleave.
31
+
32
+ ---
33
+
34
+ ### Check 1 — AI Slop Detection
35
+
36
+ Look for generic patterns that signal uncontextualized AI output. Flag each one found.
37
+
38
+ **Visual tells to catch:**
39
+
40
+ - Glassmorphism (backdrop-filter: blur + semi-transparent backgrounds with no established project precedent)
41
+ - Default Inter font with no project declaration
42
+ - Standard hero + cards + CTA layout with no project-specific rationale
43
+ - Pure `#000000` or `#ffffff` for text/backgrounds instead of project tokens
44
+ - Generic card shadows (`box-shadow: 0 2px 8px rgba(0,0,0,0.1)`) not derived from project tokens
45
+ - Gradient text (`background-clip: text`) used decoratively without project precedent
46
+ - Icon + title + description card grids as default empty-state filler
47
+ - Identical padding and border-radius across every element (uniform blandness)
48
+
49
+ For each flag: name the pattern, show the line, and suggest a project-derived alternative.
50
+
51
+ ---
52
+
53
+ ### Check 2 — Interaction State Coverage
54
+
55
+ Verify every interactive element has all required states. Missing states are incomplete work, not optional polish.
56
+
57
+ **Required states per element type:**
58
+
59
+ | Element | Required States |
60
+ | ------- | --------------- |
61
+ | Button (primary) | default, hover, focus-visible, active, disabled, loading |
62
+ | Button (secondary/ghost) | default, hover, focus-visible, active, disabled |
63
+ | Input / Textarea | default, focus, filled, error, disabled |
64
+ | Select / Dropdown | default, open, selected, disabled |
65
+ | Link | default, hover, visited, focus-visible |
66
+ | Checkbox / Radio | unchecked, checked, indeterminate (checkbox), focus, disabled |
67
+ | Toggle / Switch | on, off, focus, disabled |
68
+ | Card (interactive) | default, hover, focus, selected |
69
+
70
+ For each missing state: name the element, name the missing state, and provide the implementation using confirmed project tokens.
71
+
72
+ ---
73
+
74
+ ### Check 3 — Nielsen's Heuristics (abbreviated)
75
+
76
+ Score only the heuristics relevant to a component-level review. Skip system-level heuristics.
77
+
78
+ | Heuristic | Check |
79
+ | --------- | ----- |
80
+ | Visibility of system status | Does loading/processing state communicate progress? |
81
+ | Match between system and world | Do labels use plain language the user would recognize? |
82
+ | Error prevention | Does the component validate or guard against bad input? |
83
+ | Recognition over recall | Are actions visible, not hidden behind hover/guess? |
84
+ | Consistency and standards | Does this match patterns established elsewhere in the project? |
85
+ | Aesthetic and minimalist design | Is every element present earning its space? |
86
+
87
+ Rate each: **Pass**, **Minor issue**, or **Blocker**. Provide a one-line note for anything not Pass.
88
+
89
+ ---
90
+
91
+ ### Check 4 — Directional Assessment
92
+
93
+ After the three checks above, ask the user to choose a direction:
94
+
95
+ > The component is functionally solid. Here are three directions to take the refinement:
96
+ >
97
+ > **A — Polish**: Fix the flagged issues and fill missing states. No visual changes beyond corrections.
98
+ >
99
+ > **B — Bolder**: Increase visual impact. Larger type jumps, stronger contrast, more distinctive spacing rhythm. Still uses project tokens.
100
+ >
101
+ > **C — Quieter**: Reduce visual weight. More whitespace, softer contrast, subtler hierarchy. Still uses project tokens.
102
+ >
103
+ > Which direction, or a combination? (Or say "done" to accept as-is.)
104
+
105
+ Do not apply any directional changes without the user's explicit choice. Fixes from Check 1–3 are always applied.
106
+
107
+ ---
108
+
109
+ ## Refinement Rules
110
+
111
+ When applying any refinement:
112
+
113
+ 1. Use only tokens confirmed by stack detection or declared in `DESIGN.md`.
114
+ 2. Do not introduce new dependencies.
115
+ 3. Do not change the component's public API (props, events, slots) unless the user asks.
116
+ 4. Do not add animation in this agent — hand off to `motion-designer` for that.
117
+ 5. One round of refinement per invocation. If the user wants another pass, re-invoke this agent.
118
+
119
+ ---
120
+
121
+ ## Output Format
122
+
123
+ ```text
124
+ VISUAL REFINER REPORT
125
+ ---------------------
126
+ AI Slop Check: [N flags found / Clean]
127
+ State Coverage: [N states missing / Complete]
128
+ Heuristics: [N issues / All pass]
129
+
130
+ FINDINGS:
131
+ [grouped list of findings with suggested fixes]
132
+
133
+ RECOMMENDED ACTION:
134
+ [Polish only / Polish + Direction A/B/C / No changes needed]
135
+ ```
136
+
137
+ After applying fixes, summarize what changed in 2–3 bullet points. Do not narrate every line edited.
@@ -0,0 +1,155 @@
1
+ # Aesthetic Archetypes
2
+
3
+ Reference card for greenfield projects or when a user asks for design direction with no existing codebase to read from.
4
+
5
+ Each archetype describes a coherent visual personality using framework-agnostic, implementation-neutral language. No library names, no specific color values, no font names — those are determined by the project's actual stack after the archetype is chosen.
6
+
7
+ **How to use:**
8
+
9
+ 1. Present 2–3 options that best match the user's brand personality adjectives from `DESIGN.md`.
10
+ 2. Let the user choose or mix.
11
+ 3. Translate their choice into stack-specific tokens only after the stack is confirmed.
12
+
13
+ ---
14
+
15
+ ## 1. Refined Minimal
16
+
17
+ **Character**: Quiet confidence. Less is deliberate, not lazy.
18
+
19
+ **Typography**: Small, tight type scale. Generous leading. Weight does the work — one bold statement surrounded by light body. No more than two font roles.
20
+
21
+ **Color**: Near-monochromatic. One neutral family (warm or cool), one restrained accent used sparingly. Near-black text, near-white backgrounds, or their dark-mode inversion.
22
+
23
+ **Spacing**: Generous. Breathing room is the dominant visual element. Consistent, predictable rhythm.
24
+
25
+ **Motion**: Subtle. Fade and micro-translate on interaction. Nothing draws attention to itself.
26
+
27
+ **Avoid**: Decorative dividers, rounded corners exceeding the system's established radius, anything that shouts.
28
+
29
+ ---
30
+
31
+ ## 2. Editorial
32
+
33
+ **Character**: Print-informed. Content is the design.
34
+
35
+ **Typography**: Dramatic scale jumps. Display-size headings, small caption text. Mix of weights within a single family, or intentional contrast between a display and body face.
36
+
37
+ **Color**: High contrast. Often near-black + near-white + one ink-like accent. Color is used to mark, not decorate.
38
+
39
+ **Spacing**: Asymmetric. Grid-breaking is intentional. Vertical rhythm anchors the layout.
40
+
41
+ **Motion**: Minimal — content should feel immediate. Scroll-driven reveals acceptable.
42
+
43
+ **Avoid**: Card-heavy layouts, rounded blobs, friendly pastels.
44
+
45
+ ---
46
+
47
+ ## 3. Brutalist
48
+
49
+ **Character**: Uncompromising. Honesty over comfort.
50
+
51
+ **Typography**: System stack or intentionally unglamorous. Oversized. Unkerned when intentional. All-caps statements.
52
+
53
+ **Color**: High contrast. Black, white, and one harsh accent (or pure black and white only). No gradients.
54
+
55
+ **Spacing**: Structural — not generous, not cramped. Grid is exposed.
56
+
57
+ **Motion**: Instant or near-instant. Snap, not glide.
58
+
59
+ **Avoid**: Soft shadows, border-radius, anything "friendly."
60
+
61
+ ---
62
+
63
+ ## 4. Retro-Futuristic
64
+
65
+ **Character**: Technology filtered through nostalgia.
66
+
67
+ **Typography**: Geometric or monospace. Tight tracking. All-caps labels. Clear grid hierarchy.
68
+
69
+ **Color**: Deep backgrounds (near-black or dark navy), bright accent (neon-adjacent — high chroma, not true neon). Subtle scanline or grid texture acceptable.
70
+
71
+ **Spacing**: Dense with breathing room only at macro level. Sections feel packed but orderly.
72
+
73
+ **Motion**: Purposeful. Reveal effects, typewriter entrances, scan-line wipes. All must have reduced-motion fallbacks.
74
+
75
+ **Avoid**: Glassmorphism, light-mode defaults, organic shapes.
76
+
77
+ ---
78
+
79
+ ## 5. Organic
80
+
81
+ **Character**: Human-made, unhurried.
82
+
83
+ **Typography**: Humanist or transitional — faces with visible calligraphic origin. Variable weight welcomed. Generous leading.
84
+
85
+ **Color**: Earth-adjacent. Warm neutrals, muted greens, terracotta, dusty indigo. Nothing fully saturated.
86
+
87
+ **Spacing**: Flowing. Sections breathe into each other. Asymmetry that feels natural, not forced.
88
+
89
+ **Motion**: Eases that feel physical — spring or custom cubic-bezier that overshoots slightly. Gentle.
90
+
91
+ **Avoid**: Sharp corners, high-tech palettes, monospace.
92
+
93
+ ---
94
+
95
+ ## 6. Luxury
96
+
97
+ **Character**: Restraint signals value.
98
+
99
+ **Typography**: Elegant — thin weights, generous tracking on headings. Serif display for brand moments, clean sans for utility.
100
+
101
+ **Color**: Muted, sophisticated. Champagne, slate, obsidian, aged gold. Saturation deliberately low. One metallic or warm-neutral accent.
102
+
103
+ **Spacing**: Very generous. White space is a premium material.
104
+
105
+ **Motion**: Slow and deliberate. 400–600ms entrances. Ease-out only — nothing bounces.
106
+
107
+ **Avoid**: Bright colors, heavy weights, any pattern that reads as cheap or casual.
108
+
109
+ ---
110
+
111
+ ## 7. Playful
112
+
113
+ **Character**: Fun is a feature, not a compromise.
114
+
115
+ **Typography**: Rounded or friendly. Variable weight for expression. Larger scale than strictly necessary.
116
+
117
+ **Color**: Multi-hue. 3–4 colors with clear semantic roles. Saturated but not harsh — use perceptual uniformity to keep brightness balanced.
118
+
119
+ **Spacing**: Responsive to content, not rigid. Cards can be different sizes. Grid can breathe unevenly.
120
+
121
+ **Motion**: Expressive micro-interactions. Confirmation states feel satisfying. Always reduced-motion safe.
122
+
123
+ **Avoid**: Pure black text, sharp corners, anything that reads as corporate or cold.
124
+
125
+ ---
126
+
127
+ ## 8. Industrial
128
+
129
+ **Character**: Form follows function. No apology for complexity.
130
+
131
+ **Typography**: Utilitarian sans-serif. Dense but readable. Tabular figures for data. Weight for hierarchy, not decoration.
132
+
133
+ **Color**: Neutral-forward. Grays, steel, occasionally safety-signal accent (amber, red) for state only. Not decorative.
134
+
135
+ **Spacing**: Dense. Information-rich layouts. Tables, grids, dashboards. Whitespace is used to separate data, not to decorate.
136
+
137
+ **Motion**: Minimal. State changes are instant or near-instant. Loading indicators, not entrances.
138
+
139
+ **Avoid**: Rounded blobs, decorative gradients, anything that prioritizes aesthetics over clarity.
140
+
141
+ ---
142
+
143
+ ## Mixing Archetypes
144
+
145
+ Users often want combinations. Common pairings:
146
+
147
+ | Combination | Character |
148
+ | ----------- | --------- |
149
+ | Refined Minimal + Editorial | High-end content publishing |
150
+ | Industrial + Retro-Futuristic | Developer tools with personality |
151
+ | Organic + Luxury | Premium wellness or lifestyle |
152
+ | Playful + Refined Minimal | Consumer product with restraint |
153
+ | Brutalist + Editorial | Independent media, strong POV |
154
+
155
+ When mixing, one archetype leads (governs spacing and color) and the other accents (contributes a single element — e.g., typography from Editorial onto a Refined Minimal base).
@@ -1,27 +1,31 @@
1
1
  {
2
2
  "id": "frontend-design",
3
3
  "title": "Frontend Design",
4
- "description": "Project-aware frontend design skill that detects the existing tech stack, UI libraries, CSS variables, and design tokens before proposing any UI work.",
4
+ "description": "Project-aware frontend design skill that detects the existing tech stack, UI libraries, CSS variables, and design tokens before proposing any UI work. Supports greenfield projects via DESIGN.md context setup, and includes post-generation motion and visual refinement phases.",
5
5
  "portable": true,
6
- "tags": ["frontend", "design", "workflow", "ui"],
6
+ "tags": ["frontend", "design", "workflow", "ui", "motion", "greenfield"],
7
7
  "detectors": ["always"],
8
8
  "detectionTriggers": ["manual"],
9
9
  "installsFor": ["all"],
10
10
  "agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
11
11
  "skillMetadata": {
12
12
  "author": "skilly-hand",
13
- "last-edit": "2026-04-04",
13
+ "last-edit": "2026-04-05",
14
14
  "license": "Apache-2.0",
15
- "version": "1.0.0",
16
- "changelog": "Initial frontend-design skill; enforces stack-detection-first workflow before any UI component generation; affects catalog skill coverage for frontend and design workflows",
17
- "auto-invoke": "Designing or generating UI components, pages, or layouts in a web or mobile project",
15
+ "version": "1.1.0",
16
+ "changelog": "v1.1.0: Added design-context-setter agent for greenfield/DESIGN.md workflow; added visual-refiner agent for post-generation quality evaluation; added motion-designer agent for stack-aware micro-interactions; added aesthetic-archetypes reference asset; expanded SKILL.md routing map with optional motion and refinement phases; upgraded component-designer with interaction states checklist and aesthetic principles",
17
+ "auto-invoke": "Designing or generating UI components, pages, or layouts in a web or mobile project; setting up visual direction for a greenfield project; adding motion or micro-interactions to existing UI; refining or polishing generated UI output",
18
18
  "allowed-tools": ["Read", "Grep", "Glob", "Bash", "Edit", "Write"]
19
19
  },
20
20
  "files": [
21
21
  { "path": "SKILL.md", "kind": "instruction" },
22
22
  { "path": "agents/stack-detector.md", "kind": "asset" },
23
+ { "path": "agents/design-context-setter.md", "kind": "asset" },
23
24
  { "path": "agents/component-designer.md", "kind": "asset" },
24
- { "path": "assets/stack-scan-checklist.md", "kind": "asset" }
25
+ { "path": "agents/motion-designer.md", "kind": "asset" },
26
+ { "path": "agents/visual-refiner.md", "kind": "asset" },
27
+ { "path": "assets/stack-scan-checklist.md", "kind": "asset" },
28
+ { "path": "assets/aesthetic-archetypes.md", "kind": "asset" }
25
29
  ],
26
30
  "dependencies": []
27
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -31,10 +31,12 @@
31
31
  "test": "node --test tests/*.test.js",
32
32
  "security:check": "node ./scripts/security-check.mjs",
33
33
  "verify:packlist": "node ./scripts/verify-packlist.mjs",
34
- "verify:publish": "npm run security:check && npm run catalog:check && npm test && npm run verify:packlist",
34
+ "verify:versions": "node ./scripts/verify-versions.mjs",
35
+ "verify:publish": "npm run verify:versions && npm run security:check && npm run catalog:check && npm test && npm run verify:packlist",
35
36
  "publish:prepare": "npm run verify:publish && npm pack --dry-run --json",
36
37
  "publish:otp": "node ./scripts/publish-with-otp.mjs",
37
38
  "publish:next": "node ./scripts/publish-with-otp.mjs --tag next",
39
+ "setup:hooks": "node ./scripts/setup-hooks.mjs",
38
40
  "prepublishOnly": "npm run verify:publish",
39
41
  "version": "node ./scripts/release-changelog.mjs",
40
42
  "changelog:release": "node ./scripts/release-changelog.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/catalog",
3
- "version": "0.1.0",
3
+ "version": "0.15.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/cli",
3
- "version": "0.1.0",
3
+ "version": "0.15.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/core",
3
- "version": "0.1.0",
3
+ "version": "0.15.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/detectors",
3
- "version": "0.1.0",
3
+ "version": "0.15.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }