[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BH4ZZ476G7WDFP5CDHN5P9":3,"skill-same:01M7BH4ZZ476G7WDFP5CDHN5P9":46},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7BH4ZZ476G7WDFP5CDHN5P9","listen",null,"Speech-to-text via node .rulesync\u002Fscripts\u002Flisten.mjs (ffmpeg mic + local whisper.cpp, OpenAI fallback). Input only.","lovrozagar\u002Fgrunt","lovrozagar","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F86857639?v=4","01M7B3T6X88HRBYP2A9ZEGQEMD","Lovro Zagar","01M7BGVF4JZBK92D0TSM09M44Q",2,"MIT","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.grok\u002Fskills\u002Flisten\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: listen\ndescription: >-\n  Speech-to-text via node .rulesync\u002Fscripts\u002Flisten.mjs (ffmpeg mic + local whisper.cpp,\n  OpenAI fallback). Input only.\n---\n# listen\n\nWhen the user wants to dictate, transcribe a recording, or toggle a mic, run `node .rulesync\u002Fscripts\u002Flisten.mjs`. Spec: `.rulesync\u002Freference\u002Flisten.md`. Input only (audio → text). Do not speak. Do not use `\u002Fspeak`.\n\n`whoami` · `devices` · `rec [--seconds N]` · `start` · `stop` · `toggle` · `status` · `file --path P` · `latest`. `--clip` copies the transcript. `--cwd DIR` when the process is not already in the repo (hotkeys). `rec` prints the transcript and `transcript=.tmp\u002Fgrunt\u002Flisten\u002Flatest.txt`.\n\nSTT: local `whisper-cli` first (mac: `brew install whisper-cpp`); first listen downloads the ggml model to `~\u002F.grunt\u002Fwhisper\u002F`. Else `OPENAI_API_KEY`. Mic verbs need ffmpeg. Do not tell them to pip-install openai-whisper or curl the model by hand.\n\nIf the CLI exits non-zero, print its message. Lines with `setup:` are for the user — show that command. Tell them to run `node .rulesync\u002Fscripts\u002Fsetup.mjs listen` (or `grunt setup`) in their terminal. Do not dump JSON. Do not invent a key. Spec: `.rulesync\u002Freference\u002Flisten.md` `.rulesync\u002Freference\u002Fsetup.md`.\n","# listen\n\nWhen the user wants to dictate, transcribe a recording, or toggle a mic, run `node .rulesync\u002Fscripts\u002Flisten.mjs`. Spec: `.rulesync\u002Freference\u002Flisten.md`. Input only (audio → text). Do not speak. Do not use `\u002Fspeak`.\n\n`whoami` · `devices` · `rec [--seconds N]` · `start` · `stop` · `toggle` · `status` · `file --path P` · `latest`. `--clip` copies the transcript. `--cwd DIR` when the process is not already in the repo (hotkeys). `rec` prints the transcript and `transcript=.tmp\u002Fgrunt\u002Flisten\u002Flatest.txt`.\n\nSTT: local `whisper-cli` first (mac: `brew install whisper-cpp`); first listen downloads the ggml model to `~\u002F.grunt\u002Fwhisper\u002F`. Else `OPENAI_API_KEY`. Mic verbs need ffmpeg. Do not tell them to pip-install openai-whisper or curl the model by hand.\n\nIf the CLI exits non-zero, print its message. Lines with `setup:` are for the user — show that command. Tell them to run `node .rulesync\u002Fscripts\u002Fsetup.mjs listen` (or `grunt setup`) in their terminal. Do not dump JSON. Do not invent a key. Spec: `.rulesync\u002Freference\u002Flisten.md` `.rulesync\u002Freference\u002Fsetup.md`.\n",{"name":5,"description":7},"main","91069c1955cc11def04b75dc2d3c4a99c9d5eb48",".grok\u002Fskills\u002Flisten",0,"https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt","https:\u002F\u002Fgithub.com\u002Flovrozagar","TypeScript Jedi Master ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ @workerstack ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ OSS & SaaS","2026-11-04 09:19:39",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add lovrozagar\u002Fgrunt --skill listen",{"tool":38,"command":39},"bunx","bunx skills add lovrozagar\u002Fgrunt --skill listen",{"tool":41,"command":42},"pnpm","pnpm dlx skills add lovrozagar\u002Fgrunt --skill listen","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.grok\u002Fskills\u002Flisten\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M7BHARD0SQTQ83H73E779A8E","write-roadmap","Write an ordered program of plans under .tmp\u002Fgrunt\u002Froadmaps\u002F. Use for \u002Fwrite-roadmap. Stops for y, which locks and runs it.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Fwrite-roadmap\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7BHAQ7M9Y790C7DW0RAKAQM","write-plan","Write a local checklist under .tmp\u002Fgrunt\u002Fplans\u002F. Then \u002Fimplement-plan {n}.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Fwrite-plan\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7BHANM3QZF2QP8P28WW9R3K","unslop","Cut AI tells from any writing. Use for \u002Funslop.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7BHAM1MSNX381EDKA5HN9XM","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file, or for \u002Ftypescript-best-practices.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7BHAJX7MG58JBGEAR0NCSXW","tmp","Dump a one-off convo artifact under .tmp\u002Fgrunt\u002F.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Ftmp\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7BHAGFXSTF5E1DDSYEZF8ZD","teach","Explain a body of work plainly so a person actually understands it. Dig into how it works and why it is that way, then weave that into one clear explanation. Use for \u002Fteach, 'teach me this', 'help me really understand X', 'explain this change or subsystem to me'.","https:\u002F\u002Fgithub.com\u002Flovrozagar\u002Fgrunt\u002Fblob\u002Fmain\u002F.rulesync\u002Fskills\u002Fteach\u002FSKILL.md",[],[]]