@skilly-hand/skilly-hand 0.8.0 → 0.9.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
@@ -16,6 +16,39 @@ All notable changes to this project are documented in this file.
16
16
  ### Removed
17
17
  - _None._
18
18
 
19
+ ## [0.9.0] - 2026-04-04
20
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.9.0)
21
+
22
+ ### Added
23
+
24
+ - `standard` agent option: installs `AGENTS.md` and a `skills/` symlink directly at the project root with no vendor-specific folder (`.claude/`, `.codex/`, etc.).
25
+
26
+ ### Changed
27
+
28
+ - Interactive agent selection now pre-checks only `standard` instead of all five agents, so accepting defaults gives a clean, agent-agnostic installation.
29
+ - `codex` and `standard` both produce `AGENTS.md`; when both are selected the file is written once.
30
+
31
+ ### Fixed
32
+ - _None._
33
+
34
+ ### Removed
35
+ - _None._
36
+
37
+ ## [0.8.1] - 2026-04-04
38
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.8.1)
39
+
40
+ ### Added
41
+ - _None._
42
+
43
+ ### Changed
44
+ - _None._
45
+
46
+ ### Fixed
47
+ - _None._
48
+
49
+ ### Removed
50
+ - _None._
51
+
19
52
  ## [0.8.0] - 2026-04-04
20
53
  [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.8.0)
21
54
 
package/README.md CHANGED
@@ -33,7 +33,6 @@
33
33
  ## Quick Start
34
34
 
35
35
  ```bash
36
- npm install
37
36
  npx skilly-hand
38
37
  ```
39
38
 
@@ -58,6 +57,10 @@ npx skilly-hand
58
57
  | `--json` | Emit machine-readable output and disable interactive prompts |
59
58
  | `--yes`, `-y` | Skip confirmation prompts for mutating commands (`install`, `uninstall`) |
60
59
  | `--dry-run` | Preview install plan without writing files |
60
+ | `--agent`, `-a <name>` | Target a specific assistant (repeatable; e.g. `--agent claude --agent cursor`) |
61
+ | `--include <tag>` | Only include skills matching the given tag |
62
+ | `--exclude <tag>` | Exclude skills matching the given tag |
63
+ | `--cwd <path>` | Run as if in a different directory |
61
64
 
62
65
  ---
63
66
 
@@ -69,8 +72,11 @@ The catalog currently includes:
69
72
  - `agents-root-orchestrator`
70
73
  - `angular-guidelines`
71
74
  - `figma-mcp-0to1`
75
+ - `frontend-design`
76
+ - `life-guard`
72
77
  - `skill-creator`
73
78
  - `spec-driven-development`
79
+ - `test-driven-development`
74
80
  - `token-optimizer`
75
81
 
76
82
  See [catalog/README.md](./catalog/README.md) for generated skill metadata.
@@ -124,10 +130,6 @@ packages/
124
130
  core/ # installation, rendering, and restore logic
125
131
  detectors/ # stack auto-detection
126
132
  catalog/ # catalog access and validation
127
- source/legacy/
128
- agentic-structure/ # original material preserved as reference
129
- tests/
130
- fixtures/ # simulated repos for integration testing
131
133
  ```
132
134
 
133
135
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -352,7 +352,7 @@ async function runInteractiveInstall({
352
352
  choices: services.defaultAgents.map((agent) => ({
353
353
  value: agent,
354
354
  name: agent,
355
- checked: true
355
+ checked: agent === "standard"
356
356
  }))
357
357
  });
358
358
 
@@ -3,7 +3,7 @@ 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 = ["codex", "claude", "cursor", "gemini", "copilot"];
6
+ export const DEFAULT_AGENTS = ["standard", "codex", "claude", "cursor", "gemini", "copilot"];
7
7
  const MANAGED_MARKER = "<!-- Managed by skilly-hand.";
8
8
 
9
9
  function uniq(values) {
@@ -171,7 +171,7 @@ async function ensureSymlink(targetPath, sourcePath, backupsDir, lockData) {
171
171
  function buildInstructionFiles({ agentsMarkdown, selectedAgents }) {
172
172
  const files = [];
173
173
 
174
- if (selectedAgents.includes("codex")) {
174
+ if (selectedAgents.includes("standard") || selectedAgents.includes("codex")) {
175
175
  files.push({ pathParts: ["AGENTS.md"], content: agentsMarkdown });
176
176
  }
177
177
 
@@ -258,17 +258,18 @@ export async function installProject({
258
258
 
259
259
  const skillsSourcePath = path.join(installRoot, "catalog");
260
260
 
261
- if (selectedAgents.includes("codex")) {
262
- await ensureSymlink(path.join(cwd, ".codex", "skills"), skillsSourcePath, backupsDir, lockData);
263
- }
264
- if (selectedAgents.includes("claude")) {
265
- await ensureSymlink(path.join(cwd, ".claude", "skills"), skillsSourcePath, backupsDir, lockData);
266
- }
267
- if (selectedAgents.includes("gemini")) {
268
- await ensureSymlink(path.join(cwd, ".gemini", "skills"), skillsSourcePath, backupsDir, lockData);
269
- }
270
- if (selectedAgents.includes("cursor")) {
271
- await ensureSymlink(path.join(cwd, ".cursor", "skills"), skillsSourcePath, backupsDir, lockData);
261
+ const agentSkillsPaths = {
262
+ standard: "skills",
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
+ }
272
273
  }
273
274
 
274
275
  await writeJson(lockPath, lockData);