← 홈Setup Tip

Setup Tip

Setup Tip — 본문 플래그는 파일이 아니라 글자를 받는다

자동화가 PR을 만들 때 본문 플래그에 "@경로"를 넘기면, 도구는 파일을 읽지 않고 그 경로 문자열을 그대로 본문으로 올린다. 파일 전용 플래그를 쓰고, 올린 뒤에는 본문을 다시 읽어 확인하며, 점검은 "짧은 본문"이 아니라 실패의 모양 자체를 찾도록 짜라.

상황

여러 작업 세션이 각자 PR을 열고, PR 본문은 임시 파일에 길게 써 둔 뒤 명령줄 도구로 넘긴다. 리뷰어가 PR을 열어 보니 본문에 설명 대신 @/tmp/pr-body.md 한 줄만 있다. PR은 정상적으로 열렸고, 명령은 성공 코드로 끝났고, 아무도 경고를 받지 못했다.

흔한 착각

어떤 명령줄 도구들은 @파일 표기를 "이 파일의 내용을 읽어라"로 해석한다. 그래서 본문 플래그에도 같은 표기가 통할 거라고 가정한다. 하지만 GitHub CLI의 본문 플래그는 받은 값을 글자 그대로 본문으로 쓴다. 파일을 읽게 하려면 별도의 파일 플래그를 써야 한다. 명령이 실패하지 않으니 착각은 출력 어디에도 드러나지 않는다.

실제로 일어난 일

처음 한 건을 발견했을 때 열린 PR 전체를 훑었다. 기준은 "비어 있거나 아주 짧은 본문"이었고, 결과는 0건이었다. 두 시간쯤 뒤 같은 증상이 다른 PR에서 또 나왔다. 이번 본문은 경로 문자열로 시작했지만 그 뒤에 다른 내용이 조금 붙어 있었고, 또 다른 PR은 경로 이름이 길어서 "짧은 본문" 기준을 넘겼다. 첫 점검은 실패의 결과(짧음)를 찾았지, 실패의 원인(경로 문자열)을 찾지 않았다.

무엇을 확인해야 하는가

본문을 쓴 뒤에는 서버에서 본문을 다시 읽어 온다. 첫 줄이 @로 시작하거나 /tmp/ 같은 로컬 경로가 들어 있으면 내용이 아니라 경로가 올라간 것이다. 점검 스크립트를 짤 때는 길이만 보지 말고 이 패턴 자체를 찾고, 길이 기준은 보조 신호로만 쓴다.

고치는 방향

파일에서 본문을 읽을 때는 파일 전용 플래그(--body-file)를 쓴다. 작업 세션에 주는 지시문에도 이 플래그를 명시해서 같은 실수가 세션마다 반복되지 않게 한다. 이미 잘못 올라간 본문은 고쳐야 하는데, 도구의 편집 명령이 다른 이유로 실패한다면 REST API로 PR 본문만 직접 갱신하는 것이 가장 범위가 좁은 수정이다.

확인 방법

고친 뒤 열린 PR 전체를 다시 훑는다. 조건은 두 가지다. 본문에 @/ 경로 패턴이 있는가, 그리고 본문이 비정상적으로 짧은가. 둘 다 0건일 때만 정리가 끝났다고 기록한다. 같은 증상이 한 번 더 나왔다면 그건 우연이 아니라 점검 기준이 틀렸다는 신호다.