[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J46KBDEBCXP229S5DGMMMM":3,"skill-same:01M6J46KBDEBCXP229S5DGMMMM":49},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":32,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M6J46KBDEBCXP229S5DGMMMM","community-manager",null,"MiroShark\u002Fmiroshark-aeon","MiroShark","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F304594232?v=4","01M6J466B8NNAZ4H6NNK3N3TT5","01M6J466FXNNWH622S3B9PC496",20,"MIT","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fdocs\u002Fexamples\u002Fskill-templates\u002Fcommunity-manager\u002FSKILL.md",[],[17,18,19],"community","community manager","manager","2026-11-10 10:12:30",false,"---\nname: [REPLACE: SKILL_NAME]\ndescription: Summary of the [REPLACE: CHANNEL_PLATFORM] channel [REPLACE: CHANNEL_NAME] — top [REPLACE: TOP_N_THREADS] threads + open questions\nmetadata:\n  category: productivity\n  var: \"\"\n  tags:\n    - social\n  requires:\n    - DISCORD_BOT_TOKEN?\n    - DISCORD_CHANNEL_ID?\n    - TELEGRAM_BOT_TOKEN?\n    - TELEGRAM_CHAT_ID?\n    - SLACK_BOT_TOKEN?\n    - SLACK_CHANNEL_ID?\n---\n\n> **${var}** — Optional. Override the channel name. If empty, summarises `[REPLACE: CHANNEL_NAME]`.\n\nToday is ${today}. Read the last 24h of activity in **[REPLACE: CHANNEL_PLATFORM]** channel **[REPLACE: CHANNEL_NAME]** and produce a community digest.\n\n## Required secrets per platform\n\n| Platform | Secrets | Notes |\n|----------|---------|-------|\n| `discord` | `DISCORD_BOT_TOKEN`, `DISCORD_CHANNEL_ID` | Bot must be in the server with `View Channel` + `Read Message History`. |\n| `telegram` | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` | Bot must have been added to the chat (private chats and groups both work). |\n| `slack` | `SLACK_BOT_TOKEN`, `SLACK_CHANNEL_ID` | Bot needs `channels:history` (public) or `groups:history` (private) scope. |\n\nRead the \"Keys set for this run\" line in your run notes, never a shell test (those are refused and cost a turn). If the secrets for `[REPLACE: CHANNEL_PLATFORM]` are not on it, log `COMMUNITY_NO_TOKEN` and exit cleanly.\n\n## Steps\n\n1. **Resolve channel** - the channel is `${var}` if set, else `[REPLACE: CHANNEL_NAME]`. A channel or chat ID is not a credential, so `.\u002Fsecretcurl` does not fill a `{DISCORD_CHANNEL_ID}` style placeholder: print the ID with its own call, `node -e 'console.log(process.env.DISCORD_CHANNEL_ID)'` (or `SLACK_CHANNEL_ID`), and write the printed value into the call literally (the `\u003CCHANNEL_ID>` below). The exact API call depends on `[REPLACE: CHANNEL_PLATFORM]`, one call each:\n\n   - **discord**:\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'discord http=%{http_code}\\n' -H \"Authorization: Bot {DISCORD_BOT_TOKEN}\" \"https:\u002F\u002Fdiscord.com\u002Fapi\u002Fv10\u002Fchannels\u002F\u003CCHANNEL_ID>\u002Fmessages?limit=100\"\n     ```\n   - **telegram** - `getUpdates` polling has limits; better to read the bot's stored offset state from `memory\u002Ftopics\u002F[REPLACE: SKILL_NAME]-tg-offset.json` (Read it, then write the offset in literally):\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'telegram http=%{http_code}\\n' \"https:\u002F\u002Fapi.telegram.org\u002Fbot{TELEGRAM_BOT_TOKEN}\u002FgetUpdates?offset=\u003COFFSET>&limit=100\"\n     ```\n   - **slack** - get the window start with its own call, `date -u -d '24 hours ago' +%s`, and write it in as `\u003COLDEST>`:\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'slack http=%{http_code}\\n' -H \"Authorization: Bearer {SLACK_BOT_TOKEN}\" -G \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history\" -d channel=\u003CCHANNEL_ID> -d oldest=\u003COLDEST> -d limit=200\n     ```\n\n2. **Filter to the last 24h** — drop messages older than `now - 24h`. Drop bot messages (most platforms expose `is_bot` \u002F `bot_id`). Keep replies.\n\n3. **Cluster into threads** — Discord and Slack expose explicit thread\u002Fparent IDs; Telegram doesn't. For Telegram, cluster by reply-chain hops.\n\n4. **Score threads** — for each thread:\n   - **Reach** — unique participants × log(message count).\n   - **Question pressure** — does the parent message end with `?` or contain words like \"how\", \"why\", \"anyone\", \"stuck\"? +5.\n   - **Recency** — within the last 12h gets full marks.\n\n   Pick the top **[REPLACE: TOP_N_THREADS]** threads.\n\n5. **Detect open questions** — scan all parent-level messages. If a message ends with `?` and has zero replies after 6 hours, mark it as `OPEN_QUESTION`. List them separately so the operator can chase.\n\n6. **Write `output\u002Farticles\u002F[REPLACE: SKILL_NAME]-${today}.md`**:\n   ```markdown\n   # [REPLACE: CHANNEL_NAME] — ${today}\n\n   **Volume**: N messages from M participants (vs 7d avg of K).\n\n   ## Top [REPLACE: TOP_N_THREADS] threads\n   1. [Author · timestamp] \"Parent message excerpt...\"\n      → N replies, M reactions\n      → Permalink\n\n   ...\n\n   ## Open questions (no reply > 6h)\n   - [Author] \"Question text...\" → permalink\n\n   ## Volume sparkline (last 7 days)\n   ▁▂▃▅▇▆▄\n   ```\n\n7. **Notify** via `.\u002Fnotify` with a 3-line summary:\n   ```\n   *[REPLACE: CHANNEL_NAME] — ${today}*\n   N messages · M participants · K open questions · top thread: \u003Cone-line>\n   Full digest: \u003Curl>\n   ```\n   Skip the notification on quiet days (volume \u003C 25% of 7d avg AND zero `OPEN_QUESTION`s).\n\n8. **Log** — append to `memory\u002Flogs\u002F${today}.md`:\n   ```\n   ## [REPLACE: SKILL_NAME]\n   - **Channel**: [REPLACE: CHANNEL_PLATFORM]\u002F[REPLACE: CHANNEL_NAME]\n   - **Volume**: messages=N, participants=M, vs_7d_avg=Δ%\n   - **Threads picked**: [REPLACE: TOP_N_THREADS] (of K candidates)\n   - **Open questions**: N\n   - **Status**: COMMUNITY_OK | COMMUNITY_QUIET | COMMUNITY_DEGRADED (api errors)\n   ```\n\n## Network note\n\nDiscord and Slack need their bot token in the `Authorization` header; Telegram puts it in the URL path (`\u002Fbot{TELEGRAM_BOT_TOKEN}\u002F`). A bare `$TOKEN` on a `curl` line is refused by the Bash permission analyzer - so call `.\u002Fsecretcurl` with a `{ENV_NAME}` placeholder instead. The token (injected via the skill's `requires:`) is substituted inside the helper and never appears on the command line, as in the step 1 calls.\n\n**Shell shape.** Each Bash call is one allowed command (pipes are fine). The run refuses a call that sets a variable (`CHANNEL=...`), uses `if` \u002F `for`, tests a key, joins commands with `;`, `&&` or `||`, redirects into a file, or puts a shell variable on a `.\u002Fsecretcurl` line (`$DISCORD_CHANNEL_ID`), and each refusal costs a model turn. So write IDs, offsets and dates into each call literally, save replies with `-o \u002Ftmp\u002F\u003Cfile>`, and write the offset file, the article and the log with Write\u002FEdit.\n\n## Constraints\n\n- **Privacy**. Don't quote DMs or anything from a private channel verbatim into a public notification — paraphrase, attribute by display name only, never include user IDs.\n- **The \"open questions\" section is the most useful output**. Even on a quiet day, if there's an unanswered question, surface it. That's the operator-action signal.\n- **Avoid bot-on-bot loops**. If this skill notifies into the same channel it reads from, filter your own bot's messages out before scoring.\n","> **${var}** — Optional. Override the channel name. If empty, summarises `[REPLACE: CHANNEL_NAME]`.\n\nToday is ${today}. Read the last 24h of activity in **[REPLACE: CHANNEL_PLATFORM]** channel **[REPLACE: CHANNEL_NAME]** and produce a community digest.\n\n## Required secrets per platform\n\n| Platform | Secrets | Notes |\n|----------|---------|-------|\n| `discord` | `DISCORD_BOT_TOKEN`, `DISCORD_CHANNEL_ID` | Bot must be in the server with `View Channel` + `Read Message History`. |\n| `telegram` | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` | Bot must have been added to the chat (private chats and groups both work). |\n| `slack` | `SLACK_BOT_TOKEN`, `SLACK_CHANNEL_ID` | Bot needs `channels:history` (public) or `groups:history` (private) scope. |\n\nRead the \"Keys set for this run\" line in your run notes, never a shell test (those are refused and cost a turn). If the secrets for `[REPLACE: CHANNEL_PLATFORM]` are not on it, log `COMMUNITY_NO_TOKEN` and exit cleanly.\n\n## Steps\n\n1. **Resolve channel** - the channel is `${var}` if set, else `[REPLACE: CHANNEL_NAME]`. A channel or chat ID is not a credential, so `.\u002Fsecretcurl` does not fill a `{DISCORD_CHANNEL_ID}` style placeholder: print the ID with its own call, `node -e 'console.log(process.env.DISCORD_CHANNEL_ID)'` (or `SLACK_CHANNEL_ID`), and write the printed value into the call literally (the `\u003CCHANNEL_ID>` below). The exact API call depends on `[REPLACE: CHANNEL_PLATFORM]`, one call each:\n\n   - **discord**:\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'discord http=%{http_code}\\n' -H \"Authorization: Bot {DISCORD_BOT_TOKEN}\" \"https:\u002F\u002Fdiscord.com\u002Fapi\u002Fv10\u002Fchannels\u002F\u003CCHANNEL_ID>\u002Fmessages?limit=100\"\n     ```\n   - **telegram** - `getUpdates` polling has limits; better to read the bot's stored offset state from `memory\u002Ftopics\u002F[REPLACE: SKILL_NAME]-tg-offset.json` (Read it, then write the offset in literally):\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'telegram http=%{http_code}\\n' \"https:\u002F\u002Fapi.telegram.org\u002Fbot{TELEGRAM_BOT_TOKEN}\u002FgetUpdates?offset=\u003COFFSET>&limit=100\"\n     ```\n   - **slack** - get the window start with its own call, `date -u -d '24 hours ago' +%s`, and write it in as `\u003COLDEST>`:\n     ```bash\n     .\u002Fsecretcurl -s -o \u002Ftmp\u002Fcommunity-messages.json -w 'slack http=%{http_code}\\n' -H \"Authorization: Bearer {SLACK_BOT_TOKEN}\" -G \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history\" -d channel=\u003CCHANNEL_ID> -d oldest=\u003COLDEST> -d limit=200\n     ```\n\n2. **Filter to the last 24h** — drop messages older than `now - 24h`. Drop bot messages (most platforms expose `is_bot` \u002F `bot_id`). Keep replies.\n\n3. **Cluster into threads** — Discord and Slack expose explicit thread\u002Fparent IDs; Telegram doesn't. For Telegram, cluster by reply-chain hops.\n\n4. **Score threads** — for each thread:\n   - **Reach** — unique participants × log(message count).\n   - **Question pressure** — does the parent message end with `?` or contain words like \"how\", \"why\", \"anyone\", \"stuck\"? +5.\n   - **Recency** — within the last 12h gets full marks.\n\n   Pick the top **[REPLACE: TOP_N_THREADS]** threads.\n\n5. **Detect open questions** — scan all parent-level messages. If a message ends with `?` and has zero replies after 6 hours, mark it as `OPEN_QUESTION`. List them separately so the operator can chase.\n\n6. **Write `output\u002Farticles\u002F[REPLACE: SKILL_NAME]-${today}.md`**:\n   ```markdown\n   # [REPLACE: CHANNEL_NAME] — ${today}\n\n   **Volume**: N messages from M participants (vs 7d avg of K).\n\n   ## Top [REPLACE: TOP_N_THREADS] threads\n   1. [Author · timestamp] \"Parent message excerpt...\"\n      → N replies, M reactions\n      → Permalink\n\n   ...\n\n   ## Open questions (no reply > 6h)\n   - [Author] \"Question text...\" → permalink\n\n   ## Volume sparkline (last 7 days)\n   ▁▂▃▅▇▆▄\n   ```\n\n7. **Notify** via `.\u002Fnotify` with a 3-line summary:\n   ```\n   *[REPLACE: CHANNEL_NAME] — ${today}*\n   N messages · M participants · K open questions · top thread: \u003Cone-line>\n   Full digest: \u003Curl>\n   ```\n   Skip the notification on quiet days (volume \u003C 25% of 7d avg AND zero `OPEN_QUESTION`s).\n\n8. **Log** — append to `memory\u002Flogs\u002F${today}.md`:\n   ```\n   ## [REPLACE: SKILL_NAME]\n   - **Channel**: [REPLACE: CHANNEL_PLATFORM]\u002F[REPLACE: CHANNEL_NAME]\n   - **Volume**: messages=N, participants=M, vs_7d_avg=Δ%\n   - **Threads picked**: [REPLACE: TOP_N_THREADS] (of K candidates)\n   - **Open questions**: N\n   - **Status**: COMMUNITY_OK | COMMUNITY_QUIET | COMMUNITY_DEGRADED (api errors)\n   ```\n\n## Network note\n\nDiscord and Slack need their bot token in the `Authorization` header; Telegram puts it in the URL path (`\u002Fbot{TELEGRAM_BOT_TOKEN}\u002F`). A bare `$TOKEN` on a `curl` line is refused by the Bash permission analyzer - so call `.\u002Fsecretcurl` with a `{ENV_NAME}` placeholder instead. The token (injected via the skill's `requires:`) is substituted inside the helper and never appears on the command line, as in the step 1 calls.\n\n**Shell shape.** Each Bash call is one allowed command (pipes are fine). The run refuses a call that sets a variable (`CHANNEL=...`), uses `if` \u002F `for`, tests a key, joins commands with `;`, `&&` or `||`, redirects into a file, or puts a shell variable on a `.\u002Fsecretcurl` line (`$DISCORD_CHANNEL_ID`), and each refusal costs a model turn. So write IDs, offsets and dates into each call literally, save replies with `-o \u002Ftmp\u002F\u003Cfile>`, and write the offset file, the article and the log with Write\u002FEdit.\n\n## Constraints\n\n- **Privacy**. Don't quote DMs or anything from a private channel verbatim into a public notification — paraphrase, attribute by display name only, never include user IDs.\n- **The \"open questions\" section is the most useful output**. Even on a quiet day, if there's an unanswered question, surface it. That's the operator-action signal.\n- **Avoid bot-on-bot loops**. If this skill notifies into the same channel it reads from, filter your own bot's messages out before scoring.\n",{},"main","d3388dfd66c33c15db8eb232fa0d13e18564b629","docs\u002Fexamples\u002Fskill-templates\u002Fcommunity-manager",2,"https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon","https:\u002F\u002Ft.me\u002Fmiroshark_aeon","https:\u002F\u002Fgithub.com\u002FMiroShark","https:\u002F\u002Fwww.miroshark.xyz\u002F","Simulate anything, for $1 & less than 10 min.","2026-11-13 00:17:51",{"source":7,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add MiroShark\u002Fmiroshark-aeon --skill community-manager",{"tool":41,"command":42},"bunx","bunx skills add MiroShark\u002Fmiroshark-aeon --skill community-manager",{"tool":44,"command":45},"pnpm","pnpm dlx skills add MiroShark\u002Fmiroshark-aeon --skill community-manager","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fdocs\u002Fexamples\u002Fskill-templates\u002Fcommunity-manager\u002FSKILL.md",true,[],[50,88,111,139,164,187],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":66,"publishedAt":20},"01M6J4P8XKB8RJ7PCYMZPZ0F6S","you-web-search","Web search using You.com Search API with high-quality, cited results — runs keyless out of the box; YDC_API_KEY unlocks higher limits and real-time web crawling","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fyou-web-search\u002FSKILL.md",[56,61],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":62,"categoryName":63,"taxonomyType":64,"taxonomyTypeDesc":65},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"web search","search","you","you web search","web","time","only","api","web crawling","read","read-only","real-time","basics","keyless","with","research","results","high","quality","box","limits",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":20},"01M6J4P4H35WQG6RHGTTACSMVW","write-tweet","Multi-format tweet studio - standalone drafts (10 across 5 size tiers), a 5-10 tweet thread, or 10 remixes of past tweets, selected via ${var}","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-tweet\u002FSKILL.md",[],[95,96,97,98,99,74,100,101,102,103,79,104,105,106,107,108,109,110],"write","write tweet","standalone","social","studio","across","xai","past","drafts","twitter","thread","multi","size","via","format","content",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":120,"publishedAt":20},"01M6J4P11K7ZJ2PJDHDTTFZ1HY","weekly-aeoncard","Build a weekly token-consumption recap image from memory\u002Ftoken-usage.csv - this week + all-time totals, top skills, rendered as a shareable SVG card.","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fweekly-aeoncard\u002FSKILL.md",[117],{"categoryNo":118,"categoryName":119,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000016","图像与多媒体",[121,122,123,124,125,126,127,72,128,129,130,131,132,133,134,135,136,95,137,138],"weekly","weekly aeoncard","as","usage","SVG","memory","card","Meta","image","recap","csv","monitoring","notifications","productivity","top","build","token","aeon",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":20},"01M6J4NVJYQP5DNKSGXAXQW06B","vuln-tracker","One lifecycle poll over everything vuln-scanner produces - PR and advisory status, PVR triage transitions, and pending-disclosure aging, with a stars-secured impact headline and one action queue.","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvuln-tracker\u002FSKILL.md",[],[146,147,128,148,149,95,137,150,151,152,153,154,155,156,157,158,159,81,160,161,162,163],"tracker","vuln tracker","impact","scanner","status","action","security","pr","stars","lifecycle","dev","gh","aging","advisory","github","transitions","triage","global",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":173,"publishedAt":20},"01M6J4NNQCHTKNGENAPJQ8KYHR","vuln-scanner","Audit trending repos for real security vulnerabilities and disclose responsibly - scan and route findings (PVR \u002F dependency PR), re-submit queued advisories, and send armed email disclosures","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvuln-scanner\u002FSKILL.md",[170],{"categoryNo":171,"categoryName":172,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000005","邮件与沟通",[149,174,175,176,177,128,178,152,179,180,181,156,160,182,163,183,74,184,185,186],"vuln scanner","resend","re","trending","repos","email","for","scan","vulnerabilities","submit","route","audit","send",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":8,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":194,"publishedAt":20},"01M6J4NFBXTGG0R4M484T0KNYW","video-script","Turn a repo, product page, or update into a recording-ready video script in a receipts-first format - verifies every claim against live sources, then writes timestamped VO + on-screen direction with a plain-language glossary, assets checklist, anti-tells, and a verify-before-recording list","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-script\u002FSKILL.md",[193],{"categoryNo":118,"categoryName":119,"taxonomyType":59,"taxonomyTypeDesc":60},[195,196,197,198,199,200,201,202,203,79,204,205,206,81,207,208,209,210,211,109,212,213,214],"Video","video script","script","recording","sources","ready","direction","page","repo","claim","plain-language","glossary","first","verify","product","screen","update","list","live","receipts"]