agentinit 1.21.0 → 1.22.1

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
@@ -1,3 +1,17 @@
1
+ ## [1.22.1](https://github.com/agentinit/agentinit/compare/v1.22.0...v1.22.1) (2026-04-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **skills:** honor global-only Hermes installs ([5ad8120](https://github.com/agentinit/agentinit/commit/5ad8120e63afbb74ced6180a80d2cff761cb3fae))
7
+
8
+ # [1.22.0](https://github.com/agentinit/agentinit/compare/v1.21.0...v1.22.0) (2026-04-28)
9
+
10
+
11
+ ### Features
12
+
13
+ * **skills:** resolve bundled plugins from skill names ([74a8698](https://github.com/agentinit/agentinit/commit/74a8698021b70bbfa602c0c39283b6dfd46276d4))
14
+
1
15
  # [1.21.0](https://github.com/agentinit/agentinit/compare/v1.20.2...v1.21.0) (2026-04-26)
2
16
 
3
17
 
@@ -249,7 +263,7 @@
249
263
 
250
264
  * support the `openai` marketplace for skills and plugin installs
251
265
  * add OpenClaw as a skills target with shared project installs via `.agents/skills/` and dedicated global installs via `~/.openclaw/skills/`
252
- * add Hermes as a skills target with shared project installs via `.agents/skills/` and dedicated global installs via `~/.hermes/skills/`
266
+ * add Hermes as a global-only skills target via `~/.hermes/skills/`
253
267
  * warn and fall back to GitHub repos for marketplace misses, marking allowlisted repos like `openai/codex-plugin-cc` as verified
254
268
  * install Claude Code-native plugin payloads during `plugins install` when Claude-only components are detected and Claude Code is targeted, registering native marketplace metadata under `~/.claude/plugins`
255
269
 
package/README.md CHANGED
@@ -1,19 +1,60 @@
1
1
  # AgentInit
2
2
 
3
- > A CLI tool for managing and configuring AI coding agents
3
+ > Keep your AI coding agents in sync from one `agents.md` file.
4
4
 
5
- Unified CLI for configuring AI coding agents across editors and tools.
5
+ [![npm version](https://img.shields.io/npm/v/agentinit)](https://www.npmjs.com/package/agentinit)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
+ [![Node >=18](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](package.json)
8
+
9
+ AgentInit is a CLI for teams and solo developers who use more than one coding agent and are tired of repeating the same setup in different formats. Define your standards once in `agents.md`, generate the files each tool expects, install shared skills and MCPs, and keep the whole setup manageable over time.
10
+
11
+ It works with Claude Code, Cursor, Windsurf, Copilot, Codex CLI, Gemini CLI, RooCode, Zed, Droid, and more.
12
+
13
+ ## Why AgentInit?
14
+
15
+ Most agent setups drift fast.
16
+
17
+ You tweak `CLAUDE.md`, forget to update `.cursorrules`, install a skill in one tool but not another, and a week later every environment behaves a little differently. AgentInit gives you one source of truth for instructions, one CLI for setup, and one place to manage skills, rules, and MCP servers.
18
+
19
+ Use it when you want to:
20
+
21
+ - keep multiple agent tools aligned without manual copy-paste
22
+ - bootstrap new projects with stack-aware guidance
23
+ - install shared skills and MCP servers in a consistent way
24
+ - apply changes safely with previews, backups, and reverts
25
+ - make your agent setup easier to onboard, review, and maintain
26
+
27
+ ## Table of Contents
28
+
29
+ - [Features](#features)
30
+ - [Quick Start](#quick-start)
31
+ - [Commands](#commands)
32
+ - [How It Works](#how-it-works)
33
+ - [Project Structure](#project-structure)
34
+ - [Configuration](#configuration)
35
+ - [Stack Detection](#stack-detection)
36
+ - [MCP Registry](#mcp-registry)
37
+ - [Library API](#library-api)
38
+ - [Development](#development)
39
+ - [Contributing](#contributing)
40
+ - [License](#license)
6
41
 
7
42
  ## Features
8
43
 
9
- - **Universal Agent Configuration**: Unified `agents.md` file that syncs with all major AI coding agents
10
- - **Smart Stack Detection**: Automatically detects project language, framework, and tools
11
- - **Bidirectional Sync**: Keep agent configurations in sync across Claude, Cursor, Windsurf, and more
12
- - **MCP Management**: Configure, inspect, and verify Model Context Protocol servers
13
- - **Rules Templates**: Apply coding best practices with predefined rule templates (Git, testing, docs, linting)
14
- - **Plugin Marketplace**: Install portable skills and MCP bundles from built-in or custom marketplaces
15
- - **Project Templates**: Pre-built templates for web apps, CLI tools, libraries, and more
16
- - **Stack-Aware Guidance**: Customized instructions based on your technology stack
44
+ - **One source of truth**: Write and maintain shared instructions in `agents.md`
45
+ - **Multi-agent sync**: Generate the right files for Claude, Cursor, Windsurf, Copilot, Codex CLI, and other supported tools
46
+ - **Stack-aware project setup**: Detect your language, framework, package manager, and test tooling to generate more useful defaults
47
+ - **Skills, plugins, and MCPs**: Install reusable capabilities from local paths, Git repositories, or marketplaces
48
+ - **Operational safety**: Preview changes, create backups, revert managed files, and track installs with a lockfile
49
+ - **Shared standards support**: Use `AGENTS.md` where supported and alias `CLAUDE.md` when you want a shared canonical rules file
50
+
51
+ ## How It Works
52
+
53
+ 1. Run `agentinit init` to generate an `agents.md` file for your project.
54
+ 2. Customize the instructions, standards, and sub-agent roles you want all tools to follow.
55
+ 3. Run `agentinit sync` or `agentinit apply` to write tool-specific files, install project-owned skills, and keep generated artifacts in sync.
56
+
57
+ If you already have agent files in a repo, start with `agentinit detect` to inspect what AgentInit can work with before you standardize it.
17
58
 
18
59
  ## Quick Start
19
60
 
@@ -27,16 +68,16 @@ npm install -g agentinit
27
68
  ### Basic Usage
28
69
 
29
70
  ```bash
30
- # Initialize agent configuration for your project
71
+ # Initialize a shared agent configuration
31
72
  agentinit init
32
73
 
33
- # Detect current project stack and existing configurations
74
+ # Review what AgentInit detects in the current repo
34
75
  agentinit detect
35
76
 
36
- # Sync agents.md with agent-specific files
77
+ # Sync agents.md into agent-specific files
37
78
  agentinit sync
38
79
 
39
- # Apply project-owned agent files, skills, and ignore management
80
+ # Apply synced files, project-owned skills, and managed ignore entries
40
81
  agentinit apply
41
82
 
42
83
  # Add and verify an MCP server
@@ -44,6 +85,22 @@ agentinit mcp add --verify \
44
85
  --mcp-stdio everything "npx -y @modelcontextprotocol/server-everything"
45
86
  ```
46
87
 
88
+ ### A Typical Flow
89
+
90
+ ```bash
91
+ # 1. Generate a starting point
92
+ agentinit init --template cli
93
+
94
+ # 2. Edit agents.md with your standards
95
+
96
+ # 3. Write the files each agent expects
97
+ agentinit apply
98
+
99
+ # 4. Add shared skills or MCP servers
100
+ agentinit skills add openai-docs --agent claude
101
+ agentinit mcp verify --all
102
+ ```
103
+
47
104
  ### Output Controls
48
105
 
49
106
  ```bash
@@ -233,13 +290,13 @@ agentinit skills update openai-docs --everywhere
233
290
  agentinit skills remove openai-docs
234
291
  ```
235
292
 
236
- If a GitHub or local Claude bundle contains multiple plugins, `agentinit skills add` prompts you to choose one or more bundled plugins to inspect or install. Press `Space` to select, `A` to select or deselect all, and `Enter` to confirm. Use `--all` to skip the prompt and install or inspect every bundled plugin. In non-interactive `--yes` mode, ambiguous multi-plugin bundles still fail unless `--all` is provided.
293
+ Skills are installed into a canonical store (`.agents/skills/` for project, `~/.agents/skills/` for global) with agent-specific paths symlinked automatically. Bare skill names resolve from your default marketplace or fall back to the public catalog at `vercel-labs/agent-skills`. Supports GitHub, GitLab, Bitbucket, local paths, and marketplace sources.
237
294
 
238
- Skills are installed into a canonical store by default (`.agents/skills/` for project, `~/.agents/skills/` for global), with agent-specific paths symlinked automatically. Bare skill names resolve from your configured default marketplace, falling back to the public catalog at `vercel-labs/agent-skills`. Use `./name` for local paths, `owner/repo` for GitHub repos, `gitlab:group/repo` for GitLab repos, `gitlab:group/repo//path/to/skill` for GitLab subdirectories, `bitbucket:workspace/repo` for Bitbucket, or `--from <marketplace>` for explicit marketplace sources.
295
+ If a GitHub or local Claude bundle contains multiple plugins, `agentinit skills add` prompts you to choose one or more bundled plugins to inspect or install. Use `--all` to skip the prompt and install or inspect every bundled plugin. In non-interactive `--yes` mode, AgentInit can also auto-resolve bundled plugins from `--skill` when those skill names map uniquely; ambiguous selections still fail with guidance.
239
296
 
240
- When you re-run `agentinit skills add`, AgentInit compares the installed skill payload with the source before overwriting anything. Unchanged skills are reported as already up to date. If an installed skill has changed, interactive runs ask for confirmation before replacing it, while `--yes` applies the update automatically. Use `--prefix <text>` to prepend installed skill names for grouping, or press `P` during the interactive skill picker to set it on the fly. Installs are security-scanned by default; risky helper scripts are blocked, while risky Markdown guidance is surfaced as a warning. Use `--no-scan` to skip scanning or `--allow-risky` to proceed when high-risk executable patterns are detected.
297
+ Re-running `agentinit skills add` compares the source with the installed version and asks for confirmation before overwriting changed skills. Installs are security-scanned by default; use `--no-scan` to skip or `--allow-risky` to proceed with high-risk patterns.
241
298
 
242
- `agentinit skills update [name]` replays tracked project-scoped installs from their original source in the current project. Use `agentinit skills update <name> --everywhere` to update that skill across every tracked target, including global installs.
299
+ `agentinit skills update [name]` replays tracked installs from their original source. Use `agentinit skills update <name> --everywhere` to update that skill across every tracked target in the global lockfile.
243
300
 
244
301
  ### `agentinit lock`
245
302
 
@@ -297,9 +354,9 @@ agentinit plugins list
297
354
  agentinit plugins remove code-review
298
355
  ```
299
356
 
300
- Bare plugin names resolve through your configured default marketplace. Built-in marketplaces include `claude` and `openai`; add custom ones with `agentinit config marketplaces add`. For Claude-format plugins, native bundles are installed into `~/.claude/plugins` alongside portable skill and MCP installs.
357
+ Plugins install into `~/.claude/plugins` (for Claude-format bundles) or the canonical skill store. Built-in marketplaces include `claude` and `openai`.
301
358
 
302
- If a GitHub or local Claude bundle contains multiple plugins, `agentinit plugins install` prompts you to choose one or more bundled plugins to inspect or install. Press `Space` to select, `A` to select or deselect all, and `Enter` to confirm. Use `--all` to skip the prompt and install or inspect every bundled plugin. In non-interactive `--yes` mode, ambiguous multi-plugin bundles still fail unless `--all` is provided.
359
+ If a GitHub or local Claude bundle contains multiple plugins, `agentinit plugins install` prompts you to choose which bundled plugins to inspect or install. Use `--all` to skip the prompt. In non-interactive `--yes` mode, ambiguous multi-plugin bundles still fail unless `--all` is provided.
303
360
 
304
361
  ### `agentinit config`
305
362
 
@@ -377,7 +434,7 @@ This is a TypeScript project using Next.js...
377
434
  - Write clean, maintainable code...
378
435
 
379
436
  ### Testing Strategy
380
- - Write unit tests using Jest...
437
+ - Write unit tests using vitest...
381
438
 
382
439
  ## Agent Instructions
383
440
  ### General Behavior
@@ -515,10 +572,10 @@ bun install
515
572
  bun run build
516
573
 
517
574
  # Run locally
518
- node dist/index.js --help
575
+ node dist/cli.js --help
519
576
  ```
520
577
 
521
- ### Project Structure
578
+ ### Source Structure
522
579
 
523
580
  ```
524
581
  src/
@@ -535,14 +592,13 @@ src/
535
592
  │ ├── installLock.ts # Global install lock state
536
593
  │ ├── templateEngine.ts # Template processing
537
594
  │ └── propagator.ts # Config sync engine
538
- ├── registry/ # MCP registry
539
595
  ├── utils/ # Utilities
540
596
  └── types/ # TypeScript definitions
541
597
  ```
542
598
 
543
599
  ## Contributing
544
600
 
545
- We welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md) for details.
601
+ Issues and pull requests are welcome. Open an issue if you want to discuss a new agent, marketplace behavior, or MCP workflow before making a larger change.
546
602
 
547
603
  ## License
548
604
 
@@ -550,6 +606,4 @@ MIT License - see [LICENSE](LICENSE) file for details.
550
606
 
551
607
  ## Links
552
608
 
553
- - [Documentation](https://docs.agentinit.dev)
554
- - [MCP Registry](https://registry.agentinit.dev)
555
609
  - [GitHub Issues](https://github.com/agentinit/agentinit/issues)
@@ -125,6 +125,10 @@ export declare abstract class Agent {
125
125
  * Returns null if skills are not supported
126
126
  */
127
127
  getSkillsDir(projectPath: string, global?: boolean): string | null;
128
+ /**
129
+ * Return the effective skills install scope for this agent.
130
+ */
131
+ getSkillsScope(global?: boolean): 'project' | 'global';
128
132
  /**
129
133
  * Return the project-level shared rules standard used by this agent, if any.
130
134
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/agents/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/agents/Agent.ts"],"names":[],"mappings":"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"}
@@ -185,11 +185,19 @@ export class Agent {
185
185
  getSkillsDir(projectPath, global) {
186
186
  if (!this.definition.skillPaths)
187
187
  return null;
188
- if (global) {
188
+ if (this.getSkillsScope(global) === 'global') {
189
189
  return this.definition.skillPaths.global.replace('~', homedir());
190
190
  }
191
191
  return resolve(projectPath, this.definition.skillPaths.project);
192
192
  }
193
+ /**
194
+ * Return the effective skills install scope for this agent.
195
+ */
196
+ getSkillsScope(global) {
197
+ return global || this.definition.skillsConfigScope === 'global-only'
198
+ ? 'global'
199
+ : 'project';
200
+ }
193
201
  /**
194
202
  * Return the project-level shared rules standard used by this agent, if any.
195
203
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/agents/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/agents/Agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HermesAgent.d.ts","sourceRoot":"","sources":["../../src/agents/HermesAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,KAAK,EAAmB,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE,qBAAa,WAAY,SAAQ,KAAK;;IAiC9B,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAY1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhF,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5E,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IAIlB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIhD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IAIxD,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM;CAGvD"}
1
+ {"version":3,"file":"HermesAgent.d.ts","sourceRoot":"","sources":["../../src/agents/HermesAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,KAAK,EAAmB,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE,qBAAa,WAAY,SAAQ,KAAK;;IAkC9B,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAY1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhF,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5E,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IAIlB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIhD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IAIxD,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM;CAGvD"}
@@ -26,6 +26,7 @@ export class HermesAgent extends Agent {
26
26
  project: '.agents/skills/',
27
27
  global: '~/.hermes/skills/',
28
28
  },
29
+ skillsConfigScope: 'global-only',
29
30
  projectStandards: {
30
31
  skills: 'agents',
31
32
  },
@@ -1 +1 @@
1
- {"version":3,"file":"HermesAgent.js","sourceRoot":"","sources":["../../src/agents/HermesAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC;QACE,MAAM,UAAU,GAAoB;YAClC,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE;gBACZ,GAAG,EAAE;oBACH,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,KAAK;iBACX;gBACD,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;aACb;YACD,WAAW,EAAE,EAAE;YACf,gBAAgB,EAAE,qBAAqB;YACvC,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE;gBACV,OAAO,EAAE,iBAAiB;gBAC1B,MAAM,EAAE,mBAAmB;aAC5B;YACD,gBAAgB,EAAE;gBAChB,MAAM,EAAE,QAAQ;aACjB;SACF,CAAC;QAEF,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB,EAAE,QAA2B;QACpE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,WAAmB;QAC7D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,MAAoB,EACpB,gBAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,oBAAoB,CAAC,QAAgB;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uBAAuB,CAAC,QAAgB;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,SAAwB;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"HermesAgent.js","sourceRoot":"","sources":["../../src/agents/HermesAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC;QACE,MAAM,UAAU,GAAoB;YAClC,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE;gBACZ,GAAG,EAAE;oBACH,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,KAAK;iBACX;gBACD,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;aACb;YACD,WAAW,EAAE,EAAE;YACf,gBAAgB,EAAE,qBAAqB;YACvC,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE;gBACV,OAAO,EAAE,iBAAiB;gBAC1B,MAAM,EAAE,mBAAmB;aAC5B;YACD,iBAAiB,EAAE,aAAa;YAChC,gBAAgB,EAAE;gBAChB,MAAM,EAAE,QAAQ;aACjB;SACF,CAAC;QAEF,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB,EAAE,QAA2B;QACpE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,WAAmB;QAC7D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,MAAoB,EACpB,gBAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,oBAAoB,CAAC,QAAgB;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uBAAuB,CAAC,QAAgB;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,SAAwB;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
package/dist/cli.js CHANGED
@@ -12636,11 +12636,14 @@ class Agent {
12636
12636
  getSkillsDir(projectPath, global3) {
12637
12637
  if (!this.definition.skillPaths)
12638
12638
  return null;
12639
- if (global3) {
12639
+ if (this.getSkillsScope(global3) === "global") {
12640
12640
  return this.definition.skillPaths.global.replace("~", homedir2());
12641
12641
  }
12642
12642
  return resolve6(projectPath, this.definition.skillPaths.project);
12643
12643
  }
12644
+ getSkillsScope(global3) {
12645
+ return global3 || this.definition.skillsConfigScope === "global-only" ? "global" : "project";
12646
+ }
12644
12647
  getProjectRulesStandard() {
12645
12648
  return this.definition.projectStandards?.rules || null;
12646
12649
  }
@@ -16148,6 +16151,7 @@ class HermesAgent extends Agent {
16148
16151
  project: ".agents/skills/",
16149
16152
  global: "~/.hermes/skills/"
16150
16153
  },
16154
+ skillsConfigScope: "global-only",
16151
16155
  projectStandards: {
16152
16156
  skills: "agents"
16153
16157
  }
@@ -19745,7 +19749,7 @@ class SkillsManager {
19745
19749
  mode: "copy"
19746
19750
  };
19747
19751
  }
19748
- const canonicalPath = this.resolveInstallPath(this.getCanonicalSkillsDir(projectPath, options2.global ?? false), normalizedSkillName);
19752
+ const canonicalPath = this.resolveInstallPath(this.getCanonicalSkillsDir(projectPath, agent.getSkillsScope(options2.global) === "global"), normalizedSkillName);
19749
19753
  if (agentPath === canonicalPath) {
19750
19754
  return {
19751
19755
  path: canonicalPath,
@@ -20200,12 +20204,14 @@ class SkillsManager {
20200
20204
  for (const entry of entries) {
20201
20205
  const hashPath = entry.canonicalPath || entry.path;
20202
20206
  const contentHash = await hashDirectory(hashPath);
20207
+ const agent = this.agentManager.getAgentById(entry.agent);
20208
+ const scope = agent?.getSkillsScope(options2.global) ?? (options2.global ? "global" : "project");
20203
20209
  await lock.recordSkill({
20204
20210
  action,
20205
20211
  name: entry.skill.name,
20206
20212
  projectPath: resolve9(projectPath),
20207
20213
  agents: [entry.agent],
20208
- scope: options2.global ? "global" : "project",
20214
+ scope,
20209
20215
  source: lockSource,
20210
20216
  installPath: entry.path,
20211
20217
  mode: entry.mode,
@@ -20235,7 +20241,7 @@ class SkillsManager {
20235
20241
  if (!agent.supportsSkills())
20236
20242
  continue;
20237
20243
  const scopes = [];
20238
- if (!options2.global) {
20244
+ if (!options2.global && agent.getSkillsScope(false) === "project") {
20239
20245
  scopes.push({ scope: "project", dir: agent.getSkillsDir(projectPath, false) });
20240
20246
  }
20241
20247
  scopes.push({ scope: "global", dir: agent.getSkillsDir(projectPath, true) });
@@ -42327,27 +42333,134 @@ init_skills();
42327
42333
  var normalizeSkillPrefix = function(prefix) {
42328
42334
  return prefix?.trim() ?? "";
42329
42335
  };
42330
- var matchesSelectedSkillName = function(skillName, selectedNames, prefix) {
42331
- if (selectedNames.has(skillName.toLowerCase())) {
42336
+ var matchesSelectedSkillValue = function(skillName, selectedName, prefix) {
42337
+ const normalizedSkillName = skillName.trim().toLowerCase();
42338
+ const normalizedSelectedName = selectedName.trim().toLowerCase();
42339
+ if (!normalizedSelectedName) {
42340
+ return false;
42341
+ }
42342
+ if (normalizedSelectedName === normalizedSkillName) {
42332
42343
  return true;
42333
42344
  }
42334
- const normalizedPrefix = normalizeSkillPrefix(prefix);
42345
+ const normalizedPrefix = normalizeSkillPrefix(prefix).toLowerCase();
42335
42346
  if (!normalizedPrefix) {
42336
42347
  return false;
42337
42348
  }
42338
- return selectedNames.has(`${normalizedPrefix}${skillName}`.toLowerCase());
42349
+ return normalizedSelectedName === `${normalizedPrefix}${normalizedSkillName}`;
42350
+ };
42351
+ var matchesSelectedSkillName = function(skillName, selectedNames, prefix) {
42352
+ return [...selectedNames].some((selectedName) => matchesSelectedSkillValue(skillName, selectedName, prefix));
42353
+ };
42354
+ async function resolveBundlePluginsForSelectedSkills(skillsManager5, source, projectPath, entries, selectedSkillNames, prefix, options2 = {}) {
42355
+ const requestedSkillNames = Array.from(new Set(selectedSkillNames.map((name) => name.trim().toLowerCase()).filter(Boolean)));
42356
+ if (requestedSkillNames.length === 0) {
42357
+ return {
42358
+ pluginNames: null,
42359
+ ambiguousSkillNames: [],
42360
+ unresolvedSkillNames: [],
42361
+ hadDiscoveryError: false
42362
+ };
42363
+ }
42364
+ const matchedPluginNamesBySkill = new Map;
42365
+ const matchedSkills = new Map;
42366
+ const prioritizedEntries = [
42367
+ ...entries.filter((entry) => requestedSkillNames.some((skillName) => matchesSelectedSkillValue(entry.name, skillName, prefix))),
42368
+ ...entries.filter((entry) => !requestedSkillNames.some((skillName) => matchesSelectedSkillValue(entry.name, skillName, prefix)))
42369
+ ];
42370
+ for (const entry of prioritizedEntries) {
42371
+ let discoveredSkills;
42372
+ try {
42373
+ const discovered = await skillsManager5.discoverFromSource(source, projectPath, {
42374
+ ...options2.from !== undefined ? { from: options2.from } : {},
42375
+ pluginName: entry.name
42376
+ });
42377
+ discoveredSkills = discovered.skills;
42378
+ } catch {
42379
+ return {
42380
+ pluginNames: null,
42381
+ ambiguousSkillNames: [],
42382
+ unresolvedSkillNames: requestedSkillNames,
42383
+ hadDiscoveryError: true
42384
+ };
42385
+ }
42386
+ for (const skill of discoveredSkills) {
42387
+ for (const requestedSkillName of requestedSkillNames) {
42388
+ if (!matchesSelectedSkillValue(skill.name, requestedSkillName, prefix)) {
42389
+ continue;
42390
+ }
42391
+ const existingPluginNames = matchedPluginNamesBySkill.get(requestedSkillName) || new Set;
42392
+ existingPluginNames.add(entry.name);
42393
+ matchedPluginNamesBySkill.set(requestedSkillName, existingPluginNames);
42394
+ matchedSkills.set(`${entry.name}:${skill.path}:${skill.name}`, skill);
42395
+ }
42396
+ }
42397
+ }
42398
+ const unresolvedSkillNames = requestedSkillNames.filter((skillName) => !matchedPluginNamesBySkill.has(skillName));
42399
+ const ambiguousSkillNames = requestedSkillNames.filter((skillName) => {
42400
+ const pluginNames = matchedPluginNamesBySkill.get(skillName);
42401
+ return !!pluginNames && pluginNames.size > 1;
42402
+ });
42403
+ if (unresolvedSkillNames.length > 0 || ambiguousSkillNames.length > 0) {
42404
+ return {
42405
+ pluginNames: null,
42406
+ ambiguousSkillNames,
42407
+ unresolvedSkillNames,
42408
+ hadDiscoveryError: false
42409
+ };
42410
+ }
42411
+ const selectedPluginNames = new Set;
42412
+ for (const requestedSkillName of requestedSkillNames) {
42413
+ for (const pluginName of matchedPluginNamesBySkill.get(requestedSkillName) || []) {
42414
+ selectedPluginNames.add(pluginName);
42415
+ }
42416
+ }
42417
+ return {
42418
+ pluginNames: entries.filter((entry) => selectedPluginNames.has(entry.name)).map((entry) => entry.name),
42419
+ ambiguousSkillNames: [],
42420
+ unresolvedSkillNames: [],
42421
+ hadDiscoveryError: false
42422
+ };
42423
+ }
42424
+ async function collectBundlePluginSkills(skillsManager5, source, projectPath, pluginNames, options2 = {}, preparedPlugin) {
42425
+ const collectedSkills = new Map;
42426
+ for (const pluginName of pluginNames) {
42427
+ const pluginSkills = preparedPlugin?.name === pluginName ? preparedPlugin.skills : (await skillsManager5.discoverFromSource(source, projectPath, {
42428
+ ...options2.from !== undefined ? { from: options2.from } : {},
42429
+ pluginName
42430
+ })).skills;
42431
+ for (const skill of pluginSkills) {
42432
+ collectedSkills.set(`${pluginName}:${skill.path}:${skill.name}`, skill);
42433
+ }
42434
+ }
42435
+ return [...collectedSkills.values()];
42436
+ }
42437
+ var formatBundlePluginResolutionError = function(resolution) {
42438
+ const details = [];
42439
+ if (resolution.ambiguousSkillNames.length > 0) {
42440
+ details.push(`ambiguous skill name${resolution.ambiguousSkillNames.length === 1 ? "" : "s"}: ${resolution.ambiguousSkillNames.join(", ")}`);
42441
+ }
42442
+ if (resolution.unresolvedSkillNames.length > 0) {
42443
+ details.push(`unknown skill name${resolution.unresolvedSkillNames.length === 1 ? "" : "s"}: ${resolution.unresolvedSkillNames.join(", ")}`);
42444
+ }
42445
+ const suffix = details.length > 0 ? ` (${details.join("; ")})` : "";
42446
+ return `Error: Could not resolve bundled plugins from --skill in non-interactive mode${suffix}. Use --all, remove --yes to choose plugins interactively, or provide skill names that map to a unique bundled plugin.`;
42339
42447
  };
42340
42448
  function registerSkillsCommand(program2) {
42341
42449
  const marketplaceHelp = getMarketplaceIds().join(", ");
42342
42450
  const skills3 = program2.command("skills").alias("skill").description("Manage agent skills");
42343
42451
  skills3.command("add <source>").description("Add skills from a marketplace, hosted Git repo, or local path").option("--from <marketplace>", `Marketplace source override (available: ${marketplaceHelp})`).option("-g, --global", "Install skills globally").option("-a, --agent <agents...>", "Target specific agent(s)").option("-s, --skill <names...>", "Install only specific skills by name").option("-l, --list", "List available skills from the source without installing").option("--all", "Select all bundled plugins when the source contains multiple plugins").option("--copy", "Copy skill files instead of symlinking").option("--prefix <prefix>", "Prefix installed skill names").option("--no-scan", "Skip security scanning before installation").option("--allow-risky", "Install even if scanning finds high-risk patterns").option("-y, --yes", "Skip prompts, auto-detect project-configured agents, and apply available skill updates").action(async (source, options2) => {
42344
42452
  logger.titleBox("AgentInit Skills");
42453
+ const projectPath = process.cwd();
42345
42454
  const agentManager9 = new AgentManager;
42346
42455
  const skillsManager5 = new SkillsManager(agentManager9);
42456
+ let targetAgents = options2.agent;
42457
+ let targetGlobal = options2.global;
42458
+ let selectedSkillNames = options2.skill;
42459
+ let installPrefix = options2.prefix;
42347
42460
  if (options2.list) {
42348
42461
  const spinner = ora("Discovering skills...").start();
42349
42462
  try {
42350
- const result = await skillsManager5.discoverFromSource(source, process.cwd(), {
42463
+ const result = await skillsManager5.discoverFromSource(source, projectPath, {
42351
42464
  from: options2.from
42352
42465
  });
42353
42466
  spinner.stop();
@@ -42362,7 +42475,7 @@ function registerSkillsCommand(program2) {
42362
42475
  for (const pluginName of selected) {
42363
42476
  const retrySpinner = ora(`Discovering skills from ${pluginName}...`).start();
42364
42477
  try {
42365
- const result = await skillsManager5.discoverFromSource(source, process.cwd(), {
42478
+ const result = await skillsManager5.discoverFromSource(source, projectPath, {
42366
42479
  from: options2.from,
42367
42480
  pluginName
42368
42481
  });
@@ -42384,26 +42497,42 @@ function registerSkillsCommand(program2) {
42384
42497
  let selectedPluginNames;
42385
42498
  let preparedSkills = [];
42386
42499
  try {
42387
- const prepared = await skillsManager5.prepareSource(source, process.cwd(), {
42500
+ const prepared = await skillsManager5.prepareSource(source, projectPath, {
42388
42501
  from: options2.from
42389
42502
  });
42390
42503
  preparedSkills = prepared.skills;
42391
42504
  verifySpinner.stop();
42392
42505
  } catch (error) {
42393
- if (error instanceof MultipleBundlePluginsError && (options2.all || !options2.yes)) {
42506
+ if (error instanceof MultipleBundlePluginsError) {
42394
42507
  verifySpinner.stop();
42395
- const selected = await selectBundlePlugins(error.entries, "install", { selectAll: options2.all });
42396
- if (!selected) {
42508
+ const bundleResolution = selectedSkillNames && selectedSkillNames.length > 0 ? await resolveBundlePluginsForSelectedSkills(skillsManager5, source, projectPath, error.entries, selectedSkillNames, installPrefix, { from: options2.from }) : null;
42509
+ let pluginSelection = bundleResolution?.pluginNames ?? null;
42510
+ if (!pluginSelection && (options2.all || !options2.yes)) {
42511
+ pluginSelection = await selectBundlePlugins(error.entries, "install", { selectAll: options2.all });
42512
+ if (!pluginSelection) {
42513
+ return;
42514
+ }
42515
+ }
42516
+ if (!pluginSelection) {
42517
+ verifySpinner.fail("Failed to verify skill source");
42518
+ if (options2.yes && bundleResolution && !bundleResolution.hadDiscoveryError) {
42519
+ logger.error(formatBundlePluginResolutionError(bundleResolution));
42520
+ } else {
42521
+ logger.error(`Error: ${error.message}`);
42522
+ }
42397
42523
  return;
42398
42524
  }
42399
- selectedPluginNames = selected;
42525
+ selectedPluginNames = pluginSelection;
42400
42526
  const retrySpinner = ora("Verifying skill source...").start();
42401
42527
  try {
42402
- const prepared = await skillsManager5.prepareSource(source, process.cwd(), {
42528
+ const prepared = await skillsManager5.prepareSource(source, projectPath, {
42403
42529
  from: options2.from,
42404
42530
  ...selectedPluginNames[0] ? { pluginName: selectedPluginNames[0] } : {}
42405
42531
  });
42406
- preparedSkills = prepared.skills;
42532
+ preparedSkills = selectedPluginNames.length > 1 ? await collectBundlePluginSkills(skillsManager5, source, projectPath, selectedPluginNames, { from: options2.from }, selectedPluginNames[0] ? {
42533
+ name: selectedPluginNames[0],
42534
+ skills: prepared.skills
42535
+ } : undefined) : prepared.skills;
42407
42536
  retrySpinner.stop();
42408
42537
  } catch (retryError) {
42409
42538
  retrySpinner.fail("Failed to verify skill source");
@@ -42416,17 +42545,13 @@ function registerSkillsCommand(program2) {
42416
42545
  return;
42417
42546
  }
42418
42547
  }
42419
- let targetAgents = options2.agent;
42420
- let targetGlobal = options2.global;
42421
- let selectedSkillNames = options2.skill;
42422
- let installPrefix = options2.prefix;
42423
42548
  if (!options2.yes && (!selectedSkillNames || selectedSkillNames.length === 0) && preparedSkills.length > 1) {
42424
42549
  if (selectedPluginNames && selectedPluginNames.length > 1) {
42425
42550
  logger.info("Multiple bundled plugins selected; installing all skills from each selected plugin. Use --skill to filter by skill name.");
42426
42551
  } else {
42427
42552
  const skillSelection = await resolveInteractiveSkillSelection(preparedSkills, installPrefix);
42428
42553
  if (skillSelection.aborted) {
42429
- await skillsManager5.discardPreparedSource(source, process.cwd(), {
42554
+ await skillsManager5.discardPreparedSource(source, projectPath, {
42430
42555
  from: options2.from
42431
42556
  });
42432
42557
  return;
@@ -42438,14 +42563,14 @@ function registerSkillsCommand(program2) {
42438
42563
  if (!targetAgents && !options2.yes) {
42439
42564
  const selectedSkillNameSet = selectedSkillNames && selectedSkillNames.length > 0 ? new Set(selectedSkillNames.map((name) => name.toLowerCase())) : undefined;
42440
42565
  const filteredPreviewSkills = selectedSkillNameSet ? preparedSkills.filter((skill) => matchesSelectedSkillName(skill.name, selectedSkillNameSet, installPrefix)) : preparedSkills;
42441
- const selection = await resolveInteractiveSkillTargets(skillsManager5, agentManager9, source, process.cwd(), {
42566
+ const selection = await resolveInteractiveSkillTargets(skillsManager5, agentManager9, source, projectPath, {
42442
42567
  from: options2.from,
42443
42568
  global: options2.global,
42444
42569
  copy: options2.copy,
42445
42570
  skills: filteredPreviewSkills
42446
42571
  });
42447
42572
  if (selection?.aborted) {
42448
- await skillsManager5.discardPreparedSource(source, process.cwd(), {
42573
+ await skillsManager5.discardPreparedSource(source, projectPath, {
42449
42574
  from: options2.from
42450
42575
  });
42451
42576
  return;
@@ -42483,7 +42608,7 @@ function registerSkillsCommand(program2) {
42483
42608
  const spinner = ora(pluginName ? `Installing skills from ${pluginName}...` : "Installing skills...").start();
42484
42609
  try {
42485
42610
  if (pluginName && pluginName !== selectedPluginNames?.[0]) {
42486
- await skillsManager5.prepareSource(source, process.cwd(), {
42611
+ await skillsManager5.prepareSource(source, projectPath, {
42487
42612
  from: options2.from,
42488
42613
  pluginName
42489
42614
  });
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsjB5D"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8NpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6lB5D"}