opencode-skills-collection 2.0.0-beta.1 → 2.0.0-beta.3
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/README.md +4 -4
- package/bundled-skills/.antigravity-install-manifest.json +12 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/ui-a11y/SKILL.md +77 -0
- package/bundled-skills/ui-component/SKILL.md +100 -0
- package/bundled-skills/ui-page/SKILL.md +96 -0
- package/bundled-skills/ui-pattern/SKILL.md +88 -0
- package/bundled-skills/ui-review/SKILL.md +86 -0
- package/bundled-skills/ui-setup/SKILL.md +100 -0
- package/bundled-skills/ui-tokens/SKILL.md +69 -0
- package/bundled-skills/ux-audit/SKILL.md +62 -0
- package/bundled-skills/ux-copy/SKILL.md +79 -0
- package/bundled-skills/ux-feedback/SKILL.md +64 -0
- package/bundled-skills/ux-flow/SKILL.md +68 -0
- package/dist/index.js +2 -2
- package/dist/skill-pointer/pointer-generator.js +7 -1
- package/dist/utils/fs.utils.d.ts +0 -6
- package/dist/utils/fs.utils.js +3 -12
- package/package.json +3 -2
- package/skills_index.json +30359 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-review
|
|
3
|
+
description: "Review UI code for StyleSeed design-system compliance, accessibility, mobile ergonomics, spacing discipline, and implementation quality."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ui, review, design-system, accessibility, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UI Review
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill audits UI code against the Toss seed's conventions instead of reviewing it as generic frontend work. It focuses on design-token discipline, component ergonomics, accessibility, mobile readiness, typography, and spacing consistency.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when a component or page should follow the StyleSeed Toss design language
|
|
24
|
+
- Use when reviewing a UI-heavy PR for consistency and design-system violations
|
|
25
|
+
- Use when the output looks "mostly fine" but feels off in subtle ways
|
|
26
|
+
- Use when you need a structured review with concrete fixes
|
|
27
|
+
|
|
28
|
+
## Review Checklist
|
|
29
|
+
|
|
30
|
+
### Design Tokens
|
|
31
|
+
|
|
32
|
+
- no hardcoded hex colors when semantic tokens exist
|
|
33
|
+
- no improvised shadow values when tokenized shadows exist
|
|
34
|
+
- no arbitrary radius choices outside the system scale
|
|
35
|
+
- no random spacing values that break the seed rhythm
|
|
36
|
+
|
|
37
|
+
### Component Conventions
|
|
38
|
+
|
|
39
|
+
- uses the project's class merge helper
|
|
40
|
+
- supports `className` extension when appropriate
|
|
41
|
+
- uses the agreed typing pattern
|
|
42
|
+
- avoids wrapper components that only forward one class string
|
|
43
|
+
- reuses existing primitives before inventing new ones
|
|
44
|
+
|
|
45
|
+
### Accessibility
|
|
46
|
+
|
|
47
|
+
- touch targets large enough for mobile
|
|
48
|
+
- visible keyboard focus states
|
|
49
|
+
- labels and `aria-*` attributes where needed
|
|
50
|
+
- adequate color contrast
|
|
51
|
+
- reduced-motion respect for animation
|
|
52
|
+
|
|
53
|
+
### Mobile UX
|
|
54
|
+
|
|
55
|
+
- no horizontal overflow
|
|
56
|
+
- safe-area handling where relevant
|
|
57
|
+
- readable text sizes
|
|
58
|
+
- thumb-friendly interaction spacing
|
|
59
|
+
- bottom nav or sticky actions do not obscure content
|
|
60
|
+
|
|
61
|
+
### Typography and Spacing
|
|
62
|
+
|
|
63
|
+
- uses the system type hierarchy
|
|
64
|
+
- display and headings are not overly loose
|
|
65
|
+
- body text remains readable
|
|
66
|
+
- spacing follows the seed grid instead of arbitrary values
|
|
67
|
+
|
|
68
|
+
## Output Format
|
|
69
|
+
|
|
70
|
+
Return:
|
|
71
|
+
1. A verdict: Pass, Needs Improvement, or Fail
|
|
72
|
+
2. A prioritized list of issues with file and line references when available
|
|
73
|
+
3. Concrete fixes for each issue
|
|
74
|
+
4. Any open questions where the design intent is ambiguous
|
|
75
|
+
|
|
76
|
+
## Best Practices
|
|
77
|
+
|
|
78
|
+
- Review against the seed, not against personal taste
|
|
79
|
+
- Separate stylistic drift from real usability or accessibility bugs
|
|
80
|
+
- Prefer actionable diffs over abstract criticism
|
|
81
|
+
- Call out duplication when an existing component already solves the problem
|
|
82
|
+
|
|
83
|
+
## Additional Resources
|
|
84
|
+
|
|
85
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
86
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ui-review/SKILL.md)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-setup
|
|
3
|
+
description: "Interactive StyleSeed setup wizard for choosing app type, brand color, visual style, typography, and the first screen scaffold."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ui, design-system, setup, frontend, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UI Setup
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this setup wizard turns a raw project into a design-system-guided workspace. It collects the minimum brand and product context needed to configure tokens, pick a visual direction, and generate an initial page without drifting into generic UI.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when you are starting a new app with the StyleSeed Toss seed
|
|
24
|
+
- Use when you copied the seed into an existing project and need to personalize it
|
|
25
|
+
- Use when you want the AI to ask one design decision at a time instead of guessing
|
|
26
|
+
- Use when you need a first page scaffold after selecting colors, font, and app type
|
|
27
|
+
|
|
28
|
+
## How It Works
|
|
29
|
+
|
|
30
|
+
### Step 1: Ask One Question at a Time
|
|
31
|
+
|
|
32
|
+
Do not front-load the full questionnaire. Ask a single question, wait for the answer, store it, then continue.
|
|
33
|
+
|
|
34
|
+
### Step 2: Capture the App Type
|
|
35
|
+
|
|
36
|
+
Identify the product shape before touching tokens or layout recipes.
|
|
37
|
+
|
|
38
|
+
Suggested buckets:
|
|
39
|
+
- SaaS dashboard
|
|
40
|
+
- E-commerce
|
|
41
|
+
- Fintech
|
|
42
|
+
- Social or content
|
|
43
|
+
- Productivity or internal tool
|
|
44
|
+
- Other with a short freeform description
|
|
45
|
+
|
|
46
|
+
Use the answer to choose the page composition pattern and the type of first screen to scaffold.
|
|
47
|
+
|
|
48
|
+
### Step 3: Choose the Brand Color
|
|
49
|
+
|
|
50
|
+
Offer a few safe defaults plus a custom hex option. Once selected:
|
|
51
|
+
- update the light theme brand token
|
|
52
|
+
- update the dark theme brand token with a lighter accessible variant
|
|
53
|
+
- keep all other colors semantic rather than hardcoding the brand everywhere
|
|
54
|
+
|
|
55
|
+
If the project uses the StyleSeed Toss seed, the main target is `css/theme.css`.
|
|
56
|
+
|
|
57
|
+
### Step 4: Offer an Optional Visual Reference
|
|
58
|
+
|
|
59
|
+
Ask whether the user wants to borrow the feel of an established brand or design language. Good examples include Stripe, Linear, Vercel, Notion, Spotify, Supabase, and Airbnb.
|
|
60
|
+
|
|
61
|
+
Use the reference to influence density, tone, and composition, not to clone assets or trademarks.
|
|
62
|
+
|
|
63
|
+
### Step 5: Pick Typography
|
|
64
|
+
|
|
65
|
+
Confirm the font direction:
|
|
66
|
+
- keep the default stack
|
|
67
|
+
- swap to a preferred font if already installed or available
|
|
68
|
+
- preserve hierarchy rules for display, heading, body, and caption text
|
|
69
|
+
|
|
70
|
+
If the seed is present, update the font-related files rather than scattering overrides across components.
|
|
71
|
+
|
|
72
|
+
### Step 6: Generate the First Screen
|
|
73
|
+
|
|
74
|
+
Ask for:
|
|
75
|
+
- app name
|
|
76
|
+
- first page or screen name
|
|
77
|
+
- a one-sentence purpose for that page
|
|
78
|
+
|
|
79
|
+
Then scaffold the page using the seed's page shell, top bar, navigation, spacing scale, and card structure.
|
|
80
|
+
|
|
81
|
+
## Output
|
|
82
|
+
|
|
83
|
+
Return:
|
|
84
|
+
1. The captured setup decisions
|
|
85
|
+
2. The files or tokens updated
|
|
86
|
+
3. The first page or scaffold created
|
|
87
|
+
4. Any follow-up recommendations for components, patterns, accessibility, or copy
|
|
88
|
+
|
|
89
|
+
## Best Practices
|
|
90
|
+
|
|
91
|
+
- Keep the interaction conversational, but deterministic
|
|
92
|
+
- Make brand color changes through tokens, not component-by-component edits
|
|
93
|
+
- Use an inspiration brand as a reference, not as a permission slip to copy
|
|
94
|
+
- Prefer semantic tokens and reusable patterns over page-specific CSS
|
|
95
|
+
|
|
96
|
+
## Additional Resources
|
|
97
|
+
|
|
98
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
99
|
+
- [StyleSeed Toss seed](https://github.com/bitjaru/styleseed/tree/main/seeds/toss)
|
|
100
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ui-setup/SKILL.md)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-tokens
|
|
3
|
+
description: "List, add, and update StyleSeed design tokens while keeping JSON sources, CSS variables, and dark-mode values in sync."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ui, tokens, design-system, theming, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UI Tokens
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill manages design tokens without letting the source-of-truth files drift apart. It is meant for teams using the Toss seed's JSON token files and CSS implementation together.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when you need to inspect the current token set
|
|
24
|
+
- Use when you want to add a new color, shadow, radius, spacing, or typography token
|
|
25
|
+
- Use when you need to update a token and propagate the change safely
|
|
26
|
+
- Use when the project has both JSON token files and CSS variables that must stay aligned
|
|
27
|
+
|
|
28
|
+
## How It Works
|
|
29
|
+
|
|
30
|
+
### Supported Actions
|
|
31
|
+
|
|
32
|
+
- `list`: show the current tokens in a human-readable form
|
|
33
|
+
- `add`: introduce a new token and wire it through the implementation
|
|
34
|
+
- `update`: change an existing token value and audit the downstream usage
|
|
35
|
+
|
|
36
|
+
### Typical Source-of-Truth Split
|
|
37
|
+
|
|
38
|
+
For the Toss seed:
|
|
39
|
+
- JSON under `tokens/`
|
|
40
|
+
- CSS variables and theme wiring under `css/theme.css`
|
|
41
|
+
- typography support in the font and base CSS files
|
|
42
|
+
|
|
43
|
+
### Rules
|
|
44
|
+
|
|
45
|
+
- keep JSON and CSS in sync
|
|
46
|
+
- prefer semantic names over descriptive names
|
|
47
|
+
- provide dark-mode support where relevant
|
|
48
|
+
- update the token implementation, not just the source manifest
|
|
49
|
+
- check for direct component usage that might now be stale
|
|
50
|
+
|
|
51
|
+
## Output
|
|
52
|
+
|
|
53
|
+
Return:
|
|
54
|
+
1. The requested token inventory or change summary
|
|
55
|
+
2. Every file touched
|
|
56
|
+
3. Any affected components or utilities that should be reviewed
|
|
57
|
+
4. Follow-up actions if the new token requires broader adoption
|
|
58
|
+
|
|
59
|
+
## Best Practices
|
|
60
|
+
|
|
61
|
+
- Add semantic intent, not one-off brand shades
|
|
62
|
+
- Avoid token sprawl by extending existing scales first
|
|
63
|
+
- Keep naming consistent with the rest of the system
|
|
64
|
+
- Review contrast and accessibility when introducing new colors
|
|
65
|
+
|
|
66
|
+
## Additional Resources
|
|
67
|
+
|
|
68
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
69
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ui-tokens/SKILL.md)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-audit
|
|
3
|
+
description: "Audit screens against Nielsen's heuristics and mobile UX best practices using the StyleSeed Toss design language as the implementation context."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ux, audit, usability, mobile, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UX Audit
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill audits usability rather than just visuals. It uses Nielsen's 10 heuristics plus modern mobile UX expectations to find issues in navigation, feedback, recovery, hierarchy, and cognitive load.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when a screen feels awkward even though the code and styling seem correct
|
|
24
|
+
- Use when evaluating a flow before or after implementation
|
|
25
|
+
- Use when reviewing a mobile-first product for usability regressions
|
|
26
|
+
- Use when you want findings framed as user experience problems with remediation
|
|
27
|
+
|
|
28
|
+
## Audit Framework
|
|
29
|
+
|
|
30
|
+
Review the target against:
|
|
31
|
+
- visibility of system status
|
|
32
|
+
- match between system and real-world language
|
|
33
|
+
- user control and freedom
|
|
34
|
+
- consistency and standards
|
|
35
|
+
- error prevention
|
|
36
|
+
- recognition rather than recall
|
|
37
|
+
- flexibility and efficiency
|
|
38
|
+
- aesthetic and minimalist design
|
|
39
|
+
- recovery from errors
|
|
40
|
+
- help, onboarding, and empty-state guidance
|
|
41
|
+
|
|
42
|
+
Add mobile-specific checks for reachability, touch ergonomics, input burden, and thumb-friendly action placement.
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
Return:
|
|
47
|
+
1. A prioritized issue list
|
|
48
|
+
2. The heuristic violated by each issue
|
|
49
|
+
3. Why the issue matters to real users
|
|
50
|
+
4. Specific remediation suggestions for the page, component, or flow
|
|
51
|
+
|
|
52
|
+
## Best Practices
|
|
53
|
+
|
|
54
|
+
- Judge the experience from the user's point of view, not the implementer's
|
|
55
|
+
- Separate high-severity flow blockers from minor polish issues
|
|
56
|
+
- Include recovery and state-management guidance, not only layout comments
|
|
57
|
+
- Tie recommendations back to concrete UI changes
|
|
58
|
+
|
|
59
|
+
## Additional Resources
|
|
60
|
+
|
|
61
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
62
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ux-audit/SKILL.md)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-copy
|
|
3
|
+
description: "Generate UX microcopy in StyleSeed's Toss-inspired voice for buttons, empty states, errors, toasts, confirmations, and form guidance."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ux, copywriting, microcopy, frontend, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UX Copy
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill generates concise product copy for common UI states. It follows the Toss-inspired tone: casual but polite, direct, active, and specific enough to help the user recover or proceed.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when you need button labels, helper text, toasts, empty states, or error messages
|
|
24
|
+
- Use when a feature has functional UI but weak or robotic wording
|
|
25
|
+
- Use when you want consistent product voice across a flow
|
|
26
|
+
- Use when confirmation dialogs or state feedback need better phrasing
|
|
27
|
+
|
|
28
|
+
## Tone Rules
|
|
29
|
+
|
|
30
|
+
- casual but polite
|
|
31
|
+
- active voice over passive voice
|
|
32
|
+
- positive framing where it stays honest
|
|
33
|
+
- plain language instead of internal jargon
|
|
34
|
+
- concise wording where every word earns its place
|
|
35
|
+
|
|
36
|
+
## Common Patterns
|
|
37
|
+
|
|
38
|
+
### Buttons
|
|
39
|
+
|
|
40
|
+
Use a short action verb plus object when needed.
|
|
41
|
+
|
|
42
|
+
### Empty States
|
|
43
|
+
|
|
44
|
+
Start with a friendly observation, then suggest the next action.
|
|
45
|
+
|
|
46
|
+
### Errors
|
|
47
|
+
|
|
48
|
+
Explain what happened in user-facing language and what to do next. Do not surface raw internal error strings.
|
|
49
|
+
|
|
50
|
+
### Toasts
|
|
51
|
+
|
|
52
|
+
Confirm the result quickly. Add an undo action for reversible destructive behavior.
|
|
53
|
+
|
|
54
|
+
### Forms
|
|
55
|
+
|
|
56
|
+
Use clear labels, useful placeholders, specific helper text, and corrective error messages.
|
|
57
|
+
|
|
58
|
+
### Confirmation Dialogs
|
|
59
|
+
|
|
60
|
+
State the action in plain language and explain the consequence if the decision is risky or irreversible.
|
|
61
|
+
|
|
62
|
+
## Output
|
|
63
|
+
|
|
64
|
+
Return:
|
|
65
|
+
1. The requested microcopy grouped by UI surface
|
|
66
|
+
2. Notes on tone or localization considerations if relevant
|
|
67
|
+
3. Any places where the UX likely needs a structural fix in addition to better copy
|
|
68
|
+
|
|
69
|
+
## Best Practices
|
|
70
|
+
|
|
71
|
+
- Make the next action obvious
|
|
72
|
+
- Avoid generic labels like "Submit" or "OK" when the action can be named precisely
|
|
73
|
+
- Blame the system, not the user, when something fails
|
|
74
|
+
- Keep error and empty states useful even without visual context
|
|
75
|
+
|
|
76
|
+
## Additional Resources
|
|
77
|
+
|
|
78
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
79
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ux-copy/SKILL.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-feedback
|
|
3
|
+
description: "Add loading, empty, error, and success feedback states to StyleSeed components and pages with practical mobile-first rules."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ux, states, loading, error-handling, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UX Feedback
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill ensures data-dependent UI does not stop at the happy path. It adds the four core feedback states every serious product needs: loading, empty, error, and success.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when a component or page fetches, mutates, or depends on async data
|
|
24
|
+
- Use when a flow currently renders only the success path
|
|
25
|
+
- Use when a card, list, or page needs better state communication
|
|
26
|
+
- Use when the product needs clear recovery and confirmation behavior
|
|
27
|
+
|
|
28
|
+
## The Four Required States
|
|
29
|
+
|
|
30
|
+
### Loading
|
|
31
|
+
|
|
32
|
+
Use skeletons that match the final layout. Avoid spinners inside cards unless the pattern genuinely requires them. Delay skeletons slightly to avoid flashes on fast responses.
|
|
33
|
+
|
|
34
|
+
### Empty
|
|
35
|
+
|
|
36
|
+
Provide a friendly explanation and a next action. Zero values should still render meaningfully instead of disappearing.
|
|
37
|
+
|
|
38
|
+
### Error
|
|
39
|
+
|
|
40
|
+
Use plain-language failure messages and always offer recovery where possible. Localize failures to the affected card or section if the rest of the page can still work.
|
|
41
|
+
|
|
42
|
+
### Success
|
|
43
|
+
|
|
44
|
+
Use toasts or equivalent lightweight confirmation for completed actions. Add undo for reversible destructive changes.
|
|
45
|
+
|
|
46
|
+
## Output
|
|
47
|
+
|
|
48
|
+
Return:
|
|
49
|
+
1. The data-dependent areas identified
|
|
50
|
+
2. The loading, empty, error, and success states added for each one
|
|
51
|
+
3. Any reusable empty-state or toast patterns created
|
|
52
|
+
4. Follow-up work needed for analytics, retries, or accessibility
|
|
53
|
+
|
|
54
|
+
## Best Practices
|
|
55
|
+
|
|
56
|
+
- Match loading placeholders to the real layout
|
|
57
|
+
- Keep partial failure isolated whenever possible
|
|
58
|
+
- Make recovery obvious, not hidden in logs or developer tools
|
|
59
|
+
- Use success feedback sparingly but clearly
|
|
60
|
+
|
|
61
|
+
## Additional Resources
|
|
62
|
+
|
|
63
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
64
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ux-feedback/SKILL.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-flow
|
|
3
|
+
description: "Design user flows and screen structure using StyleSeed UX patterns such as progressive disclosure, hub-and-spoke navigation, and information pyramids."
|
|
4
|
+
category: design
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: bitjaru/styleseed
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-08"
|
|
10
|
+
author: bitjaru
|
|
11
|
+
tags: [ux, flows, navigation, product-design, styleseed]
|
|
12
|
+
tools: [claude, cursor, codex, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# UX Flow
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Part of [StyleSeed](https://github.com/bitjaru/styleseed), this skill designs flows before screens. It uses proven UX patterns to define entry points, exits, screen inventory, and navigation structure so the implementation has a coherent user journey instead of a pile of disconnected pages.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Use when planning onboarding, checkout, account management, dashboards, or drill-down flows
|
|
24
|
+
- Use when a new feature spans multiple screens or modal states
|
|
25
|
+
- Use when users need a clear path through a task instead of a single isolated page
|
|
26
|
+
- Use when the UI needs navigation logic before components are built
|
|
27
|
+
|
|
28
|
+
## How It Works
|
|
29
|
+
|
|
30
|
+
### Information Architecture Principles
|
|
31
|
+
|
|
32
|
+
- progressive disclosure: reveal complexity only when needed
|
|
33
|
+
- Miller's Law: chunk content into manageable groups
|
|
34
|
+
- Hick's Law: minimize decision overload on each screen
|
|
35
|
+
|
|
36
|
+
### Common Navigation Models
|
|
37
|
+
|
|
38
|
+
- hub and spoke for dashboards and detail views
|
|
39
|
+
- linear flow for onboarding, forms, and checkout
|
|
40
|
+
- tab navigation for 3 to 5 top-level areas
|
|
41
|
+
|
|
42
|
+
### Flow Rules
|
|
43
|
+
|
|
44
|
+
- every flow has a clear entry point
|
|
45
|
+
- every flow has a clear exit or success condition
|
|
46
|
+
- key features should usually be reachable within three taps from home
|
|
47
|
+
- non-root screens need back navigation
|
|
48
|
+
- loading, empty, and error states need explicit recovery paths
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
Provide:
|
|
53
|
+
1. An ASCII flow diagram
|
|
54
|
+
2. A screen inventory with each screen's purpose
|
|
55
|
+
3. Edge cases for loading, empty, and error states
|
|
56
|
+
4. Recommended page scaffolds and reusable patterns to implement next
|
|
57
|
+
|
|
58
|
+
## Best Practices
|
|
59
|
+
|
|
60
|
+
- Optimize for clarity before density
|
|
61
|
+
- Let one screen answer one primary question
|
|
62
|
+
- Keep escape hatches visible for risky or destructive steps
|
|
63
|
+
- Define state transitions before drawing detailed layouts
|
|
64
|
+
|
|
65
|
+
## Additional Resources
|
|
66
|
+
|
|
67
|
+
- [StyleSeed repository](https://github.com/bitjaru/styleseed)
|
|
68
|
+
- [Source skill](https://github.com/bitjaru/styleseed/blob/main/seeds/toss/.claude/skills/ux-flow/SKILL.md)
|
package/dist/index.js
CHANGED
|
@@ -28,8 +28,8 @@ const OpenCodeSkillsCollection = async (_ctx) => {
|
|
|
28
28
|
ensureDir(activeSkillsDir);
|
|
29
29
|
runSkillPointer({ bundledSkillsPath, activeSkillsDir });
|
|
30
30
|
}
|
|
31
|
-
catch {
|
|
32
|
-
|
|
31
|
+
catch (error) {
|
|
32
|
+
process.stderr.write(`[opencode-skills-collection] ${error}\n`);
|
|
33
33
|
}
|
|
34
34
|
return {};
|
|
35
35
|
};
|
|
@@ -56,11 +56,17 @@ export function generatePointers(activeSkillsDir, vaultDir, index = []) {
|
|
|
56
56
|
}
|
|
57
57
|
for (const categoryName of categoryDirs) {
|
|
58
58
|
const categoryVaultPath = path.join(vaultDir, categoryName);
|
|
59
|
-
|
|
59
|
+
let skills = byCategory.get(categoryName) ?? [];
|
|
60
60
|
if (skills.length === 0) {
|
|
61
61
|
const subDirs = fs.readdirSync(categoryVaultPath).filter((e) => fs.statSync(path.join(categoryVaultPath, e)).isDirectory());
|
|
62
62
|
if (subDirs.length === 0)
|
|
63
63
|
continue;
|
|
64
|
+
skills = subDirs.map((dir) => ({
|
|
65
|
+
id: dir,
|
|
66
|
+
category: categoryName,
|
|
67
|
+
name: dir.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()),
|
|
68
|
+
description: dir.replace(/-/g, " "),
|
|
69
|
+
}));
|
|
64
70
|
}
|
|
65
71
|
const pointerDir = path.join(activeSkillsDir, `${categoryName}${POINTER_SUFFIX}`);
|
|
66
72
|
ensureDir(pointerDir);
|
package/dist/utils/fs.utils.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ensures a directory exists, creating it recursively if needed.
|
|
3
|
-
*/
|
|
4
1
|
export declare function ensureDir(dirPath: string): void;
|
|
5
|
-
/**
|
|
6
|
-
* Returns the names of all direct child directories inside a given path.
|
|
7
|
-
*/
|
|
8
2
|
export declare function listSubdirectories(dirPath: string): string[];
|
package/dist/utils/fs.utils.js
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
/**
|
|
4
|
-
* Ensures a directory exists, creating it recursively if needed.
|
|
5
|
-
*/
|
|
6
2
|
export function ensureDir(dirPath) {
|
|
7
3
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
8
4
|
}
|
|
9
|
-
/**
|
|
10
|
-
* Returns the names of all direct child directories inside a given path.
|
|
11
|
-
*/
|
|
12
5
|
export function listSubdirectories(dirPath) {
|
|
13
6
|
if (!fs.existsSync(dirPath))
|
|
14
7
|
return [];
|
|
15
8
|
return fs
|
|
16
|
-
.readdirSync(dirPath)
|
|
17
|
-
.filter((entry) =>
|
|
18
|
-
|
|
19
|
-
return fs.statSync(fullPath).isDirectory();
|
|
20
|
-
});
|
|
9
|
+
.readdirSync(dirPath, { withFileTypes: true })
|
|
10
|
+
.filter((entry) => entry.isDirectory())
|
|
11
|
+
.map((entry) => entry.name);
|
|
21
12
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-skills-collection",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.3",
|
|
4
4
|
"description": "OpenCode CLI plugin that automatically downloads and keeps skills up to date.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
|
-
"bundled-skills"
|
|
9
|
+
"bundled-skills",
|
|
10
|
+
"skills_index.json"
|
|
10
11
|
],
|
|
11
12
|
"repository": {
|
|
12
13
|
"type": "git",
|