@joshuafolkken/kit 1.872.0 → 1.881.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 (256) hide show
  1. package/.github/workflows/publish.yml +39 -2
  2. package/README.md +3 -3
  3. package/dist/hooks/batch-guard.js +4 -4
  4. package/dist/hooks/{chunk-KABG6AEW.js → chunk-264QY6KS.js} +7 -0
  5. package/dist/hooks/{chunk-I4D3NVUD.js → chunk-36UE53LS.js} +2 -2
  6. package/dist/hooks/{chunk-WCYPBPJC.js → chunk-4OXFU3MK.js} +8 -8
  7. package/dist/hooks/{chunk-ABVEVV2M.js → chunk-6MQCXEEA.js} +1 -1
  8. package/dist/hooks/{chunk-46EEEHC3.js → chunk-FNFOLFFV.js} +1 -1
  9. package/dist/hooks/{chunk-5U5EZYG6.js → chunk-FRJKVSK3.js} +2 -2
  10. package/dist/hooks/{chunk-2RUPMGGV.js → chunk-PRDCNGA6.js} +4 -4
  11. package/dist/hooks/{chunk-WMN4TSVF.js → chunk-VGYSA2NT.js} +2 -2
  12. package/dist/hooks/{chunk-A5YJ3H7E.js → chunk-Y5OYCU2F.js} +3 -3
  13. package/dist/hooks/{chunk-4QHBNAI4.js → chunk-ZBK4XRAS.js} +3 -3
  14. package/dist/hooks/codex-hook-adapter.js +10 -10
  15. package/dist/hooks/duplicate-read-guard.js +5 -5
  16. package/dist/hooks/format-edited.js +2 -2
  17. package/dist/hooks/investigation-guard.js +5 -5
  18. package/dist/hooks/pretool-guard.js +9 -9
  19. package/dist/hooks/stop-guard.js +3 -3
  20. package/dist/josh.js +7 -0
  21. package/package.json +6 -2
  22. package/scripts/init/distributed-paths.ts +14 -11
  23. package/scripts/init/hook-command-bootstrap.ts +51 -0
  24. package/scripts/init/hook-command-rewrite.ts +9 -1
  25. package/scripts/init/init-logic.ts +2 -8
  26. package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +10 -0
  27. package/scripts/josh/josh-command-map.ts +1 -0
  28. package/scripts/josh/josh-commands-project.ts +6 -0
  29. package/scripts/registry-migration/migrate-logic.ts +229 -0
  30. package/scripts/registry-migration/migrate.ts +280 -0
  31. package/scripts/registry-migration/user-npmrc.ts +15 -0
  32. package/templates/workflows/ci.yml +6 -2
  33. package/dist/hooks/chunk-25JL6FMS.js +0 -4970
  34. package/dist/hooks/chunk-2ANGT3XM.js +0 -375
  35. package/dist/hooks/chunk-2EI5GBSW.js +0 -42
  36. package/dist/hooks/chunk-2OT5XE2N.js +0 -5014
  37. package/dist/hooks/chunk-2XIGZQMQ.js +0 -3299
  38. package/dist/hooks/chunk-33ELOKEV.js +0 -910
  39. package/dist/hooks/chunk-33YRTKM7.js +0 -230
  40. package/dist/hooks/chunk-36JQU5NN.js +0 -77
  41. package/dist/hooks/chunk-3EJBTWVS.js +0 -1769
  42. package/dist/hooks/chunk-3FK5SFAC.js +0 -432
  43. package/dist/hooks/chunk-3PWPYDD2.js +0 -240
  44. package/dist/hooks/chunk-3TQU7TDH.js +0 -375
  45. package/dist/hooks/chunk-3TVLSFZ6.js +0 -432
  46. package/dist/hooks/chunk-3VXYCB4E.js +0 -77
  47. package/dist/hooks/chunk-44M6JXGV.js +0 -3398
  48. package/dist/hooks/chunk-4A7UVP2P.js +0 -364
  49. package/dist/hooks/chunk-4LFQEZS4.js +0 -137
  50. package/dist/hooks/chunk-4OCX3V2T.js +0 -469
  51. package/dist/hooks/chunk-4OHA5DE7.js +0 -49
  52. package/dist/hooks/chunk-4PMDW3YD.js +0 -68
  53. package/dist/hooks/chunk-4SSB3FEE.js +0 -3273
  54. package/dist/hooks/chunk-5A2WQ2CQ.js +0 -5390
  55. package/dist/hooks/chunk-5EVA2JQB.js +0 -5390
  56. package/dist/hooks/chunk-5P7VF5VE.js +0 -3230
  57. package/dist/hooks/chunk-5QWJGGZP.js +0 -49
  58. package/dist/hooks/chunk-5VUUF3ZV.js +0 -240
  59. package/dist/hooks/chunk-5WA7UBT3.js +0 -374
  60. package/dist/hooks/chunk-6EBGRQ3Q.js +0 -301
  61. package/dist/hooks/chunk-6TVHWMD3.js +0 -432
  62. package/dist/hooks/chunk-6VAGLEMB.js +0 -68
  63. package/dist/hooks/chunk-75BTXKFJ.js +0 -3424
  64. package/dist/hooks/chunk-75RHN67S.js +0 -137
  65. package/dist/hooks/chunk-76KC3BDD.js +0 -3414
  66. package/dist/hooks/chunk-76SLS7CZ.js +0 -898
  67. package/dist/hooks/chunk-7DHZ4DWT.js +0 -5015
  68. package/dist/hooks/chunk-7INSJDGE.js +0 -458
  69. package/dist/hooks/chunk-7VJ4FTDX.js +0 -268
  70. package/dist/hooks/chunk-7XCYNHQK.js +0 -77
  71. package/dist/hooks/chunk-AAEXXUUL.js +0 -268
  72. package/dist/hooks/chunk-ACN3YXFL.js +0 -68
  73. package/dist/hooks/chunk-AD3XE3QZ.js +0 -397
  74. package/dist/hooks/chunk-AENFZPZH.js +0 -230
  75. package/dist/hooks/chunk-AFKRFQ6W.js +0 -68
  76. package/dist/hooks/chunk-AHD5IPWI.js +0 -375
  77. package/dist/hooks/chunk-AMK5JGV7.js +0 -77
  78. package/dist/hooks/chunk-ARN7NCQI.js +0 -425
  79. package/dist/hooks/chunk-AUFY653N.js +0 -3425
  80. package/dist/hooks/chunk-AXQBNFEF.js +0 -375
  81. package/dist/hooks/chunk-AYC7R6U4.js +0 -3316
  82. package/dist/hooks/chunk-AYEA2FJ7.js +0 -5015
  83. package/dist/hooks/chunk-B2LIXYFL.js +0 -77
  84. package/dist/hooks/chunk-B4HPNY2I.js +0 -375
  85. package/dist/hooks/chunk-B4YNCUGB.js +0 -469
  86. package/dist/hooks/chunk-B57S3VWT.js +0 -922
  87. package/dist/hooks/chunk-BINZ3PLI.js +0 -364
  88. package/dist/hooks/chunk-BIWLABFK.js +0 -432
  89. package/dist/hooks/chunk-BODUSXKK.js +0 -410
  90. package/dist/hooks/chunk-BQBAT2YK.js +0 -375
  91. package/dist/hooks/chunk-BUJEBW75.js +0 -391
  92. package/dist/hooks/chunk-BVNWORKA.js +0 -72
  93. package/dist/hooks/chunk-BWI47LQS.js +0 -5205
  94. package/dist/hooks/chunk-C25HRMJX.js +0 -137
  95. package/dist/hooks/chunk-CBFZNC74.js +0 -375
  96. package/dist/hooks/chunk-CECYXS4Y.js +0 -3424
  97. package/dist/hooks/chunk-CELGUP5F.js +0 -49
  98. package/dist/hooks/chunk-CMHANU3F.js +0 -3442
  99. package/dist/hooks/chunk-CMN372LI.js +0 -68
  100. package/dist/hooks/chunk-CPGZLMMK.js +0 -3299
  101. package/dist/hooks/chunk-CTQKXDC7.js +0 -268
  102. package/dist/hooks/chunk-CYAT4RIT.js +0 -68
  103. package/dist/hooks/chunk-CYTWYCH2.js +0 -5014
  104. package/dist/hooks/chunk-CZSOLRBA.js +0 -77
  105. package/dist/hooks/chunk-D2PIDYJR.js +0 -3438
  106. package/dist/hooks/chunk-DE57HI6T.js +0 -137
  107. package/dist/hooks/chunk-DGXDGAPG.js +0 -5306
  108. package/dist/hooks/chunk-DNYRSYQG.js +0 -5014
  109. package/dist/hooks/chunk-DTAXH2A2.js +0 -240
  110. package/dist/hooks/chunk-E2IZUWI5.js +0 -375
  111. package/dist/hooks/chunk-E4L2K2BL.js +0 -397
  112. package/dist/hooks/chunk-E55NKX5F.js +0 -68
  113. package/dist/hooks/chunk-ECXVCCVD.js +0 -3079
  114. package/dist/hooks/chunk-EPHO443D.js +0 -68
  115. package/dist/hooks/chunk-EUFK2BI2.js +0 -375
  116. package/dist/hooks/chunk-EYCD5ZAV.js +0 -137
  117. package/dist/hooks/chunk-F2SDYJU4.js +0 -240
  118. package/dist/hooks/chunk-F4B5D5TF.js +0 -68
  119. package/dist/hooks/chunk-FGEO3NDX.js +0 -432
  120. package/dist/hooks/chunk-FJYI52RE.js +0 -137
  121. package/dist/hooks/chunk-FYTZHIY4.js +0 -3085
  122. package/dist/hooks/chunk-G7JL2A5K.js +0 -375
  123. package/dist/hooks/chunk-GA3ITDBW.js +0 -42
  124. package/dist/hooks/chunk-GDR4H4SV.js +0 -469
  125. package/dist/hooks/chunk-GFKDXPSM.js +0 -2855
  126. package/dist/hooks/chunk-GIMRTKFU.js +0 -566
  127. package/dist/hooks/chunk-GOPHRLGO.js +0 -240
  128. package/dist/hooks/chunk-GX4HO7SJ.js +0 -230
  129. package/dist/hooks/chunk-GXKKK23T.js +0 -240
  130. package/dist/hooks/chunk-GZ6FUVIK.js +0 -566
  131. package/dist/hooks/chunk-H5HPY5M5.js +0 -2869
  132. package/dist/hooks/chunk-HCF3OGEE.js +0 -1829
  133. package/dist/hooks/chunk-HDEXAOUM.js +0 -469
  134. package/dist/hooks/chunk-HM2TY3TN.js +0 -469
  135. package/dist/hooks/chunk-HOA7NXA2.js +0 -55
  136. package/dist/hooks/chunk-HOFEWH6H.js +0 -240
  137. package/dist/hooks/chunk-HUUI6S5J.js +0 -2669
  138. package/dist/hooks/chunk-I4Q6WAJE.js +0 -68
  139. package/dist/hooks/chunk-IB6N4CR2.js +0 -432
  140. package/dist/hooks/chunk-IFLDYJMD.js +0 -469
  141. package/dist/hooks/chunk-IGU466YD.js +0 -77
  142. package/dist/hooks/chunk-IJCQUHKY.js +0 -375
  143. package/dist/hooks/chunk-IKUMBDJB.js +0 -230
  144. package/dist/hooks/chunk-IM3BDIBJ.js +0 -5005
  145. package/dist/hooks/chunk-IMYMAODK.js +0 -3431
  146. package/dist/hooks/chunk-IN2ZVGXA.js +0 -5005
  147. package/dist/hooks/chunk-ITVJ2MKQ.js +0 -18
  148. package/dist/hooks/chunk-J5RIJYTM.js +0 -2669
  149. package/dist/hooks/chunk-JFLMH4K5.js +0 -3460
  150. package/dist/hooks/chunk-JR25IFML.js +0 -77
  151. package/dist/hooks/chunk-JT5AUXFI.js +0 -432
  152. package/dist/hooks/chunk-JY5YVN6N.js +0 -3234
  153. package/dist/hooks/chunk-K5Q4ETVI.js +0 -391
  154. package/dist/hooks/chunk-K67V2F24.js +0 -137
  155. package/dist/hooks/chunk-KATZESEC.js +0 -3273
  156. package/dist/hooks/chunk-KFH4H7W7.js +0 -469
  157. package/dist/hooks/chunk-KMUEI6RX.js +0 -910
  158. package/dist/hooks/chunk-KMV4OY77.js +0 -3438
  159. package/dist/hooks/chunk-KQAZNWEY.js +0 -137
  160. package/dist/hooks/chunk-KZZR6JER.js +0 -5015
  161. package/dist/hooks/chunk-LAR6DREP.js +0 -77
  162. package/dist/hooks/chunk-LNCJWEZD.js +0 -5015
  163. package/dist/hooks/chunk-LRYD2GLM.js +0 -6
  164. package/dist/hooks/chunk-LXBKYHDV.js +0 -77
  165. package/dist/hooks/chunk-LYLKIUNE.js +0 -5024
  166. package/dist/hooks/chunk-LZKCFOVC.js +0 -432
  167. package/dist/hooks/chunk-M4FCIYRI.js +0 -77
  168. package/dist/hooks/chunk-M5M7327Q.js +0 -3425
  169. package/dist/hooks/chunk-MF72MHSX.js +0 -3455
  170. package/dist/hooks/chunk-MK56LKDO.js +0 -397
  171. package/dist/hooks/chunk-N3MJADY7.js +0 -240
  172. package/dist/hooks/chunk-NFQSUDBN.js +0 -458
  173. package/dist/hooks/chunk-NHREKY45.js +0 -137
  174. package/dist/hooks/chunk-NP5TTAAW.js +0 -375
  175. package/dist/hooks/chunk-NQTLTKTJ.js +0 -2993
  176. package/dist/hooks/chunk-NVRCZPBZ.js +0 -391
  177. package/dist/hooks/chunk-O46HMMLJ.js +0 -469
  178. package/dist/hooks/chunk-OFJGH2L4.js +0 -240
  179. package/dist/hooks/chunk-OLFMCZH5.js +0 -240
  180. package/dist/hooks/chunk-OMCZS46I.js +0 -49
  181. package/dist/hooks/chunk-OQZEZW5G.js +0 -469
  182. package/dist/hooks/chunk-P2MDAT2Y.js +0 -1897
  183. package/dist/hooks/chunk-P3M2JJIF.js +0 -68
  184. package/dist/hooks/chunk-PDVHQITQ.js +0 -3453
  185. package/dist/hooks/chunk-PNT2AMDH.js +0 -391
  186. package/dist/hooks/chunk-PR2LVSY6.js +0 -3445
  187. package/dist/hooks/chunk-PRR5R4JK.js +0 -137
  188. package/dist/hooks/chunk-PXT44QVN.js +0 -566
  189. package/dist/hooks/chunk-PZLWJLAP.js +0 -469
  190. package/dist/hooks/chunk-Q2FEAZJ2.js +0 -77
  191. package/dist/hooks/chunk-Q32WETDO.js +0 -3265
  192. package/dist/hooks/chunk-Q45DUBLE.js +0 -3600
  193. package/dist/hooks/chunk-Q7NZSWQ5.js +0 -240
  194. package/dist/hooks/chunk-QH2JNAMK.js +0 -3085
  195. package/dist/hooks/chunk-QNNWYQ2R.js +0 -375
  196. package/dist/hooks/chunk-QPU5H2OS.js +0 -68
  197. package/dist/hooks/chunk-QRAHZ5TO.js +0 -1829
  198. package/dist/hooks/chunk-QUZ5HPIE.js +0 -469
  199. package/dist/hooks/chunk-QVCRG34O.js +0 -2893
  200. package/dist/hooks/chunk-R3MY4E3S.js +0 -1675
  201. package/dist/hooks/chunk-R6TXJJXP.js +0 -77
  202. package/dist/hooks/chunk-REJU6VT7.js +0 -1829
  203. package/dist/hooks/chunk-REQAQLRC.js +0 -2993
  204. package/dist/hooks/chunk-RFCXPAHH.js +0 -391
  205. package/dist/hooks/chunk-RHI6Y22X.js +0 -137
  206. package/dist/hooks/chunk-RKZVOBBS.js +0 -469
  207. package/dist/hooks/chunk-RL57TT2Y.js +0 -566
  208. package/dist/hooks/chunk-RORDOD4S.js +0 -3321
  209. package/dist/hooks/chunk-RZKYW5P2.js +0 -77
  210. package/dist/hooks/chunk-SJPJ6VSI.js +0 -391
  211. package/dist/hooks/chunk-SKSIJQQQ.js +0 -432
  212. package/dist/hooks/chunk-SSQDZKXG.js +0 -268
  213. package/dist/hooks/chunk-SYHFKE4C.js +0 -77
  214. package/dist/hooks/chunk-TCGNI2ZY.js +0 -42
  215. package/dist/hooks/chunk-TG3WXJF5.js +0 -137
  216. package/dist/hooks/chunk-TH7IJAY5.js +0 -77
  217. package/dist/hooks/chunk-TLZ27PCY.js +0 -240
  218. package/dist/hooks/chunk-U652FXTN.js +0 -566
  219. package/dist/hooks/chunk-UEK47YUF.js +0 -268
  220. package/dist/hooks/chunk-UIO45H3O.js +0 -432
  221. package/dist/hooks/chunk-UNLZEEVH.js +0 -5005
  222. package/dist/hooks/chunk-UNRVF3SZ.js +0 -432
  223. package/dist/hooks/chunk-USLFAFOI.js +0 -3453
  224. package/dist/hooks/chunk-VAEELMLL.js +0 -442
  225. package/dist/hooks/chunk-VALSWLDQ.js +0 -3453
  226. package/dist/hooks/chunk-VC5JEPNY.js +0 -3398
  227. package/dist/hooks/chunk-VEZVK6C7.js +0 -230
  228. package/dist/hooks/chunk-VK5JKFAR.js +0 -49
  229. package/dist/hooks/chunk-VNF2KP7Z.js +0 -469
  230. package/dist/hooks/chunk-VWWCUMW6.js +0 -2669
  231. package/dist/hooks/chunk-W4JARUQV.js +0 -137
  232. package/dist/hooks/chunk-WEOBMNJG.js +0 -2993
  233. package/dist/hooks/chunk-WKJU3J5Y.js +0 -5390
  234. package/dist/hooks/chunk-WNON54PT.js +0 -3469
  235. package/dist/hooks/chunk-WOVKBPPX.js +0 -137
  236. package/dist/hooks/chunk-WRVFORYJ.js +0 -432
  237. package/dist/hooks/chunk-WUBVYGQZ.js +0 -240
  238. package/dist/hooks/chunk-WWULTUOM.js +0 -68
  239. package/dist/hooks/chunk-WXHKKB45.js +0 -4962
  240. package/dist/hooks/chunk-XAI3YTHJ.js +0 -469
  241. package/dist/hooks/chunk-XFZH6JZJ.js +0 -77
  242. package/dist/hooks/chunk-XGPWX6IA.js +0 -137
  243. package/dist/hooks/chunk-XIXXIVGY.js +0 -566
  244. package/dist/hooks/chunk-XKDOYJGA.js +0 -922
  245. package/dist/hooks/chunk-YALTVBHM.js +0 -432
  246. package/dist/hooks/chunk-YEBEPBFK.js +0 -5014
  247. package/dist/hooks/chunk-YI2BQ3DK.js +0 -3441
  248. package/dist/hooks/chunk-YVNBCFGG.js +0 -1829
  249. package/dist/hooks/chunk-YXBN3RGG.js +0 -432
  250. package/dist/hooks/chunk-Z2OOJSW3.js +0 -3163
  251. package/dist/hooks/chunk-ZA3HVBOY.js +0 -2644
  252. package/dist/hooks/chunk-ZKID46U3.js +0 -137
  253. package/dist/hooks/chunk-ZPMU2JV6.js +0 -49
  254. package/dist/hooks/chunk-ZRKY4W7O.js +0 -432
  255. package/dist/hooks/chunk-ZTMRB7LJ.js +0 -268
  256. package/dist/hooks/chunk-ZVPPBQ3L.js +0 -3413
@@ -5,7 +5,7 @@ on:
5
5
  types: [new-tag-created]
6
6
 
7
7
  jobs:
8
- publish:
8
+ publish-github:
9
9
  runs-on: ubuntu-latest
10
10
  timeout-minutes: 10
11
11
  permissions:
@@ -13,6 +13,8 @@ jobs:
13
13
  packages: write
14
14
  steps:
15
15
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
16
+ with:
17
+ ref: ${{ github.event.client_payload.tag }}
16
18
 
17
19
  - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
18
20
  with:
@@ -34,6 +36,41 @@ jobs:
34
36
 
35
37
  - run: pnpm install --frozen-lockfile --ignore-scripts
36
38
 
37
- - run: pnpm publish --no-git-checks --tag latest
39
+ - run: pnpm publish --no-git-checks --tag latest --registry https://npm.pkg.github.com
38
40
  env:
39
41
  NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42
+
43
+ publish-npm:
44
+ runs-on: ubuntu-latest
45
+ timeout-minutes: 10
46
+ permissions:
47
+ contents: read
48
+ id-token: write
49
+ steps:
50
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
51
+ with:
52
+ ref: ${{ github.event.client_payload.tag }}
53
+
54
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
55
+ with:
56
+ node-version: 24
57
+ registry-url: 'https://registry.npmjs.org'
58
+
59
+ - name: Resolve pnpm version
60
+ id: pnpm-version
61
+ run: |
62
+ version=$(node -p "const m = require('./package.json'); m.packageManager?.match(/^pnpm@([^+]+)/)?.[1] ?? (m.devEngines?.packageManager?.name === 'pnpm' ? m.devEngines.packageManager.version?.split('+')[0] : 'latest') ?? 'latest'")
63
+ test -n "$version"
64
+ echo "version=$version" >> "$GITHUB_OUTPUT"
65
+
66
+ - uses: pnpm/setup@fbda4c85fc2e1e08721cd8763afea8f48d60f024 # v3.0.0
67
+ with:
68
+ version: ${{ steps.pnpm-version.outputs.version }}
69
+ install: false
70
+
71
+ - run: pnpm install --frozen-lockfile --ignore-scripts
72
+
73
+ - run: pnpm pack --out "$RUNNER_TEMP/kit.tgz"
74
+
75
+ - name: Publish to npm
76
+ run: cd "$RUNNER_TEMP" && npm publish kit.tgz --access public --tag latest --registry https://registry.npmjs.org --userconfig /dev/null
package/README.md CHANGED
@@ -8,12 +8,11 @@ Shared toolchain config and CLI for TypeScript projects — ESLint, Prettier, Ty
8
8
  ## Prerequisites
9
9
 
10
10
  - [Node.js](https://nodejs.org/) with [pnpm](https://pnpm.io/)
11
- - [gh CLI](https://cli.github.com/) — required for GitHub Packages authentication. Install via `brew install gh` (macOS), `winget install GitHub.cli` (Windows), or see the [gh installation docs](https://github.com/cli/cli#installation).
11
+ - [gh CLI](https://cli.github.com/) for `josh version` and existing GitHub Packages consumers. It is not required to install kit from public npm; see [authentication.md](./docs/authentication.md) for setup when needed.
12
12
 
13
13
  ## Quick start
14
14
 
15
15
  ```bash
16
- gh auth login --scopes read:packages # see docs/authentication.md for the full setup
17
16
  pnpm add -g @joshuafolkken/kit # install the josh CLI globally
18
17
  josh help
19
18
  ```
@@ -25,9 +24,10 @@ Using the kit inside a project? See [docs/package.md](./docs/package.md).
25
24
  | Guide | What it covers |
26
25
  | ----------------------------------------------- | -------------------------------------------------------------------------------- |
27
26
  | [why.md](./docs/why.md) | Why kit exists — the AI-development problems it solves, for practitioners |
28
- | [authentication.md](./docs/authentication.md) | One-time GitHub Packages auth — `gh` token, `NODE_AUTH_TOKEN`, `.npmrc` |
27
+ | [authentication.md](./docs/authentication.md) | GitHub Packages auth for existing projects |
29
28
  | [cli.md](./docs/cli.md) | Install and use the global `josh` CLI |
30
29
  | [package.md](./docs/package.md) | Use the kit as a project devDependency — configs, prompts, scripts, `josh init` |
30
+ | [publishing.md](./docs/publishing.md) | First public npm release and trusted publishing setup |
31
31
  | [josh-commands.md](./docs/josh-commands.md) | Full `josh` CLI command reference |
32
32
  | [overview.md](./docs/overview.md) | What the kit provides and how it works |
33
33
  | [troubleshooting.md](./docs/troubleshooting.md) | `401`/`404` auth errors, `josh: command not found`, stale shim, version mismatch |
@@ -9,10 +9,10 @@ import {
9
9
  load_environment_file,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-B2LIXYFL.js";
13
- import "./chunk-B4YNCUGB.js";
14
- import "./chunk-GXKKK23T.js";
15
- import "./chunk-KABG6AEW.js";
12
+ } from "./chunk-FRJKVSK3.js";
13
+ import "./chunk-36UE53LS.js";
14
+ import "./chunk-FNFOLFFV.js";
15
+ import "./chunk-264QY6KS.js";
16
16
  import "./chunk-FXAKJKTB.js";
17
17
  import "./chunk-SSX23SJ2.js";
18
18
  export {
@@ -1016,6 +1016,12 @@ var PROJECT_COMMANDS = {
1016
1016
  category: "Project",
1017
1017
  reference: ["", "developer", ["files"]]
1018
1018
  },
1019
+ "registry:migrate": {
1020
+ script: "scripts/registry-migration/migrate.ts",
1021
+ description: "Migrate a kit-only project from GitHub Packages to public npm",
1022
+ category: "Project",
1023
+ reference: ["", "developer", ["files", "network", "processes"]]
1024
+ },
1019
1025
  "sync:scope": {
1020
1026
  script: "scripts/sync/managed-config-scope-cli.ts",
1021
1027
  description: "Say whether this change touches a file josh sync distributes",
@@ -1237,6 +1243,7 @@ var ALIASES = {
1237
1243
  pt: "port",
1238
1244
  i: "init",
1239
1245
  sy: "sync",
1246
+ rmi: "registry:migrate",
1240
1247
  sys: "sync:scope",
1241
1248
  g: "git",
1242
1249
  gp: "pr",
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  lane_child_marker
3
- } from "./chunk-3PWPYDD2.js";
3
+ } from "./chunk-FNFOLFFV.js";
4
4
  import {
5
5
  time_bundle_call,
6
6
  time_format,
7
7
  time_round_trips,
8
8
  time_spans,
9
9
  time_transcript_line
10
- } from "./chunk-D2PIDYJR.js";
10
+ } from "./chunk-264QY6KS.js";
11
11
 
12
12
  // scripts/lane/lane-guard-policy.ts
13
13
  var DEFAULT_MODE = "refuse";
@@ -29,28 +29,28 @@ import {
29
29
  run_watcher_guard,
30
30
  shell_segments,
31
31
  tail_commands
32
- } from "./chunk-2XIGZQMQ.js";
32
+ } from "./chunk-VGYSA2NT.js";
33
33
  import {
34
34
  batch_outcome
35
- } from "./chunk-B2LIXYFL.js";
35
+ } from "./chunk-FRJKVSK3.js";
36
36
  import {
37
37
  investigation_refusal
38
- } from "./chunk-E55NKX5F.js";
38
+ } from "./chunk-ZBK4XRAS.js";
39
39
  import {
40
40
  duplicate_read_outcome
41
- } from "./chunk-2RUPMGGV.js";
41
+ } from "./chunk-PRDCNGA6.js";
42
42
  import {
43
43
  investigation_reads
44
- } from "./chunk-QNNWYQ2R.js";
44
+ } from "./chunk-Y5OYCU2F.js";
45
45
  import {
46
46
  lane_guard_policy,
47
47
  time_batch_guard
48
- } from "./chunk-B4YNCUGB.js";
48
+ } from "./chunk-36UE53LS.js";
49
49
  import {
50
50
  hook_decision,
51
51
  lane_child_marker,
52
52
  run_issue_number
53
- } from "./chunk-GXKKK23T.js";
53
+ } from "./chunk-FNFOLFFV.js";
54
54
  import {
55
55
  PLATFORM_TEMP_ROOT,
56
56
  cost_attribute,
@@ -61,7 +61,7 @@ import {
61
61
  lane_paths,
62
62
  stamp_file,
63
63
  time_shell
64
- } from "./chunk-KABG6AEW.js";
64
+ } from "./chunk-264QY6KS.js";
65
65
 
66
66
  // scripts/hooks/pretool-guard.ts
67
67
  import { text } from "node:stream/consumers";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ESLINT_EDIT_CACHE_FLAGS,
3
3
  time_density_hook
4
- } from "./chunk-44M6JXGV.js";
4
+ } from "./chunk-264QY6KS.js";
5
5
 
6
6
  // scripts/hooks/format-edited-file.ts
7
7
  import { existsSync as existsSync3 } from "node:fs";
@@ -3,7 +3,7 @@ import {
3
3
  stamp_file,
4
4
  time_density_hook,
5
5
  time_hook_transcript
6
- } from "./chunk-44M6JXGV.js";
6
+ } from "./chunk-264QY6KS.js";
7
7
  import {
8
8
  josh_environment_file
9
9
  } from "./chunk-FXAKJKTB.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  lane_guard_policy,
3
3
  time_batch_guard
4
- } from "./chunk-KFH4H7W7.js";
4
+ } from "./chunk-36UE53LS.js";
5
5
  import {
6
6
  hook_decision
7
- } from "./chunk-46EEEHC3.js";
7
+ } from "./chunk-FNFOLFFV.js";
8
8
 
9
9
  // scripts/hooks/batch-guard.ts
10
10
  import { text } from "node:stream/consumers";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-QNNWYQ2R.js";
3
+ } from "./chunk-Y5OYCU2F.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-B4YNCUGB.js";
6
+ } from "./chunk-36UE53LS.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-GXKKK23T.js";
9
+ } from "./chunk-FNFOLFFV.js";
10
10
  import {
11
11
  json_value,
12
12
  time_spans
13
- } from "./chunk-KABG6AEW.js";
13
+ } from "./chunk-264QY6KS.js";
14
14
 
15
15
  // scripts/delegation/duplicate-read-guard.ts
16
16
  import { statSync } from "node:fs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  lane_child_marker,
3
3
  run_issue_number
4
- } from "./chunk-GOPHRLGO.js";
4
+ } from "./chunk-FNFOLFFV.js";
5
5
  import {
6
6
  PLATFORM_TEMP_ROOT,
7
7
  cost_blocks,
@@ -11,7 +11,7 @@ import {
11
11
  time_density_hook,
12
12
  time_shell,
13
13
  time_transcript_line
14
- } from "./chunk-PDVHQITQ.js";
14
+ } from "./chunk-264QY6KS.js";
15
15
  import {
16
16
  ENV_FILE_NAME,
17
17
  LANE_SEAT_KEY,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  time_batch_guard
3
- } from "./chunk-XAI3YTHJ.js";
3
+ } from "./chunk-36UE53LS.js";
4
4
  import {
5
5
  hook_decision
6
- } from "./chunk-TLZ27PCY.js";
6
+ } from "./chunk-FNFOLFFV.js";
7
7
  import {
8
8
  cost_blocks,
9
9
  cost_transcript,
10
10
  time_bundle_call,
11
11
  time_shell,
12
12
  time_spans
13
- } from "./chunk-KMV4OY77.js";
13
+ } from "./chunk-264QY6KS.js";
14
14
 
15
15
  // scripts/delegation/investigation-reads.ts
16
16
  import path from "node:path";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-G7JL2A5K.js";
3
+ } from "./chunk-Y5OYCU2F.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-HDEXAOUM.js";
6
+ } from "./chunk-36UE53LS.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-N3MJADY7.js";
9
+ } from "./chunk-FNFOLFFV.js";
10
10
 
11
11
  // scripts/delegation/investigation-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
3
  pretool_guard
4
- } from "./chunk-WCYPBPJC.js";
5
- import "./chunk-2XIGZQMQ.js";
4
+ } from "./chunk-4OXFU3MK.js";
5
+ import "./chunk-VGYSA2NT.js";
6
6
  import {
7
7
  build_envelope,
8
8
  compose_context,
9
9
  format_edited_payload
10
- } from "./chunk-BIWLABFK.js";
11
- import "./chunk-B2LIXYFL.js";
12
- import "./chunk-E55NKX5F.js";
13
- import "./chunk-2RUPMGGV.js";
14
- import "./chunk-QNNWYQ2R.js";
15
- import "./chunk-B4YNCUGB.js";
10
+ } from "./chunk-6MQCXEEA.js";
11
+ import "./chunk-FRJKVSK3.js";
12
+ import "./chunk-ZBK4XRAS.js";
13
+ import "./chunk-PRDCNGA6.js";
14
+ import "./chunk-Y5OYCU2F.js";
15
+ import "./chunk-36UE53LS.js";
16
16
  import {
17
17
  hook_decision
18
- } from "./chunk-GXKKK23T.js";
18
+ } from "./chunk-FNFOLFFV.js";
19
19
  import {
20
20
  time_density_hook
21
- } from "./chunk-KABG6AEW.js";
21
+ } from "./chunk-264QY6KS.js";
22
22
  import "./chunk-FXAKJKTB.js";
23
23
  import "./chunk-SSX23SJ2.js";
24
24
 
@@ -9,11 +9,11 @@ import {
9
9
  is_enabled,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-2RUPMGGV.js";
13
- import "./chunk-QNNWYQ2R.js";
14
- import "./chunk-B4YNCUGB.js";
15
- import "./chunk-GXKKK23T.js";
16
- import "./chunk-KABG6AEW.js";
12
+ } from "./chunk-PRDCNGA6.js";
13
+ import "./chunk-Y5OYCU2F.js";
14
+ import "./chunk-36UE53LS.js";
15
+ import "./chunk-FNFOLFFV.js";
16
+ import "./chunk-264QY6KS.js";
17
17
  import "./chunk-FXAKJKTB.js";
18
18
  import "./chunk-SSX23SJ2.js";
19
19
  export {
@@ -15,8 +15,8 @@ import {
15
15
  relative_to_root,
16
16
  resolve_invocations,
17
17
  select_invocation
18
- } from "./chunk-BIWLABFK.js";
19
- import "./chunk-KABG6AEW.js";
18
+ } from "./chunk-6MQCXEEA.js";
19
+ import "./chunk-264QY6KS.js";
20
20
  import "./chunk-SSX23SJ2.js";
21
21
  export {
22
22
  ESLINT_DAEMON,
@@ -10,11 +10,11 @@ import {
10
10
  is_enabled,
11
11
  load_environment_file,
12
12
  refusal_path
13
- } from "./chunk-E55NKX5F.js";
14
- import "./chunk-QNNWYQ2R.js";
15
- import "./chunk-B4YNCUGB.js";
16
- import "./chunk-GXKKK23T.js";
17
- import "./chunk-KABG6AEW.js";
13
+ } from "./chunk-ZBK4XRAS.js";
14
+ import "./chunk-Y5OYCU2F.js";
15
+ import "./chunk-36UE53LS.js";
16
+ import "./chunk-FNFOLFFV.js";
17
+ import "./chunk-264QY6KS.js";
18
18
  import "./chunk-FXAKJKTB.js";
19
19
  import "./chunk-SSX23SJ2.js";
20
20
  export {
@@ -3,15 +3,15 @@ import {
3
3
  pretool_guard,
4
4
  pretool_outcome,
5
5
  pretool_outcome_async
6
- } from "./chunk-WCYPBPJC.js";
7
- import "./chunk-2XIGZQMQ.js";
8
- import "./chunk-B2LIXYFL.js";
9
- import "./chunk-E55NKX5F.js";
10
- import "./chunk-2RUPMGGV.js";
11
- import "./chunk-QNNWYQ2R.js";
12
- import "./chunk-B4YNCUGB.js";
13
- import "./chunk-GXKKK23T.js";
14
- import "./chunk-KABG6AEW.js";
6
+ } from "./chunk-4OXFU3MK.js";
7
+ import "./chunk-VGYSA2NT.js";
8
+ import "./chunk-FRJKVSK3.js";
9
+ import "./chunk-ZBK4XRAS.js";
10
+ import "./chunk-PRDCNGA6.js";
11
+ import "./chunk-Y5OYCU2F.js";
12
+ import "./chunk-36UE53LS.js";
13
+ import "./chunk-FNFOLFFV.js";
14
+ import "./chunk-264QY6KS.js";
15
15
  import "./chunk-FXAKJKTB.js";
16
16
  import "./chunk-SSX23SJ2.js";
17
17
  export {
@@ -15,20 +15,20 @@ import {
15
15
  run_hold,
16
16
  run_invocation,
17
17
  run_watcher_guard
18
- } from "./chunk-2XIGZQMQ.js";
18
+ } from "./chunk-VGYSA2NT.js";
19
19
  import {
20
20
  session_language
21
21
  } from "./chunk-6V5OPIUU.js";
22
22
  import {
23
23
  hook_decision,
24
24
  lane_child_marker
25
- } from "./chunk-GXKKK23T.js";
25
+ } from "./chunk-FNFOLFFV.js";
26
26
  import {
27
27
  PROJECT_ROOT,
28
28
  stamp_file,
29
29
  time_density_hook,
30
30
  time_hook_transcript
31
- } from "./chunk-KABG6AEW.js";
31
+ } from "./chunk-264QY6KS.js";
32
32
  import "./chunk-FXAKJKTB.js";
33
33
  import "./chunk-SSX23SJ2.js";
34
34
 
package/dist/josh.js CHANGED
@@ -1173,6 +1173,12 @@ var PROJECT_COMMANDS = {
1173
1173
  category: "Project",
1174
1174
  reference: ["", "developer", ["files"]]
1175
1175
  },
1176
+ "registry:migrate": {
1177
+ script: "scripts/registry-migration/migrate.ts",
1178
+ description: "Migrate a kit-only project from GitHub Packages to public npm",
1179
+ category: "Project",
1180
+ reference: ["", "developer", ["files", "network", "processes"]]
1181
+ },
1176
1182
  "sync:scope": {
1177
1183
  script: "scripts/sync/managed-config-scope-cli.ts",
1178
1184
  description: "Say whether this change touches a file josh sync distributes",
@@ -1403,6 +1409,7 @@ var ALIASES = {
1403
1409
  pt: "port",
1404
1410
  i: "init",
1405
1411
  sy: "sync",
1412
+ rmi: "registry:migrate",
1406
1413
  sys: "sync:scope",
1407
1414
  g: "git",
1408
1415
  gp: "pr",
package/package.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
- "version": "1.872.0",
2
+ "version": "1.881.0",
3
3
  "name": "@joshuafolkken/kit",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/joshuafolkken/kit.git"
9
+ },
6
10
  "engines": {
7
11
  "node": ">=22.19.0"
8
12
  },
@@ -166,4 +170,4 @@
166
170
  "build": "tsx scripts/build/build-bin.ts && tsx scripts/build/build-hooks.ts && tsx scripts/build/build-version.ts && tsx scripts/build/build-config-merge.ts && tsx scripts/build/build-managed-marker.ts && tsx scripts/build/build-self-sync-guard.ts && tsx scripts/build/build-claude-md.ts",
167
171
  "josh": "tsx scripts/josh/josh.ts"
168
172
  }
169
- }
173
+ }
@@ -17,11 +17,11 @@ const ESLINT_PACKAGE_PREFIX = `${KIT_PACKAGE_PATH_PREFIX}eslint/`
17
17
  const GITHUB_REPO_BLOB_BASE = 'https://github.com/joshuafolkken/kit/blob/main/'
18
18
  const GITHUB_REPO_TREE_BASE = 'https://github.com/joshuafolkken/kit/tree/main/'
19
19
 
20
- // The single line a consumer's CLAUDE.md carries: an import of kit's published, already
21
- // path-transformed rules. The consumer's own additions sit below it. Distributed at publish time via
22
- // dist/CLAUDE.md (build-claude-md.ts) rather than byte-copied at sync time, so a package update alone
23
- // keeps the rules current (joshuafolkken/kit#1878).
20
+ // The consumer imports kit's published, already path-transformed rules. A tracked bootstrap note
21
+ // remains readable before installation, while the rule body stays in the package (kit#1878).
24
22
  const CLAUDE_MD_IMPORT_LINE = '@node_modules/@joshuafolkken/kit/dist/CLAUDE.md'
23
+ const CLAUDE_MD_BOOTSTRAP =
24
+ '> Fresh checkout: if kit is not installed, run `pnpm install` first, then reread this file before doing any other work.'
25
25
 
26
26
  // A span containing `*` is excluded: it is a **glob**, not a reference to a file a consumer can
27
27
  // open. A distributed document that writes a directory set as `prompts/**` means "anything beneath
@@ -79,15 +79,18 @@ function transform_distributed_paths(content: string): string {
79
79
  return transform_documentation_paths(with_tests)
80
80
  }
81
81
 
82
- // The consumer CLAUDE.md is one @import of kit's published rules plus whatever the project adds below
83
- // it. Ensure the import line is present without disturbing those additions: an absent file becomes
84
- // the line alone, a file already carrying it is returned untouched, and any other file keeps all its
85
- // content with the import prepended. The substring check makes it idempotent.
82
+ // Keep the bootstrap note ahead of the import so an agent can read it in a fresh checkout. Preserve
83
+ // project additions and update older one-line files without duplicating either line.
86
84
  function ensure_claude_md_import(existing: string | undefined): string {
87
- if (existing === undefined) return `${CLAUDE_MD_IMPORT_LINE}\n`
88
- if (existing.includes(CLAUDE_MD_IMPORT_LINE)) return existing
85
+ if (existing === undefined) return `${CLAUDE_MD_BOOTSTRAP}\n\n${CLAUDE_MD_IMPORT_LINE}\n`
89
86
 
90
- return `${CLAUDE_MD_IMPORT_LINE}\n\n${existing}`
87
+ if (existing.includes(CLAUDE_MD_IMPORT_LINE)) {
88
+ if (existing.includes(CLAUDE_MD_BOOTSTRAP)) return existing
89
+
90
+ return `${CLAUDE_MD_BOOTSTRAP}\n\n${existing}`
91
+ }
92
+
93
+ return `${CLAUDE_MD_BOOTSTRAP}\n\n${CLAUDE_MD_IMPORT_LINE}\n\n${existing}`
91
94
  }
92
95
 
93
96
  const distributed_paths = {
@@ -0,0 +1,51 @@
1
+ import { spawnSync } from 'node:child_process'
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
3
+ import { tmpdir } from 'node:os'
4
+ import path from 'node:path'
5
+ import { git_location_environment } from '#scripts/git/git-location-environment'
6
+
7
+ interface HookResult {
8
+ status: number | null
9
+ stdout: string
10
+ stderr: string
11
+ }
12
+
13
+ function create_partial_install(temporary_root: string): void {
14
+ const package_root = path.join(temporary_root, 'node_modules/@joshuafolkken/kit')
15
+ const hook_path = path.join(package_root, 'dist/hooks/pretool-guard.js')
16
+
17
+ mkdirSync(path.dirname(hook_path), { recursive: true })
18
+ writeFileSync(path.join(package_root, 'package.json'), '{}')
19
+ writeFileSync(hook_path, "process.stdout.write('guard ran')")
20
+ }
21
+
22
+ function run_in_temporary_checkout(command: string, is_partial_install = false): HookResult {
23
+ const temporary_root = mkdtempSync(path.join(tmpdir(), 'kit-hook-bootstrap-'))
24
+ const git_environment = {
25
+ ...process.env,
26
+ ...git_location_environment.location_free_environment(),
27
+ }
28
+
29
+ try {
30
+ spawnSync('git', ['init', '-q'], {
31
+ cwd: temporary_root,
32
+ env: git_environment,
33
+ })
34
+
35
+ if (is_partial_install) create_partial_install(temporary_root)
36
+
37
+ const { status, stdout, stderr } = spawnSync('sh', ['-c', command], {
38
+ cwd: temporary_root,
39
+ encoding: 'utf8',
40
+ env: git_environment,
41
+ })
42
+
43
+ return { status, stdout, stderr }
44
+ } finally {
45
+ rmSync(temporary_root, { recursive: true, force: true })
46
+ }
47
+ }
48
+
49
+ const hook_command_bootstrap = { run_in_temporary_checkout }
50
+
51
+ export { hook_command_bootstrap }
@@ -21,6 +21,9 @@ const BUNDLE_INVOCATION = `node ${claude_plugin_config.MARKETPLACE_PATH}/dist/jo
21
21
  // The per-hook bundle directory a fresh clone builds, and where it lives inside the installed package.
22
22
  const HOOK_BUNDLE_DIR = `${hook_launch.HOOK_DIST_DIR}/`
23
23
  const CONSUMER_HOOK_BUNDLE_DIR = `${claude_plugin_config.MARKETPLACE_PATH}/${HOOK_BUNDLE_DIR}`
24
+ const CONSUMER_PACKAGE_MANIFEST = `${claude_plugin_config.MARKETPLACE_PATH}/package.json`
25
+ const MISSING_INSTALL_NOTICE = 'kit hooks inactive: run pnpm install, then reread CLAUDE.md'
26
+ const MISSING_INSTALL_GUARD = `if [ ! -f ${CONSUMER_PACKAGE_MANIFEST} ]; then echo '${MISSING_INSTALL_NOTICE}' >&2; exit 0; fi; `
24
27
  const CODEX_ADAPTER_BUNDLE = `node ${CONSUMER_HOOK_BUNDLE_DIR}codex-hook-adapter.js`
25
28
  const CODEX_HOOKS_DESTINATION = '.codex/hooks.json'
26
29
  const CODEX_ROOT_PREFIX = String.raw`cd \"$(git rev-parse --show-toplevel)\" && `
@@ -43,11 +46,16 @@ function rebase_bundle_directory(value: string): string {
43
46
  // independent whichever order they run. The fallback rewrite is idempotent too (`BUNDLE_INVOCATION`
44
47
  // holds no `pnpm josh `), so the whole rewrite is safe to run more than once.
45
48
  function rewrite_command_value(value: string): string {
46
- return rebase_bundle_directory(value)
49
+ const rewritten = rebase_bundle_directory(value)
47
50
  .split(PNPM_JOSH_PREFIX)
48
51
  .join(BUNDLE_INVOCATION)
49
52
  .split(CODEX_ADAPTER_SOURCE)
50
53
  .join(CODEX_ADAPTER_BUNDLE)
54
+
55
+ if (!rewritten.includes(claude_plugin_config.MARKETPLACE_PATH)) return rewritten
56
+ if (rewritten.includes(MISSING_INSTALL_GUARD)) return rewritten
57
+
58
+ return `${MISSING_INSTALL_GUARD}${rewritten}`
51
59
  }
52
60
 
53
61
  function rewrite_hook_commands(content: string, is_codex = false): string {
@@ -13,15 +13,9 @@ const DEV_ENGINES_VALUE = {
13
13
  packageManager: { name: 'pnpm', version: '>=12.1.0', onFail: 'error' },
14
14
  }
15
15
 
16
- // The `@joshuafolkken:registry` mapping stays — it is a registry mapping, not a credential,
17
- // and pnpm honors it from a project .npmrc unconditionally. The matching `_authToken` line is
18
- // deliberately absent: by default pnpm >= 11.6 refuses to expand environment variables in
19
- // credentials read from a project .npmrc (the file is committed, so expansion could leak the
20
- // token to an attacker-controlled registry), so distributing the line would only add an
21
- // `Ignored project-level auth setting` warning on every command. Not distributing it is not the
22
- // same as removing it — see merge_npmrc.
16
+ // New projects resolve kit from public npm. Existing registry and auth lines remain untouched
17
+ // by merge_npmrc so consumers of other GitHub Packages can migrate separately.
23
18
  const NPMRC_LINES: ReadonlyArray<string> = [
24
- '@joshuafolkken:registry=https://npm.pkg.github.com',
25
19
  'engine-strict=true',
26
20
  'minimum-release-age=1440',
27
21
  'confirmModulesPurge=false',
@@ -102,6 +102,7 @@ exports[`COMMAND_MAP — reference metadata > keeps every canonical command and
102
102
  "rh": "run:hold",
103
103
  "rl": "report:lint",
104
104
  "rmg": "run:merge",
105
+ "rmi": "registry:migrate",
105
106
  "rn": "run:next",
106
107
  "rp": "run:prep",
107
108
  "rpy": "repo:party",
@@ -787,6 +788,15 @@ exports[`COMMAND_MAP — reference metadata > keeps every canonical command and
787
788
  "processes",
788
789
  ],
789
790
  ],
791
+ "registry:migrate": [
792
+ "",
793
+ "developer",
794
+ [
795
+ "files",
796
+ "network",
797
+ "processes",
798
+ ],
799
+ ],
790
800
  "release": [
791
801
  "[version]",
792
802
  "maintainer",