Skip to content

T-076A-the-script-vocabulary-lands-in-packages-apps-and-sites

State: closed/done · Impact: high · Complexity: medium

package.json is Layer A — the layer that survives publish-lib.yml’s rsync --exclude 'moon.yml' and the only layer a mirrored or standalone package carries. Today most packages/, apps/, sites/ and tools/ manifests are missing scripts a moon aspect could otherwise assume: only 1 of the 6 publish-channel TS libraries (agent-call) has a typecheck script, so 5 mirrors ship uncompiled. This task adds the missing baseline scripts to the ~55 manifests in this tier, mechanically and without behavior change, so T-0DSA-the-typescript-aspect-delegates-and-spans-both-stacks has something to delegate to.

55 tracked package.json files sit under packages/, apps/, sites/ and tools/ (excluding node_modules). Coverage of the baseline verbs is partial and inconsistent — some manifests have test and typecheck but no build; some have none of the six; the 5 Nuxt src-nuxt/ apps already carry the full set. None has lint, format or format:check outside those 5 Nuxt apps.

LocationRole today
packages/ts/agent-call/package.jsonHas build, typecheck, test. The only one of the 6 publish-channel libraries with typecheck.
packages/ts/command-seam/package.jsonPublish-channel library. Has build, test. No typecheck, lint, format, format:check.
packages/ts/detect-runners/package.jsonPublish-channel library. Has build, test. No typecheck, lint, format, format:check.
packages/ts/easy-git/package.jsonPublish-channel library. Has build, test. No typecheck, lint, format, format:check.
packages/ts/intersect/package.jsonPublish-channel library. Has build, test. No typecheck, lint, format, format:check.
packages/ts/waypost/package.jsonPublish-channel library. Has build, test. No typecheck, lint, format, format:check.
packages/ts/prettier-config/*/package.jsonThree manifests (prettier-config, tsconfig, dashboard-client, agent-plugin, yaml-splice/wasm, admin-types, nuxt_admin_layer) declare no scripts at all.
apps/*/src-nuxt/package.json5 manifests already carry build, test, lint, typecheck, format, format:check — the target shape, unchanged by this task.
.github/workflows/publish-lib.yml:172rsync --exclude 'moon.yml' drops anything declared only in a moon task from every mirror snapshot — the reason package.json must carry these scripts directly.

Every one of the 55 manifests carries the verbs the which-verb-which-project rule says it should, using the exact script names from the target vocabulary (typecheck, lint, lint:fix, format, format:check, alongside existing build/test):

VerbApplies toIn this tier
format, format:check, lintevery manifest — operates on source files, no compilable unit requiredall 55
typecheckmanifests owning a real tsconfig.json42 of 55 already have one directly in their directory
testmanifests with testsunchanged — scripts already present are left as-is
buildmanifests that emitunchanged — scripts already present are left as-is

Commands follow the Layer A column of the target vocabulary table: bun run typecheck invokes tsc --noEmit (or the package’s existing tsc invocation shape), lint invokes oxlint against the root .oxlintrc.json (T-BBYP-shared-eslint-oxlint-layer), format/format:check invoke prettier. No moon.yml in this tier is touched. No script gains --fix or --write under the lint or format:check name.

  1. Enumerate the 55 manifests: find packages apps sites tools -name package.json -not -path '*/node_modules/*'.
  2. For each, diff its current scripts block against the target set (format, format:check, lint always; typecheck when a tsconfig.json sits in the same directory) and add only the missing entries — existing scripts (build, test, app-specific ones) are left untouched.
  3. Skip the 5 apps/*/src-nuxt/package.json manifests — already at the target shape.
  4. Point lint/format/format:check/typecheck at the same tools the 5 Nuxt manifests already use, so the vocabulary is consistent across the tier before T-0DSA-the-typescript-aspect-delegates-and-spans-both-stacks wires moon tasks to it.
  5. Run bun run typecheck, bun run lint, bun run format:check in a sample of touched directories to confirm the new scripts execute without behavior change (no source edits, only manifest edits).
  6. Do not touch any moon.yml — that is T-0DSA-the-typescript-aspect-delegates-and-spans-both-stacks’s job.
LocationKindChange
packages/ts/*/package.jsonmodifyAdd missing format, format:check, lint, and (where a local tsconfig.json exists) typecheck scripts.
apps/*/package.jsonmodifySame additions, excluding the 5 already-complete src-nuxt/package.json files.
sites/df-docs/package.jsonmodifyAdd missing format, format:check, lint scripts.
  • AC-1: for every tracked package.json under packages/, apps/, sites/, tools/ (excluding node_modules), jq -e '.scripts|has("format") and has("format:check") and has("lint")' returns true — all 55 pass.
  • AC-2: for every one of those manifests whose own directory holds a tsconfig.json, jq -e '.scripts.typecheck' returns true.
  • AC-3: grep -E -- '--fix|--write' finds nothing inside the value of any lint or format:check script across the 55 manifests.
  • AC-4: git diff --stat scoped to packages/, apps/, sites/, tools/ shows zero changed moon.yml files.
  • AC-5: in packages/ts/command-seam (a publish-channel library with a tsconfig.json but no typecheck script today), bun run typecheck exits 0 after this task adds the script.
  • Milestone-level survey in the approved plan for M-3MGB: 153 of 162 tracked package.json are missing format:check, and 5 of 6 publish-channel TS libraries have no typecheck script because publish-lib.yml:172 excludes moon.yml from every mirror snapshot.

T-VAF5-a-standard-for-the-baseline-task-vocabulary, T-BBYP-shared-eslint-oxlint-layer


← Back to Tasks