@agent-native/core 0.51.11 → 0.51.13

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.
@@ -203,6 +203,7 @@ interface SkillsClientPromptContext {
203
203
  label: string;
204
204
  hint: string;
205
205
  }>;
206
+ installsMcp: boolean;
206
207
  }
207
208
  interface SkillsTargetPromptContext {
208
209
  initialTargets: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
@@ -45,16 +45,16 @@ Examples:
45
45
  The add command installs the SKILL.md instructions, registers the app-backed
46
46
  MCP connector, and then authenticates it in one step so you do not hit an OAuth
47
47
  wall on the first tool call. By default, add targets every supported local
48
- client this CLI can configure (Claude Code, Claude Code CLI, Codex, and Cowork);
48
+ client this CLI can configure (Claude Code, Codex, and Cowork);
49
49
  pass --client to narrow it. Authentication reuses "npx @agent-native/core@latest connect":
50
50
  OAuth-capable clients (Claude Code) get a URL-only entry and a /mcp authenticate
51
51
  prompt, while Codex / Cowork run the browser device-code flow. In a
52
52
  non-interactive shell or CI the auth step is skipped and the exact
53
53
  "npx @agent-native/core@latest connect <url> --client all" command is printed instead.
54
54
 
55
- Running "npx @agent-native/skills@latest add ..." directly installs instructions only;
56
- use this Agent Native CLI path when you want MCP setup and auth too. Pass --no-connect to
57
- register the connector without authenticating (leave auth to the host or run
55
+ Running "npx @agent-native/skills@latest add ..." uses this same shared install
56
+ flow with the broader BuilderIO skills catalog enabled. Pass --no-connect to
57
+ register MCP where possible without authenticating (leave auth to the host or run
58
58
  "npx @agent-native/core@latest connect" later). Pass --mcp-url to register that connector against
59
59
  a custom origin (an ngrok tunnel, a local dev server, or a self-hosted
60
60
  deployment) instead of the built-in hosted default — a bare origin gets the
@@ -2246,6 +2246,14 @@ const CLIENT_HINTS = {
2246
2246
  codex: "$CODEX_HOME/config.toml or ~/.codex/config.toml",
2247
2247
  cowork: "~/.cowork/mcp.json",
2248
2248
  };
2249
+ const SKILLS_CLIENTS = ["claude-code", "codex", "cowork"];
2250
+ const SKILL_INSTRUCTION_CLIENTS = ["claude-code", "codex"];
2251
+ const SKILL_INSTRUCTION_CLIENT_HINTS = {
2252
+ "claude-code": ".claude/skills or .claude/commands",
2253
+ "claude-code-cli": ".claude/skills or .claude/commands",
2254
+ codex: ".agents/skills or ~/.codex/skills",
2255
+ cowork: "MCP only",
2256
+ };
2249
2257
  function normalizeKnownSkillTarget(value) {
2250
2258
  const key = value?.trim().toLowerCase();
2251
2259
  if (!key)
@@ -2632,11 +2640,36 @@ function normalizeClientIds(values) {
2632
2640
  }
2633
2641
  return out;
2634
2642
  }
2635
- function clientPromptOptions() {
2636
- return CLIENTS.map((client) => ({
2643
+ function normalizeSkillsClientIds(values) {
2644
+ const seen = new Set();
2645
+ const out = [];
2646
+ for (const client of normalizeClientIds(values)) {
2647
+ const normalized = client === "claude-code-cli" ? "claude-code" : client;
2648
+ if (seen.has(normalized))
2649
+ continue;
2650
+ seen.add(normalized);
2651
+ out.push(normalized);
2652
+ }
2653
+ return out;
2654
+ }
2655
+ function resolveSkillsClientArg(client) {
2656
+ return normalizeSkillsClientIds(resolveClients(client));
2657
+ }
2658
+ function skillsClients(installsMcp) {
2659
+ return installsMcp ? SKILLS_CLIENTS : SKILL_INSTRUCTION_CLIENTS;
2660
+ }
2661
+ function filterSkillsClients(clients, installsMcp) {
2662
+ if (installsMcp)
2663
+ return clients;
2664
+ return clients.filter((client) => SKILL_INSTRUCTION_CLIENTS.includes(client));
2665
+ }
2666
+ function clientPromptOptions(installsMcp) {
2667
+ return skillsClients(installsMcp).map((client) => ({
2637
2668
  value: client,
2638
2669
  label: CLIENT_LABELS[client],
2639
- hint: CLIENT_HINTS[client],
2670
+ hint: installsMcp
2671
+ ? CLIENT_HINTS[client]
2672
+ : SKILL_INSTRUCTION_CLIENT_HINTS[client],
2640
2673
  }));
2641
2674
  }
2642
2675
  const DEFAULT_PUBLIC_SKILLS_SOURCE = "BuilderIO/skills";
@@ -2703,6 +2736,12 @@ function skillPromptOptions(options = {}) {
2703
2736
  ...publicSkillPromptOptions(options),
2704
2737
  ];
2705
2738
  }
2739
+ function defaultSkillPromptTargets(options) {
2740
+ return [
2741
+ ...DEFAULT_SKILL_PROMPT_TARGETS,
2742
+ ...publicSkillEntries(options).map((entry) => entry.name),
2743
+ ];
2744
+ }
2706
2745
  function publicSkillSelectionTarget(skillNames) {
2707
2746
  return `${PUBLIC_SKILL_TARGET_PREFIX}${skillNames.join(",")}`;
2708
2747
  }
@@ -2756,9 +2795,13 @@ function shouldPrompt(parsed, options) {
2756
2795
  }
2757
2796
  async function promptForClients(context) {
2758
2797
  const clack = await import("@clack/prompts");
2798
+ const message = context.installsMcp
2799
+ ? "Install the MCP connector and skills for which local agents?\n" +
2800
+ " (space toggles, enter confirms; saved for next time)"
2801
+ : "Install skill instructions for which local agents?\n" +
2802
+ " (space toggles, enter confirms; saved for next time)";
2759
2803
  const result = await clack.multiselect({
2760
- message: "Install the MCP connector for which local agents?\n" +
2761
- " (space toggles, enter confirms; saved for next time)",
2804
+ message,
2762
2805
  options: context.options,
2763
2806
  initialValues: context.initialClients,
2764
2807
  required: true,
@@ -2801,7 +2844,7 @@ async function promptForPlanMode(context) {
2801
2844
  {
2802
2845
  value: "hosted",
2803
2846
  label: "Hosted Plans, shareable links",
2804
- hint: "Stores plans at plan.agent-native.com. Enables sharing, comments, browser editor. Requires one-time browser sign-in.",
2847
+ hint: "100% free and open source. Stores plans at plan.agent-native.com with sharing, comments, and browser editor. Requires one-time browser sign-in.",
2805
2848
  },
2806
2849
  {
2807
2850
  value: "local-files",
@@ -2872,15 +2915,20 @@ async function promptForSkills(context) {
2872
2915
  return [];
2873
2916
  return result.filter((value) => typeof value === "string");
2874
2917
  }
2875
- async function resolveSkillsClients(parsed, options) {
2918
+ async function resolveSkillsClients(parsed, options, installsMcp) {
2876
2919
  if (parsed.clientExplicit || !shouldPrompt(parsed, options)) {
2877
- return resolveClients(parsed.client);
2920
+ const clients = filterSkillsClients(resolveSkillsClientArg(parsed.client), installsMcp);
2921
+ if (clients.length === 0) {
2922
+ throw new Error("Local-file skill instructions only support Codex or Claude Code clients.");
2923
+ }
2924
+ return clients;
2878
2925
  }
2879
- const initialClients = resolveClients("all");
2926
+ const initialClients = skillsClients(installsMcp);
2880
2927
  const prompt = options.promptClients ?? promptForClients;
2881
- const selected = normalizeClientIds(await prompt({
2928
+ const selected = normalizeSkillsClientIds(await prompt({
2882
2929
  initialClients,
2883
- options: clientPromptOptions(),
2930
+ options: clientPromptOptions(installsMcp),
2931
+ installsMcp,
2884
2932
  }));
2885
2933
  if (selected.length === 0)
2886
2934
  return null;
@@ -2983,7 +3031,7 @@ async function resolveSkillTargets(parsed, options) {
2983
3031
  available: promptOptions.map((option) => option.value).join(","),
2984
3032
  });
2985
3033
  const selected = await prompt({
2986
- initialTargets: DEFAULT_SKILL_PROMPT_TARGETS,
3034
+ initialTargets: defaultSkillPromptTargets(options),
2987
3035
  options: promptOptions,
2988
3036
  });
2989
3037
  if (!selected || selected.length === 0)
@@ -3221,7 +3269,7 @@ function preserveMcpUrlAppPathOverride(target, input) {
3221
3269
  };
3222
3270
  }
3223
3271
  function dryRunInstallCommand(parsed, target) {
3224
- const clients = parsed.clients ?? resolveClients(parsed.client);
3272
+ const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);
3225
3273
  const args = [
3226
3274
  "@agent-native/core@latest",
3227
3275
  "skills",
@@ -3353,17 +3401,20 @@ function isGithubSkillRepoTarget(target) {
3353
3401
  function isPlainSkillRepoTarget(target) {
3354
3402
  return isPlainSkillRepoPath(target) || isGithubSkillRepoTarget(target);
3355
3403
  }
3356
- function agentNativeSkillsInstallArgs(parsed, target, clients) {
3404
+ function agentNativeSkillsInstallArgs(parsed, target, clients, baseDir) {
3357
3405
  const args = [
3358
3406
  "--yes",
3359
3407
  "@agent-native/skills@latest",
3360
3408
  "add",
3409
+ "--copy",
3361
3410
  target,
3362
3411
  "--client",
3363
3412
  clientArgForClients(clients),
3364
3413
  "--scope",
3365
3414
  parsed.scope,
3366
3415
  ];
3416
+ if (baseDir)
3417
+ args.push("--cwd", baseDir);
3367
3418
  if (parsed.withGithubAction)
3368
3419
  args.push("--with-github-action");
3369
3420
  if (parsed.force)
@@ -3397,13 +3448,13 @@ async function addPlainSkillRepo(parsed, options) {
3397
3448
  if (parsed.mcpUrl && !planSkillNamesSelected(parsed.plainSkillNames)) {
3398
3449
  throw new Error("--mcp-url only applies to app-backed Agent Native skills.");
3399
3450
  }
3400
- const clients = parsed.clients ?? resolveClients(parsed.client);
3451
+ const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);
3401
3452
  const skillsAgents = skillsAgentsForClients(clients);
3402
3453
  const selectedSkillNames = parsed.plainSkillNames ?? [];
3403
3454
  if (skillsAgents.length === 0) {
3404
3455
  throw new Error("Plain skill repositories can only install instructions for Codex or Claude Code clients.");
3405
3456
  }
3406
- const args = agentNativeSkillsInstallArgs(parsed, target, clients);
3457
+ const args = agentNativeSkillsInstallArgs(parsed, target, clients, options.baseDir);
3407
3458
  if (!parsed.dryRun) {
3408
3459
  const code = await (options.runCommand ?? runCommand)("npx", args, {
3409
3460
  stdio: parsed.yes ? "silent" : "inherit",
@@ -3483,13 +3534,29 @@ async function connectAfterEnsure(installTarget, clients, parsed, options) {
3483
3534
  options.log?.(`Authenticating ${installTarget.displayName}…`);
3484
3535
  options.telemetry?.track("skills_cli connect started");
3485
3536
  try {
3486
- await (options.runConnect ?? runConnect)([
3537
+ const connectArgs = [
3487
3538
  hostedUrl,
3488
3539
  "--client",
3489
3540
  clientArgForClients(clients),
3490
3541
  "--scope",
3491
3542
  parsed.scope,
3492
- ]);
3543
+ ];
3544
+ if (options.runConnect) {
3545
+ await options.runConnect(connectArgs);
3546
+ }
3547
+ else {
3548
+ await runConnect(connectArgs, {
3549
+ isInteractive: options.isInteractive,
3550
+ logOut: (message) => {
3551
+ if (message.trim())
3552
+ options.log?.(message);
3553
+ },
3554
+ logErr: (message) => {
3555
+ if (message.trim())
3556
+ options.log?.(message);
3557
+ },
3558
+ });
3559
+ }
3493
3560
  options.telemetry?.track("skills_cli connect completed");
3494
3561
  return { connected: true, connectCommand: "" };
3495
3562
  }
@@ -3550,7 +3617,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3550
3617
  if (!parsed.instructions && parsed.mcp) {
3551
3618
  throw new Error("Context X-Ray does not need MCP config yet. Run without --mcp-only.");
3552
3619
  }
3553
- const clients = parsed.clients ?? resolveClients(parsed.client);
3620
+ const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);
3554
3621
  const skillsAgents = skillsAgentsForClients(clients);
3555
3622
  if (parsed.dryRun) {
3556
3623
  const githubActionPath = parsed.withGithubAction && knownTarget === "visual-plans"
@@ -3605,7 +3672,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3605
3672
  if (parsed.mcpUrl) {
3606
3673
  installTarget = withMcpUrlOverride(installTarget, parsed.mcpUrl);
3607
3674
  }
3608
- const clients = parsed.clients ?? resolveClients(parsed.client);
3675
+ const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);
3609
3676
  installTarget = preserveMcpUrlAppPathOverride(installTarget, parsed.mcpUrl);
3610
3677
  const skillsAgents = skillsAgentsForClients(clients);
3611
3678
  if (parsed.dryRun) {
@@ -3648,6 +3715,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3648
3715
  let instructionsWritten;
3649
3716
  let connected = false;
3650
3717
  let connectCommand;
3718
+ let registeredMcpClients = shouldRegisterMcp ? clients : [];
3651
3719
  try {
3652
3720
  if (parsed.instructions) {
3653
3721
  if (skillsAgents.length === 0) {
@@ -3710,7 +3778,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3710
3778
  if (shouldRegisterMcp) {
3711
3779
  commands.push(`npx @agent-native/core@latest app-skill ensure --manifest ${installTarget.loaded.file} --client ${parsed.client} --scope ${parsed.scope} --yes`);
3712
3780
  if (!parsed.dryRun) {
3713
- await ensureAppSkill(installTarget.loaded, {
3781
+ const ensureResult = await ensureAppSkill(installTarget.loaded, {
3714
3782
  clients,
3715
3783
  scope: parsed.scope,
3716
3784
  baseDir: options.baseDir,
@@ -3718,6 +3786,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3718
3786
  confirm: true,
3719
3787
  log: options.log,
3720
3788
  });
3789
+ registeredMcpClients = ensureResult.written.map((written) => written.client);
3721
3790
  options.telemetry?.track("skills_cli mcp registered", {
3722
3791
  skills: installTarget.skillNames.join(","),
3723
3792
  });
@@ -3729,9 +3798,18 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3729
3798
  const result = await connectAfterEnsure(installTarget, clients, parsed, options);
3730
3799
  connected = result.connected;
3731
3800
  connectCommand = result.connectCommand || undefined;
3801
+ if (connected)
3802
+ registeredMcpClients = clients;
3732
3803
  if (connectCommand)
3733
3804
  commands.push(connectCommand);
3734
3805
  }
3806
+ else {
3807
+ const pendingClients = clients.filter((client) => !registeredMcpClients.includes(client));
3808
+ if (pendingClients.length > 0) {
3809
+ connectCommand = connectCommandFor(installTarget.loaded.manifest.hosted.url, pendingClients, parsed.scope);
3810
+ commands.push(connectCommand);
3811
+ }
3812
+ }
3735
3813
  }
3736
3814
  }
3737
3815
  // `--with-github-action`: also drop the PR Visual Recap workflow into the
@@ -3791,7 +3869,7 @@ export async function addAgentNativeSkill(parsed, options = {}) {
3791
3869
  mcpUrl: knownTarget === "visual-plans" && planMode === "local-files"
3792
3870
  ? ""
3793
3871
  : installTarget.loaded.manifest.hosted.mcpUrl,
3794
- mcpClients: shouldRegisterMcp ? clients : [],
3872
+ mcpClients: registeredMcpClients,
3795
3873
  dryRun: parsed.dryRun,
3796
3874
  commands,
3797
3875
  written: instructionsWritten,
@@ -3863,6 +3941,22 @@ function planModeSummary(mode) {
3863
3941
  return "Self-hosted/custom Plan app";
3864
3942
  return "Hosted Plans - shareable links and comments";
3865
3943
  }
3944
+ function targetInstallsMcp(target, parsed) {
3945
+ if (!parsed.mcp)
3946
+ return false;
3947
+ if (publicSkillSelectionNames(target))
3948
+ return false;
3949
+ const knownTarget = normalizeKnownSkillTarget(target);
3950
+ if (knownTarget === "visual-plans")
3951
+ return parsed.planMode !== "local-files";
3952
+ if (knownTarget) {
3953
+ return !isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[knownTarget]);
3954
+ }
3955
+ return true;
3956
+ }
3957
+ function targetsInstallMcp(targets, parsed) {
3958
+ return targets.some((target) => targetInstallsMcp(target, parsed));
3959
+ }
3866
3960
  function instructionContentForSkill(skillName) {
3867
3961
  if (skillName === "quick-recap") {
3868
3962
  return "When writing final response status indicators, use the /quick-recap skill always.";
@@ -3955,9 +4049,16 @@ export async function runSkills(argv, options = {}) {
3955
4049
  if (parsed.baseDir) {
3956
4050
  options = { ...options, baseDir: path.resolve(parsed.baseDir) };
3957
4051
  }
4052
+ const clackForLog = parsed.printJson
4053
+ ? undefined
4054
+ : await import("@clack/prompts");
3958
4055
  const log = parsed.printJson
3959
4056
  ? undefined
3960
- : (message) => process.stdout.write(`${message}\n`);
4057
+ : (message) => {
4058
+ if (!message.trim())
4059
+ return;
4060
+ clackForLog?.log.info(message);
4061
+ };
3961
4062
  if (parsed.command === "help") {
3962
4063
  process.stdout.write(`${HELP}\n`);
3963
4064
  return;
@@ -4062,7 +4163,8 @@ export async function runSkills(argv, options = {}) {
4062
4163
  mode: parsed.planMode,
4063
4164
  });
4064
4165
  }
4065
- const clients = await resolveSkillsClients(parsed, optionsWithTelemetry);
4166
+ const installsMcp = targetsInstallMcp(targets, parsed);
4167
+ const clients = await resolveSkillsClients(parsed, optionsWithTelemetry, installsMcp);
4066
4168
  if (!clients) {
4067
4169
  telemetry.track("skills_cli cancelled", { step: "clients" });
4068
4170
  return;
@@ -4230,15 +4332,16 @@ export async function runSkills(argv, options = {}) {
4230
4332
  clack.note(summary.join("\n"), `Installed ${installedNames} skill${results.length === 1 ? "" : "s"}`);
4231
4333
  // GitHub Action follow-ups — kept as exact, copy-pasteable command lines.
4232
4334
  for (const line of [githubActionLine, githubActionSuggestionLine].filter(Boolean)) {
4233
- process.stdout.write(`${line}\n`);
4335
+ clack.log.info(line);
4234
4336
  }
4235
4337
  const slashCommands = completedSkills.map((name) => `/${name}`).join(" ");
4236
- const configuredEveryClient = CLIENTS.every((client) => clients.includes(client));
4338
+ const configuredEveryClient = SKILLS_CLIENTS.every((client) => clients.includes(client));
4237
4339
  const clientHint = configuredEveryClient
4238
4340
  ? ""
4239
4341
  : "\n Add another client later with --client <client> (e.g. --client claude-code).";
4342
+ const reloadTarget = mcpClients.length > 0 ? "skill + MCP server" : "skill";
4240
4343
  clack.outro(`✅ All set! Start using ${slashCommands || "your new skills"} in your agent client.` +
4241
- `\n You may need to reload the client for the skill + MCP server to appear.` +
4344
+ `\n You may need to reload the client for the ${reloadTarget} to appear.` +
4242
4345
  clientHint);
4243
4346
  }
4244
4347
  catch (error) {