[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JPWFFV5K1W68AT6G3AT7V":3,"skill-same:01M71JPWFFV5K1W68AT6G3AT7V":124},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":47,"commitSha":48,"skillDirectory":5,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M71JPWFFV5K1W68AT6G3AT7V","spectrum",null,"Build or review messaging agents with Photon Spectrum (`spectrum-ts`). Use for Spectrum setup, messages and content, spaces and users, provider capabilities, iMessage\u002FWhatsApp\u002FTerminal integrations, custom platforms, lifecycle, or production message-processing architecture.","caezium\u002Fskills","caezium","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F113233555?v=4","01M71JB77ZPBAWEK009Y2W8BP7","Henry Zhang","01M71JB792NVXCWSYD27HQ0964",3,"MIT","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"architecture","spaces","terminal","build","imessage","message","with","users","review","capabilities","use","custom","lifecycle","messages","provider","for","integrations","processing","messaging","2026-11-10 10:12:30",false,"---\nname: spectrum\ndescription: >\n  Build or review messaging agents with Photon Spectrum (`spectrum-ts`). Use for Spectrum setup, messages and\n  content, spaces and users, provider capabilities, iMessage\u002FWhatsApp\u002FTerminal integrations, custom platforms,\n  lifecycle, or production message-processing architecture.\nlicense: MIT\nmetadata:\n  author: photon-hq\n  version: '2.1.0'\n---\n\n# Spectrum\n\nSpectrum is Photon's unified messaging SDK. Write handler logic against one `app.messages` stream and deliver it through iMessage, WhatsApp Business, Terminal, or a custom provider. This skill targets **[`spectrum-ts`](https:\u002F\u002Fgithub.com\u002Fphoton-hq\u002Fspectrum-ts)** 12.2.0; its code samples are TypeScript.\n\n## Contract gate\n\nIdentify the provider and load its topic file before writing provider-specific code. A sample is complete only when every import, method, content shape, platform ID, fallback, and thrown error belongs to `spectrum-ts` 12.2.0 and the selected provider contract. The universal method existing does not prove that every provider implements it; read [`capability-semantics.md`](.\u002Fcapability-semantics.md) whenever support affects correctness.\n\n## How this skill is organized\n\nEach topic lives in its own file in this directory. Read the file relevant to the user's question.\n\n| File | When to consult |\n|---|---|\n| [`getting-started.md`](.\u002Fgetting-started.md) | Installation, the `Spectrum()` app instance, multi-platform setup, the four core primitives. |\n| [`messages.md`](.\u002Fmessages.md) | Receiving messages, the `Message` shape, narrowing on `content.type`, filtering own messages. |\n| [`content.md`](.\u002Fcontent.md) | Content builders for outgoing messages: `text`, `markdown`, `attachment`, `voice`, `contact`, `richlink`, `app`, `poll`, `group`, `custom`. |\n| [`spaces-and-users.md`](.\u002Fspaces-and-users.md) | The `Space` interface, typing indicators, `responding`, creating DMs and groups. |\n| [`reactions-and-replies.md`](.\u002Freactions-and-replies.md) | `message.react(...)`, threaded `message.reply(...)`, when to use which. |\n| [`capability-semantics.md`](.\u002Fcapability-semantics.md) | Native support vs fallback, warn-and-skip, accepted no-op, and thrown errors. |\n| [`platform-narrowing.md`](.\u002Fplatform-narrowing.md) | Recovering platform-specific types from generic Spectrum primitives. |\n| [`providers\u002Fimessage.md`](.\u002Fproviders\u002Fimessage.md) | iMessage — separate cloud\u002Flocal providers, shared\u002Fdedicated cloud line model, per-phone routing, message effects, tapbacks. |\n| [`providers\u002Fterminal.md`](.\u002Fproviders\u002Fterminal.md) | Terminal TUI provider — chat sidebar, reactions, replies, attachments, slash commands. |\n| [`providers\u002Fwhatsapp-business.md`](.\u002Fproviders\u002Fwhatsapp-business.md) | WhatsApp Business Cloud API. **1:1 only**. |\n| [`custom-events-and-lifecycle.md`](.\u002Fcustom-events-and-lifecycle.md) | Per-provider event streams (`app.typing`, etc.), `app.stop()`, signal handling. |\n| [`custom-platforms.md`](.\u002Fcustom-platforms.md) | Authoring your own provider with `definePlatform` — full field reference. |\n| [`best-practices.md`](.\u002Fbest-practices.md) | Production architecture patterns Photon uses internally — debounce pipeline, in-flight cancellation, carry-forward, idempotent retries, per-resource memory, job-failure audit log. |\n\n## See also\n\n- [Spectrum docs](https:\u002F\u002Fphoton.codes\u002Fdocs\u002Fspectrum-ts\u002Fgetting-started)\n- [`spectrum-ts` on GitHub](https:\u002F\u002Fgithub.com\u002Fphoton-hq\u002Fspectrum-ts)\n","# Spectrum\n\nSpectrum is Photon's unified messaging SDK. Write handler logic against one `app.messages` stream and deliver it through iMessage, WhatsApp Business, Terminal, or a custom provider. This skill targets **[`spectrum-ts`](https:\u002F\u002Fgithub.com\u002Fphoton-hq\u002Fspectrum-ts)** 12.2.0; its code samples are TypeScript.\n\n## Contract gate\n\nIdentify the provider and load its topic file before writing provider-specific code. A sample is complete only when every import, method, content shape, platform ID, fallback, and thrown error belongs to `spectrum-ts` 12.2.0 and the selected provider contract. The universal method existing does not prove that every provider implements it; read [`capability-semantics.md`](.\u002Fcapability-semantics.md) whenever support affects correctness.\n\n## How this skill is organized\n\nEach topic lives in its own file in this directory. Read the file relevant to the user's question.\n\n| File | When to consult |\n|---|---|\n| [`getting-started.md`](.\u002Fgetting-started.md) | Installation, the `Spectrum()` app instance, multi-platform setup, the four core primitives. |\n| [`messages.md`](.\u002Fmessages.md) | Receiving messages, the `Message` shape, narrowing on `content.type`, filtering own messages. |\n| [`content.md`](.\u002Fcontent.md) | Content builders for outgoing messages: `text`, `markdown`, `attachment`, `voice`, `contact`, `richlink`, `app`, `poll`, `group`, `custom`. |\n| [`spaces-and-users.md`](.\u002Fspaces-and-users.md) | The `Space` interface, typing indicators, `responding`, creating DMs and groups. |\n| [`reactions-and-replies.md`](.\u002Freactions-and-replies.md) | `message.react(...)`, threaded `message.reply(...)`, when to use which. |\n| [`capability-semantics.md`](.\u002Fcapability-semantics.md) | Native support vs fallback, warn-and-skip, accepted no-op, and thrown errors. |\n| [`platform-narrowing.md`](.\u002Fplatform-narrowing.md) | Recovering platform-specific types from generic Spectrum primitives. |\n| [`providers\u002Fimessage.md`](.\u002Fproviders\u002Fimessage.md) | iMessage — separate cloud\u002Flocal providers, shared\u002Fdedicated cloud line model, per-phone routing, message effects, tapbacks. |\n| [`providers\u002Fterminal.md`](.\u002Fproviders\u002Fterminal.md) | Terminal TUI provider — chat sidebar, reactions, replies, attachments, slash commands. |\n| [`providers\u002Fwhatsapp-business.md`](.\u002Fproviders\u002Fwhatsapp-business.md) | WhatsApp Business Cloud API. **1:1 only**. |\n| [`custom-events-and-lifecycle.md`](.\u002Fcustom-events-and-lifecycle.md) | Per-provider event streams (`app.typing`, etc.), `app.stop()`, signal handling. |\n| [`custom-platforms.md`](.\u002Fcustom-platforms.md) | Authoring your own provider with `definePlatform` — full field reference. |\n| [`best-practices.md`](.\u002Fbest-practices.md) | Production architecture patterns Photon uses internally — debounce pipeline, in-flight cancellation, carry-forward, idempotent retries, per-resource memory, job-failure audit log. |\n\n## See also\n\n- [Spectrum docs](https:\u002F\u002Fphoton.codes\u002Fdocs\u002Fspectrum-ts\u002Fgetting-started)\n- [`spectrum-ts` on GitHub](https:\u002F\u002Fgithub.com\u002Fphoton-hq\u002Fspectrum-ts)\n",{"name":5,"license":15,"metadata":43,"description":46},{"author":44,"version":45},"photon-hq","2.1.0","Build or review messaging agents with Photon Spectrum (`spectrum-ts`). Use for Spectrum setup, messages and content, spaces and users, provider capabilities, iMessage\u002FWhatsApp\u002FTerminal integrations, custom platforms, lifecycle, or production message-processing architecture.\n","main","6ef866230c1ba3459fd08fc65141dfd37fffd41a",0,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills","https:\u002F\u002Fskills.henryzh.dev","https:\u002F\u002Fgithub.com\u002Fcaezium","henryzh.dev","quant, data science, full-stack, robotics.\r\nbuilding cool stuff","2026-08-24 19:21:44",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add caezium\u002Fskills --skill spectrum",{"tool":62,"command":63},"bunx","bunx skills add caezium\u002Fskills --skill spectrum",{"tool":65,"command":66},"pnpm","pnpm dlx skills add caezium\u002Fskills --skill spectrum","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002FSKILL.md",true,[70,76,80,84,88,92,96,100,104,108,112,116,120],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"best-practices.md","REFERENCE","参考文档",12015,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fbest-practices.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"capability-semantics.md",2122,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fcapability-semantics.md",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"content.md",4449,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fcontent.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"custom-events-and-lifecycle.md",1389,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fcustom-events-and-lifecycle.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"custom-platforms.md",7528,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fcustom-platforms.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"getting-started.md",4397,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fgetting-started.md",{"path":97,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":98,"sourceHtmlUrl":99},"messages.md",4490,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fmessages.md",{"path":101,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":102,"sourceHtmlUrl":103},"platform-narrowing.md",1764,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fplatform-narrowing.md",{"path":105,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":106,"sourceHtmlUrl":107},"providers\u002Fimessage.md",7049,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fproviders\u002Fimessage.md",{"path":109,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":110,"sourceHtmlUrl":111},"providers\u002Fterminal.md",1964,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fproviders\u002Fterminal.md",{"path":113,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":114,"sourceHtmlUrl":115},"providers\u002Fwhatsapp-business.md",1040,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fproviders\u002Fwhatsapp-business.md",{"path":117,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":118,"sourceHtmlUrl":119},"reactions-and-replies.md",1259,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Freactions-and-replies.md",{"path":121,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":122,"sourceHtmlUrl":123},"spaces-and-users.md",3792,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fspectrum\u002Fspaces-and-users.md",[125,147,175,193,214,236],{"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":141,"publishedAt":38},"01M71JT4RYCAS18RF6003YYR1D","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwriting-for-agents\u002FSKILL.md",[131,136],{"categoryNo":132,"categoryName":133,"taxonomyType":134,"taxonomyTypeDesc":135},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":137,"categoryName":138,"taxonomyType":139,"taxonomyTypeDesc":140},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[142,34,143,144,29,145,146],"writing for agents","writing","editing","documents","when",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":38},"01M71JT0GES4AZ5ADH8EADNN1Z","wrangler","Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwrangler\u002FSKILL.md",[153],{"categoryNo":154,"categoryName":155,"taxonomyType":134,"taxonomyTypeDesc":135},"01JBSEEDCAT000000000000010","后端与接口",[149,157,158,159,160,161,162,163,164,165,166,167,168,34,169,170,171,172,173,174],"cloudflare","d1","knowledge","workflows","cli","secrets","commands","syntax","cloudflare workers","r2","queues","running","containers","correct","load","workers","best practices","store",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":38},"01M71JSWX4R203M32K9A18AAW8","workers-best-practices","Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fworkers-best-practices\u002FSKILL.md",[],[182,172,173,183,184,185,34,157,186,159,187,149,143,171,146,188,189,190,191,192],"workers best practices","observability","reviews","promises","worker","new","code","common","streaming","state","anti-patterns",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":38},"01M71JST6P88MXGT2MWDTPJGEG","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwizard\u002FSKILL.md",[],[195,168,200,34,201,202,203,204,29,205,146,206,207,208,209,210,211,212,213,162],"setting","up","ci","provisioning infrastructure","only","invoke","Bash","one","interactive","can","credentials","dashboard","generate","human",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":218,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":38},"01M71JSQ95S7BQ61DAPN95X2W4","why","Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available evidence sources, searches each relevant category, and returns a cited read on decisions and tradeoffs. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FSKILL.md",[],[216,222,223,224,225,34,226,227,29,228,229,230,231,232,233,234,235],"sources","thresholds","evidence","relevant","runtime","design","decisions","work","how","behavior","read","data","rationale","returns",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":245,"publishedAt":38},"01M71JSMHFVSH8HK8GXN6YAX6J","week-prep","Generate a briefing with calendar, tasks, and attention flags. Use for \"week prep\", \"briefing\", or \"what's on this week\".","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fweek-prep\u002FSKILL.md",[242],{"categoryNo":243,"categoryName":244,"taxonomyType":134,"taxonomyTypeDesc":135},"01JBSEEDCAT000000000000023","Skill与智能体开发",[246,247,248,249,250,34,251,32,252,253,29,206,254,25,255,212,256,232,257,258],"week prep","prep","deep","attention","get","search","briefing","MCP","tasks","slack","calendar","flags","grep"]