| name | using-gh-attach |
| description | Attach explicitly provided file evidence (screenshots, demo videos, logs) to a GitHub issue or PR with the gh-attach CLI โ content-inspection masking gate, irreversible-upload staging, fail-open ATTACH_STATUS reporting. Trigger: standalone attach requests on an existing issue/PR ('์ด ์คํฌ๋ฆฐ์ท ์ด์์ ์ฌ๋ ค์ค', 'gh attach๋ก ์ฒจ๋ถ'), or another GitHub publishing skill reaching for the evidence-attachment procedure. Format/size limits delegated to the GitHub server; Discussions unsupported. NOT for issue/PR creation or body authoring (use create-issue/create-pr). |
gh-attach ํ์ผ ์ฆ๋น ์ฒจ๋ถ
๋ช
์์ ์ผ๋ก ์ ๊ณต๋ ํ์ผ ์ฆ๋น์ gh-attach CLI๋ก GitHub user-attachments์ ์
๋ก๋ํ๊ณ ์ด์/PR์ ์ฝ์
ํ๋ ์ ์ฐจ๋ค. ์
๋ก๋๋ asset์๋ ์ญ์ UI๊ฐ ์์ผ๋ฏ๋ก ์
๋ก๋๋ ๋น๊ฐ์ญ ์์
์ผ๋ก ์ทจ๊ธํ๋ค.
๊ฒ์ดํธยท์
๋ก๋ ์์ธ์ SSOT๋ references/preflight-gates.md(์ฌ์ ๊ฒ์ดํธยท๋ง์คํน ๊ฒ์ดํธ)์ references/upload-and-reporting.md(์คํ๊ธฐยทrepo ๊ณ ์ , ์
๋ก๋ยท๋ณธ๋ฌธ ์ฝ์
, ATTACH_STATUS ์ํ ๋ณด๊ณ )์ด๋ฉฐ, ๋ณธ๋ฌธ์ branch ๋ผ์ฐํ
๊ณผ ์์ ๋ถ๋ณ์, ๋จ๊ณ ์์ฝ๋ง ๋ค๋ฃฌ๋ค.
Branch ๋ผ์ฐํ
| ํธ์ถ ๋ฌธ๋งฅ | branch |
|---|
| create-issueยทcreate-pr ๋ฑ GitHub ๊ฒ์ ์คํฌ์ด ๋ณธ๋ฌธ ์์ฑ ํ๋ฆ ์์์ ์ฆ๋น ํ๋ณด๋ฅผ ์๋น | ์๋น์ ํธ์ถ |
| ๊ธฐ์กด ์ด์/PR์ ํ์ผ ์ฒจ๋ถ๋ง ๋จ๋
์ผ๋ก ์์ฒญ๋ฐ์ | ๋จ๋
ํธ์ถ |
ํฌ๋งทยทํฌ๊ธฐ ์ง์ ์ฌ๋ถ๋ ์คํฌ์ด ์ ์ ํ์ ํ์ง ์๊ณ GitHub ์๋ฒ์ ์์ํ๋ค โ ์๋ฒ๊ฐ ๊ฑฐ๋ถํ๋ฉด FAILED(PREUPLOAD)๋ก ๊ธฐ๋กํ๊ณ ๋ณธ ์์
์ fail-open์ผ๋ก ๊ณ์ํ๋ค. ๋ค์์ฒ๋ผ ์ด ์คํฌ์ surfaceยท์ญํ ๋ฐ์ธ ์์ฒญ์ ์
๋ก๋ ์์ด ๋ฏธ์ง์ ์ฌ์ ๋ง ์๋ดํ๋ค.
- Discussions๋ ๋ฏธ์ง์์ด๋ค โ gh CLI์ discussion ๋ณธ๋ฌธ ํธ์ง ๊ฒฝ๋ก๊ฐ ํ๋ฆฝ๋์ง ์์๋ค.
- ์ด์/PR ์์ฑ๊ณผ ๋ณธ๋ฌธ ์์ฑ์ ์ด ์คํฌ์ ๋ฒ์๊ฐ ์๋๋ค (create-issue/create-pr ๋ด๋น).
์์ ๋ถ๋ณ์ (๋ชจ๋ branch ๊ณตํต)
- ์ฒจ๋ถ๋ ๋ถ๊ฐ ๊ธฐ๋ฅ์ด๋ค. ์ด ์ ์ฐจ์ ๊ฒ์ฌยท์
๋ก๋ยท๋ณธ๋ฌธ ์ฝ์
์ด ์คํจํด๋ ๋ณธ ์์
(์ด์/PR ๊ฒ์ ํ๋ฆ)์ ์๋ ๋ณธ๋ฌธ์ผ๋ก ๊ณ์ํ๋ค (fail-open).
- ๊ฐ ํ๋ณด๋ ๋
๋ฆฝ ์ํ๋ฅผ ๊ฐ๋๋ค. ํ ํ๋ณด์ ํ๋ฝ์ด๋ ์คํจ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ณด ๋๋ ๋ณธ ์์
์ ์ฐจ๋จํ์ง ์๋๋ค.
- ์
๋ก๋๋ ๊ฒ์ ์์ฌ๊ฐ ํ์ ๋ ๋ค์๋ง ์คํํ๋ค. ๋ชจ๋ ์
๋ก๋ ๋์์ ์ฌ์ ๊ฒ์ดํธ์ ๋ง์คํน ๊ฒ์ดํธ๋ฅผ ๋จผ์ ์๋ฃํ๋ฉฐ, ์ต์ข
์ฌํ์ธ๊น์ง ๋ชจ๋ ํต๊ณผํ๊ธฐ ์ ์๋ ์ด๋ค ํ์ผ๋ ์
๋ก๋ํ์ง ์๋๋ค.
- ๋ง์คํน ๊ฒ์ดํธ๋ ํ์ผ์ ์ค์ ๋ด์ฉ์ ์ง์ ์ด์ด ๊ฒ์ฌํ๋ค. ํ์ผ๋ช
์ด๋ ์ฌ์ฉ์์ ์ค๋ช
๋ง์ผ๋ก ํต๊ณผ์ํค์ง ์๋๋ค.
- ์ง์ ๊ฒ์ฌ ์๋จ์ด ์๋ ํ์ผ(๋์์ ๋ฑ)์ ์
๋ก๋ ์ง์ ์ฌ์ฉ์์ ๋ณ๋ ๋ช
์ ํ์ธ 1ํ ์์ด ์
๋ก๋ํ์ง ์๋๋ค โ ์ฒจ๋ถ ์์ฒญ ์์ฒด๋ ํ์ธ์ผ๋ก ๊ฐ์ฃผํ์ง ์๋๋ค. ๊ฒ์ฌ ์๋จ์ด ์๋ ํ์ผ์ ๊ฒ์ฌ ์์ด ์ฌ์ฉ์ ํ์ธ์ผ๋ก ๋๊ธฐ์ง ์๋๋ค.
href ํ๋ณด ํ์ ์คํจ๋ ํ๋ณดํ href๋ฅผ ์ฌ์ฌ์ฉํ๋ค. ์๋ ์ฌ์
๋ก๋ํ์ง ์๋๋ค.
- ํ๋ณด๊ฐ ์์ผ๋ฉด ์ด ์ ์ฐจ๋ฅผ ์คํํ์ง ์๊ณ
ATTACH_STATUS๋ ์ถ๋ ฅํ์ง ์๋๋ค.
์๋น์ ํธ์ถ branch
ํธ์ถ ์คํฌ์ด ํ๋ณด ๋ชฉ๋ก, ๋ณธ๋ฌธ ์ฌ๋ณธ, ์ฝ์
์ฌ๋กฏ, ๊ฒ์ ๊ฒ์ดํธ๋ฅผ ์ ๊ณตํ๋ค. ํ๋ณด์ ์๋ณ ๊ธฐ์ค์ ํธ์ถ ์คํฌ ๋ฌธ์๊ฐ ์ ์ํ๋ค โ ํํ create-issue/create-pr๋ ์๊ฐ ์ฆ๋น ์ค์ฌ์ด๋ฉฐ, ์๋น์ ๊ฒฝ๋ก์ ๋น์ด๋ฏธ์ง ํ์ฅ์ ์๋น์ ์คํฌ์ ํ์ ๊ฒฐ์ ์ฌํญ์ด๋ค.
- ๋ณธ๋ฌธ ์์ฑ ๋จ๊ณ์์๋ ํ๋ณด๋ฅผ ์๋ณํ๊ณ ์ฝ์
์ฌ๋กฏ๋ง ์ค๋นํ๋ค. ์ฌ๋กฏ ์์น ๊ท์น โ ์ด์: issue-template์
์๊ฐ์ ์ค์ ๊ฒฐ๊ณผ ์ . PR: ๋ฐ๋ชจยทํฐ๋ฏธ๋ ์ฆ๋น์ ๊ตฌํ ์์ธ ์ ๋ง๋ฏธ, before/after ๊ฒ์ฆ ์ด๋ฏธ์ง๋ Human Test Plan์ ํด๋น ๋จ๊ณ ์๋.
- ์
๋ก๋๋ ๊ฒ์ ์์ฌ๊ฐ ํ์ ๋ ๋ค,
--body-file ๊ฒ์ ์ง์ ์๋ง ์คํํ๋ค. ์ฌ์ฉ์ ํ์ธ ๊ฒ์ดํธ๊ฐ ์์ผ๋ฉด ํ์ธ ํต๊ณผ ์ ์๋ ์
๋ก๋ํ์ง ์๋๋ค.
- ๋ชจ๋ ํ๋ณด์ references/preflight-gates.md์ ์ฌ์ ๊ฒ์ดํธ์ ๋ง์คํน ๊ฒ์ดํธ๋ฅผ ์๋ฃํ๋ค.
- references/upload-and-reporting.md์ ์คํ๊ธฐยทrepo ๊ณ ์ , ์
๋ก๋, ๋ณธ๋ฌธ ์ฝ์
์ ์ํํ๊ณ
ATTACH_STATUS๋ฅผ ํธ์ถ ์คํฌ์ ์ต์ข
์๋ต์ ํฌํจํ๋ค.
create-pr update์์๋ ๊ธฐ์กด user-attachments ๋งํฌ๋ฅผ ๊ทธ๋๋ก ๋ณด์กดํ๋ค. ๋ช
์์ ์ผ๋ก ์๋ก ์ ๊ณต๋ ํ๋ณด๋ง ๊ฒ์ฌํ๋ฉฐ ๊ธฐ์กด ๋งํฌ๋ ๋์ผ ํ์ผ์ ์ฌ์
๋ก๋ํ์ง ์๋๋ค.
๋จ๋
ํธ์ถ branch
- ๋์ ํ์ ๊ณผ repo ๊ณ ์ : ์ฒจ๋ถํ ์ด์ ๋๋ PR์ URLยท๋ฒํธ๋ฅผ ํ์ธํ๋ค. URL์ด๋ฉด URL์์
OWNER_REPO์ ๋ฒํธ๋ฅผ ์ถ์ถํ๊ณ , ๋ฒํธ๋ง ๋ฐ์์ผ๋ฉด ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ canonical repo(gh repo view --json nameWithOwner -q .nameWithOwner)๋ฅผ OWNER_REPO๋ก ์ฌ์ฉํ๋ค. ์ถ์ถํ repo๊ฐ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ canonical repo์ ๋ค๋ฅด๋ฉด ์งํํ์ง ์๊ณ ๊ฑฐ๋ถํ๋ค โ cross-repo ์ฒจ๋ถ๋ ๋ฏธ์ง์์ด๋ค (์
๋ก๋ asset์ ์ ๊ทผ ๊ฒฝ๊ณ๊ฐ -R ์ง์ repo์ ๋ฌถ์ด๋ฏ๋ก, ๋์ ๋ถ์ผ์น๋ ์๋ชป๋ ๋ณธ๋ฌธ ์กฐํยท์๋ฑํ ์ ์ฅ์ ๊ฒ์๋ก ์ด์ด์ง๋ค). ๋์์ด ๋ถ๋ช
ํํ๋ฉด ์งํ ์ ์ ํ์ธ์ ์์ฒญํ๋ค. ์ดํ ๋ชจ๋ ์กฐํยท๊ฒ์ ๋ช
๋ น์ ๊ฐ์ -R "$OWNER_REPO"๋ฅผ ๋ช
์ํ๋ค.
- ๊ธฐ์กด ๋ณธ๋ฌธ ์กฐํยท๋ณด์กด: surface๋ณ๋ก ํ์ฌ ๋ณธ๋ฌธ์ ์กฐํํด ๋ณด์กดํ๋ค โ ์ด์๋
gh issue view <N> -R "$OWNER_REPO" --json body, PR์ gh pr view <N> -R "$OWNER_REPO" --json body.
- ์ฝ์
๋ฐฉ์ ์ ํ: ๋ณธ๋ฌธ(body) ์์ ๊ณผ comment ์ถ๊ฐ ์ค ํ๋๋ฅผ ์ ํ๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ํ์ง ์์์ผ๋ฉด ๊ธฐ์กด ๋ณธ๋ฌธ ํผ์ ์ํ์ด ์๋ comment ์ถ๊ฐ๋ฅผ ๊ถํ๋ค.
- ๊ฒ์ ์์ฌ ํ์ : ๋น๊ฐ์ญ ์
๋ก๋ ์ ์ ๋์, ์ฝ์
๋ฐฉ์, ๊ฒ์ ์ฌ๋ถ๋ฅผ ํ์ ํ๋ค. ํ์ ์ ์๋ ์
๋ก๋ํ์ง ์๋๋ค.
- ๊ฒ์ดํธยท์
๋ก๋: references/preflight-gates.md์ ๊ฒ์ดํธ๋ฅผ ์๋ฃํ ๋ค references/upload-and-reporting.md์ ์ ์ฐจ๋ก ์
๋ก๋ํ๋ค.
- ๊ฒ์: body ์์ ์ด๋ฉด ๋ณด์กดํ ๋ณธ๋ฌธ ์ฌ๋ณธ์ ํ์ผ ์ข
๋ฅ๋ณ ์ฝ์
๋ฌธ๋ฒ(references/upload-and-reporting.md 4์ )์ผ๋ก ์ฝ์
ํด
--body-file๋ก ๊ฒ์ํ๊ณ , comment๋ฉด comment ๋ณธ๋ฌธ์ผ๋ก ๊ฒ์ํ๋ค. href ํ๋ณด ํ ์ฝ์
ยท๊ฒ์ฆ์ด ์คํจํ๋ฉด ๊ฒ์ํ์ง ์๊ณ FAILED(LOCAL_INSERT)์ ํ๋ณดํ href๋ง ๋ณด๊ณ ํ๋ค โ ๊ธฐ์กด ๋ณธ๋ฌธ์ ์๋ฒ์ ๊ทธ๋๋ก ์์ผ๋ฏ๋ก ๋ณด์กดํด ๋ ์ฌ๋ณธ์ ์ฌ๊ฒ์ํ์ง ์๋๋ค. ๊ฒ์ ์์ฒด๊ฐ ์คํจํ๋ฉด ํ๋ณดํ href์ ๋ณธ๋ฌธ ํ์ผ์ ๋ณด์กดํ๋, ์คํจ ์ข
๋ฅ๋ฅผ ๊ตฌ๋ถํด ์ฒ๋ฆฌํ๋ค โ ๋ช
๋ น์ด ๋ช
์์ ์ผ๋ก ๊ฑฐ๋ถ๋ ๊ฒฝ์ฐ์๋ง ๋์ผ assetยท๋ณธ๋ฌธ์ผ๋ก ์ฌ์๋ํ๋ค. ์๋ต ์ ์ค ๋ฑ ๊ฒ์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ ํ ์ ์์ผ๋ฉด blind ์ฌ์๋ํ์ง ์๋๋ค: ๋์์ ์ฌ์กฐํํด ๊ฒ์ ๋ฐ์ ์ฌ๋ถ(comment ์กด์ฌ, body ๋ด์ฉ)๋ฅผ ํ์ธํ๊ณ ๋ฏธ๋ฐ์์ผ ๋๋ง ์ฌ์๋ํ๋ค (comment ์ค๋ณต ์์ฑ ๋ฐฉ์ง). body ์์ ์ฌ์๋ ์ ์๋ ํ์ฌ ๋ณธ๋ฌธ์ ์ฌ์กฐํํด ๋ณด์กด ์์ ์ดํ ์ 3์ ์์ ์ด ์๋์ง ํ์ธํ๋ค. ์ด๋ ๊ฒฝ์ฐ๋ ์ asset์ ์
๋ก๋ํ์ง ์๋๋ค.
- ์ต์ข
์๋ต์ ํ๋ณด๋ณ ์ํ์
ATTACH_STATUS๋ฅผ ํฌํจํ๋ค.