スキル一覧に戻る
semicolon-devteam

assign-task

by semicolon-devteam

SEMO (Semicolon Orchestrate) - AI Agent Orchestration Framework Monorepo

1🍴 0📅 2026年1月22日
GitHubで見るManusで実行

SKILL.md


name: assign-task description: | 이슈 업무 할당 및 작업량 자동 산정 (Supabase DB 기반). Use when (1) Issue assignee 지정, (2) 작업량(Point) 자동 계산, (3) 이슈 본문 체크리스트 추가, (4) 상태 업데이트, (5) Slack 담당자 알림. tools: [Supabase, Bash, Read, Edit, mcp__semo-integrations__semo_get_slack_token] model: inherit

시스템 메시지: 이 Skill이 호출되면 [SEMO] Skill: assign-task 호출 - #{issue_number} → @{assignee} 시스템 메시지를 첫 줄에 출력하세요.

assign-task Skill

이슈 업무 할당 + 작업량 자동 산정 + Slack 알림 (Supabase DB 기반)

🔴 데이터 소스 변경 (v2.0.0)

버전데이터 소스방식
v1.xGitHub Issues + ProjectsGraphQL API
v2.0Supabaseissues 테이블 UPDATE

Purpose

이슈에 담당자를 할당하고, 작업량을 자동으로 산정하여 이슈 본문과 상태를 업데이트합니다.

핵심 기능

기능설명
Assignee 지정issues.assignee_id 업데이트
작업량 산정Estimation Guide 기반 Point 자동 계산
이슈 본문 업데이트체크리스트 형식으로 작업량 명세 추가
estimation_point 갱신총점 숫자 저장
Slack 알림담당자에게 업무 할당 알림 발송

Input

skill: assign-task({
  issue: 123,                    // Issue 번호 (필수)
  assignee: "username",          // 담당자 ID (필수)
  tasks: [                       // 작업 목록 (선택 - 미입력시 이슈 분석)
    { name: "API 엔드포인트 구현", point: 2 },
    { name: "DTO 클래스 작성", point: 1 }
  ],
  notify: true                   // Slack 알림 여부 (기본: true)
});

Execution Flow

1. Issue 정보 조회 (Supabase)
   ↓
2. 작업 목록 분석 (입력값 또는 이슈 본문 파싱)
   ↓
3. 작업량 산정 (Estimation Guide 기준)
   ↓
4. Issue 업데이트 (assignee_id + body + estimation_point)
   ↓
5. 상태 변경 (status → 'todo')
   ↓
6. Slack 알림 발송 (선택)

Step 1: Issue 정보 조회

-- 이슈 정보 조회
SELECT
  i.id,
  i.number,
  i.title,
  i.body,
  i.type,
  i.status,
  i.labels,
  ap.name AS assignee_name
FROM issues i
LEFT JOIN agent_personas ap ON i.assignee_id = ap.id
WHERE i.number = 123
  AND i.office_id = '{office_uuid}';

Step 2: 담당자 ID 조회

-- agent_personas에서 담당자 조회
SELECT id, name, slack_id
FROM agent_personas
WHERE name = '{assignee_name}'
  AND office_id = '{office_uuid}';

Step 3: 작업량 산정

Reference: estimation-guide.md

각 작업에 Point를 부여:

  • 기존 Point가 있으면 그대로 사용
  • 없으면 작업 유형별 기본값 적용

Step 4: Issue 업데이트

-- 담당자 할당 및 작업량 업데이트
UPDATE issues
SET
  assignee_id = '{assignee_uuid}',
  estimation_point = 4,
  body = body || E'\n\n---\n\n## 📊 작업량 산정\n\n- [ ] API 엔드포인트 구현: 2점\n- [ ] DTO 클래스 작성: 1점\n- [ ] 테스트 코드 작성: 1점\n\n**총점: 4점** (예상 소요: 2일)',
  status = 'todo',
  updated_at = NOW()
WHERE number = 123
  AND office_id = '{office_uuid}'
RETURNING number, title, status, estimation_point;
// Supabase 클라이언트 사용
const { data, error } = await supabase
  .from('issues')
  .update({
    assignee_id: assigneeId,
    estimation_point: totalPoints,
    body: updatedBody,
    status: 'todo'
  })
  .eq('number', 123)
  .eq('office_id', officeId)
  .select()
  .single();

Step 5: Slack 알림 발송

Reference: slack-template.md

# Token 획득
TOKEN=$(mcp__semo-integrations__semo_get_slack_token)

# 담당자 Slack ID는 agent_personas.slack_id에서 조회

# 메시지 발송
curl -s -X POST 'https://slack.com/api/chat.postMessage' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d @- << 'EOF'
{
  "channel": "{slack_id}",
  "text": "📋 새 업무가 할당되었습니다: #{issue_number}",
  "blocks": [...]
}
EOF

Output Format

[SEMO] Skill: assign-task 완료

## ✅ 업무 할당 완료

**Issue**: #123 - [Task 제목]
**담당자**: @username

### 📊 작업량 산정

| 작업 | Point |
|------|-------|
| API 엔드포인트 구현 | 2 |
| DTO 클래스 작성 | 1 |
| 테스트 코드 작성 | 1 |
| **총점** | **4** |

**예상 소요**: 2일 (1 Point = 0.5일)

### 업데이트 내역

- [x] Assignee 지정: @username
- [x] 이슈 본문 작업량 체크리스트 추가
- [x] estimation_point: 4
- [x] status: todo
- [x] Slack 알림 발송

Error Handling

에러처리
Issue not found에러 메시지 출력 후 종료
Invalid assignee유효한 담당자 ID 요청
Supabase 연결 오류에러 메시지, GitHub CLI 폴백 안내
Slack ID 미발견경고 출력, 할당은 계속 진행

GitHub CLI Fallback

Supabase 연결이 불가능한 경우:

# Fallback: GitHub CLI로 담당자 할당
gh issue edit 123 --add-assignee {username} --repo {owner}/{repo}

References

スコア

総合スコア

50/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です