xiaohongshu
xiaohongshu
ghe-thread-manager
Use this skill when the user expresses ANY intent related to issue/thread management: - Switching issues: "let's work on X", "switch to #Y", "go to the auth issue" - Checking status: "what are we working on?", "current issue?", "status?" - Background work: "what's in background?", "any features ...
Full skill instructions
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.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience