Skip to content

T-UUUD-agent-pants-and-strays-adopt-the-bar

State: open/ready · Impact: medium · Complexity: medium

Twenty-three tsconfigs in the repo do not extend the shared bar, and every one is laxer than it. solutions/agent-pants (4) and three strays are the closest to it — plugins/obsidian is missing three options, packages/agent-pants four — so they are the cheapest way to start closing the gap and they calibrate what the harder trees will cost.

LocationRole today
solutions/agent-pants/packages/agent-pants/tsconfig.jsonStandalone; has strict, noUncheckedIndexedAccess, allowImportingTsExtensions; missing isolatedModules, esModuleInterop, noImplicitOverride, noUnusedLocals. Its tsconfig.build.json ALREADY uses the shared @sksizer/tsconfig/build mixin
solutions/agent-pants/mockups/tsconfig.jsonVue/Storybook; missing noUncheckedIndexedAccess and allowImportingTsExtensions
solutions/agent-pants/plugins/obsidian/tsconfig.jsonMissing noUncheckedIndexedAccess, esModuleInterop, allowImportingTsExtensions
solutions/agent-pants/reference/skill-export/tsconfig.jsonNodeNext; types: ["node","vitest/globals"] — the only vitest-globals config in the repo
apps/agentpants/src-indexer/tsconfig.jsonThe only app config that emits; NodeNext, outDir: dist
packages/ts/json-canvas-vue/demo/tsconfig.jsoncreate-vue lineage, standalone, with a tsconfig.node.json peer

Each extends the preset that matches its shape — node-lib, bun-lib or vue — and keeps only its genuine per-package facts. Where the stricter bar surfaces errors, they are fixed rather than suppressed; where a package genuinely needs to differ, it says so with a comment.

agent-pants/packages/agent-pants is the natural first move: its build config is already on the shared mixin, so only the dev config is left.

  1. Measure first. For each config, add the missing options and count errors — the order to take them in should come from the counts, not from this list.
  2. Start with solutions/agent-pants/packages/agent-pants, whose build config already points at the shared mixin.
  3. Then the other three agent-pants configs, then the strays.
  4. src-indexer emits from its tsconfig.json; it needs the dev/build split the augmented packages need, so either give it one or leave it for T-UWFT-augmented-packages-split-and-adopt to establish the pattern.
  5. Keep the tsc --showConfig diff as the reviewability tool: for each config, the only intended change is gaining the bar’s options.
AreaNote
solutions/agent-pants/packages/agent-pants/tsconfig.jsonextend the matching preset
solutions/agent-pants/mockups/tsconfig.jsonextend vue
solutions/agent-pants/plugins/obsidian/tsconfig.jsonextend the matching preset
solutions/agent-pants/reference/skill-export/tsconfig.jsonextend the bar, keep NodeNext + vitest globals
packages/ts/json-canvas-vue/demo/tsconfig.jsonextend vue
apps/agentpants/src-indexer/tsconfig.jsonextend the bar; needs a dev/build split
  • AC-1: Each of the six extends a @sksizer/tsconfig/* preset.
  • AC-2: No config restates an option the preset already provides.
  • AC-3: Every affected project’s check passes, and solutions/agent-pants still builds.
  • AC-4: Any package that deliberately stays laxer says why in a comment.
  • solutions/determined — T-5YZA-determined-adopts-the-bar.
  • solutions/augmented/packages/ts — T-UWFT-augmented-packages-split-and-adopt.
  • The 31 framework-owned configs (.nuxt, Astro, Nuxt project-reference stubs). Layering the bar on top of a generated config would clobber the paths, types, moduleResolution and jsx the generator computed; presets/base.json says so.
  • none

Deferred deliberately from #1644: adopting the bar in a laxer package produces new type errors by definition, which would have destroyed the empty-showConfig-diff property that made that PR reviewable.


← Back to Tasks