[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N0PC9QASX6J6RK5KBQDPRY":3,"skill-same:01M6N0PC9QASX6J6RK5KBQDPRY":87},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":65,"commitSha":66,"skillDirectory":67,"forksCount":68,"repositoryHtmlUrl":69,"repositoryHomepageUrl":6,"ownerHtmlUrl":70,"ownerBlogUrl":71,"ownerDescription":72,"updatedAt":73,"install":74,"resources":86},"01M6N0PC9QASX6J6RK5KBQDPRY","idea-ingest",null,"Ingest links, articles, tweets, and ideas into the brain. Fetch content, save\nto brain with analysis, credit the author (people page only when they pass the\nnotability gate), and cross-link. Use when the user shares a link or says\n\"read this\", \"save this\", \"think about this\".","garrytan\u002Fgbrain","garrytan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19957?v=4","01M6DJCCDDG53MTYYRTXAXFG17","Garry Tan","01M6MZQZCEN3RRMD33E1X9ZZR9",32683,"MIT","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fidea-ingest\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"idea ingest","ingest","idea","upload","when","author","true","links","URL","people","sources","get","ideas","search","query","only","use","fetch","page","analysis","file","2026-11-10 10:12:30",false,"---\nname: idea-ingest\nversion: 1.2.0\nupstream: idea-ingest@fc834ee\ndescription: |\n  Ingest links, articles, tweets, and ideas into the brain. Fetch content, save\n  to brain with analysis, credit the author (people page only when they pass the\n  notability gate), and cross-link. Use when the user shares a link or says\n  \"read this\", \"save this\", \"think about this\".\ntriggers:\n  - shares a link or URL\n  - \"read this\"\n  - \"save this\"\n  - \"think about this\"\n  - \"put this in brain\"\ntools:\n  - search\n  - query\n  - get_page\n  - put_page\n  - add_link\n  - add_timeline_entry\n  - file_upload\nmutating: true\nwrites_pages: true\nwrites_to:\n  - people\u002F\n  - concepts\u002F\n  - sources\u002F\n---\n\n# Idea Ingest Skill\n\n> **Filing rule:** Read `skills\u002F_brain-filing-rules.md` before creating any new page.\n\n## Contract\n\nThis skill guarantees:\n- Every ingested item has a brain page with genuine analysis (not just a summary)\n- The author is always credited: back-linked from an existing `people\u002F` page (timeline update),\n  or inline on the ingested page (`**Author:** {Author}, {role}`) when no page exists. A NEW\n  `people\u002F` page is created only when the author passes the notability gate AND you have at\n  least two independent, durable facts about them beyond this one item — never a stub\n  (`skills\u002F_brain-filing-rules.md` §Notability Gate)\n- Cross-links created bidirectionally (source ↔ author, source ↔ mentioned entities)\n- Raw source preserved for provenance via `gbrain files upload-raw`\n- Every fact has an inline `[Source: ...]` citation\n- Filing follows primary subject rules (not format-based)\n\n**Returns** (when invoked by another skill or sub-agent):\n- `page_path`: brain page path of the ingested item (e.g., `concepts\u002Fflywheel-effects`)\n- `author_path`: brain page path of the author (e.g., `people\u002Falice-example`), or `null` when\n  the notability gate was skipped and the author was credited inline instead\n- `cross_links`: list of all cross-links created\n- `status`: `ingested` | `updated` | `fetch_failed`\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery mention of a person or company with a brain page MUST create a back-link.\nFormat: `- **YYYY-MM-DD** | Referenced in [page title](path) — brief context`\n\n## Phases\n\n1. **Fetch the content.** Use appropriate tools for the content type (web fetch for articles, API for tweets, PDF reader for documents).\n\n2. **Upload raw source.** Save the fetched content for provenance: `gbrain files upload-raw \u003Cfile> --page \u003Cslug>`\n\n3. **Identify the author — notability-gated.** Search brain for an existing author page first.\n   - If page exists → update timeline with this new publication, then cross-link both directions\n   - If no page → create one ONLY if the author passes the notability gate\n     (`skills\u002F_brain-filing-rules.md` §Notability Gate, `skills\u002Fconventions\u002Fquality.md`) AND at\n     least two independent, durable facts about them exist beyond this one item. Create a FULL\n     page (not a stub) from enrichment — a single ingested item is not an entity worth a page.\n   - Otherwise credit the author inline on the ingested page (`**Author:** {Author}, {role}`) and\n     note the gap in the reply. When in doubt, DON'T create. A missing page can be created later.\n\n4. **Save to brain.** File by PRIMARY SUBJECT (read `skills\u002F_brain-filing-rules.md`):\n   - About a person → `people\u002F`\n   - About a company → `companies\u002F`\n   - A reusable framework → `concepts\u002F`\n   - Raw data dump → `sources\u002F`\n\n5. **Analyze for the user.** Reply with analysis that connects the content to what the brain knows. Think about:\n   - Active projects — is this relevant?\n   - Contradictions — does this challenge existing brain knowledge?\n   - Connections — does this involve known people\u002Fcompanies?\n   - Don't just summarize. Tell the user things they wouldn't have noticed.\n\n6. **Sync.** `gbrain sync` to update the index.\n\n## Output Format\n\n```markdown\n# {Title} — {Author}\n\n**Source:** {URL}\n**Author:** {Author}, {role}\n**Published:** {date}\n**Ingested:** {date}\n\n## Context\n{Why this matters now, connected to brain knowledge}\n\n## Summary\n{3-5 bullet core arguments}\n\n## Key Data \u002F Claims\n{Specific facts, numbers, quotes}\n\n## Analysis\n{How this connects to existing brain knowledge. What's new. What contradicts.}\n```\n\n## Edge Cases\n\n- **Fetch fails (paywall, 404, timeout):** Save a stub page with URL + metadata + reason for failure. Tell the user content couldn't be fetched and ask if they can paste it.\n- **Duplicate URL:** Before ingesting, search brain for the URL. If found, update the existing page rather than creating a new one. Tell the user it was already ingested.\n- **No identifiable author:** Use `sources\u002F` filing. Skip the people page but note the gap.\n- **Tweet thread vs single tweet:** Fetch the entire thread. Treat the thread as one unit.\n- **Video\u002Fpodcast link:** Note that only metadata can be ingested unless a transcript is available. Ask the user for a transcript.\n- **Raw upload:** Use the `file_upload` tool (not CLI `gbrain files upload-raw`) when operating as an agent.\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- The fetch fails (paywall, 404, timeout): save a stub with URL, metadata and the failure reason (`status: fetch_failed`) and ask the user to paste the content.\n- `gbrain files upload-raw` \u002F `file_upload` is refused (path outside the allowed root, payload too large): tell the user the limit and offer a link or an excerpt instead.\n- `write_pending` (exit 10) on the page write: poll `gbrain write-request \u003Crequest_id>` before reporting `ingested`.\n\n## Anti-Patterns\n\n- Just summarizing without connecting to brain knowledge\n- Filing everything in `sources\u002F` (sources is for raw data dumps only)\n- Dropping the author credit entirely — neither a back-link on an existing author page nor an inline `**Author:**` line on the ingested page\n- Creating a `people\u002F` page that fails the notability gate in `skills\u002F_brain-filing-rules.md` or is a stub built from this one item\n- Not cross-linking to mentioned entities\n- Ingesting without checking brain first for existing coverage\n- Overwriting an existing brain page instead of merging new content into it\n- Hallucinating connections to brain knowledge — only cite connections you verified via search\u002Fquery\n- Creating generic slugs like `concepts\u002Fstrategy` — be specific: `concepts\u002Fflywheel-effects`\n- Assuming the fetch succeeded without verifying content was actually retrieved\n","# Idea Ingest Skill\n\n> **Filing rule:** Read `skills\u002F_brain-filing-rules.md` before creating any new page.\n\n## Contract\n\nThis skill guarantees:\n- Every ingested item has a brain page with genuine analysis (not just a summary)\n- The author is always credited: back-linked from an existing `people\u002F` page (timeline update),\n  or inline on the ingested page (`**Author:** {Author}, {role}`) when no page exists. A NEW\n  `people\u002F` page is created only when the author passes the notability gate AND you have at\n  least two independent, durable facts about them beyond this one item — never a stub\n  (`skills\u002F_brain-filing-rules.md` §Notability Gate)\n- Cross-links created bidirectionally (source ↔ author, source ↔ mentioned entities)\n- Raw source preserved for provenance via `gbrain files upload-raw`\n- Every fact has an inline `[Source: ...]` citation\n- Filing follows primary subject rules (not format-based)\n\n**Returns** (when invoked by another skill or sub-agent):\n- `page_path`: brain page path of the ingested item (e.g., `concepts\u002Fflywheel-effects`)\n- `author_path`: brain page path of the author (e.g., `people\u002Falice-example`), or `null` when\n  the notability gate was skipped and the author was credited inline instead\n- `cross_links`: list of all cross-links created\n- `status`: `ingested` | `updated` | `fetch_failed`\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery mention of a person or company with a brain page MUST create a back-link.\nFormat: `- **YYYY-MM-DD** | Referenced in [page title](path) — brief context`\n\n## Phases\n\n1. **Fetch the content.** Use appropriate tools for the content type (web fetch for articles, API for tweets, PDF reader for documents).\n\n2. **Upload raw source.** Save the fetched content for provenance: `gbrain files upload-raw \u003Cfile> --page \u003Cslug>`\n\n3. **Identify the author — notability-gated.** Search brain for an existing author page first.\n   - If page exists → update timeline with this new publication, then cross-link both directions\n   - If no page → create one ONLY if the author passes the notability gate\n     (`skills\u002F_brain-filing-rules.md` §Notability Gate, `skills\u002Fconventions\u002Fquality.md`) AND at\n     least two independent, durable facts about them exist beyond this one item. Create a FULL\n     page (not a stub) from enrichment — a single ingested item is not an entity worth a page.\n   - Otherwise credit the author inline on the ingested page (`**Author:** {Author}, {role}`) and\n     note the gap in the reply. When in doubt, DON'T create. A missing page can be created later.\n\n4. **Save to brain.** File by PRIMARY SUBJECT (read `skills\u002F_brain-filing-rules.md`):\n   - About a person → `people\u002F`\n   - About a company → `companies\u002F`\n   - A reusable framework → `concepts\u002F`\n   - Raw data dump → `sources\u002F`\n\n5. **Analyze for the user.** Reply with analysis that connects the content to what the brain knows. Think about:\n   - Active projects — is this relevant?\n   - Contradictions — does this challenge existing brain knowledge?\n   - Connections — does this involve known people\u002Fcompanies?\n   - Don't just summarize. Tell the user things they wouldn't have noticed.\n\n6. **Sync.** `gbrain sync` to update the index.\n\n## Output Format\n\n```markdown\n# {Title} — {Author}\n\n**Source:** {URL}\n**Author:** {Author}, {role}\n**Published:** {date}\n**Ingested:** {date}\n\n## Context\n{Why this matters now, connected to brain knowledge}\n\n## Summary\n{3-5 bullet core arguments}\n\n## Key Data \u002F Claims\n{Specific facts, numbers, quotes}\n\n## Analysis\n{How this connects to existing brain knowledge. What's new. What contradicts.}\n```\n\n## Edge Cases\n\n- **Fetch fails (paywall, 404, timeout):** Save a stub page with URL + metadata + reason for failure. Tell the user content couldn't be fetched and ask if they can paste it.\n- **Duplicate URL:** Before ingesting, search brain for the URL. If found, update the existing page rather than creating a new one. Tell the user it was already ingested.\n- **No identifiable author:** Use `sources\u002F` filing. Skip the people page but note the gap.\n- **Tweet thread vs single tweet:** Fetch the entire thread. Treat the thread as one unit.\n- **Video\u002Fpodcast link:** Note that only metadata can be ingested unless a transcript is available. Ask the user for a transcript.\n- **Raw upload:** Use the `file_upload` tool (not CLI `gbrain files upload-raw`) when operating as an agent.\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- The fetch fails (paywall, 404, timeout): save a stub with URL, metadata and the failure reason (`status: fetch_failed`) and ask the user to paste the content.\n- `gbrain files upload-raw` \u002F `file_upload` is refused (path outside the allowed root, payload too large): tell the user the limit and offer a link or an excerpt instead.\n- `write_pending` (exit 10) on the page write: poll `gbrain write-request \u003Crequest_id>` before reporting `ingested`.\n\n## Anti-Patterns\n\n- Just summarizing without connecting to brain knowledge\n- Filing everything in `sources\u002F` (sources is for raw data dumps only)\n- Dropping the author credit entirely — neither a back-link on an existing author page nor an inline `**Author:**` line on the ingested page\n- Creating a `people\u002F` page that fails the notability gate in `skills\u002F_brain-filing-rules.md` or is a stub built from this one item\n- Not cross-linking to mentioned entities\n- Ingesting without checking brain first for existing coverage\n- Overwriting an existing brain page instead of merging new content into it\n- Hallucinating connections to brain knowledge — only cite connections you verified via search\u002Fquery\n- Creating generic slugs like `concepts\u002Fstrategy` — be specific: `concepts\u002Fflywheel-effects`\n- Assuming the fetch succeeded without verifying content was actually retrieved\n",{"name":5,"tools":45,"version":51,"mutating":52,"triggers":53,"upstream":59,"writes_to":60,"description":64,"writes_pages":52},[32,33,46,47,48,49,50],"get_page","put_page","add_link","add_timeline_entry","file_upload","1.2.0",true,[54,55,56,57,58],"shares a link or URL","read this","save this","think about this","put this in brain","idea-ingest@fc834ee",[61,62,63],"people\u002F","concepts\u002F","sources\u002F","Ingest links, articles, tweets, and ideas into the brain. Fetch content, save\nto brain with analysis, credit the author (people page only when they pass the\nnotability gate), and cross-link. Use when the user shares a link or says\n\"read this\", \"save this\", \"think about this\".\n","master","074ec301549ded4930f04d2c3b22d709a6c095cc","skills\u002Fidea-ingest",4871,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fgarrytan","https:\u002F\u002Fblog.garrytan.com","Writes software, dreams. ","2026-11-12 04:41:06",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":52},[76,79,82],{"tool":77,"command":78},"npx","npx skills add garrytan\u002Fgbrain --skill idea-ingest",{"tool":80,"command":81},"bunx","bunx skills add garrytan\u002Fgbrain --skill idea-ingest",{"tool":83,"command":84},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill idea-ingest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fidea-ingest\u002FSKILL.md",[],[88,98,104,125,152,166],{"skillNo":89,"name":90,"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":91,"categories":92,"keywords":93,"publishedAt":40},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[94,95,33,32,37,96,97],"query helper","helper","find","false",{"skillNo":99,"name":100,"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":101,"categories":102,"keywords":103,"publishedAt":40},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[100],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":40},"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",[],[111,112,113,25,114,37,115,116,117,118,33,119,28,120,121,122,123,124,32],"brain ops","brain","ops","attribution","read","write","up","look","pages","with","enrich","web","path","source",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":136,"publishedAt":40},"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",[131],{"categoryNo":132,"categoryName":133,"taxonomyType":134,"taxonomyTypeDesc":135},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[137,138,139,140,141,32,142,143,144,33,97,145,146,147,148,149,150,151],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":40},"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",[],[159,160,161,32,162,97,163,164,165],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":40},"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",[],[173,174,175,119,112,176,177,116,178,25,32,179],"deal memo","deal","memo","draft","investment","history","founder"]