import fsd from '@feature-sliced/steiger-plugin'; // steiger — FSD 공식 구조 린터. 임포트(oxlint fsd·depcruise)가 아니라 // 폴더 구조 자체(공개 API 누락·과도한 슬라이스·잘못된 세그먼트)를 검사한다. import { defineConfig } from 'steiger'; export default defineConfig([ ...fsd.configs.recommended, { rules: { // shared/ui는 shadcn 생성물 보관소 — 파일 단위 import가 공식 관례(components.json alias) 'fsd/public-api': 'off', }, }, { // app 레이어는 슬라이스 없는 인프라 세그먼트(providers·router) — 목적 네이밍 룰 부적용 files: ['./src/app/**'], rules: { 'fsd/segments-by-purpose': 'off' }, }, { // insignificant-slice는 "한 곳에서만 쓰는 슬라이스는 그 페이지로 합쳐라"인데, // 이 레포는 도메인 쿼리 팩토리를 entities//api/에 두라고 룰로 못박았다 // (query-factory 스킬). 그래서 화면이 하나뿐인 초기 앱에서는 규칙과 룰이 정면으로 // 충돌하고, 첫 화면을 만들 때마다 배포 게이트가 막힌다. entities에서만 끈다 — // features·widgets·pages의 과잉 추상화 경고는 그대로 살아 있다. files: ['./src/entities/**'], rules: { 'fsd/insignificant-slice': 'off' }, }, { // shadcn·orval 생성물은 구조 심사 대상이 아니다 ignores: ['./src/shared/ui/**', './src/shared/api/_generated/**'], }, ]);