Skip to content

chore: build agent harness and clean up Nx/Tistory migration residue - #177

Merged
BoBeenLee merged 1 commit into
masterfrom
claude/bbl-harness-skill-setup-55b79e
Aug 2, 2026
Merged

BoBeenLee merged 1 commit into
masterfrom
claude/bbl-harness-skill-setup-55b79e

Conversation

@BoBeenLee

Copy link
Copy Markdown
Owner

하네스

파일 역할
AGENTS.md 사실의 단일 출처. 패키지 지도, 별칭 2종, 컴포넌트 규약 + 배럴 확장자 표, 클라이언트 경계, 블로그 렌더 경로 비대칭, 개인 데이터 파일별 소유, 명령 ID 표, 남은 함정
CLAUDE.md @AGENTS.md + 스킬 라우팅. 주제가 아니라 바뀌는 파일 종류로 키를 잡았다
.claude/skills/{blog-post,ui-component,career-record}/SKILL.md 각 워크플로의 대원칙 + 순서 + 대안 래더 + 통과 게이트
.claude/skills/smart-shopping/SKILL.md 기존 스킬 verbatim

사실은 AGENTS.md만, 순서·게이트는 SKILL.md만 소유하고 스킬은 → §N으로 참조한다.

정리

베이스라인에서 pnpm test, pnpm eslint, pnpm build-storybook, pnpm post:new, pnpm components:new, CI test job이 전부 실패 또는 no-op이었다. 스킬이 시키는 명령이 실제로 돌지 않으면 하네스가 거짓말을 하므로 같이 고쳤다.

  • pnpm 7.29.1 -> 7.33.7 — 7.29.1은 Node 20+ 에서 ERR_INVALID_THIS로 install 자체가 불가능하다. .nvmrc가 22.12.0을 못 박고 있어 선언된 조합으로는 설치가 안 되는 상태였다. 락파일 형식(v5.4)은 유지.
  • jesttestEnvironment: jsdom 누락으로 렌더 스펙 전부가 실행조차 안 되고 있었다. @bbl-nx/* 별칭 맵과 함께 jest.preset.js로 통합하고 jest.config.base.ts 제거.
  • storybook@nx/react/plugins/storybook이 하던 tsconfig path 해석을 tsconfig-paths-webpack-plugin으로 대체. .babelrc 8개와 babel.config.json 제거 후 preset-typescript만 추가(preset-react를 같이 넣으면 Duplicate preset 에러가 삼켜져 exit 0 + iframe.html 없음이 된다). tailwind purge -> content, webpackFinalrule.test 가드. CI에 iframe.html 검증 스텝 추가.
  • @babel/core 7.21.0 핀 -> ^7.22.0next/babel이 요구. 앱에 test 스크립트가 없어 가려져 있던 충돌.
  • plop — post는 존재하지 않는 루트 posts/에 쓰고 있었고, ui-components는 features 배럴 경로가 틀려 마지막 액션에서 throw했다. toKebabCase/toPascalCase도 PascalCase 입력을 못 다뤘다.
  • 죽은 코드libs/apis, tools/workspace-plugin, Tistory 잔재, BlogItem.isExternal/url, post.ts의 존재하지 않는 /api/posts 분기, apps/bbl-nextjs Storybook 설정, 죽은 의존성 13개.
  • CI — 5 job -> 4. 손수 만든 node_modules 캐시를 setup-node cache: pnpm으로 교체하고 버전은 .nvmrc/packageManager를 단일 출처로. deploy job 3개에 없던 install 추가.
  • 신규pnpm typecheck, libs/ui-components/src/css-modules.d.ts.
  • 레포 이름bbl-nx -> bbl 배지/URL 교체. STORYBOOK_PREFIX_PATH/bbl-nx라 gh-pages 자산이 404였다.

검증

INSTALL (--frozen-lockfile)  exit 0
LINT                         exit 0
TYPECHECK                    exit 0
TEST                         exit 0 (54 passed)
BUILD                        exit 0
SB-BUILD (github prefix)     exit 0
  ui-components/iframe.html  YES   tailwind .flex/.dark 번들 포함
  features/iframe.html       YES   tailwind .flex/.dark 번들 포함
  stories indexed            78
잔재 스윕: tistory 0, apis/remix/workspace-plugin 0, 커밋된 debug.log 0

plop은 4가지 조합(features/organisms, features/templates, ui-components/helpers, ui-components/atoms)에서 산출 경로와 배럴이 모두 실존함을 확인했고, toKebabCase는 기존 생성 이름 전부와 바이트 동일 + 멱등을 확인했다.

남긴 것

AGENTS.md §10에 기록했다. storybook-addon-tailwindcss-dark-mode(SB6 시대지만 동작, 대체품 없음), @xstate/cli 미설치로 typegen 재생성 불가, Firebase 설정 하드코딩, commitlint/husky 미설정, @bbl-nx/* 스코프와 Vercel 도메인은 bbl-nx 유지.

Assisted-by: Claude Code (Opus 5)

하네스
- AGENTS.md: 사실의 단일 출처 (패키지 지도, 별칭, 컴포넌트 규약과 배럴 확장자 표,
  클라이언트 경계, 블로그 렌더 경로, 개인 데이터, 명령 ID 표, 남은 함정)
- CLAUDE.md: @AGENTS.md 임포트 + 바뀌는 파일 종류 기반 스킬 라우팅
- .claude/skills/{blog-post,ui-component,career-record,smart-shopping}/SKILL.md

정리 (베이스라인에서 lint/test/storybook 전부 실패 또는 no-op이었음)
- pnpm 7.29.1 -> 7.33.7: 7.29.1 은 Node 20+ 에서 ERR_INVALID_THIS 로 install 자체가
  불가능했다. 락파일 형식(v5.4)은 그대로다.
- jest: testEnvironment jsdom 누락으로 렌더 스펙 전부가 실행조차 안 되고 있었다.
  @bbl-nx/* 별칭 맵과 함께 jest.preset.js 로 통합하고 jest.config.base.ts 를 제거.
- storybook: @nx/react/plugins/storybook 이 하던 tsconfig path 해석을
  tsconfig-paths-webpack-plugin 으로 대체, .babelrc 8개와 babel.config.json 제거 후
  preset-typescript 만 추가, tailwind purge -> content, webpackFinal 의 rule.test 가드.
  프리뷰 실패가 exit 0 으로 끝나던 문제 때문에 CI 에 iframe.html 검증 스텝을 넣었다.
- @babel/core 7.21.0 핀 -> ^7.22.0 (next/babel 이 요구. 앱에 test 스크립트가 없어 가려져 있었다)
- plop: post 는 없는 루트 posts/ 에 쓰고 있었고, ui-components 는 features 배럴 경로가
  틀려 마지막 액션에서 throw 했다. toKebabCase/toPascalCase 도 PascalCase 입력을 못 다뤘다.
- 죽은 코드 제거: libs/apis, tools/workspace-plugin, Tistory 잔재, BlogItem.isExternal/url,
  post.ts 의 존재하지 않는 /api/posts 분기, apps/bbl-nextjs Storybook 설정, 죽은 의존성 13개
- CI: 5 job -> 4. 손수 만든 node_modules 캐시를 setup-node cache:pnpm 으로 바꾸고
  버전은 .nvmrc / packageManager 를 단일 출처로 삼았다. deploy job 들에 없던 install 을 추가.
- 신규: pnpm typecheck, libs/ui-components/src/css-modules.d.ts
- 레포 이름 bbl-nx -> bbl 에 맞춰 배지/URL 교체. STORYBOOK_PREFIX_PATH 가 /bbl-nx 라
  gh-pages 자산이 404 였다.

검증: install / eslint / typecheck / test(54 passed) / build / build-storybook 전부 통과,
양쪽 storybook 의 iframe.html 과 Tailwind 유틸리티 번들 포함 확인.

Assisted-by: Claude Code (Opus 5)
@BoBeenLee
BoBeenLee merged commit f5d8114 into master Aug 2, 2026
4 checks passed
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