AGENT SKILL

notes_table

Insert a table into a Notes note. Notes' table feature is triggered by Cmd+Opt+T while the body has focus; this skill selects the note, focuses the body, and fires the keystroke. Default: a 2x2 table (Notes' default). To get larger, use the `rows` and `cols` args — the skill will Tab + Return as needed after insertion to grow the table to the requested dimensions.

License 许可
Apache-2.0
所属仓库
LocalKinAI/kinclaw
最近更新
2026-11-01
Stars
★ 9
Forks
3

01 前言 Front Matter

args
[ "{{note}}", "{{rows}}", "{{cols}}" ]
name
notes_table
schema
{ "cols": { "type": "number", "default": 2, "required": false, "description": "Number of columns (default 2)" }, "note": { "type": "string", "required": true, "description": "Exact note title" }, "rows": { "type": "number", "default": 2, "required": false, "description": "Number of rows (default 2)" } }
command
[ "sh", "-c", "NOTE=\"$1\"; ROWS=\"${2:-2}\"; COLS=\"${3:-2}\"\n[ -z \"$NOTE\" ] && { echo \"note title required\" >&2; exit 1; }\n\nosascript 2>&1 <<APPLE\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 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 delay 0.3\n -- Move to end of body so the table inserts after existing content\n key code 125 using {command down}\n delay 0.1\n keystroke return\n delay 0.1\n -- Cmd+Opt+T inserts default 2-col 2-row table\n keystroke \"t\" using {command down, option down}\n delay 0.6\nend tell\n\n-- Grow rows: each Tab from last cell creates a new row\ntell application \"System Events\"\n set extraRows to ($ROWS - 2)\n set extraCols to ($COLS - 2)\n if extraCols > 0 then\n -- Add columns via Format > Table > Add Column After\n -- (no default keyboard shortcut; navigate menu)\n try\n tell process \"Notes\"\n repeat extraCols times\n click menu item \"Add Column After\" of menu of menu item \"Table\" of menu \"Format\" of menu bar 1\n delay 0.2\n end repeat\n end tell\n end try\n end if\n if extraRows > 0 then\n -- Place cursor in last cell, then Tab from rightmost-bottom cell creates a new row\n -- Simpler: Format menu approach\n try\n tell process \"Notes\"\n repeat extraRows times\n click menu item \"Add Row Below\" of menu of menu item \"Table\" of menu \"Format\" of menu bar 1\n delay 0.2\n end repeat\n end tell\n end try\n end if\nend tell\nreturn \"ok: inserted $ROWS x $COLS table\"\nAPPLE\n", "_" ]
timeout
25
description
Insert a table into a Notes note. Notes' table feature is triggered by Cmd+Opt+T while the body has focus; this skill selects the note, focuses the body, and fires the keystroke. Default: a 2x2 table (Notes' default). To get larger, use the `rows` and `cols` args — the skill will Tab + Return as needed after insertion to grow the table to the requested dimensions.

03 SKILL.md 正文

notes_table — insert a table into a Notes note

Notes' Cmd+Opt+T inserts a 2x2 table at the cursor. This skill focuses the body, fires the shortcut, then optionally grows via Format menu ("Add Row Below", "Add Column After").

Examples

notes_table note="KinBench Table 172"
  → ok: inserted 2 x 2 table

notes_table note="KinBench Table 172" rows=3 cols=3
  → ok: inserted 3 x 3 table

04 同仓库更多 Skills

LocalKinAI
LocalKinAI/kinclaw

web

Universal web tool — fetches and interacts with web pages through real Chromium (Playwright). Renders JavaScript, follows redirects, handles cookies, bypasses many anti-scrape stubs that block plain `web_fetch`. Each call launches a fresh browser, executes the requested flow, closes. ~2-3s cold start; no persistent state. Use INSTEAD of `web_fetch` when: - Target is a JS-heavy SPA (prices via XHR, lazy content) - `web_fetch` returned an anti-scrape placeholder (Zhihu's "click here" stub, JD's chrome-only HTML) - You need to interact (click, fill input) before extracting Common patterns: fetch rendered text: url=X wait for content then read: url=X wait_for=".price" extract specific element: url=X selector=".product-list" click and read result: url=X click=".search-button" fill form, then read: url=X click="input[name=q]" type_text="kinclaw" fill + Enter (React forms): url=X click="input" type_text="hi" press_enter=true wait_for=".reply" screenshot the page: url=X screenshot=true (returns image:// marker) run JS and get result: url=X js="document.title" First-time setup (one-time per machine, ~500MB Chromium download): pip install playwright playwright install chromium

文档处理测试与质量
★ 9
LocalKinAI
LocalKinAI/kinclaw

weather

Current conditions plus a three-day forecast (today / tomorrow / day after) for a place, in metric, from wttr.in. No API key. Use this for any weather question — including "明天" and "后天" — before reaching for web search.

★ 9
LocalKinAI
LocalKinAI/kinclaw

tts

Synthesize speech from text and play it through the macOS speakers. Talks to a local LocalKin Service Audio Server (default :8001 / Kokoro). When `record` is running with audio=true, the spoken audio is captured into the recording — use this in place of `shell say` for high-quality multilingual narration in demo videos. Set the TTS_ENDPOINT env var to point at a different server.

图像与多媒体Skill与智能体开发
★ 9
LocalKinAI
LocalKinAI/kinclaw

translate

Translate text between languages using the system's translate command

★ 9
LocalKinAI
LocalKinAI/kinclaw

summarize

Summarize a file's contents into key bullet points

资料检索与研究
★ 9
LocalKinAI
LocalKinAI/kinclaw

stt

Transcribe an audio file (wav/mp3/mp4/m4a) into text via a local LocalKin Service Audio Server (default :8000 / SenseVoice). Pair with `record action=start mic=true` to turn a recorded mic track into text. Set STT_ENDPOINT env var to point at a different server.

图像与多媒体
★ 9