agent-skill-manager 2.1.0 → 2.3.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 +10 -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 +413 -383
- package/dist/chunk-76faq0t9.js +93 -0
- package/dist/{chunk-1becp2v6.js → chunk-83zxj8cj.js} +1 -1
- package/dist/{chunk-a26gjzjk.js → chunk-chw0sgjp.js} +1 -1
- package/dist/chunk-dtg819nd.js +19 -0
- package/package.json +1 -1
- package/dist/chunk-6mbpytcj.js +0 -15
- package/dist/chunk-x537ndd4.js +0 -92
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{V as z,Y as B}from"./chunk-chw0sgjp.js";import{readFile as J,writeFile as K,mkdir as M,copyFile as N}from"fs/promises";import{execFile as O}from"child_process";import{promisify as Q}from"util";import{dirname as R}from"path";var S=Q(O);function G(){return{version:1,skills:{}}}async function H(){let j=B(),v;try{v=await J(j,"utf-8")}catch(q){if(q?.code==="ENOENT")return z("lock: file not found, returning empty lock"),G();throw q}try{let q=JSON.parse(v);if(q.version!==1||typeof q.skills!=="object"||q.skills===null)throw Error("invalid schema");return z(`lock: loaded ${Object.keys(q.skills).length} entries`),q}catch{let q=j+".bak";z(`lock: parse error, backing up to ${q}`);try{await N(j,q)}catch{}return console.error(`Warning: .skill-lock.json was corrupted. Backup saved to ${q}. Starting fresh.`),G()}}async function Z(j,v){let q=await H();q.skills[j]=v,await I(q),z(`lock: wrote entry for "${j}"`)}async function $(j){let v=await H();if(!(j in v.skills)){z(`lock: no entry for "${j}", nothing to remove`);return}delete v.skills[j],await I(v),z(`lock: removed entry for "${j}"`)}async function I(j){let v=B();await M(R(v),{recursive:!0}),await K(v,JSON.stringify(j,null,2)+`
|
|
2
2
|
`,"utf-8")}async function A(j){try{let{stdout:v}=await S("git",["rev-parse","HEAD"],{cwd:j,timeout:5000});return v.trim()||null}catch{return z("lock: could not read commit hash from cloned repo"),null}}export{Z as writeLockEntry,$ as removeLockEntry,H as readLock,A as getCommitHash};
|
|
3
3
|
export{H as a,Z as b,$ as c,A as d};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{createRequire as k}from"node:module";var S=Object.create;var{getPrototypeOf:U,defineProperty:K,getOwnPropertyNames:j}=Object;var E=Object.prototype.hasOwnProperty;var F=(x,$,b)=>{b=x!=null?S(U(x)):{};let q=$||!x||!x.__esModule?K(b,"default",{value:x,enumerable:!0}):b;for(let V of j(x))if(!E.call(q,V))K(q,V,{get:()=>x[V],enumerable:!0});return q};var h=(x,$)=>()=>($||x(($={exports:{}}).exports,$),$.exports);var I=k(import.meta.url);import{readFile as W,writeFile as v,mkdir as R,copyFile as A}from"fs/promises";import{join as B,resolve as Z,dirname as s}from"path";import{fileURLToPath as H}from"url";import{homedir as G}from"os";var L=!1,M=0;function T(x){if(L=x,x)M=performance.now()}function z(x){if(!L)return;let $=Math.round(performance.now()-M),q=globalThis.__CLI_NO_COLOR?`[verbose] +${$}ms`:`\x1B[2m[verbose] +${$}ms\x1B[0m`;console.error(`${q} ${x}`)}var D=H(import.meta.url),X=s(D),w=G(),J=B(w,".config","agent-skill-manager"),y=B(J,"config.json"),O=B(J,".skill-lock.json"),m=B(J,"skill-index"),N=[{name:"claude",label:"Claude Code",global:"~/.claude/skills",project:".claude/skills",enabled:!0},{name:"agents",label:"Agents",global:"~/.agents/skills",project:".agents/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:"openclaw",label:"OpenClaw",global:"~/.openclaw/skills",project:".openclaw/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:"hermes",label:"Hermes",global:"~/.hermes/skills",project:".hermes/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 Q(){return{version:1,providers:N.map((x)=>({...x})),customPaths:[],preferences:{defaultScope:"both",defaultSort:"name"}}}function t(){return y}function f(){return O}function g(){return m}function i(){return Z(X,"..","data","skill-index")}function _(){return Z(X,"..","data","skill-index-resources.json")}async function a(){let x=_(),$=await W(x,"utf-8");return JSON.parse($)}function e(x){if(x.startsWith("~/"))return B(w,x.slice(2));if(x.startsWith("/"))return x;return Z(x)}function u(x){let $=Q(),b=x.providers||[],q=new Set(b.map((V)=>V.name));for(let V of $.providers)if(!q.has(V.name))b.push({...V});return{version:x.version??$.version,providers:b,customPaths:x.customPaths??[],preferences:{defaultScope:x.preferences?.defaultScope??$.preferences.defaultScope,defaultSort:x.preferences?.defaultSort??$.preferences.defaultSort,selectedTools:x.preferences?.selectedTools}}}async function C(){z(`config: checking ${y}`);let x;try{x=await W(y,"utf-8")}catch($){if($?.code==="ENOENT"){z("config: using defaults (file not found)");let b=Q();return await Y(b),b}throw $}try{let $=JSON.parse(x);return z(`config: loaded from ${y}`),u($)}catch{let $=y+".bak";z(`config: parse error, backing up to ${$}`),await A(y,$),console.error(`Warning: Config file was corrupted. Backup saved to ${$}. Using defaults.`);let b=Q();return await Y(b),b}}async function Y(x){await R(J,{recursive:!0}),await v(y,JSON.stringify(x,null,2)+`
|
|
2
2
|
`,"utf-8")}async function xx(x){let $=await C();$.preferences.selectedTools=x,await Y($)}export{xx as saveSelectedTools,Y as saveConfig,e as resolveProviderPath,a as loadSkillIndexResources,C as loadConfig,_ as getSkillIndexResourcesPath,f as getLockPath,g as getIndexDir,Q as getDefaultConfig,t as getConfigPath,i as getBundledIndexDir};
|
|
3
|
-
export{F as
|
|
3
|
+
export{F as R,h as S,I as T,T as U,z as V,Q as W,t as X,f as Y,g as Z,i as _,e as $,C as aa,Y as ba};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{$ as x,V as N}from"./chunk-chw0sgjp.js";import{readdir as W,stat as S,lstat as $z,readlink as Dz,readFile as k,realpath as s}from"fs/promises";import{join as T,resolve as e,basename as Wz}from"path";import{homedir as c}from"os";function o(z){let Y={},$=z.split(`
|
|
2
|
+
`),Z=!1,J=!1,X=null,O=[],K="none",Q=-1,H=null;function U(){if(X){let B=O.join(" ").trim();if(B)Y[X]=B;X=null,O=[],K="none",Q=-1}}for(let B of $){if(B.trim()==="---")if(!J){J=!0,Z=!0;continue}else{U();break}if(!Z)continue;if(K!=="none"&&X){let L=B.replace(/^\s*/,""),V=B.length-L.length;if(V>0&&L.length>0){if(Q===-1)Q=V;O.push(L);continue}else if(L.length===0)continue;else U()}if(H!==null){let L=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(L){let V=L[1],_=L[2].replace(/^["']|["']$/g,"");if(_)Y[`${H}.${V}`]=_;continue}if(B.trim().length>0)H=null;else continue}let F=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(F){U();let L=F[1],V=F[2];if(V==="|"||V===">")X=L,O=[],K=V==="|"?"literal":"folded";else if(V==="|+"||V===">+"||V==="|-"||V===">-")X=L,O=[],K=V.startsWith("|")?"literal":"folded";else{let j=V.replace(/^["']|["']$/g,"");if(j)Y[L]=j;else H=L}}}return U(),Y}function r(z){return z["metadata.version"]||z.version||"0.0.0"}function i(z){let Y=z["allowed-tools"]||"";if(!Y.trim())return[];return Y.split(/[\s,]+/).map(($)=>$.trim()).filter(Boolean)}function l(z){if(!z)return 0;let Y=z.split(/\s+/).map((Z)=>Z.trim()).filter(Boolean).length,$=0;for(let Z=0;Z<z.length;Z++)if(z.charCodeAt(Z)===32)$++;return Y+$}function m(z){if(!Number.isFinite(z)||z<0)return"~0 tokens";if(z<1000)return`~${z} tokens`;if(z<1e4)return`~${(z/1000).toFixed(1).replace(/\.0$/,"")}k tokens`;return`~${Math.round(z/1000)}k tokens`}var xz=T(c(),".claude","plugins","marketplaces"),Sz=T(c(),".codex","plugins","cache"),wz=T(c(),".codex","config.toml"),AY=T(c(),".agents","plugins","marketplace.json");function Cz(z,Y){let $=[];for(let Z of z.providers){if(!Z.enabled){N(`scan: skipping disabled provider "${Z.name}"`);continue}if(Y==="global"||Y==="both"){let J=x(Z.global);N(`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=x(Z.project);N(`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=x(Z.path);N(`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 zz(z){try{return(await W(z,{recursive:!0})).length}catch{return 0}}async function yz(z){let Y=[];N(`scanning: ${z.dir} (${z.location})`);let $;try{$=await W(z.dir)}catch{return N(`scanning: ${z.dir} — not found, skipping`),Y}for(let Z of $){let J=T(z.dir,Z);try{if(!(await S(J)).isDirectory()){N(` skip: "${Z}" — not a directory`);continue}}catch{N(` skip: "${Z}" — stat failed`);continue}let X=T(J,"SKILL.md"),O;try{O=await k(X,"utf-8")}catch{N(` skip: "${Z}" — no SKILL.md`);continue}let K=o(O),Q=!1,H=null;try{if((await $z(J)).isSymbolicLink())Q=!0,H=await Dz(J)}catch{}let U=e(J),B;try{B=await s(J)}catch{B=U}Y.push({name:K.name||Z,version:r(K),description:(K.description||"").replace(/\s*\n\s*/g," ").trim(),creator:K["metadata.creator"]||"",license:(K.license||"").trim(),compatibility:(K.compatibility||"").trim(),allowedTools:i(K),effort:K.effort||K["metadata.effort"]||void 0,dirName:Z,path:U,originalPath:J,location:z.location,scope:z.scope,provider:z.providerName,providerLabel:z.providerLabel,isSymlink:Q,symlinkTarget:H,realPath:B,tokenCount:l(O)})}return N(`found ${Y.length} skill(s) in ${z.dir}`),Y}async function Jz(z){let Y=[],$;try{$=await W(z)}catch{return Y}for(let Z of $){let J=T(z,Z),X;try{X=await $z(J)}catch{continue}if(X.isSymbolicLink())continue;if(X.isDirectory()){let O=T(J,"SKILL.md");try{await S(O),Y.push(J)}catch{let K=await Jz(J);Y.push(...K)}}}return Y}async function Pz(z){let Y=z??xz,$=[];N(`scan: checking plugin marketplaces at ${Y}`);let Z;try{Z=await W(Y)}catch{return N("scan: plugin marketplaces dir not found, skipping"),$}for(let J of Z){let X=T(Y,J),O;try{O=await S(X)}catch{continue}if(!O.isDirectory())continue;N(`scan: scanning marketplace "${J}"`);let K=await Jz(X);for(let Q of K){let H=T(Q,"SKILL.md"),U;try{U=await k(H,"utf-8")}catch{continue}let B=o(U),F=Wz(Q),L=e(Q),V;try{V=await s(Q)}catch{V=L}$.push({name:B.name||F,version:r(B),description:(B.description||"").replace(/\s*\n\s*/g," ").trim(),creator:B["metadata.creator"]||"",license:(B.license||"").trim(),compatibility:(B.compatibility||"").trim(),allowedTools:i(B),effort:B.effort||B["metadata.effort"]||void 0,dirName:F,path:L,originalPath:Q,location:`global-plugin-${J}`,scope:"global",provider:"plugin",providerLabel:`Plugin (${J})`,isSymlink:!1,symlinkTarget:null,realPath:V,marketplace:J,tokenCount:l(U)})}}return N(`scan: found ${$.length} plugin marketplace skill(s)`),$}function bz(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 O=J.match(/^enabled\s*=\s*(true|false)/i);if(O)Y.set($,O[1].toLowerCase()==="true")}}return Y}async function vz(z){let Y=z??wz;try{let $=await k(Y,"utf-8");return bz($)}catch{return N(`codex: config.toml not found at ${Y}, skipping enabled check`),new Map}}async function hz(z,Y){let $=z??Sz,Z=[];N(`codex: checking plugin cache at ${$}`);let J;try{J=await W($)}catch{return N("codex: plugin cache dir not found, skipping"),Z}let X=await vz(Y);for(let O of J){let K=T($,O),Q;try{Q=await S(K)}catch{continue}if(!Q.isDirectory())continue;let H;try{H=await W(K)}catch{continue}for(let U of H){let B=T(K,U),F;try{F=await S(B)}catch{continue}if(!F.isDirectory())continue;let L;try{L=await W(B)}catch{continue}let V=(await Promise.all(L.map(async(I)=>{try{return(await S(T(B,I))).isDirectory()?I:null}catch{return null}}))).filter((I)=>I!==null);if(V.length===0)continue;let j=V.sort(Xz).at(-1),_=T(B,j),M=T(_,".codex-plugin","plugin.json"),R;try{let I=await k(M,"utf-8");R=JSON.parse(I)}catch{N(`codex: no valid plugin.json at ${M}, skipping`);continue}let E=e(_),D;try{D=await s(_)}catch{D=E}let y=R.interface?.displayName||R.name||U,P=R.version||j,b=(R.description||"").replace(/\s*\n\s*/g," ").trim(),q=X.has(U)?X.get(U):!0;Z.push({name:y,version:P,description:b,creator:"",license:"",compatibility:"",allowedTools:[],dirName:U,path:E,originalPath:_,location:`global-codex-plugin-${O}`,scope:"global",provider:"codex-plugin",providerLabel:`Codex Plugin (${O})`,isSymlink:!1,symlinkTarget:null,realPath:D,marketplace:O,codexPlugin:{category:R.interface?.category,hasMcpConfig:R.mcp!=null&&Object.keys(R.mcp).length>0,pluginName:U,pluginVersion:j,enabled:q}})}}return N(`codex: found ${Z.length} plugin(s) in cache`),Z}async function FY(z,Y,$,Z){let J=Cz(z,Y),X=Y==="global"||Y==="both",[O,K,Q]=await Promise.all([Promise.all(J.map(yz)),X?Pz($):Promise.resolve([]),X?hz(Z):Promise.resolve([])]),H=O.flat(),U=new Set(H.map((F)=>F.realPath)),B=new Set(H.map((F)=>F.name.toLowerCase()));for(let F of K)if(!U.has(F.realPath)&&!B.has(F.name.toLowerCase()))H.push(F),U.add(F.realPath),B.add(F.name.toLowerCase());for(let F of Q)if(!U.has(F.realPath)&&!B.has(F.name.toLowerCase()))H.push(F),U.add(F.realPath),B.add(F.name.toLowerCase());return H}function _Y(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 Xz(z,Y){let $=z.split("."),Z=Y.split("."),J=Math.max($.length,Z.length);for(let X=0;X<J;X++){let O=parseInt($[X]??"0",10),K=parseInt(Z[X]??"0",10);if(isNaN(O)||isNaN(K))return z.localeCompare(Y);if(O!==K)return O-K}return 0}function qY(z,Y){let $=[...z];switch(Y){case"name":$.sort((Z,J)=>Z.name.localeCompare(J.name));break;case"version":$.sort((Z,J)=>Xz(Z.version,J.version));break;case"location":$.sort((Z,J)=>Z.location.localeCompare(J.location));break}return $}import{rm as Yz,readFile as Uz,writeFile as fz,access as gz,lstat as mz,symlink as kz}from"fs/promises";import{join as Qz,resolve as w,dirname as Gz,relative as cz}from"path";import{homedir as pz}from"os";var uz=pz();function dz(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 O of Y.providers){if(!O.enabled)continue;let K=x(O.global),Q=Qz(Gz(K),"AGENTS.md");$.agentsBlocks.push({file:Q,skillName:Z})}let J=Qz(uz,".codex","AGENTS.md");if(!$.agentsBlocks.some((O)=>O.file===J))$.agentsBlocks.push({file:J,skillName:Z})}return $}function EY(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,O=new Set,K=new Set;for(let Q of Z){let H=dz(Q,$);for(let U of H.directories)if(!X.has(U.path))X.add(U.path),J.directories.push(U);for(let U of H.ruleFiles)if(!O.has(U))O.add(U),J.ruleFiles.push(U);for(let U of H.agentsBlocks){let B=`${U.file}::${U.skillName}`;if(!K.has(B))K.add(B),J.agentsBlocks.push(U)}}return J}async function v(z){try{return await gz(z),!0}catch{return!1}}async function nz(z,Y){if(!await v(z))return;let $=await Uz(z,"utf-8");for(let Z of["agent-skill-manager","skill-manager","pskills"]){let J=`<!-- ${Z}: ${Y} -->`,X=`<!-- /${Z}: ${Y} -->`,O=$.indexOf(J),K=$.indexOf(X);if(O===-1||K===-1)continue;let Q=O;if(Q>0&&$[Q-1]===`
|
|
4
|
+
`)Q--;let U=K+X.length;if(U<$.length&&$[U]===`
|
|
5
|
+
`)U++;$=$.slice(0,Q)+$.slice(U)}await fz(z,$,"utf-8")}async function DY(z,Y){let $=[];for(let Z of z.directories)try{if(Z.isSymlink)await Yz(Z.path),$.push(`Removed symlink: ${Z.path}`);else await Yz(Z.path,{recursive:!0,force:!0}),$.push(`Removed directory: ${Z.path}`);if(Y&&w(Z.path)!==w(Y)){let J=Gz(Z.path),X=cz(J,Y);await kz(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 v(Z))try{await Yz(Z),$.push(`Removed rule file: ${Z}`)}catch(J){$.push(`Failed to remove ${Z}: ${J.message}`)}for(let Z of z.agentsBlocks)try{await nz(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 WY(z){let Y=[];for(let $ of z.directories)if(await v($.path)){let J=(await mz($.path)).isSymbolicLink()?"symlink":"directory";Y.push(`${$.path} (${J})`)}for(let $ of z.ruleFiles)if(await v($))Y.push($);for(let $ of z.agentsBlocks)if(await v($.file)){let Z=await Uz($.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 A=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},G={bold:(z)=>A()?`\x1B[1m${z}\x1B[0m`:z,cyan:(z)=>A()?`\x1B[36m${z}\x1B[0m`:z,green:(z)=>A()?`\x1B[32m${z}\x1B[0m`:z,yellow:(z)=>A()?`\x1B[33m${z}\x1B[0m`:z,dim:(z)=>A()?`\x1B[2m${z}\x1B[0m`:z,white:(z)=>A()?`\x1B[37m${z}\x1B[0m`:z,red:(z)=>A()?`\x1B[31m${z}\x1B[0m`:z,blue:(z)=>A()?`\x1B[34m${z}\x1B[0m`:z,blueBold:(z)=>A()?`\x1B[34;1m${z}\x1B[0m`:z,magenta:(z)=>A()?`\x1B[35m${z}\x1B[0m`:z,bgDim:(z)=>A()?`\x1B[48;5;236m${z}\x1B[0m`:z,bgRed:(z)=>A()?`\x1B[41m\x1B[37m\x1B[1m${z}\x1B[0m`:z,bgYellow:(z)=>A()?`\x1B[43m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgGreen:(z)=>A()?`\x1B[42m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgCyan:(z)=>A()?`\x1B[46m\x1B[30m\x1B[1m${z}\x1B[0m`:z};function h(z){if(!z)return"";switch(z.toLowerCase()){case"low":return G.green(z);case"medium":return G.yellow(z);case"high":return G.red(z);case"max":return G.magenta(z);default:return z}}var Bz={claude:G.blueBold,codex:G.cyan,"codex-plugin":G.cyan,openclaw:G.yellow,agents:G.green,custom:G.magenta,cursor:G.blue,windsurf:G.cyan,cline:G.green,roocode:G.magenta,continue:G.yellow,copilot:G.white,aider:G.red,opencode:G.cyan,zed:G.blue,augment:G.green,amp:G.yellow};function p(z,Y){return(Bz[z]||G.dim)(Y)}function u(z,Y){if(!A())return`[${Y}]`;return(Bz[z]||G.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 CY(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,H)=>Math.max(Q.length,...$.map((U)=>U[H].length))),J=(Q,H)=>Q.padEnd(H),X=Y.map((Q,H)=>J(Q,Z[H])).join(" "),O=Z.map((Q)=>"-".repeat(Q)).join("--"),K=$.map((Q)=>Q.map((H,U)=>J(H,Z[U])).join(" "));return[A()?G.bold(X):X,O,...K].join(`
|
|
6
|
+
`)}function f(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((K)=>K.scope)),O=new Set(Z.map((K)=>K.isSymlink?"symlink":"directory"));$.push({name:J.name,version:J.version,creator:J.creator||"",effort:J.effort||"",tokens:typeof J.tokenCount==="number"?m(J.tokenCount):"",providers:Z.map((K)=>({provider:K.provider,label:K.providerLabel})),scope:X.size>1?"mixed":J.scope,type:O.size>1?"mixed":J.isSymlink?"symlink":"directory",path:C(J.path),warningCount:Z.reduce((K,Q)=>K+(Q.warnings?.length??0),0)})}return $}var yY=50;function PY(z,Y={}){let $=Y.topN??5,Z=Y.showHint??!0;if(z.length===0)return"No skills found.";let J=[],O=f(z).length,K=z.length,Q=new Set(z.map((j)=>j.provider)),H=z.filter((j)=>j.scope==="global").length,U=z.filter((j)=>j.scope==="project").length,B=`${K} skills (${O} unique) across ${Q.size} tools | ${H} global, ${U} project`;J.push(A()?G.bold(B):B),J.push("");let F=new Map;for(let j of z){let _=F.get(j.provider)??{label:j.providerLabel,count:0};_.count+=1,F.set(j.provider,_)}let L=[...F.entries()].sort((j,_)=>_[1].count-j[1].count).slice(0,$);J.push(A()?G.bold("Top tools:"):"Top tools:");for(let[j,{label:_,count:M}]of L){let R=A()?p(j,`[${_}]`):`[${_}]`;J.push(` ${R} ${M} skill${M===1?"":"s"}`)}J.push(""),J.push(A()?G.bold("Scopes:"):"Scopes:"),J.push(` global ${H} skill${H===1?"":"s"}`),J.push(` project ${U} skill${U===1?"":"s"}`);let V=new Map;for(let j of z)if(j.effort)V.set(j.effort,(V.get(j.effort)??0)+1);if(V.size>0){let j=[...V.entries()].sort((_,M)=>M[1]-_[1]).slice(0,$);J.push(""),J.push(A()?G.bold("Top efforts:"):"Top efforts:");for(let[_,M]of j){let R=h(_),E=Math.max(0,6-_.length);J.push(` ${R}${" ".repeat(E)} ${M} skill${M===1?"":"s"}`)}}if(Z){J.push("");let j="Tip: refine with `asm list -p <tool>`, `asm search <query>`, or `asm list --compact`";J.push(A()?G.dim(j):j)}return J.join(`
|
|
7
|
+
`)}function az(z){if(z.length===0)return"No skills found.";let Y=f(z),$=[],Z=Math.max(4,...Y.map((L)=>L.name.length)),J=Math.max(7,...Y.map((L)=>L.version.length)),X=Y.map((L)=>L.providers.map((V)=>u(V.provider,V.label)).join(" ")),O=Y.map((L)=>L.providers.map((V)=>`[${V.label}]`).join(" ")),K=Math.max(5,...O.map((L)=>L.length)),Q=7,H=(L,V)=>L.padEnd(V);for(let L=0;L<Y.length;L++){let V=Y[L],j=H(V.name,Z),_=G.dim(H(V.version,J)),M=K-O[L].length,R=X[L]+" ".repeat(Math.max(0,M)),E=G.dim(H(V.scope,Q));$.push(`${j} ${_} ${R} ${E}`)}$.push("");let U=z.length,B=Y.length,F=`${U} skills (${B} unique)`;return $.push(G.dim(F)),$.join(`
|
|
8
|
+
`)}function bY(z,Y){if(z.length===0)return"No skills found.";let $=new Map,Z=(H)=>{switch(Y){case"tool":return[H.providerLabel];case"scope":return[H.scope];case"effort":return[H.effort&&H.effort.length>0?H.effort:"(unset)"]}};for(let H of z)for(let U of Z(H)){let B=$.get(U)??[];B.push(H),$.set(U,B)}let J=[...$.entries()].sort((H,U)=>{if(U[1].length!==H[1].length)return U[1].length-H[1].length;return H[0].localeCompare(U[0])}),X=[];for(let[H,U]of J){let B=`${H} (${U.length})`;X.push(A()?G.bold(B):B);let V=az(U).split(`
|
|
9
|
+
`).slice(0,-2).filter((j)=>j.length>0).map((j)=>` ${j}`);X.push(...V),X.push("")}let O=z.length,K=f(z).length,Q=`${O} skills (${K} unique), grouped by ${Y}`;return X.push(G.dim(Q)),X.join(`
|
|
10
|
+
`)}function vY(z,Y){if(!Number.isFinite(Y)||Y<=0||z.length<=Y)return{skills:z,hint:""};let $=z.slice(0,Y),Z=z.length-Y,J=G.dim(`... ${Z} more not shown. Re-run with --limit ${z.length} (or 0) to see all, or refine with -p <tool>.`);return{skills:$,hint:J}}function hY(z){if(z.length===0)return"No skills found.";let Y=f(z),$=[],Z=Math.max(4,...Y.map((q)=>q.name.length)),J=Math.max(7,...Y.map((q)=>q.version.length)),X=Math.max(7,...Y.map((q)=>Math.min((q.creator||"—").length,15))),O=Math.max(6,...Y.map((q)=>(q.effort||"—").length)),K=Y.some((q)=>q.tokens.length>0),Q=K?Math.max(6,...Y.map((q)=>(q.tokens||"—").length)):0,H=7,U=9,B=Y.map((q)=>q.providers.map((I)=>u(I.provider,I.label)).join(" ")),F=Y.map((q)=>q.providers.map((I)=>`[${I.label}]`).join(" ")),L=Math.max(9,...F.map((q)=>q.length)),V=(q,I)=>q.padEnd(I),j=K?` ${V("Tokens",Q)}`:"",_=`${V("Name",Z)} ${V("Version",J)} ${V("Creator",X)} ${V("Effort",O)}${j} ${V("Tools",L)} ${V("Scope",H)} ${V("Type",U)}`;$.push(A()?G.bold(_):_);let M=K?` ${"-".repeat(Q)}`:"";$.push(`${"-".repeat(Z)} ${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(O)}${M} ${"-".repeat(L)} ${"-".repeat(H)} ${"-".repeat(U)}`);for(let q=0;q<Y.length;q++){let I=Y[q],g=V(I.name,Z),d=V(I.version,J),n=(I.creator||"—").slice(0,15),a=V(n,X),t=I.effort||"—",Fz=I.effort?h(I.effort):"—",_z=O-t.length,qz=Fz+" ".repeat(Math.max(0,_z)),Iz=K?` ${V(I.tokens||"—",Q)}`:"",Nz=L-F[q].length,Rz=B[q]+" ".repeat(Math.max(0,Nz)),Mz=V(I.scope,H),Tz=V(I.type,U),Ez=I.warningCount>0?` ${G.yellow(`(${I.warningCount} warning${I.warningCount>1?"s":""})`)}`:"";$.push(`${g} ${d} ${a} ${qz}${Iz} ${Rz} ${Mz} ${Tz}${Ez}`)}let R=Y.length,E=z.length,D=new Set(z.map((q)=>q.provider)),y=z.filter((q)=>q.scope==="global").length,P=z.filter((q)=>q.scope==="project").length;$.push("");let b=`${E} skills (${R} unique) across ${D.size} tools | ${y} global, ${P} project`;return $.push(G.dim(b)),$.join(`
|
|
11
|
+
`)}function tz(z,Y){if(!A()||!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}${G.bold(G.yellow(J))}${X}`}function fY(z,Y){if(z.length===0)return`No skills matching "${Y}". Try ${G.bold("asm list")} to see all skills.`;let $=f(z),Z=[];Z.push(G.dim(`Found ${z.length} result${z.length===1?"":"s"} (${$.length} unique) matching "${Y}"`)+`
|
|
12
|
+
`);let J=Math.max(4,...$.map((j)=>j.name.length)),X=Math.max(7,...$.map((j)=>j.version.length)),O=Math.max(7,...$.map((j)=>Math.min((j.creator||"—").length,15))),K=Math.max(6,...$.map((j)=>(j.effort||"—").length)),Q=$.map((j)=>j.providers.map((_)=>u(_.provider,_.label)).join(" ")),H=$.map((j)=>j.providers.map((_)=>`[${_.label}]`).join(" ")),U=Math.max(9,...H.map((j)=>j.length)),B=7,F=9,L=(j,_)=>j.padEnd(_),V=`${L("Name",J)} ${L("Version",X)} ${L("Creator",O)} ${L("Effort",K)} ${L("Tools",U)} ${L("Scope",B)} ${L("Type",F)}`;Z.push(A()?G.bold(V):V),Z.push(`${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(O)} ${"-".repeat(K)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(F)}`);for(let j=0;j<$.length;j++){let _=$[j],M=tz(_.name,Y),R=J-_.name.length,E=M+" ".repeat(Math.max(0,R)),D=L(_.version,X),y=(_.creator||"—").slice(0,15),P=L(y,O),b=_.effort||"—",q=_.effort?h(_.effort):"—",I=K-b.length,g=q+" ".repeat(Math.max(0,I)),d=U-H[j].length,n=Q[j]+" ".repeat(Math.max(0,d)),a=L(_.scope,B),t=L(_.type,F);Z.push(`${E} ${D} ${P} ${g} ${n} ${a} ${t}`)}return Z.join(`
|
|
13
|
+
`)}function gY(z,Y){if(z.length===0)return"";let $=[];$.push(G.dim(`Found ${z.length} available skill${z.length===1?"":"s"} matching "${Y}"`)+`
|
|
14
|
+
`);for(let Z of z){$.push(` ${G.dim("To install:")} ${G.green(`asm install ${Z.installUrl}`)}`);let J=Z.verified?G.blue(" [verified]"):"";$.push(` ${G.cyan(Z.name)} ${G.dim(`v${Z.version}`)}${J} ${G.dim(`[${Z.repoLabel}]`)}`);for(let X of Vz(Z.description,76))$.push(` ${X}`);$.push("")}return $.join(`
|
|
15
|
+
`)}var Hz=new Set(["Bash","Write","Edit","NotebookEdit"]),oz=new Set(["WebFetch","WebSearch"]);function rz(z){if(Hz.has(z))return G.red(z);if(oz.has(z))return G.yellow(z);return G.green(z)}function Oz(z){if(z.length===0)return"";return z.map(rz).join(" ")}function Kz(z){let Y=z.filter((Z)=>Hz.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 iz(z){let Y=[],$=(X,O)=>`${A()?G.bold(X+":"):X+":"} ${O}`;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",h(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 zz(z.path);if(Y.push($("File Count",String(Z))),typeof z.tokenCount==="number")Y.push($("Est. Tokens",m(z.tokenCount)));if(z.description)Y.push(""),Y.push($("Description",z.description));if(z.allowedTools&&z.allowedTools.length>0){Y.push(""),Y.push(A()?G.bold("Allowed Tools:"):"Allowed Tools:"),Y.push(` ${Oz(z.allowedTools)}`);let X=Kz(z.allowedTools);if(X)Y.push(` ${A()?G.yellow("⚠"):"!"} ${X}`)}Y.push(""),Y.push(A()?G.bold("Eval Score:"):"Eval Score:");let J=jz(z);if(J.length>0){let X=J.length>1;for(let O of J){let K=Lz(O.overallScore),Q=O.providerId?`${O.providerId}@${O.providerVersion??"?"}`:"quality";if(X)Y.push(` ${Q}: ${K} / 100 (${O.grade})`);else Y.push(` Overall: ${K} / 100 (${O.grade})`);let H=O.evaluatedVersion?` — version ${O.evaluatedVersion}`:"";if(Y.push(` ${A()?G.dim("Evaluated:"):"Evaluated:"} ${O.evaluatedAt}${H}`),O.categories.length>0){if(X)Y.push(A()?G.dim(` Categories (${Q}):`):` Categories (${Q}):`);else Y.push(A()?G.dim(" Categories:"):" Categories:");for(let U of O.categories)Y.push(` ${U.name.padEnd(28)} ${U.score}/${U.max}`)}}}else Y.push(A()?G.dim(" Not available — run `asm eval "+z.path+"` to generate one."):" Not available — run `asm eval "+z.path+"` to generate one.");if(z.warnings&&z.warnings.length>0){Y.push(""),Y.push(A()?G.bold("Warnings:"):"Warnings:");for(let X of z.warnings)Y.push(` ${A()?G.yellow("!"):"!"} [${X.category}] ${X.message}`)}return Y.join(`
|
|
16
|
+
`)}function Lz(z){let Y=String(z);if(!A())return Y;if(z>=90)return G.green(Y);if(z>=80)return G.cyan(Y);if(z>=65)return G.yellow(Y);return G.red(Y)}function jz(z){if(z.evalSummaries&&Object.keys(z.evalSummaries).length>0)return Object.values(z.evalSummaries).sort(($,Z)=>{let J=$.providerId??"quality",X=Z.providerId??"quality";if(J==="quality"&&X!=="quality")return-1;if(X==="quality"&&J!=="quality")return 1;return J.localeCompare(X)});return z.evalSummary?[z.evalSummary]:[]}async function mY(z){if(z.length===0)return"No skills found.";if(z.length===1)return iz(z[0]);let Y=[],$=(U,B)=>`${A()?G.bold(U+":"):U+":"} ${B}`,Z=z[0],J=Z.name;if(Y.push(""),Y.push(A()?G.blueBold(` ${J}`):` ${J}`),Y.push(A()?G.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",h(Z.effort)));let X=Z.fileCount??await zz(Z.path);if(Y.push($(" File Count",String(X))),typeof Z.tokenCount==="number")Y.push($(" Est. Tokens",m(Z.tokenCount)));let O=z.map((U)=>u(U.provider,U.providerLabel)).join(" ");Y.push($(" Installed in",O)),Y.push(""),Y.push(A()?G.bold(" Eval Score:"):" Eval Score:");let K=jz(Z);if(K.length>0){let U=K.length>1;for(let B of K){let F=Lz(B.overallScore),L=B.providerId?`${B.providerId}@${B.providerVersion??"?"}`:"quality";if(U)Y.push(` ${L}: ${F} / 100 (${B.grade})`);else Y.push(` Overall: ${F} / 100 (${B.grade})`);let V=B.evaluatedVersion?` — version ${B.evaluatedVersion}`:"";if(Y.push(` ${A()?G.dim("Evaluated:"):"Evaluated:"} ${B.evaluatedAt}${V}`),B.categories.length>0)for(let j of B.categories)Y.push(` ${j.name.padEnd(28)} ${j.score}/${j.max}`)}}else Y.push(A()?G.dim(` Not available — run \`asm eval ${Z.path}\` to generate one.`):` Not available — run \`asm eval ${Z.path}\` to generate one.`);if(Z.description){Y.push(""),Y.push(A()?G.bold(" Description:"):" Description:");let U=Vz(Z.description,72);for(let B of U)Y.push(" "+B)}if(Z.allowedTools&&Z.allowedTools.length>0){Y.push(""),Y.push(A()?G.bold(" Allowed Tools:"):" Allowed Tools:"),Y.push(` ${Oz(Z.allowedTools)}`);let U=Kz(Z.allowedTools);if(U)Y.push(` ${A()?G.yellow("⚠"):"!"} ${U}`)}Y.push("");let Q=` Installations (${z.length})`;Y.push(A()?G.bold(Q):Q);for(let U=0;U<z.length;U++){let B=z[U],F=p(B.provider,B.providerLabel),L=B.isSymlink?"symlink":"directory",V=G.dim(B.scope);if(Y.push(` ${F} (${V}, ${L})`),Y.push(` ${G.dim("Path:")} ${C(B.path)}`),B.isSymlink&&B.symlinkTarget)Y.push(` ${G.dim("Target:")} ${B.symlinkTarget}`)}let H=z.flatMap((U)=>{if(!U.warnings||U.warnings.length===0)return[];return U.warnings.map((B)=>({...B,provider:U.providerLabel}))});if(H.length>0){Y.push("");let U=` Warnings (${H.length})`;Y.push(A()?G.bold(U):U);for(let B of H){let F=A()?G.yellow("!"):"!";Y.push(` ${F} [${B.category}] ${B.message}`)}}return Y.push(""),Y.join(`
|
|
17
|
+
`)}function Vz(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 kY(z){return JSON.stringify(z,null,2)}function uY(z){let Y=[],$=new Set,Z=new Map,J=[];for(let Q of z){let H=Z.get(Q.realPath);if(H){if(Q.isSymlink)continue;if(H.isSymlink)J[J.indexOf(H)]=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 H=X.get(Q.dirName)??[];H.push(Q),X.set(Q.dirName,H)}for(let[Q,H]of X)if(new Set(H.map((B)=>B.location)).size>=2){Y.push({key:Q,reason:"same-dirName",instances:H});for(let B of H)$.add(B.path)}let O=new Map;for(let Q of J){if(!Q.name)continue;let H=O.get(Q.name)??[];H.push(Q),O.set(Q.name,H)}for(let[Q,H]of O){if(new Set(H.map((L)=>L.dirName)).size<2)continue;let B=H.filter((L)=>!$.has(L.path));if(B.length<2)continue;if(new Set(B.map((L)=>L.dirName)).size<2)continue;Y.push({key:Q,reason:"same-frontmatterName",instances:B})}Y.sort((Q,H)=>{if(Q.reason!==H.reason)return Q.reason==="same-dirName"?-1:1;return Q.key.localeCompare(H.key)});let K=Y.reduce((Q,H)=>Q+H.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:z.length,duplicateGroups:Y,totalDuplicateInstances:K}}function lz(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 sz(z){return z==="same-dirName"?"same dirName":"same name"}function dY(z){if(z.duplicateGroups.length===0)return G.green("No duplicate skills found.");let Y=[];Y.push(""),Y.push(G.bold(` Found ${z.duplicateGroups.length} duplicate group(s) (${z.totalDuplicateInstances} total instances):`)),Y.push("");for(let $ of z.duplicateGroups){Y.push(` ${G.yellow(`"${$.key}"`)} ${G.dim(`(${sz($.reason)})`)}`);let Z=lz($.instances);for(let J=0;J<Z.length;J++){let X=Z[J],O=p(X.provider,X.providerLabel),K=J===0?G.green(" [keep]"):G.dim(" "),Q=G.dim(`(${X.scope})`);Y.push(` ${K} ${O} ${Q} ${G.dim(C(X.path))}`)}Y.push("")}return Y.push(G.dim(` Run ${G.bold("asm audit -y")} to auto-remove duplicates`)),Y.push(""),Y.join(`
|
|
18
|
+
`)}function nY(z){return JSON.stringify(z,null,2)}function tY(z){let Y=z.trim();if(!Y)return["vi",[]];let $=[],Z="",J=!1,X=0;while(X<Y.length){let O=Y[X];if(O==='"'){J=!0,X++;while(X<Y.length&&Y[X]!=='"'){if(Y[X]==="\\"&&X+1<Y.length){let K=Y[X+1];if(K==='"'||K==="\\"){Z+=K,X+=2;continue}}Z+=Y[X],X++}X++}else if(O==="'"){J=!0,X++;while(X<Y.length&&Y[X]!=="'")Z+=Y[X],X++;X++}else if(O===" "||O==="\t"){if(Z.length>0||J)$.push(Z),Z="",J=!1;X++}else Z+=O,X++}if(Z.length>0||J)$.push(Z);if($.length===0)return["vi",[]];return[$[0],$.slice(1)]}import{readFileSync as ez}from"fs";import{resolve as zY,dirname as YY}from"path";import{fileURLToPath as ZY}from"url";import{execSync as $Y}from"child_process";var JY=YY(ZY(import.meta.url)),Az="2.3.0";try{let z=ez(zY(JY,"../../package.json"),"utf-8");Az=JSON.parse(z).version}catch{}var Zz="ce4f014";try{Zz=$Y("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||Zz}catch{}var XY=Az,QY=Zz,eY=`v${XY} (${QY})`;
|
|
19
|
+
export{o as e,r as f,i as g,l as h,m as i,zz as j,FY as k,_Y as l,qY as m,dz as n,EY as o,DY as p,WY as q,G as r,h as s,p as t,C as u,CY as v,yY as w,PY as x,az as y,bY as z,vY as A,hY as B,fY as C,gY as D,Hz as E,oz as F,mY as G,Vz as H,kY as I,uY as J,lz as K,sz as L,dY as M,nY as N,XY as O,eY as P,tY as Q};
|
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};
|