SpecsCLIScaffold Lint Config Baseline
Scaffold Lint Config Baseline Implementation Notes
Scaffold Lint Config Baseline Implementation Notes
Execution mode
sequential
Progress
| Task | Status | Notes |
|---|---|---|
| T1 | Complete | React pack now uses Ultracite React plus the unnecessary-effect overlay. |
| T2 | Complete | Scaffold now creates package/app oxlint.config.ts files from Ultracite presets. |
| T3 | Complete | Scaffold patches nearest package devDependencies for oxlint, ultracite, and overlays. |
| T4 | Complete | Hook now runs Oxlint without forcing root config. |
| T5 | Complete | Root docs, routed project docs, hook concept page, and scaffold handoff copy updated. |
Sanity checks
| Command | Result | Notes |
|---|---|---|
bun run --cwd apps/cli test data/hooks.test.ts content/content.test.ts scaffold/run.test.ts | Passed | 30 focused tests passed. |
bun run check-types --filter=@punks/cli | Passed | CLI and dependency type checks passed. |
bun run check --filter=@punks/cli | Passed | First run found formatting only in new spec files; after formatting, full filtered check passed. |
bun run --cwd apps/cli test scaffold/run.test.ts -t "package-scoped Oxlint|merges package Oxlint" | Passed | Ultracite config creation and JSONC merge tests passed after the preset pivot. |
Acceptance audit
| Criterion | Status | Evidence |
|---|---|---|
| React pack output includes Ultracite React and valid unnecessary-effect rules. | Met | Catalog selects ultracite/oxlint/react and the valid unnecessary-effect JS plugin rules; invalid no-empty-effect absent. |
| Scaffold writes a complete Oxlint config when no closest config exists. | Met | runScaffold test creates apps/web/oxlint.config.ts for a React workspace. |
| Scaffold patches the closest Oxlint config and dependencies when missing. | Met | Merge test carries forward existing JSONC local rules and inserts missing overlays/dependencies. |
| Existing configs keep unrelated local values. | Met | Merge test preserves local/existing-rule and pre-existing plugin versions. |
| The neutral hook lets Oxlint resolve nearest config. | Met | Hook command now runs oxlint <file> through the repo package manager. |
| Lint metadata and docs describe applied config output. | Met | Selection JSON includes applied config summaries; docs and handoff copy updated. |
| Tests cover catalog, config, dependency, and hook behavior. | Met | Focused tests cover hook command, config creation, config merge, dependency insertion, and invalid rule absence. |
Manual Review Checklist
| Area | Check | How to perform | Expected result |
|---|---|---|---|
| Scaffold React workspace | Verify generated lint baseline. | Run bun run --cwd apps/cli test scaffold/run.test.ts or inspect a fresh React scaffold output. | React package has oxlint.config.ts with Ultracite React/effect overlay rules and package devDependencies include required lint packages. |
| Hook behavior | Verify nearest config lookup. | Run bun run --cwd apps/cli test data/hooks.test.ts. | Oxlint command has no -c .oxlintrc.json argument. |
| Docs | Review scaffold docs. | Read docs/reference/dp-requirements.md and docs/runbooks/dp-cli-scaffolding.md. | Docs describe nearest config application, dependency patching, and Ruff future model. |
Remaining work
None.