@skilly-hand/skilly-hand 0.10.0 → 0.10.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/CHANGELOG.md CHANGED
@@ -16,6 +16,51 @@ All notable changes to this project are documented in this file.
16
16
  ### Removed
17
17
  - _None._
18
18
 
19
+ ## [0.10.3] - 2026-04-04
20
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.3)
21
+
22
+ ### Added
23
+ - _None._
24
+
25
+ ### Changed
26
+ - _None._
27
+
28
+ ### Fixed
29
+ - _None._
30
+
31
+ ### Removed
32
+ - _None._
33
+
34
+ ## [0.10.2] - 2026-04-04
35
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.2)
36
+
37
+ ### Added
38
+ - _None._
39
+
40
+ ### Changed
41
+ - _None._
42
+
43
+ ### Fixed
44
+ - _None._
45
+
46
+ ### Removed
47
+ - _None._
48
+
49
+ ## [0.10.1] - 2026-04-04
50
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.1)
51
+
52
+ ### Added
53
+ - _None._
54
+
55
+ ### Changed
56
+ - Removed the `AI Integrated Structures` subsection from `README.md` to keep assistant compatibility docs focused on current install targets.
57
+
58
+ ### Fixed
59
+ - _None._
60
+
61
+ ### Removed
62
+ - _None._
63
+
19
64
  ## [0.10.0] - 2026-04-04
20
65
  [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.0)
21
66
 
package/README.md CHANGED
@@ -121,12 +121,6 @@ Skills are installed into `.skilly-hand/` with the correct format for each tool:
121
121
  | Windsurf | `.windsurf/skills/`, `AGENTS.md` |
122
122
  | TRAE | `.trae/skills/`, `AGENTS.md` |
123
123
 
124
- ### AI Integrated Structures
125
-
126
- - Antigravity: rules at `~/.gemini/GEMINI.md` (global) and workspace `.agents/rules/` (with `.agent/rules/` backward support); skills at `.agents/skills/` or `~/.gemini/antigravity/skills/`; MCP config at `~/.gemini/antigravity/mcp_config.json`.
127
- - Windsurf: AGENTS-based directory scoping via `AGENTS.md`, rules in `.windsurf/rules/`, skills in `.windsurf/skills/` (plus `.agents/skills/` compatibility), MCP config at `~/.codeium/mcp_config.json`.
128
- - TRAE: project rules in `.trae/rules/` with `AGENTS.md` support, skills in `.trae/skills/` (optional `.agents/skills/` compatibility toggle), MCP project config via `.trae/mcp.json` and manual/marketplace management in-app.
129
-
130
124
  ---
131
125
 
132
126
  ## Project Structure
package/catalog/README.md CHANGED
@@ -10,6 +10,7 @@ Published portable skills consumed by the `skilly-hand` CLI.
10
10
  | `figma-mcp-0to1` | Guide users from Figma MCP installation and authentication through first canvas creation, with function-level tool coverage and operational recovery patterns. | figma, mcp, workflow, design | all |
11
11
  | `frontend-design` | Project-aware frontend design skill that detects the existing tech stack, UI libraries, CSS variables, and design tokens before proposing any UI work. | frontend, design, workflow, ui | all |
12
12
  | `life-guard` | Review code, decisions, and artifacts through a multi-perspective committee and a domain expert safety guard, then synthesize a structured verdict. | core, workflow, review, quality | all |
13
+ | `react-guidelines` | Guide React code generation and review using latest stable React verification and modern framework best practices. | react, frontend, workflow, best-practices | all |
13
14
  | `skill-creator` | Create and standardize AI skills with reusable structure, metadata rules, and templates. | core, workflow, authoring | all |
14
15
  | `spec-driven-development` | Plan, execute, and verify multi-step work through versioned specs with small, testable tasks. | core, workflow, planning | all |
15
16
  | `test-driven-development` | Guide implementation using the RED → GREEN → REFACTOR TDD cycle: write a failing test first, write the minimum code to pass, then refactor while tests stay green. | testing, workflow, quality, core | all |
@@ -5,6 +5,7 @@
5
5
  "figma-mcp-0to1",
6
6
  "frontend-design",
7
7
  "life-guard",
8
+ "react-guidelines",
8
9
  "skill-creator",
9
10
  "spec-driven-development",
10
11
  "test-driven-development",
@@ -0,0 +1,188 @@
1
+ # React Guidelines
2
+
3
+ ## When to Use
4
+
5
+ Use this skill when:
6
+
7
+ - You are generating React components, hooks, or supporting modules.
8
+ - You are refactoring existing React code to current framework patterns.
9
+ - You are reviewing React code quality and framework-alignment in a React workspace.
10
+
11
+ Do not use this skill for:
12
+
13
+ - Non-React frontend stacks (Angular, Vue, Svelte, or framework-agnostic UI tasks).
14
+ - Deep architecture decisions outside code artifact generation/review scope.
15
+ - Pure test-strategy design unrelated to React implementation details.
16
+
17
+ ---
18
+
19
+ ## Routing Map
20
+
21
+ Choose sub-agents by intent:
22
+
23
+ | Intent | Sub-agent |
24
+ | --- | --- |
25
+ | Create, refactor, or review React components | [agents/component-creator.md](agents/component-creator.md) |
26
+ | Write or review React tests | [agents/react-tester.md](agents/react-tester.md) |
27
+
28
+ ---
29
+
30
+ ## Standard Execution Sequence
31
+
32
+ 1. Run latest stable React preflight checks.
33
+ 2. Route to the smallest matching sub-agent by task intent.
34
+ 3. Apply the sub-agent checklist before finalizing generated code or review output.
35
+
36
+ ---
37
+
38
+ ## Critical Patterns
39
+
40
+ ### Pattern 1: Latest Stable React Preflight (Mandatory)
41
+
42
+ Before generating or changing React code:
43
+
44
+ 1. Check the latest stable React release:
45
+ `npm view react version`
46
+ 2. Check the project's installed or declared React version:
47
+ `npm ls react` or inspect `package.json`.
48
+ 3. Verify release alignment using official version documentation:
49
+ `https://react.dev/versions`
50
+ 4. If versions diverge, generate content for latest stable APIs and call out upgrade steps.
51
+
52
+ Never hardcode a specific React major/minor as the default baseline.
53
+
54
+ ### Pattern 2: Modern React Defaults for New Code
55
+
56
+ Use these defaults unless project constraints explicitly prevent them:
57
+
58
+ | Area | Default |
59
+ | --- | --- |
60
+ | Component model | Function components with pure render logic |
61
+ | State + derivation | `useState`/`useReducer` + derived values without redundant state |
62
+ | Reuse | Composition and custom hooks over inheritance |
63
+ | Boundaries | Apply `'use client'` or `'use server'` only where required |
64
+ | Rendering patterns | Suspense-ready async boundaries where applicable |
65
+ | Debug/profiling | StrictMode-safe behavior and optional Profiler instrumentation |
66
+
67
+ ### Pattern 3: Hook and Purity Guardrails
68
+
69
+ - Follow Rules of Hooks consistently.
70
+ - Keep Components and Hooks pure.
71
+ - Avoid unnecessary Effects; prefer deriving values in render when possible.
72
+ - Keep state minimal and colocated near usage.
73
+ - For component-specific work, apply [agents/component-creator.md](agents/component-creator.md).
74
+ - For testing-specific work, apply [agents/react-tester.md](agents/react-tester.md).
75
+
76
+ ---
77
+
78
+ ## Decision Tree
79
+
80
+ ```text
81
+ Is this a React project (react dependency present)?
82
+ NO -> Do not apply this skill
83
+ YES -> Continue
84
+
85
+ Is this a create/generate task?
86
+ YES -> Run latest stable preflight, then generate with modern defaults
87
+ NO -> Continue
88
+
89
+ Is this a refactor task?
90
+ YES -> Preserve behavior, migrate incrementally to modern React patterns
91
+ NO -> Continue
92
+
93
+ Is this a review task?
94
+ YES -> Validate latest-stable alignment + hook/purity checklist
95
+ NO -> Apply the minimal React guidance needed for the request
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Code Examples
101
+
102
+ ### Example 1: Pure Function Component with Derived State
103
+
104
+ ```tsx
105
+ import { useMemo, useState } from "react";
106
+
107
+ type CounterBadgeProps = {
108
+ label: string;
109
+ };
110
+
111
+ export function CounterBadge({ label }: CounterBadgeProps) {
112
+ const [count, setCount] = useState(0);
113
+ const isNonZero = useMemo(() => count > 0, [count]);
114
+
115
+ return (
116
+ <button type="button" onClick={() => setCount((value) => value + 1)}>
117
+ {label}: {count} {isNonZero ? "active" : "idle"}
118
+ </button>
119
+ );
120
+ }
121
+ ```
122
+
123
+ ### Example 2: Server/Client Boundary Split
124
+
125
+ ```tsx
126
+ // app/user-panel.tsx
127
+ import { UserPanelClient } from "./user-panel-client";
128
+
129
+ export default async function UserPanel() {
130
+ const user = await fetch("/api/user").then((r) => r.json());
131
+ return <UserPanelClient name={user.name} />;
132
+ }
133
+
134
+ // app/user-panel-client.tsx
135
+ "use client";
136
+
137
+ export function UserPanelClient({ name }: { name: string }) {
138
+ return <p>Hello, {name}</p>;
139
+ }
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Review Checklist
145
+
146
+ - Latest stable React preflight was completed before code generation/refactor.
147
+ - New artifacts use function-first, composition-first patterns.
148
+ - Hooks follow call-order rules and purity constraints.
149
+ - `'use client'`/`'use server'` directives are only used where boundary semantics require them.
150
+ - Suspense/StrictMode/Profiler guidance is considered when relevant to behavior.
151
+
152
+ ---
153
+
154
+ ## Commands
155
+
156
+ ```bash
157
+ # Latest stable React version
158
+ npm view react version
159
+
160
+ # Workspace React version
161
+ npm ls react
162
+
163
+ # Build catalog index
164
+ npm run build
165
+
166
+ # Sync catalog README table
167
+ npm run catalog:sync
168
+
169
+ # Validate catalog manifests and files
170
+ npm run catalog:check
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Resources
176
+
177
+ - React reference: https://react.dev/reference/react
178
+ - React Hooks reference: https://react.dev/reference/react/hooks
179
+ - React Components reference: https://react.dev/reference/react/components
180
+ - React APIs reference: https://react.dev/reference/react/apis
181
+ - React Server Components directives: https://react.dev/reference/rsc/directives
182
+ - React versions: https://react.dev/versions
183
+ - Rules of Hooks: https://react.dev/reference/rules/rules-of-hooks
184
+ - Components and Hooks must be pure: https://react.dev/reference/rules/components-and-hooks-must-be-pure
185
+ - Suspense: https://react.dev/reference/react/Suspense
186
+ - StrictMode: https://react.dev/reference/react/StrictMode
187
+ - Fragment: https://react.dev/reference/react/Fragment
188
+ - Profiler: https://react.dev/reference/react/Profiler
@@ -0,0 +1,88 @@
1
+ # React Component Creator
2
+
3
+ ## When to Use
4
+
5
+ Use this sub-agent when:
6
+
7
+ - Creating a new React component.
8
+ - Refactoring an existing React component to modern patterns.
9
+ - Reviewing component implementation details and composition patterns.
10
+
11
+ Do not use this sub-agent for:
12
+
13
+ - Framework-agnostic architecture decisions.
14
+ - Test-only tasks (use `react-tester`).
15
+ - Non-React frameworks.
16
+
17
+ ---
18
+
19
+ ## Core Rules
20
+
21
+ - Prefer function components and composition-first design.
22
+ - Keep render logic pure and deterministic.
23
+ - Keep state minimal; derive values from props/state instead of duplicating state.
24
+ - Use custom hooks to encapsulate reusable stateful behavior.
25
+ - Follow Rules of Hooks in all code paths.
26
+ - Use `'use client'` only for interactive/client-only modules; keep server components free of client-only hooks.
27
+ - For interactive elements, include keyboard and ARIA semantics.
28
+
29
+ ---
30
+
31
+ ## Template Snippets
32
+
33
+ ### Minimal Pure Function Component
34
+
35
+ ```tsx
36
+ type BadgeProps = {
37
+ label: string;
38
+ };
39
+
40
+ export function Badge({ label }: BadgeProps) {
41
+ return <span>{label}</span>;
42
+ }
43
+ ```
44
+
45
+ ### Composition + Custom Hook
46
+
47
+ ```tsx
48
+ import { useState } from "react";
49
+
50
+ function useToggle(initial = false) {
51
+ const [on, setOn] = useState(initial);
52
+ return { on, toggle: () => setOn((value) => !value) };
53
+ }
54
+
55
+ export function ToggleButton() {
56
+ const { on, toggle } = useToggle();
57
+ return (
58
+ <button type="button" aria-pressed={on} onClick={toggle}>
59
+ {on ? "On" : "Off"}
60
+ </button>
61
+ );
62
+ }
63
+ ```
64
+
65
+ ### Suspense Boundary
66
+
67
+ ```tsx
68
+ import { Suspense } from "react";
69
+
70
+ export function ProfileSection() {
71
+ return (
72
+ <Suspense fallback={<p>Loading profile...</p>}>
73
+ <ProfileContent />
74
+ </Suspense>
75
+ );
76
+ }
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Review Checklist
82
+
83
+ - Component is function-based and render-pure.
84
+ - State is minimal and colocated; derived values are not redundantly stored.
85
+ - Hook calls follow Rules of Hooks.
86
+ - Composition is preferred over inheritance or over-abstraction.
87
+ - Client/server boundary directives are correctly scoped.
88
+ - Accessibility semantics are present for interactive controls.
@@ -0,0 +1,111 @@
1
+ # React Tester
2
+
3
+ ## When to Use
4
+
5
+ Use this sub-agent when:
6
+
7
+ - Adding or updating React component or hook tests.
8
+ - Reviewing React tests for correctness and modern usage.
9
+ - Choosing test patterns for async rendering, Suspense, and transitions.
10
+
11
+ Do not use this sub-agent for:
12
+
13
+ - Component implementation guidance without tests (use `component-creator`).
14
+ - Framework-agnostic testing standards not tied to React behavior.
15
+
16
+ ---
17
+
18
+ ## Runner Policy
19
+
20
+ - Default: Use the repository's existing configured runner and testing library.
21
+ - Do not introduce test-runner migration inside unrelated feature tasks.
22
+ - Keep assertions focused on user-visible behavior and public contracts.
23
+
24
+ ---
25
+
26
+ ## Core Testing Patterns
27
+
28
+ - Ensure all stateful updates and async UI flows are wrapped in React-safe test flows (`act` semantics are respected by the testing setup).
29
+ - Prefer user-observable assertions over implementation details.
30
+ - Test Suspense fallbacks and resolved UI states when async boundaries exist.
31
+ - Test transitions and deferred updates based on visible outcomes.
32
+ - Keep mocks narrow and explicit at integration boundaries.
33
+
34
+ ---
35
+
36
+ ## Command Matrix
37
+
38
+ | Scenario | Preferred Command | Fallback |
39
+ | --- | --- | --- |
40
+ | Run all tests | Project test command (for example `npm test`) | Workspace equivalent |
41
+ | Watch mode | Project watch command | Workspace equivalent |
42
+ | Coverage | Project coverage command | Workspace equivalent |
43
+ | Single suite/file | Project targeted test command | Workspace equivalent |
44
+
45
+ Always align commands with the workspace's existing test setup.
46
+
47
+ ---
48
+
49
+ ## Decision Tree
50
+
51
+ ```text
52
+ Is this a component behavior test?
53
+ YES -> Assert rendered output, interactions, and accessibility semantics
54
+ NO -> Continue
55
+
56
+ Is this a custom hook test?
57
+ YES -> Test observable state transitions and returned contracts
58
+ NO -> Continue
59
+
60
+ Is behavior async or Suspense-based?
61
+ YES -> Assert fallback state and resolved state deterministically
62
+ NO -> Continue
63
+
64
+ Does behavior involve transitions/deferred rendering?
65
+ YES -> Assert user-visible final state, not internal scheduling details
66
+ NO -> Use direct synchronous assertions
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Test Snippets
72
+
73
+ ### Component Interaction Test
74
+
75
+ ```tsx
76
+ import { render, screen } from "@testing-library/react";
77
+ import userEvent from "@testing-library/user-event";
78
+ import { ToggleButton } from "./toggle-button";
79
+
80
+ it("toggles pressed state", async () => {
81
+ const user = userEvent.setup();
82
+ render(<ToggleButton />);
83
+
84
+ const button = screen.getByRole("button", { name: "Off" });
85
+ await user.click(button);
86
+
87
+ expect(screen.getByRole("button", { name: "On" })).toHaveAttribute("aria-pressed", "true");
88
+ });
89
+ ```
90
+
91
+ ### Suspense Fallback Test
92
+
93
+ ```tsx
94
+ import { render, screen } from "@testing-library/react";
95
+ import { ProfileSection } from "./profile-section";
96
+
97
+ it("shows fallback before async content resolves", () => {
98
+ render(<ProfileSection />);
99
+ expect(screen.getByText("Loading profile...")).toBeInTheDocument();
100
+ });
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Review Checklist
106
+
107
+ - Tests respect existing runner/library configuration.
108
+ - `act`-safe patterns are preserved for stateful and async updates.
109
+ - Assertions validate user-visible behavior and contracts.
110
+ - Suspense/transition scenarios are tested where relevant.
111
+ - Mocks are limited to necessary boundaries.
@@ -0,0 +1,41 @@
1
+ {
2
+ "id": "react-guidelines",
3
+ "title": "React Guidelines",
4
+ "description": "Guide React code generation and review using latest stable React verification and modern framework best practices.",
5
+ "portable": true,
6
+ "tags": ["react", "frontend", "workflow", "best-practices"],
7
+ "detectors": ["react"],
8
+ "detectionTriggers": ["auto"],
9
+ "installsFor": ["all"],
10
+ "agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
11
+ "skillMetadata": {
12
+ "author": "skilly-hand",
13
+ "last-edit": "2026-04-04",
14
+ "license": "Apache-2.0",
15
+ "version": "1.0.0",
16
+ "changelog": "Added new react-guidelines skill with component and testing sub-agent routing; improves React-specific generation and review consistency with latest-stable preflight checks; affects portable catalog skill discovery and React workflow guidance",
17
+ "auto-invoke": "Generating, reviewing, or refactoring React code artifacts in React projects",
18
+ "allowed-modes": [
19
+ "component-creator",
20
+ "react-tester"
21
+ ],
22
+ "allowed-tools": [
23
+ "Read",
24
+ "Edit",
25
+ "Write",
26
+ "Glob",
27
+ "Grep",
28
+ "Bash",
29
+ "WebFetch",
30
+ "WebSearch",
31
+ "Task",
32
+ "SubAgent"
33
+ ]
34
+ },
35
+ "files": [
36
+ { "path": "SKILL.md", "kind": "instruction" },
37
+ { "path": "agents/component-creator.md", "kind": "instruction" },
38
+ { "path": "agents/react-tester.md", "kind": "instruction" }
39
+ ],
40
+ "dependencies": []
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.10.0",
3
+ "version": "0.10.3",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "publishConfig": {