[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CPFJYDW4DB5NDJ6M68TP12":3,"skill-same:01M6CPFJYDW4DB5NDJ6M68TP12":86},{"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":23,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":70,"ownerDescription":71,"updatedAt":72,"install":73,"resources":85},"01M6CPFJYDW4DB5NDJ6M68TP12","notes_format",null,"Apply a Notes-app text format (bold \u002F italic \u002F underline \u002F title \u002F\nheading \u002F subheading \u002F body) to text in a note. Handles selection\n+ format keystroke + verification.\n\nThe #1 mistake agents make: pressing Cmd+B without selecting text\nfirst. Notes' format shortcuts only act on the current selection;\nno selection = no-op. This skill always selects first.","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_format\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"notes format","format","notes","only","back","main","activate","selection","show","exit","default","up","ok","use","option","select","text","system","SET","code","2026-11-10 10:12:30",false,"---\nname: notes_format\ndescription: |\n  Apply a Notes-app text format (bold \u002F italic \u002F underline \u002F title \u002F\n  heading \u002F subheading \u002F body) to text in a note. Handles selection\n  + format keystroke + verification.\n\n  The #1 mistake agents make: pressing Cmd+B without selecting text\n  first. Notes' format shortcuts only act on the current selection;\n  no selection = no-op. This skill always selects first.\ncommand:\n  - sh\n  - -c\n  - |\n    NOTE=\"$1\"; FORMAT=\"$2\"; SELECTION=\"$3\"\n    [ -z \"$NOTE\" ] && { echo \"note title required\" >&2; exit 1; }\n    [ -z \"$FORMAT\" ] && { echo \"format required\" >&2; exit 1; }\n    [ -z \"$SELECTION\" ] && SELECTION=\"all\"\n\n    # Map format → keystroke\n    case \"$FORMAT\" in\n      bold)        KS_KEY=\"b\"; KS_MOD=\"command\" ;;\n      italic)      KS_KEY=\"i\"; KS_MOD=\"command\" ;;\n      underline)   KS_KEY=\"u\"; KS_MOD=\"command\" ;;\n      title)       KS_KEY=\"1\"; KS_MOD=\"command_option\" ;;\n      heading)     KS_KEY=\"2\"; KS_MOD=\"command_option\" ;;\n      subheading)  KS_KEY=\"3\"; KS_MOD=\"command_option\" ;;\n      body)        KS_KEY=\"4\"; KS_MOD=\"command_option\" ;;\n      *) echo \"unknown format '$FORMAT' — use bold|italic|underline|title|heading|subheading|body\" >&2; exit 1 ;;\n    esac\n\n    # Select the note, focus body, then select-all + apply format\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    tell application \"System Events\"\n        tell process \"Notes\"\n            -- Click the note body so keystrokes go there. The body is the\n            -- ScrollArea \u002F TextArea inside the main window. We try the\n            -- canonical AX path; on failure, fall back to a generic click.\n            try\n                set mainWin to window 1\n                try\n                    set bodyArea to text area 1 of scroll area 1 of group 1 of splitter group 1 of mainWin\n                    perform action \"AXFocus\" of bodyArea\n                end try\n            end try\n        end tell\n    end tell\n    delay 0.3\n\n    -- Select per SELECTION arg\n    tell application \"System Events\"\n        if \"$SELECTION\" is \"all\" then\n            keystroke \"a\" using {command down}\n        else if \"$SELECTION\" is \"first_line\" then\n            -- Cmd+Up to top, then Shift+End to extend selection to end of line\n            key code 126 using {command down}\n            key code 119 using {shift down}\n        else if \"$SELECTION\" is \"last_line\" then\n            key code 125 using {command down}\n            key code 115 using {shift down}\n        end if\n    end tell\n    delay 0.2\n\n    -- Apply format\n    tell application \"System Events\"\n        if \"$KS_MOD\" is \"command\" then\n            keystroke \"$KS_KEY\" using {command down}\n        else\n            keystroke \"$KS_KEY\" using {command down, option down}\n        end if\n    end tell\n    delay 0.3\n    return \"ok: $FORMAT applied to $SELECTION\"\n    APPLE\n  - \"_\"\nargs:\n  - \"{{note}}\"\n  - \"{{format}}\"\n  - \"{{selection}}\"\nschema:\n  note:\n    type: string\n    description: Exact note title\n    required: true\n  format:\n    type: string\n    description: \"bold | italic | underline | title | heading | subheading | body\"\n    required: true\n  selection:\n    type: string\n    description: \"all (Cmd+A whole body — default) | first_line | last_line\"\n    required: false\n    default: \"all\"\ntimeout: 15\n---\n\n# notes_format — apply Notes formatting reliably\n\nWraps the select-then-format pattern that agents routinely get\nwrong. Always selects text BEFORE pressing the format keystroke,\nso the format applies to something rather than no-op'ing.\n\n## Examples\n\n```\nnotes_format note=\"KinBench Bold 173\" format=bold\n  → ok: bold applied to all\n\nnotes_format note=\"KinBench Heading 174\" format=title selection=first_line\n  → ok: title applied to first_line\n```\n\n## Format → keystroke mapping\n\n| format | macOS shortcut |\n|---|---|\n| bold | Cmd+B |\n| italic | Cmd+I |\n| underline | Cmd+U |\n| title | Cmd+Opt+1 (largest) |\n| heading | Cmd+Opt+2 |\n| subheading | Cmd+Opt+3 |\n| body | Cmd+Opt+4 |\n","# notes_format — apply Notes formatting reliably\n\nWraps the select-then-format pattern that agents routinely get\nwrong. Always selects text BEFORE pressing the format keystroke,\nso the format applies to something rather than no-op'ing.\n\n## Examples\n\n```\nnotes_format note=\"KinBench Bold 173\" format=bold\n  → ok: bold applied to all\n\nnotes_format note=\"KinBench Heading 174\" format=title selection=first_line\n  → ok: title applied to first_line\n```\n\n## Format → keystroke mapping\n\n| format | macOS shortcut |\n|---|---|\n| bold | Cmd+B |\n| italic | Cmd+I |\n| underline | Cmd+U |\n| title | Cmd+Opt+1 (largest) |\n| heading | Cmd+Opt+2 |\n| subheading | Cmd+Opt+3 |\n| body | Cmd+Opt+4 |\n",{"args":43,"name":5,"schema":47,"command":57,"timeout":62,"description":63},[44,45,46],"{{note}}","{{format}}","{{selection}}",{"note":48,"format":52,"selection":54},{"type":49,"required":50,"description":51},"string",true,"Exact note title",{"type":49,"required":50,"description":53},"bold | italic | underline | title | heading | subheading | body",{"type":49,"default":55,"required":39,"description":56},"all","all (Cmd+A whole body — default) | first_line | last_line",[58,59,60,61],"sh","-c","NOTE=\"$1\"; FORMAT=\"$2\"; SELECTION=\"$3\"\n[ -z \"$NOTE\" ] && { echo \"note title required\" >&2; exit 1; }\n[ -z \"$FORMAT\" ] && { echo \"format required\" >&2; exit 1; }\n[ -z \"$SELECTION\" ] && SELECTION=\"all\"\n\n# Map format → keystroke\ncase \"$FORMAT\" in\n  bold)        KS_KEY=\"b\"; KS_MOD=\"command\" ;;\n  italic)      KS_KEY=\"i\"; KS_MOD=\"command\" ;;\n  underline)   KS_KEY=\"u\"; KS_MOD=\"command\" ;;\n  title)       KS_KEY=\"1\"; KS_MOD=\"command_option\" ;;\n  heading)     KS_KEY=\"2\"; KS_MOD=\"command_option\" ;;\n  subheading)  KS_KEY=\"3\"; KS_MOD=\"command_option\" ;;\n  body)        KS_KEY=\"4\"; KS_MOD=\"command_option\" ;;\n  *) echo \"unknown format '$FORMAT' — use bold|italic|underline|title|heading|subheading|body\" >&2; exit 1 ;;\nesac\n\n# Select the note, focus body, then select-all + apply format\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\ntell application \"System Events\"\n    tell process \"Notes\"\n        -- Click the note body so keystrokes go there. The body is the\n        -- ScrollArea \u002F TextArea inside the main window. We try the\n        -- canonical AX path; on failure, fall back to a generic click.\n        try\n            set mainWin to window 1\n            try\n                set bodyArea to text area 1 of scroll area 1 of group 1 of splitter group 1 of mainWin\n                perform action \"AXFocus\" of bodyArea\n            end try\n        end try\n    end tell\nend tell\ndelay 0.3\n\n-- Select per SELECTION arg\ntell application \"System Events\"\n    if \"$SELECTION\" is \"all\" then\n        keystroke \"a\" using {command down}\n    else if \"$SELECTION\" is \"first_line\" then\n        -- Cmd+Up to top, then Shift+End to extend selection to end of line\n        key code 126 using {command down}\n        key code 119 using {shift down}\n    else if \"$SELECTION\" is \"last_line\" then\n        key code 125 using {command down}\n        key code 115 using {shift down}\n    end if\nend tell\ndelay 0.2\n\n-- Apply format\ntell application \"System Events\"\n    if \"$KS_MOD\" is \"command\" then\n        keystroke \"$KS_KEY\" using {command down}\n    else\n        keystroke \"$KS_KEY\" using {command down, option down}\n    end if\nend tell\ndelay 0.3\nreturn \"ok: $FORMAT applied to $SELECTION\"\nAPPLE\n","_",15,"Apply a Notes-app text format (bold \u002F italic \u002F underline \u002F title \u002F\nheading \u002F subheading \u002F body) to text in a note. Handles selection\n+ format keystroke + verification.\n\nThe #1 mistake agents make: pressing Cmd+B without selecting text\nfirst. Notes' format shortcuts only act on the current selection;\nno selection = no-op. This skill always selects first.\n","d1b92d10cddb779854af342bea74d0b6c46788e2","skills\u002Fnotes_format",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":74,"prompt":84,"zipAvailable":50},[75,78,81],{"tool":76,"command":77},"npx","npx skills add LocalKinAI\u002Fkinclaw --skill notes_format",{"tool":79,"command":80},"bunx","bunx skills add LocalKinAI\u002Fkinclaw --skill notes_format",{"tool":82,"command":83},"pnpm","pnpm dlx skills add LocalKinAI\u002Fkinclaw --skill notes_format","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLocalKinAI\u002Fkinclaw\u002Fblob\u002Fmain\u002Fskills\u002Fnotes_format\u002FSKILL.md",[],[87,123,137,163,173,184],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":104,"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",[93,98,101],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":102,"categoryName":103,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000009","前端开发",[89,105,106,107,108,109,110,34,111,112,113,114,115,116,117,118,119,120,121,122],"image","search","forms","files","log","read","wait for","how","scrape","start","PDF","run","generate","placeholder","change","react","css","directory",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"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",[],[125,106,130,131,31,132,133,134,135,136,89],"three","location","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":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":147,"categoryName":148,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000023","Skill与智能体开发",[139,150,22,151,152,28,153,154,155,37,156,157,34,158,159,36,160,161,21,162],"next","chinese","multilingual","Echo","payload","pick","auto","model","Audio","Video","data","server","macos",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"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",[],[165,151,170,171,153,172,34,35],"spanish","language","command",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":182,"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",[179],{"categoryNo":180,"categoryName":181,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000021","资料检索与研究",[175,183],"file",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"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",[190],{"categoryNo":144,"categoryName":145,"taxonomyType":96,"taxonomyTypeDesc":97},[186,34,22,192,28,153,193,156,194,195,196,197,158,198,36,114,161,199,37,200],"do","en","pair","just","returns","mp4","endpoint","transcribe","go"]