@fausanchez/agent-kit 0.0.0-stage → 0.1.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +20 -2
  2. package/dist/index.mjs +78 -0
  3. package/package.json +25 -4
package/README.md CHANGED
@@ -1,3 +1,21 @@
1
- # Temporary Holding Version
1
+ # a-kit
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Install your [agent kit](https://agent-kit.fausanchez.com) skills into Claude Code, Codex, Cursor and Gemini CLI.
4
+
5
+ ```sh
6
+ npx @fausanchez/agent-kit init
7
+ ```
8
+
9
+ `init` logs you in through the browser and installs the skills you pick. To keep the `a-kit` command around:
10
+
11
+ ```sh
12
+ npm install -g @fausanchez/agent-kit
13
+ a-kit add release # install a skill in this project
14
+ a-kit add release -g # or in your home folder, for every project
15
+ a-kit update # bring installed skills to their latest version
16
+ a-kit list # your skills, and where they're installed
17
+ ```
18
+
19
+ Skills go to `.claude/skills/` for Claude Code and `.agents/skills/` for Codex, Cursor and Gemini CLI. Pick agents with `-a`, like `-a claude-code,codex`. What was installed is kept in `agent-kit.lock.json`.
20
+
21
+ Needs Node.js 20.12 or newer.
package/dist/index.mjs ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ import{parseArgs as e,styleText as t}from"node:util";import n,{stdin as r,stdout as i}from"node:process";import a,*as o from"node:readline";import{ReadStream as s}from"node:tty";import{existsSync as c}from"node:fs";import{dirname as l,join as u,relative as d,resolve as f}from"node:path";import{homedir as p}from"node:os";import{spawn as m}from"node:child_process";import{chmod as h,mkdir as g,readFile as _,rm as v,writeFile as y}from"node:fs/promises";import{createHash as b}from"node:crypto";var x=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports);const S=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),ee=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,te=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,ne=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,re=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,C=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,ie=/\t{1,1000}/y,ae=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,w=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,oe=/\p{M}+/gu,se={limit:1/0,ellipsis:``},ce=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?ce(i,se,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[w,l],[ne,0],[re,o],[ie,s],[ae,c],[C,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,T=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(oe,``)){let t=e.codePointAt(0)||0;if(T=ee(t)?2:te(t)?u:l,x+T>v&&(_=Math.min(_,Math.max(y,f)+h)),x+T>r){g=!0;break outer}h+=e.length,x+=T}y=b=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===C?S(e.slice(p,n.lastIndex)):n===ae?1:n.lastIndex-p,T=h*i,x+T>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+T>r){g=!0;break outer}x+=T,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},T={limit:1/0,ellipsis:``,ellipsisWidth:0},E=(e,t={})=>ce(e,T,t).width,D=`]8;;`,le=RegExp(`(?:\\[(?<code>\\d+)m|\\${D}(?<uri>.*))`,`y`),ue=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},de=e=>`[${e}m`,fe=e=>`${D}${e}`,pe=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:E(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=E(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(D,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},me=e=>{let t=e.split(` `),n=t.length;for(;n&&!E(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},he=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=E(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=E(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),pe(s,r,t),c=E(s.at(-1)??``)}else{if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){pe(s,r,t),c=E(s.at(-1)??``);continue}s.push(``),c=0}c+i>t&&n.wordWrap===!1?(pe(s,r,t),c=E(s.at(-1)??``)):(s[s.length-1]+=r,c+=i)}}n.trim!==!1&&(s=s.map(e=>me(e)));let l=s.join(`
3
+ `),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===`›`){le.lastIndex=e+1;let t=le.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
4
+ `){a&&(r+=fe(``));let e=i?ue(i):void 0;i&&e&&(r+=de(e))}else t===`
5
+ `&&(i&&ue(i)&&(r+=de(i)),a&&(r+=fe(a)))}return r},ge=/\r?\n/;function O(e,t,n){return String(e).normalize().split(ge).map(e=>he(e,t,n)).join(`
6
+ `)}var k=(/* @__PURE__ */ x(((e,t)=>{let n={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`};t.exports={cursor:n,scroll:{up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},erase:{screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(e){let t=``;for(let r=0;r<e;r++)t+=this.line+(r<e-1?n.up():``);return e&&(t+=n.left),t}},beep:`\x07`}})))();function A(e,t,n){if(!n.some(e=>!e.disabled))return e;let r=e+t,i=Math.max(n.length-1,0),a=r<0?i:r>i?0:r;return n[a]?.disabled?A(a,t<0?-1:1,n):a}const j={actions:/* @__PURE__ */ new Set([`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`]),aliases:/* @__PURE__ */ new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]]),messages:{cancel:`Canceled`,error:`Something went wrong`},withGuide:!0,accessible:void 0,date:{monthNames:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],messages:{required:`Please enter a valid date`,invalidMonth:`There are only 12 months in a year`,invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function _e(e){if(e!==void 0)return e;if(j.accessible!==void 0)return j.accessible;let t=process.env.ACCESSIBLE;return t!==void 0&&t!==``&&t!==`0`&&t!==`false`}function ve(e,t){if(typeof e==`string`)return j.aliases.get(e)===t;for(let n of e)if(n!==void 0&&ve(n,t))return!0;return!1}function ye(e,t){if(e===t)return;let n=e.split(`
7
+ `),r=t.split(`
8
+ `),i=Math.max(n.length,r.length),a=[];for(let e=0;e<i;e++)n[e]!==r[e]&&a.push(e);return{lines:a,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}const be=globalThis.process.platform.startsWith(`win`),xe=Symbol(`clack:cancel`);function Se(e){return e===xe}function M(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function Ce({input:e=r,output:t=i,overwrite:n=!0,hideCursor:a=!0}={}){let c=o.createInterface({input:e,output:t,prompt:``,tabSize:1});o.emitKeypressEvents(e,c),e instanceof s&&e.isTTY&&e.setRawMode(!0);let l=(r,{name:i,sequence:s})=>{if(ve([String(r),i,s],`cancel`)){a&&t.write(k.cursor.show),process.exit(0);return}if(!n)return;let c=i===`return`?0:-1,u=i===`return`?-1:0;o.moveCursor(t,c,u,()=>{o.clearLine(t,1,()=>{e.once(`keypress`,l)})})};return a&&t.write(k.cursor.hide),e.once(`keypress`,l),()=>{e.off(`keypress`,l),a&&t.write(k.cursor.show),e instanceof s&&e.isTTY&&!be&&e.setRawMode(!1),c.terminal=!1,c.close()}}const we=e=>`columns`in e&&typeof e.columns==`number`?e.columns:80,Te=e=>`rows`in e&&typeof e.rows==`number`?e.rows:20;function N(e,t,n,r=n,a=n,o){return O(t,we(e??i)-n.length,{hard:!0,trim:!1}).split(`
9
+ `).map((e,t,i)=>{let s=o?o(e,t):e;return t===0?`${r}${s}`:t===i.length-1?`${a}${s}`:`${n}${s}`}).join(`
10
+ `)}function Ee(e,t){if(`~standard`in e){let n=e[`~standard`].validate(t);return n instanceof Promise?n.then(e=>e.issues?.at(0)?.message):n.issues?.at(0)?.message}return e(t)}var De=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame=``;_subscribers=/* @__PURE__ */ new Map;_cursor=0;state=`initial`;error=``;value;userInput=``;get accessible(){return _e(this.opts.accessible)}constructor(e,t=!0){let{input:n=r,output:a=i,render:o,signal:s,...c}=e;this.opts=c,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=o.bind(this),this._track=t,this._abortSignal=s,this.input=n,this.output=a}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(xe);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}this.rl=a.createInterface({input:this.input,tabSize:2,prompt:``,escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on(`keypress`,this.onKeypress),M(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(k.cursor.show),this.output.off(`resize`,this.render),M(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(k.cursor.show),this.output.off(`resize`,this.render),M(this.input,!1),e(xe)})})}_isActionKey(e,t){return e===` `}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit(`value`,this.value)}_setUserInput(e,t){this.userInput=e??``,this.emit(`userInput`,this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:`u`}),this._setUserInput(``)}async onKeypress(e,t){if(this.state!==`validating`){if(this._track&&t.name!==`return`&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:`h`}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&j.aliases.has(t.name)&&this.emit(`cursor`,j.aliases.get(t.name)),j.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),this.emit(`key`,e,t),t?.name===`return`&&this._shouldSubmit(e,t)){if(this.opts.validate){let e=Ee(this.opts.validate,this.value),t;e instanceof Promise?(this.state=`validating`,this.render(),t=await e):t=e,t&&(this.error=t instanceof Error?t.message:t,this.state=`error`,this.rl?.write(this.userInput))}this.state!==`error`&&(this.state=`submit`)}ve([e,t?.name,t?.sequence],`cancel`)&&(this.state=`cancel`),(this.state===`submit`||this.state===`cancel`)&&this.emit(`finalize`),this.render(),(this.state===`submit`||this.state===`cancel`)&&this.close()}}close(){this.input.unpipe(),this.input.removeListener(`keypress`,this.onKeypress),this.output.write(`
11
+ `),M(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=O(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
12
+ `).length-1;this.output.write(k.cursor.move(-999,e*-1))}render(){let e=O(this._render(this)??``,process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(k.cursor.hide);else{let t=ye(this._prevFrame,e),n=Te(this.output);if(this.restoreCursor(),t){let r=Math.max(0,t.numLinesAfter-n),i=Math.max(0,t.numLinesBefore-n),a=t.lines.find(e=>e>=r);if(a===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(k.cursor.move(0,a-i)),this.output.write(k.erase.lines(1));let t=e.split(`
13
+ `);this.output.write(t[a]),this._prevFrame=e,this.output.write(k.cursor.move(0,t.length-a-1));return}if(t.lines.length>1){if(r<i)a=r;else{let e=a-i;e>0&&this.output.write(k.cursor.move(0,e))}this.output.write(k.erase.down());let t=e.split(`
14
+ `).slice(a);this.output.write(t.join(`
15
+ `)),this._prevFrame=e;return}}this.output.write(k.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}},Oe=class extends De{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(e=>e.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(t=>!e.includes(t.value));this.value=t.map(e=>e.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(e=>e!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:t})=>t===e.cursorAt),0);this.cursor=this.options[t]?.disabled?A(t,1,this.options):t,this.on(`key`,(e,t)=>{t.name===`a`&&this.toggleAll(),t.name===`i`&&this.toggleInvert()}),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=A(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=A(this.cursor,1,this.options);break;case`space`:this.toggleValue()}})}};let ke=class extends De{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let t=this.options.findIndex(({value:t})=>t===e.initialValue),n=t===-1?0:t;this.cursor=this.options[n]?.disabled?A(n,1,this.options):n,this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=A(this.cursor,-1,this.options);break;case`down`:case`right`:this.cursor=A(this.cursor,1,this.options)}this.changeValue()})}};function Ae(){return n.platform===`win32`?!!n.env.CI||!!n.env.WT_SESSION||!!n.env.TERMINUS_SUBLIME||n.env.ConEmuTask===`{cmd::Cmder}`||n.env.TERM_PROGRAM===`Terminus-Sublime`||n.env.TERM_PROGRAM===`vscode`||n.env.TERM===`xterm-256color`||n.env.TERM===`alacritty`||n.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:n.env.TERM!==`linux`}const P=Ae(),je=()=>process.env.CI===`true`,F=(e,t)=>P?e:t,Me=F(`◆`,`*`),Ne=F(`■`,`x`),Pe=F(`▲`,`x`),I=F(`◇`,`o`),Fe=F(`┌`,`T`),L=F(`│`,`|`),R=F(`└`,`—`),Ie=F(`●`,`>`),Le=F(`○`,` `),Re=F(`◻`,`[•]`),ze=F(`◼`,`[+]`),Be=F(`◻`,`[ ]`),Ve=F(`●`,`•`),He=F(`◆`,`*`),Ue=F(`▲`,`!`),We=F(`■`,`x`),Ge=e=>{switch(e){case`initial`:case`active`:return t(`cyan`,Me);case`cancel`:return t(`red`,Ne);case`error`:return t(`yellow`,Pe);case`submit`:return t(`green`,I);case`validating`:return t(`dim`,Me)}},Ke=e=>{switch(e){case`initial`:case`active`:return t(`cyan`,L);case`cancel`:return t(`red`,L);case`error`:return t(`yellow`,L);case`submit`:return t(`green`,L)}};function qe(e,n){let r=[`${n?`${t(`cyan`,L)} `:``}${e.join(` • `)}`];return n&&r.push(t(`cyan`,R)),r}const Je=(e,t,n,r,i,a=!1)=>{let o=t,s=0;if(a)for(let t=r-1;t>=n;t--){let n=e[t];if(n&&(o-=n.length),s++,o<=i)break}else for(let t=n;t<r;t++){let n=e[t];if(n&&(o-=n.length),s++,o<=i)break}return{lineCount:o,removals:s}},z=({cursor:e,options:n,style:r,output:i=process.stdout,maxItems:a=1/0,columnPadding:o=0,rowPadding:s=4})=>{let c=we(i)-o,l=Te(i),u=t(`dim`,`...`),d=Math.max(l-s,0),f=Math.max(Math.min(a,d),5),p=0;e>=f-3&&(p=Math.max(Math.min(e-f+3,n.length-f),0));let m=f<n.length&&p>0,h=f<n.length&&p+f<n.length,g=Math.min(p+f,n.length),_=[],v=0;m&&v++,h&&v++;let y=p+ +!!m,b=g-+!!h;for(let t=y;t<b;t++){let i=n[t],a=O(i?r(i,t===e):``,c,{hard:!0,trim:!1}).split(`
16
+ `);_.push(a),v+=a.length}if(v>d){let t=0,n=0,r=v,i=e-y,a=d,o=()=>Je(_,r,0,i,a),s=()=>Je(_,r,i+1,_.length,a,!0);m?({lineCount:r,removals:t}=o(),r>a&&(h||--a,{lineCount:r,removals:n}=s())):(h||--a,{lineCount:r,removals:n}=s(),r>a&&(--a,{lineCount:r,removals:t}=o())),t>0&&(m=!0,_.splice(0,t)),n>0&&(h=!0,_.splice(_.length-n,n))}let x=[];m&&x.push(u);for(let e of _)for(let t of e)x.push(t);return h&&x.push(u),x},Ye=[`${t(`dim`,`↑/↓`)} to navigate`,`${t(`dim`,`Space:`)} select`,`${t(`dim`,`Enter:`)} confirm`],B=(e,t)=>e.split(`
17
+ `).map(e=>t(e)).join(`
18
+ `),Xe=e=>{let n=(e,n)=>{let r=e.label??String(e.value);return n===`disabled`?`${t(`gray`,Be)} ${B(r,e=>t([`strikethrough`,`gray`],e))}${e.hint?` ${t(`dim`,`(${e.hint??`disabled`})`)}`:``}`:n===`active`?`${t(`cyan`,Re)} ${r}${e.hint?` ${t(`dim`,`(${e.hint})`)}`:``}`:n===`selected`?`${t(`green`,ze)} ${B(r,e=>t(`dim`,e))}${e.hint?` ${t(`dim`,`(${e.hint})`)}`:``}`:n===`cancelled`?`${B(r,e=>t([`strikethrough`,`dim`],e))}`:n===`active-selected`?`${t(`green`,ze)} ${r}${e.hint?` ${t(`dim`,`(${e.hint})`)}`:``}`:n===`submitted`?`${B(r,e=>t(`dim`,e))}`:`${t(`dim`,Be)} ${B(r,e=>t(`dim`,e))}`},r=e.required??!0,i=e.showInstructions??!0;return new Oe({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:r,cursorAt:e.cursorAt,validate(e){if(r&&(e===void 0||e.length===0))return`Please select at least one option.
19
+ ${t(`reset`,t(`dim`,`Press ${t([`gray`,`bgWhite`,`inverse`],` space `)} to select, ${t(`gray`,t(`bgWhite`,t(`inverse`,` enter `)))} to submit`))}`},render(){let r=e.withGuide??j.withGuide,a=N(e.output,e.message,r?`${Ke(this.state)} `:``,`${Ge(this.state)} `),o=`${r?`${t(`gray`,L)}
20
+ `:``}${a}
21
+ `,s=this.value??[],c=(e,t)=>{if(e.disabled)return n(e,`disabled`);let r=s.includes(e.value);return t&&r?n(e,`active-selected`):r?n(e,`selected`):n(e,t?`active`:`inactive`)};switch(this.state){case`submit`:{let i=this.options.filter(({value:e})=>s.includes(e)).map(e=>n(e,`submitted`)).join(t(`dim`,`, `))||t(`dim`,`none`);return`${o}${N(e.output,i,r?`${t(`gray`,L)} `:``)}`}case`cancel`:{let i=this.options.filter(({value:e})=>s.includes(e)).map(e=>n(e,`cancelled`)).join(t(`dim`,`, `));return i.trim()===``?`${o}${t(`gray`,L)}`:`${o}${N(e.output,i,r?`${t(`gray`,L)} `:``)}${r?`
22
+ ${t(`gray`,L)}`:``}`}case`error`:{let n=r?`${t(`yellow`,L)} `:``,i=this.error.split(`
23
+ `).map((e,n)=>n===0?`${r?`${t(`yellow`,R)} `:``}${t(`yellow`,e)}`:` ${e}`).join(`
24
+ `),a=o.split(`
25
+ `).length,s=i.split(`
26
+ `).length+1;return`${o}${n}${z({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:n.length,rowPadding:a+s,style:c}).join(`
27
+ ${n}`)}
28
+ ${i}
29
+ `}default:{let n=r?`${t(`cyan`,L)} `:``,a=o.split(`
30
+ `).length,s=i?qe(Ye,r):r?[t(`cyan`,R)]:[],l=s.join(`
31
+ `),u=s.length+1;return`${o}${n}${z({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:n.length,rowPadding:a+u,style:c}).join(`
32
+ ${n}`)}
33
+ ${l}
34
+ `}}}}).prompt()},V={message:(e=[],{symbol:n=t(`gray`,L),secondarySymbol:r=t(`gray`,L),output:i=process.stdout,spacing:a=1,withGuide:o}={})=>{let s=[],c=o??j.withGuide,l=c?r:``,u=c?`${n} `:``,d=c?`${r} `:``;for(let e=0;e<a;e++)s.push(l);let f=Array.isArray(e)?e:e.split(`
35
+ `);if(f.length>0){let[e,...t]=f;e.length>0?s.push(`${u}${e}`):s.push(c?n:``);for(let e of t)e.length>0?s.push(`${d}${e}`):s.push(c?r:``)}i.write(`${s.join(`
36
+ `)}
37
+ `)},info:(e,n)=>{V.message(e,{...n,symbol:t(`blue`,Ve)})},success:(e,n)=>{V.message(e,{...n,symbol:t(`green`,He)})},step:(e,n)=>{V.message(e,{...n,symbol:t(`green`,I)})},warn:(e,n)=>{V.message(e,{...n,symbol:t(`yellow`,Ue)})},warning:(e,t)=>{V.warn(e,t)},error:(e,n)=>{V.message(e,{...n,symbol:t(`red`,We)})}},Ze=(e=``,n)=>{let r=n?.output??process.stdout,i=n?.withGuide??j.withGuide?`${t(`gray`,R)} `:``;r.write(`${i}${t(`red`,e)}
38
+
39
+ `)},H=(e=``,n)=>{let r=n?.output??process.stdout,i=n?.withGuide??j.withGuide?`${t(`gray`,Fe)} `:``;r.write(`${i}${e}
40
+ `)},U=(e=``,n)=>{let r=n?.output??process.stdout,i=n?.withGuide??j.withGuide?`${t(`gray`,L)}
41
+ ${t(`gray`,R)} `:``;r.write(`${i}${e}
42
+
43
+ `)},Qe=e=>t(`magenta`,e),$e=({indicator:e=`dots`,onCancel:n,output:r=process.stdout,cancelMessage:i,errorMessage:a,frames:o=P?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],delay:s=P?80:120,signal:c,...l}={})=>{let u=je(),d,f,p=!1,m=!1,h=``,g,_=performance.now(),v=we(r),y=l?.styleFrame??Qe,b=e=>{let t=e>1?a??j.messages.error:i??j.messages.cancel;m=e===1,p&&(w(t,e),m&&typeof n==`function`&&n())},x=()=>b(2),S=()=>b(1),ee=()=>{process.on(`uncaughtExceptionMonitor`,x),process.on(`unhandledRejection`,x),process.on(`SIGINT`,S),process.on(`SIGTERM`,S),process.on(`exit`,b),c&&c.addEventListener(`abort`,S)},te=()=>{process.removeListener(`uncaughtExceptionMonitor`,x),process.removeListener(`unhandledRejection`,x),process.removeListener(`SIGINT`,S),process.removeListener(`SIGTERM`,S),process.removeListener(`exit`,b),c&&c.removeEventListener(`abort`,S)},ne=()=>{if(g===void 0)return;u&&r.write(`
44
+ `);let e=O(g,v,{hard:!0,trim:!1}).split(`
45
+ `);e.length>1&&r.write(k.cursor.up(e.length-1)),r.write(k.cursor.to(0)),r.write(k.erase.down())},re=e=>e.replace(/\.+$/,``),C=e=>{let t=(performance.now()-e)/1e3,n=Math.floor(t/60),r=Math.floor(t%60);return n>0?`[${n}m ${r}s]`:`[${r}s]`},ie=l.withGuide??j.withGuide,ae=(n=``)=>{p=!0,d=Ce({output:r}),h=re(n),_=performance.now(),ie&&r.write(`${t(`gray`,L)}
46
+ `);let i=0,a=0;ee(),f=setInterval(()=>{if(u&&h===g)return;ne(),g=h;let t=y(o[i]),n;if(u)n=`${t} ${h}...`;else if(e===`timer`)n=`${t} ${h} ${C(_)}`;else{let e=`.`.repeat(Math.floor(a)).slice(0,3);n=`${t} ${h}${e}`}let s=O(n,v,{hard:!0,trim:!1});r.write(s),i=i+1<o.length?i+1:0,a=a<4?a+.125:0},s)},w=(n=``,i=0,a=!1)=>{if(!p)return;p=!1,clearInterval(f),ne();let o=i===0?t(`green`,I):i===1?t(`red`,Ne):t(`red`,Pe);h=n??h,a||(e===`timer`?r.write(`${o} ${h} ${C(_)}
47
+ `):r.write(`${o} ${h}
48
+ `)),te(),d()};return{start:ae,stop:(e=``)=>w(e,0),message:(e=``)=>{h=re(e??h)},cancel:(e=``)=>w(e,1),error:(e=``)=>w(e,2),clear:()=>w(``,0,!0),get isCancelled(){return m}}},et=[`${t(`dim`,`↑/↓`)} to navigate`,`${t(`dim`,`Enter:`)} confirm`],W=(e,t)=>e.includes(`
49
+ `)?e.split(`
50
+ `).map(e=>t(e)).join(`
51
+ `):t(e),tt=e=>{let n=(e,n)=>{if(e===void 0)return``;let r=e.label??String(e.value);switch(n){case`disabled`:return`${t(`gray`,Le)} ${W(r,e=>t(`gray`,e))}${e.hint?` ${t(`dim`,`(${e.hint??`disabled`})`)}`:``}`;case`selected`:return`${W(r,e=>t(`dim`,e))}`;case`active`:return`${t(`green`,Ie)} ${r}${e.hint?` ${t(`dim`,`(${e.hint})`)}`:``}`;case`cancelled`:return`${W(r,e=>t([`strikethrough`,`dim`],e))}`;default:return`${t(`dim`,Le)} ${W(r,e=>t(`dim`,e))}`}},r=e.showInstructions??!0;return new ke({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let i=e.withGuide??j.withGuide,a=`${Ge(this.state)} `,o=`${Ke(this.state)} `,s=N(e.output,e.message,o,a),c=`${i?`${t(`gray`,L)}
52
+ `:``}${s}
53
+ `;switch(this.state){case`submit`:{let r=i?`${t(`gray`,L)} `:``;return`${c}${N(e.output,n(this.options[this.cursor],`selected`),r)}`}case`cancel`:{let r=i?`${t(`gray`,L)} `:``;return`${c}${N(e.output,n(this.options[this.cursor],`cancelled`),r)}${i?`
54
+ ${t(`gray`,L)}`:``}`}default:{let a=i?`${t(`cyan`,L)} `:``,o=c.split(`
55
+ `).length,s=r?qe(et,i):i?[t(`cyan`,R)]:[],l=s.join(`
56
+ `),u=s.length+1;return`${c}${a}${z({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:o+u,style:(e,t)=>n(e,e.disabled?`disabled`:t?`active`:`inactive`)}).join(`
57
+ ${a}`)}
58
+ ${l}
59
+ `}}}}).prompt()};`${t(`gray`,L)}`;var nt=`0.1.0`;const G=[{id:`claude-code`,name:`Claude Code`,projectDir:`.claude/skills`,globalDir:`.claude/skills`,marker:`.claude`},{id:`codex`,name:`Codex`,projectDir:`.agents/skills`,globalDir:`.agents/skills`,marker:`.codex`},{id:`cursor`,name:`Cursor`,projectDir:`.agents/skills`,globalDir:`.cursor/skills`,marker:`.cursor`},{id:`gemini-cli`,name:`Gemini CLI`,projectDir:`.agents/skills`,globalDir:`.gemini/skills`,marker:`.gemini`}],rt=e=>e===`global`?p():process.cwd();function it(e=p()){return G.filter(t=>c(u(e,t.marker)))}function K(e){return G.find(t=>t.id===e)}function at(e,t,n=rt(t)){let r=e.map(e=>f(n,t===`global`?e.globalDir:e.projectDir));return[...new Set(r)]}const q=()=>!!(process.stdin.isTTY&&process.stdout.isTTY)&&!process.env.CI;function J(e){return Se(e)&&(Ze(`Cancelled.`),process.exit(130)),e}async function ot(e,t){if(e.length>0)return e.map(e=>{let t=K(e);if(!t)throw Error(`Unknown agent "${e}". Use one of: ${G.map(e=>e.id).join(`, `)}.`);return t});let n=it(),r=n.length>0?n:[K(`claude-code`)];return!t||!q()?r:J(await Xe({message:`Which agents should get the skills?`,options:G.map(e=>({value:e.id,label:e.name,hint:n.includes(e)?`detected`:void 0})),initialValues:r.map(e=>e.id),required:!0})).map(e=>K(e))}async function st(e,t){return e?`global`:!t||!q()?`project`:J(await tt({message:`Where should they go?`,options:[{value:`project`,label:`This project`,hint:process.cwd()},{value:`global`,label:`Everywhere`,hint:`your home folder`}],initialValue:`project`}))}async function ct(e,t,n){if(t.length>0)return t.map(t=>{let n=e.find(e=>e.name===t);if(!n)throw Error(`There's no skill named "${t}" in your agent kit. See them with \`a-kit list\`.`);return n});if(!n||!q())throw Error("Name the skills to add, like `a-kit add my-skill`.");let r=J(await Xe({message:`Which skills?`,options:e.map(e=>({value:e.id,label:e.name,hint:e.description.length>60?`${e.description.slice(0,57)}…`:e.description})),required:!0}));return e.filter(e=>r.includes(e.id))}var Y=class extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t}};function X(e,t,n=fetch){async function r(r,i={}){let a;try{a=await n(`${e}${r}`,{...i,headers:{"User-Agent":`a-kit/${nt}`,...i.body?{"Content-Type":`application/json`}:{},...t?{Authorization:`Bearer ${t}`}:{},...i.headers}})}catch{throw new Y(0,`NETWORK`,`Couldn't reach ${e}.`)}if(!a.ok){let e=await a.json().catch(()=>null);throw a.status===401?new Y(401,`UNAUTHORIZED`,"You're not logged in. Run `a-kit login`."):new Y(a.status,e?.code??`HTTP_ERROR`,e?.message??`${i.method??`GET`} ${r} failed (${a.status})`)}return a}let i=async(e,t)=>await(await r(e,t)).json();return{me:()=>i(`/me`),logout:()=>r(`/auth/logout`,{method:`POST`}),startLogin:()=>i(`/auth/cli`,{method:`POST`}),pollLogin:e=>i(`/auth/cli/token`,{method:`POST`,body:JSON.stringify({deviceCode:e})}),listSkills:()=>i(`/skills`),getSkill:e=>i(`/skills/${e}`),getBlob:async(e,t)=>new Uint8Array(await(await r(`/skills/${e}/blobs/${t}`)).arrayBuffer())}}function lt(e){let[t,n]=process.platform===`darwin`?[`open`,[e]]:process.platform===`win32`?[`cmd`,[`/c`,`start`,``,e.replace(/&/g,`^&`)]]:[`xdg-open`,[e]];try{let e=m(t,n,{stdio:`ignore`,detached:!0});e.on(`error`,()=>{}),e.unref()}catch{}}function Z(){return(process.env.AGENT_KIT_API_URL??`https://api-dev.agent-kit.fausanchez.com`??`http://localhost:8787`).replace(/\/+$/,``)}function ut(){return process.env.AGENT_KIT_CONFIG_DIR?process.env.AGENT_KIT_CONFIG_DIR:process.platform===`win32`&&process.env.APPDATA?u(process.env.APPDATA,`agent-kit`):u(process.env.XDG_CONFIG_HOME??u(p(),`.config`),`agent-kit`)}const dt=()=>u(ut(),`credentials.json`);async function ft(){try{return JSON.parse(await _(dt(),`utf8`))}catch{return{}}}async function pt(){return(await ft())[Z()]??null}async function mt(e){let t=await ft();e?t[Z()]=e:delete t[Z()];let n=dt();await g(l(n),{recursive:!0,mode:448}),await y(n,JSON.stringify(t,null,2)+`
60
+ `,{mode:384}),await h(n,384)}const ht=e=>new Promise(t=>setTimeout(t,e));async function gt(){let e=await X(Z()).startLogin();V.step(`Your code: ${e.userCode}\nApprove it in your browser: ${e.verificationUrl}`),lt(e.verificationUrl);let t=$e();t.start(`Waiting for you to approve it`);let n=X(Z()),r=Date.now()+e.expiresIn*1e3;for(;Date.now()<r;){await ht(e.interval*1e3);let r;try{r=await n.pollLogin(e.deviceCode)}catch(e){if(e instanceof Y&&e.status===410)break;if(e instanceof Y&&e.code===`NETWORK`)continue;throw t.error(`Login failed`),e}if(r.status===`approved`){let n={token:r.token,user:r.user,webUrl:new URL(e.verificationUrl).origin};return await mt(n),t.stop(`Logged in as ${r.user.email}`),n}}throw t.error(`The code expired`),Error(`The login expired before it was approved. Run it again.`)}async function _t(){let e=await pt();if(!e)return null;try{let t=await X(Z(),e.token).me();return{...e,user:t}}catch(e){if(e instanceof Y&&e.status===401)return await mt(null),null;throw e}}async function vt(){let e=await pt();if(!e)throw Error("You're not logged in. Run `a-kit login` first.");return{api:X(Z(),e.token),credentials:e}}const yt={maxFiles:200,maxFileBytes:1048576,maxSkillBytes:10485760,maxPathLength:255},bt=/[\u0000-\u001f\u007f\\:]/;function xt(e){if(e.trim()===``)return`The path is empty.`;if(e.length>yt.maxPathLength)return`Paths can be at most ${yt.maxPathLength} characters.`;if(e.startsWith(`/`))return`Use a relative path, without a leading /.`;if(bt.test(e))return`Paths can't contain \\, : or control characters.`;for(let t of e.split(`/`)){if(t===``)return`The path has an empty folder name (//).`;if(t===`.`||t===`..`)return`The path can't contain . or .. folders.`;if(t!==t.trim())return`Names can't start or end with a space.`}return null}const St=e=>b(`sha256`).update(e).digest(`hex`);async function Ct(e,t,n){let r=await e.getSkill(t);if(!/^[a-z0-9-]+$/.test(r.name))throw Error(`"${r.name}" isn't a valid skill name.`);let i=[];for(let t of r.files){let n=xt(t.path);if(n)throw Error(`${r.name}: ${t.path}: ${n}`);let a=await e.getBlob(r.id,t.sha256);if(St(a)!==t.sha256)throw Error(`${r.name}: ${t.path} didn't download intact.`);i.push({path:t.path,bytes:a})}for(let e of n){let t=u(e,r.name);await v(t,{recursive:!0,force:!0});for(let e of i){let n=u(t,e.path);await g(l(n),{recursive:!0}),await y(n,e.bytes)}}return r}const Q=(e,t=process.cwd())=>e===`global`?u(ut(),`global.lock.json`):u(t,`agent-kit.lock.json`);async function $(e){try{return{version:1,skills:JSON.parse(await _(e,`utf8`)).skills??{}}}catch{return{version:1,skills:{}}}}async function wt(e,t){let n=Object.fromEntries(Object.entries(t.skills).sort(([e],[t])=>e.localeCompare(t)));await g(l(e),{recursive:!0}),await y(e,JSON.stringify({...t,skills:n},null,2)+`
61
+ `)}async function Tt(e,t,n,r){let i=at(n,r),a=Q(r),o=await $(a),s=$e();for(let r of t){s.start(`Installing ${r.name}`);try{let t=await Ct(e,r.id,i);o.skills[t.name]={id:t.id,version:t.version,agents:n.map(e=>e.id)},s.stop(`${t.name} v${t.version}`)}catch(e){throw s.error(`${r.name} failed`),await wt(a,o),e}}return await wt(a,o),{dirs:i,lockFile:a}}function Et(e){let t=d(process.cwd(),e);return t&&!t.startsWith(`..`)?t:e}async function Dt(e,t){H(`agent kit`);let{api:n}=await vt(),r=!t.yes,{dirs:i}=await Tt(n,await ct(await n.listSkills(),e,r),await ot(t.agent,r),t.global?`global`:`project`);U(`Installed in ${i.map(Et).join(`, `)}`)}async function Ot(e){H(`agent kit`);let t=await _t();t?V.success(`Logged in as ${t.user.email}`):t=await gt();let n=X(Z(),t.token),r=await n.listSkills();if(r.length===0){U(`You don't have skills yet. Create one at ${t.webUrl}/app/skills, then run \`a-kit add\`.`);return}let i=!e.yes;if(i&&!q())throw Error("`a-kit init` asks questions. Pass --yes to install every skill, or use `a-kit add <skill>`.");let a=await st(e.global,i),o=await ot(e.agent,i),s=i?J(await Xe({message:`Which skills?`,options:r.map(e=>({value:e.id,label:e.name})),initialValues:r.map(e=>e.id),required:!0})):r.map(e=>e.id),{dirs:c}=await Tt(n,r.filter(e=>s.includes(e.id)),o,a);U(`Installed in ${c.map(Et).join(`, `)}`)}async function kt(){let{api:e,credentials:t}=await vt(),n=await e.listSkills();if(n.length===0){console.log(`You don't have skills yet. Create one at ${t.webUrl}/app/skills`);return}let r=await $(Q(`project`)),i=await $(Q(`global`)),a=Math.max(...n.map(e=>e.name.length));for(let e of n){let t=[At(`project`,r.skills[e.name]?.version,e.version),At(`global`,i.skills[e.name]?.version,e.version)].filter(Boolean);console.log(`${e.name.padEnd(a)} v${e.version}`+(t.length?` (${t.join(`, `)})`:``))}}function At(e,t,n){return t===void 0?null:t===n?`in ${e}`:`in ${e} at v${t}, run a-kit update${e===`global`?` -g`:``}`}async function jt(){H(`agent kit`);let e=await gt();U(`Logged in as ${e.user.email}`)}async function Mt(){let e=await pt();e?(await X(Z(),e.token).logout().catch(()=>{}),await mt(null),console.log(`Logged out ${e.user.email}.`)):console.log(`You're not logged in.`)}async function Nt(){let e=await _t();e?console.log(e.user.email):(console.log("You're not logged in. Run `a-kit login`."),process.exitCode=1)}async function Pt(e){H(`agent kit`);let t=e.global?`global`:`project`,n=Q(t),r=await $(n),i=Object.entries(r.skills);if(i.length===0){U(e.global?"No skills installed everywhere yet. Add some with `a-kit add -g`.":"No skills installed in this project yet. Add some with `a-kit add`.");return}let{api:a}=await vt(),o=0;for(let[e,s]of i){let i;try{i=await a.getSkill(s.id)}catch(t){if(t instanceof Y&&t.status===404){V.warn(`${e} isn't in your agent kit anymore; left it as it is.`);continue}throw t}if(i.version===s.version)continue;let c=at(s.agents.map(e=>K(e)).filter(e=>e!==void 0),t);if(await Ct(a,s.id,c),i.name!==e){for(let t of c)await v(u(t,e),{recursive:!0,force:!0});delete r.skills[e]}r.skills[i.name]={...s,version:i.version},await wt(n,r),V.success(`${i.name}: v${s.version} → v${i.version}`+(i.name===e?``:` (was ${e})`)),o++}U(o===0?`Everything is up to date.`:`Updated ${o} skill${o===1?``:`s`}.`)}const Ft=`a-kit ${nt}: your agent kit skills, in your agents.
62
+
63
+ Usage
64
+ a-kit init Log in and pick skills to install
65
+ a-kit add [skill...] Install skills (asks which when none is named)
66
+ a-kit update Update the installed skills to their latest version
67
+ a-kit list Your skills, and where they're installed
68
+ a-kit login Log in through the browser
69
+ a-kit logout Log out
70
+ a-kit whoami Who you're logged in as
71
+
72
+ Options
73
+ -g, --global Install in your home folder instead of this project
74
+ -a, --agent <id> Install for this agent (repeatable): ${G.map(e=>e.id).join(`, `)}
75
+ -y, --yes Don't ask; use the defaults
76
+ -h, --help Show this help
77
+ -v, --version Show the version
78
+ `;async function It(){let{values:t,positionals:n}=e({allowPositionals:!0,options:{global:{type:`boolean`,short:`g`,default:!1},agent:{type:`string`,short:`a`,multiple:!0,default:[]},yes:{type:`boolean`,short:`y`,default:!1},help:{type:`boolean`,short:`h`,default:!1},version:{type:`boolean`,short:`v`,default:!1}}});if(t.version)return console.log(nt);let[r,...i]=n;if(t.help||!r)return console.log(Ft);let a={global:t.global,agent:t.agent.flatMap(e=>e.split(`,`)).filter(Boolean),yes:t.yes};switch(r){case`init`:return Ot(a);case`add`:case`install`:return Dt(i,a);case`update`:return Pt(a);case`list`:case`ls`:return kt();case`login`:return jt();case`logout`:return Mt();case`whoami`:return Nt();default:throw Error(`Unknown command "${r}". Run \`a-kit --help\`.`)}}It().catch(e=>{V.error(e instanceof Error?e.message:String(e)),process.exitCode=1});export{};
package/package.json CHANGED
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "name": "@fausanchez/agent-kit",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0-dev.0",
4
+ "description": "Install your agent kit skills into Claude Code, Codex, Cursor and Gemini CLI.",
5
+ "keywords": [
6
+ "agent-kit",
7
+ "skills",
8
+ "claude-code",
9
+ "codex",
10
+ "cursor",
11
+ "gemini-cli"
12
+ ],
13
+ "homepage": "https://agent-kit.fausanchez.com",
14
+ "type": "module",
15
+ "bin": {
16
+ "a-kit": "dist/index.mjs"
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "engines": {
22
+ "node": ">=20.12"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ }
27
+ }