[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7188RSSRB3Y3VWWT6Z0FFY4":3,"skill-same:01M7188RSSRB3Y3VWWT6Z0FFY4":71},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":6,"updatedAt":57,"install":58,"resources":70},"01M7188RSSRB3Y3VWWT6Z0FFY4","configure",null,"Set up the Discord channel — save the bot token and review access policy. Use when the user pastes a Discord bot token, asks to configure Discord, asks \"how do I set this up\" or \"who can reach me,\" or wants to check channel status.","anthropics\u002Fclaude-plugins-official","anthropics","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F76263028?v=4","01M697XGDPXJAVQ8391V2BCYTE","Anthropic","01M7188MR49TZ9N2ZKPXJ7M7HY",46906,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fexternal_plugins\u002Fdiscord\u002Fskills\u002Fconfigure\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"use","when","can","true","mkdir","ls","me","do","discord bot","up","bot","check","access","Bash","how","SET","policy","discord","review","2026-11-10 10:12:30",false,"---\nname: configure\ndescription: Set up the Discord channel — save the bot token and review access policy. Use when the user pastes a Discord bot token, asks to configure Discord, asks \"how do I set this up\" or \"who can reach me,\" or wants to check channel status.\nuser-invocable: true\nallowed-tools:\n  - Read\n  - Write\n  - Bash(ls *)\n  - Bash(mkdir *)\n---\n\n# \u002Fdiscord:configure — Discord Channel Setup\n\nWrites the bot token to `~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` and orients the\nuser on access policy. The server reads both files at boot.\n\nArguments passed: `$ARGUMENTS`\n\n---\n\n## Dispatch on arguments\n\n### No args — status and guidance\n\nRead both state files and give the user a complete picture:\n\n1. **Token** — check `~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` for\n   `DISCORD_BOT_TOKEN`. Show set\u002Fnot-set; if set, show first 6 chars masked.\n\n2. **Access** — read `~\u002F.claude\u002Fchannels\u002Fdiscord\u002Faccess.json` (missing file\n   = defaults: `dmPolicy: \"pairing\"`, empty allowlist). Show:\n   - DM policy and what it means in one line\n   - Allowed senders: count, and list display names or snowflakes\n   - Pending pairings: count, with codes and display names if any\n   - Guild channels opted in: count\n\n3. **What next** — end with a concrete next step based on state:\n   - No token → *\"Run `\u002Fdiscord:configure \u003Ctoken>` with your bot token from\n     the Developer Portal → Bot → Reset Token.\"*\n   - Token set, policy is pairing, nobody allowed → *\"DM your bot on\n     Discord. It replies with a code; approve with `\u002Fdiscord:access pair\n     \u003Ccode>`.\"*\n   - Token set, someone allowed → *\"Ready. DM your bot to reach the\n     assistant.\"*\n\n**Push toward lockdown — always.** The goal for every setup is `allowlist`\nwith a defined list. `pairing` is not a policy to stay on; it's a temporary\nway to capture Discord snowflakes you don't know. Once the IDs are in,\npairing has done its job and should be turned off.\n\nDrive the conversation this way:\n\n1. Read the allowlist. Tell the user who's in it.\n2. Ask: *\"Is that everyone who should reach you through this bot?\"*\n3. **If yes and policy is still `pairing`** → *\"Good. Let's lock it down so\n   nobody else can trigger pairing codes:\"* and offer to run\n   `\u002Fdiscord:access policy allowlist`. Do this proactively — don't wait to\n   be asked.\n4. **If no, people are missing** → *\"Have them DM the bot; you'll approve\n   each with `\u002Fdiscord:access pair \u003Ccode>`. Run this skill again once\n   everyone's in and we'll lock it.\"* Or, if they can get snowflakes\n   directly: *\"Enable Developer Mode in Discord (User Settings → Advanced),\n   right-click them → Copy User ID, then `\u002Fdiscord:access allow \u003Cid>`.\"*\n5. **If the allowlist is empty and they haven't paired themselves yet** →\n   *\"DM your bot to capture your own ID first. Then we'll add anyone else\n   and lock it down.\"*\n6. **If policy is already `allowlist`** → confirm this is the locked state.\n   If they need to add someone, Copy User ID is the clean path — no need to\n   reopen pairing.\n\nDiscord already gates reach (shared-server requirement + Public Bot toggle),\nbut that's not a substitute for locking the allowlist. Never frame `pairing`\nas the correct long-term choice. Don't skip the lockdown offer.\n\n### `\u003Ctoken>` — save it\n\n1. Treat `$ARGUMENTS` as the token (trim whitespace). Discord bot tokens are\n   long base64-ish strings, typically starting `MT` or `Nz`. Generated from\n   Developer Portal → Bot → Reset Token; only shown once.\n2. `mkdir -p ~\u002F.claude\u002Fchannels\u002Fdiscord`\n3. Read existing `.env` if present; update\u002Fadd the `DISCORD_BOT_TOKEN=` line,\n   preserve other keys. Write back, no quotes around the value.\n4. `chmod 600 ~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` — the token is a credential.\n5. Confirm, then show the no-args status so the user sees where they stand.\n\n### `clear` — remove the token\n\nDelete the `DISCORD_BOT_TOKEN=` line (or the file if that's the only line).\n\n---\n\n## Implementation notes\n\n- The channels dir might not exist if the server hasn't run yet. Missing file\n  = not configured, not an error.\n- The server reads `.env` once at boot. Token changes need a session restart\n  or `\u002Freload-plugins`. Say so after saving.\n- `access.json` is re-read on every inbound message — policy changes via\n  `\u002Fdiscord:access` take effect immediately, no restart.\n","# \u002Fdiscord:configure — Discord Channel Setup\n\nWrites the bot token to `~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` and orients the\nuser on access policy. The server reads both files at boot.\n\nArguments passed: `$ARGUMENTS`\n\n---\n\n## Dispatch on arguments\n\n### No args — status and guidance\n\nRead both state files and give the user a complete picture:\n\n1. **Token** — check `~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` for\n   `DISCORD_BOT_TOKEN`. Show set\u002Fnot-set; if set, show first 6 chars masked.\n\n2. **Access** — read `~\u002F.claude\u002Fchannels\u002Fdiscord\u002Faccess.json` (missing file\n   = defaults: `dmPolicy: \"pairing\"`, empty allowlist). Show:\n   - DM policy and what it means in one line\n   - Allowed senders: count, and list display names or snowflakes\n   - Pending pairings: count, with codes and display names if any\n   - Guild channels opted in: count\n\n3. **What next** — end with a concrete next step based on state:\n   - No token → *\"Run `\u002Fdiscord:configure \u003Ctoken>` with your bot token from\n     the Developer Portal → Bot → Reset Token.\"*\n   - Token set, policy is pairing, nobody allowed → *\"DM your bot on\n     Discord. It replies with a code; approve with `\u002Fdiscord:access pair\n     \u003Ccode>`.\"*\n   - Token set, someone allowed → *\"Ready. DM your bot to reach the\n     assistant.\"*\n\n**Push toward lockdown — always.** The goal for every setup is `allowlist`\nwith a defined list. `pairing` is not a policy to stay on; it's a temporary\nway to capture Discord snowflakes you don't know. Once the IDs are in,\npairing has done its job and should be turned off.\n\nDrive the conversation this way:\n\n1. Read the allowlist. Tell the user who's in it.\n2. Ask: *\"Is that everyone who should reach you through this bot?\"*\n3. **If yes and policy is still `pairing`** → *\"Good. Let's lock it down so\n   nobody else can trigger pairing codes:\"* and offer to run\n   `\u002Fdiscord:access policy allowlist`. Do this proactively — don't wait to\n   be asked.\n4. **If no, people are missing** → *\"Have them DM the bot; you'll approve\n   each with `\u002Fdiscord:access pair \u003Ccode>`. Run this skill again once\n   everyone's in and we'll lock it.\"* Or, if they can get snowflakes\n   directly: *\"Enable Developer Mode in Discord (User Settings → Advanced),\n   right-click them → Copy User ID, then `\u002Fdiscord:access allow \u003Cid>`.\"*\n5. **If the allowlist is empty and they haven't paired themselves yet** →\n   *\"DM your bot to capture your own ID first. Then we'll add anyone else\n   and lock it down.\"*\n6. **If policy is already `allowlist`** → confirm this is the locked state.\n   If they need to add someone, Copy User ID is the clean path — no need to\n   reopen pairing.\n\nDiscord already gates reach (shared-server requirement + Public Bot toggle),\nbut that's not a substitute for locking the allowlist. Never frame `pairing`\nas the correct long-term choice. Don't skip the lockdown offer.\n\n### `\u003Ctoken>` — save it\n\n1. Treat `$ARGUMENTS` as the token (trim whitespace). Discord bot tokens are\n   long base64-ish strings, typically starting `MT` or `Nz`. Generated from\n   Developer Portal → Bot → Reset Token; only shown once.\n2. `mkdir -p ~\u002F.claude\u002Fchannels\u002Fdiscord`\n3. Read existing `.env` if present; update\u002Fadd the `DISCORD_BOT_TOKEN=` line,\n   preserve other keys. Write back, no quotes around the value.\n4. `chmod 600 ~\u002F.claude\u002Fchannels\u002Fdiscord\u002F.env` — the token is a credential.\n5. Confirm, then show the no-args status so the user sees where they stand.\n\n### `clear` — remove the token\n\nDelete the `DISCORD_BOT_TOKEN=` line (or the file if that's the only line).\n\n---\n\n## Implementation notes\n\n- The channels dir might not exist if the server hasn't run yet. Missing file\n  = not configured, not an error.\n- The server reads `.env` once at boot. Token changes need a session restart\n  or `\u002Freload-plugins`. Say so after saving.\n- `access.json` is re-read on every inbound message — policy changes via\n  `\u002Fdiscord:access` take effect immediately, no restart.\n",{"name":5,"description":7,"allowed-tools":43,"user-invocable":48},[44,45,46,47],"Read","Write","Bash(ls *)","Bash(mkdir *)",true,"main","dceb15d50832e6adf380bedc26dde03d251324b9","external_plugins\u002Fdiscord\u002Fskills\u002Fconfigure",4875,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fplugins","https:\u002F\u002Fgithub.com\u002Fanthropics","https:\u002F\u002Fanthropic.com","2026-11-12 03:40:35",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":48},[60,63,66],{"tool":61,"command":62},"npx","npx skills add anthropics\u002Fclaude-plugins-official --skill configure",{"tool":64,"command":65},"bunx","bunx skills add anthropics\u002Fclaude-plugins-official --skill configure",{"tool":67,"command":68},"pnpm","pnpm dlx skills add anthropics\u002Fclaude-plugins-official --skill configure","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fexternal_plugins\u002Fdiscord\u002Fskills\u002Fconfigure\u002FSKILL.md",[],[72,103,129,152,177,198],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":76,"sourceHtmlUrl":77,"categories":78,"keywords":84,"publishedAt":38},"01M718BVSPNAK6S5NZCYFDBG6E","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fskill-creator\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fskill-creator\u002Fskills\u002Fskill-creator\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[85,86,87,88,89,90,20,91,92,93,94,95,96,97,98,99,100,101,102,19],"skill creator","creator","performance","improve","run evals","new","analysis","create","optimize","variance analysis","run","edit","benchmark","existing skill","evals","for","accuracy","scratch",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":114,"publishedAt":38},"01M718BSVAWJRFN6MRCZZ0QX4X","session-report","Generate an explorable HTML report of Claude Code session usage (tokens, cache, subagents, skills, expensive prompts) from ~\u002F.claude\u002Fprojects transcripts.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fsession-report\u002Fskills\u002Fsession-report\u002FSKILL.md",[109],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[115,116,117,118,119,120,121,122,123,124,125,126,127,128],"session","report","session report","projects","usage","generate","tokens","html report","transcripts","prompts","cache","code","html","subagents",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":138,"publishedAt":38},"01M718BPKHVD214FAS1T4E5XCE","receipts","Generate a personal Claude Code usage & impact report (\"receipts\") from this machine's local session transcripts — for justifying Claude Code usage\u002Fspend to a manager, self-review, or \"what have I been using this for\" check-ins. Mines ~\u002F.claude\u002Fprojects locally (no extra API calls beyond one final write-up), cross-references local git history, and writes a markdown report plus a self-contained HTML receipt to your home directory. Use when the user asks for \"receipts\", an \"impact report\", \"usage report\", wants to \"show my Claude Code activity\", \"prove the value of Claude Code\", or runs `\u002Freceipts`.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Freceipts\u002Fskills\u002Freceipts\u002FSKILL.md",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000030","开发工程师",[131,118,139,28,140,141,20,126,142,37,143,144,120,145,146,147,148,149,150,151],"show","local","impact","api","self","references","markdown","directory","write","git","activity","my","manager",{"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":38},"01M718BJMX0T4691FJQ62GYY5C","project-artifact","Generate and publish a project status artifact — an opinionated, tabbed status page for a project too big for one update (overview & success criteria, the workstream sequence, next steps, plus background, plan, risks & open questions, and decisions\u002FFAQ when they earn a tab) — published with the built-in Artifact tool to a default-private claude.ai page the user can share with teammates. Use when a piece of work spans several workstreams and you want a shareable overview kept current. Each artifact is backed by a small per-project config in the plugin data dir, so refreshing it re-gathers live state, redeploys the same URL, and reports only the delta. For software projects whose workstreams are PRs, also read swe.md (the X.Y PR-numbering convention; pulling PR state with gh\u002Fgit; a per-PR detail block). Needs the built-in Artifact tool (claude.ai login). Not for single-PR changes or public docs.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fproject-artifact\u002Fskills\u002Fproject-artifact\u002FSKILL.md",[],[159,160,161,162,118,163,164,165,166,167,168,20,169,170,171,172,173,174,175,176],"project","artifact","project artifact","project status","re","default","next steps","open","only","SWE","URL","you","reports","publish","work","plan","status page","next",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":184,"publishedAt":38},"01M718BF1TTFP5CM0S5HBW64FJ","skill-development","This skill should be used when the user wants to \"create a skill\", \"add a skill to plugin\", \"write a new skill\", \"improve skill description\", \"organize skill content\", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fplugin-dev\u002Fskills\u002Fskill-development\u002FSKILL.md",[183],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[185,186,187,88,90,188,20,126,92,189,147,190,191,192,193,100,194,195,196,197],"development","skill development","skill to plugin","improve skill","structure","organize","new skill","claude code plugins","add","progressive","best practices","progressive disclosure","plugin",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":205,"publishedAt":38},"01M718BCARZ2J4PW0X3AJCZ8MZ","plugin-structure","This skill should be used when the user asks to \"create a plugin\", \"scaffold a plugin\", \"understand plugin structure\", \"organize plugin components\", \"set up plugin.json\", \"use ${CLAUDE_PLUGIN_ROOT}\", \"add commands\u002Fagents\u002Fskills\u002Fhooks\", \"configure auto-discovery\", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Fplugin-dev\u002Fskills\u002Fplugin-structure\u002FSKILL.md",[204],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[189,206,197,34,207,208,28,209,210,20,5,126,211,212,92,213,214,215,146,216],"Plugin Structure","plugin architecture","hooks","auto-discovery","auto","components","architecture","component","layout","organization","commands"]