skild 0.3.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.
Files changed (2) hide show
  1. package/dist/index.js +23 -18
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -87,9 +87,12 @@ async function install(source, options = {}) {
87
87
  const auth = loadRegistryAuth();
88
88
  const registryUrlForDeps = options.registry || auth?.registryUrl;
89
89
  const all = Boolean(options.all);
90
+ const jsonOnly = Boolean(options.json);
90
91
  const platform = options.target || "claude";
91
92
  if (all && options.target) {
92
- console.error(chalk2.red("Invalid options: use either --all or --target, not both."));
93
+ const message = "Invalid options: use either --all or --target, not both.";
94
+ if (jsonOnly) console.log(JSON.stringify({ ok: false, error: message }, null, 2));
95
+ else console.error(chalk2.red(message));
93
96
  process.exitCode = 1;
94
97
  return;
95
98
  }
@@ -98,24 +101,25 @@ async function install(source, options = {}) {
98
101
  if (looksLikeAlias(resolvedSource)) {
99
102
  const registryUrl = resolveRegistryUrl(registryUrlForDeps);
100
103
  const resolved = await resolveRegistryAlias(registryUrl, resolvedSource);
101
- if (!options.json) logger.info(`Resolved ${chalk2.cyan(resolvedSource)} \u2192 ${chalk2.cyan(resolved.spec)} (${resolved.type})`);
104
+ if (!jsonOnly) logger.info(`Resolved ${chalk2.cyan(resolvedSource)} \u2192 ${chalk2.cyan(resolved.spec)} (${resolved.type})`);
102
105
  resolvedSource = resolved.spec;
103
106
  }
104
107
  } catch (error) {
105
108
  const message = error instanceof SkildError ? error.message : error instanceof Error ? error.message : String(error);
106
- console.error(chalk2.red(message));
109
+ if (jsonOnly) console.log(JSON.stringify({ ok: false, error: message }, null, 2));
110
+ else console.error(chalk2.red(message));
107
111
  process.exitCode = 1;
108
112
  return;
109
113
  }
110
114
  const targets = all ? [...PLATFORMS] : [platform];
111
115
  const results = [];
112
116
  const errors = [];
113
- const spinner = createSpinner(
114
- all ? `Installing ${chalk2.cyan(source)} to ${chalk2.dim("all platforms")} (${scope})...` : `Installing ${chalk2.cyan(source)} to ${chalk2.dim(platform)} (${scope})...`
115
- );
116
117
  try {
118
+ const spinner = jsonOnly ? null : createSpinner(
119
+ all ? `Installing ${chalk2.cyan(source)} to ${chalk2.dim("all platforms")} (${scope})...` : `Installing ${chalk2.cyan(source)} to ${chalk2.dim(platform)} (${scope})...`
120
+ );
117
121
  for (const targetPlatform of targets) {
118
- spinner.text = `Installing ${chalk2.cyan(source)} to ${chalk2.dim(targetPlatform)} (${scope})...`;
122
+ if (spinner) spinner.text = `Installing ${chalk2.cyan(source)} to ${chalk2.dim(targetPlatform)} (${scope})...`;
119
123
  try {
120
124
  const record = resolvedSource.startsWith("@") && resolvedSource.includes("/") ? await installRegistrySkill(
121
125
  { spec: resolvedSource, registryUrl: registryUrlForDeps },
@@ -131,6 +135,16 @@ async function install(source, options = {}) {
131
135
  errors.push({ platform: targetPlatform, error: message });
132
136
  }
133
137
  }
138
+ if (jsonOnly) {
139
+ if (!all) {
140
+ if (errors.length) console.log(JSON.stringify({ ok: false, error: errors[0]?.error || "Install failed." }, null, 2));
141
+ else console.log(JSON.stringify(results[0] ?? null, null, 2));
142
+ } else {
143
+ console.log(JSON.stringify({ ok: errors.length === 0, source, resolvedSource, scope, results, errors }, null, 2));
144
+ }
145
+ process.exitCode = errors.length ? 1 : 0;
146
+ return;
147
+ }
134
148
  if (errors.length === 0) {
135
149
  const displayName = results[0]?.canonicalName || results[0]?.name || source;
136
150
  spinner.succeed(
@@ -139,15 +153,6 @@ async function install(source, options = {}) {
139
153
  } else {
140
154
  spinner.fail(`Failed to install ${chalk2.red(source)} to ${errors.length}/${targets.length} platforms`);
141
155
  }
142
- if (options.json) {
143
- if (!all) {
144
- console.log(JSON.stringify(results[0] ?? null, null, 2));
145
- } else {
146
- console.log(JSON.stringify({ ok: errors.length === 0, source, resolvedSource, scope, results, errors }, null, 2));
147
- }
148
- process.exitCode = errors.length ? 1 : 0;
149
- return;
150
- }
151
156
  if (!all && results[0]) {
152
157
  const record = results[0];
153
158
  if (record.hasSkillMd) logger.installDetail("SKILL.md found \u2713");
@@ -170,9 +175,9 @@ async function install(source, options = {}) {
170
175
  process.exitCode = errors.length ? 1 : 0;
171
176
  }
172
177
  } catch (error) {
173
- spinner.fail(`Failed to install ${chalk2.red(source)}`);
174
178
  const message = error instanceof SkildError ? error.message : error instanceof Error ? error.message : String(error);
175
- console.error(chalk2.red(message));
179
+ if (jsonOnly) console.log(JSON.stringify({ ok: false, error: message }, null, 2));
180
+ else console.error(chalk2.red(message));
176
181
  process.exitCode = 1;
177
182
  }
178
183
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skild",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "The npm for Agent Skills — Discover, install, manage, and publish AI Agent Skills with ease.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",