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.
Files changed (30) hide show
  1. package/README.md +4 -4
  2. package/bundled-skills/.antigravity-install-manifest.json +12 -1
  3. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  4. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  5. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  6. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  7. package/bundled-skills/docs/users/bundles.md +1 -1
  8. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  9. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  10. package/bundled-skills/docs/users/getting-started.md +1 -1
  11. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  12. package/bundled-skills/docs/users/usage.md +4 -4
  13. package/bundled-skills/docs/users/visual-guide.md +4 -4
  14. package/bundled-skills/ui-a11y/SKILL.md +77 -0
  15. package/bundled-skills/ui-component/SKILL.md +100 -0
  16. package/bundled-skills/ui-page/SKILL.md +96 -0
  17. package/bundled-skills/ui-pattern/SKILL.md +88 -0
  18. package/bundled-skills/ui-review/SKILL.md +86 -0
  19. package/bundled-skills/ui-setup/SKILL.md +100 -0
  20. package/bundled-skills/ui-tokens/SKILL.md +69 -0
  21. package/bundled-skills/ux-audit/SKILL.md +62 -0
  22. package/bundled-skills/ux-copy/SKILL.md +79 -0
  23. package/bundled-skills/ux-feedback/SKILL.md +64 -0
  24. package/bundled-skills/ux-flow/SKILL.md +68 -0
  25. package/dist/index.js +2 -2
  26. package/dist/skill-pointer/pointer-generator.js +7 -1
  27. package/dist/utils/fs.utils.d.ts +0 -6
  28. package/dist/utils/fs.utils.js +3 -12
  29. package/package.json +3 -2
  30. 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
- // Plugin errors must never crash OpenCode.
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
- const skills = byCategory.get(categoryName) ?? [];
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);
@@ -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[];
@@ -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
- const fullPath = path.join(dirPath, entry);
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.1",
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",