agent-skills-cli 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -13
- package/dist/__tests__/git-auth.test.d.ts +11 -0
- package/dist/__tests__/git-auth.test.d.ts.map +1 -0
- package/dist/__tests__/git-auth.test.js +160 -0
- package/dist/__tests__/git-auth.test.js.map +1 -0
- package/dist/__tests__/skill-lock.test.d.ts +8 -0
- package/dist/__tests__/skill-lock.test.d.ts.map +1 -0
- package/dist/__tests__/skill-lock.test.js +104 -0
- package/dist/__tests__/skill-lock.test.js.map +1 -0
- package/dist/__tests__/skillsrc.test.d.ts +11 -0
- package/dist/__tests__/skillsrc.test.d.ts.map +1 -0
- package/dist/__tests__/skillsrc.test.js +185 -0
- package/dist/__tests__/skillsrc.test.js.map +1 -0
- package/dist/__tests__/source-parser.test.d.ts +16 -0
- package/dist/__tests__/source-parser.test.d.ts.map +1 -0
- package/dist/__tests__/source-parser.test.js +231 -0
- package/dist/__tests__/source-parser.test.js.map +1 -0
- package/dist/cli/commands/install.d.ts +8 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +203 -90
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/core/git-auth.d.ts +74 -0
- package/dist/core/git-auth.d.ts.map +1 -0
- package/dist/core/git-auth.js +299 -0
- package/dist/core/git-auth.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/skill-lock.d.ts +1 -1
- package/dist/core/skill-lock.d.ts.map +1 -1
- package/dist/core/skillsrc.d.ts +65 -0
- package/dist/core/skillsrc.d.ts.map +1 -0
- package/dist/core/skillsrc.js +161 -0
- package/dist/core/skillsrc.js.map +1 -0
- package/dist/core/source-parser.d.ts +9 -1
- package/dist/core/source-parser.d.ts.map +1 -1
- package/dist/core/source-parser.js +95 -6
- package/dist/core/source-parser.js.map +1 -1
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
Install skills from the world's largest marketplace and sync them to **42 AI agents** including Cursor, Claude Code, GitHub Copilot, Windsurf, Cline, Gemini CLI, Zed, and more — all with a single command.
|
|
9
9
|
|
|
10
|
-
**What's new in v1.1.
|
|
10
|
+
**What's new in v1.1.2:** Private Git repos (GitLab, Bitbucket, SSH, self-hosted), npm packages, `.skillsrc` config files, and automatic credential resolution.
|
|
11
11
|
|
|
12
12
|
🌐 **Website:** [agentskills.in](https://agentskills.in)
|
|
13
13
|
|
|
@@ -23,6 +23,9 @@ skills install @anthropic/xlsx
|
|
|
23
23
|
- **175,000+ Skills** — Access the largest collection of AI agent skills
|
|
24
24
|
- **FZF Interactive Search** — Real-time search with keyboard navigation: `skills search -i`
|
|
25
25
|
- **42 AI Agents** — Cursor, Claude, Copilot, Windsurf, Cline, Gemini CLI, Zed, and 35+ more
|
|
26
|
+
- **Private Git Repos** — GitLab, Bitbucket, SSH, self-hosted Git with auto-auth: `skills install git@host:team/repo`
|
|
27
|
+
- **npm Packages** — Install skills from npm registries: `skills install npm:@scope/package`
|
|
28
|
+
- **`.skillsrc` Config** — Enterprise config files for custom registries, tokens, and defaults
|
|
26
29
|
- **Quality Scoring** — 4-dimension skill scoring (0–100): `skills score`
|
|
27
30
|
- **Repo Auto-Index** — Submit entire repos to the marketplace: `skills submit-repo owner/repo`
|
|
28
31
|
- **Adapter Architecture** — Formal adapter pattern for clean multi-agent support
|
|
@@ -53,6 +56,14 @@ skills install @facebook/verify
|
|
|
53
56
|
# ⭐ Install from a GitHub repo
|
|
54
57
|
skills add vercel-labs/agent-skills
|
|
55
58
|
|
|
59
|
+
# ⭐ Install from private Git (auto-detects credentials)
|
|
60
|
+
skills install git@gitlab.com:team/internal-skills.git
|
|
61
|
+
skills install https://git.company.com/team/skills --token $GIT_TOKEN
|
|
62
|
+
|
|
63
|
+
# ⭐ Install from npm registry
|
|
64
|
+
skills install npm:@company/skills
|
|
65
|
+
skills install npm:@company/skills --registry https://npm.company.com
|
|
66
|
+
|
|
56
67
|
# Install to specific platforms
|
|
57
68
|
skills install @facebook/verify -a claude,cursor
|
|
58
69
|
|
|
@@ -79,9 +90,6 @@ skills update --all
|
|
|
79
90
|
|
|
80
91
|
# Search and install skills interactively
|
|
81
92
|
skills search python
|
|
82
|
-
|
|
83
|
-
# Search with JSON output (non-interactive)
|
|
84
|
-
skills search react --json
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
---
|
|
@@ -119,7 +127,7 @@ skills add @facebook/verify -a cursor # 'add' is an alias for 'install'
|
|
|
119
127
|
|
|
120
128
|
```bash
|
|
121
129
|
skills add owner/repo # GitHub shorthand
|
|
122
|
-
skills add owner/repo@skill-name #
|
|
130
|
+
skills add owner/repo@skill-name # Install specific skill directly
|
|
123
131
|
skills add https://github.com/user/repo # Full URL
|
|
124
132
|
skills add https://gitlab.com/org/repo # GitLab
|
|
125
133
|
skills add owner/repo --list # List skills in repo
|
|
@@ -127,6 +135,40 @@ skills add owner/repo -s skill-name # Install specific skill
|
|
|
127
135
|
skills add owner/repo -y -g # Non-interactive, global
|
|
128
136
|
```
|
|
129
137
|
|
|
138
|
+
### Private Git Repos
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# SSH (auto-detects SSH keys)
|
|
142
|
+
skills install git@github.com:team/private-repo.git
|
|
143
|
+
skills install git@gitlab.com:team/internal-skills.git
|
|
144
|
+
|
|
145
|
+
# HTTPS with token
|
|
146
|
+
skills install https://git.company.com/team/repo --token=xxx
|
|
147
|
+
|
|
148
|
+
# Token from environment variable
|
|
149
|
+
GITLAB_TOKEN=xxx skills install https://gitlab.com/team/repo
|
|
150
|
+
BITBUCKET_TOKEN=xxx skills install https://bitbucket.org/team/repo
|
|
151
|
+
|
|
152
|
+
# Bitbucket
|
|
153
|
+
skills install https://bitbucket.org/team/skills-repo
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Auth resolution order:** `--token` flag → env vars (`GH_TOKEN`, `GITLAB_TOKEN`, `BITBUCKET_TOKEN`, `GIT_TOKEN`) → SSH keys → git credential helper → `.netrc`
|
|
157
|
+
|
|
158
|
+
### npm Packages
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Public npm packages
|
|
162
|
+
skills install npm:chalk
|
|
163
|
+
skills install npm:@anthropic/skills
|
|
164
|
+
|
|
165
|
+
# Scoped package with version
|
|
166
|
+
skills install npm:@company/skills@1.1.2
|
|
167
|
+
|
|
168
|
+
# Private npm registry
|
|
169
|
+
skills install npm:@company/skills --registry https://npm.company.com
|
|
170
|
+
```
|
|
171
|
+
|
|
130
172
|
### Other Commands
|
|
131
173
|
|
|
132
174
|
```bash
|
|
@@ -175,16 +217,46 @@ skills submit-repo vercel-labs/agent-skills # Skills appear on marketplace
|
|
|
175
217
|
|
|
176
218
|
---
|
|
177
219
|
|
|
178
|
-
##
|
|
220
|
+
## ⚙️ Configuration (`.skillsrc`)
|
|
221
|
+
|
|
222
|
+
Create a `.skillsrc` or `.skillsrc.json` file in your project root or home directory to configure private sources and defaults:
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"sources": [
|
|
227
|
+
{
|
|
228
|
+
"name": "company-gitlab",
|
|
229
|
+
"type": "git",
|
|
230
|
+
"url": "https://gitlab.company.com",
|
|
231
|
+
"auth_env": "COMPANY_GIT_TOKEN"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "company-npm",
|
|
235
|
+
"type": "npm",
|
|
236
|
+
"registry": "https://npm.company.com",
|
|
237
|
+
"scope": "@company"
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"defaults": {
|
|
241
|
+
"agent": "cursor",
|
|
242
|
+
"global": false
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
```
|
|
179
246
|
|
|
180
|
-
|
|
247
|
+
Config is loaded from: project `.skillsrc` → home `~/.skillsrc` (first found wins).
|
|
181
248
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 🔐 Environment Variables
|
|
252
|
+
|
|
253
|
+
| Variable | Purpose |
|
|
254
|
+
|----------|---------|
|
|
255
|
+
| `GH_TOKEN` / `GITHUB_TOKEN` | GitHub private repo authentication |
|
|
256
|
+
| `GITLAB_TOKEN` / `GL_TOKEN` | GitLab private repo authentication |
|
|
257
|
+
| `BITBUCKET_TOKEN` / `BB_TOKEN` | Bitbucket private repo authentication |
|
|
258
|
+
| `GIT_TOKEN` | Generic Git authentication (any host) |
|
|
259
|
+
| `DISABLE_TELEMETRY` / `DO_NOT_TRACK` | Opt out of anonymous telemetry |
|
|
188
260
|
|
|
189
261
|
Telemetry is automatically disabled in CI environments.
|
|
190
262
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for git-auth.ts
|
|
3
|
+
*
|
|
4
|
+
* Validates:
|
|
5
|
+
* - Host detection from URLs
|
|
6
|
+
* - Token resolution from env vars
|
|
7
|
+
* - URL manipulation (SSH→HTTPS, token injection, normalization)
|
|
8
|
+
* - URL sanitization (token stripping)
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=git-auth.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-auth.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/git-auth.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for git-auth.ts
|
|
3
|
+
*
|
|
4
|
+
* Validates:
|
|
5
|
+
* - Host detection from URLs
|
|
6
|
+
* - Token resolution from env vars
|
|
7
|
+
* - URL manipulation (SSH→HTTPS, token injection, normalization)
|
|
8
|
+
* - URL sanitization (token stripping)
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
11
|
+
import { detectGitHost, buildAuthenticatedUrl, sshToHttps, normalizeGitUrl, sanitizeUrl, resolveGitAuth, } from '../core/git-auth.js';
|
|
12
|
+
// ─── Host Detection ──────────────────────────────────────────────────
|
|
13
|
+
describe('detectGitHost', () => {
|
|
14
|
+
it('should detect GitHub', () => {
|
|
15
|
+
expect(detectGitHost('https://github.com/owner/repo')).toBe('github');
|
|
16
|
+
expect(detectGitHost('git@github.com:owner/repo.git')).toBe('github');
|
|
17
|
+
});
|
|
18
|
+
it('should detect GitLab', () => {
|
|
19
|
+
expect(detectGitHost('https://gitlab.com/owner/repo')).toBe('gitlab');
|
|
20
|
+
expect(detectGitHost('git@gitlab.com:owner/repo.git')).toBe('gitlab');
|
|
21
|
+
});
|
|
22
|
+
it('should detect Bitbucket', () => {
|
|
23
|
+
expect(detectGitHost('https://bitbucket.org/owner/repo')).toBe('bitbucket');
|
|
24
|
+
expect(detectGitHost('git@bitbucket.org:owner/repo.git')).toBe('bitbucket');
|
|
25
|
+
});
|
|
26
|
+
it('should detect custom hosts', () => {
|
|
27
|
+
expect(detectGitHost('https://git.company.com/team/repo')).toBe('custom');
|
|
28
|
+
expect(detectGitHost('git@git.internal.io:team/repo.git')).toBe('custom');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
// ─── URL Manipulation ────────────────────────────────────────────────
|
|
32
|
+
describe('buildAuthenticatedUrl', () => {
|
|
33
|
+
it('should inject token into HTTPS URL', () => {
|
|
34
|
+
const result = buildAuthenticatedUrl('https://github.com/owner/repo.git', 'mytoken123');
|
|
35
|
+
expect(result).toContain('oauth2:mytoken123@');
|
|
36
|
+
expect(result).toContain('github.com');
|
|
37
|
+
});
|
|
38
|
+
it('should inject token into GitLab URL', () => {
|
|
39
|
+
const result = buildAuthenticatedUrl('https://gitlab.com/team/repo.git', 'gltoken');
|
|
40
|
+
expect(result).toContain('oauth2:gltoken@');
|
|
41
|
+
expect(result).toContain('gitlab.com');
|
|
42
|
+
});
|
|
43
|
+
it('should handle URL with port', () => {
|
|
44
|
+
const result = buildAuthenticatedUrl('https://git.company.com:8443/team/repo.git', 'token');
|
|
45
|
+
expect(result).toContain('oauth2:token@');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('sshToHttps', () => {
|
|
49
|
+
it('should convert SSH to HTTPS', () => {
|
|
50
|
+
expect(sshToHttps('git@github.com:owner/repo.git')).toBe('https://github.com/owner/repo.git');
|
|
51
|
+
});
|
|
52
|
+
it('should convert SSH without .git suffix', () => {
|
|
53
|
+
expect(sshToHttps('git@gitlab.com:team/project')).toBe('https://gitlab.com/team/project.git');
|
|
54
|
+
});
|
|
55
|
+
it('should return non-SSH URLs unchanged', () => {
|
|
56
|
+
const url = 'https://github.com/owner/repo.git';
|
|
57
|
+
expect(sshToHttps(url)).toBe(url);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('normalizeGitUrl', () => {
|
|
61
|
+
it('should add https prefix if missing', () => {
|
|
62
|
+
const result = normalizeGitUrl('github.com/owner/repo');
|
|
63
|
+
expect(result).toMatch(/^https:\/\//);
|
|
64
|
+
});
|
|
65
|
+
it('should add .git suffix if missing', () => {
|
|
66
|
+
const result = normalizeGitUrl('https://github.com/owner/repo');
|
|
67
|
+
expect(result).toMatch(/\.git$/);
|
|
68
|
+
});
|
|
69
|
+
it('should leave SSH URLs unchanged', () => {
|
|
70
|
+
const url = 'git@github.com:owner/repo.git';
|
|
71
|
+
expect(normalizeGitUrl(url)).toBe(url);
|
|
72
|
+
});
|
|
73
|
+
it('should not double-add .git', () => {
|
|
74
|
+
const result = normalizeGitUrl('https://github.com/owner/repo.git');
|
|
75
|
+
expect(result).not.toContain('.git.git');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
// ─── URL Sanitization ────────────────────────────────────────────────
|
|
79
|
+
describe('sanitizeUrl', () => {
|
|
80
|
+
it('should strip oauth2 tokens', () => {
|
|
81
|
+
const url = 'https://oauth2:mysecrettoken123@github.com/owner/repo.git';
|
|
82
|
+
const result = sanitizeUrl(url);
|
|
83
|
+
expect(result).not.toContain('mysecrettoken123');
|
|
84
|
+
expect(result).toContain('github.com');
|
|
85
|
+
});
|
|
86
|
+
it('should strip basic auth tokens', () => {
|
|
87
|
+
const url = 'https://user:password123@gitlab.com/team/repo.git';
|
|
88
|
+
const result = sanitizeUrl(url);
|
|
89
|
+
expect(result).not.toContain('password123');
|
|
90
|
+
});
|
|
91
|
+
it('should leave clean URLs unchanged', () => {
|
|
92
|
+
const url = 'https://github.com/owner/repo.git';
|
|
93
|
+
expect(sanitizeUrl(url)).toBe(url);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
// ─── Auth Resolution ─────────────────────────────────────────────────
|
|
97
|
+
describe('resolveGitAuth', () => {
|
|
98
|
+
const originalEnv = { ...process.env };
|
|
99
|
+
afterEach(() => {
|
|
100
|
+
// Restore environment
|
|
101
|
+
process.env = { ...originalEnv };
|
|
102
|
+
});
|
|
103
|
+
it('should prioritize explicit token', async () => {
|
|
104
|
+
const result = await resolveGitAuth('https://github.com/owner/repo', 'explicit-token');
|
|
105
|
+
expect(result.method).toBe('token');
|
|
106
|
+
expect(result.token).toBe('explicit-token');
|
|
107
|
+
});
|
|
108
|
+
it('should resolve GH_TOKEN for GitHub', async () => {
|
|
109
|
+
process.env.GH_TOKEN = 'gh-test-token';
|
|
110
|
+
const result = await resolveGitAuth('https://github.com/owner/repo');
|
|
111
|
+
expect(result.method).toBe('token');
|
|
112
|
+
expect(result.token).toBe('gh-test-token');
|
|
113
|
+
delete process.env.GH_TOKEN;
|
|
114
|
+
});
|
|
115
|
+
it('should resolve GITLAB_TOKEN for GitLab', async () => {
|
|
116
|
+
process.env.GITLAB_TOKEN = 'gl-test-token';
|
|
117
|
+
const result = await resolveGitAuth('https://gitlab.com/team/repo');
|
|
118
|
+
expect(result.method).toBe('token');
|
|
119
|
+
expect(result.token).toBe('gl-test-token');
|
|
120
|
+
delete process.env.GITLAB_TOKEN;
|
|
121
|
+
});
|
|
122
|
+
it('should resolve BITBUCKET_TOKEN for Bitbucket', async () => {
|
|
123
|
+
process.env.BITBUCKET_TOKEN = 'bb-test-token';
|
|
124
|
+
const result = await resolveGitAuth('https://bitbucket.org/team/repo');
|
|
125
|
+
expect(result.method).toBe('token');
|
|
126
|
+
expect(result.token).toBe('bb-test-token');
|
|
127
|
+
delete process.env.BITBUCKET_TOKEN;
|
|
128
|
+
});
|
|
129
|
+
it('should resolve GIT_TOKEN as fallback for custom hosts', async () => {
|
|
130
|
+
process.env.GIT_TOKEN = 'generic-token';
|
|
131
|
+
const result = await resolveGitAuth('https://git.company.com/team/repo');
|
|
132
|
+
expect(result.method).toBe('token');
|
|
133
|
+
expect(result.token).toBe('generic-token');
|
|
134
|
+
delete process.env.GIT_TOKEN;
|
|
135
|
+
});
|
|
136
|
+
it('should detect correct host type', async () => {
|
|
137
|
+
const github = await resolveGitAuth('https://github.com/owner/repo', 'tok');
|
|
138
|
+
expect(github.host).toBe('github');
|
|
139
|
+
const gitlab = await resolveGitAuth('https://gitlab.com/team/repo', 'tok');
|
|
140
|
+
expect(gitlab.host).toBe('gitlab');
|
|
141
|
+
const bitbucket = await resolveGitAuth('https://bitbucket.org/team/repo', 'tok');
|
|
142
|
+
expect(bitbucket.host).toBe('bitbucket');
|
|
143
|
+
const custom = await resolveGitAuth('https://git.company.com/team/repo', 'tok');
|
|
144
|
+
expect(custom.host).toBe('custom');
|
|
145
|
+
});
|
|
146
|
+
it('should return none when no auth available', async () => {
|
|
147
|
+
// Clear all possible tokens
|
|
148
|
+
delete process.env.GH_TOKEN;
|
|
149
|
+
delete process.env.GITHUB_TOKEN;
|
|
150
|
+
delete process.env.GIT_TOKEN;
|
|
151
|
+
delete process.env.GITLAB_TOKEN;
|
|
152
|
+
delete process.env.GL_TOKEN;
|
|
153
|
+
delete process.env.BITBUCKET_TOKEN;
|
|
154
|
+
delete process.env.BB_TOKEN;
|
|
155
|
+
const result = await resolveGitAuth('https://git.example.com/team/repo');
|
|
156
|
+
// Could be 'none', 'ssh', or 'credential-helper' depending on machine
|
|
157
|
+
expect(['none', 'ssh', 'credential-helper', 'netrc']).toContain(result.method);
|
|
158
|
+
}, 15000); // Increased timeout for credential helper probing
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=git-auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-auth.test.js","sourceRoot":"","sources":["../../src/__tests__/git-auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-lock.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/skill-lock.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for skill-lock.ts
|
|
3
|
+
*
|
|
4
|
+
* Validates the expanded SourceType union and lock file operations
|
|
5
|
+
* with the new source types (bitbucket, npm, private-git)
|
|
6
|
+
*/
|
|
7
|
+
import { describe, it, expect } from 'vitest';
|
|
8
|
+
import { createLockEntry, } from '../core/skill-lock.js';
|
|
9
|
+
// ─── SourceType Expansion ────────────────────────────────────────────
|
|
10
|
+
describe('SourceType - Expanded Types', () => {
|
|
11
|
+
it('should accept all original source types', () => {
|
|
12
|
+
const types = ['database', 'github', 'gitlab', 'local'];
|
|
13
|
+
expect(types).toHaveLength(4);
|
|
14
|
+
});
|
|
15
|
+
it('should accept new source types', () => {
|
|
16
|
+
const types = ['bitbucket', 'npm', 'private-git'];
|
|
17
|
+
expect(types).toHaveLength(3);
|
|
18
|
+
});
|
|
19
|
+
it('should accept all source types together', () => {
|
|
20
|
+
const types = [
|
|
21
|
+
'database', 'github', 'gitlab', 'bitbucket', 'npm', 'private-git', 'local',
|
|
22
|
+
];
|
|
23
|
+
expect(types).toHaveLength(7);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
// ─── Lock Entry Creation ─────────────────────────────────────────────
|
|
27
|
+
describe('createLockEntry - New Source Types', () => {
|
|
28
|
+
it('should create lock entry for Bitbucket source', () => {
|
|
29
|
+
const entry = createLockEntry({
|
|
30
|
+
name: 'my-skill',
|
|
31
|
+
scopedName: 'team/repo/my-skill',
|
|
32
|
+
source: 'https://bitbucket.org/team/repo.git',
|
|
33
|
+
sourceType: 'bitbucket',
|
|
34
|
+
version: 'abc123',
|
|
35
|
+
agents: ['cursor', 'claude'],
|
|
36
|
+
canonicalPath: '/path/to/skills',
|
|
37
|
+
isGlobal: false,
|
|
38
|
+
});
|
|
39
|
+
expect(entry.sourceType).toBe('bitbucket');
|
|
40
|
+
expect(entry.source).toBe('https://bitbucket.org/team/repo.git');
|
|
41
|
+
expect(entry.name).toBe('my-skill');
|
|
42
|
+
expect(entry.agents).toEqual(['cursor', 'claude']);
|
|
43
|
+
expect(entry.installedAt).toBeDefined();
|
|
44
|
+
});
|
|
45
|
+
it('should create lock entry for npm source', () => {
|
|
46
|
+
const entry = createLockEntry({
|
|
47
|
+
name: 'company-skills',
|
|
48
|
+
scopedName: 'npm:@company/skills/company-skills',
|
|
49
|
+
source: 'npm:@company/skills',
|
|
50
|
+
sourceType: 'npm',
|
|
51
|
+
version: '1.2.3',
|
|
52
|
+
agents: ['cursor'],
|
|
53
|
+
canonicalPath: '/path/to/skills',
|
|
54
|
+
isGlobal: true,
|
|
55
|
+
});
|
|
56
|
+
expect(entry.sourceType).toBe('npm');
|
|
57
|
+
expect(entry.source).toBe('npm:@company/skills');
|
|
58
|
+
expect(entry.version).toBe('1.2.3');
|
|
59
|
+
expect(entry.isGlobal).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
it('should create lock entry for private-git source', () => {
|
|
62
|
+
const entry = createLockEntry({
|
|
63
|
+
name: 'internal-skill',
|
|
64
|
+
scopedName: 'team/skills/internal-skill',
|
|
65
|
+
source: 'https://git.company.com/team/skills.git',
|
|
66
|
+
sourceType: 'private-git',
|
|
67
|
+
version: 'def456',
|
|
68
|
+
agents: ['claude'],
|
|
69
|
+
canonicalPath: '/path/to/skills',
|
|
70
|
+
isGlobal: false,
|
|
71
|
+
});
|
|
72
|
+
expect(entry.sourceType).toBe('private-git');
|
|
73
|
+
expect(entry.source).toContain('git.company.com');
|
|
74
|
+
});
|
|
75
|
+
it('should create lock entry for ssh private-git source', () => {
|
|
76
|
+
const entry = createLockEntry({
|
|
77
|
+
name: 'ssh-skill',
|
|
78
|
+
scopedName: 'team/repo/ssh-skill',
|
|
79
|
+
source: 'git@git.company.com:team/repo.git',
|
|
80
|
+
sourceType: 'private-git',
|
|
81
|
+
agents: ['cursor', 'claude'],
|
|
82
|
+
canonicalPath: '/path/to/skills',
|
|
83
|
+
isGlobal: false,
|
|
84
|
+
});
|
|
85
|
+
expect(entry.sourceType).toBe('private-git');
|
|
86
|
+
expect(entry.source).toContain('git@');
|
|
87
|
+
});
|
|
88
|
+
it('should include timestamp on creation', () => {
|
|
89
|
+
const before = new Date().toISOString();
|
|
90
|
+
const entry = createLockEntry({
|
|
91
|
+
name: 'test',
|
|
92
|
+
scopedName: 'test',
|
|
93
|
+
source: 'npm:test',
|
|
94
|
+
sourceType: 'npm',
|
|
95
|
+
agents: ['cursor'],
|
|
96
|
+
canonicalPath: '/tmp',
|
|
97
|
+
isGlobal: false,
|
|
98
|
+
});
|
|
99
|
+
const after = new Date().toISOString();
|
|
100
|
+
expect(entry.installedAt >= before).toBe(true);
|
|
101
|
+
expect(entry.installedAt <= after).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=skill-lock.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-lock.test.js","sourceRoot":"","sources":["../../src/__tests__/skill-lock.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsrc.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/skillsrc.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|