Claude Code Plugins

Community-maintained marketplace

Feedback

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name project-status
description GitHub Projects Status 변경. Use when (1) "상태 변경해줘", "Status 바꿔줘", (2) "작업중으로 변경", "완료 처리", (3) Epic/태스크 상태 일괄 변경.
tools Bash, Read
model inherit

🔔 호출 시 메시지: 이 Skill이 호출되면 반드시 [SEMO] Skill: project-status 시스템 메시지를 첫 줄에 출력하세요.

project-status Skill

GitHub Projects Status 필드 변경

🔴 필수 참조 파일

반드시 먼저 읽을 파일: .claude/memory/projects.md

이 파일에서 다음 정보를 확인합니다:

  • GitHub Projects 설정 (Project ID, Number)
  • Status 옵션 및 Option ID
  • 상태값 Alias (사용자 입력 → Status 값 매핑)

권한 요구사항

# project scope 필요 (최초 1회)
gh auth refresh -s project

Workflow

1. Status 필드 정보 조회

# Status 필드 ID와 옵션 목록 조회
gh api graphql -f query='
query {
  organization(login: "semicolon-devteam") {
    projectV2(number: 1) {
      field(name: "Status") {
        ... on ProjectV2SingleSelectField {
          id
          options { id name }
        }
      }
    }
  }
}' --jq '.data.organization.projectV2.field'

2. Issue의 Project Item ID 조회

REPO="semicolon-devteam/docs"
ISSUE_NUMBER=123

# Issue node_id 조회
ISSUE_NODE_ID=$(gh api repos/$REPO/issues/$ISSUE_NUMBER --jq '.node_id')

# Project Item ID 조회
ITEM_ID=$(gh api graphql -f query='
  query($nodeId: ID!) {
    node(id: $nodeId) {
      ... on Issue {
        projectItems(first: 10) {
          nodes {
            id
            project { id }
          }
        }
      }
    }
  }
' -f nodeId="$ISSUE_NODE_ID" \
  --jq '.data.node.projectItems.nodes[] | select(.project.id == "PVT_kwDOC01-Rc4AtDz2") | .id')

3. Status 변경 실행

# Status 변경
gh api graphql -f query='
  mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
    updateProjectV2ItemFieldValue(input: {
      projectId: $projectId
      itemId: $itemId
      fieldId: $fieldId
      value: { singleSelectOptionId: $optionId }
    }) {
      projectV2Item { id }
    }
  }
' -f projectId="PVT_kwDOC01-Rc4AtDz2" \
  -f itemId="$ITEM_ID" \
  -f fieldId="$STATUS_FIELD_ID" \
  -f optionId="$STATUS_OPTION_ID"

Status 옵션

Status 설명
백로그 초기 상태
검수대기 Epic 생성 시 기본값
작업중 개발 진행 중
리뷰요청 코드 리뷰 대기
테스트중 QA 테스트 단계
완료 작업 완료

Note: Status Option ID는 동적으로 조회합니다.

출력 포맷

[SEMO] project-status: 상태 변경 완료

✅ Status 변경 완료

**Issue**: #123
**이전 상태**: 검수대기
**변경 상태**: 작업중

에러 처리

권한 오류

⚠️ project scope 권한이 필요합니다.

다음 명령을 실행해주세요:
gh auth refresh -s project

Item 미발견

⚠️ Issue #123이 '이슈관리' Project에 없습니다.

먼저 Issue를 Project에 추가해주세요.

일괄 변경 지원

여러 Issue의 Status를 한 번에 변경:

# 라벨로 필터링하여 일괄 변경
ISSUES=$(gh issue list --repo semicolon-devteam/docs \
  --label "project:차곡" --json number --jq '.[].number')

for ISSUE in $ISSUES; do
  # Status 변경 로직 실행
done

Configuration

⚠️ 아래 값은 예시입니다. 실제 값은 .claude/memory/projects.md에서 확인하세요.

Project ID: .claude/memory/projects.md 참조
Organization: .claude/memory/projects.md 참조
Project Number: .claude/memory/projects.md 참조

상태값 Alias 사용

사용자가 "리뷰요청", "테스트중" 등의 한글/영문 키워드를 사용하면, .claude/memory/projects.md상태값 Alias 테이블을 참조하여 실제 Status 필드값으로 매핑합니다.

예시:

입력: "리뷰요청 이슈들 테스트중으로 바꿔줘"

1. projects.md 읽기
2. "리뷰요청" → Status "리뷰요청" 매핑
3. "테스트중" → Status "테스트중" 매핑
4. 해당 Status의 이슈들 조회
5. Status 변경 실행

References