@skilly-hand/skilly-hand 0.8.1 → 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,24 @@ 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
+
19
37
  ## [0.8.1] - 2026-04-04
20
38
  [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.8.1)
21
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.8.1",
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);