[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74DFHE5Y3JRS0DTYDFVTZ6B":3,"skill-same:01M74DFHE5Y3JRS0DTYDFVTZ6B":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M74DFHE5Y3JRS0DTYDFVTZ6B","gsd-thread",null,"Manage persistent context threads for cross-session work","tamarillo-ai\u002Ftheta","tamarillo-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264659913?v=4","01M732W8TW61PS979NJ2W4Z6XZ","tamarillo.ai","01M732W8VRBBGT4F0Q3B2HNGTQ",15,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcodex-cli\u002Fregression\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fskills\u002Fgsd-thread\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: \"gsd-thread\"\ndescription: \"Manage persistent context threads for cross-session work\"\nmetadata:\n  short-description: \"Manage persistent context threads for cross-session work\"\n---\n\n\u003Ccodex_skill_adapter>\n## A. Skill Invocation\n- This skill is invoked by mentioning `$gsd-thread`.\n- Treat all user text after `$gsd-thread` as `{{GSD_ARGS}}`.\n- If no arguments are present, treat `{{GSD_ARGS}}` as empty.\n\n## B. AskUserQuestion → request_user_input Mapping\nGSD workflows use `AskUserQuestion` (Claude Code syntax). Translate to Codex `request_user_input`:\n\nParameter mapping:\n- `header` → `header`\n- `question` → `question`\n- Options formatted as `\"Label\" — description` → `{label: \"Label\", description: \"description\"}`\n- Generate `id` from header: lowercase, replace spaces with underscores\n\nBatched calls:\n- `AskUserQuestion([q1, q2])` → single `request_user_input` with multiple entries in `questions[]`\n\nMulti-select workaround:\n- Codex has no `multiSelect`. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.\n\nExecute mode fallback:\n- When `request_user_input` is rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.\n\n## C. Task() → spawn_agent Mapping\nGSD workflows use `Task(...)` (Claude Code syntax). Translate to Codex collaboration tools:\n\nDirect mapping:\n- `Task(subagent_type=\"X\", prompt=\"Y\")` → `spawn_agent(agent_type=\"X\", message=\"Y\")`\n- `Task(model=\"...\")` → omit (Codex uses per-role config, not inline model selection)\n- `fork_context: false` by default — GSD agents load their own context via `\u003Cfiles_to_read>` blocks\n\nParallel fan-out:\n- Spawn multiple agents → collect agent IDs → `wait(ids)` for all to complete\n\nResult parsing:\n- Look for structured markers in agent output: `CHECKPOINT`, `PLAN COMPLETE`, `SUMMARY`, etc.\n- `close_agent(id)` after collecting results from each agent\n\u003C\u002Fcodex_skill_adapter>\n\n\u003Cobjective>\nCreate, list, or resume persistent context threads. Threads are lightweight\ncross-session knowledge stores for work that spans multiple sessions but\ndoesn't belong to any specific phase.\n\u003C\u002Fobjective>\n\n\u003Cprocess>\n\n**Parse {{GSD_ARGS}} to determine mode:**\n\n\u003Cmode_list>\n**If no arguments or {{GSD_ARGS}} is empty:**\n\nList all threads:\n```bash\nls .planning\u002Fthreads\u002F*.md 2>\u002Fdev\u002Fnull\n```\n\nFor each thread, read the first few lines to show title and status:\n```\n## Active Threads\n\n| Thread | Status | Last Updated |\n|--------|--------|-------------|\n| fix-deploy-key-auth | OPEN | 2026-03-15 |\n| pasta-tcp-timeout | RESOLVED | 2026-03-12 |\n| perf-investigation | IN PROGRESS | 2026-03-17 |\n```\n\nIf no threads exist, show:\n```\nNo threads found. Create one with: $gsd-thread \u003Cdescription>\n```\n\u003C\u002Fmode_list>\n\n\u003Cmode_resume>\n**If {{GSD_ARGS}} matches an existing thread name (file exists):**\n\nResume the thread — load its context into the current session:\n```bash\ncat \".planning\u002Fthreads\u002F${THREAD_NAME}.md\"\n```\n\nDisplay the thread content and ask what the user wants to work on next.\nUpdate the thread's status to `IN PROGRESS` if it was `OPEN`.\n\u003C\u002Fmode_resume>\n\n\u003Cmode_create>\n**If {{GSD_ARGS}} is a new description (no matching thread file):**\n\nCreate a new thread:\n\n1. Generate slug from description:\n   ```bash\n   SLUG=$(node \"\u002FUsers\u002Fdiegocaminor\u002FDocuments\u002Fproyectos\u002Fanyone-ai\u002Ffinal-project\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fget-shit-done\u002Fbin\u002Fgsd-tools.cjs\" generate-slug \"{{GSD_ARGS}}\")\n   ```\n\n2. Create the threads directory if needed:\n   ```bash\n   mkdir -p .planning\u002Fthreads\n   ```\n\n3. Write the thread file:\n   ```bash\n   cat > \".planning\u002Fthreads\u002F${SLUG}.md\" \u003C\u003C 'EOF'\n   # Thread: {description}\n\n   ## Status: OPEN\n\n   ## Goal\n\n   {description}\n\n   ## Context\n\n   *Created from conversation on {today's date}.*\n\n   ## References\n\n   - *(add links, file paths, or issue numbers)*\n\n   ## Next Steps\n\n   - *(what the next session should do first)*\n   EOF\n   ```\n\n4. If there's relevant context in the current conversation (code snippets,\n   error messages, investigation results), extract and add it to the Context\n   section.\n\n5. Commit:\n   ```bash\n   node \"\u002FUsers\u002Fdiegocaminor\u002FDocuments\u002Fproyectos\u002Fanyone-ai\u002Ffinal-project\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fget-shit-done\u002Fbin\u002Fgsd-tools.cjs\" commit \"docs: create thread — ${ARGUMENTS}\" --files \".planning\u002Fthreads\u002F${SLUG}.md\"\n   ```\n\n6. Report:\n   ```\n   ## 🧵 Thread Created\n\n   Thread: {slug}\n   File: .planning\u002Fthreads\u002F{slug}.md\n\n   Resume anytime with: $gsd-thread {slug}\n   ```\n\u003C\u002Fmode_create>\n\n\u003C\u002Fprocess>\n\n\u003Cnotes>\n- Threads are NOT phase-scoped — they exist independently of the roadmap\n- Lighter weight than $gsd-pause-work — no phase state, no plan context\n- The value is in Context and Next Steps — a cold-start session can pick up immediately\n- Threads can be promoted to phases or backlog items when they mature:\n  $gsd-add-phase or $gsd-add-backlog with context from the thread\n- Thread files live in .planning\u002Fthreads\u002F — no collision with phases or other GSD structures\n\u003C\u002Fnotes>\n","\u003Ccodex_skill_adapter>\n## A. Skill Invocation\n- This skill is invoked by mentioning `$gsd-thread`.\n- Treat all user text after `$gsd-thread` as `{{GSD_ARGS}}`.\n- If no arguments are present, treat `{{GSD_ARGS}}` as empty.\n\n## B. AskUserQuestion → request_user_input Mapping\nGSD workflows use `AskUserQuestion` (Claude Code syntax). Translate to Codex `request_user_input`:\n\nParameter mapping:\n- `header` → `header`\n- `question` → `question`\n- Options formatted as `\"Label\" — description` → `{label: \"Label\", description: \"description\"}`\n- Generate `id` from header: lowercase, replace spaces with underscores\n\nBatched calls:\n- `AskUserQuestion([q1, q2])` → single `request_user_input` with multiple entries in `questions[]`\n\nMulti-select workaround:\n- Codex has no `multiSelect`. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.\n\nExecute mode fallback:\n- When `request_user_input` is rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.\n\n## C. Task() → spawn_agent Mapping\nGSD workflows use `Task(...)` (Claude Code syntax). Translate to Codex collaboration tools:\n\nDirect mapping:\n- `Task(subagent_type=\"X\", prompt=\"Y\")` → `spawn_agent(agent_type=\"X\", message=\"Y\")`\n- `Task(model=\"...\")` → omit (Codex uses per-role config, not inline model selection)\n- `fork_context: false` by default — GSD agents load their own context via `\u003Cfiles_to_read>` blocks\n\nParallel fan-out:\n- Spawn multiple agents → collect agent IDs → `wait(ids)` for all to complete\n\nResult parsing:\n- Look for structured markers in agent output: `CHECKPOINT`, `PLAN COMPLETE`, `SUMMARY`, etc.\n- `close_agent(id)` after collecting results from each agent\n\u003C\u002Fcodex_skill_adapter>\n\n\u003Cobjective>\nCreate, list, or resume persistent context threads. Threads are lightweight\ncross-session knowledge stores for work that spans multiple sessions but\ndoesn't belong to any specific phase.\n\u003C\u002Fobjective>\n\n\u003Cprocess>\n\n**Parse {{GSD_ARGS}} to determine mode:**\n\n\u003Cmode_list>\n**If no arguments or {{GSD_ARGS}} is empty:**\n\nList all threads:\n```bash\nls .planning\u002Fthreads\u002F*.md 2>\u002Fdev\u002Fnull\n```\n\nFor each thread, read the first few lines to show title and status:\n```\n## Active Threads\n\n| Thread | Status | Last Updated |\n|--------|--------|-------------|\n| fix-deploy-key-auth | OPEN | 2026-03-15 |\n| pasta-tcp-timeout | RESOLVED | 2026-03-12 |\n| perf-investigation | IN PROGRESS | 2026-03-17 |\n```\n\nIf no threads exist, show:\n```\nNo threads found. Create one with: $gsd-thread \u003Cdescription>\n```\n\u003C\u002Fmode_list>\n\n\u003Cmode_resume>\n**If {{GSD_ARGS}} matches an existing thread name (file exists):**\n\nResume the thread — load its context into the current session:\n```bash\ncat \".planning\u002Fthreads\u002F${THREAD_NAME}.md\"\n```\n\nDisplay the thread content and ask what the user wants to work on next.\nUpdate the thread's status to `IN PROGRESS` if it was `OPEN`.\n\u003C\u002Fmode_resume>\n\n\u003Cmode_create>\n**If {{GSD_ARGS}} is a new description (no matching thread file):**\n\nCreate a new thread:\n\n1. Generate slug from description:\n   ```bash\n   SLUG=$(node \"\u002FUsers\u002Fdiegocaminor\u002FDocuments\u002Fproyectos\u002Fanyone-ai\u002Ffinal-project\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fget-shit-done\u002Fbin\u002Fgsd-tools.cjs\" generate-slug \"{{GSD_ARGS}}\")\n   ```\n\n2. Create the threads directory if needed:\n   ```bash\n   mkdir -p .planning\u002Fthreads\n   ```\n\n3. Write the thread file:\n   ```bash\n   cat > \".planning\u002Fthreads\u002F${SLUG}.md\" \u003C\u003C 'EOF'\n   # Thread: {description}\n\n   ## Status: OPEN\n\n   ## Goal\n\n   {description}\n\n   ## Context\n\n   *Created from conversation on {today's date}.*\n\n   ## References\n\n   - *(add links, file paths, or issue numbers)*\n\n   ## Next Steps\n\n   - *(what the next session should do first)*\n   EOF\n   ```\n\n4. If there's relevant context in the current conversation (code snippets,\n   error messages, investigation results), extract and add it to the Context\n   section.\n\n5. Commit:\n   ```bash\n   node \"\u002FUsers\u002Fdiegocaminor\u002FDocuments\u002Fproyectos\u002Fanyone-ai\u002Ffinal-project\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fget-shit-done\u002Fbin\u002Fgsd-tools.cjs\" commit \"docs: create thread — ${ARGUMENTS}\" --files \".planning\u002Fthreads\u002F${SLUG}.md\"\n   ```\n\n6. Report:\n   ```\n   ## 🧵 Thread Created\n\n   Thread: {slug}\n   File: .planning\u002Fthreads\u002F{slug}.md\n\n   Resume anytime with: $gsd-thread {slug}\n   ```\n\u003C\u002Fmode_create>\n\n\u003C\u002Fprocess>\n\n\u003Cnotes>\n- Threads are NOT phase-scoped — they exist independently of the roadmap\n- Lighter weight than $gsd-pause-work — no phase state, no plan context\n- The value is in Context and Next Steps — a cold-start session can pick up immediately\n- Threads can be promoted to phases or backlog items when they mature:\n  $gsd-add-phase or $gsd-add-backlog with context from the thread\n- Thread files live in .planning\u002Fthreads\u002F — no collision with phases or other GSD structures\n\u003C\u002Fnotes>\n",{"name":5,"metadata":24,"description":7},{"short-description":7},"main","08c084f718b2b842cd53622ce0b1a1fb2888ccef","test\u002Fcast-fixtures\u002Fcodex-cli\u002Fregression\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fskills\u002Fgsd-thread",1,"https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai","2026-07-15 23:48:12",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add tamarillo-ai\u002Ftheta --skill gsd-thread",{"tool":38,"command":39},"bunx","bunx skills add tamarillo-ai\u002Ftheta --skill gsd-thread",{"tool":41,"command":42},"pnpm","pnpm dlx skills add tamarillo-ai\u002Ftheta --skill gsd-thread","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcodex-cli\u002Fregression\u002Fanyone-ai-interviewer-frontend\u002F.codex\u002Fskills\u002Fgsd-thread\u002FSKILL.md",true,[],[47,54,61,69,76,83],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M74FCAJ0RRFRJRQES26329E7","deploy-app","Deploy the application to staging or production environments.","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcursor\u002Fskills\u002Fbasic\u002F.cursor\u002Fskills\u002Fdeploy-app\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M74FC8GPJGCS0KTGKS1CJZZS","deploy","Deploy the application to environments.","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcursor\u002Fcombined\u002Ffull-config\u002F.cursor\u002Fskills\u002Fdeploy\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":65,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":19},"01M74FC5RT3VTNZEK1F7NX5380","building-native-ui","Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.","MIT","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcopilot\u002Fskills\u002Fwith-references\u002F.github\u002Fskills\u002Fbuilding-native-ui\u002FSKILL.md",[],[],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":19},"01M74FC1ZGP5R44HPGWWSW6P3B","create-section","Use when creating a new section for the AI Workshop presentation. Guides through title slide setup, layout choices, and content gathering. Activates when user wants to add a new topic section to the slideshow.","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcopilot\u002Fskills\u002Fbasic\u002F.github\u002Fskills\u002Fcreate-section\u002FSKILL.md",[],[],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":19},"01M74FBZXSZ7GVP0HCGNR1BVNH","ship-checker","Run a full pre-ship review for this repo. Use when asked if a change is ready to deploy, publish, or ship.","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcopilot\u002Fcombined\u002Feverything\u002F.github\u002Fskills\u002Fship-checker\u002FSKILL.md",[],[],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":19},"01M74FBY4N2E3ZERWBRM4S3DE6","lint-check","Run repository linters and report failures.","https:\u002F\u002Fgithub.com\u002Ftamarillo-ai\u002Ftheta\u002Fblob\u002Fmain\u002Ftest\u002Fcast-fixtures\u002Fcodex-cli\u002Fskills\u002Fagents-path\u002F.agents\u002Fskills\u002Flint-check\u002FSKILL.md",[],[]]