@skillctl/import 0.2.0 → 0.3.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 skillctl contributors
3
+ Copyright (c) 2026 xFurti, Gabry848
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,36 @@
1
+ import '@skillctl/adapters';
2
+ import { type SkillLinkKind } from './parsers/link-classifier.js';
3
+ export interface DiscoveredSkillOccurrence {
4
+ adapterId: string;
5
+ adapterName: string;
6
+ projectPath: string;
7
+ relativePath: string;
8
+ localPath: string;
9
+ kind: SkillLinkKind;
10
+ resolvedPath: string;
11
+ }
12
+ export interface DiscoveredSource {
13
+ adapterId: string;
14
+ adapterName: string;
15
+ projectPath: string;
16
+ absolutePath: string;
17
+ skills: DiscoveredSkillOccurrence[];
18
+ }
19
+ export type ProjectImportAction = 'copy-local' | 'register-existing' | 'skip-existing' | 'skip-broken';
20
+ export interface DedupedProjectSkill {
21
+ name: string;
22
+ kind: SkillLinkKind;
23
+ resolvedPath: string;
24
+ action: ProjectImportAction;
25
+ occurrences: DiscoveredSkillOccurrence[];
26
+ note?: string;
27
+ }
28
+ export interface DiscoverProjectSkillsOptions {
29
+ cwd?: string;
30
+ sources?: string[];
31
+ }
32
+ export declare function discoverProjectSkills(opts?: DiscoverProjectSkillsOptions): Promise<{
33
+ sources: DiscoveredSource[];
34
+ deduped: DedupedProjectSkill[];
35
+ }>;
36
+ //# sourceMappingURL=discover-project-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-project-skills.d.ts","sourceRoot":"","sources":["../src/discover-project-skills.ts"],"names":[],"mappings":"AAGA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAErF,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,mBAAmB,GAAG,eAAe,GAAG,aAAa,CAAC;AAEvG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAcD,wBAAsB,qBAAqB,CACzC,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAsE1E"}
@@ -0,0 +1,83 @@
1
+ import { join, relative } from 'node:path';
2
+ import { canonicalizeName, getRegisteredAdapters, loadConfig } from '@skillctl/core';
3
+ import { pathExists } from '@skillctl/adapters';
4
+ import '@skillctl/adapters';
5
+ import { scanSkillsDir } from './parsers/scan-skills-dir.js';
6
+ import { classifySkillPath } from './parsers/link-classifier.js';
7
+ function actionForKind(kind) {
8
+ if (kind === 'skillctl-link')
9
+ return 'register-existing';
10
+ if (kind === 'broken')
11
+ return 'skip-broken';
12
+ return 'copy-local';
13
+ }
14
+ function pickPrimaryOccurrence(occurrences) {
15
+ const linked = occurrences.find((o) => o.kind === 'skillctl-link');
16
+ if (linked)
17
+ return linked;
18
+ return occurrences[0];
19
+ }
20
+ export async function discoverProjectSkills(opts = {}) {
21
+ const cwd = opts.cwd || process.cwd();
22
+ const config = await loadConfig();
23
+ const storeRoot = config.store;
24
+ const filter = opts.sources?.map((s) => s.toLowerCase());
25
+ const sources = [];
26
+ const byName = new Map();
27
+ for (const adapter of getRegisteredAdapters()) {
28
+ if (filter?.length && !filter.includes(adapter.id.toLowerCase()))
29
+ continue;
30
+ for (const projectPath of adapter.projectPaths) {
31
+ const absolutePath = join(cwd, projectPath);
32
+ if (!(await pathExists(absolutePath)))
33
+ continue;
34
+ const dirSkills = await scanSkillsDir(absolutePath);
35
+ const skills = [];
36
+ for (const s of dirSkills) {
37
+ const classified = await classifySkillPath(s.localPath, storeRoot);
38
+ const relativePath = relative(cwd, s.localPath).replace(/\\/g, '/');
39
+ const occurrence = {
40
+ adapterId: adapter.id,
41
+ adapterName: adapter.name,
42
+ projectPath,
43
+ relativePath,
44
+ localPath: s.localPath,
45
+ kind: classified.kind,
46
+ resolvedPath: classified.resolvedPath,
47
+ };
48
+ skills.push(occurrence);
49
+ const key = canonicalizeName(s.name);
50
+ const list = byName.get(key) || [];
51
+ list.push(occurrence);
52
+ byName.set(key, list);
53
+ }
54
+ if (skills.length > 0) {
55
+ sources.push({
56
+ adapterId: adapter.id,
57
+ adapterName: adapter.name,
58
+ projectPath,
59
+ absolutePath,
60
+ skills,
61
+ });
62
+ }
63
+ }
64
+ }
65
+ const deduped = [];
66
+ for (const [name, occurrences] of byName.entries()) {
67
+ const primary = pickPrimaryOccurrence(occurrences);
68
+ const kind = primary.kind;
69
+ deduped.push({
70
+ name,
71
+ kind,
72
+ resolvedPath: primary.resolvedPath,
73
+ action: actionForKind(kind),
74
+ occurrences,
75
+ note: occurrences.length > 1
76
+ ? `found in ${occurrences.map((o) => o.relativePath).join(', ')}`
77
+ : undefined,
78
+ });
79
+ }
80
+ deduped.sort((a, b) => a.name.localeCompare(b.name));
81
+ return { sources, deduped };
82
+ }
83
+ //# sourceMappingURL=discover-project-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-project-skills.js","sourceRoot":"","sources":["../src/discover-project-skills.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- export { executeImport, planImportFromNpx, type ImportOptions, type ImportResult, type ImportPlanItem } from './migrate.js';
1
+ export { executeImport, planImportFromNpx, planImportFromProject, type ImportOptions, type ImportResult, type ImportPlanItem, } from './migrate.js';
2
+ export { discoverProjectSkills, type DiscoveredSource, type DedupedProjectSkill } from './discover-project-skills.js';
2
3
  export { parseNpxSkillsLock, findNpxLock } from './parsers/npx-skills-lock.js';
3
- export { scanAgentsSkillsDir } from './parsers/agents-skills-dir.js';
4
+ export { scanSkillsDir, scanAgentsSkillsDir } from './parsers/scan-skills-dir.js';
5
+ export { classifySkillPath, type SkillLinkKind } from './parsers/link-classifier.js';
4
6
  export { scanPythonSkillctlRepos } from './parsers/python-skillctl.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5H,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
- export { executeImport, planImportFromNpx } from './migrate.js';
1
+ export { executeImport, planImportFromNpx, planImportFromProject, } from './migrate.js';
2
+ export { discoverProjectSkills } from './discover-project-skills.js';
2
3
  export { parseNpxSkillsLock, findNpxLock } from './parsers/npx-skills-lock.js';
3
- export { scanAgentsSkillsDir } from './parsers/agents-skills-dir.js';
4
+ export { scanSkillsDir, scanAgentsSkillsDir } from './parsers/scan-skills-dir.js';
5
+ export { classifySkillPath } from './parsers/link-classifier.js';
4
6
  export { scanPythonSkillctlRepos } from './parsers/python-skillctl.js';
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAA8D,MAAM,cAAc,CAAC;AAC5H,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAmD,MAAM,8BAA8B,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAsB,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/migrate.d.ts CHANGED
@@ -1,24 +1,38 @@
1
+ import { discoverProjectSkills } from './discover-project-skills.js';
1
2
  export interface ImportOptions {
2
3
  cwd?: string;
3
4
  dryRun?: boolean;
4
5
  yes?: boolean;
6
+ sync?: boolean;
7
+ /** @deprecated Use sync */
5
8
  adopt?: boolean;
6
9
  writeManifest?: boolean;
7
- source: 'npx' | 'python-skillctl';
10
+ lockOnly?: boolean;
11
+ source: 'npx' | 'python-skillctl' | 'project';
12
+ sources?: string[];
8
13
  }
9
14
  export interface ImportPlanItem {
10
15
  name: string;
11
- action: 'fetch' | 'copy-local' | 'skip-existing';
16
+ action: 'fetch' | 'copy-local' | 'register-existing' | 'skip-existing' | 'skip-broken';
12
17
  specifier?: string;
13
18
  localPath?: string;
14
19
  note?: string;
20
+ adapter?: string;
21
+ originalPath?: string;
15
22
  }
16
23
  export interface ImportResult {
17
24
  plan: ImportPlanItem[];
25
+ discovered?: Awaited<ReturnType<typeof discoverProjectSkills>>;
18
26
  imported: string[];
19
27
  skipped: string[];
20
28
  errors: string[];
21
29
  }
22
30
  export declare function planImportFromNpx(cwd: string): Promise<ImportPlanItem[]>;
31
+ export declare function planImportFromProject(cwd: string, opts?: {
32
+ sources?: string[];
33
+ }): Promise<{
34
+ plan: ImportPlanItem[];
35
+ discovered: Awaited<ReturnType<typeof discoverProjectSkills>>;
36
+ }>;
23
37
  export declare function executeImport(opts: ImportOptions): Promise<ImportResult>;
24
38
  //# sourceMappingURL=migrate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,KAAK,GAAG,iBAAiB,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAaD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkC9E;AAYD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAmF9E"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,mBAAmB,GAAG,eAAe,GAAG,aAAa,CAAC;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA2CD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkC9E;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC5B,OAAO,CAAC;IAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAA;CAAE,CAAC,CA8CpG;AAuBD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqG9E"}
package/dist/migrate.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import { cp, stat } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
- import { canonicalizeName, computeDirIntegrity, ensureDir, } from '@skillctl/core';
3
+ import { canonicalizeName, computeDirIntegrity, ensureDir, formatCanonicalPathForLock, importedSpecifier, lockToSkillTargets, } from '@skillctl/core';
4
4
  import { loadLockfile, saveLockfile, createEmptyLockfile, addOrUpdateEntry, makeLockEntry } from '@skillctl/lockfile';
5
5
  import { loadManifest, saveManifest } from '@skillctl/manifest';
6
6
  import { RegistryManager } from '@skillctl/registry';
7
7
  import { syncSkillsToAgents } from '@skillctl/adapters';
8
8
  import { parseNpxSkillsLock, findNpxLock } from './parsers/npx-skills-lock.js';
9
- import { scanAgentsSkillsDir } from './parsers/agents-skills-dir.js';
9
+ import { scanSkillsDir } from './parsers/scan-skills-dir.js';
10
10
  import { scanPythonSkillctlRepos } from './parsers/python-skillctl.js';
11
- async function materializeLocal(localPath, name, cwd, prov) {
11
+ import { discoverProjectSkills } from './discover-project-skills.js';
12
+ async function materializeLocal(localPath, name, prov) {
12
13
  const config = await import('@skillctl/core').then((m) => m.loadConfig());
13
14
  const store = config.store;
14
15
  const canonicalName = canonicalizeName(name);
@@ -16,7 +17,14 @@ async function materializeLocal(localPath, name, cwd, prov) {
16
17
  await ensureDir(target);
17
18
  await cp(localPath, target, { recursive: true, force: true });
18
19
  const integrity = await computeDirIntegrity(target);
19
- return makeLockEntry(canonicalName, prov.originalSource || `file:${localPath}`, `local:${localPath}`, integrity, target, prov);
20
+ const specifier = importedSpecifier(canonicalName);
21
+ return makeLockEntry(canonicalName, specifier, specifier, integrity, formatCanonicalPathForLock(canonicalName), prov);
22
+ }
23
+ async function registerExistingCanonical(canonicalPath, name, prov) {
24
+ const canonicalName = canonicalizeName(name);
25
+ const integrity = await computeDirIntegrity(canonicalPath);
26
+ const specifier = importedSpecifier(canonicalName);
27
+ return makeLockEntry(canonicalName, specifier, specifier, integrity, formatCanonicalPathForLock(canonicalName), prov);
20
28
  }
21
29
  export async function planImportFromNpx(cwd) {
22
30
  const plan = [];
@@ -39,7 +47,7 @@ export async function planImportFromNpx(cwd) {
39
47
  }
40
48
  }
41
49
  const agentsDir = join(cwd, '.agents', 'skills');
42
- const dirSkills = await scanAgentsSkillsDir(agentsDir);
50
+ const dirSkills = await scanSkillsDir(agentsDir);
43
51
  for (const s of dirSkills) {
44
52
  const name = canonicalizeName(s.name);
45
53
  if (plan.some((p) => p.name === name))
@@ -52,6 +60,48 @@ export async function planImportFromNpx(cwd) {
52
60
  }
53
61
  return plan;
54
62
  }
63
+ export async function planImportFromProject(cwd, opts) {
64
+ const lock = (await loadLockfile(cwd)) || createEmptyLockfile();
65
+ const discovered = await discoverProjectSkills({ cwd, sources: opts?.sources });
66
+ const plan = [];
67
+ for (const skill of discovered.deduped) {
68
+ if (lock.skills[skill.name]) {
69
+ plan.push({ name: skill.name, action: 'skip-existing', note: 'already in agent-skills.lock' });
70
+ continue;
71
+ }
72
+ const primary = skill.occurrences[0];
73
+ if (skill.action === 'skip-broken') {
74
+ plan.push({
75
+ name: skill.name,
76
+ action: 'skip-broken',
77
+ note: skill.note || `broken or missing SKILL.md at ${primary?.relativePath}`,
78
+ });
79
+ continue;
80
+ }
81
+ if (skill.action === 'register-existing') {
82
+ plan.push({
83
+ name: skill.name,
84
+ action: 'register-existing',
85
+ localPath: skill.resolvedPath,
86
+ specifier: importedSpecifier(skill.name),
87
+ adapter: primary?.adapterId,
88
+ originalPath: primary?.relativePath,
89
+ note: skill.note,
90
+ });
91
+ continue;
92
+ }
93
+ plan.push({
94
+ name: skill.name,
95
+ action: 'copy-local',
96
+ localPath: skill.resolvedPath,
97
+ specifier: importedSpecifier(skill.name),
98
+ adapter: primary?.adapterId,
99
+ originalPath: primary?.relativePath,
100
+ note: skill.note,
101
+ });
102
+ }
103
+ return { plan, discovered };
104
+ }
55
105
  function normalizeNpxSource(source, ref) {
56
106
  if (source.startsWith('github:') || source.startsWith('npm:') || source.startsWith('file:')) {
57
107
  return ref ? `${source}@${ref}` : source;
@@ -61,12 +111,29 @@ function normalizeNpxSource(source, ref) {
61
111
  }
62
112
  return source;
63
113
  }
114
+ function shouldWriteManifest(opts) {
115
+ if (opts.lockOnly)
116
+ return false;
117
+ if (opts.writeManifest === false)
118
+ return false;
119
+ if (opts.source === 'project')
120
+ return true;
121
+ return !!opts.writeManifest;
122
+ }
123
+ function shouldSync(opts) {
124
+ return !!(opts.sync || opts.adopt);
125
+ }
64
126
  export async function executeImport(opts) {
65
127
  const cwd = opts.cwd || process.cwd();
66
128
  const result = { plan: [], imported: [], skipped: [], errors: [] };
67
129
  if (opts.source === 'npx') {
68
130
  result.plan = await planImportFromNpx(cwd);
69
131
  }
132
+ else if (opts.source === 'project') {
133
+ const { plan, discovered } = await planImportFromProject(cwd, { sources: opts.sources });
134
+ result.plan = plan;
135
+ result.discovered = discovered;
136
+ }
70
137
  else {
71
138
  const pyEntries = await scanPythonSkillctlRepos();
72
139
  const lock = (await loadLockfile(cwd)) || createEmptyLockfile();
@@ -82,24 +149,41 @@ export async function executeImport(opts) {
82
149
  }
83
150
  if (opts.dryRun)
84
151
  return result;
85
- const mgr = new RegistryManager();
86
152
  let lock = (await loadLockfile(cwd)) || createEmptyLockfile();
87
153
  for (const item of result.plan) {
88
154
  if (item.action === 'skip-existing') {
89
155
  result.skipped.push(item.name);
90
156
  continue;
91
157
  }
158
+ if (item.action === 'skip-broken') {
159
+ result.skipped.push(item.name);
160
+ result.errors.push(`${item.name}: ${item.note || 'broken skill path'}`);
161
+ continue;
162
+ }
92
163
  try {
93
164
  let entry;
165
+ const migratedFrom = opts.source === 'project' ? 'project-scan' : opts.source === 'npx' ? 'npx' : 'python-skillctl';
94
166
  const prov = {
95
- type: 'other',
96
- migratedFrom: opts.source === 'npx' ? 'npx' : 'python-skillctl',
97
- originalSource: item.specifier || item.localPath,
167
+ type: 'local',
168
+ migratedFrom,
169
+ originalSource: item.originalPath || item.specifier || item.localPath,
170
+ originalPath: item.originalPath,
171
+ adapter: item.adapter,
98
172
  };
99
173
  if (item.action === 'fetch' && item.specifier) {
100
- entry = await mgr.add(item.specifier, { cwd, updateManifest: false });
174
+ entry = await new RegistryManager().add(item.specifier, { cwd, updateManifest: false });
101
175
  entry.provenance = { ...entry.provenance, ...prov };
102
176
  }
177
+ else if (item.action === 'register-existing' && item.localPath) {
178
+ try {
179
+ await stat(item.localPath);
180
+ }
181
+ catch {
182
+ result.errors.push(`${item.name}: canonical path not found ${item.localPath}`);
183
+ continue;
184
+ }
185
+ entry = await registerExistingCanonical(item.localPath, item.name, prov);
186
+ }
103
187
  else if (item.action === 'copy-local' && item.localPath) {
104
188
  try {
105
189
  await stat(item.localPath);
@@ -108,7 +192,7 @@ export async function executeImport(opts) {
108
192
  result.errors.push(`${item.name}: local path not found ${item.localPath}`);
109
193
  continue;
110
194
  }
111
- entry = await materializeLocal(item.localPath, item.name, cwd, prov);
195
+ entry = await materializeLocal(item.localPath, item.name, prov);
112
196
  }
113
197
  else {
114
198
  continue;
@@ -120,9 +204,9 @@ export async function executeImport(opts) {
120
204
  result.errors.push(`${item.name}: ${e.message}`);
121
205
  }
122
206
  }
123
- lock.metadata = { ...lock.metadata, migratedAt: new Date().toISOString(), toolVersion: '0.2.0' };
207
+ lock.metadata = { ...lock.metadata, migratedAt: new Date().toISOString(), toolVersion: '0.3.1' };
124
208
  await saveLockfile(lock, cwd);
125
- if (opts.writeManifest) {
209
+ if (shouldWriteManifest(opts)) {
126
210
  let manifest = (await loadManifest(cwd)) || (await import('@skillctl/manifest')).createDefaultManifest();
127
211
  if (!manifest.agentSkills)
128
212
  manifest.agentSkills = { dependencies: {}, devDependencies: {} };
@@ -135,11 +219,10 @@ export async function executeImport(opts) {
135
219
  }
136
220
  await saveManifest(manifest, cwd);
137
221
  }
138
- if (opts.adopt && result.imported.length > 0) {
139
- const skills = result.imported.map((n) => ({
140
- name: n,
141
- canonicalPath: lock.skills[n].canonicalPath,
142
- }));
222
+ if (shouldSync(opts) && result.imported.length > 0) {
223
+ const allTargets = await lockToSkillTargets(lock);
224
+ const imported = new Set(result.imported);
225
+ const skills = allTargets.filter((s) => imported.has(s.name));
143
226
  await syncSkillsToAgents(skills);
144
227
  }
145
228
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
- export interface DirSkillEntry {
2
- name: string;
3
- localPath: string;
4
- }
5
- export declare function scanAgentsSkillsDir(dir: string): Promise<DirSkillEntry[]>;
1
+ export { scanSkillsDir, scanAgentsSkillsDir, type DirSkillEntry } from './scan-skills-dir.js';
6
2
  //# sourceMappingURL=agents-skills-dir.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-skills-dir.d.ts","sourceRoot":"","sources":["../../src/parsers/agents-skills-dir.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAe/E"}
1
+ {"version":3,"file":"agents-skills-dir.d.ts","sourceRoot":"","sources":["../../src/parsers/agents-skills-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,22 +1,2 @@
1
- import { readdir } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import { hasSkillMd } from './skill-md.js';
4
- export async function scanAgentsSkillsDir(dir) {
5
- const entries = [];
6
- try {
7
- const items = await readdir(dir, { withFileTypes: true });
8
- for (const item of items) {
9
- if (!item.isDirectory() || item.name.startsWith('.'))
10
- continue;
11
- const localPath = join(dir, item.name);
12
- if (await hasSkillMd(localPath)) {
13
- entries.push({ name: item.name, localPath });
14
- }
15
- }
16
- }
17
- catch {
18
- // missing dir
19
- }
20
- return entries;
21
- }
1
+ export { scanSkillsDir, scanAgentsSkillsDir } from './scan-skills-dir.js';
22
2
  //# sourceMappingURL=agents-skills-dir.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-skills-dir.js","sourceRoot":"","sources":["../../src/parsers/agents-skills-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"agents-skills-dir.js","sourceRoot":"","sources":["../../src/parsers/agents-skills-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type SkillLinkKind = 'local-copy' | 'skillctl-link' | 'external-link' | 'broken';
2
+ export interface ClassifiedSkillPath {
3
+ kind: SkillLinkKind;
4
+ resolvedPath: string;
5
+ canonicalName?: string;
6
+ }
7
+ export declare function classifySkillPath(localPath: string, storeRoot: string): Promise<ClassifiedSkillPath>;
8
+ //# sourceMappingURL=link-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-classifier.d.ts","sourceRoot":"","sources":["../../src/parsers/link-classifier.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,QAAQ,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyC1G"}
@@ -0,0 +1,52 @@
1
+ import { lstat, realpath, stat } from 'node:fs/promises';
2
+ import { resolve as pathResolve } from 'node:path';
3
+ import { hasSkillMd } from './skill-md.js';
4
+ function normalizeStoreRoot(storeRoot) {
5
+ return pathResolve(storeRoot).replace(/\\/g, '/').toLowerCase();
6
+ }
7
+ function isUnderStore(resolved, storeRoot) {
8
+ const norm = pathResolve(resolved).replace(/\\/g, '/').toLowerCase();
9
+ const store = normalizeStoreRoot(storeRoot);
10
+ return norm === store || norm.startsWith(`${store}/`);
11
+ }
12
+ export async function classifySkillPath(localPath, storeRoot) {
13
+ try {
14
+ const lst = await lstat(localPath);
15
+ if (!lst.isDirectory() && !lst.isSymbolicLink()) {
16
+ return { kind: 'broken', resolvedPath: localPath };
17
+ }
18
+ let resolvedPath;
19
+ try {
20
+ resolvedPath = await realpath(localPath);
21
+ }
22
+ catch {
23
+ return { kind: 'broken', resolvedPath: localPath };
24
+ }
25
+ if (isUnderStore(resolvedPath, storeRoot)) {
26
+ const parts = pathResolve(resolvedPath).split(/[/\\]/);
27
+ const canonicalName = parts[parts.length - 1];
28
+ return { kind: 'skillctl-link', resolvedPath, canonicalName };
29
+ }
30
+ try {
31
+ const st = await stat(resolvedPath);
32
+ if (!st.isDirectory()) {
33
+ return { kind: 'broken', resolvedPath };
34
+ }
35
+ }
36
+ catch {
37
+ return { kind: 'broken', resolvedPath };
38
+ }
39
+ if (!(await hasSkillMd(resolvedPath))) {
40
+ return { kind: 'broken', resolvedPath };
41
+ }
42
+ const isLink = lst.isSymbolicLink() || pathResolve(resolvedPath) !== pathResolve(localPath);
43
+ return {
44
+ kind: isLink ? 'external-link' : 'local-copy',
45
+ resolvedPath,
46
+ };
47
+ }
48
+ catch {
49
+ return { kind: 'broken', resolvedPath: localPath };
50
+ }
51
+ }
52
+ //# sourceMappingURL=link-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-classifier.js","sourceRoot":"","sources":["../../src/parsers/link-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAU3C,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,SAAiB;IACvD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;IAC1E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;QAChE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;YAC7C,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface DirSkillEntry {
2
+ name: string;
3
+ localPath: string;
4
+ }
5
+ export declare function scanSkillsDir(dir: string): Promise<DirSkillEntry[]>;
6
+ /** @deprecated Use scanSkillsDir */
7
+ export declare const scanAgentsSkillsDir: typeof scanSkillsDir;
8
+ //# sourceMappingURL=scan-skills-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-skills-dir.d.ts","sourceRoot":"","sources":["../../src/parsers/scan-skills-dir.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAezE;AAED,oCAAoC;AACpC,eAAO,MAAM,mBAAmB,sBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { readdir } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { hasSkillMd } from './skill-md.js';
4
+ export async function scanSkillsDir(dir) {
5
+ const entries = [];
6
+ try {
7
+ const items = await readdir(dir, { withFileTypes: true });
8
+ for (const item of items) {
9
+ if (!item.isDirectory() || item.name.startsWith('.'))
10
+ continue;
11
+ const localPath = join(dir, item.name);
12
+ if (await hasSkillMd(localPath)) {
13
+ entries.push({ name: item.name, localPath });
14
+ }
15
+ }
16
+ }
17
+ catch {
18
+ // missing dir
19
+ }
20
+ return entries;
21
+ }
22
+ /** @deprecated Use scanSkillsDir */
23
+ export const scanAgentsSkillsDir = scanSkillsDir;
24
+ //# sourceMappingURL=scan-skills-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-skills-dir.js","sourceRoot":"","sources":["../../src/parsers/scan-skills-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ import '@skillctl/adapters';
2
+ //# sourceMappingURL=project-import.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-import.test.d.ts","sourceRoot":"","sources":["../../src/test/project-import.test.ts"],"names":[],"mappings":"AAQA,OAAO,oBAAoB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { mkdtemp, mkdir, writeFile, symlink, rm } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ import { tmpdir } from 'node:os';
6
+ import { planImportFromProject } from '../migrate.js';
7
+ import { classifySkillPath } from '../parsers/link-classifier.js';
8
+ import { discoverProjectSkills } from '../discover-project-skills.js';
9
+ import '@skillctl/adapters';
10
+ async function writeSkill(dir, name) {
11
+ const skillDir = join(dir, name);
12
+ await mkdir(skillDir, { recursive: true });
13
+ await writeFile(join(skillDir, 'SKILL.md'), `---\nname: ${name}\n---\n`, 'utf8');
14
+ return skillDir;
15
+ }
16
+ test('discoverProjectSkills finds skills in .codex/skills', async () => {
17
+ const root = await mkdtemp(join(tmpdir(), 'skillctl-import-'));
18
+ try {
19
+ await writeSkill(join(root, '.codex', 'skills'), 'my-tdd');
20
+ const { deduped, sources } = await discoverProjectSkills({ cwd: root });
21
+ assert.equal(deduped.length, 1);
22
+ assert.equal(deduped[0].name, 'my-tdd');
23
+ assert.equal(deduped[0].action, 'copy-local');
24
+ assert.ok(sources.some((s) => s.projectPath === '.codex/skills'));
25
+ }
26
+ finally {
27
+ await rm(root, { recursive: true, force: true });
28
+ }
29
+ });
30
+ test('planImportFromProject uses local:imported specifier', async () => {
31
+ const root = await mkdtemp(join(tmpdir(), 'skillctl-import-'));
32
+ try {
33
+ await writeSkill(join(root, '.claude', 'skills'), 'grill-me');
34
+ const { plan } = await planImportFromProject(root);
35
+ assert.equal(plan.length, 1);
36
+ assert.equal(plan[0].action, 'copy-local');
37
+ assert.equal(plan[0].specifier, 'local:imported/grill-me');
38
+ assert.match(plan[0].originalPath || '', /\.claude\/skills\/grill-me/);
39
+ }
40
+ finally {
41
+ await rm(root, { recursive: true, force: true });
42
+ }
43
+ });
44
+ test('classifySkillPath detects skillctl-link under store root', async () => {
45
+ const root = await mkdtemp(join(tmpdir(), 'skillctl-store-'));
46
+ try {
47
+ const store = join(root, 'store');
48
+ const skill = await writeSkill(store, 'linked-skill');
49
+ const linkParent = join(root, 'project', '.codex', 'skills');
50
+ await mkdir(linkParent, { recursive: true });
51
+ const linkPath = join(linkParent, 'linked-skill');
52
+ if (process.platform === 'win32') {
53
+ const { symlink } = await import('node:fs/promises');
54
+ await symlink(skill, linkPath, 'junction');
55
+ }
56
+ else {
57
+ await symlink(skill, linkPath, 'dir');
58
+ }
59
+ const classified = await classifySkillPath(linkPath, store);
60
+ assert.equal(classified.kind, 'skillctl-link');
61
+ assert.equal(classified.canonicalName, 'linked-skill');
62
+ }
63
+ finally {
64
+ await rm(root, { recursive: true, force: true });
65
+ }
66
+ });
67
+ //# sourceMappingURL=project-import.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-import.test.js","sourceRoot":"","sources":["../../src/test/project-import.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,oBAAoB,CAAC;AAE5B,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC;IACpE,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,4BAA4B,CAAC,CAAC;IACzE,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;IAC1E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@skillctl/import",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Import and migrate skills from npx skills and Python skillctl",
5
5
  "license": "MIT",
6
- "author": "skillctl contributors",
6
+ "author": "xFurti & Gabry848",
7
7
  "type": "module",
8
8
  "main": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts",
@@ -11,11 +11,11 @@
11
11
  "dist"
12
12
  ],
13
13
  "dependencies": {
14
- "@skillctl/core": "0.2.0",
15
- "@skillctl/lockfile": "0.2.0",
16
- "@skillctl/manifest": "0.2.0",
17
- "@skillctl/registry": "0.2.0",
18
- "@skillctl/adapters": "0.2.0"
14
+ "@skillctl/lockfile": "0.3.1",
15
+ "@skillctl/core": "0.3.1",
16
+ "@skillctl/manifest": "0.3.1",
17
+ "@skillctl/adapters": "0.3.1",
18
+ "@skillctl/registry": "0.3.1"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/node": "^20.14.0",