agent-skill-manager 2.17.0 → 2.18.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.
Files changed (36) hide show
  1. package/README.md +16 -2
  2. package/data/skill-index/ComposioHQ_awesome-claude-skills.json +153443 -0
  3. package/data/skill-index/Egonex-AI_Understand-Anything.json +2 -2
  4. package/data/skill-index/JuliusBrussee_caveman.json +3985 -0
  5. package/data/skill-index/Leonxlnx_taste-skill.json +47 -47
  6. package/data/skill-index/Nutlope_hallmark.json +185 -0
  7. package/data/skill-index/addyosmani_agent-skills.json +81 -81
  8. package/data/skill-index/anthropics_skills.json +69 -69
  9. package/data/skill-index/ayghri_i-have-adhd.json +185 -0
  10. package/data/skill-index/blader_humanizer.json +185 -0
  11. package/data/skill-index/cathrynlavery_diagram-design.json +185 -0
  12. package/data/skill-index/charlie947_answer-first.json +185 -0
  13. package/data/skill-index/charlie947_voiceprint.json +185 -0
  14. package/data/skill-index/google-labs-code_design.md.json +891 -0
  15. package/data/skill-index/hardikpandya_stop-slop.json +185 -0
  16. package/data/skill-index/mattpocock_skills.json +482 -114
  17. package/data/skill-index/multica-ai_andrej-karpathy-skills.json +185 -0
  18. package/data/skill-index/nextlevelbuilder_ui-ux-pro-max-skill.json +44 -44
  19. package/data/skill-index/obra_superpowers.json +49 -49
  20. package/data/skill-index/pbakaus_impeccable.json +185 -0
  21. package/data/skill-index/tt-a1i_archify.json +185 -0
  22. package/data/skill-index/zarazhangrui_frontend-slides.json +185 -0
  23. package/data/skill-index-resources.json +136 -10
  24. package/dist/agent-skill-manager.js +283 -239
  25. package/dist/chunk-54VC5E5G.js +23 -0
  26. package/dist/chunk-ESKBKSXS.js +2 -0
  27. package/dist/{chunk-LS24FFOX.js → chunk-VGQYV246.js} +2 -2
  28. package/dist/{chunk-LH2C3PE7.js → chunk-ZAOVB3X2.js} +1 -1
  29. package/dist/config-PQRMSV7F.js +2 -0
  30. package/dist/{lock-NN2MADX7.js → lock-RVOMV2LT.js} +1 -1
  31. package/dist/spawn-JDSII5L3.js +2 -0
  32. package/dist/src-SP66WR5V.js +119 -0
  33. package/package.json +1 -1
  34. package/dist/chunk-BQ4RW237.js +0 -20
  35. package/dist/config-AZYQEQOQ.js +0 -2
  36. package/dist/src-BD3KFE5H.js +0 -119
@@ -0,0 +1,23 @@
1
+ import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
+ import{b as w,p as R}from"./chunk-VGQYV246.js";import{readdir as A,stat as _,lstat as Ce,readlink as st,readFile as J,realpath as ge}from"fs/promises";import{join as x,resolve as he,basename as at}from"path";import{homedir as Y}from"os";function le(e){let t={},n=e.split(`
3
+ `),o=!1,r=!1,i=null,a=[],l="none",c=-1,p=null;function d(){if(i){let s=a.join(" ").trim();s&&(t[i]=s),i=null,a=[],l="none",c=-1}}for(let s of n){if(s.trim()==="---")if(r){d();break}else{r=!0,o=!0;continue}if(!o)continue;if(l!=="none"&&i){let u=s.replace(/^\s*/,""),g=s.length-u.length;if(g>0&&u.length>0){c===-1&&(c=g),a.push(u);continue}else{if(u.length===0)continue;d()}}if(p!==null){let u=s.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(u){let g=u[1],v=u[2].replace(/^["']|["']$/g,"");v&&(t[`${p}.${g}`]=v);continue}if(s.trim().length>0)p=null;else continue}let m=s.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(m){d();let u=m[1],g=m[2];if(g==="|"||g===">")i=u,a=[],l=g==="|"?"literal":"folded";else if(g==="|+"||g===">+"||g==="|-"||g===">-")i=u,a=[],l=g.startsWith("|")?"literal":"folded";else{let h=g.replace(/^["']|["']$/g,"");h?t[u]=h:p=u}}}return d(),t}function ce(e){return e["metadata.version"]||e.version||"0.0.0"}function ue(e){let t=e["allowed-tools"]||"";return t.trim()?t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean):[]}function pe(e){let t=(e.tags||"").trim();if(!t)return[];let n=t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t;return ot(n.split(/[\s,]+/).map(o=>o.replace(/^['"]|['"]$/g,"")))}var tt=/^[a-z0-9][a-z0-9_-]*$/;function nt(e){let t=e.trim().toLowerCase();return!t||t.length>32||!tt.test(t)?null:t}function ot(e){let t=new Set,n=[];for(let o of e){let r=nt(o);r&&!t.has(r)&&(t.add(r),n.push(r))}return n}function Ie(e){return(e||"").trim().toLowerCase()}function rt(e){let t=Ie(e);return t==="true"||t==="yes"||t==="1"}function it(e){let t=Ie(e);return t==="false"||t==="no"||t==="0"}function fe(e){return!rt(e["disable-model-invocation"])}function de(e){return"user-invocable"in e?!it(e["user-invocable"]):!0}function D(e,t){let n=e!==!1,o=t!==!1;return n&&o?"both":n?"model":o?"user":"none"}function dn(e,t){let n=e.modelInvocable!==!1,o=e.userInvocable!==!1;return!(t.modelInvocable&&!n||t.userInvocable&&!o)}function q(e){if(!e)return 0;let t=e.split(/\s+/).map(o=>o.trim()).filter(Boolean).length,n=0;for(let o=0;o<e.length;o++)e.charCodeAt(o)===32&&n++;return t+n}function z(e){return!Number.isFinite(e)||e<0?"~0 tokens":e<1e3?`~${e} tokens`:e<1e4?`~${(e/1e3).toFixed(1).replace(/\.0$/,"")}k tokens`:e<1e6?`~${Math.round(e/1e3)}k tokens`:`~${(e/1e6).toFixed(1).replace(/\.0$/,"")}M tokens`}function gn(e){return q(e.description??"")}function hn(e){let t=e.tokenCount;return typeof t=="number"&&Number.isFinite(t)&&t>0?t:0}var lt=x(Y(),".claude","plugins","marketplaces"),ct=x(Y(),".codex","plugins","cache"),ut=x(Y(),".codex","config.toml"),In=x(Y(),".agents","plugins","marketplace.json"),Ee=16,pt=Ee-1,F=[],T=0,me=0;function Pe(){for(;me<Ee&&T<F.length;){let e=F[T++];me++,e()}T===F.length?(F.length=0,T=0):T>=1024&&T*2>=F.length&&(F.splice(0,T),T=0)}function ft(e){return new Promise((t,n)=>{F.push(()=>{Promise.resolve().then(e).finally(()=>{me--,Pe()}).then(t,n)}),Pe()})}function dt(){let e=[],t=0,n=0,o=()=>{for(;t<pt;){let r;for(let l=0;l<e.length;l++){let c=e[n];if(n=(n+1)%e.length,c.nextIndex<c.entries.length){r=c;break}}if(!r)return;let i=r.nextIndex++,a=r.entries[i];r.inFlight++,t++,ft(()=>r.task(a,i)).then(l=>{l&&r.results.push([i,l])},()=>{}).finally(()=>{if(t--,r.inFlight--,r.nextIndex===r.entries.length&&r.inFlight===0){let l=e.indexOf(r);e.splice(l,1),e.length===0?n=0:(l<n&&n--,n%=e.length),r.results.sort(([c],[p])=>c-p),r.resolve(r.results.map(([,c])=>c))}o()})}};return{run(r,i){return r.length===0?Promise.resolve([]):new Promise(a=>{e.push({entries:r,nextIndex:0,inFlight:0,results:[],task:i,resolve:a}),o()})}}}function mt(e,t){let n=[];for(let o of e.providers){if(!o.enabled){w(`scan: skipping disabled provider "${o.name}"`);continue}if(t==="global"||t==="both"){let r=R(o.global);w(`scan: adding location ${r} (${o.label}, global)`),n.push({dir:r,location:`global-${o.name}`,scope:"global",providerName:o.name,providerLabel:o.label})}if(t==="project"||t==="both"){let r=R(o.project);w(`scan: adding location ${r} (${o.label}, project)`),n.push({dir:r,location:`project-${o.name}`,scope:"project",providerName:o.name,providerLabel:o.label})}}for(let o of e.customPaths)if(t===o.scope||t==="both"){let r=R(o.path);w(`scan: adding custom location ${r} (${o.label}, ${o.scope})`),n.push({dir:r,location:`${o.scope}-custom`,scope:o.scope,providerName:"custom",providerLabel:o.label})}return n}async function ve(e){try{return(await A(e,{recursive:!0})).length}catch{return 0}}function X(e,t){Object.defineProperty(e,"_skillMdContent",{value:t,writable:!0,configurable:!0})}async function gt(e,t){w(`scanning: ${e.dir} (${e.location})`);let n;try{n=await A(e.dir)}catch{return w(`scanning: ${e.dir} \u2014 not found, skipping`),[]}let o=await t.run(n,async r=>{try{let i=x(e.dir,r);try{if(!(await _(i)).isDirectory()){w(` skip: "${r}" \u2014 not a directory`);return}}catch{w(` skip: "${r}" \u2014 stat failed`);return}let a=x(i,"SKILL.md"),l;try{l=await J(a,"utf-8")}catch{w(` skip: "${r}" \u2014 no SKILL.md`);return}let c=le(l),p=!1,d=null;try{(await Ce(i)).isSymbolicLink()&&(p=!0,d=await st(i))}catch{}let s=he(i),m;try{m=await ge(i)}catch{m=s}let u={name:c.name||r,version:ce(c),description:(c.description||"").replace(/\s*\n\s*/g," ").trim(),creator:c["metadata.creator"]||"",license:(c.license||"").trim(),compatibility:(c.compatibility||"").trim(),allowedTools:ue(c),tags:pe(c),modelInvocable:fe(c),userInvocable:de(c),effort:c.effort||c["metadata.effort"]||void 0,dirName:r,path:s,originalPath:i,location:e.location,scope:e.scope,provider:e.providerName,providerLabel:e.providerLabel,isSymlink:p,symlinkTarget:d,realPath:m,tokenCount:q(l)};return X(u,l),u}catch{w(` skip: "${r}" \u2014 scan failed`);return}});return w(`found ${o.length} skill(s) in ${e.dir}`),o}async function Te(e){let t=[],n;try{n=await A(e)}catch{return t}for(let o of n){let r=x(e,o),i;try{i=await Ce(r)}catch{continue}if(!i.isSymbolicLink()&&i.isDirectory()){let a=x(r,"SKILL.md");try{await _(a),t.push(r)}catch{let l=await Te(r);t.push(...l)}}}return t}async function ht(e){let t=e??lt,n=[];w(`scan: checking plugin marketplaces at ${t}`);let o;try{o=await A(t)}catch{return w("scan: plugin marketplaces dir not found, skipping"),n}for(let r of o){let i=x(t,r),a;try{a=await _(i)}catch{continue}if(!a.isDirectory())continue;w(`scan: scanning marketplace "${r}"`);let l=await Te(i);for(let c of l){let p=x(c,"SKILL.md"),d;try{d=await J(p,"utf-8")}catch{continue}let s=le(d),m=at(c),u=he(c),g;try{g=await ge(c)}catch{g=u}let h={name:s.name||m,version:ce(s),description:(s.description||"").replace(/\s*\n\s*/g," ").trim(),creator:s["metadata.creator"]||"",license:(s.license||"").trim(),compatibility:(s.compatibility||"").trim(),allowedTools:ue(s),tags:pe(s),modelInvocable:fe(s),userInvocable:de(s),effort:s.effort||s["metadata.effort"]||void 0,dirName:m,path:u,originalPath:c,location:`global-plugin-${r}`,scope:"global",provider:"plugin",providerLabel:`Plugin (${r})`,isSymlink:!1,symlinkTarget:null,realPath:g,marketplace:r,tokenCount:q(d)};X(h,d),n.push(h)}}return w(`scan: found ${n.length} plugin marketplace skill(s)`),n}function vt(e){let t=new Map,n=null;for(let o of e.split(`
4
+ `)){let r=o.trim(),i=r.match(/^\[plugins\.([^\]]+)\]$/);if(i){n=i[1].trim().replace(/^["']|["']$/g,"");continue}if(r.startsWith("[")){n=null;continue}if(n&&r.startsWith("enabled")){let a=r.match(/^enabled\s*=\s*(true|false)/i);a&&t.set(n,a[1].toLowerCase()==="true")}}return t}async function bt(e){let t=e??ut;try{let n=await J(t,"utf-8");return vt(n)}catch{return w(`codex: config.toml not found at ${t}, skipping enabled check`),new Map}}async function $t(e,t){let n=e??ct,o=[];w(`codex: checking plugin cache at ${n}`);let r;try{r=await A(n)}catch{return w("codex: plugin cache dir not found, skipping"),o}let i=await bt(t);for(let a of r){let l=x(n,a),c;try{c=await _(l)}catch{continue}if(!c.isDirectory())continue;let p;try{p=await A(l)}catch{continue}for(let d of p){let s=x(l,d),m;try{m=await _(s)}catch{continue}if(!m.isDirectory())continue;let u;try{u=await A(s)}catch{continue}let g=(await Promise.all(u.map(async $=>{try{return(await _(x(s,$))).isDirectory()?$:null}catch{return null}}))).filter($=>$!==null);if(g.length===0)continue;let h=g.sort(Ne).at(-1),v=x(s,h),y=x(v,".codex-plugin","plugin.json"),S;try{let $=await J(y,"utf-8");S=JSON.parse($)}catch{w(`codex: no valid plugin.json at ${y}, skipping`);continue}let P=he(v),C;try{C=await ge(v)}catch{C=P}let E=S.interface?.displayName||S.name||d,G=S.version||h,B=(S.description||"").replace(/\s*\n\s*/g," ").trim(),V=i.has(d)?i.get(d):!0;o.push({name:E,version:G,description:B,creator:"",license:"",compatibility:"",allowedTools:[],dirName:d,path:P,originalPath:v,location:`global-codex-plugin-${a}`,scope:"global",provider:"codex-plugin",providerLabel:`Codex Plugin (${a})`,isSymlink:!1,symlinkTarget:null,realPath:C,marketplace:a,codexPlugin:{category:S.interface?.category,hasMcpConfig:S.mcp!=null&&Object.keys(S.mcp).length>0,pluginName:d,pluginVersion:h,enabled:V}})}}return w(`codex: found ${o.length} plugin(s) in cache`),o}async function Pn(e,t,n,o){let r=mt(e,t),i=t==="global"||t==="both",a=dt(),[l,c,p]=await Promise.all([Promise.all(r.map(u=>gt(u,a))),i?ht(n):Promise.resolve([]),i?$t(o):Promise.resolve([])]),d=l.flat(),s=new Set(d.map(u=>u.realPath)),m=new Set(d.map(u=>u.name.toLowerCase()));for(let u of c)!s.has(u.realPath)&&!m.has(u.name.toLowerCase())&&(d.push(u),s.add(u.realPath),m.add(u.name.toLowerCase()));for(let u of p)!s.has(u.realPath)&&!m.has(u.name.toLowerCase())&&(d.push(u),s.add(u.realPath),m.add(u.name.toLowerCase()));return d}function Cn(e,t){if(!t.trim())return e;let n=t.toLowerCase();return e.filter(o=>o.name.toLowerCase().includes(n)||o.description.toLowerCase().includes(n)||o.creator.toLowerCase().includes(n)||o.effort&&o.effort.toLowerCase().includes(n)||o.location.toLowerCase().includes(n)||o.providerLabel.toLowerCase().includes(n))}function Ne(e,t){let n=e.split("."),o=t.split("."),r=Math.max(n.length,o.length);for(let i=0;i<r;i++){let a=parseInt(n[i]??"0",10),l=parseInt(o[i]??"0",10);if(isNaN(a)||isNaN(l))return e.localeCompare(t);if(a!==l)return a-l}return 0}function En(e,t){let n=[...e];switch(t){case"name":n.sort((o,r)=>o.name.localeCompare(r.name));break;case"version":n.sort((o,r)=>Ne(o.version,r.version));break;case"location":n.sort((o,r)=>o.location.localeCompare(r.location));break}return n}import{rm as N,readFile as Ae,writeFile as Et,access as Tt,lstat as Nt,rename as Lt,readdir as Mt,mkdir as Me,unlink as Re}from"fs/promises";import{join as Q,resolve as I,dirname as O,relative as Fe}from"path";import{homedir as Rt}from"os";import{readdir as yt,readFile as St,stat as kt,symlink as Le}from"fs/promises";import{dirname as wt,join as xt,resolve as It}from"path";async function be(e,t){process.platform==="win32"?await Le(It(wt(t),e),t,"junction"):await Le(e,t,"dir")}function Mn(e){return e.split("\\").join("/")}var Pt=new Set([".png",".jpg",".jpeg",".gif",".ico",".bmp",".webp",".mp3",".mp4",".wav",".avi",".mov",".zip",".tar",".gz",".bz2",".7z",".exe",".dll",".so",".dylib",".woff",".woff2",".ttf",".eot",".pdf",".doc",".docx"]),Ct=512*1024;async function Rn(e){let t=[];async function n(o,r){let i;try{i=await yt(o)}catch{return}for(let a of i){if(a===".git"||a==="node_modules")continue;let l=xt(o,a),c=r?`${r}/${a}`:a;try{let p=await kt(l);if(p.isDirectory())await n(l,c);else if(p.isFile()){let d=a.includes(".")?`.${a.split(".").pop().toLowerCase()}`:"";if(Pt.has(d)||p.size>Ct)continue;try{let s=await St(l,"utf-8");t.push({relPath:c,content:s,lineCount:s.split(`
5
+ `).length})}catch{}}}catch{continue}}}return await n(e,""),t}var je=Rt();function Ft(e,t){let n={directories:[],ruleFiles:[],agentsBlocks:[]};n.directories.push({path:e.originalPath,isSymlink:e.isSymlink});let o=e.dirName;if(e.scope==="project"&&(n.ruleFiles.push(I(".cursor","rules",`${o}.mdc`),I(".windsurf","rules",`${o}.md`),I(".github","instructions",`${o}.instructions.md`)),n.agentsBlocks.push({file:I("AGENTS.md"),skillName:o})),e.scope==="global"){for(let a of t.providers){if(!a.enabled)continue;let l=R(a.global),c=Q(O(l),"AGENTS.md");n.agentsBlocks.push({file:c,skillName:o})}let r=Q(je,".codex","AGENTS.md");n.agentsBlocks.some(a=>a.file===r)||n.agentsBlocks.push({file:r,skillName:o})}return n}function Wn(e,t,n,o){let r=t.filter(m=>m.dirName===e),i=r;if(o?.providerFilter&&(i=i.filter(m=>m.provider===o.providerFilter)),o?.scopeFilter&&(i=i.filter(m=>m.scope===o.scopeFilter)),i.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let a=new Set(r.filter(m=>!i.includes(m)).map(m=>`${m.provider}::${m.scope}`));function l(m){if(m===I("AGENTS.md")){let u=Array.from(a).find(g=>g.endsWith("::project"));return u?{provider:u.split("::")[0],scope:"project"}:null}for(let u of n.providers){let g=R(u.global),h=Q(O(g),"AGENTS.md");if(m===h)return{provider:u.name,scope:"global"}}return m===Q(je,".codex","AGENTS.md")?{provider:"codex",scope:"global"}:null}let c={directories:[],ruleFiles:[],agentsBlocks:[]},p=new Set,d=new Set,s=new Set;for(let m of i){let u=Ft(m,n);for(let g of u.directories)p.has(g.path)||(p.add(g.path),c.directories.push(g));for(let g of u.ruleFiles)d.has(g)||(d.add(g),c.ruleFiles.push(g));for(let g of u.agentsBlocks){let h=`${g.file}::${g.skillName}`;if(s.has(h))continue;let v=l(g.file);if(v){let y=`${v.provider}::${v.scope}`;if(a.has(y))continue}s.add(h),c.agentsBlocks.push(g)}}return c}async function H(e){try{return await Tt(e),!0}catch{return!1}}async function At(e,t){if(!await H(e))return;let n=await Ae(e,"utf-8"),o=!1;for(let r of["agent-skill-manager","skill-manager","pskills"]){let i=`<!-- ${r}: ${t} -->`,a=`<!-- /${r}: ${t} -->`,l=n.indexOf(i),c=n.indexOf(a);if(l===-1||c===-1)continue;let p=l;p>0&&n[p-1]===`
6
+ `&&p--;let s=c+a.length;s<n.length&&n[s]===`
7
+ `&&s++,n=n.slice(0,p)+n.slice(s),o=!0}o&&await Et(e,n,"utf-8")}function jt(e,t){let n=e.filter(r=>r.provider!==t);if(n.length===0)return null;let o=n.find(r=>!r.isSymlink);return o?{path:o.originalPath,provider:o.provider}:{path:n[0].originalPath,provider:n[0].provider}}function Gn(e,t,n){if(!e.directories.some(p=>!p.isSymlink))return null;let r=t.filter(p=>p.provider!==n);if(r.length===0)return null;let i=jt(t,n);if(!i)return null;let a=e.directories.find(p=>!p.isSymlink),l=r.map(p=>p.originalPath).filter(p=>p!==i.path),c=r.find(p=>p.originalPath===i.path);return c&&!c.isSymlink?l.length===0?null:{needed:!0,fromProvider:n,fromPath:a?.path||"",toProvider:i.provider,toPath:i.path,repointPaths:l,repointOnly:!0}:{needed:!0,fromProvider:n,fromPath:a?.path||"",toProvider:i.provider,toPath:i.path,repointPaths:l}}async function Dt(e){let t=[],n=new Set;for(let o of e){let r=O(o);if(!n.has(r)){n.add(r);try{(await Mt(r)).filter(l=>l!==".DS_Store").length===0&&(await N(r,{recursive:!0,force:!0}),t.push(r))}catch{}}}return t}async function Bn(e,t,n){let o=[];if(n?.needed){if(!n.repointOnly)try{let a=O(n.toPath);await Me(a,{recursive:!0});try{await Re(n.toPath)}catch(l){(!(l instanceof Error)||!("code"in l)||l.code!=="ENOENT")&&await N(n.toPath,{recursive:!0,force:!0})}try{await Lt(n.fromPath,n.toPath)}catch(l){if(l instanceof Error&&"code"in l&&l.code==="EXDEV"){let{cp:c}=await import("fs/promises");try{await c(n.fromPath,n.toPath,{recursive:!0,preserveTimestamps:!0})}catch(p){try{await N(n.toPath,{recursive:!0,force:!0})}catch(d){let s=d instanceof Error?d.message:String(d);o.push(`Failed to clean up partial copy at ${n.toPath}: ${s}`)}throw p}await N(n.fromPath,{recursive:!0,force:!0})}else throw l}o.push(`Relocated real folder: ${n.fromPath} -> ${n.toPath}`)}catch(a){let l=a instanceof Error?a.message:String(a);o.push(`Failed to relocate real folder: ${l}`);let c=new Error(`Failed to relocate real folder: ${l}`);throw c.log=o,c}for(let a of n.repointPaths||[]){let l=O(a),c=Fe(l,n.toPath);try{try{await Re(a)}catch(p){(!(p instanceof Error)||!("code"in p)||p.code!=="ENOENT")&&await N(a,{recursive:!0,force:!0})}await Me(l,{recursive:!0}),await be(c,a),o.push(`Repointed symlink: ${a} -> ${c}`)}catch(p){let d=p instanceof Error?p.message:String(p);o.push(`Failed to repoint symlink ${a} -> ${c}: ${d}. To fix manually: ln -sfn ${n.toPath} ${a}`)}}}for(let a of e.directories)try{if(n?.needed&&!n.repointOnly&&I(a.path)===I(n.fromPath))continue;if(t&&I(a.path)===I(t)){o.push(`Skipped same-path removal: ${a.path}`);continue}if(a.isSymlink?(await N(a.path),o.push(`Removed symlink: ${a.path}`)):(await N(a.path,{recursive:!0,force:!0}),o.push(`Removed directory: ${a.path}`)),!n?.needed&&t&&I(a.path)!==I(t)){let l=O(a.path),c=Fe(l,t);await be(c,a.path),o.push(`Created symlink: ${a.path} -> ${c}`)}}catch(l){let c=l instanceof Error?l.message:String(l);o.push(`Failed to remove ${a.path}: ${c}`)}let r=e.directories.map(a=>a.path),i=await Dt(r);for(let a of i)o.push(`Removed empty parent directory: ${a}`);for(let a of e.ruleFiles)if(await H(a))try{await N(a),o.push(`Removed rule file: ${a}`)}catch(l){let c=l instanceof Error?l.message:String(l);o.push(`Failed to remove ${a}: ${c}`)}for(let a of e.agentsBlocks)try{await At(a.file,a.skillName),o.push(`Cleaned AGENTS.md block in: ${a.file}`)}catch(l){let c=l instanceof Error?l.message:String(l);o.push(`Failed to clean AGENTS.md block: ${c}`)}return o}async function Vn(e){let t=[];for(let n of e.directories)if(await H(n.path)){let r=(await Nt(n.path)).isSymbolicLink()?"symlink":"directory";t.push(`${n.path} (${r})`)}for(let n of e.ruleFiles)await H(n)&&t.push(n);for(let n of e.agentsBlocks)if(await H(n.file)){let o=await Ae(n.file,"utf-8");(o.includes(`<!-- agent-skill-manager: ${n.skillName} -->`)||o.includes(`<!-- skill-manager: ${n.skillName} -->`)||o.includes(`<!-- pskills: ${n.skillName} -->`))&&t.push(`${n.file} (AGENTS.md block)`)}return t}import{createHash as Yt}from"crypto";import{readFile as Xt}from"fs/promises";import{join as Qt}from"path";var b=()=>!(process.env.NO_COLOR!==void 0||globalThis.__CLI_NO_COLOR||!process.stdout.isTTY),f={bold:e=>b()?`\x1B[1m${e}\x1B[0m`:e,cyan:e=>b()?`\x1B[36m${e}\x1B[0m`:e,green:e=>b()?`\x1B[32m${e}\x1B[0m`:e,yellow:e=>b()?`\x1B[33m${e}\x1B[0m`:e,dim:e=>b()?`\x1B[2m${e}\x1B[0m`:e,white:e=>b()?`\x1B[37m${e}\x1B[0m`:e,red:e=>b()?`\x1B[31m${e}\x1B[0m`:e,blue:e=>b()?`\x1B[34m${e}\x1B[0m`:e,blueBold:e=>b()?`\x1B[34;1m${e}\x1B[0m`:e,magenta:e=>b()?`\x1B[35m${e}\x1B[0m`:e,bgDim:e=>b()?`\x1B[48;5;236m${e}\x1B[0m`:e,bgRed:e=>b()?`\x1B[41m\x1B[37m\x1B[1m${e}\x1B[0m`:e,bgYellow:e=>b()?`\x1B[43m\x1B[30m\x1B[1m${e}\x1B[0m`:e,bgGreen:e=>b()?`\x1B[42m\x1B[30m\x1B[1m${e}\x1B[0m`:e,bgCyan:e=>b()?`\x1B[46m\x1B[30m\x1B[1m${e}\x1B[0m`:e};function j(e){if(!e)return"";switch(e.toLowerCase()){case"low":return f.green(e);case"medium":return f.yellow(e);case"high":return f.red(e);case"max":return f.magenta(e);default:return e}}var De={claude:f.blueBold,codex:f.cyan,"codex-plugin":f.cyan,openclaw:f.yellow,agents:f.green,custom:f.magenta,cursor:f.blue,windsurf:f.cyan,cline:f.green,roocode:f.magenta,continue:f.yellow,copilot:f.white,aider:f.red,opencode:f.cyan,zed:f.blue,augment:f.green,amp:f.yellow};function W(e,t){return(De[e]||f.dim)(t)}function K(e,t){return b()?(De[e]||f.dim)(`[${t}]`):`[${t}]`}function L(e){let t=process.env.HOME||process.env.USERPROFILE||"";return t&&e.startsWith(t)?"~"+e.slice(t.length):e}function _t(e){if(e.length===0)return"No skills found.";let t=["Name","Version","Creator","Effort","Invoke","Tool","Scope","Type","Path"],n=e.map(c=>[c.disabled?`${c.name} [disabled]`:c.name,c.version,c.creator||"\u2014",c.effort||"\u2014",D(c.modelInvocable,c.userInvocable),c.providerLabel,c.scope,c.isSymlink?"symlink":"directory",L(c.path)]),o=t.map((c,p)=>Math.max(c.length,...n.map(d=>d[p].length))),r=(c,p)=>c.padEnd(p),i=t.map((c,p)=>r(c,o[p])).join(" "),a=o.map(c=>"-".repeat(c)).join("--"),l=n.map((c,p)=>{let d=c.map((s,m)=>r(s,o[m])).join(" ");return e[p].disabled?f.dim(d):d});return[b()?f.bold(i):i,a,...l].join(`
8
+ `)}function U(e){let t=new Map;for(let o of e){let r=`${o.dirName}||${o.scope}||${o.disabled?"off":"on"}`,i=t.get(r)??[];i.push(o),t.set(r,i)}let n=[];for(let[,o]of t){let r=o[0],i=new Set(o.map(l=>l.scope)),a=new Set(o.map(l=>l.isSymlink?"symlink":"directory"));n.push({name:r.name,version:r.version,creator:r.creator||"",effort:r.effort||"",invoke:D(r.modelInvocable,r.userInvocable),tokens:typeof r.tokenCount=="number"?z(r.tokenCount):"",providers:o.map(l=>({provider:l.provider,label:l.providerLabel})),scope:i.size>1?"mixed":r.scope,type:a.size>1?"mixed":r.isSymlink?"symlink":"directory",path:L(r.path),warningCount:o.reduce((l,c)=>l+(c.warnings?.length??0),0),disabled:o.every(l=>l.disabled===!0)})}return n}function $e(e){return e.disabled?`${e.name} [disabled]`:e.name}var Ot=50;function Wt(e,t={}){let n=t.topN??5,o=t.showHint??!0;if(e.length===0)return"No skills found.";let r=[],a=U(e).length,l=e.length,c=new Set(e.map(h=>h.provider)),p=e.filter(h=>h.scope==="global").length,d=e.filter(h=>h.scope==="project").length,s=`${l} skills (${a} unique) across ${c.size} tools | ${p} global, ${d} project`;r.push(b()?f.bold(s):s),r.push("");let m=new Map;for(let h of e){let v=m.get(h.provider)??{label:h.providerLabel,count:0};v.count+=1,m.set(h.provider,v)}let u=[...m.entries()].sort((h,v)=>v[1].count-h[1].count).slice(0,n);r.push(b()?f.bold("Top tools:"):"Top tools:");for(let[h,{label:v,count:y}]of u){let S=b()?W(h,`[${v}]`):`[${v}]`;r.push(` ${S} ${y} skill${y===1?"":"s"}`)}r.push(""),r.push(b()?f.bold("Scopes:"):"Scopes:"),r.push(` global ${p} skill${p===1?"":"s"}`),r.push(` project ${d} skill${d===1?"":"s"}`);let g=new Map;for(let h of e)h.effort&&g.set(h.effort,(g.get(h.effort)??0)+1);if(g.size>0){let h=[...g.entries()].sort((v,y)=>y[1]-v[1]).slice(0,n);r.push(""),r.push(b()?f.bold("Top efforts:"):"Top efforts:");for(let[v,y]of h){let S=j(v),P=Math.max(0,6-v.length);r.push(` ${S}${" ".repeat(P)} ${y} skill${y===1?"":"s"}`)}}if(o){r.push("");let h="Tip: refine with `asm list -p <tool>`, `asm search <query>`, or `asm list --compact`";r.push(b()?f.dim(h):h)}return r.join(`
9
+ `)}function _e(e){if(e.length===0)return"No skills found.";let t=U(e),n=[],o=Math.max(4,...t.map(u=>$e(u).length)),r=Math.max(7,...t.map(u=>u.version.length)),i=t.map(u=>u.providers.map(g=>K(g.provider,g.label)).join(" ")),a=t.map(u=>u.providers.map(g=>`[${g.label}]`).join(" ")),l=Math.max(5,...a.map(u=>u.length)),c=7,p=(u,g)=>u.padEnd(g);for(let u=0;u<t.length;u++){let g=t[u],h=p($e(g),o),v=f.dim(p(g.version,r)),y=l-a[u].length,S=i[u]+" ".repeat(Math.max(0,y)),P=f.dim(p(g.scope,c)),C=p(g.invoke,5),E=`${h} ${v} ${C} ${S} ${P}`;n.push(g.disabled?f.dim(E):E)}n.push("");let d=e.length,s=t.length,m=`${d} skills (${s} unique)`;return n.push(f.dim(m)),n.join(`
10
+ `)}function Gt(e,t){if(e.length===0)return"No skills found.";let n=new Map,o=p=>{switch(t){case"tool":return[p.providerLabel];case"scope":return[p.scope];case"effort":return[p.effort&&p.effort.length>0?p.effort:"(unset)"]}};for(let p of e)for(let d of o(p)){let s=n.get(d)??[];s.push(p),n.set(d,s)}let r=[...n.entries()].sort((p,d)=>d[1].length!==p[1].length?d[1].length-p[1].length:p[0].localeCompare(d[0])),i=[];for(let[p,d]of r){let s=`${p} (${d.length})`;i.push(b()?f.bold(s):s);let g=_e(d).split(`
11
+ `).slice(0,-2).filter(h=>h.length>0).map(h=>` ${h}`);i.push(...g),i.push("")}let a=e.length,l=U(e).length,c=`${a} skills (${l} unique), grouped by ${t}`;return i.push(f.dim(c)),i.join(`
12
+ `)}function Bt(e,t){if(!Number.isFinite(t)||t<=0||e.length<=t)return{skills:e,hint:""};let n=e.slice(0,t),o=e.length-t,r=f.dim(`... ${o} more not shown. Re-run with --limit ${e.length} (or 0) to see all, or refine with -p <tool>.`);return{skills:n,hint:r}}function Vt(e){if(e.length===0)return"No skills found.";let t=U(e),n=[],o=Math.max(4,...t.map($=>$.name.length)),r=Math.max(7,...t.map($=>$.version.length)),i=Math.max(7,...t.map($=>Math.min(($.creator||"\u2014").length,15))),a=Math.max(6,...t.map($=>($.effort||"\u2014").length)),l=Math.max(6,...t.map($=>$.invoke.length)),c=t.some($=>$.tokens.length>0),p=c?Math.max(6,...t.map($=>($.tokens||"\u2014").length)):0,d=7,s=9,m=t.map($=>$.providers.map(k=>K(k.provider,k.label)).join(" ")),u=t.map($=>$.providers.map(k=>`[${k.label}]`).join(" ")),g=Math.max(9,...u.map($=>$.length)),h=($,k)=>$.padEnd(k),v=c?` ${h("Tokens",p)}`:"",y=`${h("Name",o)} ${h("Version",r)} ${h("Creator",i)} ${h("Effort",a)} ${h("Invoke",l)}${v} ${h("Tools",g)} ${h("Scope",d)} ${h("Type",s)}`;n.push(b()?f.bold(y):y);let S=c?` ${"-".repeat(p)}`:"";n.push(`${"-".repeat(o)} ${"-".repeat(r)} ${"-".repeat(i)} ${"-".repeat(a)} ${"-".repeat(l)}${S} ${"-".repeat(g)} ${"-".repeat(d)} ${"-".repeat(s)}`);for(let $=0;$<t.length;$++){let k=t[$],ne=h($e(k),o),oe=h(k.version,r),re=(k.creator||"\u2014").slice(0,15),ie=h(re,i),se=k.effort||"\u2014",ae=k.effort?j(k.effort):"\u2014",Ke=a-se.length,Ue=ae+" ".repeat(Math.max(0,Ke)),qe=c?` ${h(k.tokens||"\u2014",p)}`:"",Je=g-u[$].length,Ye=m[$]+" ".repeat(Math.max(0,Je)),Xe=h(k.scope,d),Qe=h(k.type,s),Ze=k.warningCount>0?` ${f.yellow(`(${k.warningCount} warning${k.warningCount>1?"s":""})`)}`:"",et=h(k.invoke,l),xe=`${ne} ${oe} ${ie} ${Ue} ${et}${qe} ${Ye} ${Xe} ${Qe}${Ze}`;n.push(k.disabled?f.dim(xe):xe)}let P=t.length,C=e.length,E=new Set(e.map($=>$.provider)),G=e.filter($=>$.scope==="global").length,B=e.filter($=>$.scope==="project").length;n.push("");let V=`${C} skills (${P} unique) across ${E.size} tools | ${G} global, ${B} project`;return n.push(f.dim(V)),n.join(`
13
+ `)}function zt(e,t){if(!b()||!t)return e;let n=e.toLowerCase().indexOf(t.toLowerCase());if(n===-1)return e;let o=e.slice(0,n),r=e.slice(n,n+t.length),i=e.slice(n+t.length);return`${o}${f.bold(f.yellow(r))}${i}`}function Ht(e,t){if(e.length===0)return`No skills matching "${t}". Try ${f.bold("asm list")} to see all skills.`;let n=U(e),o=[];o.push(f.dim(`Found ${e.length} result${e.length===1?"":"s"} (${n.length} unique) matching "${t}"`)+`
14
+ `);let r=Math.max(4,...n.map(v=>v.name.length)),i=Math.max(7,...n.map(v=>v.version.length)),a=Math.max(7,...n.map(v=>Math.min((v.creator||"\u2014").length,15))),l=Math.max(6,...n.map(v=>(v.effort||"\u2014").length)),c=n.map(v=>v.providers.map(y=>K(y.provider,y.label)).join(" ")),p=n.map(v=>v.providers.map(y=>`[${y.label}]`).join(" ")),d=Math.max(9,...p.map(v=>v.length)),s=7,m=9,u=(v,y)=>v.padEnd(y),g=6,h=`${u("Name",r)} ${u("Version",i)} ${u("Creator",a)} ${u("Effort",l)} ${u("Invoke",g)} ${u("Tools",d)} ${u("Scope",s)} ${u("Type",m)}`;o.push(b()?f.bold(h):h),o.push(`${"-".repeat(r)} ${"-".repeat(i)} ${"-".repeat(a)} ${"-".repeat(l)} ${"-".repeat(g)} ${"-".repeat(d)} ${"-".repeat(s)} ${"-".repeat(m)}`);for(let v=0;v<n.length;v++){let y=n[v],S=zt(y.name,t),P=r-y.name.length,C=S+" ".repeat(Math.max(0,P)),E=u(y.version,i),G=(y.creator||"\u2014").slice(0,15),B=u(G,a),V=y.effort||"\u2014",$=y.effort?j(y.effort):"\u2014",k=l-V.length,ne=$+" ".repeat(Math.max(0,k)),oe=d-p[v].length,re=c[v]+" ".repeat(Math.max(0,oe)),ie=u(y.scope,s),se=u(y.type,m),ae=u(y.invoke,g);o.push(`${C} ${E} ${B} ${ne} ${ae} ${re} ${ie} ${se}`)}return o.join(`
15
+ `)}function Kt(e,t){if(e.length===0)return"";let n=[];n.push(f.dim(`Found ${e.length} available skill${e.length===1?"":"s"} matching "${t}"`)+`
16
+ `);for(let o of e){n.push(` ${f.dim("To install:")} ${f.green(`asm install ${o.installUrl}`)}`);let r=o.verified?f.blue(" [verified]"):"",i=o.invocability?f.dim(` [${o.invocability}]`):"";n.push(` ${f.cyan(o.name)} ${f.dim(`v${o.version}`)}${r}${i} ${f.dim(`[${o.repoLabel}]`)}`);for(let a of ee(o.description,76))n.push(` ${a}`);n.push("")}return n.join(`
17
+ `)}var ye=new Set(["Bash","Write","Edit","NotebookEdit"]),Oe=new Set(["WebFetch","WebSearch"]);function We(e){return ye.has(e)?f.red(e):Oe.has(e)?f.yellow(e):f.green(e)}function Z(e){return e.length===0?"":e.map(We).join(" ")}function Se(e){let t=e.filter(o=>ye.has(o));if(t.length===0)return null;let n=[];return t.includes("Bash")&&n.push("execute shell commands"),(t.includes("Write")||t.includes("Edit")||t.includes("NotebookEdit"))&&n.push("modify files"),`This skill can ${n.join(" and ")}`}function ee(e,t){let n=e.split(/\s+/),o=[],r="";for(let i of n)r.length+i.length+1>t&&r.length>0?(o.push(r),r=i):r=r?r+" "+i:i;return r&&o.push(r),o}function Ut(e,t){let n=e==="add"?"Added tags to":"Removed tags from";return t.map(o=>{let r=o.tags.length>0?o.tags.join(", "):"(none)",i=o.changed?"":" (unchanged)";return`${n} ${f.bold(o.name)}: ${r}${i}`}).join(`
18
+ `)}function qt(e){return JSON.stringify(e,null,2)}async function Ge(e){let t=[],n=(i,a)=>`${b()?f.bold(i+":"):i+":"} ${a}`;t.push(n("Name",e.name)),t.push(n("Version",e.version)),t.push(n("Creator",e.creator||"\u2014")),t.push(n("License",e.license||"\u2014")),e.compatibility&&t.push(n("Compatibility",e.compatibility)),e.effort&&t.push(n("Effort",j(e.effort))),t.push(n("Invocable",D(e.modelInvocable,e.userInvocable))),t.push(n("Tool",e.providerLabel)),t.push(n("Scope",e.scope)),t.push(n("Location",e.location)),t.push(n("Path",L(e.path))),t.push(n("Type",e.isSymlink?"symlink":"directory")),e.isSymlink&&e.symlinkTarget&&t.push(n("Symlink Target",e.symlinkTarget));let o=e.fileCount??await ve(e.path);if(t.push(n("File Count",String(o))),typeof e.tokenCount=="number"&&t.push(n("Est. Tokens",z(e.tokenCount))),e.description&&(t.push(""),t.push(n("Description",e.description))),e.allowedTools&&e.allowedTools.length>0){t.push(""),t.push(b()?f.bold("Allowed Tools:"):"Allowed Tools:"),t.push(` ${Z(e.allowedTools)}`);let i=Se(e.allowedTools);i&&t.push(` ${b()?f.yellow("\u26A0"):"!"} ${i}`)}t.push(""),t.push(b()?f.bold("Eval Score:"):"Eval Score:");let r=Be(e);if(r.length>0){let i=r.length>1;for(let a of r){let l=ke(a.overallScore),c=a.providerId?`${a.providerId}@${a.providerVersion??"?"}`:"quality";i?t.push(` ${c}: ${l} / 100 (${a.grade})`):t.push(` Overall: ${l} / 100 (${a.grade})`);let p=a.evaluatedVersion?` \u2014 version ${a.evaluatedVersion}`:"";if(t.push(` ${b()?f.dim("Evaluated:"):"Evaluated:"} ${a.evaluatedAt}${p}`),a.categories.length>0){i?t.push(b()?f.dim(` Categories (${c}):`):` Categories (${c}):`):t.push(b()?f.dim(" Categories:"):" Categories:");for(let d of a.categories)t.push(` ${d.name.padEnd(28)} ${d.score}/${d.max}`)}}}else t.push(b()?f.dim(" Not available \u2014 run `asm eval "+e.path+"` to generate one."):" Not available \u2014 run `asm eval "+e.path+"` to generate one.");if(e.warnings&&e.warnings.length>0){t.push(""),t.push(b()?f.bold("Warnings:"):"Warnings:");for(let i of e.warnings)t.push(` ${b()?f.yellow("!"):"!"} [${i.category}] ${i.message}`)}return t.join(`
19
+ `)}function ke(e){let t=String(e);return b()?e>=90?f.green(t):e>=80?f.cyan(t):e>=65?f.yellow(t):f.red(t):t}function Be(e){return e.evalSummaries&&Object.keys(e.evalSummaries).length>0?Object.values(e.evalSummaries).sort((n,o)=>{let r=n.providerId??"quality",i=o.providerId??"quality";return r==="quality"&&i!=="quality"?-1:i==="quality"&&r!=="quality"?1:r.localeCompare(i)}):e.evalSummary?[e.evalSummary]:[]}async function Jt(e){if(e.length===0)return"No skills found.";if(e.length===1)return Ge(e[0]);let t=[],n=(d,s)=>`${b()?f.bold(d+":"):d+":"} ${s}`,o=e[0],r=o.name;t.push(""),t.push(b()?f.blueBold(` ${r}`):` ${r}`),t.push(b()?f.dim(" "+"-".repeat(r.length+2)):" "+"-".repeat(r.length+2)),t.push(""),t.push(n(" Version",o.version)),t.push(n(" Creator",o.creator||"\u2014")),t.push(n(" License",o.license||"\u2014")),o.compatibility&&t.push(n(" Compatibility",o.compatibility)),o.effort&&t.push(n(" Effort",j(o.effort))),t.push(n(" Invocable",D(o.modelInvocable,o.userInvocable)));let i=o.fileCount??await ve(o.path);t.push(n(" File Count",String(i))),typeof o.tokenCount=="number"&&t.push(n(" Est. Tokens",z(o.tokenCount)));let a=e.map(d=>K(d.provider,d.providerLabel)).join(" ");t.push(n(" Installed in",a)),t.push(""),t.push(b()?f.bold(" Eval Score:"):" Eval Score:");let l=Be(o);if(l.length>0){let d=l.length>1;for(let s of l){let m=ke(s.overallScore),u=s.providerId?`${s.providerId}@${s.providerVersion??"?"}`:"quality";d?t.push(` ${u}: ${m} / 100 (${s.grade})`):t.push(` Overall: ${m} / 100 (${s.grade})`);let g=s.evaluatedVersion?` \u2014 version ${s.evaluatedVersion}`:"";if(t.push(` ${b()?f.dim("Evaluated:"):"Evaluated:"} ${s.evaluatedAt}${g}`),s.categories.length>0)for(let h of s.categories)t.push(` ${h.name.padEnd(28)} ${h.score}/${h.max}`)}}else t.push(b()?f.dim(` Not available \u2014 run \`asm eval ${o.path}\` to generate one.`):` Not available \u2014 run \`asm eval ${o.path}\` to generate one.`);if(o.description){t.push(""),t.push(b()?f.bold(" Description:"):" Description:");let d=ee(o.description,72);for(let s of d)t.push(" "+s)}if(o.allowedTools&&o.allowedTools.length>0){t.push(""),t.push(b()?f.bold(" Allowed Tools:"):" Allowed Tools:"),t.push(` ${Z(o.allowedTools)}`);let d=Se(o.allowedTools);d&&t.push(` ${b()?f.yellow("\u26A0"):"!"} ${d}`)}t.push("");let c=` Installations (${e.length})`;t.push(b()?f.bold(c):c);for(let d=0;d<e.length;d++){let s=e[d],m=W(s.provider,s.providerLabel),u=s.isSymlink?"symlink":"directory",g=f.dim(s.scope);t.push(` ${m} (${g}, ${u})`),t.push(` ${f.dim("Path:")} ${L(s.path)}`),s.isSymlink&&s.symlinkTarget&&t.push(` ${f.dim("Target:")} ${s.symlinkTarget}`)}let p=e.flatMap(d=>!d.warnings||d.warnings.length===0?[]:d.warnings.map(s=>({...s,provider:d.providerLabel})));if(p.length>0){t.push("");let d=` Warnings (${p.length})`;t.push(b()?f.bold(d):d);for(let s of p){let m=b()?f.yellow("!"):"!";t.push(` ${m} [${s.category}] ${s.message}`)}}return t.push(""),t.join(`
20
+ `)}function te(e){return e.toLowerCase().replace(/[_\s]+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Zt(e,t){let n=e.split("."),o=t.split("."),r=Math.max(n.length,o.length);for(let i=0;i<r;i++){let a=n[i]??"",l=o[i]??"";if(a===l)continue;if(a==="")return-1;if(l==="")return 1;let c=/^\d+$/.test(a)?Number.parseInt(a,10):null,p=/^\d+$/.test(l)?Number.parseInt(l,10):null;if(c!==null&&p!==null&&c!==p)return c-p;if(c===null||p===null){let d=a.localeCompare(l);if(d!==0)return d}}return 0}function ze(e){let t=new Set;for(let n of e){let o=(n.version??"").trim();o&&t.add(o)}return[...t].sort(Zt)}function we(e){return ze(e).length>=2}function en(e){let t=e.split(`
21
+ `);if(t.length===0||t[0].trim()!=="---")return e;for(let n=1;n<t.length;n++)if(t[n].trim()==="---")return t.slice(n+1).join(`
22
+ `);return e}function tn(e){let t=e._skillMdContent;return t===void 0?null:Yt("sha256").update(en(t)).digest("hex")}async function ao(e){if(e._skillMdContent===void 0)try{let t=await Xt(Qt(e.path,"SKILL.md"),"utf-8");X(e,t)}catch{}}function Ve(e){if(!(e.length<2||e.some(t=>t===null)))return new Set(e).size===1?"identical":"diverged"}function lo(e){let t=[],n=new Set,o=new Map,r=[];for(let s of e){let m=o.get(s.realPath);if(m){if(s.isSymlink)continue;(m.isSymlink||s.scope==="global"&&m.scope!=="global")&&(r[r.indexOf(m)]=s,o.set(s.realPath,s))}else o.set(s.realPath,s),r.push(s)}let i=new Map(r.map(s=>[s,tn(s)])),a=new Map;for(let s of r){let m=te(s.dirName),u=a.get(m)??{key:s.dirName,variants:new Set,members:[]};u.variants.add(s.dirName),u.members.push(s),a.set(m,u)}for(let s of a.values())if(new Set(s.members.map(u=>u.location)).size>=2){let u=Ve(s.members.map(g=>i.get(g)??null));t.push({key:s.key,reason:"same-dirName",instances:s.members,versionDivergence:we(s.members),...u?{contentClass:u}:{},...s.variants.size>1?{variants:[...s.variants]}:{}});for(let g of s.members)n.add(g.path)}let l=new Map;for(let s of r){if(!s.name)continue;let m=te(s.name),u=l.get(m)??{key:s.name,variants:new Set,members:[]};u.variants.add(s.name),u.members.push(s),l.set(m,u)}for(let s of l.values()){let m=s.members;if(new Set(m.map(S=>S.dirName)).size<2)continue;let g=m.filter(S=>!n.has(S.path));if(g.length<2||new Set(g.map(S=>S.dirName)).size<2)continue;let v=new Set(g.map(S=>S.name)),y=Ve(g.map(S=>i.get(S)??null));t.push({key:s.key,reason:"same-frontmatterName",instances:g,versionDivergence:we(g),...y?{contentClass:y}:{},...v.size>1?{variants:[...v]}:{}});for(let S of g)n.add(S.path)}let c=new Map;for(let s of r){if(n.has(s.path))continue;let m=i.get(s);if(!m)continue;let u=c.get(m)??[];u.push(s),c.set(m,u)}for(let s of c.values())s.length<2||new Set(s.map(m=>m.dirName)).size<2||t.push({key:s[0].dirName,reason:"same-content",instances:s,versionDivergence:we(s),contentClass:"identical"});let p={"same-dirName":0,"same-frontmatterName":1,"same-content":2};t.sort((s,m)=>s.reason!==m.reason?p[s.reason]-p[m.reason]:te(s.key).localeCompare(te(m.key))||s.key.localeCompare(m.key));let d=t.reduce((s,m)=>s+m.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:e.length,duplicateGroups:t,totalDuplicateInstances:d}}function nn(e){return[...e].sort((t,n)=>{if(t.scope!==n.scope)return t.scope==="global"?-1:1;let o=t.providerLabel.localeCompare(n.providerLabel);return o!==0?o:t.path.localeCompare(n.path)})}function on(e){return e==="same-dirName"?"same dirName":e==="same-content"?"identical content":"same name"}function co(e){if(e.duplicateGroups.length===0)return f.green("No duplicate skills found.");let t=[];t.push(""),t.push(f.bold(` Found ${e.duplicateGroups.length} duplicate group(s) (${e.totalDuplicateInstances} total instances):`)),t.push("");for(let n of e.duplicateGroups){if(t.push(` ${f.yellow(`"${n.key}"`)} ${f.dim(`(${on(n.reason)})`)}`),n.variants&&n.variants.length>1){let r=n.variants.map(i=>`"${i}"`).join(", ");t.push(f.dim(` variants: ${r}`))}if(n.contentClass==="identical"?t.push(f.green(" \u2713 identical copies")):n.contentClass==="diverged"&&(t.push(f.yellow(" \u26A0 diverged copies")),t.push(f.dim(" auto-remove skips copies that differ unless you pass --force"))),n.versionDivergence){let r=ze(n.instances).slice().reverse();t.push(f.red(` \u26A0 versions differ: ${r.map(i=>`v${i}`).join(", ")} \u2014 possible upgrade/shadow, not identical copies`))}let o=nn(n.instances);for(let r=0;r<o.length;r++){let i=o[r],a=W(i.provider,i.providerLabel),l=r===0?f.green(" [keep]"):f.dim(" "),c=f.dim(`(${i.scope})`),p=(i.version??"").trim(),d=p?f.dim(` (v${p})`):"";t.push(` ${l} ${a} ${c}${d} ${f.dim(L(i.path))}`)}t.push("")}return t.push(f.dim(` Run ${f.bold("asm audit -y")} to auto-remove duplicates`)),t.push(""),t.join(`
23
+ `)}function uo(e){return JSON.stringify(e,null,2)}function fo(e){let t=e.trim();if(!t)return["vi",[]];let n=[],o="",r=!1,i=0;for(;i<t.length;){let a=t[i];if(a==='"'){for(r=!0,i++;i<t.length&&t[i]!=='"';){if(t[i]==="\\"&&i+1<t.length){let l=t[i+1];if(l==='"'||l==="\\"){o+=l,i+=2;continue}}o+=t[i],i++}i++}else if(a==="'"){for(r=!0,i++;i<t.length&&t[i]!=="'";)o+=t[i],i++;i++}else a===" "||a===" "?((o.length>0||r)&&(n.push(o),o="",r=!1),i++):(o+=a,i++)}return(o.length>0||r)&&n.push(o),n.length===0?["vi",[]]:[n[0],n.slice(1)]}import{readFileSync as rn}from"fs";import{resolve as sn,dirname as an}from"path";import{fileURLToPath as ln}from"url";import{spawnSync as cn}from"child_process";var un=an(ln(import.meta.url)),He="2.18.0";try{let e=rn(sn(un,"../../package.json"),"utf-8");He=JSON.parse(e).version}catch{}var M,pn=He;function fn(){if(M!==void 0)return M;let e="d90bb02";if(e!==void 0)return M=e,M;M="unknown";try{M=cn("git",["rev-parse","--short","HEAD"],{encoding:"utf-8",stdio:["pipe","pipe","ignore"],timeout:5e3}).stdout?.trim()||M}catch{}return M}function $o(){return`v${pn} (${fn()})`}export{q as a,z as b,gn as c,hn as d,le as e,ce as f,ue as g,pe as h,nt as i,ot as j,fe as k,de as l,D as m,dn as n,f as o,j as p,W as q,L as r,_t as s,Ot as t,Wt as u,_e as v,Gt as w,Bt as x,Vt as y,Ht as z,Kt as A,ye as B,Oe as C,ee as D,Ut as E,qt as F,ve as G,Pn as H,Cn as I,En as J,Jt as K,pn as L,$o as M,be as N,Mn as O,Pt as P,Ct as Q,Rn as R,Ft as S,Wn as T,Gn as U,Bn as V,Vn as W,te as X,tn as Y,ao as Z,lo as _,nn as $,on as aa,co as ba,uo as ca,fo as da};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
+ async function g(r,i={}){if(r.length===0)throw new Error("runCommand requires a non-empty argv");let{spawn:a}=await import("child_process"),[u,...c]=r;return new Promise((s,m)=>{let e=a(u,c,{cwd:i.cwd,stdio:["ignore","pipe","pipe"]}),o="",d="",n=!1;e.stdout?.on("data",t=>{o+=t.toString()}),e.stderr?.on("data",t=>{d+=t.toString()}),e.on("error",t=>{if(n)return;if(n=!0,t.code==="ENOENT"){s({exitCode:127,stdout:o,stderr:t.message});return}m(t)}),e.on("close",t=>{n||(n=!0,s({exitCode:t??-1,stdout:o,stderr:d}))})})}export{g as a};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
- import{readFile as k,writeFile as w,mkdir as S,copyFile as y}from"fs/promises";import{join as t,resolve as p,dirname as A}from"path";import{fileURLToPath as I}from"url";import{homedir as x}from"os";var b=!1,m=0;function N(e){b=e,e&&(m=performance.now())}function s(e){if(!b)return;let r=Math.round(performance.now()-m),n=globalThis.__CLI_NO_COLOR?`[verbose] +${r}ms`:`\x1B[2m[verbose] +${r}ms\x1B[0m`;console.error(`${n} ${e}`)}var _=I(import.meta.url),v=A(_);function i(){let e=process.env.ASM_CONFIG_DIR;return e||t(x(),".config","agent-skill-manager")}var R=[{name:"claude",label:"Claude Code",global:"~/.claude/skills",project:".claude/skills",enabled:!0},{name:"codex",label:"Codex",global:"~/.codex/skills",project:".codex/skills",enabled:!0},{name:"opencode",label:"OpenCode",global:"~/.config/opencode/skills",project:".opencode/skills",enabled:!0},{name:"pi",label:"Pi",global:"~/.pi/skills",project:".pi/skills",enabled:!0},{name:"hermes",label:"Hermes",global:"~/.hermes/skills",project:".hermes/skills",enabled:!0},{name:"openclaw",label:"OpenClaw",global:"~/.openclaw/skills",project:".openclaw/skills",enabled:!0},{name:"agents",label:"Agents",global:"~/.agents/skills",project:".agents/skills",enabled:!0},{name:"cursor",label:"Cursor",global:"~/.cursor/rules",project:".cursor/rules",enabled:!0},{name:"copilot",label:"GitHub Copilot",global:"~/.github/instructions",project:".github/instructions",enabled:!0},{name:"windsurf",label:"Windsurf",global:"~/.windsurf/rules",project:".windsurf/rules",enabled:!0},{name:"antigravity",label:"Google Antigravity",global:"~/.antigravity/skills",project:".antigravity/skills",enabled:!0},{name:"gemini",label:"Gemini CLI",global:"~/.gemini/skills",project:".gemini/skills",enabled:!0},{name:"cline",label:"Cline",global:"~/Documents/Cline/Rules",project:".clinerules",enabled:!0},{name:"roocode",label:"Roo Code",global:"~/.roo/rules",project:".roo/rules",enabled:!0},{name:"continue",label:"Continue",global:"~/.continue/rules",project:".continue/rules",enabled:!0},{name:"aider",label:"Aider",global:"~/.aider/skills",project:".aider/skills",enabled:!0},{name:"zed",label:"Zed",global:"~/.config/zed/prompt_overrides",project:".zed/rules",enabled:!0},{name:"augment",label:"Augment",global:"~/.augment/rules",project:".augment/rules",enabled:!0},{name:"amp",label:"Amp",global:"~/.amp/skills",project:".amp/skills",enabled:!0}];function u(){return{version:1,providers:R.map(e=>({...e})),customPaths:[],preferences:{defaultScope:"both",defaultSort:"name"}}}function h(){return t(i(),"config.json")}function z(){return t(i(),".skill-lock.json")}function J(){return t(i(),"skill-state.json")}function U(){return t(i(),"skill-index")}function C(){return t(i(),"library")}function V(){return t(C(),"skills")}function B(){return t(C(),"library-lock.json")}function H(){return p(v,"..","data","skill-index")}function D(){return p(v,"..","data","skill-index-resources.json")}async function M(){let e=D(),r=await k(e,"utf-8");return JSON.parse(r)}function Z(e){return e.startsWith("~/")?t(x(),e.slice(2)):e.startsWith("/")?e:p(e)}function O(e){let r=u(),o=e.providers||[],n=new Set(o.map(l=>l.name));for(let l=0;l<r.providers.length;l++){let a=r.providers[l];if(n.has(a.name))continue;let g=o.length;for(let c=l-1;c>=0;c--){let j=r.providers[c].name,f=o.findIndex(P=>P.name===j);if(f!==-1){g=f+1;break}}o.splice(g,0,{...a}),n.add(a.name)}return{version:e.version??r.version,providers:o,customPaths:e.customPaths??[],preferences:{defaultScope:e.preferences?.defaultScope??r.preferences.defaultScope,defaultSort:e.preferences?.defaultSort??r.preferences.defaultSort,selectedTools:e.preferences?.selectedTools}}}async function L(){let e=h();s(`config: checking ${e}`);let r;try{r=await k(e,"utf-8")}catch(o){if(o?.code==="ENOENT"){s("config: using defaults (file not found)");let n=u();return await d(n),n}throw o}try{let o=JSON.parse(r);return s(`config: loaded from ${e}`),O(o)}catch{let o=e+".bak";s(`config: parse error, backing up to ${o}`),await y(e,o),console.error(`Warning: Config file was corrupted. Backup saved to ${o}. Using defaults.`);let n=u();return await d(n),n}}async function d(e){let r=h();await S(i(),{recursive:!0}),await w(r,JSON.stringify(e,null,2)+`
3
- `,"utf-8")}async function q(e){let r=await L();r.preferences.selectedTools=e,await d(r)}export{N as a,s as b,i as c,u as d,h as e,z as f,J as g,U as h,C as i,V as j,B as k,H as l,D as m,M as n,Z as o,L as p,d as q,q as r};
2
+ import{readFile as k,writeFile as w,mkdir as S,copyFile as y}from"fs/promises";import{join as t,resolve as p,dirname as A}from"path";import{fileURLToPath as I}from"url";import{homedir as x}from"os";var b=!1,m=0;function N(e){b=e,e&&(m=performance.now())}function s(e){if(!b)return;let r=Math.round(performance.now()-m),n=globalThis.__CLI_NO_COLOR?`[verbose] +${r}ms`:`\x1B[2m[verbose] +${r}ms\x1B[0m`;console.error(`${n} ${e}`)}var _=I(import.meta.url),v=A(_);function l(){let e=process.env.ASM_CONFIG_DIR;return e||t(x(),".config","agent-skill-manager")}var R=[{name:"claude",label:"Claude Code",global:"~/.claude/skills",project:".claude/skills",enabled:!0},{name:"codex",label:"Codex",global:"~/.codex/skills",project:".codex/skills",enabled:!0},{name:"opencode",label:"OpenCode",global:"~/.config/opencode/skills",project:".opencode/skills",enabled:!0},{name:"pi",label:"Pi",global:"~/.pi/skills",project:".pi/skills",enabled:!0},{name:"hermes",label:"Hermes",global:"~/.hermes/skills",project:".hermes/skills",enabled:!0},{name:"openclaw",label:"OpenClaw",global:"~/.openclaw/skills",project:".openclaw/skills",enabled:!0},{name:"agents",label:"Agents",global:"~/.agents/skills",project:".agents/skills",enabled:!0},{name:"cursor",label:"Cursor",global:"~/.cursor/rules",project:".cursor/rules",enabled:!0},{name:"copilot",label:"GitHub Copilot",global:"~/.github/instructions",project:".github/instructions",enabled:!0},{name:"windsurf",label:"Windsurf",global:"~/.windsurf/rules",project:".windsurf/rules",enabled:!0},{name:"antigravity",label:"Google Antigravity",global:"~/.antigravity/skills",project:".antigravity/skills",enabled:!0},{name:"gemini",label:"Gemini CLI",global:"~/.gemini/skills",project:".gemini/skills",enabled:!0},{name:"cline",label:"Cline",global:"~/Documents/Cline/Rules",project:".clinerules",enabled:!0},{name:"roocode",label:"Roo Code",global:"~/.roo/rules",project:".roo/rules",enabled:!0},{name:"continue",label:"Continue",global:"~/.continue/rules",project:".continue/rules",enabled:!0},{name:"aider",label:"Aider",global:"~/.aider/skills",project:".aider/skills",enabled:!0},{name:"zed",label:"Zed",global:"~/.config/zed/prompt_overrides",project:".zed/rules",enabled:!0},{name:"augment",label:"Augment",global:"~/.augment/rules",project:".augment/rules",enabled:!0},{name:"amp",label:"Amp",global:"~/.amp/skills",project:".amp/skills",enabled:!0}];function u(){return{version:1,providers:R.map(e=>({...e})),customPaths:[],preferences:{defaultScope:"both",defaultSort:"name"}}}function h(){return t(l(),"config.json")}function z(){return t(l(),".skill-lock.json")}function J(){return t(l(),"skill-state.json")}function U(){return t(l(),"skill-tags.json")}function V(){return t(l(),"skill-index")}function C(){return t(l(),"library")}function B(){return t(C(),"skills")}function H(){return t(C(),"library-lock.json")}function M(){return p(v,"..","data","skill-index")}function D(){return p(v,"..","data","skill-index-resources.json")}async function Z(){let e=D(),r=await k(e,"utf-8");return JSON.parse(r)}function q(e){return e.startsWith("~/")?t(x(),e.slice(2)):e.startsWith("/")?e:p(e)}function O(e){let r=u(),o=e.providers||[],n=new Set(o.map(i=>i.name));for(let i=0;i<r.providers.length;i++){let a=r.providers[i];if(n.has(a.name))continue;let g=o.length;for(let c=i-1;c>=0;c--){let j=r.providers[c].name,f=o.findIndex(P=>P.name===j);if(f!==-1){g=f+1;break}}o.splice(g,0,{...a}),n.add(a.name)}return{version:e.version??r.version,providers:o,customPaths:e.customPaths??[],preferences:{defaultScope:e.preferences?.defaultScope??r.preferences.defaultScope,defaultSort:e.preferences?.defaultSort??r.preferences.defaultSort,selectedTools:e.preferences?.selectedTools}}}async function L(){let e=h();s(`config: checking ${e}`);let r;try{r=await k(e,"utf-8")}catch(o){if(o?.code==="ENOENT"){s("config: using defaults (file not found)");let n=u();return await d(n),n}throw o}try{let o=JSON.parse(r);return s(`config: loaded from ${e}`),O(o)}catch{let o=e+".bak";s(`config: parse error, backing up to ${o}`),await y(e,o),console.error(`Warning: Config file was corrupted. Backup saved to ${o}. Using defaults.`);let n=u();return await d(n),n}}async function d(e){let r=h();await S(l(),{recursive:!0}),await w(r,JSON.stringify(e,null,2)+`
3
+ `,"utf-8")}async function K(e){let r=await L();r.preferences.selectedTools=e,await d(r)}export{N as a,s as b,l as c,u as d,h as e,z as f,J as g,U as h,V as i,C as j,B as k,H as l,M as m,D as n,Z as o,q as p,L as q,d as r,K as s};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
- import{b as i,f as l}from"./chunk-LS24FFOX.js";import{readFile as b,copyFile as S}from"fs/promises";import{execFile as N}from"child_process";import{promisify as A}from"util";import{mkdir as g,open as f,rename as P,rm as E}from"fs/promises";import{randomUUID as v}from"crypto";import{basename as L,dirname as F,join as $,resolve as m}from"path";var c=new Map,x=new Set(["EINVAL","ENOSYS","ENOTSUP","EOPNOTSUPP"]);function y(e){let r=e?.code;return typeof r=="string"&&x.has(r)||process.platform==="win32"&&(r==="EISDIR"||r==="EPERM")}var u=class extends Error{constructor(t,n){let o=n instanceof Error?n.message:String(n);super(`Atomic write to ${t} was renamed into place, but parent-directory durability could not be confirmed: ${o}`);this.path=t;this.cause=n;this.name="AtomicWritePostRenameError"}path;cause;committed=!0};async function T(e){let r;try{r=await f(e,"r")}catch(o){if(y(o))return;throw o}let t=!1,n;try{await r.sync()}catch(o){y(o)||(t=!0,n=o)}try{await r.close()}catch(o){if(!t)throw o}if(t)throw n}async function p(e,r){let t=m(e),o=(c.get(t)??Promise.resolve()).then(r,r),s=o.then(()=>{},()=>{});c.set(t,s);try{return await o}finally{c.get(t)===s&&c.delete(t)}}async function w(e,r){let t=m(e),n=F(t),o=$(n,`.${L(t)}.${process.pid}.${Date.now()}.${v()}.tmp`);await g(n,{recursive:!0});let s=null;try{s=await f(o,"wx"),await s.writeFile(r,"utf-8"),await s.sync(),await s.close(),s=null,await P(o,t)}catch(a){if(s)try{await s.close()}catch{}try{await E(o,{force:!0})}catch{}throw a}try{await T(n)}catch(a){throw new u(t,a)}}var D=A(N);function k(){return{version:1,skills:{}}}async function V(){return h(l())}async function W(e,r){await d(t=>(t.skills[e]=r,{changed:!0})),i(`lock: wrote entry for "${e}"`)}async function Y(e){if(!await d(t=>e in t.skills?(delete t.skills[e],{changed:!0,result:!0}):{changed:!1,result:!1})){i(`lock: no entry for "${e}", nothing to remove`);return}i(`lock: removed entry for "${e}"`)}async function _(e,r){let t=await d(n=>{let o=n.skills[e];return o?o.provider===r?{changed:!1,result:"unchanged"}:(n.skills[e]={...o,provider:r},{changed:!0,result:"updated"}):{changed:!1,result:"missing"}});if(t==="missing"){i(`lock: no entry for "${e}", cannot update provider`);return}if(t==="unchanged"){i(`lock: entry for "${e}" already points at "${r}"`);return}i(`lock: updated provider for "${e}" -> "${r}"`)}async function h(e){let r;try{r=await b(e,"utf-8")}catch(t){if(t?.code==="ENOENT")return i("lock: file not found, returning empty lock"),k();throw t}try{let t=JSON.parse(r);if(t.version!==1||typeof t.skills!="object"||t.skills===null)throw new Error("invalid schema");return i(`lock: loaded ${Object.keys(t.skills).length} entries`),t}catch{let t=e+".bak";i(`lock: parse error, backing up to ${t}`);try{await S(e,t)}catch{}return console.error(`Warning: .skill-lock.json was corrupted. Backup saved to ${t}. Starting fresh.`),k()}}async function d(e){let r=l();return p(r,async()=>{let t=await h(r),{changed:n,result:o}=await e(t);return n&&await O(t,r),o})}async function O(e,r){await w(r,JSON.stringify(e,null,2)+`
2
+ import{b as i,f as l}from"./chunk-VGQYV246.js";import{readFile as b,copyFile as S}from"fs/promises";import{execFile as N}from"child_process";import{promisify as A}from"util";import{mkdir as g,open as f,rename as P,rm as E}from"fs/promises";import{randomUUID as v}from"crypto";import{basename as L,dirname as F,join as $,resolve as m}from"path";var c=new Map,x=new Set(["EINVAL","ENOSYS","ENOTSUP","EOPNOTSUPP"]);function y(e){let r=e?.code;return typeof r=="string"&&x.has(r)||process.platform==="win32"&&(r==="EISDIR"||r==="EPERM")}var u=class extends Error{constructor(t,n){let o=n instanceof Error?n.message:String(n);super(`Atomic write to ${t} was renamed into place, but parent-directory durability could not be confirmed: ${o}`);this.path=t;this.cause=n;this.name="AtomicWritePostRenameError"}path;cause;committed=!0};async function T(e){let r;try{r=await f(e,"r")}catch(o){if(y(o))return;throw o}let t=!1,n;try{await r.sync()}catch(o){y(o)||(t=!0,n=o)}try{await r.close()}catch(o){if(!t)throw o}if(t)throw n}async function p(e,r){let t=m(e),o=(c.get(t)??Promise.resolve()).then(r,r),s=o.then(()=>{},()=>{});c.set(t,s);try{return await o}finally{c.get(t)===s&&c.delete(t)}}async function w(e,r){let t=m(e),n=F(t),o=$(n,`.${L(t)}.${process.pid}.${Date.now()}.${v()}.tmp`);await g(n,{recursive:!0});let s=null;try{s=await f(o,"wx"),await s.writeFile(r,"utf-8"),await s.sync(),await s.close(),s=null,await P(o,t)}catch(a){if(s)try{await s.close()}catch{}try{await E(o,{force:!0})}catch{}throw a}try{await T(n)}catch(a){throw new u(t,a)}}var D=A(N);function k(){return{version:1,skills:{}}}async function V(){return h(l())}async function W(e,r){await d(t=>(t.skills[e]=r,{changed:!0})),i(`lock: wrote entry for "${e}"`)}async function Y(e){if(!await d(t=>e in t.skills?(delete t.skills[e],{changed:!0,result:!0}):{changed:!1,result:!1})){i(`lock: no entry for "${e}", nothing to remove`);return}i(`lock: removed entry for "${e}"`)}async function _(e,r){let t=await d(n=>{let o=n.skills[e];return o?o.provider===r?{changed:!1,result:"unchanged"}:(n.skills[e]={...o,provider:r},{changed:!0,result:"updated"}):{changed:!1,result:"missing"}});if(t==="missing"){i(`lock: no entry for "${e}", cannot update provider`);return}if(t==="unchanged"){i(`lock: entry for "${e}" already points at "${r}"`);return}i(`lock: updated provider for "${e}" -> "${r}"`)}async function h(e){let r;try{r=await b(e,"utf-8")}catch(t){if(t?.code==="ENOENT")return i("lock: file not found, returning empty lock"),k();throw t}try{let t=JSON.parse(r);if(t.version!==1||typeof t.skills!="object"||t.skills===null)throw new Error("invalid schema");return i(`lock: loaded ${Object.keys(t.skills).length} entries`),t}catch{let t=e+".bak";i(`lock: parse error, backing up to ${t}`);try{await S(e,t)}catch{}return console.error(`Warning: .skill-lock.json was corrupted. Backup saved to ${t}. Starting fresh.`),k()}}async function d(e){let r=l();return p(r,async()=>{let t=await h(r),{changed:n,result:o}=await e(t);return n&&await O(t,r),o})}async function O(e,r){await w(r,JSON.stringify(e,null,2)+`
3
3
  `)}async function q(e){try{let{stdout:r}=await D("git",["rev-parse","HEAD"],{cwd:e,timeout:5e3});return r.trim()||null}catch{return i("lock: could not read commit hash from cloned repo"),null}}export{u as a,p as b,w as c,V as d,W as e,Y as f,_ as g,q as h};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
+ import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k,n as l,o as m,p as n,q as o,r as p,s as q}from"./chunk-VGQYV246.js";import"./chunk-RSVWCEZR.js";export{k as getBundledIndexDir,a as getConfigDir,c as getConfigPath,b as getDefaultConfig,g as getIndexDir,h as getLibraryDir,j as getLibraryLockPath,i as getLibrarySkillsDir,d as getLockPath,l as getSkillIndexResourcesPath,e as getSkillStatePath,f as getSkillTagsPath,o as loadConfig,m as loadSkillIndexResources,n as resolveProviderPath,p as saveConfig,q as saveSelectedTools};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
- import{d as a,e as b,f as c,g as d,h as e}from"./chunk-LH2C3PE7.js";import"./chunk-LS24FFOX.js";import"./chunk-RSVWCEZR.js";export{e as getCommitHash,a as readLock,c as removeLockEntry,d as setLockEntryProvider,b as writeLockEntry};
2
+ import{d as a,e as b,f as c,g as d,h as e}from"./chunk-ZAOVB3X2.js";import"./chunk-VGQYV246.js";import"./chunk-RSVWCEZR.js";export{e as getCommitHash,a as readLock,c as removeLockEntry,d as setLockEntryProvider,b as writeLockEntry};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __asmCreateRequire } from 'node:module'; const require = __asmCreateRequire(import.meta.url);
2
+ import{a}from"./chunk-ESKBKSXS.js";import"./chunk-RSVWCEZR.js";export{a as runCommand};