[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N0VT4KF4AJ3SZR32W37HNA":3,"skill-same:01M6N0VT4KF4AJ3SZR32W37HNA":81},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":80},"01M6N0VT4KF4AJ3SZR32W37HNA","soul-audit",null,"Re-run or deepen the agent's identity interview. Drives the SHARED bootstrap\nanswer bank (state\u002Finterview.json) via `gbrain bootstrap interview\n--set\u002F--show\u002F--confirm`, then re-renders the identity files with\n`gbrain bootstrap render --only \u003CFILE> --force`. One answer store, two\nsurfaces: first-boot bootstrap and this re-run skill write the same bank, so\nan updated answer flows into SOUL.md, USER.md, ACCESS_POLICY.md, and\nHEARTBEAT.md without hand-editing rendered files. Every answer is the user's\nown words — never invented.","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\u002Fsoul-audit\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"soul audit","audit","soul","show","bank","hand","re","flows","render","SOUL.md","shared","change","surfaces","files","up","only","never","access","SET","run","2026-11-10 10:12:30",false,"---\nname: soul-audit\nversion: 2.0.0\ndescription: |\n  Re-run or deepen the agent's identity interview. Drives the SHARED bootstrap\n  answer bank (state\u002Finterview.json) via `gbrain bootstrap interview\n  --set\u002F--show\u002F--confirm`, then re-renders the identity files with\n  `gbrain bootstrap render --only \u003CFILE> --force`. One answer store, two\n  surfaces: first-boot bootstrap and this re-run skill write the same bank, so\n  an updated answer flows into SOUL.md, USER.md, ACCESS_POLICY.md, and\n  HEARTBEAT.md without hand-editing rendered files. Every answer is the user's\n  own words — never invented.\ntriggers:\n  - \"soul audit\"\n  - \"customize agent\"\n  - \"who am I\"\n  - \"set up identity\"\n  - \"change my agent's personality\"\ntools:\n  - shell\nmutating: true\n---\n\n# Soul Audit — Agent Identity Builder (re-run \u002F deepen surface)\n\nUpdate the agent's identity through an interactive interview, any time after\nbootstrap. This skill does NOT generate files from scratch and does NOT write\nidentity prose itself: it records the user's answers into the shared answer\nbank, then lets the bootstrap render engine produce the files. That keeps one\nsource of truth — `state\u002Finterview.json` — no matter which surface (first-boot\nbootstrap, this skill, a future re-audit) collected the answers.\n\n**IMPORTANT:** Content comes from the USER'S OWN ANSWERS, recorded verbatim.\nNEVER invent, embellish, or default an identity answer. The render gate\nstructurally refuses until required answers exist and were read back and\nconfirmed by the human.\n\n## Contract\n\nThis skill guarantees:\n- Answers land in the shared bank via `gbrain bootstrap interview --set KEY \"value\"`\n  (verbatim, one key per answer; `--skip KEY` records an explicit decline).\n- The read-back ritual runs before any render: `--show` the full answer set,\n  mirror it to the user, then `--confirm \u003Chash>` with the hash `--status`\n  printed. Confirming a set the user never saw fails by design.\n- Files re-render through the ONE render path:\n  `gbrain bootstrap render --only SOUL.md --force` (repeat per file). `--force`\n  backs the old file up under `.gbrain-bootstrap-backups\u002F\u003Cts>\u002F` first — nothing\n  is clobbered without a recoverable copy.\n- Each phase is independent and re-runnable; updating one answer and\n  re-rendering one file is a complete, valid run.\n\n## The command loop\n\n```\ngbrain bootstrap interview --show            # what the bank holds now (start here)\ngbrain bootstrap interview --set KEY \"...\"   # record one updated answer, verbatim\ngbrain bootstrap interview --skip KEY        # explicit decline for an optional key\ngbrain bootstrap interview --status          # gate + read-back hash\ngbrain bootstrap interview --confirm \u003Chash>  # after reading answers back to the user\ngbrain bootstrap render --only SOUL.md --force\n```\n\nRender targets: `SOUL.md`, `USER.md`, `ACCESS_POLICY.md`, `HEARTBEAT.md`,\n`AGENTS.md` (re-render whichever files the changed keys feed). In an OpenClaw\nworkspace the `HEARTBEAT.md` target writes `SCHEDULES.md`, because OpenClaw\n2026.10.6+ removes a workspace `HEARTBEAT.md`; render detects the workspace,\nor pass `--host openclaw`.\n\n## Phases (each independent, each re-runnable)\n\n### Phase 1: Identity Interview\nAsk: \"What is this agent to you? Research partner? Executive assistant? Thinking\npartner? All of the above?\"\nKeys: `AGENT_NAME`, `AGENT_PURPOSE`, `SOUL_RELATIONSHIP`. Renders: SOUL.md.\n\n### Phase 2: Vibe Calibration\nShow 3-4 communication style examples:\n- **Formal:** \"I've prepared a comprehensive analysis of the situation...\"\n- **Direct:** \"Here's what's happening. Three things matter.\"\n- **Technical:** \"The root cause is in the connection pooling. Here's the fix.\"\n- **Casual:** \"Yeah so basically the thing is broken because X. Easy fix.\"\nAsk which feels right; also ask for a reply that made them wince and why.\nKeys: `VOICE_REGISTER`, `SOUL_WINCE`, `SOUL_MODE_DEFAULT`. Renders: SOUL.md.\n\n### Phase 3: Mission Mapping\nAsk: \"What are your top 3-5 goals? What are you trying to accomplish?\"\nKeys: `AGENT_TOP_JOBS`, `SOUL_GOOD_OUTPUT`, `SOUL_WORLDVIEW`. Renders: SOUL.md,\nAGENTS.md.\n\n### Phase 4: User Profile\nAsk: \"Tell me about yourself. What do you do? What are you working on? Who are\nthe key people in your world?\"\nKeys: `PRINCIPAL_NAME`, `PRINCIPAL_CONTEXT`, `PRINCIPAL_TIMEZONE`. Renders:\nUSER.md.\n\n### Phase 5: Boundaries\nAsk: \"Who should have access to your brain? Are there people who should see some\nbut not all? Anyone to keep out entirely?\"\nKey: `ACCESS_TIERS` (and review the standing-disclosure sections). Renders:\nACCESS_POLICY.md.\n\n### Phase 6: Operational Cadence\nAsk: \"How often should the agent check in? Morning briefing? End of day summary?\nWhat recurring jobs do you want?\"\nKeys: `HEARTBEAT_CADENCE`, `QUIET_HOURS`. Renders: HEARTBEAT.md (SCHEDULES.md on\nOpenClaw). Jobs ship\ndisabled — enable one at a time after a manual dry run (the ritual is in the\nrendered file).\n\nRun `gbrain bootstrap interview --init` first if the bank does not exist yet\n(a workspace that never ran bootstrap); it prints the full question list.\n\n## Output Format\n\nReport exactly what changed: which keys were updated, which files re-rendered,\nand where the backups landed. Example: \"Soul audit: updated VOICE_REGISTER +\nSOUL_WINCE, re-rendered SOUL.md (backup in .gbrain-bootstrap-backups\u002F...).\nRe-run any phase anytime.\"\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- `gbrain bootstrap interview --confirm \u003Chash>` fails: the hash must come from a read-back the user actually saw. Re-run `gbrain bootstrap interview --status`, read the answers back, and confirm only with the user's agreement.\n- Rendering refuses because required answers are missing: ask the user for them; never fill identity answers yourself.\n\n## Anti-Patterns\n\n- Writing identity prose yourself instead of recording the user's words into\n  the bank (the render engine is the only author of these files)\n- Hand-editing SOUL.md\u002FUSER.md directly — the next render overwrites it; edit\n  the ANSWER, then re-render\n- Confirming a read-back hash for answers the user never saw\n- Making the audit mandatory or asking all 6 phases in one go (overwhelming;\n  each is independent — momentum beats completeness)\n- Shipping pre-filled identity content (privacy violation)\n- Not offering to re-run individual phases\n","# Soul Audit — Agent Identity Builder (re-run \u002F deepen surface)\n\nUpdate the agent's identity through an interactive interview, any time after\nbootstrap. This skill does NOT generate files from scratch and does NOT write\nidentity prose itself: it records the user's answers into the shared answer\nbank, then lets the bootstrap render engine produce the files. That keeps one\nsource of truth — `state\u002Finterview.json` — no matter which surface (first-boot\nbootstrap, this skill, a future re-audit) collected the answers.\n\n**IMPORTANT:** Content comes from the USER'S OWN ANSWERS, recorded verbatim.\nNEVER invent, embellish, or default an identity answer. The render gate\nstructurally refuses until required answers exist and were read back and\nconfirmed by the human.\n\n## Contract\n\nThis skill guarantees:\n- Answers land in the shared bank via `gbrain bootstrap interview --set KEY \"value\"`\n  (verbatim, one key per answer; `--skip KEY` records an explicit decline).\n- The read-back ritual runs before any render: `--show` the full answer set,\n  mirror it to the user, then `--confirm \u003Chash>` with the hash `--status`\n  printed. Confirming a set the user never saw fails by design.\n- Files re-render through the ONE render path:\n  `gbrain bootstrap render --only SOUL.md --force` (repeat per file). `--force`\n  backs the old file up under `.gbrain-bootstrap-backups\u002F\u003Cts>\u002F` first — nothing\n  is clobbered without a recoverable copy.\n- Each phase is independent and re-runnable; updating one answer and\n  re-rendering one file is a complete, valid run.\n\n## The command loop\n\n```\ngbrain bootstrap interview --show            # what the bank holds now (start here)\ngbrain bootstrap interview --set KEY \"...\"   # record one updated answer, verbatim\ngbrain bootstrap interview --skip KEY        # explicit decline for an optional key\ngbrain bootstrap interview --status          # gate + read-back hash\ngbrain bootstrap interview --confirm \u003Chash>  # after reading answers back to the user\ngbrain bootstrap render --only SOUL.md --force\n```\n\nRender targets: `SOUL.md`, `USER.md`, `ACCESS_POLICY.md`, `HEARTBEAT.md`,\n`AGENTS.md` (re-render whichever files the changed keys feed). In an OpenClaw\nworkspace the `HEARTBEAT.md` target writes `SCHEDULES.md`, because OpenClaw\n2026.10.6+ removes a workspace `HEARTBEAT.md`; render detects the workspace,\nor pass `--host openclaw`.\n\n## Phases (each independent, each re-runnable)\n\n### Phase 1: Identity Interview\nAsk: \"What is this agent to you? Research partner? Executive assistant? Thinking\npartner? All of the above?\"\nKeys: `AGENT_NAME`, `AGENT_PURPOSE`, `SOUL_RELATIONSHIP`. Renders: SOUL.md.\n\n### Phase 2: Vibe Calibration\nShow 3-4 communication style examples:\n- **Formal:** \"I've prepared a comprehensive analysis of the situation...\"\n- **Direct:** \"Here's what's happening. Three things matter.\"\n- **Technical:** \"The root cause is in the connection pooling. Here's the fix.\"\n- **Casual:** \"Yeah so basically the thing is broken because X. Easy fix.\"\nAsk which feels right; also ask for a reply that made them wince and why.\nKeys: `VOICE_REGISTER`, `SOUL_WINCE`, `SOUL_MODE_DEFAULT`. Renders: SOUL.md.\n\n### Phase 3: Mission Mapping\nAsk: \"What are your top 3-5 goals? What are you trying to accomplish?\"\nKeys: `AGENT_TOP_JOBS`, `SOUL_GOOD_OUTPUT`, `SOUL_WORLDVIEW`. Renders: SOUL.md,\nAGENTS.md.\n\n### Phase 4: User Profile\nAsk: \"Tell me about yourself. What do you do? What are you working on? Who are\nthe key people in your world?\"\nKeys: `PRINCIPAL_NAME`, `PRINCIPAL_CONTEXT`, `PRINCIPAL_TIMEZONE`. Renders:\nUSER.md.\n\n### Phase 5: Boundaries\nAsk: \"Who should have access to your brain? Are there people who should see some\nbut not all? Anyone to keep out entirely?\"\nKey: `ACCESS_TIERS` (and review the standing-disclosure sections). Renders:\nACCESS_POLICY.md.\n\n### Phase 6: Operational Cadence\nAsk: \"How often should the agent check in? Morning briefing? End of day summary?\nWhat recurring jobs do you want?\"\nKeys: `HEARTBEAT_CADENCE`, `QUIET_HOURS`. Renders: HEARTBEAT.md (SCHEDULES.md on\nOpenClaw). Jobs ship\ndisabled — enable one at a time after a manual dry run (the ritual is in the\nrendered file).\n\nRun `gbrain bootstrap interview --init` first if the bank does not exist yet\n(a workspace that never ran bootstrap); it prints the full question list.\n\n## Output Format\n\nReport exactly what changed: which keys were updated, which files re-rendered,\nand where the backups landed. Example: \"Soul audit: updated VOICE_REGISTER +\nSOUL_WINCE, re-rendered SOUL.md (backup in .gbrain-bootstrap-backups\u002F...).\nRe-run any phase anytime.\"\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- `gbrain bootstrap interview --confirm \u003Chash>` fails: the hash must come from a read-back the user actually saw. Re-run `gbrain bootstrap interview --status`, read the answers back, and confirm only with the user's agreement.\n- Rendering refuses because required answers are missing: ask the user for them; never fill identity answers yourself.\n\n## Anti-Patterns\n\n- Writing identity prose yourself instead of recording the user's words into\n  the bank (the render engine is the only author of these files)\n- Hand-editing SOUL.md\u002FUSER.md directly — the next render overwrites it; edit\n  the ANSWER, then re-render\n- Confirming a read-back hash for answers the user never saw\n- Making the audit mandatory or asking all 6 phases in one go (overwhelming;\n  each is independent — momentum beats completeness)\n- Shipping pre-filled identity content (privacy violation)\n- Not offering to re-run individual phases\n",{"name":5,"tools":49,"version":51,"mutating":52,"triggers":53,"description":58},[50],"shell","2.0.0",true,[24,54,55,56,57],"customize agent","who am I","set up identity","change my agent's personality","Re-run or deepen the agent's identity interview. Drives the SHARED bootstrap\nanswer bank (state\u002Finterview.json) via `gbrain bootstrap interview\n--set\u002F--show\u002F--confirm`, then re-renders the identity files with\n`gbrain bootstrap render --only \u003CFILE> --force`. One answer store, two\nsurfaces: first-boot bootstrap and this re-run skill write the same bank, so\nan updated answer flows into SOUL.md, USER.md, ACCESS_POLICY.md, and\nHEARTBEAT.md without hand-editing rendered files. Every answer is the user's\nown words — never invented.\n","master","074ec301549ded4930f04d2c3b22d709a6c095cc","skills\u002Fsoul-audit",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":69,"prompt":79,"zipAvailable":52},[70,73,76],{"tool":71,"command":72},"npx","npx skills add garrytan\u002Fgbrain --skill soul-audit",{"tool":74,"command":75},"bunx","bunx skills add garrytan\u002Fgbrain --skill soul-audit",{"tool":77,"command":78},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill soul-audit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fsoul-audit\u002FSKILL.md",[],[82,95,101,123,150,164],{"skillNo":83,"name":84,"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":85,"categories":86,"keywords":87,"publishedAt":44},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[88,89,90,91,92,93,94],"query helper","helper","query","search","page","find","false",{"skillNo":96,"name":97,"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":98,"categories":99,"keywords":100,"publishedAt":44},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[97],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":44},"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",[],[108,109,110,111,112,92,113,114,38,115,90,116,117,118,119,120,121,122,91],"brain ops","brain","ops","true","attribution","read","write","look","pages","people","with","enrich","web","path","source",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":134,"publishedAt":44},"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",[129],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[135,136,137,138,139,91,140,141,142,90,94,143,144,145,146,147,148,149],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":44},"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",[],[157,158,159,91,160,94,161,162,163],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":44},"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",[],[171,172,173,116,109,174,175,114,176,111,91,177],"deal memo","deal","memo","draft","investment","history","founder"]