Skip to content

build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs#19

Closed
vanceingalls wants to merge 6 commits intomainfrom
vance/va-851-1-tooling-configs
Closed

build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs#19
vanceingalls wants to merge 6 commits intomainfrom
vance/va-851-1-tooling-configs

Conversation

@vanceingalls
Copy link
Copy Markdown
Collaborator

Summary

  • Install oxlint, oxfmt, commitlint, lefthook, knip as dev dependencies
  • Add .oxlintrc.json (correctness rules + React plugin)
  • Add .oxfmtrc.json (double quotes, semicolons, 2-space indent, trailing commas)
  • Add commitlint.config.js (conventional commits)
  • Add lefthook.yml (pre-commit lint+format, commit-msg commitlint)
  • Add .editorconfig and knip.config.ts
  • Add scripts: pnpm lint, pnpm format, pnpm format:check, pnpm knip

Part 1/4 of VA-851

Test plan

  • pnpm lint runs (reports pre-existing errors, expected)
  • pnpm format:check runs (reports pre-existing diffs, expected)
  • commitlint validates and rejects messages correctly
  • lefthook hooks install via pnpm run prepare
  • pnpm knip runs

🤖 Generated with Claude Code

@linear
Copy link
Copy Markdown

linear bot commented Mar 23, 2026

VA-851 [Pre-Migration] Configure ESLint, Prettier, and conventional commits

Context

The codebase currently has no linting or formatting enforcement. Code is clean by convention, but OSS contributors need automated guardrails. Team feedback: "I love when an open source repo has this."

What to do

  1. ESLint — add configuration at monorepo root with TypeScript rules. Extend from @typescript-eslint/recommended.
  2. Prettier — add .prettierrc at root. Configure for the existing code style (double quotes, no semicolons or with — match what's already there).
  3. Conventional commits — add commitlint config enforcing conventional commit format (feat:, fix:, refactor:, etc.). This enables automated changelog generation later.
  4. Run formatter across all source files to establish baseline (single "format" commit in internal repo before port).
  5. Add lint/format scripts to root package.json: pnpm lint, pnpm format, pnpm format:check
  6. Verify all existing code passes lint + format checks with zero errors

Why before port

We want the OSS repo's first commit to already have these configs in place and all code conforming. No "fix linting" commits in public history.

@vanceingalls vanceingalls deleted the vance/va-851-1-tooling-configs branch March 23, 2026 17:58
miguel-heygen added a commit that referenced this pull request Apr 7, 2026
## Summary

Adds critical rendering constraints to the `hyperframes` skill discovered from eval analysis of 27 agent-generated compositions. These guardrails prevent agents from producing compositions that technically work but render poorly.

## What it fixes

| Rule Added | Eval Prompts Affected | Issue |
| --- | --- | --- |
| Ban `repeat: -1` | #20 loading-spinner (2.0/5) | Infinite timeline broke capture engine |
| Ban async timeline construction | #16 particle-logo (2.6/5) | Timeline empty at capture time |
| Min font size 16px (labels), 20px (body) | #7, #8, #13, #14, #15, #19 | Illegible text after encoding |
| Ban full-screen dark linear gradients | #3, #5, #10, #14 | H.264 color banding |
| `<link>` fonts over CSS `@import` | #7, #24 | Font loading race conditions |

## Changes

- **Rules section**: Added `repeat: -1` ban, async timeline ban, items 8-9 to "Never do" list
- **Typography section**: Expanded font size guidance with specific minimums per text role (headlines, body, labels)
- **New "Backgrounds and Color" section**: Guidance on avoiding gradient banding
- **Output Checklist**: 5 new items covering all new constraints

## Test plan

- [ ] Run eval with updated skill and compare avg quality scores
- [x] Skill renders correctly in `/hyperframes` invocation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant