agent-skill-manager 2.0.0 → 2.1.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 +2 -2
- package/data/skill-index/Affitor_affiliate-skills.json +62 -2
- package/data/skill-index/Eronred_aso-skills.json +1 -1
- package/data/skill-index/GPTomics_bioSkills.json +173 -17
- package/data/skill-index/Galaxy-Dawn_claude-scholar.json +14 -2
- package/data/skill-index/Imbad0202_academic-research-skills.json +19 -19
- package/data/skill-index/K-Dense-AI_claude-scientific-skills.json +39 -555
- package/data/skill-index/Leonxlnx_taste-skill.json +14 -2
- package/data/skill-index/Master-cai_Research-Paper-Writing-Skills.json +1 -1
- package/data/skill-index/MiniMax-AI_skills.json +103 -7
- package/data/skill-index/affaan-m_everything-claude-code.json +4045 -733
- package/data/skill-index/alirezarezvani_claude-skills.json +686 -2
- package/data/skill-index/anthropics_skills.json +2 -2
- package/data/skill-index/bytedance_deer-flow.json +62 -2
- package/data/skill-index/coreyhaines31_marketingskills.json +44 -8
- package/data/skill-index/github_awesome-copilot.json +3142 -898
- package/data/skill-index/heygen-com_hyperframes.json +69 -0
- package/data/skill-index/himself65_finance-skills.json +175 -19
- package/data/skill-index/kemiljk_fluid-design.json +1 -1
- package/data/skill-index/kepano_obsidian-skills.json +2 -2
- package/data/skill-index/luongnv89_skills.json +47 -35
- package/data/skill-index/mattpocock_skills.json +70 -34
- package/data/skill-index/nextlevelbuilder_ui-ux-pro-max-skill.json +1 -1
- package/data/skill-index/obra_superpowers.json +1 -1
- package/data/skill-index/sickn33_antigravity-awesome-skills.json +42937 -5491
- package/data/skill-index/slavingia_skills.json +1 -1
- package/data/skill-index-resources.json +10 -1
- package/dist/agent-skill-manager.js +3 -3
- package/dist/{chunk-b5czdh0p.js → chunk-6mbpytcj.js} +1 -1
- package/dist/{chunk-2kpv20e1.js → chunk-x537ndd4.js} +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"updatedAt": "2026-
|
|
2
|
+
"updatedAt": "2026-04-20T00:00:00Z",
|
|
3
3
|
"repos": [
|
|
4
4
|
{
|
|
5
5
|
"source": "github:anthropics/skills",
|
|
@@ -216,6 +216,15 @@
|
|
|
216
216
|
"description": "Academic and research-oriented workflow skills for students and researchers",
|
|
217
217
|
"maintainer": "@Imbad0202",
|
|
218
218
|
"enabled": true
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"source": "github:heygen-com/hyperframes",
|
|
222
|
+
"url": "https://github.com/heygen-com/hyperframes",
|
|
223
|
+
"owner": "heygen-com",
|
|
224
|
+
"repo": "hyperframes",
|
|
225
|
+
"description": "Write HTML. Render video. Built for agents.",
|
|
226
|
+
"maintainer": "@heygen-com",
|
|
227
|
+
"enabled": true
|
|
219
228
|
}
|
|
220
229
|
]
|
|
221
230
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as k0,b as bq,c as GZ,d as YZ}from"./chunk-1becp2v6.js";import{A as JZ,B as c,C as p9,D as UZ,F as HZ,G as WZ,H as y8,I as d9,J as VZ,e as s,f as z0,g as e9,i as a,j as s8,k as g9,l as t8,m as r8,n as u9,o as e8,p as U,q as qZ,r as S5,s as $Z,t as m9,u as ZZ,v as QZ,w as XZ,z as zZ}from"./chunk-
|
|
2
|
+
import{a as k0,b as bq,c as GZ,d as YZ}from"./chunk-1becp2v6.js";import{A as JZ,B as c,C as p9,D as UZ,F as HZ,G as WZ,H as y8,I as d9,J as VZ,e as s,f as z0,g as e9,i as a,j as s8,k as g9,l as t8,m as r8,n as u9,o as e8,p as U,q as qZ,r as S5,s as $Z,t as m9,u as ZZ,v as QZ,w as XZ,z as zZ}from"./chunk-6mbpytcj.js";import{K as g,L as N,M as v,N as a8,O as E,P as o8,Q as xq,R as X8,S as fq,T as g8,U as X0,V as h,W as i8}from"./chunk-a26gjzjk.js";var k=N((tZ)=>{var e$=Symbol.for("yaml.alias"),G4=Symbol.for("yaml.document"),lq=Symbol.for("yaml.map"),Y4=Symbol.for("yaml.pair"),q2=Symbol.for("yaml.scalar"),nq=Symbol.for("yaml.seq"),B0=Symbol.for("yaml.node.type"),cZ=(q)=>!!q&&typeof q==="object"&&q[B0]===e$,lZ=(q)=>!!q&&typeof q==="object"&&q[B0]===G4,nZ=(q)=>!!q&&typeof q==="object"&&q[B0]===lq,aZ=(q)=>!!q&&typeof q==="object"&&q[B0]===Y4,U4=(q)=>!!q&&typeof q==="object"&&q[B0]===q2,oZ=(q)=>!!q&&typeof q==="object"&&q[B0]===nq;function H4(q){if(q&&typeof q==="object")switch(q[B0]){case lq:case nq:return!0}return!1}function iZ(q){if(q&&typeof q==="object")switch(q[B0]){case e$:case lq:case q2:case nq:return!0}return!1}var sZ=(q)=>(U4(q)||H4(q))&&!!q.anchor;tZ.ALIAS=e$;tZ.DOC=G4;tZ.MAP=lq;tZ.NODE_TYPE=B0;tZ.PAIR=Y4;tZ.SCALAR=q2;tZ.SEQ=nq;tZ.hasAnchor=sZ;tZ.isAlias=cZ;tZ.isCollection=H4;tZ.isDocument=lZ;tZ.isMap=nZ;tZ.isNode=iZ;tZ.isPair=aZ;tZ.isScalar=U4;tZ.isSeq=oZ});var Gq=N((K6)=>{var m=k(),n=Symbol("break visit"),W4=Symbol("skip children"),Y0=Symbol("remove node");function aq(q,$){let Z=V4($);if(m.isDocument(q)){if(a0(null,q.contents,Z,Object.freeze([q]))===Y0)q.contents=null}else a0(null,q,Z,Object.freeze([]))}aq.BREAK=n;aq.SKIP=W4;aq.REMOVE=Y0;function a0(q,$,Z,Q){let X=B4(q,$,Z,Q);if(m.isNode(X)||m.isPair(X))return K4(q,Q,X),a0(q,X,Z,Q);if(typeof X!=="symbol"){if(m.isCollection($)){Q=Object.freeze(Q.concat($));for(let z=0;z<$.items.length;++z){let J=a0(z,$.items[z],Z,Q);if(typeof J==="number")z=J-1;else if(J===n)return n;else if(J===Y0)$.items.splice(z,1),z-=1}}else if(m.isPair($)){Q=Object.freeze(Q.concat($));let z=a0("key",$.key,Z,Q);if(z===n)return n;else if(z===Y0)$.key=null;let J=a0("value",$.value,Z,Q);if(J===n)return n;else if(J===Y0)$.value=null}}return X}async function oq(q,$){let Z=V4($);if(m.isDocument(q)){if(await o0(null,q.contents,Z,Object.freeze([q]))===Y0)q.contents=null}else await o0(null,q,Z,Object.freeze([]))}oq.BREAK=n;oq.SKIP=W4;oq.REMOVE=Y0;async function o0(q,$,Z,Q){let X=await B4(q,$,Z,Q);if(m.isNode(X)||m.isPair(X))return K4(q,Q,X),o0(q,X,Z,Q);if(typeof X!=="symbol"){if(m.isCollection($)){Q=Object.freeze(Q.concat($));for(let z=0;z<$.items.length;++z){let J=await o0(z,$.items[z],Z,Q);if(typeof J==="number")z=J-1;else if(J===n)return n;else if(J===Y0)$.items.splice(z,1),z-=1}}else if(m.isPair($)){Q=Object.freeze(Q.concat($));let z=await o0("key",$.key,Z,Q);if(z===n)return n;else if(z===Y0)$.key=null;let J=await o0("value",$.value,Z,Q);if(J===n)return n;else if(J===Y0)$.value=null}}return X}function V4(q){if(typeof q==="object"&&(q.Collection||q.Node||q.Value))return Object.assign({Alias:q.Node,Map:q.Node,Scalar:q.Node,Seq:q.Node},q.Value&&{Map:q.Value,Scalar:q.Value,Seq:q.Value},q.Collection&&{Map:q.Collection,Seq:q.Collection},q);return q}function B4(q,$,Z,Q){if(typeof Z==="function")return Z(q,$,Q);if(m.isMap($))return Z.Map?.(q,$,Q);if(m.isSeq($))return Z.Seq?.(q,$,Q);if(m.isPair($))return Z.Pair?.(q,$,Q);if(m.isScalar($))return Z.Scalar?.(q,$,Q);if(m.isAlias($))return Z.Alias?.(q,$,Q);return}function K4(q,$,Z){let Q=$[$.length-1];if(m.isCollection(Q))Q.items[q]=Z;else if(m.isPair(Q))if(q==="key")Q.key=Z;else Q.value=Z;else if(m.isDocument(Q))Q.contents=Z;else{let X=m.isAlias(Q)?"alias":"scalar";throw Error(`Cannot replace node with ${X} parent`)}}K6.visit=aq;K6.visitAsync=oq});var $2=N((A6)=>{var _4=k(),O6=Gq(),F6={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},I6=(q)=>q.replace(/[!,[\]{}]/g,($)=>F6[$]);class t{constructor(q,$){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,q),this.tags=Object.assign({},t.defaultTags,$)}clone(){let q=new t(this.yaml,this.tags);return q.docStart=this.docStart,q}atDocument(){let q=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return q}add(q,$){if(this.atNextDocument)this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1;let Z=q.trim().split(/[ \t]+/),Q=Z.shift();switch(Q){case"%TAG":{if(Z.length!==2){if($(0,"%TAG directive should contain exactly two parts"),Z.length<2)return!1}let[X,z]=Z;return this.tags[X]=z,!0}case"%YAML":{if(this.yaml.explicit=!0,Z.length!==1)return $(0,"%YAML directive should contain exactly one part"),!1;let[X]=Z;if(X==="1.1"||X==="1.2")return this.yaml.version=X,!0;else{let z=/^\d+\.\d+$/.test(X);return $(6,`Unsupported YAML version ${X}`,z),!1}}default:return $(0,`Unknown directive ${Q}`,!0),!1}}tagName(q,$){if(q==="!")return"!";if(q[0]!=="!")return $(`Not a valid tag: ${q}`),null;if(q[1]==="<"){let z=q.slice(2,-1);if(z==="!"||z==="!!")return $(`Verbatim tags aren't resolved, so ${q} is invalid.`),null;if(q[q.length-1]!==">")$("Verbatim tags must end with a >");return z}let[,Z,Q]=q.match(/^(.*!)([^!]*)$/s);if(!Q)$(`The ${q} tag has no suffix`);let X=this.tags[Z];if(X)try{return X+decodeURIComponent(Q)}catch(z){return $(String(z)),null}if(Z==="!")return q;return $(`Could not resolve tag: ${q}`),null}tagString(q){for(let[$,Z]of Object.entries(this.tags))if(q.startsWith(Z))return $+I6(q.substring(Z.length));return q[0]==="!"?q:`!<${q}>`}toString(q){let $=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],Z=Object.entries(this.tags),Q;if(q&&Z.length>0&&_4.isNode(q.contents)){let X={};O6.visit(q.contents,(z,J)=>{if(_4.isNode(J)&&J.tag)X[J.tag]=!0}),Q=Object.keys(X)}else Q=[];for(let[X,z]of Z){if(X==="!!"&&z==="tag:yaml.org,2002:")continue;if(!q||Q.some((J)=>J.startsWith(z)))$.push(`%TAG ${X} ${z}`)}return $.join(`
|
|
3
3
|
`)}}t.defaultYaml={explicit:!1,version:"1.2"};t.defaultTags={"!!":"tag:yaml.org,2002:"};A6.Directives=t});var iq=N((D6)=>{var L4=k(),M6=Gq();function j6(q){if(/[\x00-\x19\s,[\]{}]/.test(q)){let Z=`Anchor must not contain whitespace or control characters: ${JSON.stringify(q)}`;throw Error(Z)}return!0}function O4(q){let $=new Set;return M6.visit(q,{Value(Z,Q){if(Q.anchor)$.add(Q.anchor)}}),$}function F4(q,$){for(let Z=1;;++Z){let Q=`${q}${Z}`;if(!$.has(Q))return Q}}function R6(q,$){let Z=[],Q=new Map,X=null;return{onAnchor:(z)=>{Z.push(z),X??(X=O4(q));let J=F4($,X);return X.add(J),J},setAnchors:()=>{for(let z of Z){let J=Q.get(z);if(typeof J==="object"&&J.anchor&&(L4.isScalar(J.node)||L4.isCollection(J.node)))J.node.anchor=J.anchor;else{let G=Error("Failed to resolve repeated object (this should not happen)");throw G.source=z,G}}},sourceObjects:Q}}D6.anchorIsValid=j6;D6.anchorNames=O4;D6.createNodeAnchors=R6;D6.findNewAnchor=F4});var Z2=N((E6)=>{function Yq(q,$,Z,Q){if(Q&&typeof Q==="object")if(Array.isArray(Q))for(let X=0,z=Q.length;X<z;++X){let J=Q[X],G=Yq(q,Q,String(X),J);if(G===void 0)delete Q[X];else if(G!==J)Q[X]=G}else if(Q instanceof Map)for(let X of Array.from(Q.keys())){let z=Q.get(X),J=Yq(q,Q,X,z);if(J===void 0)Q.delete(X);else if(J!==z)Q.set(X,J)}else if(Q instanceof Set)for(let X of Array.from(Q)){let z=Yq(q,Q,X,X);if(z===void 0)Q.delete(X);else if(z!==X)Q.delete(X),Q.add(z)}else for(let[X,z]of Object.entries(Q)){let J=Yq(q,Q,X,z);if(J===void 0)delete Q[X];else if(J!==z)Q[X]=J}return q.call($,Z,Q)}E6.applyReviver=Yq});var _0=N((x6)=>{var b6=k();function I4(q,$,Z){if(Array.isArray(q))return q.map((Q,X)=>I4(Q,String(X),Z));if(q&&typeof q.toJSON==="function"){if(!Z||!b6.hasAnchor(q))return q.toJSON($,Z);let Q={aliasCount:0,count:1,res:void 0};Z.anchors.set(q,Q),Z.onCreate=(z)=>{Q.res=z,delete Z.onCreate};let X=q.toJSON($,Z);if(Z.onCreate)Z.onCreate(X);return X}if(typeof q==="bigint"&&!Z?.keep)return Number(q);return q}x6.toJS=I4});var sq=N((v6)=>{var f6=Z2(),A4=k(),k6=_0();class T4{constructor(q){Object.defineProperty(this,A4.NODE_TYPE,{value:q})}clone(){let q=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)q.range=this.range.slice();return q}toJS(q,{mapAsMap:$,maxAliasCount:Z,onAnchor:Q,reviver:X}={}){if(!A4.isDocument(q))throw TypeError("A document argument is required");let z={anchors:new Map,doc:q,keep:!0,mapAsMap:$===!0,mapKeyWarned:!1,maxAliasCount:typeof Z==="number"?Z:100},J=k6.toJS(this,"",z);if(typeof Q==="function")for(let{count:G,res:Y}of z.anchors.values())Q(Y,G);return typeof X==="function"?f6.applyReviver(X,{"":J},"",J):J}}v6.NodeBase=T4});var Uq=N((d6)=>{var g6=iq(),u6=Gq(),i0=k(),m6=sq(),p6=_0();class M4 extends m6.NodeBase{constructor(q){super(i0.ALIAS);this.source=q,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve(q,$){let Z;if($?.aliasResolveCache)Z=$.aliasResolveCache;else if(Z=[],u6.visit(q,{Node:(X,z)=>{if(i0.isAlias(z)||i0.hasAnchor(z))Z.push(z)}}),$)$.aliasResolveCache=Z;let Q=void 0;for(let X of Z){if(X===this)break;if(X.anchor===this.source)Q=X}return Q}toJSON(q,$){if(!$)return{source:this.source};let{anchors:Z,doc:Q,maxAliasCount:X}=$,z=this.resolve(Q,$);if(!z){let G=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(G)}let J=Z.get(z);if(!J)p6.toJS(z,null,$),J=Z.get(z);if(J?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(X>=0){if(J.count+=1,J.aliasCount===0)J.aliasCount=tq(Q,z,Z);if(J.count*J.aliasCount>X)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}return J.res}toString(q,$,Z){let Q=`*${this.source}`;if(q){if(g6.anchorIsValid(this.source),q.options.verifyAliasOrder&&!q.anchors.has(this.source)){let X=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(X)}if(q.implicitKey)return`${Q} `}return Q}}function tq(q,$,Z){if(i0.isAlias($)){let Q=$.resolve(q),X=Z&&Q&&Z.get(Q);return X?X.count*X.aliasCount:0}else if(i0.isCollection($)){let Q=0;for(let X of $.items){let z=tq(q,X,Z);if(z>Q)Q=z}return Q}else if(i0.isPair($)){let Q=tq(q,$.key,Z),X=tq(q,$.value,Z);return Math.max(Q,X)}return 1}d6.Alias=M4});var u=N((i6)=>{var l6=k(),n6=sq(),a6=_0(),o6=(q)=>!q||typeof q!=="function"&&typeof q!=="object";class P0 extends n6.NodeBase{constructor(q){super(l6.SCALAR);this.value=q}toJSON(q,$){return $?.keep?this.value:a6.toJS(this.value,q,$)}toString(){return String(this.value)}}P0.BLOCK_FOLDED="BLOCK_FOLDED";P0.BLOCK_LITERAL="BLOCK_LITERAL";P0.PLAIN="PLAIN";P0.QUOTE_DOUBLE="QUOTE_DOUBLE";P0.QUOTE_SINGLE="QUOTE_SINGLE";i6.Scalar=P0;i6.isScalarValue=o6});var Hq=N((Z7)=>{var r6=Uq(),C0=k(),j4=u(),e6="tag:yaml.org,2002:";function q7(q,$,Z){if($){let Q=Z.filter((z)=>z.tag===$),X=Q.find((z)=>!z.format)??Q[0];if(!X)throw Error(`Tag ${$} not found`);return X}return Z.find((Q)=>Q.identify?.(q)&&!Q.format)}function $7(q,$,Z){if(C0.isDocument(q))q=q.contents;if(C0.isNode(q))return q;if(C0.isPair(q)){let W=Z.schema[C0.MAP].createNode?.(Z.schema,null,Z);return W.items.push(q),W}if(q instanceof String||q instanceof Number||q instanceof Boolean||typeof BigInt<"u"&&q instanceof BigInt)q=q.valueOf();let{aliasDuplicateObjects:Q,onAnchor:X,onTagObj:z,schema:J,sourceObjects:G}=Z,Y=void 0;if(Q&&q&&typeof q==="object")if(Y=G.get(q),Y)return Y.anchor??(Y.anchor=X(q)),new r6.Alias(Y.anchor);else Y={anchor:null,node:null},G.set(q,Y);if($?.startsWith("!!"))$=e6+$.slice(2);let H=q7(q,$,J.tags);if(!H){if(q&&typeof q.toJSON==="function")q=q.toJSON();if(!q||typeof q!=="object"){let W=new j4.Scalar(q);if(Y)Y.node=W;return W}H=q instanceof Map?J[C0.MAP]:(Symbol.iterator in Object(q))?J[C0.SEQ]:J[C0.MAP]}if(z)z(H),delete Z.onTagObj;let V=H?.createNode?H.createNode(Z.schema,q,Z):typeof H?.nodeClass?.from==="function"?H.nodeClass.from(Z.schema,q,Z):new j4.Scalar(q);if($)V.tag=$;else if(!H.default)V.tag=H.tag;if(Y)Y.node=V;return V}Z7.createNode=$7});var rq=N((J7)=>{var X7=Hq(),U0=k(),z7=sq();function Q2(q,$,Z){let Q=Z;for(let X=$.length-1;X>=0;--X){let z=$[X];if(typeof z==="number"&&Number.isInteger(z)&&z>=0){let J=[];J[z]=Q,Q=J}else Q=new Map([[z,Q]])}return X7.createNode(Q,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:q,sourceObjects:new Map})}var R4=(q)=>q==null||typeof q==="object"&&!!q[Symbol.iterator]().next().done;class D4 extends z7.NodeBase{constructor(q,$){super(q);Object.defineProperty(this,"schema",{value:$,configurable:!0,enumerable:!1,writable:!0})}clone(q){let $=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(q)$.schema=q;if($.items=$.items.map((Z)=>U0.isNode(Z)||U0.isPair(Z)?Z.clone(q):Z),this.range)$.range=this.range.slice();return $}addIn(q,$){if(R4(q))this.add($);else{let[Z,...Q]=q,X=this.get(Z,!0);if(U0.isCollection(X))X.addIn(Q,$);else if(X===void 0&&this.schema)this.set(Z,Q2(this.schema,Q,$));else throw Error(`Expected YAML collection at ${Z}. Remaining path: ${Q}`)}}deleteIn(q){let[$,...Z]=q;if(Z.length===0)return this.delete($);let Q=this.get($,!0);if(U0.isCollection(Q))return Q.deleteIn(Z);else throw Error(`Expected YAML collection at ${$}. Remaining path: ${Z}`)}getIn(q,$){let[Z,...Q]=q,X=this.get(Z,!0);if(Q.length===0)return!$&&U0.isScalar(X)?X.value:X;else return U0.isCollection(X)?X.getIn(Q,$):void 0}hasAllNullValues(q){return this.items.every(($)=>{if(!U0.isPair($))return!1;let Z=$.value;return Z==null||q&&U0.isScalar(Z)&&Z.value==null&&!Z.commentBefore&&!Z.comment&&!Z.tag})}hasIn(q){let[$,...Z]=q;if(Z.length===0)return this.has($);let Q=this.get($,!0);return U0.isCollection(Q)?Q.hasIn(Z):!1}setIn(q,$){let[Z,...Q]=q;if(Q.length===0)this.set(Z,$);else{let X=this.get(Z,!0);if(U0.isCollection(X))X.setIn(Q,$);else if(X===void 0&&this.schema)this.set(Z,Q2(this.schema,Q,$));else throw Error(`Expected YAML collection at ${Z}. Remaining path: ${Q}`)}}}J7.Collection=D4;J7.collectionFromPath=Q2;J7.isEmptyPath=R4});var Wq=N((V7)=>{var H7=(q)=>q.replace(/^(?!$)(?: $)?/gm,"#");function X2(q,$){if(/^\n+$/.test(q))return q.substring(1);return $?q.replace(/^(?! *$)/gm,$):q}var W7=(q,$,Z)=>q.endsWith(`
|
|
4
4
|
`)?X2(Z,$):Z.includes(`
|
|
5
5
|
`)?`
|
|
@@ -151,7 +151,7 @@ Supported formats:
|
|
|
151
151
|
./relative/path/to/skill`);let Z=q.slice(7),Q=Z.indexOf("#"),X,z=null,J=null;if(Q!==-1){X=Z.slice(0,Q);let W=Z.slice(Q+1);if(!W)throw Error("Invalid source: ref cannot be empty after #");let B=W.indexOf(":");if(B!==-1){if(z=W.slice(0,B),!z)throw Error("Invalid source: ref cannot be empty before :");J=W.slice(B+1)||null}else z=W}else{let W=Z.indexOf(":");if(W!==-1)X=Z.slice(0,W),J=Z.slice(W+1)||null;else X=Z}let G=X.indexOf("/");if(G===-1)throw Error(`Invalid source: format must be github:owner/repo. Got: "${q}"`);let Y=X.slice(0,G),H=X.slice(G+1);if(!Y)throw Error("Invalid source: owner cannot be empty");if(!H)throw Error("Invalid source: repo cannot be empty");if(!fZ.test(Y))throw Error(`Invalid source: owner contains invalid characters: "${Y}". Allowed: [a-zA-Z0-9_-]`);if(!kZ.test(H))throw Error(`Invalid source: repo contains invalid characters: "${H}". Allowed: [a-zA-Z0-9._-]`);let V={owner:Y,repo:H,ref:z,subpath:J,cloneUrl:`https://github.com/${Y}/${H}.git`,sshCloneUrl:`git@github.com:${Y}/${H}.git`};return E(`install: parsed source -> owner=${Y} repo=${H} ref=${z} subpath=${J}`),V}async function t$(q){if(q.subpath!==null||!q.ref||!q.ref.includes("/"))return q;try{let{stdout:$}=await D0("git",["ls-remote","--heads","--tags",q.cloneUrl],{timeout:15000}),Z=new Set;for(let X of $.split(`
|
|
152
152
|
`)){let z=X.match(/\trefs\/(?:heads|tags)\/(.+)$/);if(z)Z.add(z[1])}let Q=q.ref.split("/");for(let X=1;X<Q.length;X++){let z=Q.slice(0,X).join("/");if(Z.has(z)){let J=Q.slice(X).join("/");return E(`install: resolved ref="${z}" subpath="${J}"`),{...q,ref:z,subpath:J||null}}}}catch($){E(`install: ls-remote failed, treating entire ref as branch: ${$}`)}return q}function N0(q){if(!q)throw Error("Invalid skill name: name cannot be empty");if(q.includes("\x00"))throw Error("Invalid skill name: contains unsafe characters (null byte)");if(q.includes(".."))throw Error("Invalid skill name: contains unsafe characters (..)");if(q.includes("/")||q.includes("\\"))throw Error("Invalid skill name: contains unsafe characters (path separator)");if(q.startsWith("."))throw Error("Invalid skill name: must not start with a dot");if(q.length>r9)throw Error(`Invalid skill name: exceeds maximum length of ${r9} characters`);if(!vZ.test(q))throw Error(`Invalid skill name: "${q}" does not match allowed pattern [a-zA-Z0-9][a-zA-Z0-9._-]*`);return q}function mZ(q){let $=q.split(/[/\\]/).filter(Boolean),Z=$.length>0?$[$.length-1]:q;return N0(Z)}function q4(q){let $=new Map;for(let Z of q){let Q=mZ(Z),X=$.get(Q);if(X)X.push(Z);else $.set(Q,[Z])}return[...$.entries()].filter(([,Z])=>Z.length>1).map(([Z,Q])=>({name:Z,paths:Q}))}async function c0(){try{await D0("git",["--version"]),E("install: git available")}catch{throw Error("git is required for installing skills. Install git from https://git-scm.com")}}function pZ(q){if(q.killed)return!1;let $=(q.stderr||q.message||"").toLowerCase();return $.includes("authentication failed")||$.includes("could not read username")||$.includes("repository not found")||$.includes("returned error: 403")||$.includes("returned error: 401")||$.includes("terminal prompts disabled")||$.includes("permission denied")}function mq(q){return q.killed?"Clone timed out after 60 seconds":`Clone failed: ${q.stderr||q.message}`}async function o$(q,$,Z){if($!==null&&/^[0-9a-f]{40}$/i.test($))return await D0("git",["clone","--no-checkout",q,Z],{timeout:60000}),await D0("git",["checkout",$],{cwd:Z,timeout:30000}),Z;let X=["clone","--depth","1"];if($)X.push("--branch",$);return X.push(q,Z),await D0("git",X,{timeout:60000}),Z}async function l0(q,$="auto"){E(`install: cloning ${q.owner}/${q.repo}${q.ref?` (ref: ${q.ref})`:""} (transport: ${$})`);let Z=await o9(V0(t9(),"asm-install-"));if($==="ssh"||$==="https"){let Q=$==="ssh"?q.sshCloneUrl:q.cloneUrl;try{return await o$(Q,q.ref,Z)}catch(X){throw await Q0(Z),Error(mq(X))}}try{return await o$(q.cloneUrl,q.ref,Z)}catch(Q){if(!pZ(Q))throw await Q0(Z),Error(mq(Q));E("install: HTTPS clone failed with auth error, retrying with SSH..."),await Q0(Z);let X=await o9(V0(t9(),"asm-install-"));try{return await o$(q.sshCloneUrl,q.ref,X)}catch(z){throw await Q0(X),Error(`Clone failed with both transports:
|
|
153
153
|
HTTPS: ${mq(Q)}
|
|
154
|
-
SSH: ${mq(z)}`)}}}async function w0(q){let $=V0(q,"SKILL.md"),Z;try{Z=await s$($,"utf-8")}catch{throw Error("Not a valid skill: SKILL.md not found in repository root")}let Q=s(Z),X=q.split(/[/\\]/).pop()||"unknown",z=Q.name||X,J=z0(Q);return E(`install: validated skill "${z}" v${J}`),{name:z,version:J,description:(Q.description||"").replace(/\s*\n\s*/g," ").trim(),effort:Q.effort||Q["metadata.effort"]||void 0}}async function dq(q,$=
|
|
154
|
+
SSH: ${mq(z)}`)}}}async function w0(q){let $=V0(q,"SKILL.md"),Z;try{Z=await s$($,"utf-8")}catch{throw Error("Not a valid skill: SKILL.md not found in repository root")}let Q=s(Z),X=q.split(/[/\\]/).pop()||"unknown",z=Q.name||X,J=z0(Q);return E(`install: validated skill "${z}" v${J}`),{name:z,version:J,description:(Q.description||"").replace(/\s*\n\s*/g," ").trim(),effort:Q.effort||Q["metadata.effort"]||void 0}}async function dq(q,$=5){let Z=[];async function Q(X,z,J){let G;try{G=await wZ(X)}catch{return}for(let Y of G){if(Y===".git"||Y==="node_modules")continue;let H=V0(X,Y);try{if(!(await CZ(H)).isDirectory())continue}catch{continue}let V=z?`${z}/${Y}`:Y,W=J+1,B=V0(H,"SKILL.md");try{let _=await s$(B,"utf-8"),L=s(_);Z.push({relPath:V,name:L.name||Y,version:z0(L),description:(L.description||"").replace(/\s*\n\s*/g," ").trim(),effort:L.effort||L["metadata.effort"]||void 0,license:(L.license||"").trim(),creator:(L["metadata.creator"]||"").trim(),compatibility:(L.compatibility||"").trim(),allowedTools:e9(L)})}catch{if(W<$)await Q(H,V,W)}}}return await Q(q,"",0),Z.sort((X,z)=>X.name.localeCompare(z.name)),Z}var dZ=[{category:"Shell commands",pattern:/\b(bash|sh\s+-c)\b/},{category:"Shell commands",pattern:/\bexec\(/},{category:"Shell commands",pattern:/\bchild_process\b/},{category:"Shell commands",pattern:/\bBun\.spawn\b/},{category:"Code execution",pattern:/\beval\(/},{category:"Code execution",pattern:/\bFunction\(/},{category:"Code execution",pattern:/\bnew\s+Function\b/},{category:"Credentials",pattern:/\b(API_KEY|SECRET|TOKEN|PASSWORD)\s*[=:]/},{category:"External URLs",pattern:/https?:\/\//}];async function $4(q){let $=[],Z=await uq(q);for(let{relPath:Q,content:X}of Z){let z=X.split(`
|
|
155
155
|
`);for(let J=0;J<z.length;J++)for(let{category:G,pattern:Y}of dZ)if(Y.test(z[J])){let H=z[J].trim();$.push({category:G,file:Q,line:J+1,match:H.length>100?H.slice(0,100)+"…":H})}}return $}async function cq(q){let $=q.source.isLocal?`local:${q.source.localPath}`:`github:${q.source.owner}/${q.source.repo}${q.source.ref?`#${q.source.ref}`:""}${q.source.subpath?`:${q.source.subpath}`:""}`;if(q.force)try{await i$(q.targetDir),await pq(q.targetDir,{recursive:!0,force:!0})}catch{}let Z=q.sourceDir;try{await PZ(Z,q.targetDir,{recursive:!0})}catch(G){throw Error(`Failed to install: ${G.message}`)}let Q=V0(q.targetDir,".git");try{await pq(Q,{recursive:!0,force:!0})}catch{}E(`install: copied files to ${q.targetDir}`);let X=V0(q.targetDir,"SKILL.md");try{await i$(X)}catch{throw Error("Installation verification failed: SKILL.md not found at target")}let z=await s$(X,"utf-8"),J=s(z);return{success:!0,path:q.targetDir,name:J.name||q.skillName,version:z0(J),provider:q.providerLabel,source:$}}async function Z4(q,$){let Z=await cq(q);for(let Q of $){if(Q.name===q.providerName)continue;let X=q.scope==="project"?Q.project:Q.global,z=X0(X),J=V0(z,q.skillName);await bZ(z,{recursive:!0});try{if((await EZ(J)).isSymbolicLink())await pq(J);else{E(`install: skipping ${J} — existing non-symlink directory`);continue}}catch{}let G=xZ(z,q.targetDir);await SZ(G,J,"dir"),E(`install: symlinked ${J} -> ${G}`)}return Z.provider=`All (${$.map((Q)=>Q.label).join(", ")})`,Z}async function Q0(q){try{await pq(q,{recursive:!0,force:!0})}catch{}}async function Q4(){try{await D0("npx",["--version"]),E("install: npx available")}catch{throw Error("npx is required for Vercel method installation. Install Node.js from https://nodejs.org")}}async function X4(q,$){let Z=["--yes","skills","add",q];if($)Z.push("--skill",$);E(`install: running npx ${Z.join(" ")}`);try{let Q=await D0("npx",Z,{timeout:120000});return{stdout:Q.stdout,stderr:Q.stderr}}catch(Q){let X=Q.stderr||Q.message||"";throw Error(`npx skills add failed: ${X}`)}}function z4(q){if(q.isLocal)return q.localPath;let $=`https://github.com/${q.owner}/${q.repo}`;if(q.ref)return`${$}/tree/${q.ref}${q.subpath?`/${q.subpath}`:""}`;return $}async function n0(q,$,Z){let Q=q.providers.filter((_)=>_.enabled);if($==="all"){if(Q.length===0)throw Error("No providers are enabled. Enable a provider in your config.");return{provider:Q.find((L)=>L.name==="agents")||Q[0],allProviders:Q}}if($){let _=q.providers.find((L)=>L.name===$);if(!_){let L=q.providers.map((K)=>K.name).join(", ");throw Error(`Unknown provider: "${$}". Valid providers: ${L}, all`)}if(!_.enabled)throw Error(`Provider "${$}" is disabled. Enable it in your config or choose another provider.`);return{provider:_,allProviders:null}}if(Q.length===1)return{provider:Q[0],allProviders:null};if(!Z){if(Q.length===0)throw Error("No providers are enabled. Enable a provider in your config.");let _=Q.map((L)=>L.name).join(", ");throw Error(`--tool (or --provider) is required in non-interactive mode. Available: ${_}, all`)}let X=q.preferences.selectedTools,J=X&&X.length>0?new Set(X):null,G=q.providers.map((_)=>({label:`${_.label} (${_.name})`,hint:_.global,checked:J?J.has(_.name):_.name==="agents"})),Y=await p0({items:G});if(Y.length===0)throw Error("No tools selected. Aborting.");let H=Y.map((_)=>q.providers[_]),V=H.map((_)=>_.name),{saveSelectedTools:W}=await import("./chunk-a26gjzjk.js");if(await W(V),H.length===1)return{provider:H[0],allProviders:null};return{provider:H.find((_)=>_.name==="agents")||H[0],allProviders:H}}function r$(q,$,Z,Q,X,z,J="global"){let G=J==="project"?X.project:X.global,Y=X0(G),H=V0(Y,Q);return{source:q,tempDir:$,sourceDir:Z,targetDir:H,skillName:Q,force:z,providerName:X.name,providerLabel:X.label,scope:J}}async function J4(q,$){try{if(await i$(q),E(`install: target ${q} — conflict (exists)${$?", force overwrite":""}`),!$)throw Error(`Skill already exists at: ${q}
|
|
156
156
|
Use --force to overwrite.`)}catch(Z){if(Z.message?.includes("--force"))throw Z;E(`install: target ${q} — no conflict`)}}import{readFile as gY}from"fs/promises";import{join as uY}from"path";var $Y=t2(),ZY=Rq(),QY=f2(),U9=Dq(),XY=Uq(),j0=k(),zY=F0(),JY=u(),GY=A0(),YY=T0(),DK=P$(),UY=J9(),HY=G9(),WY=Y9(),S$=B5(),K5=Gq();var VY=$Y.Composer,BY=ZY.Document,KY=QY.Schema,_Y=U9.YAMLError,LY=U9.YAMLParseError,OY=U9.YAMLWarning,FY=XY.Alias,IY=j0.isAlias,AY=j0.isCollection,TY=j0.isDocument,MY=j0.isMap,jY=j0.isNode,RY=j0.isPair,DY=j0.isScalar,NY=j0.isSeq,wY=zY.Pair,PY=JY.Scalar,CY=GY.YAMLMap,EY=YY.YAMLSeq;var SY=UY.Lexer,bY=HY.LineCounter,xY=WY.Parser,H9=S$.parse,yY=S$.parseAllDocuments,fY=S$.parseDocument,kY=S$.stringify,vY=K5.visit,hY=K5.visitAsync;var _5=500;function mY(q){let $=q.split(`
|
|
157
157
|
`),Z=!1,Q=!1;for(let X of $){if(X.trim()==="---")if(!Z){Z=!0;continue}else{Q=!0;continue}if(Q&&X.trim().length>0)return!0}return!1}function pY(q){let $=q.split(`
|
|
@@ -762,4 +762,4 @@ ${U.bold("Install all skills from this bundle?")} [y/N] `);let W=await $0();if(W
|
|
|
762
762
|
`)),console.log(JSON.stringify(X.manifest,null,2));return}if(X.prUrl)console.error(U.green("Published successfully!")),console.error(""),console.error(` PR: ${X.prUrl}`),console.error(` Manifest: manifests/${X.manifest?.author}/${X.manifest?.name}.json`),console.error(` Security: ${X.securityVerdict}`),console.error(""),console.error(U.dim("The registry maintainers will review your submission."))}catch(X){let z={success:!1,manifest:null,prUrl:null,error:X.message,securityVerdict:"pass",securityReport:{scannedAt:new Date().toISOString(),skillName:"",skillPath:"",source:null,codeScans:[],permissions:[],totalFiles:0,totalLines:0,verdict:"safe",verdictReason:""}};if(q.flags.machine)$?.(),console.log(q0("publish",e.PUBLISH_FAILED,X.message,Z)),process.exit(1);if(q.flags.json)console.log(JSON.stringify({success:!1,manifest:null,pr_url:null,error:X.message,security_verdict:null},null,2)),process.exit(1);P(X.message),process.exit(1)}}async function pV(q){if(q.flags.help){$V();return}let $=q.flags.machine?g0():void 0,Z=performance.now();try{let Q=await w9();if(q.flags.machine){$?.();let z=Q.entries.map((J)=>({name:J.name,installed_commit:J.installedCommit,latest_commit:J.latestCommit,source:J.sourceType,status:J.status}));console.log(l("outdated",z,Z));return}if(q.flags.json){console.log(q8(Q));return}let X=!q.flags.noColor&&process.stdout.isTTY!==!1;if(console.log(e5(Q,X)),Q.outdatedCount>0)process.exitCode=1}catch(Q){if(q.flags.machine)$?.(),console.log(q0("outdated",e.UNKNOWN_ERROR,Q.message,Z)),process.exit(1);P(Q.message),process.exit(1)}}async function dV(q){if(q.flags.help){ZV();return}let $=q.flags.machine?g0():void 0,Z=performance.now(),Q=[];if(q.subcommand)Q.push(q.subcommand);Q.push(...q.positional);try{let X=await r5(Q.length>0?Q:null,q.flags.yes);if(q.flags.machine){$?.();let J=X.results.map((G)=>({name:G.name,status:G.status,reason:G.reason||null,old_commit:G.oldCommit||null,new_commit:G.newCommit||null,security_verdict:G.securityVerdict||null}));console.log(l("update",J,Z));return}if(q.flags.json){console.log($8(X));return}if(X.results.length>0)console.error(U.yellow("Note: project-scoped skill detection is not yet supported. All updates target the global skill path."));if(X.warnings&&X.warnings.length>0)for(let J of X.warnings)console.error(U.yellow(`Warning: skill "${J}" not found in lock file — skipped`));if(X.results.length===0){console.log("All skills are up to date.");return}for(let J of X.results)switch(J.status){case"updated":if(console.log(`${U.green("✓")} ${J.name} ${U.dim(J.oldCommit||"")} → ${J.newCommit||""}`),J.securityVerdict==="warning")console.error(U.yellow(` ⚠ Security audit returned warning for ${J.name} — updated because --yes was supplied`));break;case"skipped":console.log(`${U.yellow("○")} ${J.name} ${U.dim(J.reason||"skipped")}`);break;case"failed":console.log(`${U.red("✗")} ${J.name} ${U.dim(J.reason||"failed")}`);break}console.log("");let z=[];if(X.updatedCount>0)z.push(U.green(`${X.updatedCount} updated`));if(X.skippedCount>0)z.push(U.yellow(`${X.skippedCount} skipped`));if(X.failedCount>0)z.push(U.red(`${X.failedCount} failed`));if(console.log(z.join(", ")),X.failedCount>0)process.exitCode=1}catch(X){if(q.flags.machine)$?.(),console.log(q0("update",e.UNKNOWN_ERROR,X.message,Z)),process.exit(1);P(X.message),process.exit(1)}}async function _Z(q){let $=aW(q);if($.flags.json&&$.flags.machine)P("--json and --machine are mutually exclusive. Use one or the other."),process.exit(2);if($.flags.machine)$.flags.yes=!0;if($.flags.noColor)globalThis.__CLI_NO_COLOR=!0;if($.flags.verbose)a8(!0);if($.flags.version){console.log(`asm ${d9}`);let Z=await g$();if($.flags.verbose&&Z.resolved){if(console.log(` path: ${Z.resolved.path}`),Z.resolved.realPath!==Z.resolved.path)console.log(` real: ${Z.resolved.realPath}`)}if(Z.shadowed.length>0&&Z.resolved){console.error(""),console.error(U.yellow(`Warning: ${Z.shadowed.length+1} \`asm\` binaries on PATH — you may be running a shadowed install.`)),console.error(` resolved: ${Z.resolved.path}`);for(let Q of Z.shadowed)console.error(` shadowed: ${Q.path}`);console.error(U.dim(" Pick one package manager (npm OR bun) and remove the other install.")),console.error(U.dim(" See: https://github.com/luongnv89/agent-skill-manager#troubleshooting"))}return}if(!$.command&&$.flags.help){oW();return}if(!$.command)return;switch($.command){case"list":await XV($);break;case"search":await zV($);break;case"inspect":await JV($);break;case"uninstall":await GV($);break;case"audit":await YV($);break;case"install":await FV($);break;case"config":await BV($);break;case"export":await AV($);break;case"import":await MV($);break;case"init":await RV($);break;case"stats":await NV($);break;case"link":await kV($);break;case"index":await hV($);break;case"bundle":await uV($);break;case"publish":await mV($);break;case"outdated":await pV($);break;case"update":await dV($);break;case"doctor":await PV($);break;case"eval":await SV($);break;case"eval-providers":await xV($);break;default:P(`Unknown command: "${$.command}"`),console.error('Run "asm --help" for usage.'),process.exit(2)}}function LZ(q){let $=q.slice(2);if($.length===0)return!1;let Z=["list","search","inspect","uninstall","audit","config","install","export","import","init","stats","link","index","bundle","publish","outdated","update","doctor","eval","eval-providers"],Q=$[0];if(Z.includes(Q))return!0;if(Q==="--help"||Q==="-h")return!0;if(Q==="--version"||Q==="-v")return!0;if(Q.startsWith("-")||Q.length>0)return!0;return!1}if(LZ(process.argv))await _Z(process.argv);else if(!(typeof globalThis.Bun<"u")){let{spawn:$}=await import("child_process"),Z=$("bun",[process.argv[1],...process.argv.slice(2)],{stdio:"inherit"});Z.on("error",()=>{console.error(`The interactive TUI requires Bun (https://bun.sh).
|
|
763
763
|
Install it with: curl -fsSL https://bun.sh/install | bash
|
|
764
764
|
|
|
765
|
-
`+"CLI commands (list, search, inspect, etc.) work with Node.js — run: asm --help"),process.exit(1)}),Z.on("exit",(Q)=>process.exit(Q??0))}else await import("./chunk-
|
|
765
|
+
`+"CLI commands (list, search, inspect, etc.) work with Node.js — run: asm --help"),process.exit(1)}),Z.on("exit",(Q)=>process.exit(Q??0))}else await import("./chunk-x537ndd4.js");
|
|
@@ -11,5 +11,5 @@ import{O as T,U as D}from"./chunk-a26gjzjk.js";import{readdir as M,stat as W,lst
|
|
|
11
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
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
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.
|
|
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
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};
|