Repository navigation
v 1.15.0 — orbit: 라우트 사이클이 닫히는가
·
22 commits
to main
since this release
v1.15.0 — orbit: 라우트 사이클이 닫히는가
Next.js App Router 프로젝트에서 빌드도 테스트도 못 잡는 결함 부류가 있다. 도달 못 하는 페이지, 갇히는 화면, 끊긴 링크, 실패 경로 없는 흐름 — 프레임워크가 조용히 폴백하고, 링크가 없는 것은 애초에 에러가 아니다. 사람이 클릭해보기 전까지 안 드러난다. orbit 은 라우트를 방향 그래프로 보고 그걸 점검한다.
✨ Feature
orbit스킬 (/orbit) — 검사 4종을 한 스킬이 담당한다.dangling엣지 끝에 실존 라우트 없음 ·orphaninbound 0 ·sinkoutbound 0 ·미폐쇄성공 엣지만 있고 실패·무권한·복구 경로 없음- 산출물은 보고서다. 스킬이 파일을 고치지 않는다.
- sink 는 프레임워크 동작을 단정하지 않는다 — "기본 404 는 공통 레이아웃 밖에서 렌더된다" 같은 문장은 버전·설정에 따라 틀리고, 틀리면 틀린 근거로 결함을 보고하게 된다. 대신 확인 가능한 질문으로 판단한다:
notFound()를 던지는데 수신 파일(not-found.tsx/error.tsx)이 있는가, 그 화면에서 앱으로 돌아가는 링크가 있는가. - 엣지 추출은
<Link>만 보지 않는다 — 템플릿 리터럴href,router.push,redirect(),middlewarematcher, 그리고 네비게이션 링크 상수 파일. 마지막 것을 빠뜨리면 사이드바를 배열로 모아둔 흔한 패턴에서 orphan 오탐이 쏟아진다. - 자체 픽스처 내장 (
skills/orbit/fixture/) — 결함 4종이 심겨 있다. 다만 핵심은 결함이 아니라 오탐 유발 요소 3종(공통 레이아웃<Nav/>/NAV_LINKS상수 / middleware 리다이렉트)이다. 이게 있어야 "안 잡아야 할 걸 안 잡았나" 가 검증된다. 빌드하지 않는다 — 정적 분석 대상. - 프로젝트에 심을 상시 규칙 두 줄을 SKILL.md 안 복사용 섹션으로 제공 — 스킬은 호출해야 뜨므로 "구현 중 상시" 는 대상 프로젝트의 CLAUDE.md 에 붙여넣어야만 성립한다.
ℹ️ 실행이 잡은 빈틈
픽스처에 실제로 돌려보니 루트 app/page.tsx 가 inbound 0 이라 정의상 orphan 으로 잡혔다 — 진입점이지 결함이 아니다. 진입점 예외를 넣되 "직접 진입 설계라는 근거를 함께 적는다" 를 조건으로 달았다. 조건 없이 면제하면 orphan 검사 자체가 무력화된다.
정작 잡힌 오탐은 의도적으로 심은 3종이 아니라 아무도 심지 않은 루트 노드였다. 결함 목록을 설계할 때 "정상인데 검사에 걸리는 것" 은 잘 떠오르지 않는다.
업데이트: /plugin update sshworld