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.
| Location | Role today |
|---|---|
solutions/agent-pants/packages/agent-pants/tsconfig.json | Standalone; 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.json | Vue/Storybook; missing noUncheckedIndexedAccess and allowImportingTsExtensions |
solutions/agent-pants/plugins/obsidian/tsconfig.json | Missing noUncheckedIndexedAccess, esModuleInterop, allowImportingTsExtensions |
solutions/agent-pants/reference/skill-export/tsconfig.json | NodeNext; types: ["node","vitest/globals"] — the only vitest-globals config in the repo |
apps/agentpants/src-indexer/tsconfig.json | The only app config that emits; NodeNext, outDir: dist |
packages/ts/json-canvas-vue/demo/tsconfig.json | create-vue lineage, standalone, with a tsconfig.node.json peer |
Proposed
Section titled “Proposed”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.
Approach
Section titled “Approach”- 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.
- Start with
solutions/agent-pants/packages/agent-pants, whose build config already points at the shared mixin. - Then the other three agent-pants configs, then the strays.
src-indexeremits from itstsconfig.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.- Keep the
tsc --showConfigdiff as the reviewability tool: for each config, the only intended change is gaining the bar’s options.
| Area | Note |
|---|---|
solutions/agent-pants/packages/agent-pants/tsconfig.json | extend the matching preset |
solutions/agent-pants/mockups/tsconfig.json | extend vue |
solutions/agent-pants/plugins/obsidian/tsconfig.json | extend the matching preset |
solutions/agent-pants/reference/skill-export/tsconfig.json | extend the bar, keep NodeNext + vitest globals |
packages/ts/json-canvas-vue/demo/tsconfig.json | extend vue |
apps/agentpants/src-indexer/tsconfig.json | extend the bar; needs a dev/build split |
Acceptance criteria
Section titled “Acceptance criteria”- 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-pantsstill builds. - AC-4: Any package that deliberately stays laxer says why in a comment.
Out of scope
Section titled “Out of scope”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 thepaths,types,moduleResolutionandjsxthe generator computed;presets/base.jsonsays so.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”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.