diff --git a/docs/work/frontend-conformance-v1/01-frontend-rules/_story.md b/docs/work/frontend-conformance-v1/01-frontend-rules/_story.md new file mode 100644 index 0000000..fb422dd --- /dev/null +++ b/docs/work/frontend-conformance-v1/01-frontend-rules/_story.md @@ -0,0 +1,42 @@ +--- +id: 01-frontend-rules +epic: frontend-conformance-v1 +title: Three structural frontend conformance ESLint rules +type: technical-story +status: in-progress +feature: core-eslint +depends-on: [] +blocks: [] +--- + +## Goal +Three new rules under the `conformance/` plugin namespace: +`component-must-have-story`, `component-must-have-test`, +`atomic-tier-import-direction`. All ship as WARN initially because +no components exist in the repo today. + +## Done when +- Three rules registered in `@repo/core-eslint/plugin` +- Each has RuleTester tests +- `base.js` registers them at WARN severity +- `pnpm lint` passes (zero firings expected today; rules activate when + first component lands) + +## In scope +- Three new rule files in `packages/core-eslint/rules/` +- Plugin + base.js wiring +- Tests via RuleTester + +## Out of scope +- Visual regression infrastructure (Playwright screenshots — separate plan) +- `story-must-cover-all-prop-variants` advisory rule +- Detection beyond filesystem siblings (no AST-level component-detection + heuristics) + +## Tasks +- [ ] Epic + story scaffold +- [ ] `component-must-have-story` rule + tests +- [ ] `component-must-have-test` rule + tests +- [ ] `atomic-tier-import-direction` rule + tests +- [ ] Plugin update + base.js wiring +- [ ] Final verification + closeout diff --git a/docs/work/frontend-conformance-v1/_epic.md b/docs/work/frontend-conformance-v1/_epic.md new file mode 100644 index 0000000..90ca165 --- /dev/null +++ b/docs/work/frontend-conformance-v1/_epic.md @@ -0,0 +1,22 @@ +--- +id: frontend-conformance-v1 +prd: null +title: Frontend conformance rules v1 +type: epic +status: in-progress +features: [core-eslint] +created: 2026-05-13 +--- + +## Goal +Three structural ESLint rules for frontend component files: every +component has a sibling Storybook story, a sibling test, and respects +atomic-design tier direction (atoms can't import from organisms, etc.). + +## Why +The frontend-work-shape guide describes these conventions; without +rules, they're advisory only. Ship them now so they activate the moment +core-ui or feature UI components land — preventing drift from day one. + +## Stories +- [ ] [01 — Frontend ESLint rules](01-frontend-rules/_story.md)