@agent-native/skills 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { createInterface } from \"node:readline/promises\";\n\nexport type AgentId = \"codex\" | \"claude\";\nexport type Scope = \"project\" | \"user\";\ntype Command = \"add\" | \"list\" | \"help\";\ntype InstructionTarget = \"agents\" | \"claude\";\n\nexport const MANAGED_BLOCK_START =\n \"<!-- BEGIN @agent-native/skills managed block -->\";\nexport const MANAGED_BLOCK_END =\n \"<!-- END @agent-native/skills managed block -->\";\n\nexport const HELP = `skills\n\nUsage:\n skills list <source> [--json]\n skills add <source> [--skill <name> ...|--all] [--agent codex|claude|all] [--scope user|project] [--project <dir>] [--instructions agents|claude|both] [--yes] [--force] [--dry-run] [--json]\n\nSources:\n ./skills\n ./skills/my-skill\n owner/repo\n owner/repo/path/to/skills#ref\n github:owner/repo/path/to/skills#ref\n https://github.com/owner/repo/tree/ref/path/to/skills\n\nTargets:\n project codex -> <project>/.agents/skills\n project claude -> <project>/.claude/skills\n user codex -> $CODEX_HOME/skills or ~/.codex/skills\n user claude -> ~/.claude/skills\n\nOptions:\n -s, --skill <name> Install one skill. Repeat or comma-separate.\n --all Install every discovered skill.\n -a, --agent <target> codex, claude, or all. Defaults to codex.\n --scope <scope> user or project. Defaults to user.\n --project <dir> Project root for project-scoped installs.\n --ref <git-ref> Git ref for GitHub-style sources.\n --instructions <set> agents, claude, both/all, or none.\n --with-agents-md Append/update the AGENTS.md managed block.\n --with-claude-md Append/update the CLAUDE.md managed block.\n --agents-file <path> Override the AGENTS.md path.\n --claude-file <path> Override the CLAUDE.md path.\n -y, --yes Accept prompts.\n --force Overwrite existing skill folders.\n --dry-run Print what would change.\n --json Print machine-readable output.`;\n\nexport interface ParsedSkillsCliArgs {\n command: Command;\n source?: string;\n skills: string[];\n all: boolean;\n agents: AgentId[];\n scope: Scope;\n projectDir: string;\n ref?: string;\n instructionTargets: InstructionTarget[];\n agentsFile: string;\n claudeFile: string;\n yes: boolean;\n force: boolean;\n dryRun: boolean;\n json: boolean;\n}\n\nexport interface DiscoveredSkill {\n name: string;\n dir: string;\n description?: string;\n}\n\nexport interface GitHubSource {\n cloneUrl: string;\n ref?: string;\n subdir: string;\n display: string;\n}\n\ninterface ResolvedSource {\n root: string;\n display: string;\n cleanup: () => void;\n}\n\ninterface TargetRoot {\n agent: AgentId;\n scope: Scope;\n root: string;\n}\n\ninterface CopiedSkill {\n skillName: string;\n agent: AgentId;\n scope: Scope;\n from: string;\n to: string;\n}\n\nexport interface InstallResult {\n source: string;\n dryRun: boolean;\n skills: string[];\n copied: CopiedSkill[];\n instructionFiles: string[];\n}\n\ninterface RunCommandOptions {\n cwd?: string;\n}\n\nexport interface RunSkillsCliOptions {\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n isInteractive?: () => boolean;\n log?: (message: string) => void;\n promptSkills?: (skills: DiscoveredSkill[]) => Promise<string[] | null>;\n promptOverwrite?: (paths: string[]) => Promise<boolean>;\n runCommand?: (\n cmd: string,\n args: string[],\n options?: RunCommandOptions,\n ) => Promise<number>;\n}\n\nfunction valueFor(\n args: string[],\n index: number,\n flag: string,\n): { value: string; nextIndex: number } | null {\n const arg = args[index];\n if (arg === flag) {\n const value = args[index + 1];\n if (!value || value.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return { value, nextIndex: index + 1 };\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return { value, nextIndex: index };\n }\n return null;\n}\n\nfunction splitList(value: string): string[] {\n return value\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean);\n}\n\nfunction normalizeAgent(value: string): AgentId[] {\n const out: AgentId[] = [];\n for (const part of splitList(value)) {\n const key = part.toLowerCase();\n if (key === \"all\") {\n out.push(\"codex\", \"claude\");\n } else if (key === \"codex\") {\n out.push(\"codex\");\n } else if (key === \"claude\" || key === \"claude-code\") {\n out.push(\"claude\");\n } else {\n throw new Error(\n `Unknown agent \"${part}\". Expected codex, claude, or all.`,\n );\n }\n }\n return [...new Set(out)];\n}\n\nfunction normalizeInstructions(value: string): InstructionTarget[] {\n const key = value.trim().toLowerCase();\n if (key === \"none\") return [];\n if (key === \"agents\" || key === \"agents.md\" || key === \"agent\") {\n return [\"agents\"];\n }\n if (key === \"claude\" || key === \"claude.md\") return [\"claude\"];\n if (key === \"both\" || key === \"all\") return [\"agents\", \"claude\"];\n throw new Error(\n `Unknown instructions target \"${value}\". Expected agents, claude, both, or none.`,\n );\n}\n\nfunction pushUnique<T>(items: T[], value: T): void {\n if (!items.includes(value)) items.push(value);\n}\n\nexport function parseSkillsCliArgs(\n argv: string[],\n cwd = process.cwd(),\n): ParsedSkillsCliArgs {\n const first = argv[0];\n let command: Command = \"add\";\n let args = argv;\n if (!first || first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(first ? 1 : 0);\n } else if (first === \"add\" || first === \"list\") {\n command = first;\n args = argv.slice(1);\n }\n\n const parsed: ParsedSkillsCliArgs = {\n command,\n skills: [],\n all: false,\n agents: [\"codex\"],\n scope: \"user\",\n projectDir: cwd,\n instructionTargets: [],\n agentsFile: \"AGENTS.md\",\n claudeFile: \"CLAUDE.md\",\n yes: false,\n force: false,\n dryRun: false,\n json: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n let consumed: { value: string; nextIndex: number } | null;\n if (\n (consumed = valueFor(args, i, \"--skill\")) ||\n (consumed = valueFor(args, i, \"-s\"))\n ) {\n for (const skill of splitList(consumed.value)) parsed.skills.push(skill);\n i = consumed.nextIndex;\n } else if (\n (consumed = valueFor(args, i, \"--agent\")) ||\n (consumed = valueFor(args, i, \"-a\"))\n ) {\n parsed.agents = normalizeAgent(consumed.value);\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--scope\"))) {\n if (consumed.value !== \"user\" && consumed.value !== \"project\") {\n throw new Error(\"--scope must be either user or project.\");\n }\n parsed.scope = consumed.value;\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--project\"))) {\n parsed.projectDir = path.resolve(cwd, consumed.value);\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--ref\"))) {\n parsed.ref = consumed.value;\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--instructions\"))) {\n parsed.instructionTargets = normalizeInstructions(consumed.value);\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--agents-file\"))) {\n parsed.agentsFile = consumed.value;\n pushUnique(parsed.instructionTargets, \"agents\");\n i = consumed.nextIndex;\n } else if ((consumed = valueFor(args, i, \"--claude-file\"))) {\n parsed.claudeFile = consumed.value;\n pushUnique(parsed.instructionTargets, \"claude\");\n i = consumed.nextIndex;\n } else if (arg === \"--with-agents-md\") {\n pushUnique(parsed.instructionTargets, \"agents\");\n } else if (arg === \"--with-claude-md\") {\n pushUnique(parsed.instructionTargets, \"claude\");\n } else if (arg === \"--all\") {\n parsed.all = true;\n } else if (arg === \"--global\") {\n parsed.scope = \"user\";\n } else if (arg === \"--project-scope\") {\n parsed.scope = \"project\";\n } else if (arg === \"--yes\" || arg === \"-y\") {\n parsed.yes = true;\n } else if (arg === \"--force\") {\n parsed.force = true;\n } else if (arg === \"--dry-run\") {\n parsed.dryRun = true;\n } else if (arg === \"--json\") {\n parsed.json = true;\n } else if (arg.startsWith(\"-\")) {\n throw new Error(`Unknown option: ${arg}`);\n } else if (!parsed.source) {\n parsed.source = arg;\n } else {\n throw new Error(`Unexpected argument: ${arg}`);\n }\n }\n\n parsed.skills = [...new Set(parsed.skills)];\n parsed.agents = [...new Set(parsed.agents)];\n return parsed;\n}\n\nfunction stripGitSuffix(value: string): string {\n return value.endsWith(\".git\") ? value.slice(0, -4) : value;\n}\n\nfunction parsePathGitHubSource(\n input: string,\n ref?: string,\n): GitHubSource | null {\n const hashIndex = input.indexOf(\"#\");\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input;\n const hashRef = hashIndex >= 0 ? input.slice(hashIndex + 1) : undefined;\n const raw = withoutHash.startsWith(\"github:\")\n ? withoutHash.slice(\"github:\".length)\n : withoutHash;\n if (/^[./~]/.test(raw)) return null;\n const parts = raw.split(\"/\").filter(Boolean);\n if (parts.length < 2) return null;\n if (!/^[A-Za-z0-9_.-]+$/.test(parts[0])) return null;\n if (!/^[A-Za-z0-9_.-]+(?:\\.git)?$/.test(parts[1])) return null;\n const owner = parts[0];\n const repo = stripGitSuffix(parts[1]);\n const subdir = parts.slice(2).join(\"/\");\n return {\n cloneUrl: `https://github.com/${owner}/${repo}.git`,\n ref: ref ?? hashRef,\n subdir,\n display: `github:${owner}/${repo}${subdir ? `/${subdir}` : \"\"}${\n (ref ?? hashRef) ? `#${ref ?? hashRef}` : \"\"\n }`,\n };\n}\n\nexport function parseGitHubSource(\n input: string,\n ref?: string,\n): GitHubSource | null {\n if (input.startsWith(\"git@github.com:\")) {\n const withoutPrefix = input.slice(\"git@github.com:\".length);\n return parsePathGitHubSource(withoutPrefix, ref);\n }\n\n if (!input.startsWith(\"http://\") && !input.startsWith(\"https://\")) {\n return parsePathGitHubSource(input, ref);\n }\n\n let url: URL;\n try {\n url = new URL(input);\n } catch {\n return null;\n }\n if (url.hostname !== \"github.com\") return null;\n const parts = url.pathname.split(\"/\").filter(Boolean);\n if (parts.length < 2) return null;\n const owner = parts[0];\n const repo = stripGitSuffix(parts[1]);\n let sourceRef = ref ?? (url.hash ? url.hash.slice(1) : undefined);\n let subdir = \"\";\n if (parts[2] === \"tree\" || parts[2] === \"blob\") {\n sourceRef = ref ?? parts[3] ?? sourceRef;\n subdir = parts.slice(4).join(\"/\");\n } else {\n subdir = parts.slice(2).join(\"/\");\n }\n return {\n cloneUrl: `https://github.com/${owner}/${repo}.git`,\n ref: sourceRef,\n subdir,\n display: `github:${owner}/${repo}${subdir ? `/${subdir}` : \"\"}${\n sourceRef ? `#${sourceRef}` : \"\"\n }`,\n };\n}\n\nfunction runCommand(\n cmd: string,\n args: string[],\n options: RunCommandOptions = {},\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, {\n cwd: options.cwd,\n stdio: \"inherit\",\n shell: process.platform === \"win32\",\n env: process.env,\n });\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) reject(new Error(`${cmd} interrupted by ${signal}.`));\n else resolve(code ?? 0);\n });\n });\n}\n\nasync function resolveSource(\n source: string,\n parsed: ParsedSkillsCliArgs,\n options: RunSkillsCliOptions,\n): Promise<ResolvedSource> {\n const local = path.resolve(options.cwd ?? process.cwd(), source);\n if (fs.existsSync(local)) {\n return { root: local, display: source, cleanup: () => {} };\n }\n\n const github = parseGitHubSource(source, parsed.ref);\n if (!github) {\n throw new Error(\n `Source does not exist and is not a GitHub source: ${source}`,\n );\n }\n\n const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), \"an-skills-\"));\n const repoDir = path.join(tmpRoot, \"repo\");\n const args = [\"clone\", \"--depth\", \"1\"];\n if (github.ref) args.push(\"--branch\", github.ref);\n args.push(github.cloneUrl, repoDir);\n const code = await (options.runCommand ?? runCommand)(\"git\", args);\n if (code !== 0) {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n throw new Error(`git clone exited with ${code}.`);\n }\n\n const root = github.subdir ? path.join(repoDir, github.subdir) : repoDir;\n if (!fs.existsSync(root)) {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n throw new Error(`GitHub source path not found: ${github.subdir}`);\n }\n return {\n root,\n display: github.display,\n cleanup: () => fs.rmSync(tmpRoot, { recursive: true, force: true }),\n };\n}\n\nfunction parseFrontmatterField(\n content: string,\n field: string,\n): string | undefined {\n const match = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/);\n if (!match) return undefined;\n const fieldMatch = match[1].match(new RegExp(`^${field}:\\\\s*(.+)$`, \"m\"));\n if (!fieldMatch) return undefined;\n return fieldMatch[1].trim().replace(/^['\"]|['\"]$/g, \"\");\n}\n\nfunction safeSkillName(value: string): string {\n const name = value.trim();\n if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(name)) {\n throw new Error(`Invalid skill name \"${value}\".`);\n }\n return name;\n}\n\nfunction skillFromDir(dir: string): DiscoveredSkill | null {\n const file = path.join(dir, \"SKILL.md\");\n if (!fs.existsSync(file)) return null;\n const content = fs.readFileSync(file, \"utf-8\");\n return {\n name: safeSkillName(\n parseFrontmatterField(content, \"name\") ?? path.basename(dir),\n ),\n description: parseFrontmatterField(content, \"description\"),\n dir,\n };\n}\n\nfunction addSkillDir(\n out: DiscoveredSkill[],\n seen: Set<string>,\n dir: string,\n): void {\n const skill = skillFromDir(dir);\n if (!skill) return;\n const key = `${skill.name}:${path.resolve(skill.dir)}`;\n if (seen.has(key)) return;\n seen.add(key);\n out.push(skill);\n}\n\nexport function discoverSkillFolders(root: string): DiscoveredSkill[] {\n const out: DiscoveredSkill[] = [];\n const seen = new Set<string>();\n addSkillDir(out, seen, root);\n\n const containers = [\n path.join(root, \"skills\"),\n path.join(root, \".agents\", \"skills\"),\n path.join(root, \".claude\", \"skills\"),\n root,\n ];\n\n for (const container of containers) {\n if (!fs.existsSync(container)) continue;\n const stat = fs.statSync(container);\n if (!stat.isDirectory()) continue;\n for (const entry of fs.readdirSync(container, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === \"node_modules\" || entry.name === \".git\") continue;\n addSkillDir(out, seen, path.join(container, entry.name));\n }\n }\n\n return out.sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction homeDir(env: NodeJS.ProcessEnv): string {\n return env.HOME || os.homedir();\n}\n\nexport function targetRootsFor(input: {\n agents: AgentId[];\n scope: Scope;\n projectDir: string;\n env?: NodeJS.ProcessEnv;\n}): TargetRoot[] {\n const env = input.env ?? process.env;\n const roots: TargetRoot[] = [];\n for (const agent of input.agents) {\n if (input.scope === \"project\") {\n roots.push({\n agent,\n scope: \"project\",\n root:\n agent === \"codex\"\n ? path.join(input.projectDir, \".agents\", \"skills\")\n : path.join(input.projectDir, \".claude\", \"skills\"),\n });\n } else if (agent === \"codex\") {\n roots.push({\n agent,\n scope: \"user\",\n root: env.CODEX_HOME\n ? path.join(env.CODEX_HOME, \"skills\")\n : path.join(homeDir(env), \".codex\", \"skills\"),\n });\n } else {\n roots.push({\n agent,\n scope: \"user\",\n root: path.join(homeDir(env), \".claude\", \"skills\"),\n });\n }\n }\n return roots;\n}\n\nfunction shouldPrompt(\n options: RunSkillsCliOptions,\n parsed: ParsedSkillsCliArgs,\n) {\n if (parsed.yes || parsed.json) return false;\n if (options.isInteractive) return options.isInteractive();\n if (process.env.CI === \"true\") return false;\n return Boolean(process.stdin.isTTY && process.stdout.isTTY);\n}\n\nasync function promptForSkills(\n skills: DiscoveredSkill[],\n): Promise<string[] | null> {\n process.stdout.write(\"Select skills to install:\\n\");\n skills.forEach((skill, index) => {\n const suffix = skill.description ? ` - ${skill.description}` : \"\";\n process.stdout.write(` ${index + 1}. ${skill.name}${suffix}\\n`);\n });\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n try {\n const answer = await rl.question(\n \"Enter numbers or names separated by commas, or all: \",\n );\n const trimmed = answer.trim();\n if (!trimmed) return null;\n if (trimmed.toLowerCase() === \"all\")\n return skills.map((skill) => skill.name);\n const selected: string[] = [];\n for (const part of splitList(trimmed)) {\n const index = Number(part);\n if (Number.isInteger(index) && index >= 1 && index <= skills.length) {\n selected.push(skills[index - 1].name);\n } else {\n selected.push(part);\n }\n }\n return selected;\n } finally {\n rl.close();\n }\n}\n\nasync function promptForOverwrite(paths: string[]): Promise<boolean> {\n process.stdout.write(\"Existing skill folders will be overwritten:\\n\");\n for (const target of paths) process.stdout.write(` ${target}\\n`);\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n try {\n const answer = await rl.question(\"Overwrite? [y/N] \");\n return answer.trim().toLowerCase() === \"y\";\n } finally {\n rl.close();\n }\n}\n\nasync function selectSkills(\n discovered: DiscoveredSkill[],\n parsed: ParsedSkillsCliArgs,\n options: RunSkillsCliOptions,\n): Promise<DiscoveredSkill[]> {\n if (discovered.length === 0) {\n throw new Error(\"No skill folders found. Expected folders with SKILL.md.\");\n }\n let names = parsed.skills;\n if (parsed.all) {\n names = discovered.map((skill) => skill.name);\n } else if (names.length === 0 && discovered.length === 1) {\n names = [discovered[0].name];\n } else if (names.length === 0 && shouldPrompt(options, parsed)) {\n const picked = await (options.promptSkills ?? promptForSkills)(discovered);\n if (!picked || picked.length === 0) throw new Error(\"No skills selected.\");\n names = picked;\n } else if (names.length === 0) {\n throw new Error(\n \"Multiple skills found. Pass --skill <name>, --all, or run interactively.\",\n );\n }\n\n const byName = new Map(discovered.map((skill) => [skill.name, skill]));\n return names.map((name) => {\n const skill = byName.get(name);\n if (!skill) {\n throw new Error(\n `Skill \"${name}\" not found. Available: ${discovered\n .map((item) => item.name)\n .join(\", \")}`,\n );\n }\n return skill;\n });\n}\n\nfunction assertWithin(root: string, target: string): void {\n const rel = path.relative(path.resolve(root), path.resolve(target));\n if (rel.startsWith(\"..\") || path.isAbsolute(rel)) {\n throw new Error(`Refusing to write outside target root: ${target}`);\n }\n}\n\nfunction copySkillDir(from: string, to: string, dryRun: boolean): void {\n if (dryRun) return;\n fs.rmSync(to, { recursive: true, force: true });\n fs.mkdirSync(path.dirname(to), { recursive: true });\n fs.cpSync(from, to, {\n recursive: true,\n filter(source) {\n const base = path.basename(source);\n return base !== \".git\" && base !== \"node_modules\";\n },\n });\n}\n\nfunction instructionFilePath(\n projectDir: string,\n target: InstructionTarget,\n parsed: ParsedSkillsCliArgs,\n): string {\n const file = target === \"agents\" ? parsed.agentsFile : parsed.claudeFile;\n return path.isAbsolute(file) ? file : path.join(projectDir, file);\n}\n\nfunction buildManagedBlock(input: {\n skills: DiscoveredSkill[];\n source: string;\n roots: TargetRoot[];\n}): string {\n const agentText = [...new Set(input.roots.map((root) => root.agent))].join(\n \", \",\n );\n const scopeText = [...new Set(input.roots.map((root) => root.scope))].join(\n \", \",\n );\n const skillLines = input.skills\n .map((skill) => `- \\`${skill.name}\\``)\n .join(\"\\n\");\n return `${MANAGED_BLOCK_START}\n## Installed Agent Skills\n\nThis block is managed by \\`@agent-native/skills\\`. Re-run the installer to update\nit.\n\nSource: \\`${input.source}\\`\nAgents: ${agentText}\nScope: ${scopeText}\n\n${skillLines}\n${MANAGED_BLOCK_END}\n`;\n}\n\nexport function upsertManagedBlock(\n file: string,\n block: string,\n dryRun = false,\n): boolean {\n const current = fs.existsSync(file) ? fs.readFileSync(file, \"utf-8\") : \"\";\n const start = current.indexOf(MANAGED_BLOCK_START);\n const end = current.indexOf(MANAGED_BLOCK_END);\n let next: string;\n if (start >= 0 && end >= start) {\n const afterEnd = end + MANAGED_BLOCK_END.length;\n next = `${current.slice(0, start).trimEnd()}\\n\\n${block.trimEnd()}\\n${current\n .slice(afterEnd)\n .trimStart()}`;\n } else {\n next = `${current.trimEnd()}${current.trim() ? \"\\n\\n\" : \"\"}${block.trimEnd()}\\n`;\n }\n if (next === current) return false;\n if (!dryRun) {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, next, \"utf-8\");\n }\n return true;\n}\n\nexport async function installSkills(\n parsed: ParsedSkillsCliArgs,\n options: RunSkillsCliOptions = {},\n): Promise<InstallResult> {\n if (!parsed.source) throw new Error(\"Missing source.\");\n const source = await resolveSource(parsed.source, parsed, options);\n try {\n const discovered = discoverSkillFolders(source.root);\n const selected = await selectSkills(discovered, parsed, options);\n const roots = targetRootsFor({\n agents: parsed.agents,\n scope: parsed.scope,\n projectDir: parsed.projectDir,\n env: options.env,\n });\n\n const existing: string[] = [];\n for (const root of roots) {\n for (const skill of selected) {\n const dest = path.join(root.root, safeSkillName(skill.name));\n assertWithin(root.root, dest);\n if (fs.existsSync(dest)) existing.push(dest);\n }\n }\n if (existing.length > 0 && !parsed.force && !parsed.yes && !parsed.dryRun) {\n if (!shouldPrompt(options, parsed)) {\n throw new Error(\n `Refusing to overwrite existing skill folders without --force: ${existing.join(\n \", \",\n )}`,\n );\n }\n const ok = await (options.promptOverwrite ?? promptForOverwrite)(\n existing,\n );\n if (!ok) throw new Error(\"Install cancelled.\");\n }\n\n const copied: CopiedSkill[] = [];\n for (const root of roots) {\n for (const skill of selected) {\n const dest = path.join(root.root, safeSkillName(skill.name));\n assertWithin(root.root, dest);\n copySkillDir(skill.dir, dest, parsed.dryRun);\n copied.push({\n skillName: skill.name,\n agent: root.agent,\n scope: root.scope,\n from: skill.dir,\n to: dest,\n });\n }\n }\n\n const instructionFiles: string[] = [];\n if (parsed.instructionTargets.length > 0) {\n const block = buildManagedBlock({\n skills: selected,\n source: source.display,\n roots,\n });\n for (const target of parsed.instructionTargets) {\n const file = instructionFilePath(parsed.projectDir, target, parsed);\n upsertManagedBlock(file, block, parsed.dryRun);\n instructionFiles.push(file);\n }\n }\n\n return {\n source: source.display,\n dryRun: parsed.dryRun,\n skills: selected.map((skill) => skill.name),\n copied,\n instructionFiles,\n };\n } finally {\n source.cleanup();\n }\n}\n\nfunction formatList(skills: DiscoveredSkill[]): string {\n if (skills.length === 0) return \"No skill folders found.\\n\";\n return skills\n .map((skill) => {\n const suffix = skill.description ? ` - ${skill.description}` : \"\";\n return `${skill.name}${suffix}\\n ${skill.dir}`;\n })\n .join(\"\\n\");\n}\n\nfunction formatInstallResult(result: InstallResult): string {\n const verb = result.dryRun ? \"Would install\" : \"Installed\";\n const rows = result.copied.map(\n (item) => ` ${item.skillName} -> ${item.to} (${item.agent}/${item.scope})`,\n );\n const instructions =\n result.instructionFiles.length > 0\n ? `\\nUpdated managed instruction blocks:\\n${result.instructionFiles\n .map((file) => ` ${file}`)\n .join(\"\\n\")}`\n : \"\";\n return `${verb} ${result.skills.length} skill${\n result.skills.length === 1 ? \"\" : \"s\"\n } from ${result.source}:\\n${rows.join(\"\\n\")}${instructions}\\n`;\n}\n\nexport async function runSkillsCli(\n argv: string[],\n options: RunSkillsCliOptions = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const parsed = parseSkillsCliArgs(argv, cwd);\n const write =\n options.log ?? ((message: string) => process.stdout.write(message));\n\n if (parsed.command === \"help\") {\n write(`${HELP}\\n`);\n return;\n }\n\n if (!parsed.source) throw new Error(\"Missing source.\");\n\n if (parsed.command === \"list\") {\n const source = await resolveSource(parsed.source, parsed, options);\n try {\n const skills = discoverSkillFolders(source.root);\n if (parsed.json) {\n write(\n `${JSON.stringify({ source: source.display, skills }, null, 2)}\\n`,\n );\n } else {\n write(`${formatList(skills)}\\n`);\n }\n } finally {\n source.cleanup();\n }\n return;\n }\n\n const result = await installSkills(parsed, options);\n if (parsed.json) {\n write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n write(formatInstallResult(result));\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@agent-native/skills",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Install BuilderIO skills for Codex and Claude Code.",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/BuilderIO/agent-native",
10
+ "directory": "packages/skills"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/BuilderIO/agent-native/issues"
14
+ },
15
+ "homepage": "https://github.com/BuilderIO/agent-native#readme",
16
+ "publishConfig": {
17
+ "access": "public",
18
+ "provenance": true
19
+ },
20
+ "bin": {
21
+ "skills": "dist/cli.js"
22
+ },
23
+ "types": "dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "default": "./dist/index.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "scripts": {
34
+ "build": "tsc",
35
+ "typecheck": "tsc --noEmit",
36
+ "test": "vitest --run src --passWithNoTests",
37
+ "prepublishOnly": "npm run build"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^25.9.2",
41
+ "typescript": "catalog:",
42
+ "vitest": "catalog:"
43
+ }
44
+ }