agent-skill-manager 2.1.0 → 2.2.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.
- package/README.md +1 -1
- package/data/skill-index/Affitor_affiliate-skills.json +2757 -54
- package/data/skill-index/Eronred_aso-skills.json +1561 -31
- package/data/skill-index/GPTomics_bioSkills.json +22829 -440
- package/data/skill-index/Galaxy-Dawn_claude-scholar.json +2497 -49
- package/data/skill-index/Imbad0202_academic-research-skills.json +209 -5
- package/data/skill-index/K-Dense-AI_claude-scientific-skills.json +6969 -135
- package/data/skill-index/Leonxlnx_taste-skill.json +417 -9
- package/data/skill-index/Master-cai_Research-Paper-Writing-Skills.json +53 -2
- package/data/skill-index/MiniMax-AI_skills.json +1197 -24
- package/data/skill-index/affaan-m_everything-claude-code.json +23869 -460
- package/data/skill-index/alirezarezvani_claude-skills.json +26417 -509
- package/data/skill-index/anthropics_skills.json +937 -19
- package/data/skill-index/bytedance_deer-flow.json +1145 -23
- package/data/skill-index/coreyhaines31_marketingskills.json +1873 -37
- package/data/skill-index/github_awesome-copilot.json +22933 -442
- package/data/skill-index/heygen-com_hyperframes.json +261 -6
- package/data/skill-index/himself65_finance-skills.json +1093 -22
- package/data/skill-index/kemiljk_fluid-design.json +53 -2
- package/data/skill-index/kepano_obsidian-skills.json +261 -6
- package/data/skill-index/luongnv89_skills.json +1873 -37
- package/data/skill-index/mattpocock_skills.json +1093 -22
- package/data/skill-index/nextlevelbuilder_ui-ux-pro-max-skill.json +365 -8
- package/data/skill-index/obra_superpowers.json +729 -15
- package/data/skill-index/sickn33_antigravity-awesome-skills.json +230777 -4439
- package/data/skill-index/slavingia_skills.json +521 -11
- package/dist/agent-skill-manager.js +161 -161
- package/dist/chunk-796ss41d.js +15 -0
- package/dist/{chunk-1becp2v6.js → chunk-d61nf7gg.js} +1 -1
- package/dist/{chunk-a26gjzjk.js → chunk-vgzgtfy6.js} +1 -1
- package/dist/{chunk-x537ndd4.js → chunk-y89teqgt.js} +43 -42
- package/package.json +1 -1
- package/dist/chunk-6mbpytcj.js +0 -15
package/package.json
CHANGED
package/dist/chunk-6mbpytcj.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{O as T,U as D}from"./chunk-a26gjzjk.js";import{readdir as M,stat as W,lstat as zz,readlink as Fz,readFile as f,realpath as t}from"fs/promises";import{join as E,resolve as a,basename as Iz}from"path";import{homedir as g}from"os";function d(z){let Y={},$=z.split(`
|
|
2
|
-
`),Z=!1,J=!1,X=null,L=[],H="none",Q=-1,U=null;function G(){if(X){let O=L.join(" ").trim();if(O)Y[X]=O;X=null,L=[],H="none",Q=-1}}for(let O of $){if(O.trim()==="---")if(!J){J=!0,Z=!0;continue}else{G();break}if(!Z)continue;if(H!=="none"&&X){let A=O.replace(/^\s*/,""),I=O.length-A.length;if(I>0&&A.length>0){if(Q===-1)Q=I;L.push(A);continue}else if(A.length===0)continue;else G()}if(U!==null){let A=O.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(A){let I=A[1],_=A[2].replace(/^["']|["']$/g,"");if(_)Y[`${U}.${I}`]=_;continue}if(O.trim().length>0)U=null;else continue}let j=O.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(j){G();let A=j[1],I=j[2];if(I==="|"||I===">")X=A,L=[],H=I==="|"?"literal":"folded";else if(I==="|+"||I===">+"||I==="|-"||I===">-")X=A,L=[],H=I.startsWith("|")?"literal":"folded";else{let F=I.replace(/^["']|["']$/g,"");if(F)Y[A]=F;else U=A}}}return G(),Y}function n(z){return z["metadata.version"]||z.version||"0.0.0"}function o(z){let Y=z["allowed-tools"]||"";if(!Y.trim())return[];return Y.split(/[\s,]+/).map(($)=>$.trim()).filter(Boolean)}var _z=E(g(),".claude","plugins","marketplaces"),qz=E(g(),".codex","plugins","cache"),Tz=E(g(),".codex","config.toml"),JY=E(g(),".agents","plugins","marketplace.json");function Ez(z,Y){let $=[];for(let Z of z.providers){if(!Z.enabled){T(`scan: skipping disabled provider "${Z.name}"`);continue}if(Y==="global"||Y==="both"){let J=D(Z.global);T(`scan: adding location ${J} (${Z.label}, global)`),$.push({dir:J,location:`global-${Z.name}`,scope:"global",providerName:Z.name,providerLabel:Z.label})}if(Y==="project"||Y==="both"){let J=D(Z.project);T(`scan: adding location ${J} (${Z.label}, project)`),$.push({dir:J,location:`project-${Z.name}`,scope:"project",providerName:Z.name,providerLabel:Z.label})}}for(let Z of z.customPaths)if(Y===Z.scope||Y==="both"){let J=D(Z.path);T(`scan: adding custom location ${J} (${Z.label}, ${Z.scope})`),$.push({dir:J,location:`${Z.scope}-custom`,scope:Z.scope,providerName:"custom",providerLabel:Z.label})}return $}async function i(z){try{return(await M(z,{recursive:!0})).length}catch{return 0}}async function Nz(z){let Y=[];T(`scanning: ${z.dir} (${z.location})`);let $;try{$=await M(z.dir)}catch{return T(`scanning: ${z.dir} — not found, skipping`),Y}for(let Z of $){let J=E(z.dir,Z);try{if(!(await W(J)).isDirectory()){T(` skip: "${Z}" — not a directory`);continue}}catch{T(` skip: "${Z}" — stat failed`);continue}let X=E(J,"SKILL.md"),L;try{L=await f(X,"utf-8")}catch{T(` skip: "${Z}" — no SKILL.md`);continue}let H=d(L),Q=!1,U=null;try{if((await zz(J)).isSymbolicLink())Q=!0,U=await Fz(J)}catch{}let G=a(J),O;try{O=await t(J)}catch{O=G}Y.push({name:H.name||Z,version:n(H),description:(H.description||"").replace(/\s*\n\s*/g," ").trim(),creator:H["metadata.creator"]||"",license:(H.license||"").trim(),compatibility:(H.compatibility||"").trim(),allowedTools:o(H),effort:H.effort||H["metadata.effort"]||void 0,dirName:Z,path:G,originalPath:J,location:z.location,scope:z.scope,provider:z.providerName,providerLabel:z.providerLabel,isSymlink:Q,symlinkTarget:U,realPath:O})}return T(`found ${Y.length} skill(s) in ${z.dir}`),Y}async function Yz(z){let Y=[],$;try{$=await M(z)}catch{return Y}for(let Z of $){let J=E(z,Z),X;try{X=await zz(J)}catch{continue}if(X.isSymbolicLink())continue;if(X.isDirectory()){let L=E(J,"SKILL.md");try{await W(L),Y.push(J)}catch{let H=await Yz(J);Y.push(...H)}}}return Y}async function Rz(z){let Y=z??_z,$=[];T(`scan: checking plugin marketplaces at ${Y}`);let Z;try{Z=await M(Y)}catch{return T("scan: plugin marketplaces dir not found, skipping"),$}for(let J of Z){let X=E(Y,J),L;try{L=await W(X)}catch{continue}if(!L.isDirectory())continue;T(`scan: scanning marketplace "${J}"`);let H=await Yz(X);for(let Q of H){let U=E(Q,"SKILL.md"),G;try{G=await f(U,"utf-8")}catch{continue}let O=d(G),j=Iz(Q),A=a(Q),I;try{I=await t(Q)}catch{I=A}$.push({name:O.name||j,version:n(O),description:(O.description||"").replace(/\s*\n\s*/g," ").trim(),creator:O["metadata.creator"]||"",license:(O.license||"").trim(),compatibility:(O.compatibility||"").trim(),allowedTools:o(O),effort:O.effort||O["metadata.effort"]||void 0,dirName:j,path:A,originalPath:Q,location:`global-plugin-${J}`,scope:"global",provider:"plugin",providerLabel:`Plugin (${J})`,isSymlink:!1,symlinkTarget:null,realPath:I,marketplace:J})}}return T(`scan: found ${$.length} plugin marketplace skill(s)`),$}function Mz(z){let Y=new Map,$=null;for(let Z of z.split(`
|
|
3
|
-
`)){let J=Z.trim(),X=J.match(/^\[plugins\.([^\]]+)\]$/);if(X){$=X[1].trim().replace(/^["']|["']$/g,"");continue}if(J.startsWith("[")){$=null;continue}if($&&J.startsWith("enabled")){let L=J.match(/^enabled\s*=\s*(true|false)/i);if(L)Y.set($,L[1].toLowerCase()==="true")}}return Y}async function Sz(z){let Y=z??Tz;try{let $=await f(Y,"utf-8");return Mz($)}catch{return T(`codex: config.toml not found at ${Y}, skipping enabled check`),new Map}}async function xz(z,Y){let $=z??qz,Z=[];T(`codex: checking plugin cache at ${$}`);let J;try{J=await M($)}catch{return T("codex: plugin cache dir not found, skipping"),Z}let X=await Sz(Y);for(let L of J){let H=E($,L),Q;try{Q=await W(H)}catch{continue}if(!Q.isDirectory())continue;let U;try{U=await M(H)}catch{continue}for(let G of U){let O=E(H,G),j;try{j=await W(O)}catch{continue}if(!j.isDirectory())continue;let A;try{A=await M(O)}catch{continue}let I=(await Promise.all(A.map(async(R)=>{try{return(await W(E(O,R))).isDirectory()?R:null}catch{return null}}))).filter((R)=>R!==null);if(I.length===0)continue;let F=I.sort(Zz).at(-1),_=E(O,F),S=E(_,".codex-plugin","plugin.json"),N;try{let R=await f(S,"utf-8");N=JSON.parse(R)}catch{T(`codex: no valid plugin.json at ${S}, skipping`);continue}let x=a(_),V;try{V=await t(_)}catch{V=x}let q=N.interface?.displayName||N.name||G,y=N.version||F,P=(N.description||"").replace(/\s*\n\s*/g," ").trim(),v=X.has(G)?X.get(G):!0;Z.push({name:q,version:y,description:P,creator:"",license:"",compatibility:"",allowedTools:[],dirName:G,path:x,originalPath:_,location:`global-codex-plugin-${L}`,scope:"global",provider:"codex-plugin",providerLabel:`Codex Plugin (${L})`,isSymlink:!1,symlinkTarget:null,realPath:V,marketplace:L,codexPlugin:{category:N.interface?.category,hasMcpConfig:N.mcp!=null&&Object.keys(N.mcp).length>0,pluginName:G,pluginVersion:F,enabled:v}})}}return T(`codex: found ${Z.length} plugin(s) in cache`),Z}async function XY(z,Y,$,Z){let J=Ez(z,Y),X=Y==="global"||Y==="both",[L,H,Q]=await Promise.all([Promise.all(J.map(Nz)),X?Rz($):Promise.resolve([]),X?xz(Z):Promise.resolve([])]),U=L.flat(),G=new Set(U.map((j)=>j.realPath)),O=new Set(U.map((j)=>j.name.toLowerCase()));for(let j of H)if(!G.has(j.realPath)&&!O.has(j.name.toLowerCase()))U.push(j),G.add(j.realPath),O.add(j.name.toLowerCase());for(let j of Q)if(!G.has(j.realPath)&&!O.has(j.name.toLowerCase()))U.push(j),G.add(j.realPath),O.add(j.name.toLowerCase());return U}function QY(z,Y){if(!Y.trim())return z;let $=Y.toLowerCase();return z.filter((Z)=>Z.name.toLowerCase().includes($)||Z.description.toLowerCase().includes($)||Z.creator.toLowerCase().includes($)||Z.effort&&Z.effort.toLowerCase().includes($)||Z.location.toLowerCase().includes($)||Z.providerLabel.toLowerCase().includes($))}function Zz(z,Y){let $=z.split("."),Z=Y.split("."),J=Math.max($.length,Z.length);for(let X=0;X<J;X++){let L=parseInt($[X]??"0",10),H=parseInt(Z[X]??"0",10);if(isNaN(L)||isNaN(H))return z.localeCompare(Y);if(L!==H)return L-H}return 0}function UY(z,Y){let $=[...z];switch(Y){case"name":$.sort((Z,J)=>Z.name.localeCompare(J.name));break;case"version":$.sort((Z,J)=>Zz(Z.version,J.version));break;case"location":$.sort((Z,J)=>Z.location.localeCompare(J.location));break}return $}import{rm as r,readFile as Jz,writeFile as Dz,access as Wz,lstat as wz,symlink as Cz}from"fs/promises";import{join as $z,resolve as w,dirname as Xz,relative as yz}from"path";import{homedir as Pz}from"os";var vz=Pz();function bz(z,Y){let $={directories:[],ruleFiles:[],agentsBlocks:[]};$.directories.push({path:z.originalPath,isSymlink:z.isSymlink});let Z=z.dirName;if(z.scope==="project")$.ruleFiles.push(w(".cursor","rules",`${Z}.mdc`),w(".windsurf","rules",`${Z}.md`),w(".github","instructions",`${Z}.instructions.md`)),$.agentsBlocks.push({file:w("AGENTS.md"),skillName:Z});if(z.scope==="global"){for(let L of Y.providers){if(!L.enabled)continue;let H=D(L.global),Q=$z(Xz(H),"AGENTS.md");$.agentsBlocks.push({file:Q,skillName:Z})}let J=$z(vz,".codex","AGENTS.md");if(!$.agentsBlocks.some((L)=>L.file===J))$.agentsBlocks.push({file:J,skillName:Z})}return $}function jY(z,Y,$){let Z=Y.filter((Q)=>Q.dirName===z);if(Z.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let J={directories:[],ruleFiles:[],agentsBlocks:[]},X=new Set,L=new Set,H=new Set;for(let Q of Z){let U=bz(Q,$);for(let G of U.directories)if(!X.has(G.path))X.add(G.path),J.directories.push(G);for(let G of U.ruleFiles)if(!L.has(G))L.add(G),J.ruleFiles.push(G);for(let G of U.agentsBlocks){let O=`${G.file}::${G.skillName}`;if(!H.has(O))H.add(O),J.agentsBlocks.push(G)}}return J}async function b(z){try{return await Wz(z),!0}catch{return!1}}async function hz(z,Y){if(!await b(z))return;let $=await Jz(z,"utf-8");for(let Z of["agent-skill-manager","skill-manager","pskills"]){let J=`<!-- ${Z}: ${Y} -->`,X=`<!-- /${Z}: ${Y} -->`,L=$.indexOf(J),H=$.indexOf(X);if(L===-1||H===-1)continue;let Q=L;if(Q>0&&$[Q-1]===`
|
|
4
|
-
`)Q--;let G=H+X.length;if(G<$.length&&$[G]===`
|
|
5
|
-
`)G++;$=$.slice(0,Q)+$.slice(G)}await Dz(z,$,"utf-8")}async function AY(z,Y){let $=[];for(let Z of z.directories)try{if(Z.isSymlink)await r(Z.path),$.push(`Removed symlink: ${Z.path}`);else await r(Z.path,{recursive:!0,force:!0}),$.push(`Removed directory: ${Z.path}`);if(Y&&w(Z.path)!==w(Y)){let J=Xz(Z.path),X=yz(J,Y);await Cz(X,Z.path,"dir"),$.push(`Created symlink: ${Z.path} -> ${X}`)}}catch(J){$.push(`Failed to remove ${Z.path}: ${J.message}`)}for(let Z of z.ruleFiles)if(await b(Z))try{await r(Z),$.push(`Removed rule file: ${Z}`)}catch(J){$.push(`Failed to remove ${Z}: ${J.message}`)}for(let Z of z.agentsBlocks)try{await hz(Z.file,Z.skillName),$.push(`Cleaned AGENTS.md block in: ${Z.file}`)}catch(J){$.push(`Failed to clean AGENTS.md block: ${J.message}`)}return $}async function KY(z){let Y=[];for(let $ of z.directories)if(await b($.path)){let J=(await wz($.path)).isSymbolicLink()?"symlink":"directory";Y.push(`${$.path} (${J})`)}for(let $ of z.ruleFiles)if(await b($))Y.push($);for(let $ of z.agentsBlocks)if(await b($.file)){let Z=await Jz($.file,"utf-8");if(Z.includes(`<!-- agent-skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- pskills: ${$.skillName} -->`))Y.push(`${$.file} (AGENTS.md block)`)}return Y}var K=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},B={bold:(z)=>K()?`\x1B[1m${z}\x1B[0m`:z,cyan:(z)=>K()?`\x1B[36m${z}\x1B[0m`:z,green:(z)=>K()?`\x1B[32m${z}\x1B[0m`:z,yellow:(z)=>K()?`\x1B[33m${z}\x1B[0m`:z,dim:(z)=>K()?`\x1B[2m${z}\x1B[0m`:z,white:(z)=>K()?`\x1B[37m${z}\x1B[0m`:z,red:(z)=>K()?`\x1B[31m${z}\x1B[0m`:z,blue:(z)=>K()?`\x1B[34m${z}\x1B[0m`:z,blueBold:(z)=>K()?`\x1B[34;1m${z}\x1B[0m`:z,magenta:(z)=>K()?`\x1B[35m${z}\x1B[0m`:z,bgDim:(z)=>K()?`\x1B[48;5;236m${z}\x1B[0m`:z,bgRed:(z)=>K()?`\x1B[41m\x1B[37m\x1B[1m${z}\x1B[0m`:z,bgYellow:(z)=>K()?`\x1B[43m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgGreen:(z)=>K()?`\x1B[42m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgCyan:(z)=>K()?`\x1B[46m\x1B[30m\x1B[1m${z}\x1B[0m`:z};function k(z){if(!z)return"";switch(z.toLowerCase()){case"low":return B.green(z);case"medium":return B.yellow(z);case"high":return B.red(z);case"max":return B.magenta(z);default:return z}}var Qz={claude:B.blueBold,codex:B.cyan,"codex-plugin":B.cyan,openclaw:B.yellow,agents:B.green,custom:B.magenta,cursor:B.blue,windsurf:B.cyan,cline:B.green,roocode:B.magenta,continue:B.yellow,copilot:B.white,aider:B.red,opencode:B.cyan,zed:B.blue,augment:B.green,amp:B.yellow};function l(z,Y){return(Qz[z]||B.dim)(Y)}function s(z,Y){if(!K())return`[${Y}]`;return(Qz[z]||B.dim)(`[${Y}]`)}function C(z){let Y=process.env.HOME||process.env.USERPROFILE||"";if(Y&&z.startsWith(Y))return"~"+z.slice(Y.length);return z}function IY(z){if(z.length===0)return"No skills found.";let Y=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],$=z.map((Q)=>[Q.name,Q.version,Q.creator||"—",Q.effort||"—",Q.providerLabel,Q.scope,Q.isSymlink?"symlink":"directory",C(Q.path)]),Z=Y.map((Q,U)=>Math.max(Q.length,...$.map((G)=>G[U].length))),J=(Q,U)=>Q.padEnd(U),X=Y.map((Q,U)=>J(Q,Z[U])).join(" "),L=Z.map((Q)=>"-".repeat(Q)).join("--"),H=$.map((Q)=>Q.map((U,G)=>J(U,Z[G])).join(" "));return[K()?B.bold(X):X,L,...H].join(`
|
|
6
|
-
`)}function Uz(z){let Y=new Map;for(let Z of z){let J=`${Z.dirName}||${Z.scope}`,X=Y.get(J)??[];X.push(Z),Y.set(J,X)}let $=[];for(let[,Z]of Y){let J=Z[0],X=new Set(Z.map((H)=>H.scope)),L=new Set(Z.map((H)=>H.isSymlink?"symlink":"directory"));$.push({name:J.name,version:J.version,creator:J.creator||"",effort:J.effort||"",providers:Z.map((H)=>({provider:H.provider,label:H.providerLabel})),scope:X.size>1?"mixed":J.scope,type:L.size>1?"mixed":J.isSymlink?"symlink":"directory",path:C(J.path),warningCount:Z.reduce((H,Q)=>H+(Q.warnings?.length??0),0)})}return $}function _Y(z){if(z.length===0)return"No skills found.";let Y=Uz(z),$=[],Z=Math.max(4,...Y.map((V)=>V.name.length)),J=Math.max(7,...Y.map((V)=>V.version.length)),X=Math.max(7,...Y.map((V)=>Math.min((V.creator||"—").length,15))),L=Math.max(6,...Y.map((V)=>(V.effort||"—").length)),H=7,Q=9,U=Y.map((V)=>V.providers.map((q)=>s(q.provider,q.label)).join(" ")),G=Y.map((V)=>V.providers.map((q)=>`[${q.label}]`).join(" ")),O=Math.max(9,...G.map((V)=>V.length)),j=(V,q)=>V.padEnd(q),A=`${j("Name",Z)} ${j("Version",J)} ${j("Creator",X)} ${j("Effort",L)} ${j("Tools",O)} ${j("Scope",H)} ${j("Type",Q)}`;$.push(K()?B.bold(A):A),$.push(`${"-".repeat(Z)} ${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(L)} ${"-".repeat(O)} ${"-".repeat(H)} ${"-".repeat(Q)}`);for(let V=0;V<Y.length;V++){let q=Y[V],y=j(q.name,Z),P=j(q.version,J),v=(q.creator||"—").slice(0,15),R=j(v,X),h=q.effort||"—",m=q.effort?k(q.effort):"—",c=L-h.length,u=m+" ".repeat(Math.max(0,c)),p=O-G[V].length,jz=U[V]+" ".repeat(Math.max(0,p)),Az=j(q.scope,H),Kz=j(q.type,Q),Vz=q.warningCount>0?` ${B.yellow(`(${q.warningCount} warning${q.warningCount>1?"s":""})`)}`:"";$.push(`${y} ${P} ${R} ${u} ${jz} ${Az} ${Kz}${Vz}`)}let I=Y.length,F=z.length,_=new Set(z.map((V)=>V.provider)),S=z.filter((V)=>V.scope==="global").length,N=z.filter((V)=>V.scope==="project").length;$.push("");let x=`${F} skills (${I} unique) across ${_.size} tools | ${S} global, ${N} project`;return $.push(B.dim(x)),$.join(`
|
|
7
|
-
`)}function fz(z,Y){if(!K()||!Y)return z;let $=z.toLowerCase().indexOf(Y.toLowerCase());if($===-1)return z;let Z=z.slice(0,$),J=z.slice($,$+Y.length),X=z.slice($+Y.length);return`${Z}${B.bold(B.yellow(J))}${X}`}function qY(z,Y){if(z.length===0)return`No skills matching "${Y}". Try ${B.bold("asm list")} to see all skills.`;let $=Uz(z),Z=[];Z.push(B.dim(`Found ${z.length} result${z.length===1?"":"s"} (${$.length} unique) matching "${Y}"`)+`
|
|
8
|
-
`);let J=Math.max(4,...$.map((F)=>F.name.length)),X=Math.max(7,...$.map((F)=>F.version.length)),L=Math.max(7,...$.map((F)=>Math.min((F.creator||"—").length,15))),H=Math.max(6,...$.map((F)=>(F.effort||"—").length)),Q=$.map((F)=>F.providers.map((_)=>s(_.provider,_.label)).join(" ")),U=$.map((F)=>F.providers.map((_)=>`[${_.label}]`).join(" ")),G=Math.max(9,...U.map((F)=>F.length)),O=7,j=9,A=(F,_)=>F.padEnd(_),I=`${A("Name",J)} ${A("Version",X)} ${A("Creator",L)} ${A("Effort",H)} ${A("Tools",G)} ${A("Scope",O)} ${A("Type",j)}`;Z.push(K()?B.bold(I):I),Z.push(`${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(L)} ${"-".repeat(H)} ${"-".repeat(G)} ${"-".repeat(O)} ${"-".repeat(j)}`);for(let F=0;F<$.length;F++){let _=$[F],S=fz(_.name,Y),N=J-_.name.length,x=S+" ".repeat(Math.max(0,N)),V=A(_.version,X),q=(_.creator||"—").slice(0,15),y=A(q,L),P=_.effort||"—",v=_.effort?k(_.effort):"—",R=H-P.length,h=v+" ".repeat(Math.max(0,R)),m=G-U[F].length,c=Q[F]+" ".repeat(Math.max(0,m)),u=A(_.scope,O),p=A(_.type,j);Z.push(`${x} ${V} ${y} ${h} ${c} ${u} ${p}`)}return Z.join(`
|
|
9
|
-
`)}function TY(z,Y){if(z.length===0)return"";let $=[];$.push(B.dim(`Found ${z.length} available skill${z.length===1?"":"s"} matching "${Y}"`)+`
|
|
10
|
-
`);for(let Z of z){$.push(` ${B.dim("To install:")} ${B.green(`asm install ${Z.installUrl}`)}`);let J=Z.verified?B.blue(" [verified]"):"";$.push(` ${B.cyan(Z.name)} ${B.dim(`v${Z.version}`)}${J} ${B.dim(`[${Z.repoLabel}]`)}`);for(let X of Lz(Z.description,76))$.push(` ${X}`);$.push("")}return $.join(`
|
|
11
|
-
`)}var Gz=new Set(["Bash","Write","Edit","NotebookEdit"]),gz=new Set(["WebFetch","WebSearch"]);function kz(z){if(Gz.has(z))return B.red(z);if(gz.has(z))return B.yellow(z);return B.green(z)}function Bz(z){if(z.length===0)return"";return z.map(kz).join(" ")}function Hz(z){let Y=z.filter((Z)=>Gz.has(Z));if(Y.length===0)return null;let $=[];if(Y.includes("Bash"))$.push("execute shell commands");if(Y.includes("Write")||Y.includes("Edit")||Y.includes("NotebookEdit"))$.push("modify files");return`This skill can ${$.join(" and ")}`}async function mz(z){let Y=[],$=(J,X)=>`${K()?B.bold(J+":"):J+":"} ${X}`;if(Y.push($("Name",z.name)),Y.push($("Version",z.version)),Y.push($("Creator",z.creator||"—")),Y.push($("License",z.license||"—")),z.compatibility)Y.push($("Compatibility",z.compatibility));if(z.effort)Y.push($("Effort",k(z.effort)));if(Y.push($("Tool",z.providerLabel)),Y.push($("Scope",z.scope)),Y.push($("Location",z.location)),Y.push($("Path",C(z.path))),Y.push($("Type",z.isSymlink?"symlink":"directory")),z.isSymlink&&z.symlinkTarget)Y.push($("Symlink Target",z.symlinkTarget));let Z=z.fileCount??await i(z.path);if(Y.push($("File Count",String(Z))),z.description)Y.push(""),Y.push($("Description",z.description));if(z.allowedTools&&z.allowedTools.length>0){Y.push(""),Y.push(K()?B.bold("Allowed Tools:"):"Allowed Tools:"),Y.push(` ${Bz(z.allowedTools)}`);let J=Hz(z.allowedTools);if(J)Y.push(` ${K()?B.yellow("⚠"):"!"} ${J}`)}if(z.warnings&&z.warnings.length>0){Y.push(""),Y.push(K()?B.bold("Warnings:"):"Warnings:");for(let J of z.warnings)Y.push(` ${K()?B.yellow("!"):"!"} [${J.category}] ${J.message}`)}return Y.join(`
|
|
12
|
-
`)}async function EY(z){if(z.length===0)return"No skills found.";if(z.length===1)return mz(z[0]);let Y=[],$=(U,G)=>`${K()?B.bold(U+":"):U+":"} ${G}`,Z=z[0],J=Z.name;if(Y.push(""),Y.push(K()?B.blueBold(` ${J}`):` ${J}`),Y.push(K()?B.dim(" "+"-".repeat(J.length+2)):" "+"-".repeat(J.length+2)),Y.push(""),Y.push($(" Version",Z.version)),Y.push($(" Creator",Z.creator||"—")),Y.push($(" License",Z.license||"—")),Z.compatibility)Y.push($(" Compatibility",Z.compatibility));if(Z.effort)Y.push($(" Effort",k(Z.effort)));let X=Z.fileCount??await i(Z.path);Y.push($(" File Count",String(X)));let L=z.map((U)=>s(U.provider,U.providerLabel)).join(" ");if(Y.push($(" Installed in",L)),Z.description){Y.push(""),Y.push(K()?B.bold(" Description:"):" Description:");let U=Lz(Z.description,72);for(let G of U)Y.push(" "+G)}if(Z.allowedTools&&Z.allowedTools.length>0){Y.push(""),Y.push(K()?B.bold(" Allowed Tools:"):" Allowed Tools:"),Y.push(` ${Bz(Z.allowedTools)}`);let U=Hz(Z.allowedTools);if(U)Y.push(` ${K()?B.yellow("⚠"):"!"} ${U}`)}Y.push("");let H=` Installations (${z.length})`;Y.push(K()?B.bold(H):H);for(let U=0;U<z.length;U++){let G=z[U],O=l(G.provider,G.providerLabel),j=G.isSymlink?"symlink":"directory",A=B.dim(G.scope);if(Y.push(` ${O} (${A}, ${j})`),Y.push(` ${B.dim("Path:")} ${C(G.path)}`),G.isSymlink&&G.symlinkTarget)Y.push(` ${B.dim("Target:")} ${G.symlinkTarget}`)}let Q=z.flatMap((U)=>{if(!U.warnings||U.warnings.length===0)return[];return U.warnings.map((G)=>({...G,provider:U.providerLabel}))});if(Q.length>0){Y.push("");let U=` Warnings (${Q.length})`;Y.push(K()?B.bold(U):U);for(let G of Q){let O=K()?B.yellow("!"):"!";Y.push(` ${O} [${G.category}] ${G.message}`)}}return Y.push(""),Y.join(`
|
|
13
|
-
`)}function Lz(z,Y){let $=z.split(/\s+/),Z=[],J="";for(let X of $)if(J.length+X.length+1>Y&&J.length>0)Z.push(J),J=X;else J=J?J+" "+X:X;if(J)Z.push(J);return Z}function NY(z){return JSON.stringify(z,null,2)}function SY(z){let Y=[],$=new Set,Z=new Map,J=[];for(let Q of z){let U=Z.get(Q.realPath);if(U){if(Q.isSymlink)continue;if(U.isSymlink)J[J.indexOf(U)]=Q,Z.set(Q.realPath,Q);else J.push(Q)}else Z.set(Q.realPath,Q),J.push(Q)}let X=new Map;for(let Q of J){let U=X.get(Q.dirName)??[];U.push(Q),X.set(Q.dirName,U)}for(let[Q,U]of X)if(new Set(U.map((O)=>O.location)).size>=2){Y.push({key:Q,reason:"same-dirName",instances:U});for(let O of U)$.add(O.path)}let L=new Map;for(let Q of J){if(!Q.name)continue;let U=L.get(Q.name)??[];U.push(Q),L.set(Q.name,U)}for(let[Q,U]of L){if(new Set(U.map((A)=>A.dirName)).size<2)continue;let O=U.filter((A)=>!$.has(A.path));if(O.length<2)continue;if(new Set(O.map((A)=>A.dirName)).size<2)continue;Y.push({key:Q,reason:"same-frontmatterName",instances:O})}Y.sort((Q,U)=>{if(Q.reason!==U.reason)return Q.reason==="same-dirName"?-1:1;return Q.key.localeCompare(U.key)});let H=Y.reduce((Q,U)=>Q+U.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:z.length,duplicateGroups:Y,totalDuplicateInstances:H}}function cz(z){return[...z].sort((Y,$)=>{if(Y.scope!==$.scope)return Y.scope==="global"?-1:1;let Z=Y.providerLabel.localeCompare($.providerLabel);if(Z!==0)return Z;return Y.path.localeCompare($.path)})}function uz(z){return z==="same-dirName"?"same dirName":"same name"}function xY(z){if(z.duplicateGroups.length===0)return B.green("No duplicate skills found.");let Y=[];Y.push(""),Y.push(B.bold(` Found ${z.duplicateGroups.length} duplicate group(s) (${z.totalDuplicateInstances} total instances):`)),Y.push("");for(let $ of z.duplicateGroups){Y.push(` ${B.yellow(`"${$.key}"`)} ${B.dim(`(${uz($.reason)})`)}`);let Z=cz($.instances);for(let J=0;J<Z.length;J++){let X=Z[J],L=l(X.provider,X.providerLabel),H=J===0?B.green(" [keep]"):B.dim(" "),Q=B.dim(`(${X.scope})`);Y.push(` ${H} ${L} ${Q} ${B.dim(C(X.path))}`)}Y.push("")}return Y.push(B.dim(` Run ${B.bold("asm audit -y")} to auto-remove duplicates`)),Y.push(""),Y.join(`
|
|
14
|
-
`)}function DY(z){return JSON.stringify(z,null,2)}function wY(z){let Y=z.trim();if(!Y)return["vi",[]];let $=[],Z="",J=!1,X=0;while(X<Y.length){let L=Y[X];if(L==='"'){J=!0,X++;while(X<Y.length&&Y[X]!=='"'){if(Y[X]==="\\"&&X+1<Y.length){let H=Y[X+1];if(H==='"'||H==="\\"){Z+=H,X+=2;continue}}Z+=Y[X],X++}X++}else if(L==="'"){J=!0,X++;while(X<Y.length&&Y[X]!=="'")Z+=Y[X],X++;X++}else if(L===" "||L==="\t"){if(Z.length>0||J)$.push(Z),Z="",J=!1;X++}else Z+=L,X++}if(Z.length>0||J)$.push(Z);if($.length===0)return["vi",[]];return[$[0],$.slice(1)]}import{readFileSync as pz}from"fs";import{resolve as dz,dirname as nz}from"path";import{fileURLToPath as oz}from"url";import{execSync as tz}from"child_process";var az=nz(oz(import.meta.url)),Oz="2.1.0";try{let z=pz(dz(az,"../../package.json"),"utf-8");Oz=JSON.parse(z).version}catch{}var e="bc495a4";try{e=tz("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||e}catch{}var iz=Oz,rz=e,hY=`v${iz} (${rz})`;
|
|
15
|
-
export{d as e,n as f,o as g,i as h,XY as i,QY as j,UY as k,bz as l,jY as m,AY as n,KY as o,B as p,k as q,l as r,C as s,IY as t,_Y as u,qY as v,TY as w,Gz as x,gz as y,EY as z,Lz as A,NY as B,SY as C,cz as D,uz as E,xY as F,DY as G,iz as H,hY as I,wY as J};
|