[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CPFVTS3M8DHPJPNSBYPX2W":3,"skill-same:01M6CPFVTS3M8DHPJPNSBYPX2W":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":83},"01M6CPFVTS3M8DHPJPNSBYPX2W","notes_pin",null,"Pin or unpin a Notes note (by exact title match). Uses UI menu\nnavigation because macOS 14+ removed the AppleScript `pinned`\nproperty — direct `set pinned of note to true` errors with\n\"Can't make pinned of note ... into type specifier\".\n\nThis skill activates Notes, selects the target note, then clicks\nthe appropriate File-menu item (\"Pin Note\" or \"Unpin Note\"). The\nmenu item label automatically toggles based on current state, so\nthe skill checks which one exists and clicks the right one for\nthe requested target state.","LocalKinAI\u002Fkinclaw","LocalKinAI","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F228881863?v=4","01M6CPDM368JVRW78EPV2NDABD","01M6CPDM7CKTKCXE8JD7K3658Q",9,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fnotes_pin\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"notes","notes pin","pin","process","macos","activate","show","exit","menu bar","Echo","navigation","ok","state","direct","current state","system","first","SET","ui","file","2026-11-10 10:12:30",false,"---\nname: notes_pin\ndescription: |\n  Pin or unpin a Notes note (by exact title match). Uses UI menu\n  navigation because macOS 14+ removed the AppleScript `pinned`\n  property — direct `set pinned of note to true` errors with\n  \"Can't make pinned of note ... into type specifier\".\n\n  This skill activates Notes, selects the target note, then clicks\n  the appropriate File-menu item (\"Pin Note\" or \"Unpin Note\"). The\n  menu item label automatically toggles based on current state, so\n  the skill checks which one exists and clicks the right one for\n  the requested target state.\ncommand:\n  - sh\n  - -c\n  - |\n    NOTE=\"$1\"; STATE=\"$2\"\n    [ -z \"$NOTE\" ] && { echo \"note title required\" >&2; exit 1; }\n    [ -z \"$STATE\" ] && STATE=\"true\"\n    case \"$STATE\" in\n      true|pin|pinned|1) WANT=\"pin\" ;;\n      false|unpin|unpinned|0) WANT=\"unpin\" ;;\n      *) echo \"state must be true|false\" >&2; exit 1 ;;\n    esac\n\n    osascript 2>&1 \u003C\u003CAPPLE\n    tell application \"Notes\"\n        activate\n        try\n            show (first note whose name = \"$NOTE\")\n        on error\n            return \"ERR: note not found\"\n        end try\n    end tell\n    delay 0.8\n\n    set didAct to false\n    set targetState to \"$WANT\"\n    tell application \"System Events\"\n        tell process \"Notes\"\n            try\n                set fileMenu to menu \"File\" of menu bar 1\n                if targetState is \"pin\" then\n                    if exists (menu item \"Pin Note\" of fileMenu) and ¬\n                       (enabled of menu item \"Pin Note\" of fileMenu) then\n                        click menu item \"Pin Note\" of fileMenu\n                        set didAct to true\n                    else if exists (menu item \"Unpin Note\" of fileMenu) then\n                        -- already pinned: idempotent success\n                        set didAct to true\n                    end if\n                else\n                    if exists (menu item \"Unpin Note\" of fileMenu) and ¬\n                       (enabled of menu item \"Unpin Note\" of fileMenu) then\n                        click menu item \"Unpin Note\" of fileMenu\n                        set didAct to true\n                    else if exists (menu item \"Pin Note\" of fileMenu) then\n                        -- already unpinned: idempotent success\n                        set didAct to true\n                    end if\n                end if\n            on error e\n                return \"ERR_MENU: \" & e\n            end try\n        end tell\n    end tell\n    delay 0.3\n    if didAct then\n        return \"ok: \" & targetState\n    end if\n    return \"ERR: menu item not found\"\n    APPLE\n  - \"_\"\nargs:\n  - \"{{note}}\"\n  - \"{{state}}\"\nschema:\n  note:\n    type: string\n    description: Exact note title\n    required: true\n  state:\n    type: string\n    description: \"true (pin) or false (unpin). Defaults to true.\"\n    required: false\n    default: \"true\"\ntimeout: 20\n---\n\n# notes_pin — pin \u002F unpin a Notes note via File menu\n\nmacOS 14+ removed AppleScript's `pinned` property. The only reliable\nway to set pin state is the File menu's \"Pin Note\" \u002F \"Unpin Note\"\nitem, which Notes shows toggled based on current state.\n\nThis skill:\n1. Activates Notes + selects the note (by exact name match)\n2. Looks for \"Pin Note\" or \"Unpin Note\" in the File menu\n3. Clicks the right one for the requested target state\n4. Idempotent — if already in the desired state, returns success without re-clicking\n\n## Examples\n\n```\nnotes_pin note=\"KinBench Pinned 164\" state=true\n  → ok: pin\n\nnotes_pin note=\"KinBench Unpin 165\" state=false\n  → ok: unpin\n```\n\nNote: pin state remains unverifiable via AppleScript on macOS 14+, so\nthis skill cannot self-verify. The skill returns `ok` based on\n\"correct menu item was clicked\" — the caller's eval should confirm\nvia UI inspection or trust the action.\n","# notes_pin — pin \u002F unpin a Notes note via File menu\n\nmacOS 14+ removed AppleScript's `pinned` property. The only reliable\nway to set pin state is the File menu's \"Pin Note\" \u002F \"Unpin Note\"\nitem, which Notes shows toggled based on current state.\n\nThis skill:\n1. Activates Notes + selects the note (by exact name match)\n2. Looks for \"Pin Note\" or \"Unpin Note\" in the File menu\n3. Clicks the right one for the requested target state\n4. Idempotent — if already in the desired state, returns success without re-clicking\n\n## Examples\n\n```\nnotes_pin note=\"KinBench Pinned 164\" state=true\n  → ok: pin\n\nnotes_pin note=\"KinBench Unpin 165\" state=false\n  → ok: unpin\n```\n\nNote: pin state remains unverifiable via AppleScript on macOS 14+, so\nthis skill cannot self-verify. The skill returns `ok` based on\n\"correct menu item was clicked\" — the caller's eval should confirm\nvia UI inspection or trust the action.\n",{"args":43,"name":5,"schema":46,"command":54,"timeout":59,"description":60},[44,45],"{{note}}","{{state}}",{"note":47,"state":51},{"type":48,"required":49,"description":50},"string",true,"Exact note title",{"type":48,"default":52,"required":39,"description":53},"true","true (pin) or false (unpin). Defaults to true.",[55,56,57,58],"sh","-c","NOTE=\"$1\"; STATE=\"$2\"\n[ -z \"$NOTE\" ] && { echo \"note title required\" >&2; exit 1; }\n[ -z \"$STATE\" ] && STATE=\"true\"\ncase \"$STATE\" in\n  true|pin|pinned|1) WANT=\"pin\" ;;\n  false|unpin|unpinned|0) WANT=\"unpin\" ;;\n  *) echo \"state must be true|false\" >&2; exit 1 ;;\nesac\n\nosascript 2>&1 \u003C\u003CAPPLE\ntell application \"Notes\"\n    activate\n    try\n        show (first note whose name = \"$NOTE\")\n    on error\n        return \"ERR: note not found\"\n    end try\nend tell\ndelay 0.8\n\nset didAct to false\nset targetState to \"$WANT\"\ntell application \"System Events\"\n    tell process \"Notes\"\n        try\n            set fileMenu to menu \"File\" of menu bar 1\n            if targetState is \"pin\" then\n                if exists (menu item \"Pin Note\" of fileMenu) and ¬\n                   (enabled of menu item \"Pin Note\" of fileMenu) then\n                    click menu item \"Pin Note\" of fileMenu\n                    set didAct to true\n                else if exists (menu item \"Unpin Note\" of fileMenu) then\n                    -- already pinned: idempotent success\n                    set didAct to true\n                end if\n            else\n                if exists (menu item \"Unpin Note\" of fileMenu) and ¬\n                   (enabled of menu item \"Unpin Note\" of fileMenu) then\n                    click menu item \"Unpin Note\" of fileMenu\n                    set didAct to true\n                else if exists (menu item \"Pin Note\" of fileMenu) then\n                    -- already unpinned: idempotent success\n                    set didAct to true\n                end if\n            end if\n        on error e\n            return \"ERR_MENU: \" & e\n        end try\n    end tell\nend tell\ndelay 0.3\nif didAct then\n    return \"ok: \" & targetState\nend if\nreturn \"ERR: menu item not found\"\nAPPLE\n","_",20,"Pin or unpin a Notes note (by exact title match). Uses UI menu\nnavigation because macOS 14+ removed the AppleScript `pinned`\nproperty — direct `set pinned of note to true` errors with\n\"Can't make pinned of note ... into type specifier\".\n\nThis skill activates Notes, selects the target note, then clicks\nthe appropriate File-menu item (\"Pin Note\" or \"Unpin Note\"). The\nmenu item label automatically toggles based on current state, so\nthe skill checks which one exists and clicks the right one for\nthe requested target state.\n","main","d1b92d10cddb779854af342bea74d0b6c46788e2","skills\u002Fnotes_pin",3,"https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw","https:\u002F\u002Fwww.localkin.app\u002Fkinclaw","https:\u002F\u002Fgithub.com\u002FLocalKinAI","localkin.ai","Faith and Chinese medicine at localkin.ai · the LocalKin agent platform at localkin.dev · open-source tools (kinfer, KinClaw, …) at localkin.app","2026-11-01 12:25:06",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":49},[73,76,79],{"tool":74,"command":75},"npx","npx skills add LocalKinAI\u002Fkinclaw --skill notes_pin",{"tool":77,"command":78},"bunx","bunx skills add LocalKinAI\u002Fkinclaw --skill notes_pin",{"tool":80,"command":81},"pnpm","pnpm dlx skills add LocalKinAI\u002Fkinclaw --skill notes_pin","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fnotes_pin\u002FSKILL.md",[],[85,122,137,165,175,185],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":102,"publishedAt":38},"01M6CPGNC9S31FTGMV90NZ0EN9","web","Universal web tool — fetches and interacts with web pages through\nreal Chromium (Playwright). Renders JavaScript, follows redirects,\nhandles cookies, bypasses many anti-scrape stubs that block plain\n`web_fetch`. Each call launches a fresh browser, executes the\nrequested flow, closes. ~2-3s cold start; no persistent state.\n\nUse INSTEAD of `web_fetch` when:\n  - Target is a JS-heavy SPA (prices via XHR, lazy content)\n  - `web_fetch` returned an anti-scrape placeholder (Zhihu's\n    \"click here\" stub, JD's chrome-only HTML)\n  - You need to interact (click, fill input) before extracting\n\nCommon patterns:\n  fetch rendered text:           url=X\n  wait for content then read:    url=X wait_for=\".price\"\n  extract specific element:      url=X selector=\".product-list\"\n  click and read result:         url=X click=\".search-button\"\n  fill form, then read:          url=X click=\"input[name=q]\" type_text=\"kinclaw\"\n  fill + Enter (React forms):    url=X click=\"input\" type_text=\"hi\" press_enter=true wait_for=\".reply\"\n  screenshot the page:           url=X screenshot=true (returns image:\u002F\u002F marker)\n  run JS and get result:         url=X js=\"document.title\"\n\nFirst-time setup (one-time per machine, ~500MB Chromium download):\n  pip install playwright\n  playwright install chromium","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fweb\u002FSKILL.md",[91,96,99],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":97,"categoryName":98,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":100,"categoryName":101,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000009","前端开发",[87,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],"image","search","forms","files","log","read","text","wait for","how","scrape","start","PDF","run","generate","placeholder","change","react","css","directory",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":38},"01M6CPGJTGF7P8QS3HXPCZE3KV","weather","Current conditions plus a three-day forecast (today \u002F tomorrow \u002F day\nafter) for a place, in metric, from wttr.in. No API key. Use this for\nany weather question — including \"明天\" and \"后天\" — before reaching\nfor web search.","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[124,104,129,130,131,132,133,134,135,136,87],"three","location","use","question","python3","web search","api","forecast",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":149,"publishedAt":38},"01M6CPGDR0W8FR0WMBBJ2282GM","tts","Synthesize speech from text and play it through the macOS speakers.\nTalks to a local LocalKin Service Audio Server (default :8001 \u002F Kokoro).\nWhen `record` is running with audio=true, the spoken audio is\ncaptured into the recording — use this in place of `shell say` for\nhigh-quality multilingual narration in demo videos. Set the\nTTS_ENDPOINT env var to point at a different server.","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftts\u002FSKILL.md",[143,146],{"categoryNo":144,"categoryName":145,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":147,"categoryName":148,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000023","Skill与智能体开发",[139,150,151,152,153,154,27,155,156,157,158,159,109,160,161,35,162,163,164,22],"next","back","chinese","multilingual","default","payload","pick","code","auto","model","Audio","Video","data","server","only",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":38},"01M6CPGAM9K2VN0MVYD4CMC92E","translate","Translate text between languages using the system's translate command","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftranslate\u002FSKILL.md",[],[167,152,172,173,27,174,109,33],"spanish","language","command",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":184,"publishedAt":38},"01M6CPG8DWEY0GWCFDGTTBWA2Q","summarize","Summarize a file's contents into key bullet points","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fsummarize\u002FSKILL.md",[181],{"categoryNo":182,"categoryName":183,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000021","资料检索与研究",[177,37],{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":192,"publishedAt":38},"01M6CPG48P3AYKRREAGYSGT944","stt","Transcribe an audio file (wav\u002Fmp3\u002Fmp4\u002Fm4a) into text via a local\nLocalKin Service Audio Server (default :8000 \u002F SenseVoice). Pair\nwith `record action=start mic=true` to turn a recorded mic track\ninto text. Set STT_ENDPOINT env var to point at a different server.","https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fstt\u002FSKILL.md",[191],{"categoryNo":144,"categoryName":145,"taxonomyType":94,"taxonomyTypeDesc":95},[187,109,151,193,154,27,194,158,195,196,197,198,160,199,35,113,163,200,157,201],"do","en","pair","just","returns","mp4","endpoint","transcribe","go"]