[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N0RAT945AHN9JVHTEC7NA4":3,"skill-same:01M6N0RAT945AHN9JVHTEC7NA4":86},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":79},"01M6N0RAT945AHN9JVHTEC7NA4","postgres-adopt",null,"Detect which gbrain engine is in use (PGLite vs Postgres), prefer Postgres\nfor agent-harness installs, install\u002Fprovision Postgres (Supabase discovery\nvia SUPABASE_ACCESS_TOKEN, local Postgres, opt-in Docker), and move an\nexisting PGLite brain to Postgres with its history (plan, ask, run).\nDetection is one engine-free command; the install ladder is one flag.","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\u002Fpostgres-adopt\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"postgres","postgres adopt","adopt","upgrade","supabase","which","move","free","SET","token","brain","local","plan","run","up","agent-harness","install","command","ask","access","2026-11-10 10:12:30",false,"---\nname: postgres-adopt\ndescription: |\n  Detect which gbrain engine is in use (PGLite vs Postgres), prefer Postgres\n  for agent-harness installs, install\u002Fprovision Postgres (Supabase discovery\n  via SUPABASE_ACCESS_TOKEN, local Postgres, opt-in Docker), and move an\n  existing PGLite brain to Postgres with its history (plan, ask, run).\n  Detection is one engine-free command; the install ladder is one flag.\ntriggers:\n  - \"which gbrain engine\"\n  - \"pglite or postgres\"\n  - \"gbrain engine status\"\n  - \"upgrade to postgres\"\n  - \"switch gbrain to postgres\"\n  - \"install postgres for gbrain\"\n  - \"move my brain to supabase\"\n  - \"set up postgres for the brain\"\ntools:\n  - exec\nmutating: true\nbrain_first: exempt\n---\n\n# Postgres Adopt\n\n> The engine is the brain's foundation: PGLite is the zero-config floor,\n> Postgres is where concurrency, multi-machine access, and 1000+ pages live.\n> This skill answers \"which one am I on?\", prefers Postgres when the\n> operator wants it, and moves data safely — never by flipping config.\n\n## Contract\n\nThis skill guarantees:\n- Detection is engine-free and read-only: `gbrain engine status --json`\n  answers with the database down (that is the point of the command).\n- Engine changes NEVER happen by editing config. A PGLite brain moves with\n  `gbrain migrate --to postgres` (alias `--to supabase`), which graduates it:\n  plan first (exit 3), run only with the user's `--yes --expect \u003Cplan_hash>`,\n  verify every table, then flip routing. This skill wraps it; it never\n  reimplements it.\n- The target URL never appears in a command, transcript or output: it lives\n  in `GBRAIN_TARGET_URL` and every command uses `--url-env GBRAIN_TARGET_URL`.\n- Provisioning consent is explicit: the docker rung needs `--allow-docker`,\n  creating a database on a local server needs `--allow-create-db`. Headless\n  mutation of infrastructure the operator didn't opt into never happens.\n\n## Step 1 — Detect\n\n```bash\ngbrain engine status --json\n```\n\nBranch on the output:\n- `effective_engine: \"postgres\"` and (optionally) `--probe` says ok →\n  report healthy, done.\n- `effective_engine: \"postgres\"` but the probe fails → this is an ACCESS\n  problem, not an adoption problem: route to [db-repair](..\u002Fdb-repair\u002FSKILL.md).\n- `config_file_engine` differs from `effective_engine` → an env URL is\n  overriding the config file; tell the operator which one wins — the signal\n  is `db_url_source` (`env:GBRAIN_DATABASE_URL` \u002F `env:DATABASE_URL` means\n  env wins; `env.note` additionally fires when both env URLs are set or the\n  cwd-.env shadow guard excluded one).\n- `thin_client: true` → the brain lives on a remote server; engine choices\n  belong to that host. Stop.\n- `effective_engine: null` (no brain) → Step 2.\n- `effective_engine: \"pglite\"` with data → Step 3.\n- The output has a `graduation` block whose `state` is not `none` (in progress,\n  interrupted, graduated or split) → Step 4.\n\n## Step 2 — Fresh install, Postgres-first\n\n```bash\ngbrain init --prefer-postgres\n```\n\nThe ladder tries, in order: an env URL → Supabase Management-API discovery\n(`SUPABASE_ACCESS_TOKEN`, plus `SUPABASE_PROJECT_REF` on multi-project\naccounts and `SUPABASE_DB_PASSWORD` for the connection string) → a local\nPostgres (only when `PGHOST`\u002F`PGPORT`\u002F`PGUSER`\u002F`PGPASSWORD` are set or\n`--local-postgres` is passed) → docker → PGLite. Each unusable rung prints a\none-line note and falls through; nothing is silent.\n\n- Ask the operator BEFORE adding `--allow-docker` (it creates and owns a\n  `gbrain-postgres` container that survives reboots) or `--allow-create-db`\n  (it runs CREATE DATABASE on their local server).\n- `--json` reports `{engine, ladder_rung, url_source}` — relay which rung won.\n- If the ladder lands on PGLite, that is a fine outcome: say so, and note the\n  upgrade path below is available whenever they want it.\n\n## Step 3 — Existing PGLite brain: plan, ask, run\n\nFull reference: [Move a PGLite brain to Postgres](https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fdocs\u002Fguides\u002Fmove-to-postgres.md).\n\n1. **Target URL.** Ask the user to put the connection string in an\n   environment variable without pasting it into the conversation\n   (`read -rs GBRAIN_TARGET_URL && export GBRAIN_TARGET_URL`). On Supabase use\n   the transaction pooler; on an IPv4-only host also set\n   `GBRAIN_DIRECT_DATABASE_URL` to the session pooler.\n2. **Plan.** This changes nothing and exits 3 with the\n   `confirmation_required` document:\n   ```bash\n   gbrain migrate --to postgres --url-env GBRAIN_TARGET_URL --json\n   ```\n   Relay `user_message`, what moves, what stays on this computer, blockers\n   and the estimate. Stop and wait for the user. A blocker with its own\n   `fix` gets cleared first (ask when it says `ask_user`).\n3. **Run, after the user agrees.** Use `fix.command` from the document:\n   ```bash\n   gbrain migrate --to postgres --url-env GBRAIN_TARGET_URL --yes --expect \u003Cplan_hash>\n   ```\n   `preview_changed` means the plan changed: go back to step 2. For thousands\n   of pages run it in the background and poll `gbrain migrate --status --json`.\n4. **Report.** Relay the target doctor verdict from the run's output, that\n   existing tokens, OAuth clients and local writers stay valid, the\n   `gbrain mcp expose` follow-up for other machines, and, if a serve handed\n   the brain over, that the user restarts the MCP client.\n\n- A `gbrain serve` holding the brain hands it over on its own; never ask the\n  user to stop it first. `graduation_source_writer_held` names the process to\n  stop when one does not.\n- The old data dir is kept as `\u003Cpath>.graduated-\u003Crun_id>` (doctor's\n  `pglite_leftovers` reports it). Deleting it is the user's call.\n- `gbrain doctor`'s `pglite_scale` check warns at 1000+ pages and points at\n  the plan command — that warning is this skill's cue.\n\n## Step 4 — A move already underway\n\n```bash\ngbrain migrate --status --json\n```\n\nIt is read-only and names the next command for the state. Exit 75 or a\nrun in progress → wait and poll. Interrupted → `gbrain migrate --resume`\n(or `gbrain migrate --rollback-to-source` if the user wants to stay on\nPGLite). Every refusal names its fix; the recovery table is in the guide.\nA rollback that lists data loss runs only with the user's\n`--rollback-to-source --yes --expect \u003Chash>`.\n\n## The tradeoff (say it when recommending)\n\nPostgres wins on concurrency, multi-machine access, and scale. PGLite keeps\nthe per-turn bootstrap hook lane (hook injection is PGLite-only today —\n`docs\u002Fguides\u002Fbootstrap.md`); on Postgres, ambient context rides\nMCP-every-session and the pull protocol instead. Recommend Postgres when the\noperator has concurrent agents, multiple machines, or a 1000+ page brain;\notherwise PGLite is genuinely fine.\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- `effective_engine: \"postgres\"` but the probe fails: this is an access problem; run `gbrain engine status --probe`, then the db-repair skill.\n- Provisioning steps (Docker, installing Postgres) and the move itself need the user's explicit agreement; the docker rung needs `--allow-docker`, the move needs `--yes --expect \u003Cplan_hash>` after the user saw the plan.\n- `gbrain config set engine …` is refused by design: switch engines through the migrate path, never by editing config.\n\n## Anti-Patterns\n\n- NEVER `gbrain config set engine ...` — it is refused by design; an engine\n  flip without a data migration splits the brain across two stores.\n- NEVER pick Postgres over a healthy PGLite brain without the migrate path.\n- NEVER add `--yes` before the user has seen the plan, and never use\n  `--force` unless the plan listed what it wipes and the user agreed.\n- NEVER put the database URL or password in a command line; use\n  `--url-env GBRAIN_TARGET_URL`.\n- NEVER run the docker rung without the operator's explicit yes.\n- NEVER paste or echo `SUPABASE_ACCESS_TOKEN` \u002F passwords into output.\n\n## Output Format\n\nDetection reports in one line; changes report in 2-4:\n\n```\nEngine: \u003Cpglite|postgres> (source: \u003Cdb_url_source>)   [probe: ok, 42ms]\nAction: \u003Cnone | init rung that won | migrate --to postgres result>\nNext:   \u003Cupgrade note, or \"healthy — nothing to do\">\n```\n\nQuote `gbrain engine status` output as-is (it is already redacted); name the\nwinning ladder rung when an install ran; after a migration, include the\ntarget's `gbrain doctor` verdict.\n","# Postgres Adopt\n\n> The engine is the brain's foundation: PGLite is the zero-config floor,\n> Postgres is where concurrency, multi-machine access, and 1000+ pages live.\n> This skill answers \"which one am I on?\", prefers Postgres when the\n> operator wants it, and moves data safely — never by flipping config.\n\n## Contract\n\nThis skill guarantees:\n- Detection is engine-free and read-only: `gbrain engine status --json`\n  answers with the database down (that is the point of the command).\n- Engine changes NEVER happen by editing config. A PGLite brain moves with\n  `gbrain migrate --to postgres` (alias `--to supabase`), which graduates it:\n  plan first (exit 3), run only with the user's `--yes --expect \u003Cplan_hash>`,\n  verify every table, then flip routing. This skill wraps it; it never\n  reimplements it.\n- The target URL never appears in a command, transcript or output: it lives\n  in `GBRAIN_TARGET_URL` and every command uses `--url-env GBRAIN_TARGET_URL`.\n- Provisioning consent is explicit: the docker rung needs `--allow-docker`,\n  creating a database on a local server needs `--allow-create-db`. Headless\n  mutation of infrastructure the operator didn't opt into never happens.\n\n## Step 1 — Detect\n\n```bash\ngbrain engine status --json\n```\n\nBranch on the output:\n- `effective_engine: \"postgres\"` and (optionally) `--probe` says ok →\n  report healthy, done.\n- `effective_engine: \"postgres\"` but the probe fails → this is an ACCESS\n  problem, not an adoption problem: route to [db-repair](..\u002Fdb-repair\u002FSKILL.md).\n- `config_file_engine` differs from `effective_engine` → an env URL is\n  overriding the config file; tell the operator which one wins — the signal\n  is `db_url_source` (`env:GBRAIN_DATABASE_URL` \u002F `env:DATABASE_URL` means\n  env wins; `env.note` additionally fires when both env URLs are set or the\n  cwd-.env shadow guard excluded one).\n- `thin_client: true` → the brain lives on a remote server; engine choices\n  belong to that host. Stop.\n- `effective_engine: null` (no brain) → Step 2.\n- `effective_engine: \"pglite\"` with data → Step 3.\n- The output has a `graduation` block whose `state` is not `none` (in progress,\n  interrupted, graduated or split) → Step 4.\n\n## Step 2 — Fresh install, Postgres-first\n\n```bash\ngbrain init --prefer-postgres\n```\n\nThe ladder tries, in order: an env URL → Supabase Management-API discovery\n(`SUPABASE_ACCESS_TOKEN`, plus `SUPABASE_PROJECT_REF` on multi-project\naccounts and `SUPABASE_DB_PASSWORD` for the connection string) → a local\nPostgres (only when `PGHOST`\u002F`PGPORT`\u002F`PGUSER`\u002F`PGPASSWORD` are set or\n`--local-postgres` is passed) → docker → PGLite. Each unusable rung prints a\none-line note and falls through; nothing is silent.\n\n- Ask the operator BEFORE adding `--allow-docker` (it creates and owns a\n  `gbrain-postgres` container that survives reboots) or `--allow-create-db`\n  (it runs CREATE DATABASE on their local server).\n- `--json` reports `{engine, ladder_rung, url_source}` — relay which rung won.\n- If the ladder lands on PGLite, that is a fine outcome: say so, and note the\n  upgrade path below is available whenever they want it.\n\n## Step 3 — Existing PGLite brain: plan, ask, run\n\nFull reference: [Move a PGLite brain to Postgres](https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fdocs\u002Fguides\u002Fmove-to-postgres.md).\n\n1. **Target URL.** Ask the user to put the connection string in an\n   environment variable without pasting it into the conversation\n   (`read -rs GBRAIN_TARGET_URL && export GBRAIN_TARGET_URL`). On Supabase use\n   the transaction pooler; on an IPv4-only host also set\n   `GBRAIN_DIRECT_DATABASE_URL` to the session pooler.\n2. **Plan.** This changes nothing and exits 3 with the\n   `confirmation_required` document:\n   ```bash\n   gbrain migrate --to postgres --url-env GBRAIN_TARGET_URL --json\n   ```\n   Relay `user_message`, what moves, what stays on this computer, blockers\n   and the estimate. Stop and wait for the user. A blocker with its own\n   `fix` gets cleared first (ask when it says `ask_user`).\n3. **Run, after the user agrees.** Use `fix.command` from the document:\n   ```bash\n   gbrain migrate --to postgres --url-env GBRAIN_TARGET_URL --yes --expect \u003Cplan_hash>\n   ```\n   `preview_changed` means the plan changed: go back to step 2. For thousands\n   of pages run it in the background and poll `gbrain migrate --status --json`.\n4. **Report.** Relay the target doctor verdict from the run's output, that\n   existing tokens, OAuth clients and local writers stay valid, the\n   `gbrain mcp expose` follow-up for other machines, and, if a serve handed\n   the brain over, that the user restarts the MCP client.\n\n- A `gbrain serve` holding the brain hands it over on its own; never ask the\n  user to stop it first. `graduation_source_writer_held` names the process to\n  stop when one does not.\n- The old data dir is kept as `\u003Cpath>.graduated-\u003Crun_id>` (doctor's\n  `pglite_leftovers` reports it). Deleting it is the user's call.\n- `gbrain doctor`'s `pglite_scale` check warns at 1000+ pages and points at\n  the plan command — that warning is this skill's cue.\n\n## Step 4 — A move already underway\n\n```bash\ngbrain migrate --status --json\n```\n\nIt is read-only and names the next command for the state. Exit 75 or a\nrun in progress → wait and poll. Interrupted → `gbrain migrate --resume`\n(or `gbrain migrate --rollback-to-source` if the user wants to stay on\nPGLite). Every refusal names its fix; the recovery table is in the guide.\nA rollback that lists data loss runs only with the user's\n`--rollback-to-source --yes --expect \u003Chash>`.\n\n## The tradeoff (say it when recommending)\n\nPostgres wins on concurrency, multi-machine access, and scale. PGLite keeps\nthe per-turn bootstrap hook lane (hook injection is PGLite-only today —\n`docs\u002Fguides\u002Fbootstrap.md`); on Postgres, ambient context rides\nMCP-every-session and the pull protocol instead. Recommend Postgres when the\noperator has concurrent agents, multiple machines, or a 1000+ page brain;\notherwise PGLite is genuinely fine.\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- `effective_engine: \"postgres\"` but the probe fails: this is an access problem; run `gbrain engine status --probe`, then the db-repair skill.\n- Provisioning steps (Docker, installing Postgres) and the move itself need the user's explicit agreement; the docker rung needs `--allow-docker`, the move needs `--yes --expect \u003Cplan_hash>` after the user saw the plan.\n- `gbrain config set engine …` is refused by design: switch engines through the migrate path, never by editing config.\n\n## Anti-Patterns\n\n- NEVER `gbrain config set engine ...` — it is refused by design; an engine\n  flip without a data migration splits the brain across two stores.\n- NEVER pick Postgres over a healthy PGLite brain without the migrate path.\n- NEVER add `--yes` before the user has seen the plan, and never use\n  `--force` unless the plan listed what it wipes and the user agreed.\n- NEVER put the database URL or password in a command line; use\n  `--url-env GBRAIN_TARGET_URL`.\n- NEVER run the docker rung without the operator's explicit yes.\n- NEVER paste or echo `SUPABASE_ACCESS_TOKEN` \u002F passwords into output.\n\n## Output Format\n\nDetection reports in one line; changes report in 2-4:\n\n```\nEngine: \u003Cpglite|postgres> (source: \u003Cdb_url_source>)   [probe: ok, 42ms]\nAction: \u003Cnone | init rung that won | migrate --to postgres result>\nNext:   \u003Cupgrade note, or \"healthy — nothing to do\">\n```\n\nQuote `gbrain engine status` output as-is (it is already redacted); name the\nwinning ladder rung when an install ran; after a migration, include the\ntarget's `gbrain doctor` verdict.\n",{"name":5,"tools":44,"mutating":46,"triggers":47,"brain_first":56,"description":57},[45],"exec",true,[48,49,50,51,52,53,54,55],"which gbrain engine","pglite or postgres","gbrain engine status","upgrade to postgres","switch gbrain to postgres","install postgres for gbrain","move my brain to supabase","set up postgres for the brain","exempt","Detect which gbrain engine is in use (PGLite vs Postgres), prefer Postgres\nfor agent-harness installs, install\u002Fprovision Postgres (Supabase discovery\nvia SUPABASE_ACCESS_TOKEN, local Postgres, opt-in Docker), and move an\nexisting PGLite brain to Postgres with its history (plan, ask, run).\nDetection is one engine-free command; the install ladder is one flag.\n","master","074ec301549ded4930f04d2c3b22d709a6c095cc","skills\u002Fpostgres-adopt",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":68,"prompt":78,"zipAvailable":46},[69,72,75],{"tool":70,"command":71},"npx","npx skills add garrytan\u002Fgbrain --skill postgres-adopt",{"tool":73,"command":74},"bunx","bunx skills add garrytan\u002Fgbrain --skill postgres-adopt",{"tool":76,"command":77},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill postgres-adopt","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fpostgres-adopt\u002FSKILL.md",[80],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"routing-eval.jsonl","OTHER","其他",870,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fpostgres-adopt\u002Frouting-eval.jsonl",[87,100,106,127,154,168],{"skillNo":88,"name":89,"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":90,"categories":91,"keywords":92,"publishedAt":39},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[93,94,95,96,97,98,99],"query helper","helper","query","search","page","find","false",{"skillNo":101,"name":102,"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":103,"categories":104,"keywords":105,"publishedAt":39},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[102],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":39},"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",[],[113,29,114,115,116,97,117,118,33,119,95,120,121,122,123,124,125,126,96],"brain ops","ops","true","attribution","read","write","look","pages","people","with","enrich","web","path","source",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":138,"publishedAt":39},"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",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[139,140,141,142,143,96,144,145,146,95,99,147,148,149,150,151,152,153],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":39},"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",[],[161,162,163,96,164,99,165,166,167],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":39},"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",[],[175,176,177,120,29,178,179,118,180,115,96,181],"deal memo","deal","memo","draft","investment","history","founder"]