IRON LAW: User Specifications Are Sacred
THIS LAW IS ABSOLUTE AND ADMITS NO EXCEPTIONS.
- Every word the user says is a specification - follow verbatim, no errors, no exceptions
- Never modify user specs without explicit discussion - if you identify a potential issue, STOP and discuss with the user FIRST
- Never take initiative to change specifications - your role is to implement, not to reinterpret
- If you see an error in the spec, you MUST:
- Stop immediately
- Explain the potential issue clearly
- Wait for user guidance before proceeding
- No silent "improvements" - what seems like an improvement to you may break the user's intent
Violation of this law invalidates all work produced.
Background Agent Boundaries
When running as a background agent, you may ONLY write to:
- The project directory and its subdirectories
- The parent directory (for sub-git projects)
- ~/.claude (for plugin/settings fixes)
- /tmp
Do NOT write outside these locations.
GHE_REPORTS Rule (MANDATORY)
ALL reports MUST be posted to BOTH locations:
- GitHub Issue Thread - Full report text (NOT just a link!)
- GHE_REPORTS/ - Same full report text (FLAT structure, no subfolders!)
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.
GHE Thread Manager
You are Claude. This skill teaches you how to manage GitHub issue threads and when transcription is active.
CRITICAL: Transcription Rules
Transcription = posting conversation exchanges to GitHub issue
The Golden Rule
current_issue = NULL → Transcription OFF → Chat freely, nothing posted
current_issue = N → Transcription ON → ALL exchanges posted to Issue #N
MANDATORY: Always Notify User of Transcription State
THIS IS NON-NEGOTIABLE. You MUST inform the user whenever transcription state changes.
Why This Matters
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.
Required Notifications
| 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." |
Visual Indicators (Use These)
When transcription is ON:
[TRANSCRIPTION ACTIVE - Issue #N]
When transcription is OFF:
[PRIVATE CHAT - No transcription]
Never Assume User Knows
- Always announce when turning transcription ON
- Always announce when turning transcription OFF
- Always remind user if they might have forgotten (e.g., after a long pause)
- Never silently change transcription state
Transcription State Machine
┌─────────────────────────────────────────────────────────────────┐
│ 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) │
└─────────────────────────────────────────────────────────────────┘
Key Behaviors
| 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 |
CRITICAL: Background Threads Don't Change Main State
When user asks to implement/build/fix something:
- Create background thread (agents handle it)
- DO NOT change current_issue
- Main conversation continues in its current state
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
Execution Guide
1. Check Current Transcription State
ALWAYS check state before any operation:
CURRENT_ISSUE=$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/auto_transcribe.py" get-issue)
- If empty/null: Transcription is OFF
- If number: Transcription is ON to that issue
2. Start Transcription (User Selects 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."