/new-tool
Add a new tool to Waku the right way — schema, safe execution, deterministic eval, honest output. Use when adding or modifying agent tools or when the user asks for a new capability.
$ npx -y skills add ShenSeanChen/waku-agent --skill new-tool --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/new-tool
Context preview
The summary Claude sees to decide when to auto-load this skill.
Add a new tool to Waku the right way — schema, safe execution, deterministic eval, honest output. Use when adding or modifying agent tools or when the user asks for a new capability.
SKILL.md
new-tool.SKILL.mdname: new-tool description: Add a new tool to Waku the right way — schema, safe execution, deterministic eval, honest output. Use when adding or modifying agent tools or when the user asks for a new capability.
Procedure
1. One file per tool in `waku/tools/`, exposing `make_tool(...) -> Tool`. Copy the shape of `waku/tools/calendar.py` (the reference implementation). 2. The tool function must be:
- **Idempotent** where repeat calls could occur (check-before-insert, like
create_event's title+start guard).
- **Honest in its return string**: say exactly where the artifact went
(file path, table) and how the user can see it. Never imply effects the tool doesn't have.
- **Local-first by default**: write to `.waku/` or state.db; real external
services go behind env-gated adapters. 3. Register it in `waku/tools/__init__.py:build_registry`. 4. Add deterministic eval coverage in `evals/deterministic/`:
- offline: scripted client fires the tool → assert the artifact (DB row/file)
- a dataset case in `evals/dataset.jsonl` for the live tier
5. If the tool needs usage guidance, add a rule to DEFAULT_SOUL (`waku/runtime/session.py`) or a skill in `skills/`. 6. Check scope first: the repo ships flagship-task tools only. New capabilities beyond scheduling/notes/messages should be discussed before building.
Your own AI assistant. On your laptop. In code you can read in an afternoon. Meet Waku — a local-first personal assistant that shows the four pillars behind every serious agent: Harness · Loop · Memory · Eval/LLM-Ops. No frameworks hiding the good parts.
Other skills on waku-agent.
- /excalidraw
Generate an Excalidraw whiteboard in Sean's hand-drawn video style (Excalifont, roughness 1, green signature, socials + watermark, source labels). Use whenever the user wants a whiteboard, diagram, teaching board, or "chart" for a video or the docs/whiteboards gallery — anything
Open skill - /pr-worktree
Create and tear down the throwaway git worktrees used to test community PRs for waku-agent, without leaking API keys or leaving branches behind. Use when setting up to test a PR, and ALWAYS after a PR is merged, closed, or parked.
Open skill - /review-pr
Walk Sean through an incoming waku-agent PR or issue and present it his way — four fixed sections: what this is, why it matters, how HE can test it with you as copilot, and are we ready to merge / reply / close and why. Use whenever Sean asks to look at, test, triage, or decide
Open skill - /ship
Commit and push the current work properly — lint, run the release gate, write a detailed commit message, push to GitHub. Use whenever work reaches a milestone or the user says ship it, commit, or push.
Open skill - /pokedex
Look up any Pokemon's types, base stats, and abilities from the public PokeAPI. Use whenever the user mentions a specific Pokemon by name or asks about its stats, types, or abilities.
Open skill - /meeting-prep
Prep me for a meeting or call — who I'm meeting, background, talking points. Use for "prep me for", "get me ready for", "what should I know before", "who am I meeting", "brief me on my call with".
Open skill

