From glab-cli
GitLab Issue lifecycle workflow — automates start/progress/done stages with label transitions and milestone tracking. Trigger on 작업 시작, 이슈 등록, 구현 진행, 작업 진행, 구현 완료, 작업 완료, issue workflow, work start, work progress, work done.
npx claudepluginhub manuel71sj/claude-plugins --plugin glab-cliThis skill uses the workspace's default tool permissions.
GitLab 이슈의 작업 수명주기를 3단계(시작→진행→완료)로 관리하는 워크플로우 가이드.
Prevents silent decimal mismatch bugs in EVM ERC-20 tokens via runtime decimals lookup, chain-aware caching, bridged-token handling, and normalization. For DeFi bots, dashboards using Python/Web3, TypeScript/ethers, Solidity.
Share bugs, ideas, or general feedback.
GitLab 이슈의 작업 수명주기를 3단계(시작→진행→완료)로 관리하는 워크플로우 가이드. 각 단계에서 수행할 작업을 사용자에게 제안하고, 확인 후 실행한다.
관련 스킬: 설정/인증 →
/glab-cli| MR →/glab-cli:mr| CI/CD →/glab-cli:ci| 이슈 레퍼런스 →/glab-cli:issueANSI 방지 (필수): 조회 →
2>&1 | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g'파이프. 생성/수정 → Write 도구로 프로젝트 루트.gl-body.md작성 →glab api -F "field=@.gl-body.md"→ 완료 후rm .gl-body.md로 삭제./tmp경로 사용 금지 —/tmp에서 생성하면 ANSI 오염이 발생할 수 있다. 반드시 프로젝트 루트에 생성하고 사용 후 삭제한다. 상세 규칙:/glab-cli의 "ANSI 코드 방지" 섹션 참조.
:fullpath플레이스홀더는 현재 저장소 컨텍스트에서 자동 해석된다. 아래 예제에는 간결성을 위해 sed가 생략되어 있으나, 조회 시 반드시 적용한다.
작업 시작, 이슈 등록, work start, 새 작업
기존 라벨 조회 — 프로젝트에서 사용 가능한 라벨과 상태::* scoped labels 존재 여부를 확인한다.
glab label list
마일스톤 조회 — 2차 개발 마일스톤 ID를 확인한다. 특별한 지시가 없으면 기본값으로 사용한다.
glab api projects/:fullpath/milestones --field "search=2차 개발"
마일스톤이 없으면 사용자에게 대체 마일스톤을 확인한다.
기존 이슈 검색 — 사용자의 작업 컨텍스트에서 키워드를 추출하여 관련 이슈를 검색한다.
glab issue list --search "키워드"
[확인] 이슈 선택/생성 — 검색 결과를 사용자에게 제안한다:
신규 이슈 생성 (사용자가 신규 선택 시):
.gl-body.md를 작성한다.glab api projects/:fullpath/issues -X POST \
-F "title=이슈 제목" \
-F "description=@.gl-body.md" \
-F "labels=상태::할일,적절한-라벨" \
-F "milestone_id=<조회한_ID>"
rm .gl-body.md
연관 이슈 관계 설정 (관련 이슈가 있는 경우):
glab api projects/:fullpath/issues/<id>/links -X POST \
-F "target_project_id=<target_project_id>" \
-F "target_issue_iid=<target_iid>" \
-F "link_type=relates_to"
link_type:relates_to,blocks,is_blocked_by중 상황에 맞게 선택한다.
구현 진행, 작업 진행, work progress, 이슈 업데이트
현재 이슈 확인 — 이전 단계에서 사용한 이슈 또는 사용자가 지정한 이슈를 확인한다.
glab issue view <id>
현재 사용자 ID 확인 — assignee 등록을 위해 사용자 ID를 조회한다.
glab api user
응답 JSON에서
id필드를 추출한다.
[확인] 이슈 업데이트 내용 제안 — 다음 변경 사항을 사용자에게 보여준 후 확인한다:
이슈 본문 업데이트 — 기존 description을 조회한 후 작업내용을 추가한다.
.gl-body.md에 업데이트된 전체 description을 작성한다.glab api projects/:fullpath/issues/<id> -X PUT \
-F "description=@.gl-body.md"
rm .gl-body.md
assignee 등록
glab api projects/:fullpath/issues/<id> -X PUT \
-F "assignee_ids[]=<user_id>"
라벨 변경 — add_labels/remove_labels로 안전하게 전환한다.
glab api projects/:fullpath/issues/<id> -X PUT \
-F "add_labels=상태::진행중" \
-F "remove_labels=상태::할일"
주의:
labels=는 전체 치환이므로 사용 금지. 기존 라벨이 모두 삭제된다.
구현 완료, 작업 완료, work done, 이슈 완료
현재 이슈 확인
glab issue view <id>
완료보고 작성 — 변경사항 요약, 테스트 결과 등을 포함하여 Write 도구로 .gl-body.md를 작성한다.
glab api projects/:fullpath/issues/<id>/notes -X POST \
-F "body=@.gl-body.md"
rm .gl-body.md
본문 checkbox 업데이트 (본문에 checkbox가 있는 경우):
- [ ]를 - [x]로 변경한다..gl-body.md에 업데이트된 전체 description을 작성한다.glab api projects/:fullpath/issues/<id> -X PUT \
-F "description=@.gl-body.md"
rm .gl-body.md
남은 작업 → 후속 이슈 생성 (남은 작업이 있는 경우):
.gl-body.md에 후속 이슈 description을 작성한다.# 후속 이슈 생성
glab api projects/:fullpath/issues -X POST \
-F "title=후속: 남은 작업 제목" \
-F "description=@.gl-body.md" \
-F "labels=상태::할일"
rm .gl-body.md
# 원본 이슈와 관계 설정
glab api projects/:fullpath/issues/<new_id>/links -X POST \
-F "target_project_id=<project_id>" \
-F "target_issue_iid=<original_iid>" \
-F "link_type=relates_to"
라벨 변경
glab api projects/:fullpath/issues/<id> -X PUT \
-F "add_labels=상태::완료" \
-F "remove_labels=상태::진행중"
ANSI 코드 검증 — 이슈 내용에 ANSI 이스케이프가 포함되지 않았는지 최종 확인한다.
glab issue view <id> 2>&1 | grep -P '\x1b\[' && echo "ANSI 발견!" || echo "Clean"
ANSI 발견 시: 해당 필드를 Write 도구로 재작성한 후
glab api PUT으로 정정한다.
이 섹션은 기존
/glab-cli:issue스킬에 없는 API 패턴을 보충한다. 기본적인 이슈 생성/조회/관리 명령어는/glab-cli:issue참조.
| 작업 | API 패턴 |
|---|---|
| 라벨 추가 | -F "add_labels=라벨1,라벨2" |
| 라벨 제거 | -F "remove_labels=라벨1,라벨2" |
| 라벨 전환 | -F "add_labels=새라벨" -F "remove_labels=기존라벨" |
labels=는 전체 치환이므로 이슈 수정 시 사용 금지. 기존 라벨이 모두 삭제된다. 이슈 생성(POST) 시에만labels=를 사용한다.
# 관계 생성
glab api projects/:fullpath/issues/<id>/links -X POST \
-F "target_project_id=<pid>" \
-F "target_issue_iid=<iid>" \
-F "link_type=relates_to"
link_type:relates_to|blocks|is_blocked_by
glab api projects/:fullpath/milestones --field "search=마일스톤명"
응답 JSON 배열에서
id필드를 추출한다.
glab api user
응답 JSON에서
id필드를 추출한다.