Repository navigation
feat: T1을 MCP 서버 hooks로 옮길 준비 — 화면 패키지·show_standard_check·T1 hooks (BDT-108 PR A) - #68
Merged
Merged
Conversation
예시 데이터는 10/13에 답한 변경이라 10/20이 지나면 includeClosed 목록에서 빠져 테스트 2개가 실패했어요 (notify.list.closed-7-days). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…져다 씀 (BDT-108)
MCP 서버도 T1 화면을 만들어야 해서 D49("packages/는 가져다 쓰는 코드")에 맞춰 옮겼어요.
화면 테스트는 패키지로, Bash 명령·hooks 테스트는 apps/detect에 남겼어요. 동작은 그대로예요.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
입력(zod)만 검사하고 { ok: true }를 돌려줘요. 저장하지 않아요(wiki.mcp.five-tools v2).
도구 설명은 PR B에서 채우고, 그 전에는 부르지 않게 "준비 중"으로 둬요.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ook.mjs 추가 (BDT-108) show_standard_check 직후 ②·③·예외 화면을 서버가 @sil/t1로 만들고, 저장 직전에 ③과 비교해요. ③ 값은 서버가 아니라 팀원 PC(~/.claude/haribo/t1-<세션>-<ID>.json)에 hook.mjs가 남겨요. ③ 파일이 없는 저장은 PR A에서는 그대로 둬서 지금 T1(CLAUDE.md + Bash)과 ④가 두 번 뜨지 않아요. 민수님 파일과 공용 http.ts는 더하기만 했어요(install.ts 타입 두 줄, hook.mjs import·본문 한 줄씩 바뀜). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
바뀐 결정 사항 찾기 · PR #68
이 PR의 변경은 결정 사항에 이미 반영돼 있어요 (v2). 다시 저장하지 않았어요.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
관련 이슈
BDT-108 [개발] T1을 T2~T5처럼 다른 저장소에서도 뜨게 옮기기 (CLAUDE.md에서 T1 빼기) — PR A. 준비
https://linear.app/pj-3/issue/BDT-108
무엇을 바꿨나요
커밋 순서대로예요.
test(notify)알리기 도구 테스트(notify-tools.test.ts)의 지금 시각을 10/16으로 고정했어요. 예시 데이터가 10/13에 답한 변경이라 10/20이 지나면서includeClosed7일 기간(notify.list.closed-7-days)에서 빠져 main에서도 테스트 2개가 실패하고 있었어요. 테스트 파일만 고쳤고 코드 동작은 그대로예요. (민수님 파일이라 알려 드려요)docs(wiki)wiki.mcp.five-tools를 T1 절차로 v2로 저장하고 CHANGELOG 한 줄을 붙였어요. CLAUDE.md "새 위키 도구를 더하지 않는다" 줄을 맞췄어요.six-tools로 바꾸지 않은 이유data.standard.id-format(항상 적용): ID는 한 번 정하면 바꾸지 않아요.wiki.standard.no-delete)five-tools는 사람이sil deprecate로 폐기해야 해요.refactor(t1)새 패키지packages/t1(@sil/t1):apps/detect/src/t1/의screens.ts,copy.ts,text.ts,issues.ts,save-input.ts를 옮기고(git mv),apps/detect는@sil/t1에서 가져다 써요. 화면·문구·저장 값 테스트는 패키지로, Bash 명령·hooks 테스트는 detect에 남겼어요. CLAUDE.md T1의copy.ts·save-input.ts경로도 새 위치로 맞췄어요(T1 1~9번 내용은 그대로).feat(mcp)show_standard_check도구 (apps/mcp-server/src/tools/detect/, 묶음detect). 입력을 zod로 검사(screen:conflicts/preview/notice, 고른 칸 하나만)하고{ ok: true }만 돌려줘요.readOnlyHint: true,openWorldHint: false. 도구 설명은 PR B에서 채우고, 지금은 "준비 중이라 부르지 않아요"로 둬서 Claude가 부르지 않게 했어요.feat(mcp)서버 hookshooks/t1-hooks.ts(after-t1,before-save,after-save)와http.ts·install.ts·hook.mjs에 T1 부분 추가after-t1: ②·③·예외 화면을@sil/t1로 만들고, Claude에게 다음에 물을 질문을T1_COPY글자 그대로 넘겨요. ③의 받는 이슈는 서버가 DB에서 읽어요(바꾸는 사람 =X-Sil-User).hook.mjs가~/.claude/haribo/t1-<세션>-<결정 사항 ID>.json에 남기고, 저장 직전·직후에t1_preview로 붙여 보내요. 저장이 끝나면 지워요. 서버는 기억하지 않아요.before-save: ③과 다르면deny, 같으면ask.after-save: ④,VERSION_CONFLICT면 예외 7. 둘 다 ③ 파일이 있을 때만 움직여요.fix(mcp)서버가 ③ 화면을 못 만들었으면(systemMessage없음)hook.mjs가 ③ 값을 남기지 않게 했어요 (리뷰에서 찾음).민수님 파일·공용 파일에서 바뀐 원래 줄 (나머지는 더하기만):
notify-hooks.ts: 고치지 않았어요.http.ts: 지운 줄 없음 (handleHook맨 앞 T1 분기, 옵션t1Hooks,createT1Hooks더함).install.ts:HOOK_TABLE의event타입 한 줄,hookCommand의event타입 한 줄(표의 값을 그대로 넘겨서 같이 넓혀야 했어요. 이슈에는 한 줄로 적혀 있었어요).haribo-hook.mjs:import한 줄(rmSync,writeFileSync더함), 본문body: input || '{}'→body: withPreview(input)한 줄.왜 바꿨나요
T1(결정 사항과 다르면 먼저 묻기)이 이 저장소 CLAUDE.md + Bash에만 있어서 다른 저장소에서는 뜨지 않아요. T2~T5처럼 MCP 서버 hooks로 옮기기 위한 준비예요. 설계는 BDT-108 "정한 것 (10/23)"과 "흐름"을 따랐어요.
이슈와 다르게 한 것 (만들기 전에 확인받음):
pnpm mcp:register를 다시 하면 지금 T1(Bash)과 안내문 2·3번 저장이 모두 막혀요. 막기는 안내문을 바꾸는 PR B에서 켜요.PR A 뒤 상태: 지금 T1(CLAUDE.md T1 1~9번,
.claude/settings.jsonBash hooks,apps/detect/src/t1/Bash 파일)은 그대로 돌아요. Claude가 새 도구를 아직 부르지 않아 화면이 두 번 뜨지 않아요.어떻게 확인했나요
pnpm check(타입, 린트, 포맷, 테스트) 통과. 마지막: 테스트 파일 20개, 291 통과 · 1 건너뜀pnpm mcp:check: 도구 10개(show_standard_check포함), 401, ping, DB 연결 확인http.test.ts: 도구 목록 9→10개,show_standard_check표시(readOnlyHint,openWorldHint)·{ ok: true }·저장 안 함·잘못된 입력 거절install.test.ts: T1 hooks 네 줄, 이 저장소의 Bash T1 hooks는 지우지 않음, 실제hook.mjs를 Node로 돌려 ③ 파일 남기기·붙이기·지우기, 경로 문자 막기, 서버 실패 때 동작t1-hooks.test.ts: ②(에이전트·직접 요청·되돌림), ③(받는 이슈 있음·새 결정 사항·실패), 예외, 저장 직전(③ 없음·같음·다름), 저장 직후(③ 없음·④·예외 7·다른 실패)wiki.mcp.five-tools는 이 세션에서 T1 절차(Bash 화면 → 묻기 → ③ → 등록하기)로 저장했어요. CHANGELOG에는 그 한 줄만 들어 있어요.직접 확인하지 못한 부분
pnpm mcp:register로 깐 뒤show_standard_check를 실제로 불러 화면이 뜨는지,PostToolUse:mcp__haribo__show_standard_check says:머리글 아래 줄바꿈·색이 맞는지는 확인하지 못했어요. 테스트는 가짜 서버·가짜 입력으로만 했어요.PreToolUsehook에permissionDecision: "ask"를 줄 때, 이 저장소의permissions.ask와 겹쳐 허락 창이 한 번만 뜨는지 확인하지 못했어요 (PR B에서 도구를 쓰기 시작할 때 봐야 해요).PostToolUseFailure에서additionalContext가 Claude에게 전달되는지는 지금 Bash hook(hook-saved.ts)과 같은 모양으로 맞췄을 뿐 새 경로로는 확인하지 못했어요.hook-guard.ts와 같은 동작). 세션이 끝난 파일도 지우지 않아요.define-tool.ts에_meta(anthropic/alwaysLoad)는 더하지 않았어요. 도구 설명과 함께 PR B에서 정해요.hook.mjs·install.ts·notify-tools.test.ts를 고친 것을 따로 알리지는 않았어요. 리뷰 부탁드려요.🤖 Generated with Claude Code