[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2rtddl6as0tv8":3},{"entry":4,"body":9,"data":1011},{"slug":5,"title":6,"file":7,"description":8},"cli","CLI","cli.md","Install and manage bundles from a project directory.",{"type":10,"children":11},"root",[12,19,36,56,63,68,97,126,147,153,292,363,398,424,429,435,440,450,460,524,537,608,614,639,660,665,715,721,726,764,769,866,922,928,949,981,1005],{"type":13,"tag":14,"props":15,"children":16},"element","h1",{"id":5},[17],{"type":18,"value":6},"text",{"type":13,"tag":20,"props":21,"children":22},"p",{},[23],{"type":13,"tag":24,"props":25,"children":29},"a",{"href":26,"rel":27},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@patrity\u002Fskills",[28],"nofollow",[30],{"type":13,"tag":31,"props":32,"children":35},"img",{"alt":33,"src":34},"npm","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@patrity\u002Fskills",[],{"type":13,"tag":20,"props":37,"children":38},{},[39,46,48,54],{"type":13,"tag":40,"props":41,"children":43},"code",{"className":42},[],[44],{"type":18,"value":45},"@patrity\u002Fskills",{"type":18,"value":47}," installs bundles from this registry into a project and keeps them up to date. It writes the same files you would otherwise download and unzip, plus a ",{"type":13,"tag":40,"props":49,"children":51},{"className":50},[],[52],{"type":18,"value":53},"CLAUDE.md",{"type":18,"value":55}," assembled from your answers.",{"type":13,"tag":57,"props":58,"children":60},"h2",{"id":59},"install",[61],{"type":18,"value":62},"Install",{"type":13,"tag":20,"props":64,"children":65},{},[66],{"type":18,"value":67},"There is nothing to install globally — run it straight from npm:",{"type":13,"tag":69,"props":70,"children":75},"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pnpx @patrity\u002Fskills\n","bash","",[76],{"type":13,"tag":40,"props":77,"children":78},{"__ignoreMap":74},[79],{"type":13,"tag":80,"props":81,"children":84},"span",{"class":82,"line":83},"line",1,[85,91],{"type":13,"tag":80,"props":86,"children":88},{"style":87},"--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[89],{"type":18,"value":90},"pnpx",{"type":13,"tag":80,"props":92,"children":94},{"style":93},"--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[95],{"type":18,"value":96}," @patrity\u002Fskills\n",{"type":13,"tag":20,"props":98,"children":99},{},[100,102,108,110,116,118,124],{"type":18,"value":101},"With no command it runs ",{"type":13,"tag":40,"props":103,"children":105},{"className":104},[],[106],{"type":18,"value":107},"init",{"type":18,"value":109},". Node 22 or newer is required. ",{"type":13,"tag":40,"props":111,"children":113},{"className":112},[],[114],{"type":18,"value":115},"npx",{"type":18,"value":117}," and ",{"type":13,"tag":40,"props":119,"children":121},{"className":120},[],[122],{"type":18,"value":123},"bunx",{"type":18,"value":125}," work the same way.",{"type":13,"tag":20,"props":127,"children":128},{},[129,131,137,139,145],{"type":18,"value":130},"Releases are tagged ",{"type":13,"tag":40,"props":132,"children":134},{"className":133},[],[135],{"type":18,"value":136},"cli-vX.Y.Z",{"type":18,"value":138}," and published to ",{"type":13,"tag":24,"props":140,"children":142},{"href":26,"rel":141},[28],[143],{"type":18,"value":144},"npmjs.com\u002Fpackage\u002F@patrity\u002Fskills",{"type":18,"value":146}," with npm provenance.",{"type":13,"tag":57,"props":148,"children":150},{"id":149},"commands",[151],{"type":18,"value":152},"Commands",{"type":13,"tag":154,"props":155,"children":156},"table",{},[157,176],{"type":13,"tag":158,"props":159,"children":160},"thead",{},[161],{"type":13,"tag":162,"props":163,"children":164},"tr",{},[165,171],{"type":13,"tag":166,"props":167,"children":168},"th",{},[169],{"type":18,"value":170},"Command",{"type":13,"tag":166,"props":172,"children":173},{},[174],{"type":18,"value":175},"What it does",{"type":13,"tag":177,"props":178,"children":179},"tbody",{},[180,199,224,241,258,275],{"type":13,"tag":162,"props":181,"children":182},{},[183,194],{"type":13,"tag":184,"props":185,"children":186},"td",{},[187,192],{"type":13,"tag":40,"props":188,"children":190},{"className":189},[],[191],{"type":18,"value":107},{"type":18,"value":193}," (default)",{"type":13,"tag":184,"props":195,"children":196},{},[197],{"type":18,"value":198},"The wizard. Asks the base questions with defaults pre-selected, then offers profiles and the bundle list grouped by tag, shows a dry-run summary of every file it would create or change, and applies it once you confirm.",{"type":13,"tag":162,"props":200,"children":201},{},[202,211],{"type":13,"tag":184,"props":203,"children":204},{},[205],{"type":13,"tag":40,"props":206,"children":208},{"className":207},[],[209],{"type":18,"value":210},"add \u003Cslug…>",{"type":13,"tag":184,"props":212,"children":213},{},[214,216,222],{"type":18,"value":215},"Installs bundles into a project that has already been initialised, pulling in anything they declare in ",{"type":13,"tag":40,"props":217,"children":219},{"className":218},[],[220],{"type":18,"value":221},"dependsOn",{"type":18,"value":223},".",{"type":13,"tag":162,"props":225,"children":226},{},[227,236],{"type":13,"tag":184,"props":228,"children":229},{},[230],{"type":13,"tag":40,"props":231,"children":233},{"className":232},[],[234],{"type":18,"value":235},"remove \u003Cslug…>",{"type":13,"tag":184,"props":237,"children":238},{},[239],{"type":18,"value":240},"Removes a bundle's marker blocks and the files it owns. Files it did not create are left alone.",{"type":13,"tag":162,"props":242,"children":243},{},[244,253],{"type":13,"tag":184,"props":245,"children":246},{},[247],{"type":13,"tag":40,"props":248,"children":250},{"className":249},[],[251],{"type":18,"value":252},"update [slug…]",{"type":13,"tag":184,"props":254,"children":255},{},[256],{"type":18,"value":257},"Re-renders every installed bundle from the current registry and reports what changed. Naming slugs only narrows which must already be installed — the plan is always a full re-render, so upstream fragment and schema changes reach every bundle.",{"type":13,"tag":162,"props":259,"children":260},{},[261,270],{"type":13,"tag":184,"props":262,"children":263},{},[264],{"type":13,"tag":40,"props":265,"children":267},{"className":266},[],[268],{"type":18,"value":269},"diff",{"type":13,"tag":184,"props":271,"children":272},{},[273],{"type":18,"value":274},"Compares local files against the lockfile hashes (your hand edits) and the registry snapshot sha in the lockfile against the current one (upstream drift).",{"type":13,"tag":162,"props":276,"children":277},{},[278,287],{"type":13,"tag":184,"props":279,"children":280},{},[281],{"type":13,"tag":40,"props":282,"children":284},{"className":283},[],[285],{"type":18,"value":286},"list",{"type":13,"tag":184,"props":288,"children":289},{},[290],{"type":18,"value":291},"Prints the installed bundles, the answers on record, and whether the installed snapshot is behind the registry.",{"type":13,"tag":20,"props":293,"children":294},{},[295,297,303,305,311,313,319,320,326,327,333,335,340,342,348,349,355,356,362],{"type":18,"value":296},"Flags accepted everywhere: ",{"type":13,"tag":40,"props":298,"children":300},{"className":299},[],[301],{"type":18,"value":302},"--dir \u003Cpath>",{"type":18,"value":304}," (work in another directory), ",{"type":13,"tag":40,"props":306,"children":308},{"className":307},[],[309],{"type":18,"value":310},"--registry \u003Curl>",{"type":18,"value":312},", ",{"type":13,"tag":40,"props":314,"children":316},{"className":315},[],[317],{"type":18,"value":318},"--yes",{"type":18,"value":312},{"type":13,"tag":40,"props":321,"children":323},{"className":322},[],[324],{"type":18,"value":325},"--force",{"type":18,"value":312},{"type":13,"tag":40,"props":328,"children":330},{"className":329},[],[331],{"type":18,"value":332},"--json",{"type":18,"value":334},". ",{"type":13,"tag":40,"props":336,"children":338},{"className":337},[],[339],{"type":18,"value":107},{"type":18,"value":341}," additionally takes ",{"type":13,"tag":40,"props":343,"children":345},{"className":344},[],[346],{"type":18,"value":347},"--profile \u003Cname>",{"type":18,"value":312},{"type":13,"tag":40,"props":350,"children":352},{"className":351},[],[353],{"type":18,"value":354},"--with \u003Ca,b>",{"type":18,"value":117},{"type":13,"tag":40,"props":357,"children":359},{"className":358},[],[360],{"type":18,"value":361},"--answer \u003Caxis>=\u003Coption>",{"type":18,"value":223},{"type":13,"tag":20,"props":364,"children":365},{},[366,368,373,375,381,382,388,390,396],{"type":18,"value":367},"Re-running ",{"type":13,"tag":40,"props":369,"children":371},{"className":370},[],[372],{"type":18,"value":107},{"type":18,"value":374}," on a project that already has a lockfile edits it rather than starting over: the recorded answers are the starting point (a ",{"type":13,"tag":40,"props":376,"children":378},{"className":377},[],[379],{"type":18,"value":380},"--profile",{"type":18,"value":117},{"type":13,"tag":40,"props":383,"children":385},{"className":384},[],[386],{"type":18,"value":387},"--answer",{"type":18,"value":389}," flags override them, and the wizard shows them pre-selected) and everything installed stays ticked, so bundles added later with ",{"type":13,"tag":40,"props":391,"children":393},{"className":392},[],[394],{"type":18,"value":395},"add",{"type":18,"value":397}," survive. Untick one in the wizard to remove it.",{"type":13,"tag":20,"props":399,"children":400},{},[401,403,409,410,415,416,422],{"type":18,"value":402},"If a bundle you have installed is no longer published, ",{"type":13,"tag":40,"props":404,"children":406},{"className":405},[],[407],{"type":18,"value":408},"update",{"type":18,"value":312},{"type":13,"tag":40,"props":411,"children":413},{"className":412},[],[414],{"type":18,"value":395},{"type":18,"value":117},{"type":13,"tag":40,"props":417,"children":419},{"className":418},[],[420],{"type":18,"value":421},"remove",{"type":18,"value":423}," say so and remove its files instead of refusing to run. Answers recorded against an older base are reconciled the same way: an axis that no longer exists is dropped, an answer that is no longer an option falls back to the axis default, and both are reported.",{"type":13,"tag":20,"props":425,"children":426},{},[427],{"type":18,"value":428},"Windows, macOS and Linux are all supported.",{"type":13,"tag":57,"props":430,"children":432},{"id":431},"what-it-writes",[433],{"type":18,"value":434},"What it writes",{"type":13,"tag":20,"props":436,"children":437},{},[438],{"type":18,"value":439},"Everything lands under the project root you point it at:",{"type":13,"tag":69,"props":441,"children":445},{"className":442,"code":444,"language":18,"meta":74},[443],"language-text",".claude\u002F\n├── skills\u002F…               # bundle skills\n├── rules\u002F…                # bundle rules, globs rewritten for your app directory\n├── hooks\u002F…                # hook scripts, made executable\n├── settings.json          # committed; deep-merged\n├── settings.local.json    # gitignored; permission allowlists\n└── skills.lock.json       # committed; what is installed, at which sha, and your answers\nCLAUDE.md\n",[446],{"type":13,"tag":40,"props":447,"children":448},{"__ignoreMap":74},[449],{"type":18,"value":444},{"type":13,"tag":20,"props":451,"children":452},{},[453,458],{"type":13,"tag":40,"props":454,"children":456},{"className":455},[],[457],{"type":18,"value":53},{"type":18,"value":459}," is created with a title line if it does not exist yet. Each contribution is wrapped in a marker pair:",{"type":13,"tag":69,"props":461,"children":465},{"className":462,"code":463,"language":464,"meta":74,"style":74},"language-md shiki shiki-themes material-theme-lighter github-light github-dark","\u003C!-- skills:bundle:nuxt -->\n- Nuxt 4 uses `app\u002F` as srcDir…\n\u003C!-- \u002Fskills:bundle:nuxt -->\n","md",[466],{"type":13,"tag":40,"props":467,"children":468},{"__ignoreMap":74},[469,478,515],{"type":13,"tag":80,"props":470,"children":471},{"class":82,"line":83},[472],{"type":13,"tag":80,"props":473,"children":475},{"style":474},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit",[476],{"type":18,"value":477},"\u003C!-- skills:bundle:nuxt -->\n",{"type":13,"tag":80,"props":479,"children":481},{"class":82,"line":480},2,[482,488,494,500,506,510],{"type":13,"tag":80,"props":483,"children":485},{"style":484},"--shiki-light:#39ADB5;--shiki-default:#E36209;--shiki-dark:#FFAB70",[486],{"type":18,"value":487},"-",{"type":13,"tag":80,"props":489,"children":491},{"style":490},"--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8",[492],{"type":18,"value":493}," Nuxt 4 uses ",{"type":13,"tag":80,"props":495,"children":497},{"style":496},"--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[498],{"type":18,"value":499},"`",{"type":13,"tag":80,"props":501,"children":503},{"style":502},"--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[504],{"type":18,"value":505},"app\u002F",{"type":13,"tag":80,"props":507,"children":508},{"style":496},[509],{"type":18,"value":499},{"type":13,"tag":80,"props":511,"children":512},{"style":490},[513],{"type":18,"value":514}," as srcDir…\n",{"type":13,"tag":80,"props":516,"children":518},{"class":82,"line":517},3,[519],{"type":13,"tag":80,"props":520,"children":521},{"style":474},[522],{"type":18,"value":523},"\u003C!-- \u002Fskills:bundle:nuxt -->\n",{"type":13,"tag":20,"props":525,"children":526},{},[527,529,535],{"type":18,"value":528},"Everything outside those markers is yours and is never touched. See ",{"type":13,"tag":24,"props":530,"children":532},{"href":531},"\u002Fdocs\u002Fbase-and-profiles",[533],{"type":18,"value":534},"Base and profiles",{"type":18,"value":536}," for how the sections are ordered.",{"type":13,"tag":20,"props":538,"children":539},{},[540,542,548,550,556,558,564,566,572,574,579,580,585,587,593,595,600,602,607],{"type":18,"value":541},"The two settings files are treated differently. ",{"type":13,"tag":40,"props":543,"children":545},{"className":544},[],[546],{"type":18,"value":547},"settings.json",{"type":18,"value":549}," is meant to be committed, so bundle hooks are unioned into it by matcher and command string and ",{"type":13,"tag":40,"props":551,"children":553},{"className":552},[],[554],{"type":18,"value":555},"permissions.deny",{"type":18,"value":557}," entries are merged. ",{"type":13,"tag":40,"props":559,"children":561},{"className":560},[],[562],{"type":18,"value":563},"settings.local.json",{"type":18,"value":565}," is per-machine: bundle ",{"type":13,"tag":40,"props":567,"children":569},{"className":568},[],[570],{"type":18,"value":571},"permissions.allow",{"type":18,"value":573}," entries go there, and the CLI makes sure it is gitignored. What each bundle merged into each file is recorded in the lockfile, so removing the bundle takes its hooks and permissions back out of the file it put them in. Anything you added by hand survives ",{"type":13,"tag":40,"props":575,"children":577},{"className":576},[],[578],{"type":18,"value":421},{"type":18,"value":117},{"type":13,"tag":40,"props":581,"children":583},{"className":582},[],[584],{"type":18,"value":408},{"type":18,"value":586}," unless it is byte-identical to an entry the bundle contributed to that same file — so an ",{"type":13,"tag":40,"props":588,"children":590},{"className":589},[],[591],{"type":18,"value":592},"allow",{"type":18,"value":594}," you keep in ",{"type":13,"tag":40,"props":596,"children":598},{"className":597},[],[599],{"type":18,"value":547},{"type":18,"value":601}," stays put when the bundle's copy leaves ",{"type":13,"tag":40,"props":603,"children":605},{"className":604},[],[606],{"type":18,"value":563},{"type":18,"value":223},{"type":13,"tag":57,"props":609,"children":611},{"id":610},"updating",[612],{"type":18,"value":613},"Updating",{"type":13,"tag":20,"props":615,"children":616},{},[617,622,624,630,632,637],{"type":13,"tag":40,"props":618,"children":620},{"className":619},[],[621],{"type":18,"value":408},{"type":18,"value":623}," re-renders everything and reports what changed. It compares the hash of each marker block with the hash in ",{"type":13,"tag":40,"props":625,"children":627},{"className":626},[],[628],{"type":18,"value":629},".claude\u002Fskills.lock.json",{"type":18,"value":631},": a block you edited by hand no longer matches, so the CLI keeps your version and lists it as hand-edited rather than overwriting it. Pass ",{"type":13,"tag":40,"props":633,"children":635},{"className":634},[],[636],{"type":18,"value":325},{"type":18,"value":638}," when you want your edit replaced by the upstream version.",{"type":13,"tag":20,"props":640,"children":641},{},[642,644,650,652,658],{"type":18,"value":643},"The same protection applies to bundle files. A file that was installed and then edited is ",{"type":13,"tag":40,"props":645,"children":647},{"className":646},[],[648],{"type":18,"value":649},"protected",{"type":18,"value":651}," and left alone; a file that exists but was never installed by the CLI is a ",{"type":13,"tag":40,"props":653,"children":655},{"className":654},[],[656],{"type":18,"value":657},"conflict",{"type":18,"value":659},", and you are asked per file whether to skip it or overwrite it with the bundle version. Either way the plan summary names the paths it did not write.",{"type":13,"tag":20,"props":661,"children":662},{},[663],{"type":18,"value":664},"A file a bundle used to ship and no longer does is removed if you never touched it, and kept with a warning if you did.",{"type":13,"tag":69,"props":666,"children":668},{"className":71,"code":667,"language":73,"meta":74,"style":74},"pnpx @patrity\u002Fskills diff     # what drifted, locally and upstream\npnpx @patrity\u002Fskills update   # apply, with a confirmation\n",[669],{"type":13,"tag":40,"props":670,"children":671},{"__ignoreMap":74},[672,694],{"type":13,"tag":80,"props":673,"children":674},{"class":82,"line":83},[675,679,684,689],{"type":13,"tag":80,"props":676,"children":677},{"style":87},[678],{"type":18,"value":90},{"type":13,"tag":80,"props":680,"children":681},{"style":93},[682],{"type":18,"value":683}," @patrity\u002Fskills",{"type":13,"tag":80,"props":685,"children":686},{"style":93},[687],{"type":18,"value":688}," diff",{"type":13,"tag":80,"props":690,"children":691},{"style":474},[692],{"type":18,"value":693},"     # what drifted, locally and upstream\n",{"type":13,"tag":80,"props":695,"children":696},{"class":82,"line":480},[697,701,705,710],{"type":13,"tag":80,"props":698,"children":699},{"style":87},[700],{"type":18,"value":90},{"type":13,"tag":80,"props":702,"children":703},{"style":93},[704],{"type":18,"value":683},{"type":13,"tag":80,"props":706,"children":707},{"style":93},[708],{"type":18,"value":709}," update",{"type":13,"tag":80,"props":711,"children":712},{"style":474},[713],{"type":18,"value":714},"   # apply, with a confirmation\n",{"type":13,"tag":57,"props":716,"children":718},{"id":717},"non-interactive-use",[719],{"type":18,"value":720},"Non-interactive use",{"type":13,"tag":20,"props":722,"children":723},{},[724],{"type":18,"value":725},"Every prompt has a flag, so the wizard runs unattended in a script or a CI job:",{"type":13,"tag":69,"props":727,"children":729},{"className":71,"code":728,"language":73,"meta":74,"style":74},"pnpx @patrity\u002Fskills init --yes --profile nuxt-app\n",[730],{"type":13,"tag":40,"props":731,"children":732},{"__ignoreMap":74},[733],{"type":13,"tag":80,"props":734,"children":735},{"class":82,"line":83},[736,740,744,749,754,759],{"type":13,"tag":80,"props":737,"children":738},{"style":87},[739],{"type":18,"value":90},{"type":13,"tag":80,"props":741,"children":742},{"style":93},[743],{"type":18,"value":683},{"type":13,"tag":80,"props":745,"children":746},{"style":93},[747],{"type":18,"value":748}," init",{"type":13,"tag":80,"props":750,"children":751},{"style":502},[752],{"type":18,"value":753}," --yes",{"type":13,"tag":80,"props":755,"children":756},{"style":502},[757],{"type":18,"value":758}," --profile",{"type":13,"tag":80,"props":760,"children":761},{"style":93},[762],{"type":18,"value":763}," nuxt-app\n",{"type":13,"tag":20,"props":765,"children":766},{},[767],{"type":18,"value":768},"Start from a profile and override individual answers, or skip profiles entirely:",{"type":13,"tag":69,"props":770,"children":772},{"className":71,"code":771,"language":73,"meta":74,"style":74},"pnpx @patrity\u002Fskills init --yes \\\n  --profile library \\\n  --answer pm=npm \\\n  --answer deploy=vercel \\\n  --with nuxt,nuxt-ui\n",[773],{"type":13,"tag":40,"props":774,"children":775},{"__ignoreMap":74},[776,801,818,835,852],{"type":13,"tag":80,"props":777,"children":778},{"class":82,"line":83},[779,783,787,791,795],{"type":13,"tag":80,"props":780,"children":781},{"style":87},[782],{"type":18,"value":90},{"type":13,"tag":80,"props":784,"children":785},{"style":93},[786],{"type":18,"value":683},{"type":13,"tag":80,"props":788,"children":789},{"style":93},[790],{"type":18,"value":748},{"type":13,"tag":80,"props":792,"children":793},{"style":502},[794],{"type":18,"value":753},{"type":13,"tag":80,"props":796,"children":798},{"style":797},"--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[799],{"type":18,"value":800}," \\\n",{"type":13,"tag":80,"props":802,"children":803},{"class":82,"line":480},[804,809,814],{"type":13,"tag":80,"props":805,"children":806},{"style":502},[807],{"type":18,"value":808},"  --profile",{"type":13,"tag":80,"props":810,"children":811},{"style":93},[812],{"type":18,"value":813}," library",{"type":13,"tag":80,"props":815,"children":816},{"style":797},[817],{"type":18,"value":800},{"type":13,"tag":80,"props":819,"children":820},{"class":82,"line":517},[821,826,831],{"type":13,"tag":80,"props":822,"children":823},{"style":502},[824],{"type":18,"value":825},"  --answer",{"type":13,"tag":80,"props":827,"children":828},{"style":93},[829],{"type":18,"value":830}," pm=npm",{"type":13,"tag":80,"props":832,"children":833},{"style":797},[834],{"type":18,"value":800},{"type":13,"tag":80,"props":836,"children":838},{"class":82,"line":837},4,[839,843,848],{"type":13,"tag":80,"props":840,"children":841},{"style":502},[842],{"type":18,"value":825},{"type":13,"tag":80,"props":844,"children":845},{"style":93},[846],{"type":18,"value":847}," deploy=vercel",{"type":13,"tag":80,"props":849,"children":850},{"style":797},[851],{"type":18,"value":800},{"type":13,"tag":80,"props":853,"children":855},{"class":82,"line":854},5,[856,861],{"type":13,"tag":80,"props":857,"children":858},{"style":502},[859],{"type":18,"value":860},"  --with",{"type":13,"tag":80,"props":862,"children":863},{"style":93},[864],{"type":18,"value":865}," nuxt,nuxt-ui\n",{"type":13,"tag":20,"props":867,"children":868},{},[869,874,876,882,884,890,892,897,899,905,907,912,914,920],{"type":13,"tag":40,"props":870,"children":872},{"className":871},[],[873],{"type":18,"value":387},{"type":18,"value":875}," is repeatable and takes ",{"type":13,"tag":40,"props":877,"children":879},{"className":878},[],[880],{"type":18,"value":881},"axis=option",{"type":18,"value":883}," pairs; ",{"type":13,"tag":40,"props":885,"children":887},{"className":886},[],[888],{"type":18,"value":889},"--with",{"type":18,"value":891}," takes a comma-separated list of bundle slugs. With ",{"type":13,"tag":40,"props":893,"children":895},{"className":894},[],[896],{"type":18,"value":318},{"type":18,"value":898},", conflicting files are skipped rather than prompted for, and the summary at the end lists them one per line (",{"type":13,"tag":40,"props":900,"children":902},{"className":901},[],[903],{"type":18,"value":904},"conflict: .claude\u002Fhooks\u002Fpre-commit.sh (kept yours)",{"type":18,"value":906},"). Add ",{"type":13,"tag":40,"props":908,"children":910},{"className":909},[],[911],{"type":18,"value":332},{"type":18,"value":913}," when a script needs to read the result — skipped paths come back in its ",{"type":13,"tag":40,"props":915,"children":917},{"className":916},[],[918],{"type":18,"value":919},"skipped",{"type":18,"value":921}," array.",{"type":13,"tag":57,"props":923,"children":925},{"id":924},"using-another-registry",[926],{"type":18,"value":927},"Using another registry",{"type":13,"tag":20,"props":929,"children":930},{},[931,933,939,941,947],{"type":18,"value":932},"The CLI talks to ",{"type":13,"tag":40,"props":934,"children":936},{"className":935},[],[937],{"type":18,"value":938},"https:\u002F\u002Fskills.patrity.com",{"type":18,"value":940}," by default. Point it at any host that serves the same API — a fork, a staging deploy, or a local ",{"type":13,"tag":40,"props":942,"children":944},{"className":943},[],[945],{"type":18,"value":946},"pnpm dev",{"type":18,"value":948},":",{"type":13,"tag":69,"props":950,"children":952},{"className":71,"code":951,"language":73,"meta":74,"style":74},"pnpx @patrity\u002Fskills init --registry http:\u002F\u002Flocalhost:3000\n",[953],{"type":13,"tag":40,"props":954,"children":955},{"__ignoreMap":74},[956],{"type":13,"tag":80,"props":957,"children":958},{"class":82,"line":83},[959,963,967,971,976],{"type":13,"tag":80,"props":960,"children":961},{"style":87},[962],{"type":18,"value":90},{"type":13,"tag":80,"props":964,"children":965},{"style":93},[966],{"type":18,"value":683},{"type":13,"tag":80,"props":968,"children":969},{"style":93},[970],{"type":18,"value":748},{"type":13,"tag":80,"props":972,"children":973},{"style":502},[974],{"type":18,"value":975}," --registry",{"type":13,"tag":80,"props":977,"children":978},{"style":93},[979],{"type":18,"value":980}," http:\u002F\u002Flocalhost:3000\n",{"type":13,"tag":20,"props":982,"children":983},{},[984,990,992,997,998,1003],{"type":13,"tag":40,"props":985,"children":987},{"className":986},[],[988],{"type":18,"value":989},"--registry",{"type":18,"value":991}," works on every command, including ",{"type":13,"tag":40,"props":993,"children":995},{"className":994},[],[996],{"type":18,"value":408},{"type":18,"value":117},{"type":13,"tag":40,"props":999,"children":1001},{"className":1000},[],[1002],{"type":18,"value":269},{"type":18,"value":1004},", and the registry the project was initialised against is recorded in the lockfile.",{"type":13,"tag":1006,"props":1007,"children":1008},"style",{},[1009],{"type":18,"value":1010},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{}]