rvlib-shipkit 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 2.0.2
2
+
3
+ - **SK001 clears its own lint shadow.** A `lint` or `fmt` script that routes through `shipkit ci` beside the bunfig section of the same name is deleted by the repair, with its `:raw` half, so `bun lint` runs the built-in. A script whose body is a tool stays named for a human.
4
+
1
5
  ## 2.0.1
2
6
 
3
7
  - **`sk fleet --update --major` crosses the major again.** Each repo's guarded run now stays in its own process (`SHIPKIT_NO_HOME`), because a check the home answered never saw `SHIPKIT_ALLOW_MAJOR` and refused the breaking jump, naming the very command that was running.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rvlib-shipkit",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "funding": "https://github.com/sponsors/rvion",
5
5
  "description": "All-in-one repo companion: ci gate (task DAG), auto-discovered health checks, release-contract fulfillness, asks queue, md-wiki tools, asset atelier, live tui",
6
6
  "license": "MIT",
@@ -282,6 +282,19 @@ export const packageJsonShape = check({
282
282
  // none, so scaffolding this into a repo without any turns the gate red
283
283
  // on work the fixer itself did. a fixer must never manufacture a failure.
284
284
  if (pkg.scripts['test'] == null && hasTestFiles(testFiles(c))) { pkg.scripts['test'] = 'bun test'; changes.push(`script 'test' added`) }
285
+ // a script beside its declared bunfig section only shadows the built-in.
286
+ // A routed body and its `<id>:raw` are house wiring, so they go. A tool
287
+ // body is a repo's own answer and stays named
288
+ const bunfig = c.read('bunfig.toml')
289
+ for (const n of ['lint', 'fmt'] as const) {
290
+ const body = pkg.scripts[n]
291
+ if (body == null || !bunfigDeclares(bunfig, n)) continue
292
+ if (!routesToShipkit(body)) { notes.push(`'${n}' shadows \`bun ${n}\` — its body is a tool, left for a human`); continue }
293
+ delete pkg.scripts[n]
294
+ const gone: string[] = [n]
295
+ if (pkg.scripts[rawName(n)] != null) { delete pkg.scripts[rawName(n)]; gone.push(rawName(n)) }
296
+ changes.push(`script ${gone.map((g) => `'${g}'`).join(' and ')} deleted (bunfig.toml [${n}] runs \`bun ${n}\`)`)
297
+ }
285
298
  // ONE WAY IN, last so it also routes whatever this pass just added:
286
299
  // the tool body slides to `<id>:raw` and `<id>` becomes the shipkit
287
300
  // call. Both keys keep their place in the file, so the diff a human