[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CASC6RNQPGERCHPS84GA2G":3,"skill-same:01M6CASC6RNQPGERCHPS84GA2G":145},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6CASC6RNQPGERCHPS84GA2G","imessage",null,"Send and receive iMessages\u002FSMS via the imsg CLI on macOS.","adnichols\u002Fai-configs","adnichols","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F493746?v=4","01M6C33VRY9WF6XWYPT1AFA7JJ","Aaron Nichols","01M6C33VWTNKGRM92E9G643V4W",5,"MIT","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fapple\u002Fimessage\u002FSKILL.md",[],[5,19,20,21,22,23,24],"macos","cli","imsg","messaging","hermes","hermes agent","2026-11-10 10:12:30",false,"---\nname: imessage\ndescription: Send and receive iMessages\u002FSMS via the imsg CLI on macOS.\nversion: 1.0.0\nauthor: Hermes Agent\nlicense: MIT\nplatforms: [macos]\nmetadata:\n  hermes:\n    tags: [iMessage, SMS, messaging, macOS, Apple]\nprerequisites:\n  commands: [imsg]\n---\n\n# iMessage\n\nUse `imsg` to read and send iMessage\u002FSMS via macOS Messages.app.\n\n## Prerequisites\n\n- **macOS** with Messages.app signed in\n- Install: `brew install steipete\u002Ftap\u002Fimsg`\n- Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)\n- Grant Automation permission for Messages.app when prompted\n\n## When to Use\n\n- User asks to send an iMessage or text message\n- Reading iMessage conversation history\n- Checking recent Messages.app chats\n- Sending to phone numbers or Apple IDs\n\n## When NOT to Use\n\n- Telegram\u002FDiscord\u002FSlack\u002FWhatsApp messages → use the appropriate gateway channel\n- Group chat management (adding\u002Fremoving members) → not supported\n- Bulk\u002Fmass messaging → always confirm with user first\n\n## Quick Reference\n\n### List Chats\n\n```bash\nimsg chats --limit 10 --json\n```\n\n### View History\n\n```bash\n# By chat ID\nimsg history --chat-id 1 --limit 20 --json\n\n# With attachments info\nimsg history --chat-id 1 --limit 20 --attachments --json\n```\n\n### Send Messages\n\n```bash\n# Text only\nimsg send --to \"+14155551212\" --text \"Hello!\"\n\n# With attachment\nimsg send --to \"+14155551212\" --text \"Check this out\" --file \u002Fpath\u002Fto\u002Fimage.jpg\n\n# Force iMessage or SMS\nimsg send --to \"+14155551212\" --text \"Hi\" --service imessage\nimsg send --to \"+14155551212\" --text \"Hi\" --service sms\n```\n\n### Watch for New Messages\n\n```bash\nimsg watch --chat-id 1 --attachments\n```\n\n## Service Options\n\n- `--service imessage` — Force iMessage (requires recipient has iMessage)\n- `--service sms` — Force SMS (green bubble)\n- `--service auto` — Let Messages.app decide (default)\n\n## Rules\n\n1. **Always confirm recipient and message content** before sending\n2. **Never send to unknown numbers** without explicit user approval\n3. **Verify file paths** exist before attaching\n4. **Don't spam** — rate-limit yourself\n\n## Example Workflow\n\nUser: \"Text mom that I'll be late\"\n\n```bash\n# 1. Find mom's chat\nimsg chats --limit 20 --json | jq '.[] | select(.displayName | contains(\"Mom\"))'\n\n# 2. Confirm with user: \"Found Mom at +1555123456. Send 'I'll be late' via iMessage?\"\n\n# 3. Send after confirmation\nimsg send --to \"+1555123456\" --text \"I'll be late\"\n```\n","# iMessage\n\nUse `imsg` to read and send iMessage\u002FSMS via macOS Messages.app.\n\n## Prerequisites\n\n- **macOS** with Messages.app signed in\n- Install: `brew install steipete\u002Ftap\u002Fimsg`\n- Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)\n- Grant Automation permission for Messages.app when prompted\n\n## When to Use\n\n- User asks to send an iMessage or text message\n- Reading iMessage conversation history\n- Checking recent Messages.app chats\n- Sending to phone numbers or Apple IDs\n\n## When NOT to Use\n\n- Telegram\u002FDiscord\u002FSlack\u002FWhatsApp messages → use the appropriate gateway channel\n- Group chat management (adding\u002Fremoving members) → not supported\n- Bulk\u002Fmass messaging → always confirm with user first\n\n## Quick Reference\n\n### List Chats\n\n```bash\nimsg chats --limit 10 --json\n```\n\n### View History\n\n```bash\n# By chat ID\nimsg history --chat-id 1 --limit 20 --json\n\n# With attachments info\nimsg history --chat-id 1 --limit 20 --attachments --json\n```\n\n### Send Messages\n\n```bash\n# Text only\nimsg send --to \"+14155551212\" --text \"Hello!\"\n\n# With attachment\nimsg send --to \"+14155551212\" --text \"Check this out\" --file \u002Fpath\u002Fto\u002Fimage.jpg\n\n# Force iMessage or SMS\nimsg send --to \"+14155551212\" --text \"Hi\" --service imessage\nimsg send --to \"+14155551212\" --text \"Hi\" --service sms\n```\n\n### Watch for New Messages\n\n```bash\nimsg watch --chat-id 1 --attachments\n```\n\n## Service Options\n\n- `--service imessage` — Force iMessage (requires recipient has iMessage)\n- `--service sms` — Force SMS (green bubble)\n- `--service auto` — Let Messages.app decide (default)\n\n## Rules\n\n1. **Always confirm recipient and message content** before sending\n2. **Never send to unknown numbers** without explicit user approval\n3. **Verify file paths** exist before attaching\n4. **Don't spam** — rate-limit yourself\n\n## Example Workflow\n\nUser: \"Text mom that I'll be late\"\n\n```bash\n# 1. Find mom's chat\nimsg chats --limit 20 --json | jq '.[] | select(.displayName | contains(\"Mom\"))'\n\n# 2. Confirm with user: \"Found Mom at +1555123456. Send 'I'll be late' via iMessage?\"\n\n# 3. Send after confirmation\nimsg send --to \"+1555123456\" --text \"I'll be late\"\n```\n",{"name":5,"author":30,"license":15,"version":31,"metadata":32,"platforms":39,"description":7,"prerequisites":40},"Hermes Agent","1.0.0",{"hermes":33},{"tags":34},[35,36,22,37,38],"iMessage","SMS","macOS","Apple",[19],{"commands":41},[21],"main","64e2fc9afa7bb3da1138eb73399144d0e7e73e9d","_hermes\u002Fdefault\u002Fskills\u002Fapple\u002Fimessage",4,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs","https:\u002F\u002Fgithub.com\u002Fadnichols","2026-11-06 00:28:38",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add adnichols\u002Fai-configs --skill imessage",{"tool":55,"command":56},"bunx","bunx skills add adnichols\u002Fai-configs --skill imessage",{"tool":58,"command":59},"pnpm","pnpm dlx skills add adnichols\u002Fai-configs --skill imessage","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fapple\u002Fimessage\u002FSKILL.md",true,[63,69,73,77,81,87,91,95,99,103,107,111,117,121,125,129,133,137,141],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"assets\u002Fapi_config_template.json","ASSET","资产文件",1845,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fassets\u002Fapi_config_template.json",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"assets\u002Fexample_api_config_ecology.json",1646,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fassets\u002Fexample_api_config_ecology.json",{"path":74,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":75,"sourceHtmlUrl":76},"assets\u002Fexample_flower_visitors_schema.json",7296,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fassets\u002Fexample_flower_visitors_schema.json",{"path":78,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":79,"sourceHtmlUrl":80},"assets\u002Fschema_template.json",3861,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fassets\u002Fschema_template.json",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"environment.yml","REFERENCE","参考文档",333,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fenvironment.yml",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"README.md",8190,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002FREADME.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fapi_reference.md",9570,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Freferences\u002Fapi_reference.md",{"path":96,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fsetup_guide.md",3019,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Freferences\u002Fsetup_guide.md",{"path":100,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fvalidation_guide.md",8531,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Freferences\u002Fvalidation_guide.md",{"path":104,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fworkflow_guide.md",7895,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Freferences\u002Fworkflow_guide.md",{"path":108,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":109,"sourceHtmlUrl":110},"requirements.txt",476,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Frequirements.txt",{"path":112,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002F01_organize_metadata.py","SCRIPT","脚本",10097,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F01_organize_metadata.py",{"path":118,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":119,"sourceHtmlUrl":120},"scripts\u002F02_filter_abstracts.py",16436,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F02_filter_abstracts.py",{"path":122,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":123,"sourceHtmlUrl":124},"scripts\u002F03_extract_from_pdfs.py",16155,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F03_extract_from_pdfs.py",{"path":126,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":127,"sourceHtmlUrl":128},"scripts\u002F04_repair_json.py",6949,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F04_repair_json.py",{"path":130,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":131,"sourceHtmlUrl":132},"scripts\u002F05_validate_with_apis.py",15392,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F05_validate_with_apis.py",{"path":134,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":135,"sourceHtmlUrl":136},"scripts\u002F06_export_database.py",10058,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F06_export_database.py",{"path":138,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":139,"sourceHtmlUrl":140},"scripts\u002F07_prepare_validation_set.py",9739,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F07_prepare_validation_set.py",{"path":142,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":143,"sourceHtmlUrl":144},"scripts\u002F08_calculate_validation_metrics.py",16889,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fbrunoasm-extract_from_pdfs\u002Fscripts\u002F08_calculate_validation_metrics.py",[146,165,199,224,235,251],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":25},"01M6CB7RN791P5RRRCJWWC7DAR","blocked-page-recovery","Use when a fetch fails: 403\u002F429, paywall, WAF, bot wall.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fweb\u002Fblocked-page-recovery\u002FSKILL.md",[],[153,154,155,156,157,158,159,24,23,160,161,162,163,164,19],"recovery","page","blocked page recovery","bot","fallback","use","fetch","Citations","waf","windows","research","linux",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":184,"publishedAt":25},"01M6CB7NQY2VVYCQJ1QBXACQF4","writing-plans","Use when creating or updating executable software plans. Keep plans as local files unless the user explicitly asks to register them in Doct.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[171,176,179],{"categoryNo":172,"categoryName":173,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":177,"categoryName":178,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":180,"categoryName":181,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[185,186,187,188,189,190,191,192,193,194,195,196,158,197,24,23,198],"writing","writing plans","documentation","test","workflow","design","user","development","planning","files","implementation","html","ops","plan",{"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":214,"publishedAt":25},"01M6CB7JME246KZQHP73Z2STDF","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[205,208,211],{"categoryNo":206,"categoryName":207,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":209,"categoryName":210,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":212,"categoryName":213,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000037","律师与法务",[188,192,215,216,217,24,23,218,198,219,220,221,19,222,164,223,162],"test driven development","red-green-refactor","superpowers","quality","refactor","code","debugging","tdd","testing",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":228,"categories":229,"keywords":231,"publishedAt":25},"01M6CB7FQ407KQTD4Z9VAWKY54","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[230],{"categoryNo":209,"categoryName":210,"taxonomyType":174,"taxonomyTypeDesc":175},[221,232,192,217,24,23,233,198,234,162,188,164,19],"systematic debugging","troubleshooting","investigation",{"skillNo":236,"name":237,"nameZh":6,"description":238,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":239,"categories":240,"keywords":244,"publishedAt":25},"01M6CB7D57MK88HE5YPZHKH68Q","spike","Throwaway experiments to validate an idea before build.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fspike\u002FSKILL.md",[241],{"categoryNo":242,"categoryName":243,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000021","资料检索与研究",[237,162,245,246,163,247,164,19,248,249,250,24,23,198,193],"validate","experiments","prototype","feasibility","sketch","experiment",{"skillNo":252,"name":253,"nameZh":6,"description":254,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":255,"categories":256,"keywords":261,"publishedAt":25},"01M6CB7APAQ37YE5YE1MAAFT42","simplify-code","Parallel 3-agent cleanup of recent code changes.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsimplify-code\u002FSKILL.md",[257,258],{"categoryNo":177,"categoryName":178,"taxonomyType":174,"taxonomyTypeDesc":175},{"categoryNo":259,"categoryName":260,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000030","开发工程师",[262,263,220,264,24,23,265,198,219,266,267,268,192,162,188,164,269,19],"simplify code","simplify","subagent","parallel","code-review","delegation","cleanup","review"]