From ba20cf89f280bf43d6b00610d7d2e9bd22f24611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jim=20Liu=20=E5=AE=9D=E7=8E=89?= Date: Sat, 21 Mar 2026 23:25:45 -0500 Subject: [PATCH] fix(sync-clawhub): skip failed skills instead of aborting --- scripts/sync-clawhub.mjs | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/scripts/sync-clawhub.mjs b/scripts/sync-clawhub.mjs index 3ea506a..801dd7f 100644 --- a/scripts/sync-clawhub.mjs +++ b/scripts/sync-clawhub.mjs @@ -151,6 +151,9 @@ async function main() { .map((tag) => tag.trim()) .filter(Boolean); + let succeeded = 0; + const failed = []; + for (const candidate of actionable) { const version = candidate.status === "new" @@ -158,20 +161,30 @@ async function main() { : bumpSemver(candidate.latestVersion, options.bump); console.log(`Publishing ${candidate.slug}@${version}`); - const files = await listTextFiles(candidate.folder); - await publishSkill({ - registry, - token: config.token, - skill: candidate, - files, - version, - changelog: options.changelog, - tags, - }); + try { + const files = await listTextFiles(candidate.folder); + await publishSkill({ + registry, + token: config.token, + skill: candidate, + files, + version, + changelog: options.changelog, + tags, + }); + succeeded++; + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + console.error(`SKIPPED ${candidate.slug}: ${msg}`); + failed.push(candidate.slug); + } } console.log(""); - console.log(`Uploaded ${actionable.length} skill(s).`); + console.log(`Uploaded ${succeeded}/${actionable.length} skill(s).`); + if (failed.length > 0) { + console.log(`Failed (${failed.length}): ${failed.join(", ")}`); + } } function parseArgs(argv) {