skilldex-cli 1.1.3 → 1.2.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/README.md +42 -8
- package/dist/cli/commands/install-action.d.ts +1 -0
- package/dist/cli/commands/install-action.d.ts.map +1 -1
- package/dist/cli/commands/install-action.js +27 -7
- package/dist/cli/commands/install-action.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +1 -0
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list-action.js.map +1 -1
- package/dist/cli/commands/search-action.js +1 -1
- package/dist/cli/commands/search-action.js.map +1 -1
- package/dist/cli/commands/skillset-validate-action.d.ts +1 -0
- package/dist/cli/commands/skillset-validate-action.d.ts.map +1 -1
- package/dist/cli/commands/skillset-validate-action.js +61 -2
- package/dist/cli/commands/skillset-validate-action.js.map +1 -1
- package/dist/cli/commands/skillset.d.ts.map +1 -1
- package/dist/cli/commands/skillset.js +1 -0
- package/dist/cli/commands/skillset.js.map +1 -1
- package/dist/cli/commands/suggest-action.d.ts.map +1 -1
- package/dist/cli/commands/suggest-action.js +0 -1
- package/dist/cli/commands/suggest-action.js.map +1 -1
- package/dist/cli/commands/uninstall-action.js.map +1 -1
- package/dist/cli/commands/update-action.d.ts.map +1 -1
- package/dist/cli/commands/update-action.js +1 -1
- package/dist/cli/commands/update-action.js.map +1 -1
- package/dist/cli/ui/prompts.js.map +1 -1
- package/dist/core/harness-bridge.d.ts +61 -0
- package/dist/core/harness-bridge.d.ts.map +1 -0
- package/dist/core/harness-bridge.js +126 -0
- package/dist/core/harness-bridge.js.map +1 -0
- package/dist/core/installer.d.ts +5 -0
- package/dist/core/installer.d.ts.map +1 -1
- package/dist/core/installer.js +15 -0
- package/dist/core/installer.js.map +1 -1
- package/dist/core/resolver.js.map +1 -1
- package/dist/core/skillset-coherence.d.ts +27 -0
- package/dist/core/skillset-coherence.d.ts.map +1 -0
- package/dist/core/skillset-coherence.js +466 -0
- package/dist/core/skillset-coherence.js.map +1 -0
- package/dist/core/skillset-installer.js +1 -1
- package/dist/core/skillset-installer.js.map +1 -1
- package/dist/core/skillset-validator.d.ts +1 -1
- package/dist/core/skillset-validator.d.ts.map +1 -1
- package/dist/core/skillset-validator.js +22 -1
- package/dist/core/skillset-validator.js.map +1 -1
- package/dist/core/suggest-agent.js.map +1 -1
- package/dist/core/validator.js +1 -1
- package/dist/core/validator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/registry/sources/github.d.ts +1 -2
- package/dist/registry/sources/github.d.ts.map +1 -1
- package/dist/registry/sources/github.js +6 -4
- package/dist/registry/sources/github.js.map +1 -1
- package/dist/registry/sources/registry.d.ts.map +1 -1
- package/dist/registry/sources/registry.js +3 -1
- package/dist/registry/sources/registry.js.map +1 -1
- package/dist/types/skillset.d.ts +41 -0
- package/dist/types/skillset.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**npm, but for Claude skills.**
|
|
4
4
|
|
|
5
|
-
Skilldex is a package manager and registry for Claude `.skill` packages. It handles installation at the right scope, format validation with compiler-style feedback, quality scoring, and AI-powered skill suggestions — all while integrating natively with Claude Code
|
|
5
|
+
Skilldex is a package manager and registry for Claude `.skill` packages. It handles installation at the right scope, format validation with compiler-style feedback, quality scoring, and AI-powered skill suggestions — all while integrating natively with Claude Code, Codex, and any MCP-capable coding agent.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
skillpm install forensics-agent --scope project
|
|
@@ -25,7 +25,7 @@ skillpm list
|
|
|
25
25
|
- [Agent Suggestion Loop](#agent-suggestion-loop)
|
|
26
26
|
- [Skillsets](#skillsets)
|
|
27
27
|
- [Configuration](#configuration)
|
|
28
|
-
- [
|
|
28
|
+
- [Coding Agent Integration (MCP)](#coding-agent-integration-mcp)
|
|
29
29
|
- [Documentation](#documentation)
|
|
30
30
|
- [Contributing](#contributing)
|
|
31
31
|
|
|
@@ -180,6 +180,17 @@ skillpm suggest
|
|
|
180
180
|
|
|
181
181
|
Skilldex reads your project context (README, package.json, `.claude/` directory) and proposes relevant skills. You approve, reject, or change the scope of each before installation.
|
|
182
182
|
|
|
183
|
+
`suggest` can also run against a custom **Anthropic-compatible** endpoint (e.g. a LiteLLM proxy), which lets you front non-Claude models:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
export ANTHROPIC_BASE_URL=https://your-proxy.example.com
|
|
187
|
+
export ANTHROPIC_AUTH_TOKEN=... # bearer-token auth for the proxy
|
|
188
|
+
export SKILLPM_SUGGEST_MODEL=... # optional; defaults to claude-sonnet-4-6
|
|
189
|
+
skillpm suggest
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The endpoint must speak the Anthropic Messages API format. See [docs/suggest.md](docs/suggest.md#custom-endpoints) for details.
|
|
193
|
+
|
|
183
194
|
---
|
|
184
195
|
|
|
185
196
|
## CLI Reference
|
|
@@ -384,22 +395,30 @@ skillpm config list
|
|
|
384
395
|
| `anthropicApiKey` | `ANTHROPIC_API_KEY` | Anthropic API key for `suggest` |
|
|
385
396
|
| `defaultScope` | `SKILLDEX_DEFAULT_SCOPE` | Default install scope (`global`, `shared`, or `project`) |
|
|
386
397
|
|
|
398
|
+
**Environment-only overrides for `suggest`** (no config-file key; set these to target a custom Anthropic-compatible endpoint):
|
|
399
|
+
|
|
400
|
+
| Environment variable | Description |
|
|
401
|
+
|---|---|
|
|
402
|
+
| `ANTHROPIC_BASE_URL` | Base URL of an Anthropic-compatible endpoint (e.g. a LiteLLM proxy). Defaults to the first-party Anthropic API. |
|
|
403
|
+
| `ANTHROPIC_AUTH_TOKEN` | Bearer-token auth for the custom endpoint (used in place of `ANTHROPIC_API_KEY`). |
|
|
404
|
+
| `SKILLPM_SUGGEST_MODEL` | Model name to request. Defaults to `claude-sonnet-4-6`. |
|
|
405
|
+
|
|
387
406
|
---
|
|
388
407
|
|
|
389
|
-
##
|
|
408
|
+
## Coding Agent Integration (MCP)
|
|
390
409
|
|
|
391
410
|
Full reference: [docs/mcp.md](docs/mcp.md)
|
|
392
411
|
|
|
393
|
-
Skilldex exposes a Model Context Protocol (MCP) server so Claude Code can invoke all operations directly.
|
|
412
|
+
Skilldex exposes a Model Context Protocol (MCP) server so any MCP-capable coding agent — Claude Code, Codex, Cursor, Windsurf, Zed, and others — can invoke all operations directly. The server communicates over stdio and is agent-agnostic: the install, uninstall, list, validate, search, and skillset tools call no LLM at all, so they behave identically no matter which agent drives them. Only `skilldex_suggest` needs an API key.
|
|
394
413
|
|
|
395
|
-
**
|
|
414
|
+
**Claude Code** (`.mcp.json` in project root or `~/.claude/mcp.json`):
|
|
396
415
|
|
|
397
416
|
```json
|
|
398
417
|
{
|
|
399
418
|
"mcpServers": {
|
|
400
419
|
"skilldex": {
|
|
401
|
-
"command": "
|
|
402
|
-
"args": ["
|
|
420
|
+
"command": "skillpm",
|
|
421
|
+
"args": ["mcp"],
|
|
403
422
|
"env": {
|
|
404
423
|
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}"
|
|
405
424
|
}
|
|
@@ -408,7 +427,18 @@ Skilldex exposes a Model Context Protocol (MCP) server so Claude Code can invoke
|
|
|
408
427
|
}
|
|
409
428
|
```
|
|
410
429
|
|
|
411
|
-
|
|
430
|
+
**Codex** (`~/.codex/config.toml`):
|
|
431
|
+
|
|
432
|
+
```toml
|
|
433
|
+
[mcp_servers.skilldex]
|
|
434
|
+
command = "skillpm"
|
|
435
|
+
args = ["mcp"]
|
|
436
|
+
env = { ANTHROPIC_API_KEY = "sk-ant-..." }
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
Any other MCP client works the same way: run `skillpm mcp` as a stdio server. The `env` block is only required if you plan to use `skilldex_suggest`.
|
|
440
|
+
|
|
441
|
+
Once configured, your agent can:
|
|
412
442
|
- Call `skilldex_install` to install a skill mid-session
|
|
413
443
|
- Call `skilldex_list` to see what's available
|
|
414
444
|
- Call `skilldex_validate` to check a skill's format score
|
|
@@ -424,6 +454,10 @@ Once configured, Claude Code can:
|
|
|
424
454
|
| `skilldex_validate` | Validate and score a skill |
|
|
425
455
|
| `skilldex_suggest` | Generate skill suggestions |
|
|
426
456
|
| `skilldex_search` | Search the registry |
|
|
457
|
+
| `skilldex_skillset_install` | Install a skillset from path, git URL, or registry name |
|
|
458
|
+
| `skilldex_skillset_uninstall` | Remove a skillset and its skills |
|
|
459
|
+
| `skilldex_skillset_list` | List installed skillsets |
|
|
460
|
+
| `skilldex_skillset_validate` | Validate and score a skillset |
|
|
427
461
|
|
|
428
462
|
---
|
|
429
463
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"install-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAyBtD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9E,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import ora from 'ora';
|
|
2
2
|
import { installFromPath } from '../../core/installer.js';
|
|
3
|
-
import { printValidationReport, printJson, printError, printSuccess } from '../ui/output.js';
|
|
3
|
+
import { printValidationReport, printJson, printError, printSuccess, printWarning, printInfo } from '../ui/output.js';
|
|
4
4
|
function isRegistryName(source) {
|
|
5
5
|
// A plain skill name: no path separators, no git+, no protocol, no dots suggesting a path
|
|
6
6
|
return !source.startsWith('git+') && !source.startsWith('/') && !source.startsWith('./') &&
|
|
7
7
|
!source.startsWith('../') && !source.includes('://') && !source.endsWith('.md');
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* An install that did not bridge is invisible to every agent, so say what happened.
|
|
11
|
+
* Linked paths are informational; a conflict is a warning, because that harness will not
|
|
12
|
+
* see this skill until the user resolves it.
|
|
13
|
+
*/
|
|
14
|
+
function reportBridging(bridged) {
|
|
15
|
+
for (const link of bridged) {
|
|
16
|
+
if (link.linked) {
|
|
17
|
+
printInfo(`Linked into ${link.target}`);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
printWarning(`Not linked: ${link.target} — ${link.conflict}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
9
24
|
export async function runInstall(source, options) {
|
|
10
25
|
const isGitUrl = source.startsWith('git+');
|
|
11
26
|
if (!isGitUrl && isRegistryName(source)) {
|
|
@@ -23,6 +38,7 @@ export async function runInstall(source, options) {
|
|
|
23
38
|
const result = await installFromPath(source, {
|
|
24
39
|
scope: options.scope,
|
|
25
40
|
force: options.force,
|
|
41
|
+
bridge: options.bridge,
|
|
26
42
|
});
|
|
27
43
|
if (spinner)
|
|
28
44
|
spinner.succeed(`Installed "${result.skillName}" at ${result.scope} scope`);
|
|
@@ -33,6 +49,7 @@ export async function runInstall(source, options) {
|
|
|
33
49
|
scope: result.scope,
|
|
34
50
|
score: result.validation.score,
|
|
35
51
|
diagnostics: result.validation.diagnostics,
|
|
52
|
+
bridged: result.bridged,
|
|
36
53
|
});
|
|
37
54
|
}
|
|
38
55
|
else {
|
|
@@ -44,6 +61,7 @@ export async function runInstall(source, options) {
|
|
|
44
61
|
printSuccess(`Score: ${result.validation.score}/100`);
|
|
45
62
|
}
|
|
46
63
|
}
|
|
64
|
+
reportBridging(result.bridged);
|
|
47
65
|
}
|
|
48
66
|
catch (e) {
|
|
49
67
|
if (spinner)
|
|
@@ -60,11 +78,10 @@ async function runRegistryInstall(name, options) {
|
|
|
60
78
|
if (spinner)
|
|
61
79
|
spinner.text = `Installing "${name}" from ${info.source_url}...`;
|
|
62
80
|
const { installFromGitUrl } = await import('../../registry/sources/github.js');
|
|
63
|
-
const
|
|
64
|
-
const scopeConfig = await resolveScope(options.scope);
|
|
65
|
-
const result = await installFromGitUrl(`git+${info.source_url}`, scopeConfig, {
|
|
81
|
+
const result = await installFromGitUrl(`git+${info.source_url}`, {
|
|
66
82
|
scope: options.scope,
|
|
67
83
|
force: options.force,
|
|
84
|
+
bridge: options.bridge,
|
|
68
85
|
sourceUrl: info.source_url,
|
|
69
86
|
onMultipleSkills: async (names) => {
|
|
70
87
|
if (spinner)
|
|
@@ -85,6 +102,7 @@ async function runRegistryInstall(name, options) {
|
|
|
85
102
|
scope: result.scope,
|
|
86
103
|
score: result.validation.score,
|
|
87
104
|
diagnostics: result.validation.diagnostics,
|
|
105
|
+
bridged: result.bridged,
|
|
88
106
|
trust_tier: info.trust_tier,
|
|
89
107
|
});
|
|
90
108
|
}
|
|
@@ -97,6 +115,7 @@ async function runRegistryInstall(name, options) {
|
|
|
97
115
|
printSuccess(`Score: ${result.validation.score}/100 · Trust: ${info.trust_tier}`);
|
|
98
116
|
}
|
|
99
117
|
}
|
|
118
|
+
reportBridging(result.bridged);
|
|
100
119
|
}
|
|
101
120
|
catch (e) {
|
|
102
121
|
if (spinner)
|
|
@@ -109,11 +128,10 @@ async function runGitInstall(gitUrl, options) {
|
|
|
109
128
|
const spinner = options.json ? null : ora(`Cloning ${gitUrl}...`).start();
|
|
110
129
|
try {
|
|
111
130
|
const { installFromGitUrl } = await import('../../registry/sources/github.js');
|
|
112
|
-
const
|
|
113
|
-
const scopeConfig = await resolveScope(options.scope);
|
|
114
|
-
const result = await installFromGitUrl(gitUrl, scopeConfig, {
|
|
131
|
+
const result = await installFromGitUrl(gitUrl, {
|
|
115
132
|
scope: options.scope,
|
|
116
133
|
force: options.force,
|
|
134
|
+
bridge: options.bridge,
|
|
117
135
|
sourceUrl: gitUrl,
|
|
118
136
|
onMultipleSkills: async (names) => {
|
|
119
137
|
if (spinner)
|
|
@@ -134,6 +152,7 @@ async function runGitInstall(gitUrl, options) {
|
|
|
134
152
|
scope: result.scope,
|
|
135
153
|
score: result.validation.score,
|
|
136
154
|
diagnostics: result.validation.diagnostics,
|
|
155
|
+
bridged: result.bridged,
|
|
137
156
|
});
|
|
138
157
|
}
|
|
139
158
|
else {
|
|
@@ -145,6 +164,7 @@ async function runGitInstall(gitUrl, options) {
|
|
|
145
164
|
printSuccess(`Score: ${result.validation.score}/100`);
|
|
146
165
|
}
|
|
147
166
|
}
|
|
167
|
+
reportBridging(result.bridged);
|
|
148
168
|
}
|
|
149
169
|
catch (e) {
|
|
150
170
|
if (spinner)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-action.js","sourceRoot":"","sources":["../../../src/cli/commands/install-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"install-action.js","sourceRoot":"","sources":["../../../src/cli/commands/install-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAetD"}
|
|
@@ -4,6 +4,7 @@ export function registerInstall(program) {
|
|
|
4
4
|
.description('Install a skill from a local path, git URL, or registry')
|
|
5
5
|
.option('-s, --scope <scope>', 'Installation scope: global, shared, or project', 'project')
|
|
6
6
|
.option('-f, --force', 'Overwrite if already installed', false)
|
|
7
|
+
.option('--no-bridge', 'Do not link the skill into harness directories (.agents/skills, .claude/skills)')
|
|
7
8
|
.option('--json', 'Output as JSON')
|
|
8
9
|
.action(async (source, options) => {
|
|
9
10
|
const { getConfigValue } = await import('../../core/config.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,gDAAgD,EAAE,SAAS,CAAC;SAC1F,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,gDAAgD,EAAE,SAAS,CAAC;SAC1F,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC9D,MAAM,CAAC,aAAa,EAAE,iFAAiF,CAAC;SACxG,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA8E,EAAE,EAAE;QAC/G,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,CAAC,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,SAAS,CAAA;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAA;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAC1D,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,KAAmB,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-action.js","sourceRoot":"","sources":["../../../src/cli/commands/list-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"list-action.js","sourceRoot":"","sources":["../../../src/cli/commands/list-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAA8C;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;YAChC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAA;QAE5B,MAAM,OAAO,GAA0D,EAAE,CAAA;QACzE,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CACP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;aACzC,CAAC,CAAC,CACJ,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,KAAK,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC7C,WAAW,IAAI,MAAM,CAAC,MAAM,CAAA;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAA;YAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC/D,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;oBAClF,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,KAAK,YAAY;wBAC9C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,WAAW,0BAA0B,KAAK,CAAC,IAAI,GAAG,CAAC;wBACnF,CAAC,CAAC,EAAE,CAAA;oBACN,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,iBAAiB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CACzG,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,8BAA8B,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAA;IAC/F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -16,7 +16,7 @@ function scoreLabel(score) {
|
|
|
16
16
|
return chalk.yellow(`${score}/100`);
|
|
17
17
|
return chalk.red(`${score}/100`);
|
|
18
18
|
}
|
|
19
|
-
function renderSkillCard(skill,
|
|
19
|
+
function renderSkillCard(skill, _index) {
|
|
20
20
|
console.log(`\n${chalk.bold(skill.name)} ${tierBadge(skill.trust_tier)}`);
|
|
21
21
|
console.log(` ${skill.description}`);
|
|
22
22
|
console.log(` Score: ${scoreLabel(skill.score)} · Installs: ${skill.install_count} · Spec: v${skill.spec_version}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-action.js","sourceRoot":"","sources":["../../../src/cli/commands/search-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGlE,SAAS,SAAS,CAAC,IAAiC;IAClD,OAAO,IAAI,KAAK,UAAU;QACxB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAA;IACnD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,CAAA;IACpD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,KAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"search-action.js","sourceRoot":"","sources":["../../../src/cli/commands/search-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillset-validate-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skillset-validate-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"AAKA,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAsEf"}
|
|
@@ -27,14 +27,31 @@ export async function runSkillsetValidate(skillsetPath, options) {
|
|
|
27
27
|
if (result.remoteSkills.length > 0) {
|
|
28
28
|
console.log(`Remote skills: ${result.remoteSkills.map((s) => s.name).join(', ')}`);
|
|
29
29
|
}
|
|
30
|
+
printCoherence(result.coherence);
|
|
31
|
+
const { coherence } = result;
|
|
30
32
|
if (result.errorCount > 0) {
|
|
31
33
|
console.log('');
|
|
32
34
|
printError(`${result.errorCount} error(s) found — skillset cannot be installed`);
|
|
33
35
|
process.exit(1);
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
if (coherence.errorCount > 0 && options.strict) {
|
|
36
38
|
console.log('');
|
|
37
|
-
|
|
39
|
+
printError(`${coherence.errorCount} coherence error(s) found — members contradict a declared convention`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
if (result.warnCount > 0 || coherence.warnCount > 0 || coherence.errorCount > 0) {
|
|
43
|
+
console.log('');
|
|
44
|
+
const parts = [];
|
|
45
|
+
if (result.warnCount > 0)
|
|
46
|
+
parts.push(`${result.warnCount} format warning(s)`);
|
|
47
|
+
if (coherence.errorCount > 0)
|
|
48
|
+
parts.push(`${coherence.errorCount} coherence error(s)`);
|
|
49
|
+
if (coherence.warnCount > 0)
|
|
50
|
+
parts.push(`${coherence.warnCount} coherence warning(s)`);
|
|
51
|
+
printWarning(parts.join(', '));
|
|
52
|
+
if (coherence.errorCount > 0) {
|
|
53
|
+
console.log(chalk.dim(' Re-run with --strict to fail on coherence errors.'));
|
|
54
|
+
}
|
|
38
55
|
}
|
|
39
56
|
else {
|
|
40
57
|
console.log('');
|
|
@@ -46,4 +63,46 @@ export async function runSkillsetValidate(skillsetPath, options) {
|
|
|
46
63
|
process.exit(1);
|
|
47
64
|
}
|
|
48
65
|
}
|
|
66
|
+
function printCoherence(coherence) {
|
|
67
|
+
if (coherence.membersChecked === 0)
|
|
68
|
+
return;
|
|
69
|
+
const ratio = `${coherence.membersCoherent}/${coherence.membersChecked}`;
|
|
70
|
+
const color = coherence.errorCount > 0
|
|
71
|
+
? chalk.red
|
|
72
|
+
: coherence.membersCoherent === coherence.membersChecked
|
|
73
|
+
? chalk.green
|
|
74
|
+
: chalk.yellow;
|
|
75
|
+
console.log('');
|
|
76
|
+
console.log(`Coherence: ${color(ratio)} member(s) agree with the skillset's shared conventions`);
|
|
77
|
+
if (coherence.declaredConventions.length === 0) {
|
|
78
|
+
console.log(chalk.dim(' No conventions declared — add a ```yaml skilldex-conventions``` block to a'));
|
|
79
|
+
console.log(chalk.dim(' shared asset so member agreement can be enforced.'));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
for (const convention of coherence.declaredConventions) {
|
|
83
|
+
const keyCount = Object.keys(convention.mapping).length;
|
|
84
|
+
console.log(chalk.dim(` declared: ${convention.name} (${keyCount} keys) — ${convention.assetFile}:${convention.line}`));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
for (const diag of orderForDisplay(coherence.diagnostics)) {
|
|
88
|
+
const severity = diag.severity === 'error'
|
|
89
|
+
? chalk.red('error ')
|
|
90
|
+
: diag.severity === 'warning'
|
|
91
|
+
? chalk.yellow('warn ')
|
|
92
|
+
: chalk.green('pass ');
|
|
93
|
+
const loc = diag.line !== undefined ? `${diag.member}:${diag.line}: ` : `${diag.member}: `;
|
|
94
|
+
console.log(` ${severity} ${loc}${stripMemberPrefix(diag)}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/** Errors first — a contradiction should not scroll off behind a wall of passes. */
|
|
98
|
+
function orderForDisplay(diagnostics) {
|
|
99
|
+
const rank = { error: 0, warning: 1, pass: 2 };
|
|
100
|
+
return [...diagnostics].sort((a, b) => rank[a.severity] - rank[b.severity]);
|
|
101
|
+
}
|
|
102
|
+
/** The member name is already shown as the location prefix. */
|
|
103
|
+
function stripMemberPrefix(diag) {
|
|
104
|
+
return diag.message.startsWith(`"${diag.member}" `)
|
|
105
|
+
? diag.message.slice(diag.member.length + 3)
|
|
106
|
+
: diag.message;
|
|
107
|
+
}
|
|
49
108
|
//# sourceMappingURL=skillset-validate-action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillset-validate-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnF,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"skillset-validate-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnF,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAoB,EACpB,OAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,MAAM,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAChE,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,OAAO;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;gBACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;oBAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEf,MAAM,UAAU,GACd,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;QAClF,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;QAExE,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvF,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAEhC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;QAE5B,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,gDAAgD,CAAC,CAAA;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,UAAU,CACR,GAAG,SAAS,CAAC,UAAU,sEAAsE,CAC9F,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,oBAAoB,CAAC,CAAA;YAC7E,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,qBAAqB,CAAC,CAAA;YACtF,IAAI,SAAS,CAAC,SAAS,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,uBAAuB,CAAC,CAAA;YACtF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9B,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,YAAY,CAAC,mBAAmB,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,SAAoE;IAC1F,IAAI,SAAS,CAAC,cAAc,KAAK,CAAC;QAAE,OAAM;IAE1C,MAAM,KAAK,GAAG,GAAG,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,cAAc,EAAE,CAAA;IACxE,MAAM,KAAK,GACT,SAAS,CAAC,UAAU,GAAG,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,GAAG;QACX,CAAC,CAAC,SAAS,CAAC,eAAe,KAAK,SAAS,CAAC,cAAc;YACtD,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAEhG,IAAI,SAAS,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAC1F,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAA;IAC/E,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;YACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,eAAe,UAAU,CAAC,IAAI,KAAK,QAAQ,YAAY,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,CACjG,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,OAAO;YACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CAAC,WAAkC;IACzD,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAW,CAAA;IACvD,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,+DAA+D;AAC/D,SAAS,iBAAiB,CAAC,IAAyB;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillset.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"skillset.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4EvD"}
|
|
@@ -42,6 +42,7 @@ export function registerSkillset(program) {
|
|
|
42
42
|
.command('validate [path]')
|
|
43
43
|
.description('Validate a skillset directory structure and score SKILLSET.md')
|
|
44
44
|
.option('--json', 'Output as JSON')
|
|
45
|
+
.option('--strict', 'Fail when a member contradicts a declared shared convention', false)
|
|
45
46
|
.action(async (skillsetPath, options) => {
|
|
46
47
|
const { runSkillsetValidate } = await import('./skillset-validate-action.js');
|
|
47
48
|
await runSkillsetValidate(skillsetPath ?? process.cwd(), options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillset.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAA;IAEjH,QAAQ;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACrE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEJ,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,gDAAgD,EAAE,SAAS,CAAC;SAC1F,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6D,EAAE,EAAE;QAC9F,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAA;QAC3E,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEJ,QAAQ;SACL,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,oBAAoB,EAAE,uEAAuE,CAAC;SACrG,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC;SACpE,MAAM,CAAC,UAAU,EAAE,qDAAqD,CAAC;SACzE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAA+E,EAAE,EAAE;QAChG,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAA;QAC3E,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEJ,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;QAC/D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACrE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEJ,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,YAAgC,EAAE,
|
|
1
|
+
{"version":3,"file":"skillset.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/suggest-action.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"suggest-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/suggest-action.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
|
|
@@ -31,7 +31,6 @@ export async function runSuggest(options) {
|
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
console.log(`\nInstalling ${approved.length} skill(s)...`);
|
|
34
|
-
const { installFromPath } = await import('../../core/installer.js');
|
|
35
34
|
const installed = [];
|
|
36
35
|
for (const { proposal, scope } of approved) {
|
|
37
36
|
// Skills from suggest come from the registry — for now we can't actually install
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest-action.js","sourceRoot":"","sources":["../../../src/cli/commands/suggest-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"suggest-action.js","sourceRoot":"","sources":["../../../src/cli/commands/suggest-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAIhC;IACC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAE/E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAA;QACjF,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,GAAG,+BAA+B,CAAA;QAE3D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;YACxB,OAAM;QACR,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAA;YAChE,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;QAE/E,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC9D,QAAQ,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAA;YAC9D,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAA;QAE1D,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC3C,iFAAiF;YACjF,2EAA2E;YAC3E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,QAAQ,QAAQ,CAAC,SAAS,0CAA0C;gBAClE,0CAA0C,KAAK,EAAE,CACpD,CACF,CAAA;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall-action.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"uninstall-action.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,OAA6C;IAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,SAAS,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;IAEnF,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,SAAS,UAAU,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;QAEtF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3B,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMtD,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -30,7 +30,7 @@ export async function runUpdate(skillName, options) {
|
|
|
30
30
|
const spinner = options.json ? null : ora(`Updating "${skill.name}" from ${skill.sourceUrl}...`).start();
|
|
31
31
|
try {
|
|
32
32
|
const { installFromGitUrl } = await import('../../registry/sources/github.js');
|
|
33
|
-
const result = await installFromGitUrl(`git+${skill.sourceUrl}`,
|
|
33
|
+
const result = await installFromGitUrl(`git+${skill.sourceUrl}`, {
|
|
34
34
|
scope: options.scope,
|
|
35
35
|
force: true,
|
|
36
36
|
sourceUrl: skill.sourceUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-action.js","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"update-action.js","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAA+B;IAE/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAA;IAC9D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,CAC1G,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,MAAM,QAAQ,GAAoB,EAAE,CAAA;IAEpC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY;YACtD,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE;gBACjD,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC/C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;aAChC;YACD,OAAO,EAAE,QAAQ,CAAC,cAAc;SACjC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAoB,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ScopeLevel } from '../types/scope.js';
|
|
2
|
+
/**
|
|
3
|
+
* Bridging installed skills into the directories agent harnesses actually read.
|
|
4
|
+
*
|
|
5
|
+
* Skilldex installs into `.skilldex/…`, which no harness scans. The Agent Skills
|
|
6
|
+
* specification declines to mandate a location — "the Agent Skills specification does not
|
|
7
|
+
* mandate where skill directories live (it only defines what goes inside them)" — but its
|
|
8
|
+
* client-implementation guide documents the convention the ecosystem converged on:
|
|
9
|
+
* a client-native directory plus `.agents/skills/` for cross-client interoperability.
|
|
10
|
+
*
|
|
11
|
+
* Surveying sixteen harnesses (2026-09-03, EACL_FINDINGS.md §7) found that two directories
|
|
12
|
+
* reach fourteen of them:
|
|
13
|
+
*
|
|
14
|
+
* .agents/skills/ — Codex (native), Gemini CLI, Cursor, Copilot, OpenCode, Deep Code,
|
|
15
|
+
* and per vendor docs Windsurf, Antigravity, Amp, Crush
|
|
16
|
+
* .claude/skills/ — Claude Code (native), Cursor, Copilot, Cline, OpenCode, Amp, Crush
|
|
17
|
+
*
|
|
18
|
+
* Kimi and Qwen Code read only their own paths; Aider scans no skills directory at all and
|
|
19
|
+
* cannot be bridged to by any package manager.
|
|
20
|
+
*/
|
|
21
|
+
/** A directory some harness reads, and who reads it — the `why` is user-facing on conflict. */
|
|
22
|
+
export interface BridgeTarget {
|
|
23
|
+
dir: string;
|
|
24
|
+
readers: string;
|
|
25
|
+
/**
|
|
26
|
+
* When set, link here only if this directory already exists — i.e. the harness is actually
|
|
27
|
+
* installed. Vendor-private paths carry this so that installing a skill does not scatter
|
|
28
|
+
* `~/.qwen/skills` and `~/.cline/skills` across the machine of someone who uses neither.
|
|
29
|
+
* The two shared conventions have no guard: they are the agreed cross-tool location.
|
|
30
|
+
*/
|
|
31
|
+
requires?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface BridgeLink {
|
|
34
|
+
target: string;
|
|
35
|
+
linked: boolean;
|
|
36
|
+
/** Set when the entry existed and was not ours, so it was left untouched. */
|
|
37
|
+
conflict?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Harnesses read at two tiers, project and user, so the three Skilldex scopes collapse to
|
|
41
|
+
* two: `project` bridges beside the project, `global` and `shared` both bridge into $HOME.
|
|
42
|
+
*/
|
|
43
|
+
export declare function bridgeTargets(scope: ScopeLevel, projectRoot: string): BridgeTarget[];
|
|
44
|
+
/** The subset of {@link bridgeTargets} whose guard is satisfied on this machine. */
|
|
45
|
+
export declare function applicableTargets(scope: ScopeLevel, projectRoot: string): Promise<BridgeTarget[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Link an installed skill into every harness directory for its scope.
|
|
48
|
+
*
|
|
49
|
+
* Symlinks rather than copies: `.skilldex/` stays the single source of truth, so scoping
|
|
50
|
+
* still decides what a session sees and uninstall stays coherent. Both major harnesses
|
|
51
|
+
* document following them — Claude Code "follows the symlink and reads SKILL.md from the
|
|
52
|
+
* target directory", Codex "supports symlinked skill folders". Windows without developer
|
|
53
|
+
* mode cannot create them unprivileged, so fall back to copying there.
|
|
54
|
+
*
|
|
55
|
+
* An entry that exists and is not ours is **never** overwritten: it is somebody's
|
|
56
|
+
* hand-authored skill, and silently replacing it would be the worst possible failure.
|
|
57
|
+
*/
|
|
58
|
+
export declare function bridgeSkill(skillName: string, installedPath: string, scope: ScopeLevel, projectRoot: string): Promise<BridgeLink[]>;
|
|
59
|
+
/** Remove only links that point at this install; leave anything else alone. */
|
|
60
|
+
export declare function unbridgeSkill(skillName: string, installedPath: string, scope: ScopeLevel, projectRoot: string): Promise<string[]>;
|
|
61
|
+
//# sourceMappingURL=harness-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-bridge.d.ts","sourceRoot":"","sources":["../../src/core/harness-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+FAA+F;AAC/F,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAKD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAwBpF;AAED,oFAAoF;AACpF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAazB;AAcD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,EAAE,CAAC,CA4CvB;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
|