.claude/skills/issue-finish/SKILL.md
Finish task with quality review by invoking commit/merge workflow (タスク完了)
npx skillsauth add AtsushiHashimoto/research-project-template .claude/skills/issue-finishInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
タスクを完了します。/commit/merge のエイリアスです。
タスクが完全に完了した時に使用します。
以下を実行します:
in-progress ラベルを削除/issue/finish
タスクがまだ完了していない場合は /commit/push を使用してください。
| スキル | 用途 | Issueクローズ | Worktree削除 |
|-------|------|--------------|--------------|
| /issue/finish | タスク完了 | ✅ する | ✅ する |
| /commit/push | 途中保存 | ❌ しない | ❌ しない |
/qa/ask で投稿した質問に未回答がないか確認します。
from pathlib import Path
import json
questions_file = Path("docs/qa/questions.jsonl")
answers_file = Path("docs/qa/answers.jsonl")
# 質問がなければスキップ
if not questions_file.exists():
# QAなし、続行
pass
else:
# 質問IDを収集
question_ids = set()
for line in questions_file.read_text().strip().split('\n'):
if line:
q = json.loads(line)
question_ids.add(q['id'])
# 回答済みIDを収集
answered_ids = set()
if answers_file.exists():
for line in answers_file.read_text().strip().split('\n'):
if line:
a = json.loads(line)
answered_ids.add(a['id'])
# 未回答の質問
unanswered = question_ids - answered_ids
if unanswered:
# 未回答の質問ごとにIssueを作成
for qid in unanswered:
create_qa_followup_issue(qid)
未回答の質問がある場合、各質問に対してフォローアップIssueを作成します。
def create_qa_followup_issue(question_id: str) -> None:
"""未回答の質問に対するフォローアップIssueを作成"""
store = QAStore(Path("docs/qa"))
question = store.get_question_by_id(question_id)
if not question:
return
title = f"[QA] {question_id}: {question.question[:50]}"
body = f"""## 概要
Issue #{question.issue} で仮決定した内容について、確認が必要です。
## 質問内容
{question.question}
## 仮決定
{question.decision or "なし"}
## 対応
- [ ] 回答を確認
- [ ] 必要に応じて実装を修正
## 関係
- Parent: #{question.issue}
"""
# gh コマンドでIssue作成
# gh issue create --title "..." --body "..." --label "qa-pending"
作成されるIssue:
[QA] Q001: 質問内容...qa-pending# Issue番号の取得
BRANCH=$(git branch --show-current)
ISSUE_ID=$(echo "$BRANCH" | grep -oE '[0-9]+' | head -1)
# 仕様ファイルを特定
SPEC_FILE=$(ls .spec/issues/${ISSUE_ID}-*.md 2>/dev/null | head -1)
仕様ファイルが存在する場合、メタ情報を更新:
ステータス: draft → ステータス: completed完了日: YYYY-MM-DD を追加gh issue edit "$ISSUE_ID" --remove-label "in-progress"
Skillツールを使って /commit/merge コマンドを実行:
<invoke name="Skill">
<parameter name="skill">commit/merge</parameter>
</invoke>
すべての実装詳細は /commit/merge コマンドに委譲されます。
/issue/finish は仕様ファイルのステータス更新 + /commit/merge を実行/commit/push を使用data-ai
Set up data directories in a new worktree
testing
Safely remove a worktree after checking for important data
data-ai
Initialize worktree data protection configuration (run once in main repository)
research
Sync updates from research-project-template (テンプレート更新の取り込み)