@skilly-hand/skilly-hand 0.9.0 → 0.10.2
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 +48 -0
- package/README.md +4 -1
- package/catalog/README.md +2 -2
- package/catalog/skills/accessibility-audit/manifest.json +1 -1
- package/catalog/skills/agents-root-orchestrator/manifest.json +1 -1
- package/catalog/skills/angular-guidelines/manifest.json +1 -1
- package/catalog/skills/figma-mcp-0to1/manifest.json +1 -1
- package/catalog/skills/frontend-design/manifest.json +1 -1
- package/catalog/skills/life-guard/manifest.json +1 -1
- package/catalog/skills/skill-creator/manifest.json +1 -1
- package/catalog/skills/spec-driven-development/manifest.json +1 -1
- package/catalog/skills/test-driven-development/manifest.json +1 -1
- package/catalog/skills/token-optimizer/manifest.json +1 -1
- package/package.json +1 -1
- package/packages/cli/src/bin.js +2 -2
- package/packages/core/src/index.js +62 -34
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,54 @@ All notable changes to this project are documented in this file.
|
|
|
16
16
|
### Removed
|
|
17
17
|
- _None._
|
|
18
18
|
|
|
19
|
+
## [0.10.2] - 2026-04-04
|
|
20
|
+
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.2)
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- _None._
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- _None._
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- _None._
|
|
30
|
+
|
|
31
|
+
### Removed
|
|
32
|
+
- _None._
|
|
33
|
+
|
|
34
|
+
## [0.10.1] - 2026-04-04
|
|
35
|
+
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.1)
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- _None._
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- Removed the `AI Integrated Structures` subsection from `README.md` to keep assistant compatibility docs focused on current install targets.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- _None._
|
|
45
|
+
|
|
46
|
+
### Removed
|
|
47
|
+
- _None._
|
|
48
|
+
|
|
49
|
+
## [0.10.0] - 2026-04-04
|
|
50
|
+
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.10.0)
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
- Added support for `antigravity`, `windsurf`, and `trae` agent targets across install flows.
|
|
54
|
+
- Added native install target coverage for Antigravity (`.agents/skills`, `.agent/skills`, and `.agents/rules/skilly-hand.md`), Windsurf (`.windsurf/skills`), and TRAE (`.trae/skills`).
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
- Refactored installer agent target handling to use centralized install profiles for instruction files and skill symlink paths.
|
|
58
|
+
- Updated CLI help output and repository documentation to reflect expanded assistant compatibility and install targets.
|
|
59
|
+
- Expanded tests for new agent support, install/uninstall behavior, and shared `AGENTS.md` target deduplication.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
- _None._
|
|
63
|
+
|
|
64
|
+
### Removed
|
|
65
|
+
- _None._
|
|
66
|
+
|
|
19
67
|
## [0.9.0] - 2026-04-04
|
|
20
68
|
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.9.0)
|
|
21
69
|
|
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
- **Installs portable AI agent skills** into your project from a curated catalog
|
|
26
26
|
- **Auto-detects your stack** and recommends relevant skills automatically
|
|
27
|
-
- **Supports every major coding assistant** — Claude Code, OpenCode, Cursor, Copilot, Gemini, and
|
|
27
|
+
- **Supports every major coding assistant** — Claude Code, OpenCode, Cursor, Copilot, Gemini, Codex, Antigravity, Windsurf, and TRAE — from a single command
|
|
28
28
|
- **Ships a curated core skill set** including orchestration, SDD workflow, and Figma MCP onboarding
|
|
29
29
|
- **Preserves original agentic structures** in `source/legacy/` as a migration reference
|
|
30
30
|
|
|
@@ -112,11 +112,14 @@ Skills are installed into `.skilly-hand/` with the correct format for each tool:
|
|
|
112
112
|
|
|
113
113
|
| Tool | Install Target |
|
|
114
114
|
| ---- | -------------- |
|
|
115
|
+
| Antigravity | `.agents/skills/`, `.agent/skills/` (compat), `.agents/rules/skilly-hand.md`, `AGENTS.md` |
|
|
115
116
|
| Claude Code / OpenCode | `.claude/skills/` |
|
|
116
117
|
| Cursor | `.cursor/skills/` |
|
|
117
118
|
| GitHub Copilot | `.github/copilot-instructions.md` |
|
|
118
119
|
| Gemini CLI | `.gemini/skills/` |
|
|
119
120
|
| Codex (OpenAI) | `.codex/skills/` |
|
|
121
|
+
| Windsurf | `.windsurf/skills/`, `AGENTS.md` |
|
|
122
|
+
| TRAE | `.trae/skills/`, `AGENTS.md` |
|
|
120
123
|
|
|
121
124
|
---
|
|
122
125
|
|
package/catalog/README.md
CHANGED
|
@@ -8,8 +8,8 @@ Published portable skills consumed by the `skilly-hand` CLI.
|
|
|
8
8
|
| `agents-root-orchestrator` | Author root AGENTS.md as a Where/What/When orchestrator that routes tasks and skill invocation clearly. | core, workflow, orchestration | all |
|
|
9
9
|
| `angular-guidelines` | Guide Angular code generation and review using latest stable Angular verification and modern framework best practices. | angular, frontend, workflow, best-practices | all |
|
|
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
|
-
| `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.
|
|
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,
|
|
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
|
+
| `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
13
|
| `skill-creator` | Create and standardize AI skills with reusable structure, metadata rules, and templates. | core, workflow, authoring | all |
|
|
14
14
|
| `spec-driven-development` | Plan, execute, and verify multi-step work through versioned specs with small, testable tasks. | core, workflow, planning | all |
|
|
15
15
|
| `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 |
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["manual"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-04",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["always"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-03",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["angular"],
|
|
8
8
|
"detectionTriggers": ["auto"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-03",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["manual"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-03",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["manual"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-04",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["manual"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-04",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["always"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-03-27",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["always"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-03",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["manual"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-04",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"detectors": ["always"],
|
|
8
8
|
"detectionTriggers": ["always"],
|
|
9
9
|
"installsFor": ["all"],
|
|
10
|
-
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot"],
|
|
10
|
+
"agentSupport": ["codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"],
|
|
11
11
|
"skillMetadata": {
|
|
12
12
|
"author": "skilly-hand",
|
|
13
13
|
"last-edit": "2026-04-03",
|
package/package.json
CHANGED
package/packages/cli/src/bin.js
CHANGED
|
@@ -91,7 +91,7 @@ function buildHelpText(renderer, appVersion) {
|
|
|
91
91
|
"--json Emit stable JSON output for automation",
|
|
92
92
|
"--yes, -y Skip install/uninstall confirmations",
|
|
93
93
|
"--verbose, -v Reserved for future debug detail",
|
|
94
|
-
"--agent, -a <name> codex|claude|cursor|gemini|copilot (repeatable)",
|
|
94
|
+
"--agent, -a <name> standard|codex|claude|cursor|gemini|copilot|antigravity|windsurf|trae (repeatable)",
|
|
95
95
|
"--cwd <path> Project root (defaults to current directory)",
|
|
96
96
|
"--include <tag> Include only skills matching all tags",
|
|
97
97
|
"--exclude <tag> Exclude skills matching any tag",
|
|
@@ -102,7 +102,7 @@ function buildHelpText(renderer, appVersion) {
|
|
|
102
102
|
"npx skilly-hand",
|
|
103
103
|
"npx skilly-hand install --dry-run",
|
|
104
104
|
"npx skilly-hand detect --json",
|
|
105
|
-
"npx skilly-hand install --agent
|
|
105
|
+
"npx skilly-hand install --agent antigravity --agent windsurf",
|
|
106
106
|
"npx skilly-hand uninstall --yes"
|
|
107
107
|
], { bullet: "-" }));
|
|
108
108
|
|
|
@@ -3,8 +3,45 @@ import path from "node:path";
|
|
|
3
3
|
import { copySkillTo, loadAllSkills, renderAgentsMarkdown, verifyCatalogFiles } from "../../catalog/src/index.js";
|
|
4
4
|
import { detectProject, inspectProjectFiles } from "../../detectors/src/index.js";
|
|
5
5
|
|
|
6
|
-
export const DEFAULT_AGENTS = ["standard", "codex", "claude", "cursor", "gemini", "copilot"];
|
|
6
|
+
export const DEFAULT_AGENTS = ["standard", "codex", "claude", "cursor", "gemini", "copilot", "antigravity", "windsurf", "trae"];
|
|
7
7
|
const MANAGED_MARKER = "<!-- Managed by skilly-hand.";
|
|
8
|
+
const AGENT_INSTALL_PROFILES = {
|
|
9
|
+
standard: {
|
|
10
|
+
instructionFiles: [["AGENTS.md"]],
|
|
11
|
+
skillPaths: [["skills"]]
|
|
12
|
+
},
|
|
13
|
+
codex: {
|
|
14
|
+
instructionFiles: [["AGENTS.md"]],
|
|
15
|
+
skillPaths: [[".codex", "skills"]]
|
|
16
|
+
},
|
|
17
|
+
claude: {
|
|
18
|
+
instructionFiles: [["CLAUDE.md"]],
|
|
19
|
+
skillPaths: [[".claude", "skills"]]
|
|
20
|
+
},
|
|
21
|
+
cursor: {
|
|
22
|
+
instructionFiles: [["cursor-instructions.md"]],
|
|
23
|
+
skillPaths: [[".cursor", "skills"]]
|
|
24
|
+
},
|
|
25
|
+
gemini: {
|
|
26
|
+
instructionFiles: [["GEMINI.md"]],
|
|
27
|
+
skillPaths: [[".gemini", "skills"]]
|
|
28
|
+
},
|
|
29
|
+
copilot: {
|
|
30
|
+
instructionFiles: [[".github", "copilot-instructions.md"]]
|
|
31
|
+
},
|
|
32
|
+
antigravity: {
|
|
33
|
+
instructionFiles: [["AGENTS.md"], [".agents", "rules", "skilly-hand.md"]],
|
|
34
|
+
skillPaths: [[".agents", "skills"], [".agent", "skills"]]
|
|
35
|
+
},
|
|
36
|
+
windsurf: {
|
|
37
|
+
instructionFiles: [["AGENTS.md"]],
|
|
38
|
+
skillPaths: [[".windsurf", "skills"]]
|
|
39
|
+
},
|
|
40
|
+
trae: {
|
|
41
|
+
instructionFiles: [["AGENTS.md"]],
|
|
42
|
+
skillPaths: [[".trae", "skills"]]
|
|
43
|
+
}
|
|
44
|
+
};
|
|
8
45
|
|
|
9
46
|
function uniq(values) {
|
|
10
47
|
return [...new Set(values)];
|
|
@@ -168,30 +205,29 @@ async function ensureSymlink(targetPath, sourcePath, backupsDir, lockData) {
|
|
|
168
205
|
lockData.managedSymlinks.push(targetPath);
|
|
169
206
|
}
|
|
170
207
|
|
|
171
|
-
function
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
if (selectedAgents.includes("standard") || selectedAgents.includes("codex")) {
|
|
175
|
-
files.push({ pathParts: ["AGENTS.md"], content: agentsMarkdown });
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (selectedAgents.includes("claude")) {
|
|
179
|
-
files.push({ pathParts: ["CLAUDE.md"], content: agentsMarkdown });
|
|
180
|
-
}
|
|
208
|
+
function buildInstallTargets(selectedAgents) {
|
|
209
|
+
const instructionTargets = new Map();
|
|
210
|
+
const skillTargets = new Map();
|
|
181
211
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
212
|
+
for (const agent of selectedAgents) {
|
|
213
|
+
const profile = AGENT_INSTALL_PROFILES[agent];
|
|
214
|
+
if (!profile) {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
185
217
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
218
|
+
for (const pathParts of profile.instructionFiles || []) {
|
|
219
|
+
instructionTargets.set(path.join(...pathParts), pathParts);
|
|
220
|
+
}
|
|
189
221
|
|
|
190
|
-
|
|
191
|
-
|
|
222
|
+
for (const pathParts of profile.skillPaths || []) {
|
|
223
|
+
skillTargets.set(path.join(...pathParts), pathParts);
|
|
224
|
+
}
|
|
192
225
|
}
|
|
193
226
|
|
|
194
|
-
return
|
|
227
|
+
return {
|
|
228
|
+
instructionTargets: [...instructionTargets.values()],
|
|
229
|
+
skillTargets: [...skillTargets.values()]
|
|
230
|
+
};
|
|
195
231
|
}
|
|
196
232
|
|
|
197
233
|
export async function installProject({
|
|
@@ -252,24 +288,16 @@ export async function installProject({
|
|
|
252
288
|
|
|
253
289
|
await writeFile(path.join(installRoot, "AGENTS.md"), agentsMarkdown, "utf8");
|
|
254
290
|
|
|
255
|
-
|
|
256
|
-
|
|
291
|
+
const { instructionTargets, skillTargets } = buildInstallTargets(selectedAgents);
|
|
292
|
+
|
|
293
|
+
for (const pathParts of instructionTargets) {
|
|
294
|
+
await ensureManagedTextFile(path.join(cwd, ...pathParts), agentsMarkdown, backupsDir, lockData);
|
|
257
295
|
}
|
|
258
296
|
|
|
259
297
|
const skillsSourcePath = path.join(installRoot, "catalog");
|
|
260
298
|
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
codex: path.join(".codex", "skills"),
|
|
264
|
-
claude: path.join(".claude", "skills"),
|
|
265
|
-
gemini: path.join(".gemini", "skills"),
|
|
266
|
-
cursor: path.join(".cursor", "skills")
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
for (const agent of selectedAgents) {
|
|
270
|
-
if (agentSkillsPaths[agent]) {
|
|
271
|
-
await ensureSymlink(path.join(cwd, agentSkillsPaths[agent]), skillsSourcePath, backupsDir, lockData);
|
|
272
|
-
}
|
|
299
|
+
for (const pathParts of skillTargets) {
|
|
300
|
+
await ensureSymlink(path.join(cwd, ...pathParts), skillsSourcePath, backupsDir, lockData);
|
|
273
301
|
}
|
|
274
302
|
|
|
275
303
|
await writeJson(lockPath, lockData);
|