@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":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport readline from \"node:readline/promises\";\n\nexport type SkillClient = \"codex\" | \"claude-code\";\nexport type SkillScope = \"project\" | \"user\";\n\nexport interface SkillEntry {\n name: string;\n dir: string;\n description?: string;\n}\n\nexport interface InstallSkillsOptions {\n source?: string;\n skillNames?: string[];\n clients?: SkillClient[];\n scope?: SkillScope;\n baseDir?: string;\n yes?: boolean;\n dryRun?: boolean;\n updateInstructions?: boolean;\n instructionFiles?: string[];\n withGithubAction?: boolean;\n force?: boolean;\n log?: (message: string) => void;\n isInteractive?: () => boolean;\n}\n\nexport interface InstallSkillsResult {\n source: string;\n skills: string[];\n clients: SkillClient[];\n scope: SkillScope;\n written: string[];\n instructionFiles: string[];\n githubActionPath?: string;\n dryRun: boolean;\n}\n\ninterface ParsedArgs {\n command: \"add\" | \"list\" | \"help\";\n source?: string;\n copySource: boolean;\n skillNames: string[];\n clients: SkillClient[];\n scope: SkillScope;\n yes: boolean;\n dryRun: boolean;\n printJson: boolean;\n updateInstructions?: boolean;\n instructionFiles: string[];\n withGithubAction: boolean;\n force: boolean;\n baseDir?: string;\n}\n\nconst HELP = `@agent-native/skills\n\nUsage:\n npx @agent-native/skills add [options]\n npx @agent-native/skills list\n\nOptions:\n --skill <name> Install only this skill (repeatable)\n --client, -a <client> codex, claude-code, or all (repeatable or comma-separated)\n --scope <user|project> Install globally or into the current project (default: user)\n -g, --global Alias for --scope user\n --project Alias for --scope project\n --update-instructions Add managed AGENTS.md / CLAUDE.md instructions when useful\n --no-update-instructions Skip managed instruction file updates\n --instructions-file <path> File to receive managed instructions (repeatable)\n --with-github-action Add .github/workflows/pr-visual-recap.yml when visual-recap is installed\n --force Overwrite a different existing PR Visual Recap workflow\n -y, --yes Use defaults in non-interactive mode\n --dry-run Print intended writes without changing files\n --json Print the result as JSON\n\nExamples:\n npx @agent-native/skills add\n npx @agent-native/skills add --skill quick-recap\n npx @agent-native/skills add --skill visual-recap --with-github-action\n`;\n\nconst CLIENTS: SkillClient[] = [\"codex\", \"claude-code\"];\nconst DEFAULT_SKILLS_SOURCE = \"BuilderIO/skills\";\nconst MANAGED_INSTRUCTIONS_START = \"<!-- BEGIN @agent-native/skills -->\";\nconst MANAGED_INSTRUCTIONS_END = \"<!-- END @agent-native/skills -->\";\n\nexport function parseSkillsCliArgs(argv: string[]): ParsedArgs {\n const first = argv[0];\n if (!first || first === \"help\" || first === \"--help\" || first === \"-h\") {\n return defaultArgs(\"help\");\n }\n\n const command = first === \"list\" ? \"list\" : \"add\";\n const args = first === \"add\" || first === \"list\" ? argv.slice(1) : argv;\n const out = defaultArgs(command);\n\n for (let i = 0; i < args.length; i += 1) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\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;\n }\n return undefined;\n };\n\n let value: string | undefined;\n if ((value = eat(\"--skill\")) !== undefined) out.skillNames.push(value);\n else if ((value = eat(\"-s\")) !== undefined) out.skillNames.push(value);\n else if ((value = eat(\"--client\")) !== undefined)\n out.clients.push(...normalizeClients(value));\n else if ((value = eat(\"--agent\")) !== undefined)\n out.clients.push(...normalizeClients(value));\n else if ((value = eat(\"-a\")) !== undefined)\n out.clients.push(...normalizeClients(value));\n else if ((value = eat(\"--scope\")) !== undefined)\n out.scope = parseScope(value);\n else if ((value = eat(\"--instructions-file\")) !== undefined)\n out.instructionFiles.push(value);\n else if ((value = eat(\"--cwd\")) !== undefined) out.baseDir = value;\n else if (arg === \"-g\" || arg === \"--global\") out.scope = \"user\";\n else if (arg === \"--project\") out.scope = \"project\";\n else if (arg === \"--copy\") {\n // Compatibility with the open `skills` CLI. This installer always copies.\n out.copySource = true;\n } else if (arg === \"-y\" || arg === \"--yes\") out.yes = true;\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"--update-instructions\") out.updateInstructions = true;\n else if (arg === \"--no-update-instructions\") out.updateInstructions = false;\n else if (arg === \"--with-github-action\" || arg === \"--with-github-actions\")\n out.withGithubAction = true;\n else if (arg === \"--force\") out.force = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.source) out.source = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (out.source && out.source !== DEFAULT_SKILLS_SOURCE && !out.copySource) {\n throw new Error(\n `Unexpected argument: ${out.source}. @agent-native/skills installs the BuilderIO skills collection; use --skill <name> to choose a skill.`,\n );\n }\n if (out.source === DEFAULT_SKILLS_SOURCE && !out.copySource) {\n out.source = undefined;\n }\n\n out.skillNames = unique(out.skillNames.map(normalizeSkillName));\n out.clients = unique(out.clients);\n out.instructionFiles = unique(out.instructionFiles);\n return out;\n}\n\nexport async function runSkillsCli(\n argv: string[],\n options: Pick<InstallSkillsOptions, \"log\" | \"isInteractive\" | \"baseDir\"> = {},\n): Promise<void> {\n const parsed = parseSkillsCliArgs(argv);\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n const skillSource = parsed.source ?? DEFAULT_SKILLS_SOURCE;\n\n if (parsed.command === \"list\") {\n const source = await materializeSource(skillSource);\n try {\n const skills = discoverSkills(source.root);\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(skills, null, 2)}\\n`);\n return;\n }\n for (const skill of skills) {\n process.stdout.write(\n `${skill.name}${skill.description ? ` - ${skill.description}` : \"\"}\\n`,\n );\n }\n return;\n } finally {\n source.cleanup?.();\n }\n }\n\n const result = await installSkills({\n source: skillSource,\n skillNames: parsed.skillNames,\n clients: parsed.clients,\n scope: parsed.scope,\n baseDir: parsed.baseDir ?? options.baseDir,\n yes: parsed.yes,\n dryRun: parsed.dryRun,\n updateInstructions: parsed.updateInstructions,\n instructionFiles: parsed.instructionFiles,\n withGithubAction: parsed.withGithubAction,\n force: parsed.force,\n log: parsed.printJson ? undefined : options.log,\n isInteractive: options.isInteractive,\n });\n\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n const verb = parsed.dryRun ? \"Would install\" : \"Installed\";\n process.stdout.write(\n [\n `${verb} ${result.skills.join(\", \")} for ${result.clients.join(\", \")} (${result.scope}).`,\n result.written.length ? `Skill files: ${result.written.join(\", \")}` : \"\",\n result.instructionFiles.length\n ? `Managed instructions: ${result.instructionFiles.join(\", \")}`\n : \"\",\n result.githubActionPath\n ? `PR Visual Recap workflow: ${result.githubActionPath}`\n : \"\",\n parsed.dryRun\n ? \"\"\n : \"Restart or reload selected agent clients if needed.\",\n ]\n .filter(Boolean)\n .join(\"\\n\") + \"\\n\",\n );\n}\n\nexport async function installSkills(\n options: InstallSkillsOptions,\n): Promise<InstallSkillsResult> {\n const baseDir = path.resolve(options.baseDir ?? process.cwd());\n const log = options.log ?? (() => {});\n const sourceInput = options.source ?? DEFAULT_SKILLS_SOURCE;\n const source = await materializeSource(sourceInput);\n try {\n const entries = discoverSkills(source.root);\n if (entries.length === 0) {\n throw new Error(\n `No skills found in ${sourceInput}. Expected skills/*/SKILL.md.`,\n );\n }\n\n const selected = await resolveSelectedSkills(entries, options);\n const clients = await resolveSelectedClients(options);\n const scope = options.scope ?? \"user\";\n const written: string[] = [];\n\n for (const client of clients) {\n const root = installRootForClient(client, scope, baseDir);\n for (const skill of selected) {\n const destination = path.join(root, skill.name);\n written.push(destination);\n if (!options.dryRun) {\n fs.rmSync(destination, { recursive: true, force: true });\n fs.mkdirSync(path.dirname(destination), { recursive: true });\n fs.cpSync(skill.dir, destination, { recursive: true });\n }\n }\n }\n\n const instructionFiles = await maybeUpdateInstructions(\n selected.map((skill) => skill.name),\n baseDir,\n options,\n );\n\n const githubActionPath =\n selected.some((skill) => skill.name === \"visual-recap\") &&\n (options.withGithubAction ||\n (await shouldPromptGithubAction(options, baseDir)))\n ? writePrVisualRecapWorkflow(baseDir, options)\n : undefined;\n\n log(\n `Resolved ${selected.length} skill${selected.length === 1 ? \"\" : \"s\"} from ${source.root}.`,\n );\n return {\n source: source.root,\n skills: selected.map((skill) => skill.name),\n clients,\n scope,\n written,\n instructionFiles,\n githubActionPath,\n dryRun: Boolean(options.dryRun),\n };\n } finally {\n source.cleanup?.();\n }\n}\n\nfunction defaultArgs(command: ParsedArgs[\"command\"]): ParsedArgs {\n return {\n command,\n copySource: false,\n skillNames: [],\n clients: [],\n scope: \"user\",\n yes: false,\n dryRun: false,\n printJson: false,\n instructionFiles: [],\n withGithubAction: false,\n force: false,\n };\n}\n\nfunction parseScope(value: string): SkillScope {\n if (value === \"user\" || value === \"project\") return value;\n throw new Error(\"--scope must be user or project.\");\n}\n\nfunction normalizeClients(value: string): SkillClient[] {\n return value.split(\",\").flatMap((raw) => {\n const client = raw.trim().toLowerCase();\n if (!client) return [];\n if (client === \"all\") return CLIENTS;\n if (client === \"codex\") return [\"codex\" as const];\n if (\n client === \"claude\" ||\n client === \"claude-code\" ||\n client === \"claude-code-cli\"\n ) {\n return [\"claude-code\" as const];\n }\n throw new Error(\n `Unsupported client \"${raw}\". Use codex, claude-code, or all.`,\n );\n });\n}\n\nfunction normalizeSkillName(value: string): string {\n const normalized = value.trim().toLowerCase();\n if (!/^[a-z0-9][a-z0-9._-]*$/.test(normalized)) {\n throw new Error(`Invalid skill name \"${value}\".`);\n }\n return normalized;\n}\n\nfunction unique<T>(values: T[]): T[] {\n return [...new Set(values)];\n}\n\nasync function resolveSelectedSkills(\n entries: SkillEntry[],\n options: InstallSkillsOptions,\n): Promise<SkillEntry[]> {\n const byName = new Map(entries.map((entry) => [entry.name, entry]));\n const requested = unique((options.skillNames ?? []).map(normalizeSkillName));\n if (requested.length > 0) {\n const missing = requested.filter((name) => !byName.has(name));\n if (missing.length > 0) {\n throw new Error(\n `Unknown skill${missing.length === 1 ? \"\" : \"s\"}: ${missing.join(\", \")}. Available: ${entries\n .map((entry) => entry.name)\n .join(\", \")}.`,\n );\n }\n return requested.map((name) => byName.get(name)!);\n }\n\n if (!isInteractive(options) || options.yes) return entries;\n\n const answer = await promptLine(\n [\n \"Which skills do you want to install?\",\n ...entries.map(\n (entry, index) =>\n ` ${index + 1}. ${entry.name}${entry.description ? ` - ${entry.description}` : \"\"}`,\n ),\n \"Enter numbers or names separated by commas, or press Enter for all: \",\n ].join(\"\\n\"),\n );\n const trimmed = answer.trim();\n if (!trimmed) return entries;\n const selectedNames = trimmed\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean)\n .map((part) => {\n const asNumber = Number(part);\n if (\n Number.isInteger(asNumber) &&\n asNumber >= 1 &&\n asNumber <= entries.length\n ) {\n return entries[asNumber - 1].name;\n }\n return normalizeSkillName(part);\n });\n return resolveSelectedSkills(entries, {\n ...options,\n skillNames: selectedNames,\n });\n}\n\nasync function resolveSelectedClients(\n options: InstallSkillsOptions,\n): Promise<SkillClient[]> {\n const requested = unique(options.clients ?? []);\n if (requested.length > 0) return requested;\n if (!isInteractive(options) || options.yes) return [\"codex\"];\n\n const answer = await promptLine(\n \"Install for which clients? Enter codex, claude-code, or all [codex]: \",\n );\n const trimmed = answer.trim();\n return trimmed ? unique(normalizeClients(trimmed)) : [\"codex\"];\n}\n\nfunction isInteractive(\n options: Pick<InstallSkillsOptions, \"isInteractive\">,\n): boolean {\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 promptLine(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n try {\n return await rl.question(question);\n } finally {\n rl.close();\n }\n}\n\nfunction installRootForClient(\n client: SkillClient,\n scope: SkillScope,\n baseDir: string,\n): string {\n const home = process.env.HOME || os.homedir();\n if (scope === \"project\") {\n return client === \"codex\"\n ? path.join(baseDir, \".agents\", \"skills\")\n : path.join(baseDir, \".claude\", \"skills\");\n }\n if (client === \"codex\") {\n return process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"skills\")\n : path.join(home, \".codex\", \"skills\");\n }\n return path.join(home, \".claude\", \"skills\");\n}\n\nfunction discoverSkills(root: string): SkillEntry[] {\n const skillsRoot = resolveSkillsRoot(root);\n const directSkill = path.join(skillsRoot, \"SKILL.md\");\n if (fs.existsSync(directSkill)) {\n const entry = skillEntry(skillsRoot);\n return entry ? [entry] : [];\n }\n const entries = fs\n .readdirSync(skillsRoot, { withFileTypes: true })\n .filter((entry) => entry.isDirectory() && !entry.name.startsWith(\".\"))\n .map((entry) => skillEntry(path.join(skillsRoot, entry.name)))\n .filter((entry): entry is SkillEntry => Boolean(entry));\n return entries.sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction resolveSkillsRoot(root: string): string {\n for (const manifestPath of [\n path.join(root, \".codex-plugin\", \"plugin.json\"),\n path.join(root, \".claude-plugin\", \"plugin.json\"),\n ]) {\n if (!fs.existsSync(manifestPath)) continue;\n try {\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\")) as {\n skills?: unknown;\n };\n if (typeof manifest.skills === \"string\") {\n const resolved = path.resolve(root, manifest.skills);\n if (fs.existsSync(resolved)) return resolved;\n }\n } catch {}\n }\n const conventional = path.join(root, \"skills\");\n if (fs.existsSync(conventional)) return conventional;\n return root;\n}\n\nfunction skillEntry(dir: string): SkillEntry | null {\n const skillFile = path.join(dir, \"SKILL.md\");\n if (!fs.existsSync(skillFile)) return null;\n const body = fs.readFileSync(skillFile, \"utf-8\");\n const frontmatter = body.match(/^---\\n([\\s\\S]*?)\\n---/);\n const name =\n frontmatter?.[1]\n ?.match(/^name:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$/m)?.[1]\n ?.trim() ?? path.basename(dir);\n const description = frontmatter?.[1]\n ?.match(/^description:\\s*(?:>-\\s*)?(.+)$/m)?.[1]\n ?.trim();\n return { name: normalizeSkillName(name), dir, description };\n}\n\nasync function materializeSource(input: string): Promise<{\n root: string;\n cleanup?: () => void;\n}> {\n const local = path.resolve(input);\n if (fs.existsSync(local)) return { root: local };\n\n const parsed = parseGitHubSource(input);\n if (!parsed) {\n throw new Error(\n `Skill source not found: ${input}. Use a local path, GitHub owner/repo, or GitHub URL.`,\n );\n }\n\n const tmpRoot = fs.mkdtempSync(\n path.join(os.tmpdir(), \"agent-native-skills-\"),\n );\n const archive = path.join(tmpRoot, \"source.tgz\");\n const ref = parsed.ref ?? \"main\";\n const url = `https://codeload.github.com/${parsed.owner}/${parsed.repo}/tar.gz/${encodeURIComponent(ref)}`;\n const response = await fetch(url, {\n headers: { \"user-agent\": \"@agent-native/skills\" },\n });\n if (!response.ok) {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n throw new Error(\n `Could not download ${parsed.owner}/${parsed.repo}@${ref}: HTTP ${response.status}.`,\n );\n }\n fs.writeFileSync(archive, Buffer.from(await response.arrayBuffer()));\n\n const extractDir = path.join(tmpRoot, \"extract\");\n fs.mkdirSync(extractDir, { recursive: true });\n const extracted = spawnSync(\"tar\", [\"-xzf\", archive, \"-C\", extractDir], {\n stdio: \"pipe\",\n encoding: \"utf-8\",\n });\n if (extracted.status !== 0) {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n throw new Error(\n `Could not extract ${input}: ${extracted.stderr || extracted.stdout}`,\n );\n }\n const [first] = fs\n .readdirSync(extractDir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory());\n if (!first) {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n throw new Error(\n `Downloaded archive for ${input} did not contain a repo directory.`,\n );\n }\n return {\n root: path.join(extractDir, first.name),\n cleanup: () => fs.rmSync(tmpRoot, { recursive: true, force: true }),\n };\n}\n\nfunction parseGitHubSource(\n input: string,\n): { owner: string; repo: string; ref?: string } | null {\n const shorthand = input.match(\n /^([A-Za-z0-9_.-]+)\\/([A-Za-z0-9_.-]+)(?:#(.+))?$/,\n );\n if (shorthand) {\n return {\n owner: shorthand[1],\n repo: shorthand[2].replace(/\\.git$/, \"\"),\n ref: shorthand[3],\n };\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 treeIndex = parts.indexOf(\"tree\");\n return {\n owner: parts[0],\n repo: parts[1].replace(/\\.git$/, \"\"),\n ref:\n treeIndex >= 0 && parts[treeIndex + 1]\n ? parts.slice(treeIndex + 1).join(\"/\")\n : url.hash.slice(1) || undefined,\n };\n}\n\nfunction instructionContentForSkill(skillName: string): string | null {\n if (skillName === \"quick-recap\") {\n return `## Quick Recap Status Block\n\nEvery response that completes a unit of work must end with one final status line:\n\n\\`\\`\\`md\n🟢 Actual concise status sentence\n\\`\\`\\`\n\nUse 🟢 when the requested work is finished. Use 🟔 when non-routine follow-up work or a manual step remains, and name that pending item. Use šŸ”“ only when blocked on user input. Keep the status line under 100 characters. Put the status line at the very end of the response. Do not add \\`---\\`, spacer lines, or any content after it.\n\nExamples:\n\n\\`\\`\\`md\n🟢 Updated quick recap docs with output examples\n\\`\\`\\`\n\n\\`\\`\\`md\n🟔 Code updated, set PROVIDER_WEBHOOK_SECRET before testing webhooks\n\\`\\`\\`\n\n\\`\\`\\`md\nšŸ”“ Need the production API key to continue\n\\`\\`\\``;\n }\n if (skillName === \"efficient-fable\") {\n return `## Efficient Fable\n\nWhen operating as Claude Fable or another explicitly Fable-class expensive model, preserve Fable for the judgment layer: decomposition, architecture and product tradeoffs, synthesis, risk calls, and final review. Delegate token-heavy research, coding, testing, file inventory, repetitive edits, and independent implementation slices to cheaper subagents when available. Write delegated prompts as self-contained handoff packets with objective, scope, out-of-scope areas, expected evidence, verification commands, and stop conditions. For testing, Fable should suggest the validation direction and important scripts or browser checks, then lighter agents can run them, reduce logs, collect screenshots, and report exact failures and likely causes. Treat delegated reports as leads: Fable should verify important cited files, failures, and high-risk diffs before relying on them. Do not make unsupported quality or speed guarantees; frame savings as workload-dependent.`;\n }\n if (skillName === \"efficient-frontier\") {\n return `## Efficient Frontier\n\nWhen running any high-cost frontier model on a codebase-heavy task, act as the orchestrator and reviewer. Split independent research, search, summarization, coding, and testing work into cheaper/faster subagents when the host supports them, then spend frontier-model tokens on the plan, tradeoffs, integration decisions, validation strategy, and final quality pass. Delegated prompts should be self-contained: objective, repo path, scope, out-of-scope areas, expected evidence, verification commands, and stop conditions. For testing-heavy work, the frontier model should choose the scripts or browser flows that matter while lighter agents run checks, reduce output, and return the concrete signal. Treat delegated findings as leads and verify important claims before presenting them as facts.`;\n }\n if (skillName === \"stay-within-limits\") {\n return `## Stay Within Limits\n\nBefore starting long-running or parallel agent work, and between waves, check current 5-hour and weekly usage limits with the host's usage tool. For Claude Code, use npx -y ccusage@latest blocks --active --json when no better first-party signal is available. Keep waves to at most 3 parallel subagents by default. If either active 5-hour or weekly window is at or above 95%, do not launch more work; pause until the window clears. When a wake/resume tool is available, schedule a self-contained wake prompt for min(3600, secondsUntilWindowClears), re-check the actual block/window on wake, reschedule if still over budget, and only continue when safely below the threshold. The wake prompt should restate the remaining plan, usage check, wave throttle, verification steps, and any delegation scope or stop conditions needed for the next wave. Check between waves, not mid-wave.`;\n }\n return null;\n}\n\nasync function maybeUpdateInstructions(\n skillNames: string[],\n baseDir: string,\n options: InstallSkillsOptions,\n): Promise<string[]> {\n const blocks = skillNames\n .map((name) => instructionContentForSkill(name))\n .filter((block): block is string => Boolean(block));\n if (blocks.length === 0) return [];\n\n let shouldUpdate = options.updateInstructions;\n if (shouldUpdate === undefined) {\n if (options.yes) shouldUpdate = true;\n else if (isInteractive(options)) {\n const answer = await promptLine(\n \"Add managed AGENTS.md / CLAUDE.md instructions for always-on behavior? [Y/n] \",\n );\n shouldUpdate = !/^n/i.test(answer.trim());\n } else {\n shouldUpdate = false;\n }\n }\n if (!shouldUpdate) return [];\n\n const files = resolveInstructionFiles(baseDir, options.instructionFiles);\n const content = `${MANAGED_INSTRUCTIONS_START}\n${blocks.join(\"\\n\\n\")}\n${MANAGED_INSTRUCTIONS_END}`;\n for (const file of files) {\n if (options.dryRun) continue;\n upsertManagedBlock(file, content);\n }\n return files;\n}\n\nfunction resolveInstructionFiles(\n baseDir: string,\n explicit: string[] | undefined,\n): string[] {\n if (explicit && explicit.length > 0) {\n return explicit.map((file) => path.resolve(baseDir, file));\n }\n const candidates = [\"AGENTS.md\", \"CLAUDE.md\"].map((file) =>\n path.join(baseDir, file),\n );\n const existing = candidates.filter((file) => fs.existsSync(file));\n return existing.length > 0 ? existing : [path.join(baseDir, \"AGENTS.md\")];\n}\n\nfunction upsertManagedBlock(file: string, block: string): void {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n const existing = fs.existsSync(file) ? fs.readFileSync(file, \"utf-8\") : \"\";\n const pattern = new RegExp(\n `${escapeRegExp(MANAGED_INSTRUCTIONS_START)}[\\\\s\\\\S]*?${escapeRegExp(MANAGED_INSTRUCTIONS_END)}`,\n );\n const next = pattern.test(existing)\n ? existing.replace(pattern, block)\n : `${existing.trimEnd()}${existing.trim() ? \"\\n\\n\" : \"\"}${block}\\n`;\n fs.writeFileSync(file, next, \"utf-8\");\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nasync function shouldPromptGithubAction(\n options: InstallSkillsOptions,\n baseDir: string,\n): Promise<boolean> {\n if (options.withGithubAction) return true;\n if (options.yes || !isInteractive(options)) return false;\n if (\n fs.existsSync(\n path.join(baseDir, \".github\", \"workflows\", \"pr-visual-recap.yml\"),\n )\n ) {\n return false;\n }\n const answer = await promptLine(\n \"Add the optional PR Visual Recap GitHub Action? [y/N] \",\n );\n return /^y/i.test(answer.trim());\n}\n\nconst PR_VISUAL_RECAP_REUSABLE_WORKFLOW = `name: PR Visual Recap\n\non:\n pull_request:\n types: [opened, synchronize, reopened, ready_for_review]\n\npermissions:\n contents: read\n\nconcurrency:\n group: pr-visual-recap-\\${{ github.event.pull_request.number }}\n cancel-in-progress: true\n\njobs:\n visual-recap:\n permissions:\n checks: write\n contents: read\n issues: write\n pull-requests: read\n uses: BuilderIO/agent-native/.github/workflows/pr-visual-recap-reusable.yml@main\n with:\n skill-source: repo\n secrets:\n PLAN_RECAP_TOKEN: \\${{ secrets.PLAN_RECAP_TOKEN }}\n ANTHROPIC_API_KEY: \\${{ secrets.ANTHROPIC_API_KEY }}\n OPENAI_API_KEY: \\${{ secrets.OPENAI_API_KEY }}\n PLAN_RECAP_APP_URL: \\${{ secrets.PLAN_RECAP_APP_URL }}\n`;\n\nfunction writePrVisualRecapWorkflow(\n baseDir: string,\n options: InstallSkillsOptions,\n): string {\n const file = path.join(\n baseDir,\n \".github\",\n \"workflows\",\n \"pr-visual-recap.yml\",\n );\n if (options.dryRun) return file;\n if (fs.existsSync(file)) {\n const current = fs.readFileSync(file, \"utf-8\");\n if (current === PR_VISUAL_RECAP_REUSABLE_WORKFLOW) return file;\n if (!options.force) {\n throw new Error(\n `${file} already exists and differs. Re-run with --force to overwrite it.`,\n );\n }\n }\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, PR_VISUAL_RECAP_REUSABLE_WORKFLOW, \"utf-8\");\n return file;\n}\n\nexport function createInstallId(): string {\n return randomUUID();\n}\n"]}
@@ -0,0 +1,80 @@
1
+ export type AgentId = "codex" | "claude";
2
+ export type Scope = "project" | "user";
3
+ type Command = "add" | "list" | "help";
4
+ type InstructionTarget = "agents" | "claude";
5
+ export declare const MANAGED_BLOCK_START = "<!-- BEGIN @agent-native/skills managed block -->";
6
+ export declare const MANAGED_BLOCK_END = "<!-- END @agent-native/skills managed block -->";
7
+ export declare 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.";
8
+ export interface ParsedSkillsCliArgs {
9
+ command: Command;
10
+ source?: string;
11
+ skills: string[];
12
+ all: boolean;
13
+ agents: AgentId[];
14
+ scope: Scope;
15
+ projectDir: string;
16
+ ref?: string;
17
+ instructionTargets: InstructionTarget[];
18
+ agentsFile: string;
19
+ claudeFile: string;
20
+ yes: boolean;
21
+ force: boolean;
22
+ dryRun: boolean;
23
+ json: boolean;
24
+ }
25
+ export interface DiscoveredSkill {
26
+ name: string;
27
+ dir: string;
28
+ description?: string;
29
+ }
30
+ export interface GitHubSource {
31
+ cloneUrl: string;
32
+ ref?: string;
33
+ subdir: string;
34
+ display: string;
35
+ }
36
+ interface TargetRoot {
37
+ agent: AgentId;
38
+ scope: Scope;
39
+ root: string;
40
+ }
41
+ interface CopiedSkill {
42
+ skillName: string;
43
+ agent: AgentId;
44
+ scope: Scope;
45
+ from: string;
46
+ to: string;
47
+ }
48
+ export interface InstallResult {
49
+ source: string;
50
+ dryRun: boolean;
51
+ skills: string[];
52
+ copied: CopiedSkill[];
53
+ instructionFiles: string[];
54
+ }
55
+ interface RunCommandOptions {
56
+ cwd?: string;
57
+ }
58
+ export interface RunSkillsCliOptions {
59
+ cwd?: string;
60
+ env?: NodeJS.ProcessEnv;
61
+ isInteractive?: () => boolean;
62
+ log?: (message: string) => void;
63
+ promptSkills?: (skills: DiscoveredSkill[]) => Promise<string[] | null>;
64
+ promptOverwrite?: (paths: string[]) => Promise<boolean>;
65
+ runCommand?: (cmd: string, args: string[], options?: RunCommandOptions) => Promise<number>;
66
+ }
67
+ export declare function parseSkillsCliArgs(argv: string[], cwd?: string): ParsedSkillsCliArgs;
68
+ export declare function parseGitHubSource(input: string, ref?: string): GitHubSource | null;
69
+ export declare function discoverSkillFolders(root: string): DiscoveredSkill[];
70
+ export declare function targetRootsFor(input: {
71
+ agents: AgentId[];
72
+ scope: Scope;
73
+ projectDir: string;
74
+ env?: NodeJS.ProcessEnv;
75
+ }): TargetRoot[];
76
+ export declare function upsertManagedBlock(file: string, block: string, dryRun?: boolean): boolean;
77
+ export declare function installSkills(parsed: ParsedSkillsCliArgs, options?: RunSkillsCliOptions): Promise<InstallResult>;
78
+ export declare function runSkillsCli(argv: string[], options?: RunSkillsCliOptions): Promise<void>;
79
+ export {};
80
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}