en un clic
kinclaw
kinclaw contient 22 skills collectées depuis LocalKinAI, avec une couverture métier par dépôt et des pages de détail sur le site.
Skills dans ce dépôt
Single fast-execution skill for macOS / Linux / Windows app operations. The "cerebellum" to the LLM's "cerebrum" — the brain decides intent, this skill executes the canonical multi-step pattern in one syscall sequence (no LLM round-trip per step). Inspired by the same architecture as the LocalKin robot car: the high-level brain plans ("rename this file to X"), the cerebellum daemon executes deterministically (`mv old new`) at near-zero latency. USAGE: cerebellum "<category> <action> [args...]" Categories: macOS finder, notes, mail, calendar, reminders, settings, safari, music, photos, maps, pages, numbers, keynote, terminal, multi, web (16 cats, 478 actions) Linux linux-files, linux-apps, linux-settings, linux-clipboard (4 cats) Windows windows-files, windows-apps, windows-settings, windows-clipboard (4 cats) Run with no args to see the full action menu. Examples: cerebell
Get the user's current GPS location. Auto-detects the best backend for the host OS: macOS → corelocationcli (CoreLocation — cell / WiFi / GPS) Linux → gdbus + geoclue2 (kernel-driver / WiFi / Mozilla MLS) fallback → IP geolocation (ipapi.co — city-level only) Returns coordinates / address / city / full details — request what you need with the `format` arg. When to use this vs the {{location}} system prompt context: - {{location}} is set from $KINCLAW_LOCATION env var — "where the user generally is" (home / office). Static, free, always available. - This skill reads the OS location service in real time — "where the user is right NOW". Use when user might be traveling / driving / out, or when meter-level precision matters. First invocation prompts for permission (macOS Location Services / Linux Geoclue per-app authorization through xdg-desktop-portal). Grant it for whichever process kinclaw runs in. First-time setup: macOS: brew install corelocationcli Linux: apt install
Create a Mail draft (saved, not sent) with subject + body and an optional attachment. Uses Mail's AppleScript dictionary directly: `make new outgoing message` then `save` (NOT `send`). The draft appears in the Drafts mailbox of the default account. This is the CORRECT path for any task that says "save as Mail draft" / "share via Mail as draft". Common wrong path: agents open a compose window with Cmd+N, type subject + body, then close with Cmd+W — that prompts a Save sheet they often skip, losing the draft. This skill bypasses the compose window entirely.
Attach an image file to a Notes note. Notes' AppleScript dictionary does NOT support `make new attachment` for image files, so this skill uses the clipboard-paste path: 1. Read the image into the system pasteboard via `osascript`'s `(read POSIX file "X" as JPEG picture)` coercion (works for JPEG / PNG / TIFF — checks file extension). 2. Activate Notes, select the target note, focus the body. 3. Move cursor to end of body, then Cmd+V — Notes pastes a pasteboard image as an attachment in the note. This is more robust than the Edit-menu "Attach File" UI flow, which opens a file picker that's brittle to AX-walk.
Convert a note's body into a Notes-native checklist (HTML `<ul class="gtl-todo-list">` markup), with optional auto-checking of specific item indices. Agents routinely fail at this by typing markdown `- [ ]` text — Notes does NOT recognize markdown checklist syntax; it stores literal "- [ ]" text. The native checklist requires Cmd+Shift+L on selected text or Format menu → Checklist. This skill: activates Notes, focuses the note body, selects all, Cmd+Shift+L to convert. If `check_indices` is given, navigates to each line and presses Cmd+Shift+U to toggle the checkbox.
Export a Notes note to a PDF file at an absolute path. Notes doesn't expose Export-as-PDF via AppleScript dictionary; this skill drives the File menu + Save sheet via UI scripting. The Save sheet is the standard NSSavePanel — we type the filename into the focused field, use Cmd+Shift+G to set the destination directory, then press Return to commit. The skill does NOT use the Print → Save as PDF route (3+ extra dialog clicks); it uses Notes' direct File → Export as PDF... menu. After the save, the skill polls for the file's existence to confirm completion before returning.
Apply a Notes-app text format (bold / italic / underline / title / heading / subheading / body) to text in a note. Handles selection + format keystroke + verification. The #1 mistake agents make: pressing Cmd+B without selecting text first. Notes' format shortcuts only act on the current selection; no selection = no-op. This skill always selects first.
Move a note (by exact title match) into a Notes folder (by exact folder name). Pure AppleScript — no UI scripting, no flakiness. The folder must already exist; create it with osascript or via the Notes UI before calling this skill. Why a skill (not raw shell osascript): models routinely emit the wrong AppleScript syntax for `move`, hit "Can't make ... into type specifier" errors, or move into the wrong account's folder. This skill encapsulates the canonical pattern + cross-account search.
Pin or unpin a Notes note (by exact title match). Uses UI menu navigation because macOS 14+ removed the AppleScript `pinned` property — direct `set pinned of note to true` errors with "Can't make pinned of note ... into type specifier". This skill activates Notes, selects the target note, then clicks the appropriate File-menu item ("Pin Note" or "Unpin Note"). The menu item label automatically toggles based on current state, so the skill checks which one exists and clicks the right one for the requested target state.
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.
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
Multi-step browser automation via browser-use — the open-source framework for autonomous browser navigation (91K+ stars, MIT). Use INSTEAD of `web` when the task spans more than a single page fetch: - Login + navigate + extract (auth state preserved across steps) - 5+ page interaction sequences - DOM-numbered element targeting (the framework shows the agent which element index to click — far more reliable than guessing CSS selectors) - JS-heavy SPAs that need real interaction state, not just rendered HTML Cost: cold start ~10-20s (browser warmup + LLM init); per-step ~2-5s. **Don't use for one-shot fetches** — `web` is faster and cheaper for those. Use this when the task description naturally contains "log in", "navigate to", "fill the form", "find on page X then click", or any sentence with multiple verbs of interaction. First-time setup (one machine, ~5 min): cd skills/browser_session ./setup.sh This creates a per-skill venv at ./.venv/ and installs browser-use + Chromium. Subseq
Pause music playback in Apple Music app
播放 Apple Music 中的音乐
Open a macOS app AND dismiss any blocking welcome / "What's New" / setup-prompt sheet that appeared on launch. Returns the app name and whether a modal was dismissed. Use this INSTEAD of `shell open -a X` when first opening an app you haven't driven before — saves the agent from the common failure mode of typing into a welcome modal instead of the actual UI. Looks for these dismiss buttons in priority order across any sheet or window of the frontmost app: Continue · Get Started · Skip · Later · Not Now · Got It · Maybe Later · Done · Cancel Generic — works for first-launch Apple apps (Reminders, Mail, Calendar, Photos, Maps, Music) and third-party apps that follow the same modal pattern.
Append a learning note to ~/.localkin/learned.md, organized by bundle_id / topic. The kernel automatically reads this file at every boot and injects it into the agent's system prompt — so anything you learn will be remembered next session, across all souls. Use this AFTER completing a task to record: - AX schema quirks (depth needed, weird matchers) - Working keyboard / shell shortcuts that beat ui clicks - Failed approaches + their error codes (so you don't retry next time) - First-launch modal patterns - bundle_id name spelling (some apps use lowercase like com.apple.mail) Note appends to a section keyed on `topic` (usually a bundle_id). Creates the section if it doesn't exist; appends bullet lines if it does. No-op if the exact same line already exists in that section (idempotent).
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.
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.
Stage all changes and create a git commit with a message
Summarize a file's contents into key bullet points
Translate text between languages using the system's translate command
Get current weather for a location using wttr.in