[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70M93VBZX8RMB9JNN6N9Z33":3,"skill-same:01M70M93VBZX8RMB9JNN6N9Z33":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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":76},"01M70M93VBZX8RMB9JNN6N9Z33","webhook-transforms",null,"Generic framework for converting external events (SMS, meetings, social mentions)\ninto brain-ingestible signals. Define a transform function, register a webhook URL,\nand incoming events get processed through the brain pipeline.","shengdabai\u002FTony-Claude-Code-Skills","shengdabai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F116417419?v=4","01M70F6D2WY5PQV5A92BKYJQEW","Tony Sheng","01M70F6D3GAAAYZ5H4CC1G8VXM",3,"MIT","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fgbrain-webhook-transforms\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"transforms","webhook transforms","webhook","meetings","signals","URL","define","true","up","social","search","event","pipeline","page","for","sms","generic","get","register","SET","2026-11-10 10:12:30",false,"---\nname: webhook-transforms\nversion: 1.0.0\ndescription: |\n  Generic framework for converting external events (SMS, meetings, social mentions)\n  into brain-ingestible signals. Define a transform function, register a webhook URL,\n  and incoming events get processed through the brain pipeline.\ntriggers:\n  - \"set up webhook\"\n  - \"process webhook event\"\n  - \"transform this event\"\ntools:\n  - put_page\n  - add_timeline_entry\n  - search\nmutating: true\n---\n\n# Webhook Transforms\n\n## Contract\n\nThis skill guarantees:\n- External events are transformed into brain pages with proper citations\n- Raw payloads are preserved (dead-letter queue if transform fails)\n- Entity extraction runs on every transformed event\n- Input sanitization: no raw HTML\u002Fscript passes to brain pages\n- Error handling: transform failure logs raw payload, retries once\n\n## Phases\n\n1. **Define transform.** Map event schema to brain page format:\n   - Input: raw webhook payload (JSON)\n   - Output: brain page content (markdown) + metadata (slug, type, citations)\n   - Must sanitize: strip HTML tags, escape script content\n\n2. **Register webhook URL.** Provide the external service with the webhook endpoint.\n\n3. **On event received:**\n   - Parse payload\n   - Run transform function\n   - Write brain page via `gbrain put`\n   - Extract entities, run enrichment\n   - Add timeline entries to mentioned entities\n   - Sync: `gbrain sync`\n\n4. **Error handling:**\n   - If transform throws: log raw payload to `_dead-letter\u002F{timestamp}.md`\n   - Surface error type to agent\n   - Retry once\n   - Don't lose events\n\n## Example Transforms\n\n### SMS Received\n```\nInput: {from: \"+1555...\", body: \"Meeting moved to 3pm\", timestamp: \"...\"}\nOutput: Timeline entry on sender's brain page + task update if action item detected\n```\n\n### Meeting Completed\n```\nInput: {title: \"Weekly sync\", attendees: [...], transcript: \"...\", summary: \"...\"}\nOutput: Delegate to meeting-ingestion skill\n```\n\n### Social Mention\n```\nInput: {platform: \"twitter\", author: \"@handle\", text: \"...\", url: \"...\"}\nOutput: Brain page in media\u002F + entity extraction + backlinks\n```\n\n## Output Format\n\nEvent transformed and written to brain. Report: \"Webhook: {event_type} from {source}\n→ {brain_page_path}\"\n\n## Anti-Patterns\n\n- Passing raw HTML\u002Fscript to brain pages (XSS risk)\n- Silently dropping events when transform fails (use dead-letter queue)\n- Processing webhooks without entity extraction\n- Not sanitizing external input before brain writes\n","# Webhook Transforms\n\n## Contract\n\nThis skill guarantees:\n- External events are transformed into brain pages with proper citations\n- Raw payloads are preserved (dead-letter queue if transform fails)\n- Entity extraction runs on every transformed event\n- Input sanitization: no raw HTML\u002Fscript passes to brain pages\n- Error handling: transform failure logs raw payload, retries once\n\n## Phases\n\n1. **Define transform.** Map event schema to brain page format:\n   - Input: raw webhook payload (JSON)\n   - Output: brain page content (markdown) + metadata (slug, type, citations)\n   - Must sanitize: strip HTML tags, escape script content\n\n2. **Register webhook URL.** Provide the external service with the webhook endpoint.\n\n3. **On event received:**\n   - Parse payload\n   - Run transform function\n   - Write brain page via `gbrain put`\n   - Extract entities, run enrichment\n   - Add timeline entries to mentioned entities\n   - Sync: `gbrain sync`\n\n4. **Error handling:**\n   - If transform throws: log raw payload to `_dead-letter\u002F{timestamp}.md`\n   - Surface error type to agent\n   - Retry once\n   - Don't lose events\n\n## Example Transforms\n\n### SMS Received\n```\nInput: {from: \"+1555...\", body: \"Meeting moved to 3pm\", timestamp: \"...\"}\nOutput: Timeline entry on sender's brain page + task update if action item detected\n```\n\n### Meeting Completed\n```\nInput: {title: \"Weekly sync\", attendees: [...], transcript: \"...\", summary: \"...\"}\nOutput: Delegate to meeting-ingestion skill\n```\n\n### Social Mention\n```\nInput: {platform: \"twitter\", author: \"@handle\", text: \"...\", url: \"...\"}\nOutput: Brain page in media\u002F + entity extraction + backlinks\n```\n\n## Output Format\n\nEvent transformed and written to brain. Report: \"Webhook: {event_type} from {source}\n→ {brain_page_path}\"\n\n## Anti-Patterns\n\n- Passing raw HTML\u002Fscript to brain pages (XSS risk)\n- Silently dropping events when transform fails (use dead-letter queue)\n- Processing webhooks without entity extraction\n- Not sanitizing external input before brain writes\n",{"name":5,"tools":44,"version":47,"mutating":48,"triggers":49,"description":53},[45,46,29],"put_page","add_timeline_entry","1.0.0",true,[50,51,52],"set up webhook","process webhook event","transform this event","Generic framework for converting external events (SMS, meetings, social mentions)\ninto brain-ingestible signals. Define a transform function, register a webhook URL,\nand incoming events get processed through the brain pipeline.\n","main","7850740bd837adb32f0a109ab2af82482196c6f2","skills\u002Fgbrain-webhook-transforms",1,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills","https:\u002F\u002Fzturnsgo.com","https:\u002F\u002Fgithub.com\u002Fshengdabai","https:\u002F\u002Fzturnsgo.com\u002F","AI × education creator — producer, not consumer. Taught 6,000+ learners; shipping learning tools & daily essays with Claude Code, practicing @xiaolai's way 🥋","2026-11-01 21:28:23",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":48},[66,69,72],{"tool":67,"command":68},"npx","npx skills add shengdabai\u002FTony-Claude-Code-Skills --skill webhook-transforms",{"tool":70,"command":71},"bunx","bunx skills add shengdabai\u002FTony-Claude-Code-Skills --skill webhook-transforms",{"tool":73,"command":74},"pnpm","pnpm dlx skills add shengdabai\u002FTony-Claude-Code-Skills --skill webhook-transforms","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fgbrain-webhook-transforms\u002FSKILL.md",[],[78,97,130,157,179,199],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":39},"01M70P17DAD4C1C47NPH6A96EM","xiaolai-methodology","以李笑来(Li Xiaolai)的思考方式、方法论与表达风格,为用户做全方位 1-on-1 教练指导,覆盖创业、赚钱、投资、学习、自学、读书写作、用 AI、以及人生心态与自我管理。当用户提到 \"李笑来\"、\"笑来\"、\"笑来老师\"、\"扮演李笑来\"、\"找笑来聊聊\"、\"笑来怎么看\"、\"xiaolai\"、\"把时间当作朋友\"、\"通往财富自由之路\"、\"定投改变命运\"、\"韭菜的自我修养\"、\"自学是门手艺\"、\"让时间陪你慢慢变富\"、\"七年就是一辈子\"、\"元认知\"、\"活在未来\"、\"复利\u002F长期主义\"、\"践行\"、\"痴迷改进\"、\"个人商业模式\u002F出售时间\"、\"睡后收入\"、\"定投\"、\"财富自由\"、\"操作系统升级\"、\"最少必要知识\"、\"北极星提示词\"、\"用 AI 该怎么学\u002F思考\" 等任一触发词,或当用户带着关于创业\u002F赚钱\u002F投资\u002F学习\u002F职业\u002F重大人生决策的困惑、希望被人用笑来式的「逻辑 + 大白话 + 类比 + 重新定义 + 践行导向」来点醒和指导时,自动进入李笑来教练模式。","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fxiaolai-methodology\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",[90,91,92,93,94,95,96],"methodology","xiaolai","xiaolai methodology","朋友","投资","writing","收入",{"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":111,"publishedAt":39},"01M70P13NB9YP7ACJR1S861CDS","zread","Produce and consume a wiki-style knowledge base for a code repository via the `zread` CLI and its on-disk output under `.\u002F.zread\u002Fwiki\u002F`. Use this skill whenever the user wants to understand, onboard onto, explore, summarize, map, or get an overview of an unfamiliar codebase; asks for architecture docs, a project wiki, a repo walkthrough, module\u002Fpackage explanations, or \"what does this repo do\"; wants to generate, regenerate, resume, browse, or serve code documentation locally; or mentions zread \u002F zread.ai directly. Also use it proactively before diving into a large unknown repo — if `.\u002F.zread\u002Fwiki\u002Fcurrent` exists, read the generated pages instead of crawling source file-by-file; if it doesn't, consider offering to run `zread generate`. The trigger is the intent (understand a codebase through generated docs), not the literal word \"zread\".","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fzread\u002FSKILL.md",[103,106],{"categoryNo":104,"categoryName":105,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[99,112,113,114,115,116,36,117,118,119,120,121,122,123,124,125,126,127,128,129],"knowledge","wiki","explore","walkthrough","project","knowledge base","run","generate","intent","cli","map","documentation","project wiki","disk","architecture","code","unknown","generated",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":140,"publishedAt":39},"01M70P10S4SWMZQ8BJAFBFDRW3","youtube","Launch the YouTube Creator Agent to auto-generate videos.\nUse when: user types \u002Fyoutube, wants to create YouTube videos,\ngenerate video content, or upload to YouTube.\nKeywords: youtube, video, 视频, 创作视频, 发布视频","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube\u002FSKILL.md",[136,137],{"categoryNo":104,"categoryName":105,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":138,"categoryName":139,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000036","内容创作者",[132,141,142,143,144,145,146,147,119,148,149,150,151,152,153,154,155,156],"user","content","视频","creator","generate video","videos","launch","video content","create","upload","when","use","auto","types","Video","创作",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":39},"01M70P0YE95D8BACZCGV8BK90K","youtube-script-sync","Sync, update, or optimize Tony's GetNote knowledge base `Youtube视频逐字稿` by turning each parent recording or first-person idea note into an idempotent child note containing a directly recordable YouTube long-video or Shorts script. Use when the user says “更新\u002F同步\u002F优化 Youtube视频逐字稿知识库”, or says “更新\u002F同步\u002F优化该知识库” while this knowledge base is the active context.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-script-sync\u002FSKILL.md",[163],{"categoryNo":104,"categoryName":105,"taxonomyType":87,"taxonomyTypeDesc":88},[165,166,132,167,168,155,169,170,171,172,173,174,175,176,117,177,151,152,112,178],"sync","script","youtube script sync","recording","shorts","first","base","person","update","active","child","optimize","idempotent","long",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":189,"publishedAt":39},"01M70P0WMV5XT0EEC0N445PW07","writing-skills","How to write SKILL.md files that trigger reliably and teach effectively. Use when creating, improving, or reviewing Claude Code skills.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-skills\u002FSKILL.md",[185,186,187,188],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":104,"categoryName":105,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},{"categoryNo":138,"categoryName":139,"taxonomyType":109,"taxonomyTypeDesc":110},[190,95,191,192,193,194,127,151,152,195,196,197,198],"writing skills","how","teach","write skill","write","claude code skills","files","how to","trigger",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":207,"publishedAt":39},"01M70P0SJFR4YVJQBGMHKGSKXT","writing-rules","How to write .claude\u002Frules\u002F files that Claude actually follows. Use when creating, improving, or reviewing project rules.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-rules\u002FSKILL.md",[205,206],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":138,"categoryName":139,"taxonomyType":109,"taxonomyTypeDesc":110},[208,95,209,116,210,196,151,191,194,152,197],"Rules","writing rules","project rules"]