wave ยท diff

git:20260417.d44e951 to git:20260718.3c23ca0

32 added, 17 removed. Audit A to C.

- ---
- name: wave
- description: Wave at the user with context-appropriate enthusiasm.
- triggers:
- - user_greeting
- - user_farewell
- - introduction
- cost: low
- ---
+ # wave
- # Wave
+ The starter skill. One tool, ten lines of handler: it plays the built-in `wave`
+ gesture, then speaks a greeting. Referenced by
+ [examples/coach-leo/manifest.json](../../coach-leo/manifest.json) and walked
+ through in the [skills guide](https://three.ws/docs/skills).
- When the user greets you, says goodbye, or when you are introduced to
- someone, wave at them. Pick the style based on the vibe:
+ | Tool | Use it for |
+ |---|---|
+ | `waveAndGreet` | Wave + spoken greeting in one call |
- - **casual** โ€” default, for most greetings
- - **enthusiastic** โ€” when the user seems excited, or after a shared win
- - **subtle** โ€” in a professional context or mid-conversation
+ ## Why it exists
- Call `wave({ style: "casual" | "enthusiastic" | "subtle" })`.
+ Every skill bundle has the same four files (`manifest.json`, `tools.json`,
+ `handlers.js`, `SKILL.md`). This one is intentionally minimal so you can copy
+ the directory, rename the tool, and have a working custom skill in minutes. The
+ handler shows the two context calls most skills need:
- Do not wave more than once per turn. Do not wave if you just waved this session.
+ ```js
+ await ctx.call('wave', {}); // dispatch any built-in or skill tool
+ await ctx.speak('Hello!'); // TTS through the agent's configured voice
+ ```
+
+ ## Config
+
+ `manifest.config.greeting` sets the default line. Callers can override it per
+ call with the `greeting` argument.
+
+ ## Try it
+
+ Load Coach Leo (`examples/coach-leo/`) and ask him to say hi, or install the
+ skill on any agent and call the tool directly:
+
+ ```js
+ const el = document.querySelector('agent-3d');
+ await el.installSkill('/examples/skills/wave/');
+ ```