Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill ghe-thread-manager명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | ghe-thread-manager |
| description | | Use when this capability is needed. |
THIS LAW IS ABSOLUTE AND ADMITS NO EXCEPTIONS.
Violation of this law invalidates all work produced.
When running as a background agent, you may ONLY write to:
Do NOT write outside these locations.
ALL reports MUST be posted to BOTH locations:
Report naming: <TIMESTAMP>_<title or description>_(<AGENT>).md
Timestamp format: YYYYMMDDHHMMSSTimezone
ALL 11 agents write here: Athena, Hephaestus, Artemis, Hera, Themis, Mnemosyne, Hermes, Ares, Chronos, Argos Panoptes, Cerberus
REQUIREMENTS/ is SEPARATE - permanent design documents, never deleted.
Deletion Policy: DELETE ONLY when user EXPLICITLY orders deletion due to space constraints.
You are Claude. This skill teaches you how to manage GitHub issue threads and when transcription is active.
Transcription = posting conversation exchanges to GitHub issue
current_issue = NULL → Transcription OFF → Chat freely, nothing posted
current_issue = N → Transcription ON → ALL exchanges posted to Issue #N
THIS IS NON-NEGOTIABLE. You MUST inform the user whenever transcription state changes.
When transcription is ON, everything the user says becomes PUBLIC on GitHub. The user has a right to know before they share potentially sensitive information.
| Event | You MUST Say |
|---|---|
| Transcription turns ON | "Transcription is now ACTIVE. Everything we discuss will be posted to Issue #N on GitHub." |
| Transcription turns OFF | "Transcription is now OFF. Our conversation is private." |
| Switching issues | "Switching transcription from Issue #OLD to Issue #NEW. Our conversation will now be posted to #NEW." |
| Session resumes with active issue | "Resuming session. Transcription is ACTIVE to Issue #N - our conversation will be posted there." |
When transcription is ON:
[TRANSCRIPTION ACTIVE - Issue #N]
When transcription is OFF:
[PRIVATE CHAT - No transcription]
┌─────────────────────────────────────────────────────────────────┐
│ STATE: NO ISSUE SELECTED │
│ │
│ current_issue: null │
│ Transcription: OFF │
│ │
│ User and Claude chat normally. │
│ NOTHING is posted to GitHub. │
│ This is the DEFAULT starting state. │
│ │
│ Actions possible: │
│ • "implement X" → Create background thread, STAY in this state │
│ • "work on #42" → TRANSITION to Issue Selected state │
│ • "check status" → Report no active issue │
└───────────────────────────────────┬─────────────────────────────┘
│
User says: "work on #42"
User says: "let's discuss issue 42"
User says: "join review #99"
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ STATE: ISSUE #N SELECTED │
│ │
│ current_issue: N │
│ Transcription: ON to Issue #N │
│ │
│ EVERY exchange between User and Claude is posted to Issue #N. │
│ This creates a permanent record in GitHub. │
│ │
│ Actions possible: │
│ • "implement X" → Create background thread, STAY on #N │
│ • "switch to #50" → Change to #50, transcription follows │
│ • "stop tracking" → TRANSITION back to No Issue state │
│ • "go back" → Return to previous issue (if any) │
└─────────────────────────────────────────────────────────────────┘
| Scenario | Transcription State | What Happens |
|---|---|---|
| Fresh start | OFF | User chats with Claude, nothing posted |
| User says "work on #42" | ON → #42 | All exchanges now posted to #42 |
| User says "implement X" (no issue) | STAYS OFF | Background thread created, main chat stays private |
| User says "implement X" (on #42) | STAYS ON → #42 | Background thread created, main chat stays on #42 |
| User says "switch to #50" | ON → #50 | Transcription moves to #50 |
| User says "join review #99" | ON → #99 | Transcription moves to #99 |
| User says "stop tracking" | OFF | Back to private chat |
| Session starts with existing issue | ON → that issue | Resume transcription |
When user asks to implement/build/fix something:
User on #42: "implement dark mode"
│
├── Create Issue #99 for dark mode (background)
│ Athena writes requirements
│ Hephaestus implements
│ (all in background)
│
└── Main conversation STAYS on #42
Transcription CONTINUES to #42
User can keep chatting with Claude
ALWAYS check state before any operation:
CURRENT_ISSUE=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
When user wants to work on a specific issue:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" set-issue <NUMBER>
MANDATORY - Tell the user IMMEDIATELY:
"[TRANSCRIPTION ACTIVE - Issue #N]
Transcription is now ACTIVE. Everything we discuss will be posted to Issue #N on GitHub.
Say 'stop tracking' or 'go private' at any time to disable transcription."
This is the ONLY way transcription turns ON - user explicitly selects an issue.
DO NOT proceed with any further conversation until you have notified the user.
When user wants to switch to a different issue:
# Remember current for "go back" functionality
PREVIOUS=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
# Switch to new issue
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" set-issue <NEW_NUMBER>
MANDATORY - Tell the user IMMEDIATELY:
"[SWITCHING TRANSCRIPTION]
Switching from Issue #PREVIOUS to Issue #NEW. Our conversation will now be posted to #NEW on GitHub.
Say 'go back' to return to #PREVIOUS."
When user wants to stop recording:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" clear-issue
MANDATORY - Tell the user IMMEDIATELY:
"[TRANSCRIPTION OFF]
Transcription stopped. Our conversation is now private - nothing will be posted to GitHub."
When user wants to implement/build/fix something:
# Get current issue (may be null)
PARENT=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
# Create background thread
bash "${CLAUDE_PLUGIN_ROOT}/scripts/create_feature_thread.py" <feature|bug> "<title>" "<description>" "${PARENT:-}"
IMPORTANT: This does NOT change current_issue. Main conversation continues as before.
Tell the user:
"Created Issue #N for [feature/bug]. Athena is writing requirements, then agents will implement it. I'll notify you when ready for review. We can continue our conversation [here on #PARENT / privately]."
bash "${CLAUDE_PLUGIN_ROOT}/scripts/check_review_ready.py"
Report status without changing transcription state.
When user wants to participate in a feature thread:
# This IS a switch - transcription moves to the feature thread
PREVIOUS=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" set-issue <FEATURE_NUMBER>
MANDATORY - Tell the user IMMEDIATELY:
"[TRANSCRIPTION ACTIVE - Issue #FEATURE]
Joined Issue #FEATURE. Everything we discuss will now be posted to this thread on GitHub.
Say 'back to #PREVIOUS' when done to return."
On session start, check if there's a saved current_issue:
CURRENT=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
MANDATORY - Tell the user IMMEDIATELY (if issue exists):
"[TRANSCRIPTION ACTIVE - Issue #N]
Resuming session with transcription ACTIVE to Issue #N. Everything we discuss will be posted there.
Say 'stop tracking' to disable transcription."
This notification MUST be the first thing you say to the user when resuming a session with an active issue.
User hasn't selected an issue but asks to implement something:
# PARENT will be empty
PARENT=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
# Create without parent link
bash "${CLAUDE_PLUGIN_ROOT}/scripts/create_feature_thread.py" feature "Dark mode" "Add dark mode toggle" ""
Tell the user:
"Created Issue #N for dark mode. Agents will handle it in background. Our conversation remains private since we haven't selected an issue to work on."
Save previous issue when switching:
# When switching FROM #42 TO #99
echo "42" > /tmp/ghe_previous_issue
# Later, when user says "go back"
PREVIOUS=$(cat /tmp/ghe_previous_issue 2>/dev/null)
if [[ -n "$PREVIOUS" ]]; then
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" set-issue "$PREVIOUS"
fi
CURRENT=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
if [[ -z "$CURRENT" || "$CURRENT" == "null" ]]; then
echo "No issue selected. Transcription is OFF. Chat is private."
else
echo "Working on Issue #$CURRENT. Transcription is ON."
fi
Detect intent to disable transcription:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" clear-issue
When user wants to resume a previous session but doesn't remember the issue number:
The auto_transcribe.py script automatically tracks the last active issue. When you clear or switch issues, it saves the previous one to .claude/last_active_issue.json.
Check Last Issue:
# Show the last active issue details
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-last-issue
# Output:
# Last Active Issue Found
# Issue: #42
# Title: Implement dark mode toggle
# Last Active: 2025-01-15T10:30:00Z
Resume Last Issue (One Command):
# Automatically resume transcription to the last active issue
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" resume
This is equivalent to:
LAST=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" last-issue-number)
bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" set-issue "$LAST"
JSON File Structure (automatically maintained):
{
"issue": 42,
"title": "Implement dark mode toggle",
"last_active": "2025-01-15T10:30:00Z"
}
Automatic Tracking:
clear-issue: Previous issue is saved automaticallyset-issue N while on another issue: Previous issue is saved automaticallyFallback - Search by User Avatar:
If last_active_issue.json doesn't exist (e.g., first session or file deleted), search GitHub:
# Get GitHub username
GITHUB_USER="${GITHUB_OWNER:-$(gh api user --jq .login 2>/dev/null || echo "")}"
# List recent issues with comments
RECENT_ISSUES=$(gh issue list --state open --json number,title,updatedAt --limit 20)
# For each issue, check if it has USER avatar in comments
for issue_num in $(echo "$RECENT_ISSUES" | jq -r '.[].number'); do
COMMENTS=$(gh issue view "$issue_num" --json comments --jq '.comments[].body')
if echo "$COMMENTS" | grep -q "avatars.githubusercontent.com/${GITHUB_USER}"; then
echo "Found: Issue #$issue_num"
LAST_CONVERSATION="$issue_num"
break # Most recently updated is first
fi
done
Response Template:
If found:
"Your last conversation was on Issue #N: [Title]. Would you like to resume? (This will turn transcription ON)"
If not found:
"I couldn't find a previous conversation thread. Would you like to start working on a specific issue?"
| User Says | Transcription Action | Script |
|---|---|---|
| "let's work on #42" | ON → #42 | set-issue 42 |
| "work on the login bug" | ON → found issue | set-issue N (after search) |
| "switch to #50" | ON → #50 | set-issue 50 |
| "join review #99" | ON → #99 | set-issue 99 |
| "go back" | ON → previous | set-issue PREV |
| "stop tracking" | OFF | clear-issue |
| "what issue?" | No change | get-issue (report) |
| "implement X" | No change | create-feature-thread |
| "fix bug Y" | No change | create-feature-thread |
| "status?" | No change | check-review-ready |
| "what were we working on?" | Report last | get-last-issue |
| "resume last issue" | ON → last found | resume |
| "continue where we left off" | ON → last found | resume |
When user describes issue by name, not number:
# Search GitHub
gh issue list --search "login" --json number,title --limit 5
Decision Tree:
You MUST use these notifications. They are not optional.
"[TRANSCRIPTION ACTIVE - Issue #N]
Transcription is now ACTIVE. Everything we discuss will be posted to Issue #N: [Title] on GitHub.
Say 'stop tracking' or 'go private' at any time to disable transcription."
"[SWITCHING TRANSCRIPTION]
Switching from Issue #OLD to Issue #NEW. Our conversation will now be posted to #NEW on GitHub.
Say 'go back' to return to #OLD."
"[TRANSCRIPTION OFF]
Transcription stopped. Our conversation is now private - nothing will be posted to GitHub."
"[TRANSCRIPTION ACTIVE - Issue #N]
Resuming session with transcription ACTIVE to Issue #N. Everything we discuss will be posted there.
Say 'stop tracking' to disable transcription."
"Created Issue #N for [feature]. Agents will handle it in background.
[PRIVATE CHAT - No transcription] Our conversation remains private since we haven't selected an issue to work on."
"Created Issue #N for [feature]. Agents will handle it in background.
[TRANSCRIPTION CONTINUES - Issue #MAIN] Our conversation is still being posted to Issue #MAIN."
"Issue #N ([feature]) is ready for review! Hera is conducting the code review.
Would you like to join? Warning: This will switch transcription to Issue #N."
| Script | Purpose | Changes Transcription? |
|---|---|---|
auto_transcribe.py set-issue N | Select issue | YES - turns ON to #N |
auto_transcribe.py get-issue | Check current | NO |
auto_transcribe.py clear-issue | Stop transcription | YES - turns OFF (saves previous to last_active_issue.json) |
auto_transcribe.py get-last-issue | Show last active issue | NO |
auto_transcribe.py last-issue-number | Get issue number only (for scripting) | NO |
auto_transcribe.py resume | Resume last active issue | YES - turns ON to last issue |
create_feature_thread.py | Create background thread | NO - main unchanged |
check_review_ready.py | Check background status | NO |
EVERY transcription state change → IMMEDIATE user notification
Before transcription turns ON:
"Transcription is now ACTIVE. Everything we discuss will be posted to Issue #N on GitHub."
Before transcription turns OFF:
"Transcription is now OFF. Our conversation is private."
Never change transcription state silently. The user must always know whether their words are being made public.
Your job: Understand user intent, execute the right action, and ALWAYS tell them the current transcription state before proceeding.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.