[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N0FY7SDTMKA4F87K6NQNVE":3,"skill-same:01M6N0FY7SDTMKA4F87K6NQNVE":77},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6N0FY7SDTMKA4F87K6NQNVE","ask-user",null,"Reusable pattern for presenting the user with explicit choices and gating\nexecution until they respond. Used by other skills when a decision point\nrequires human input before proceeding. Platform-agnostic — works on\nTelegram (inline buttons), Discord, CLI, or any agent with a message tool.","garrytan\u002Fgbrain","garrytan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19957?v=4","01M6DJCCDDG53MTYYRTXAXFG17","Garry Tan","01M6MZQZCEN3RRMD33E1X9ZZR9",32847,"MIT","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fask-user\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"ask","user","ask user","human","buttons","when","point","gating","inline","for","respond","input","present","platform","cli","pattern","options","message","telegram","choice","decision","tool","discord","2026-11-10 10:12:30",false,"---\nname: ask-user\nversion: 1.0.0\ndescription: |\n  Reusable pattern for presenting the user with explicit choices and gating\n  execution until they respond. Used by other skills when a decision point\n  requires human input before proceeding. Platform-agnostic — works on\n  Telegram (inline buttons), Discord, CLI, or any agent with a message tool.\ntriggers:\n  - \"present options\"\n  - \"ask before proceeding\"\n  - \"choice gate\"\n  - \"user decision\"\n---\n\n# Ask User — Choice Gate Pattern\n\n## Contract\n\n- Present 2-4 options (no more — decision paralysis kicks in past 4).\n- Always include an escape hatch (Skip, Cancel, or \"none of these\").\n- Stop the turn immediately after presenting choices. No follow-up tool calls,\n  no preemptive action, no default-and-proceed.\n- The user's response triggers the next turn. Acknowledge briefly, then branch.\n- One question per message — never stack multiple choice gates.\n- Self-explanatory option labels: action verb plus brief qualifier, not \"Option 1\".\n\n## What This Is\n\nA **formalized pattern** for presenting users with 2-4 options and **stopping\nexecution** until they respond. This is the canonical way to gate on user input\nin any GBrain-powered agent.\n\nThis is NOT a traditional async\u002Fawait. In an LLM agent, \"gating\" means:\n1. Present the choices (buttons or numbered options)\n2. Explicitly stop the current turn (do not proceed)\n3. The user's response triggers the next turn\n4. Read the response and branch accordingly\n\n## When To Use\n\n- Ambiguous requests with multiple valid interpretations\n- Destructive operations (bulk deletes, overwrites)\n- Filing\u002Frouting decisions (\"where should this go?\")\n- Priority triage (\"which should I do first?\")\n- Cold-start phase gates (\"ready for the next import source?\")\n- Any fork where the wrong default wastes significant work\n\n## When NOT To Use\n\n- Clear, unambiguous instructions → just do it\n- Low-stakes decisions → pick the best option and mention it\n- Time-critical operations where delay costs more than a wrong choice\n- When the user has already expressed a preference\n\n## How To Present Choices\n\n### Platform-agnostic format (works everywhere)\n\nPresent choices as a clear question with numbered or labeled options:\n\n```\n? **How should I handle this?**\n\n[context about the decision — 1-3 lines max]\n\n1. **Option A** — short description\n2. **Option B** — short description\n3. **Option C** — short description\n4. **Skip** — do nothing for now\n```\n\n### With inline buttons (Telegram, Discord, Slack)\n\nIf the platform supports interactive buttons, use them:\n\n```json\n{\n  \"message\": \"? **How should I handle this?**\\n\\n\u003Ccontext>\",\n  \"buttons\": [\n    { \"label\": \"Option A — description\", \"value\": \"option_a\" },\n    { \"label\": \"Option B — description\", \"value\": \"option_b\" },\n    { \"label\": \"Skip\", \"value\": \"skip\" }\n  ]\n}\n```\n\n### With the `clarify` tool (OpenClaw agents)\n\nSome OpenClaw agents have a built-in `clarify` tool that presents choices natively:\n\n```\nclarify(\n  question: \"How should I handle this?\",\n  choices: [\n    \"Option A — description\",\n    \"Option B — description\",\n    \"Option C — description\",\n    \"Skip for now\"\n  ]\n)\n```\n\n## Constraints\n\n- **2-4 options max.** More than 4 creates decision paralysis.\n- **Labels must be self-explanatory.** The user shouldn't need to re-read context.\n- **Always include an escape hatch.** At minimum: \"Skip\" or \"Cancel\" as the last option.\n- **One question per message.** Never stack multiple choice gates.\n\n## How To Gate (CRITICAL)\n\nAfter presenting choices, **you MUST stop your turn.** Do not:\n- ❌ Continue with \"while you decide, I'll start on...\"\n- ❌ Pick a default and proceed\n- ❌ Send follow-up messages before the user responds\n- ❌ Make assumptions about which option they'll pick\n\nInstead:\n- ✅ End your message with a brief note that you're waiting\n- ✅ Stop. Full stop. No more tool calls.\n\n## How To Handle The Response\n\nWhen the user responds:\n\n1. **Read the response** — button click, number, or text\n2. **Acknowledge briefly** — \"Got it, going with Option A.\"\n3. **Branch and execute** the chosen path\n4. If unclear, ask again\n\n### Handling text responses\n\nUsers sometimes type instead of clicking. Handle gracefully:\n- \"the first one\" \u002F \"A\" \u002F \"1\" → map to first option\n- \"merge\" → fuzzy match against option labels\u002Fvalues\n- \"actually, none of those\" → present alternatives or ask what they want\n- Unrelated message → the user moved on; drop the gate\n\n## Formatting Guidelines\n\n### Question line emoji prefix\n\nSignal the decision type:\n- ? Routing\u002Ffiling decisions\n- ⚠️ Destructive\u002Frisky operations\n- ? Priority\u002Ftriage decisions\n- ? Creative\u002Fstrategic forks\n- ? Workflow\u002Fprocess choices\n- ? Credential\u002Fsecurity decisions\n\n### Context block\n\n1-3 lines maximum. The user should understand the decision in under 5 seconds.\n\n### Button\u002Foption labels\n\nFormat: `Action verb — brief qualifier`\n- ✅ \"Merge — combine with existing page\"\n- ✅ \"Create new — separate meeting page\"\n- ❌ \"Option 1\"\n- ❌ \"Click here to merge the content into the existing brain page\"\n\n## Examples\n\n### Cold-start phase gate\n```\n? **Phase 2: Google Contacts**\n\nI can import your Google Contacts to seed the people\u002F directory.\nThis creates a brain page for each real contact (~200 pages).\n\n1. **Import via ClawVisor** — secure credential gateway\n2. **Import via direct OAuth** — simpler, agent holds tokens\n3. **Import from Google Takeout export** — offline, from file\n4. **Skip** — move to the next phase\n```\n\n### Filing decision\n```\n? **Where should this go?**\n\nMeeting notes from call with Jane Smith. She already has a page at\npeople\u002Fjane-smith.md and there's a deal page at deals\u002Facme-corp.md.\n\n1. **Merge into Jane's page** — add to her timeline\n2. **Add to Acme deal page** — this was primarily a deal discussion\n3. **New meeting page** — standalone at meetings\u002F2026-01-15-jane-acme.md\n4. **Skip** — don't file this\n```\n\n### Destructive operation\n```\n⚠️ **About to delete 847 stale cache files (2.3 GB)**\n\nThese haven't been accessed in 90+ days. They can be re-fetched\nbut that takes ~4 hours.\n\n1. **Delete them** — free up space now\n2. **Archive first** — upload to cloud storage, then delete\n3. **Keep them** — no changes\n4. **Show me the list** — let me review before deciding\n```\n\n## Integration With Other Skills\n\nThis pattern is used by:\n- **cold-start** — phase gates for each import source\n- **ingest** — routing decisions for ambiguous content\n- **enrich** — merge vs create decisions for entity pages\n- **brain-ops** — filing location decisions\n- **meeting-ingestion** — where to file meeting notes\n- **archive-crawler** — scan vs full ingestion gate\n\nWhen building a new skill that needs user input at a decision point,\nreference this pattern rather than inventing a new one.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- A gbrain call exited 3 (`confirmation_required`) or its `fix.next` is `ask_user`: this skill is the gate. Relay the `[SHOW USER]` block or `user_message` verbatim as the choice, then stop until the user answers.\n- The user answered \"no\" or did not answer: report the step as skipped. Never pass `--yes` or `--max-usd` on their behalf to move on.\n\n## Anti-Patterns\n\n- **Continuing the turn after presenting choices.** \"While you decide, I'll start on...\"\n  defeats the gate. Stop. Wait. The whole point is that the user controls what happens next.\n- **Picking a default and proceeding silently.** If the question matters enough to ask,\n  it matters enough to wait. Silent defaults erode trust the next time you do ask.\n- **More than 4 options.** Decision paralysis is real. Group, summarize, or split into\n  staged questions instead.\n- **No escape hatch.** Every choice gate must let the user decline. \"None of these\"\n  \u002F \"Skip\" \u002F \"Cancel\" is mandatory.\n- **Stacking multiple choice gates in one message.** The user can only answer one\n  question per turn. Multi-question gates either get half-answered or dropped entirely.\n- **Cryptic option labels.** \"Option 1\" forces re-reading the context. \"Merge into\n  existing page\" is self-explanatory.\n- **Asking about low-stakes decisions.** If the wrong answer costs nothing, just pick\n  the best option and mention it. Reserve gates for forks where rework is expensive.\n\n## Output Format\n\nThe skill's \"output\" is the choice-gate message itself, structured as:\n\n```\n{emoji-prefix} **{question}**\n\n{1-3 lines of context}\n\n1. **{Option A label}** — {short qualifier}\n2. **{Option B label}** — {short qualifier}\n3. **{Skip \u002F Cancel}** — {what skipping means}\n```\n\nAfter emitting this, the skill stops the turn. No further tool calls, no\npreemptive action, no follow-up message until the user responds. The\nuser's response triggers the next turn, where the calling skill branches\non the chosen option.\n","# Ask User — Choice Gate Pattern\n\n## Contract\n\n- Present 2-4 options (no more — decision paralysis kicks in past 4).\n- Always include an escape hatch (Skip, Cancel, or \"none of these\").\n- Stop the turn immediately after presenting choices. No follow-up tool calls,\n  no preemptive action, no default-and-proceed.\n- The user's response triggers the next turn. Acknowledge briefly, then branch.\n- One question per message — never stack multiple choice gates.\n- Self-explanatory option labels: action verb plus brief qualifier, not \"Option 1\".\n\n## What This Is\n\nA **formalized pattern** for presenting users with 2-4 options and **stopping\nexecution** until they respond. This is the canonical way to gate on user input\nin any GBrain-powered agent.\n\nThis is NOT a traditional async\u002Fawait. In an LLM agent, \"gating\" means:\n1. Present the choices (buttons or numbered options)\n2. Explicitly stop the current turn (do not proceed)\n3. The user's response triggers the next turn\n4. Read the response and branch accordingly\n\n## When To Use\n\n- Ambiguous requests with multiple valid interpretations\n- Destructive operations (bulk deletes, overwrites)\n- Filing\u002Frouting decisions (\"where should this go?\")\n- Priority triage (\"which should I do first?\")\n- Cold-start phase gates (\"ready for the next import source?\")\n- Any fork where the wrong default wastes significant work\n\n## When NOT To Use\n\n- Clear, unambiguous instructions → just do it\n- Low-stakes decisions → pick the best option and mention it\n- Time-critical operations where delay costs more than a wrong choice\n- When the user has already expressed a preference\n\n## How To Present Choices\n\n### Platform-agnostic format (works everywhere)\n\nPresent choices as a clear question with numbered or labeled options:\n\n```\n? **How should I handle this?**\n\n[context about the decision — 1-3 lines max]\n\n1. **Option A** — short description\n2. **Option B** — short description\n3. **Option C** — short description\n4. **Skip** — do nothing for now\n```\n\n### With inline buttons (Telegram, Discord, Slack)\n\nIf the platform supports interactive buttons, use them:\n\n```json\n{\n  \"message\": \"? **How should I handle this?**\\n\\n\u003Ccontext>\",\n  \"buttons\": [\n    { \"label\": \"Option A — description\", \"value\": \"option_a\" },\n    { \"label\": \"Option B — description\", \"value\": \"option_b\" },\n    { \"label\": \"Skip\", \"value\": \"skip\" }\n  ]\n}\n```\n\n### With the `clarify` tool (OpenClaw agents)\n\nSome OpenClaw agents have a built-in `clarify` tool that presents choices natively:\n\n```\nclarify(\n  question: \"How should I handle this?\",\n  choices: [\n    \"Option A — description\",\n    \"Option B — description\",\n    \"Option C — description\",\n    \"Skip for now\"\n  ]\n)\n```\n\n## Constraints\n\n- **2-4 options max.** More than 4 creates decision paralysis.\n- **Labels must be self-explanatory.** The user shouldn't need to re-read context.\n- **Always include an escape hatch.** At minimum: \"Skip\" or \"Cancel\" as the last option.\n- **One question per message.** Never stack multiple choice gates.\n\n## How To Gate (CRITICAL)\n\nAfter presenting choices, **you MUST stop your turn.** Do not:\n- ❌ Continue with \"while you decide, I'll start on...\"\n- ❌ Pick a default and proceed\n- ❌ Send follow-up messages before the user responds\n- ❌ Make assumptions about which option they'll pick\n\nInstead:\n- ✅ End your message with a brief note that you're waiting\n- ✅ Stop. Full stop. No more tool calls.\n\n## How To Handle The Response\n\nWhen the user responds:\n\n1. **Read the response** — button click, number, or text\n2. **Acknowledge briefly** — \"Got it, going with Option A.\"\n3. **Branch and execute** the chosen path\n4. If unclear, ask again\n\n### Handling text responses\n\nUsers sometimes type instead of clicking. Handle gracefully:\n- \"the first one\" \u002F \"A\" \u002F \"1\" → map to first option\n- \"merge\" → fuzzy match against option labels\u002Fvalues\n- \"actually, none of those\" → present alternatives or ask what they want\n- Unrelated message → the user moved on; drop the gate\n\n## Formatting Guidelines\n\n### Question line emoji prefix\n\nSignal the decision type:\n- ? Routing\u002Ffiling decisions\n- ⚠️ Destructive\u002Frisky operations\n- ? Priority\u002Ftriage decisions\n- ? Creative\u002Fstrategic forks\n- ? Workflow\u002Fprocess choices\n- ? Credential\u002Fsecurity decisions\n\n### Context block\n\n1-3 lines maximum. The user should understand the decision in under 5 seconds.\n\n### Button\u002Foption labels\n\nFormat: `Action verb — brief qualifier`\n- ✅ \"Merge — combine with existing page\"\n- ✅ \"Create new — separate meeting page\"\n- ❌ \"Option 1\"\n- ❌ \"Click here to merge the content into the existing brain page\"\n\n## Examples\n\n### Cold-start phase gate\n```\n? **Phase 2: Google Contacts**\n\nI can import your Google Contacts to seed the people\u002F directory.\nThis creates a brain page for each real contact (~200 pages).\n\n1. **Import via ClawVisor** — secure credential gateway\n2. **Import via direct OAuth** — simpler, agent holds tokens\n3. **Import from Google Takeout export** — offline, from file\n4. **Skip** — move to the next phase\n```\n\n### Filing decision\n```\n? **Where should this go?**\n\nMeeting notes from call with Jane Smith. She already has a page at\npeople\u002Fjane-smith.md and there's a deal page at deals\u002Facme-corp.md.\n\n1. **Merge into Jane's page** — add to her timeline\n2. **Add to Acme deal page** — this was primarily a deal discussion\n3. **New meeting page** — standalone at meetings\u002F2026-01-15-jane-acme.md\n4. **Skip** — don't file this\n```\n\n### Destructive operation\n```\n⚠️ **About to delete 847 stale cache files (2.3 GB)**\n\nThese haven't been accessed in 90+ days. They can be re-fetched\nbut that takes ~4 hours.\n\n1. **Delete them** — free up space now\n2. **Archive first** — upload to cloud storage, then delete\n3. **Keep them** — no changes\n4. **Show me the list** — let me review before deciding\n```\n\n## Integration With Other Skills\n\nThis pattern is used by:\n- **cold-start** — phase gates for each import source\n- **ingest** — routing decisions for ambiguous content\n- **enrich** — merge vs create decisions for entity pages\n- **brain-ops** — filing location decisions\n- **meeting-ingestion** — where to file meeting notes\n- **archive-crawler** — scan vs full ingestion gate\n\nWhen building a new skill that needs user input at a decision point,\nreference this pattern rather than inventing a new one.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- A gbrain call exited 3 (`confirmation_required`) or its `fix.next` is `ask_user`: this skill is the gate. Relay the `[SHOW USER]` block or `user_message` verbatim as the choice, then stop until the user answers.\n- The user answered \"no\" or did not answer: report the step as skipped. Never pass `--yes` or `--max-usd` on their behalf to move on.\n\n## Anti-Patterns\n\n- **Continuing the turn after presenting choices.** \"While you decide, I'll start on...\"\n  defeats the gate. Stop. Wait. The whole point is that the user controls what happens next.\n- **Picking a default and proceeding silently.** If the question matters enough to ask,\n  it matters enough to wait. Silent defaults erode trust the next time you do ask.\n- **More than 4 options.** Decision paralysis is real. Group, summarize, or split into\n  staged questions instead.\n- **No escape hatch.** Every choice gate must let the user decline. \"None of these\"\n  \u002F \"Skip\" \u002F \"Cancel\" is mandatory.\n- **Stacking multiple choice gates in one message.** The user can only answer one\n  question per turn. Multi-question gates either get half-answered or dropped entirely.\n- **Cryptic option labels.** \"Option 1\" forces re-reading the context. \"Merge into\n  existing page\" is self-explanatory.\n- **Asking about low-stakes decisions.** If the wrong answer costs nothing, just pick\n  the best option and mention it. Reserve gates for forks where rework is expensive.\n\n## Output Format\n\nThe skill's \"output\" is the choice-gate message itself, structured as:\n\n```\n{emoji-prefix} **{question}**\n\n{1-3 lines of context}\n\n1. **{Option A label}** — {short qualifier}\n2. **{Option B label}** — {short qualifier}\n3. **{Skip \u002F Cancel}** — {what skipping means}\n```\n\nAfter emitting this, the skill stops the turn. No further tool calls, no\npreemptive action, no follow-up message until the user responds. The\nuser's response triggers the next turn, where the calling skill branches\non the chosen option.\n",{"name":5,"version":47,"triggers":48,"description":53},"1.0.0",[49,50,51,52],"present options","ask before proceeding","choice gate","user decision","Reusable pattern for presenting the user with explicit choices and gating\nexecution until they respond. Used by other skills when a decision point\nrequires human input before proceeding. Platform-agnostic — works on\nTelegram (inline buttons), Discord, CLI, or any agent with a message tool.\n","master","074ec301549ded4930f04d2c3b22d709a6c095cc","skills\u002Fask-user",4902,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fgarrytan","https:\u002F\u002Fblog.garrytan.com","Writes software, dreams. ","2026-11-14 04:11:30",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add garrytan\u002Fgbrain --skill ask-user",{"tool":69,"command":70},"bunx","bunx skills add garrytan\u002Fgbrain --skill ask-user",{"tool":72,"command":73},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill ask-user","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fask-user\u002FSKILL.md",true,[],[78,91,97,120,146,160],{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":42},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[84,85,86,87,88,89,90],"query helper","helper","query","search","page","find","false",{"skillNo":92,"name":93,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":42},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[93],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":42},"01M6N105E88C5K2H03H0CC79G1","brain-ops","Read, enrich, and write brain pages with source attribution.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbrain-ops\u002FSKILL.md",[],[104,105,106,107,108,88,109,110,111,112,86,113,114,115,116,117,118,119,87],"brain ops","brain","ops","true","attribution","read","write","up","look","pages","people","with","enrich","web","path","source",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":131,"publishedAt":42},"01M6N102GRMF22TVCNT6RK5MRD","meeting-prep","Build a briefing before you meet someone, from their recent threads, open loops and what they care about.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fmeeting-prep\u002FSKILL.md",[126],{"categoryNo":127,"categoryName":128,"taxonomyType":129,"taxonomyTypeDesc":130},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[132,133,134,135,136,87,137,138,139,86,90,140,141,142,143,144,28,145],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","Meet",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":42},"01M6N1005QK7REHX5KGMNR5PF0","inbox-zero","Triage the inbox into replies, delegations and archives.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Finbox-zero\u002FSKILL.md",[],[153,154,155,87,156,90,157,158,159],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":42},"01M6N0ZXQ8RRRW71PNV61T57GP","deal-memo","Draft an investment memo from the deal pages and the founder history already in the brain.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fdeal-memo\u002FSKILL.md",[],[167,168,169,113,105,170,171,110,172,107,87,173],"deal memo","deal","memo","draft","investment","history","founder"]