gsd-thread
Track work progress across multiple coding sessions.
Install
mkdir -p .claude/skills/gsd-thread && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12559" && unzip -o skill.zip -d .claude/skills/gsd-thread && rm skill.zipInstalls to .claude/skills/gsd-thread
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Manage persistent context threads for cross-session workKey capabilities
- →List all existing persistent context threads.
- →Resume an existing thread by loading its context into the current session.
- →Create a new thread with a given description.
- →Generate a slug from the thread description.
- →Add relevant context from the current conversation to a new thread.
- →Commit the newly created thread file.
How it works
The skill parses `{{GSD_ARGS}}` to determine if it should list, resume, or create a thread. It lists threads by reading `.planning/threads/`, resumes by `cat`ing the file, and creates by generating a slug, writing a new file, and committing it.
Inputs & outputs
When to use gsd-thread
- →Managing multi-session projects
- →Keeping conversation history
- →Tracking project context
About this skill
<codex_skill_adapter>
A. Skill Invocation
- This skill is invoked by mentioning
$gsd-thread. - Treat all user text after
$gsd-threadas{{GSD_ARGS}}. - If no arguments are present, treat
{{GSD_ARGS}}as empty.
B. AskUserQuestion → request_user_input Mapping
GSD workflows use AskUserQuestion (Claude Code syntax). Translate to Codex request_user_input:
Parameter mapping:
header→headerquestion→question- Options formatted as
"Label" — description→{label: "Label", description: "description"} - Generate
idfrom header: lowercase, replace spaces with underscores
Batched calls:
AskUserQuestion([q1, q2])→ singlerequest_user_inputwith multiple entries inquestions[]
Multi-select workaround:
- Codex has no
multiSelect. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.
Execute mode fallback:
- When
request_user_inputis rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.
C. Task() → spawn_agent Mapping
GSD workflows use Task(...) (Claude Code syntax). Translate to Codex collaboration tools:
Direct mapping:
Task(subagent_type="X", prompt="Y")→spawn_agent(agent_type="X", message="Y")Task(model="...")→ omit (Codex uses per-role config, not inline model selection)fork_context: falseby default — GSD agents load their own context via<files_to_read>blocks
Parallel fan-out:
- Spawn multiple agents → collect agent IDs →
wait(ids)for all to complete
Result parsing:
- Look for structured markers in agent output:
CHECKPOINT,PLAN COMPLETE,SUMMARY, etc. close_agent(id)after collecting results from each agent </codex_skill_adapter>
Parse {{GSD_ARGS}} to determine mode:
<mode_list> If no arguments or {{GSD_ARGS}} is empty:
List all threads:
ls .planning/threads/*.md 2>/dev/null
For each thread, read the first few lines to show title and status:
## Active Threads
| Thread | Status | Last Updated |
|--------|--------|-------------|
| fix-deploy-key-auth | OPEN | 2026-03-15 |
| pasta-tcp-timeout | RESOLVED | 2026-03-12 |
| perf-investigation | IN PROGRESS | 2026-03-17 |
If no threads exist, show:
No threads found. Create one with: /gsd-thread <description>
</mode_list>
<mode_resume> If {{GSD_ARGS}} matches an existing thread name (file exists):
Resume the thread — load its context into the current session:
cat ".planning/threads/${THREAD_NAME}.md"
Display the thread content and ask what the user wants to work on next.
Update the thread's status to IN PROGRESS if it was OPEN.
</mode_resume>
<mode_create> If {{GSD_ARGS}} is a new description (no matching thread file):
Create a new thread:
-
Generate slug from description:
SLUG=$(node "D:/Developer/Minecraft_bot/.codex/get-shit-done/bin/gsd-tools.cjs" generate-slug "{{GSD_ARGS}}" --raw) -
Create the threads directory if needed:
mkdir -p .planning/threads -
Write the thread file:
cat > ".planning/threads/${SLUG}.md" << 'EOF' # Thread: {description} ## Status: OPEN ## Goal {description} ## Context *Created from conversation on {today's date}.* ## References - *(add links, file paths, or issue numbers)* ## Next Steps - *(what the next session should do first)* EOF -
If there's relevant context in the current conversation (code snippets, error messages, investigation results), extract and add it to the Context section.
-
Commit:
node "D:/Developer/Minecraft_bot/.codex/get-shit-done/bin/gsd-tools.cjs" commit "docs: create thread — ${ARGUMENTS}" --files ".planning/threads/${SLUG}.md" -
Report:
## 🧵 Thread Created Thread: {slug} File: .planning/threads/{slug}.md Resume anytime with: /gsd-thread {slug}
</mode_create>
</process> <notes> - Threads are NOT phase-scoped — they exist independently of the roadmap - Lighter weight than /gsd-pause-work — no phase state, no plan context - The value is in Context and Next Steps — a cold-start session can pick up immediately - Threads can be promoted to phases or backlog items when they mature: /gsd-add-phase or /gsd-add-backlog with context from the thread - Thread files live in .planning/threads/ — no collision with phases or other GSD structures </notes>When not to use it
- →When the work is phase-scoped.
- →When the user wants to pause work with phase state and plan context.
- →When the user wants to add a phase or backlog item directly.
Limitations
- →Threads are not phase-scoped.
- →It is lighter weight than `/gsd-pause-work`.
- →It does not automatically promote threads to phases or backlog items.
How it compares
This skill provides a lightweight, cross-session knowledge store for work that spans multiple sessions but doesn't fit into a specific phase, offering more flexibility than rigid phase-based tracking.
Compared to similar skills
gsd-thread side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| gsd-thread (this skill) | 0 | 4mo | Review | Beginner |
| notion-meeting-intelligence | 6 | 6mo | No flags | Intermediate |
| resume-handoff | 3 | 6mo | No flags | Intermediate |
| meeting-briefing | 2 | 6mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by kindyakov
View all by kindyakov →You might also like
notion-meeting-intelligence
openai
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
resume-handoff
parcadei
Resume work from handoff document with context analysis and validation
meeting-briefing
anthropics
Prepare structured briefings for meetings with legal relevance and track resulting action items. Use when preparing for contract negotiations, board meetings, compliance reviews, or any meeting where legal context, background research, or action tracking is needed.
personal-assistant
ailabs-393
This skill should be used whenever users request personal assistance tasks such as schedule management, task tracking, reminder setting, habit monitoring, productivity advice, time management, or any query requiring personalized responses based on user preferences and context. On first use, collects comprehensive user information including schedule, working habits, preferences, goals, and routines. Maintains an intelligent database that automatically organizes and prioritizes information, keeping relevant data and discarding outdated context.
digital-brain
muratcankoylan
This skill should be used when the user asks to "write a post", "check my voice", "look up contact", "prepare for meeting", "weekly review", "track goals", or mentions personal brand, content creation, network management, or voice consistency.
meeting-sync
amanaiproduct
Sync new Granola meetings to local Knowledge folder. Use during morning planning, when user asks "what should I do today", or asks to review/sync meetings.