0xkobold 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/.agents/skills/nextjs-best-practices/SKILL.md +208 -0
  2. package/.agents/skills/sql-optimization-patterns/SKILL.md +509 -0
  3. package/HEARTBEAT.md +45 -0
  4. package/README.md +197 -0
  5. package/USAGE.md +191 -0
  6. package/dist/package.json +77 -0
  7. package/dist/src/agent/pi-adapter.js +307 -0
  8. package/dist/src/agent/pi-adapter.js.map +1 -0
  9. package/dist/src/agent/tool-adapter.js +86 -0
  10. package/dist/src/agent/tool-adapter.js.map +1 -0
  11. package/dist/src/approval/queue.js +114 -0
  12. package/dist/src/approval/queue.js.map +1 -0
  13. package/dist/src/ascii-kobold.js +76 -0
  14. package/dist/src/ascii-kobold.js.map +1 -0
  15. package/dist/src/cli/client.js +217 -0
  16. package/dist/src/cli/client.js.map +1 -0
  17. package/dist/src/cli/commands/agent.js +272 -0
  18. package/dist/src/cli/commands/agent.js.map +1 -0
  19. package/dist/src/cli/commands/chat.js +234 -0
  20. package/dist/src/cli/commands/chat.js.map +1 -0
  21. package/dist/src/cli/commands/config.js +202 -0
  22. package/dist/src/cli/commands/config.js.map +1 -0
  23. package/dist/src/cli/commands/daemon.js +203 -0
  24. package/dist/src/cli/commands/daemon.js.map +1 -0
  25. package/dist/src/cli/commands/gateway.js +184 -0
  26. package/dist/src/cli/commands/gateway.js.map +1 -0
  27. package/dist/src/cli/commands/init.js +175 -0
  28. package/dist/src/cli/commands/init.js.map +1 -0
  29. package/dist/src/cli/commands/kobold.js +21 -0
  30. package/dist/src/cli/commands/kobold.js.map +1 -0
  31. package/dist/src/cli/commands/logs.js +27 -0
  32. package/dist/src/cli/commands/logs.js.map +1 -0
  33. package/dist/src/cli/commands/mode.js +121 -0
  34. package/dist/src/cli/commands/mode.js.map +1 -0
  35. package/dist/src/cli/commands/persona.js +261 -0
  36. package/dist/src/cli/commands/persona.js.map +1 -0
  37. package/dist/src/cli/commands/start.js +66 -0
  38. package/dist/src/cli/commands/start.js.map +1 -0
  39. package/dist/src/cli/commands/status.js +117 -0
  40. package/dist/src/cli/commands/status.js.map +1 -0
  41. package/dist/src/cli/commands/stop.js +27 -0
  42. package/dist/src/cli/commands/stop.js.map +1 -0
  43. package/dist/src/cli/commands/system.js +128 -0
  44. package/dist/src/cli/commands/system.js.map +1 -0
  45. package/dist/src/cli/commands/tui.js +103 -0
  46. package/dist/src/cli/commands/tui.js.map +1 -0
  47. package/dist/src/cli/commands/update.js +133 -0
  48. package/dist/src/cli/commands/update.js.map +1 -0
  49. package/dist/src/cli/extensions/discord.js +113 -0
  50. package/dist/src/cli/extensions/discord.js.map +1 -0
  51. package/dist/src/cli/extensions/env.js +91 -0
  52. package/dist/src/cli/extensions/env.js.map +1 -0
  53. package/dist/src/cli/extensions/heartbeat.js +78 -0
  54. package/dist/src/cli/extensions/heartbeat.js.map +1 -0
  55. package/dist/src/cli/index.js +24 -0
  56. package/dist/src/cli/index.js.map +1 -0
  57. package/dist/src/cli/program.js +70 -0
  58. package/dist/src/cli/program.js.map +1 -0
  59. package/dist/src/cli/repl.js +184 -0
  60. package/dist/src/cli/repl.js.map +1 -0
  61. package/dist/src/cli/shared/discord-service.js +102 -0
  62. package/dist/src/cli/shared/discord-service.js.map +1 -0
  63. package/dist/src/config/index.js +10 -0
  64. package/dist/src/config/index.js.map +1 -0
  65. package/dist/src/config/loader.js +401 -0
  66. package/dist/src/config/loader.js.map +1 -0
  67. package/dist/src/config/paths.js +84 -0
  68. package/dist/src/config/paths.js.map +1 -0
  69. package/dist/src/config/types.js +8 -0
  70. package/dist/src/config/types.js.map +1 -0
  71. package/dist/src/context-detector.js +60 -0
  72. package/dist/src/context-detector.js.map +1 -0
  73. package/dist/src/discord/index.js +376 -0
  74. package/dist/src/discord/index.js.map +1 -0
  75. package/dist/src/event-bus/index.js +97 -0
  76. package/dist/src/event-bus/index.js.map +1 -0
  77. package/dist/src/extensions/command-args.js +68 -0
  78. package/dist/src/extensions/command-args.js.map +1 -0
  79. package/dist/src/extensions/core/agent-registry-extension.js +541 -0
  80. package/dist/src/extensions/core/agent-registry-extension.js.map +1 -0
  81. package/dist/src/extensions/core/agent-worker.js +148 -0
  82. package/dist/src/extensions/core/agent-worker.js.map +1 -0
  83. package/dist/src/extensions/core/compaction-safeguard.js +154 -0
  84. package/dist/src/extensions/core/compaction-safeguard.js.map +1 -0
  85. package/dist/src/extensions/core/confirm-destructive.js +43 -0
  86. package/dist/src/extensions/core/confirm-destructive.js.map +1 -0
  87. package/dist/src/extensions/core/context-aware-extension.js +124 -0
  88. package/dist/src/extensions/core/context-aware-extension.js.map +1 -0
  89. package/dist/src/extensions/core/context-pruning/extension.js +124 -0
  90. package/dist/src/extensions/core/context-pruning/extension.js.map +1 -0
  91. package/dist/src/extensions/core/context-pruning/pruner.js +312 -0
  92. package/dist/src/extensions/core/context-pruning/pruner.js.map +1 -0
  93. package/dist/src/extensions/core/context-pruning/runtime.js +48 -0
  94. package/dist/src/extensions/core/context-pruning/runtime.js.map +1 -0
  95. package/dist/src/extensions/core/context-pruning/settings.js +105 -0
  96. package/dist/src/extensions/core/context-pruning/settings.js.map +1 -0
  97. package/dist/src/extensions/core/dirty-repo-guard.js +42 -0
  98. package/dist/src/extensions/core/dirty-repo-guard.js.map +1 -0
  99. package/dist/src/extensions/core/discord-channel-extension.js +205 -0
  100. package/dist/src/extensions/core/discord-channel-extension.js.map +1 -0
  101. package/dist/src/extensions/core/discord-extension.js +142 -0
  102. package/dist/src/extensions/core/discord-extension.js.map +1 -0
  103. package/dist/src/extensions/core/env-loader-extension.js +157 -0
  104. package/dist/src/extensions/core/env-loader-extension.js.map +1 -0
  105. package/dist/src/extensions/core/fileops-extension.js +699 -0
  106. package/dist/src/extensions/core/fileops-extension.js.map +1 -0
  107. package/dist/src/extensions/core/gateway-extension.js +730 -0
  108. package/dist/src/extensions/core/gateway-extension.js.map +1 -0
  109. package/dist/src/extensions/core/git-checkpoint.js +46 -0
  110. package/dist/src/extensions/core/git-checkpoint.js.map +1 -0
  111. package/dist/src/extensions/core/handoff-extension.js +206 -0
  112. package/dist/src/extensions/core/handoff-extension.js.map +1 -0
  113. package/dist/src/extensions/core/heartbeat-extension.js +373 -0
  114. package/dist/src/extensions/core/heartbeat-extension.js.map +1 -0
  115. package/dist/src/extensions/core/mcp-extension.js +413 -0
  116. package/dist/src/extensions/core/mcp-extension.js.map +1 -0
  117. package/dist/src/extensions/core/mode-manager-extension.js +562 -0
  118. package/dist/src/extensions/core/mode-manager-extension.js.map +1 -0
  119. package/dist/src/extensions/core/multi-channel-extension.js +435 -0
  120. package/dist/src/extensions/core/multi-channel-extension.js.map +1 -0
  121. package/dist/src/extensions/core/ollama-provider-extension.js +66 -0
  122. package/dist/src/extensions/core/ollama-provider-extension.js.map +1 -0
  123. package/dist/src/extensions/core/onboarding-extension.js +122 -0
  124. package/dist/src/extensions/core/onboarding-extension.js.map +1 -0
  125. package/dist/src/extensions/core/persona-loader-extension.js +139 -0
  126. package/dist/src/extensions/core/persona-loader-extension.js.map +1 -0
  127. package/dist/src/extensions/core/pi-notify-extension.js +70 -0
  128. package/dist/src/extensions/core/pi-notify-extension.js.map +1 -0
  129. package/dist/src/extensions/core/protected-paths.js +24 -0
  130. package/dist/src/extensions/core/protected-paths.js.map +1 -0
  131. package/dist/src/extensions/core/questionnaire-extension.js +242 -0
  132. package/dist/src/extensions/core/questionnaire-extension.js.map +1 -0
  133. package/dist/src/extensions/core/self-update-extension.js +181 -0
  134. package/dist/src/extensions/core/self-update-extension.js.map +1 -0
  135. package/dist/src/extensions/core/session-bridge-extension.js +78 -0
  136. package/dist/src/extensions/core/session-bridge-extension.js.map +1 -0
  137. package/dist/src/extensions/core/session-manager-extension.js +319 -0
  138. package/dist/src/extensions/core/session-manager-extension.js.map +1 -0
  139. package/dist/src/extensions/core/session-name-extension.js +88 -0
  140. package/dist/src/extensions/core/session-name-extension.js.map +1 -0
  141. package/dist/src/extensions/core/session-pruning-extension.js +480 -0
  142. package/dist/src/extensions/core/session-pruning-extension.js.map +1 -0
  143. package/dist/src/extensions/core/task-manager-extension.js +661 -0
  144. package/dist/src/extensions/core/task-manager-extension.js.map +1 -0
  145. package/dist/src/extensions/core/update-extension.js +438 -0
  146. package/dist/src/extensions/core/update-extension.js.map +1 -0
  147. package/dist/src/extensions/core/websearch-extension.js +463 -0
  148. package/dist/src/extensions/core/websearch-extension.js.map +1 -0
  149. package/dist/src/extensions/index.js +5 -0
  150. package/dist/src/extensions/index.js.map +1 -0
  151. package/dist/src/extensions/loader.js +80 -0
  152. package/dist/src/extensions/loader.js.map +1 -0
  153. package/dist/src/gateway/index.js +353 -0
  154. package/dist/src/gateway/index.js.map +1 -0
  155. package/dist/src/index.js +150 -0
  156. package/dist/src/index.js.map +1 -0
  157. package/dist/src/llm/anthropic.js +86 -0
  158. package/dist/src/llm/anthropic.js.map +1 -0
  159. package/dist/src/llm/index.js +9 -0
  160. package/dist/src/llm/index.js.map +1 -0
  161. package/dist/src/llm/ollama.js +113 -0
  162. package/dist/src/llm/ollama.js.map +1 -0
  163. package/dist/src/llm/router.js +145 -0
  164. package/dist/src/llm/router.js.map +1 -0
  165. package/dist/src/llm/types.js +7 -0
  166. package/dist/src/llm/types.js.map +1 -0
  167. package/dist/src/memory/index.js +5 -0
  168. package/dist/src/memory/index.js.map +1 -0
  169. package/dist/src/memory/store.js +91 -0
  170. package/dist/src/memory/store.js.map +1 -0
  171. package/dist/src/pi-config.js +80 -0
  172. package/dist/src/pi-config.js.map +1 -0
  173. package/dist/src/skills/builtin/file.js +184 -0
  174. package/dist/src/skills/builtin/file.js.map +1 -0
  175. package/dist/src/skills/builtin/shell.js +100 -0
  176. package/dist/src/skills/builtin/shell.js.map +1 -0
  177. package/dist/src/skills/builtin/subagent.js +62 -0
  178. package/dist/src/skills/builtin/subagent.js.map +1 -0
  179. package/dist/src/skills/hello.js +42 -0
  180. package/dist/src/skills/hello.js.map +1 -0
  181. package/dist/src/skills/index.js +11 -0
  182. package/dist/src/skills/index.js.map +1 -0
  183. package/dist/src/skills/loader.js +382 -0
  184. package/dist/src/skills/loader.js.map +1 -0
  185. package/dist/src/skills/types.js +8 -0
  186. package/dist/src/skills/types.js.map +1 -0
  187. package/dist/src/utils/working-dir.js +71 -0
  188. package/dist/src/utils/working-dir.js.map +1 -0
  189. package/package.json +77 -0
  190. package/skills/1password/SKILL.md +70 -0
  191. package/skills/1password/references/cli-examples.md +29 -0
  192. package/skills/1password/references/get-started.md +17 -0
  193. package/skills/apple-notes/SKILL.md +77 -0
  194. package/skills/apple-reminders/SKILL.md +118 -0
  195. package/skills/bear-notes/SKILL.md +107 -0
  196. package/skills/blogwatcher/SKILL.md +69 -0
  197. package/skills/blucli/SKILL.md +47 -0
  198. package/skills/bluebubbles/SKILL.md +131 -0
  199. package/skills/camsnap/SKILL.md +45 -0
  200. package/skills/canvas/SKILL.md +198 -0
  201. package/skills/clawhub/SKILL.md +77 -0
  202. package/skills/coding-agent/SKILL.md +284 -0
  203. package/skills/discord/SKILL.md +197 -0
  204. package/skills/eightctl/SKILL.md +50 -0
  205. package/skills/food-order/SKILL.md +48 -0
  206. package/skills/gemini/SKILL.md +43 -0
  207. package/skills/gh-issues/SKILL.md +865 -0
  208. package/skills/gifgrep/SKILL.md +79 -0
  209. package/skills/github/SKILL.md +163 -0
  210. package/skills/gog/SKILL.md +116 -0
  211. package/skills/goplaces/SKILL.md +52 -0
  212. package/skills/healthcheck/SKILL.md +245 -0
  213. package/skills/himalaya/SKILL.md +257 -0
  214. package/skills/himalaya/references/configuration.md +184 -0
  215. package/skills/himalaya/references/message-composition.md +199 -0
  216. package/skills/imsg/SKILL.md +122 -0
  217. package/skills/mcporter/SKILL.md +61 -0
  218. package/skills/model-usage/SKILL.md +69 -0
  219. package/skills/model-usage/references/codexbar-cli.md +33 -0
  220. package/skills/model-usage/scripts/model_usage.py +310 -0
  221. package/skills/nano-banana-pro/SKILL.md +58 -0
  222. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  223. package/skills/nano-pdf/SKILL.md +38 -0
  224. package/skills/notion/SKILL.md +172 -0
  225. package/skills/obsidian/SKILL.md +81 -0
  226. package/skills/openai-image-gen/SKILL.md +89 -0
  227. package/skills/openai-image-gen/scripts/gen.py +240 -0
  228. package/skills/openai-whisper/SKILL.md +38 -0
  229. package/skills/openai-whisper-api/SKILL.md +52 -0
  230. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  231. package/skills/openhue/SKILL.md +112 -0
  232. package/skills/oracle/SKILL.md +125 -0
  233. package/skills/ordercli/SKILL.md +78 -0
  234. package/skills/peekaboo/SKILL.md +190 -0
  235. package/skills/sag/SKILL.md +87 -0
  236. package/skills/session-logs/SKILL.md +115 -0
  237. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  238. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  239. package/skills/skill-creator/SKILL.md +370 -0
  240. package/skills/skill-creator/license.txt +202 -0
  241. package/skills/skill-creator/scripts/init_skill.py +378 -0
  242. package/skills/skill-creator/scripts/package_skill.py +111 -0
  243. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  244. package/skills/slack/SKILL.md +144 -0
  245. package/skills/songsee/SKILL.md +49 -0
  246. package/skills/sonoscli/SKILL.md +46 -0
  247. package/skills/spotify-player/SKILL.md +64 -0
  248. package/skills/summarize/SKILL.md +87 -0
  249. package/skills/things-mac/SKILL.md +86 -0
  250. package/skills/tmux/SKILL.md +153 -0
  251. package/skills/tmux/scripts/find-sessions.sh +112 -0
  252. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  253. package/skills/trello/SKILL.md +95 -0
  254. package/skills/video-frames/SKILL.md +46 -0
  255. package/skills/video-frames/scripts/frame.sh +81 -0
  256. package/skills/voice-call/SKILL.md +45 -0
  257. package/skills/wacli/SKILL.md +72 -0
  258. package/skills/weather/SKILL.md +112 -0
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: ordercli
3
+ description: Foodora-only CLI for checking past orders and active order status (Deliveroo WIP).
4
+ homepage: https://ordercli.sh
5
+ metadata:
6
+ {
7
+ "kobold":
8
+ {
9
+ "emoji": "🛵",
10
+ "requires": { "bins": ["ordercli"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "brew",
15
+ "kind": "brew",
16
+ "formula": "steipete/tap/ordercli",
17
+ "bins": ["ordercli"],
18
+ "label": "Install ordercli (brew)",
19
+ },
20
+ {
21
+ "id": "go",
22
+ "kind": "go",
23
+ "module": "github.com/steipete/ordercli/cmd/ordercli@latest",
24
+ "bins": ["ordercli"],
25
+ "label": "Install ordercli (go)",
26
+ },
27
+ ],
28
+ },
29
+ }
30
+ ---
31
+
32
+ # ordercli
33
+
34
+ Use `ordercli` to check past orders and track active order status (Foodora only right now).
35
+
36
+ Quick start (Foodora)
37
+
38
+ - `ordercli foodora countries`
39
+ - `ordercli foodora config set --country AT`
40
+ - `ordercli foodora login --email you@example.com --password-stdin`
41
+ - `ordercli foodora orders`
42
+ - `ordercli foodora history --limit 20`
43
+ - `ordercli foodora history show <orderCode>`
44
+
45
+ Orders
46
+
47
+ - Active list (arrival/status): `ordercli foodora orders`
48
+ - Watch: `ordercli foodora orders --watch`
49
+ - Active order detail: `ordercli foodora order <orderCode>`
50
+ - History detail JSON: `ordercli foodora history show <orderCode> --json`
51
+
52
+ Reorder (adds to cart)
53
+
54
+ - Preview: `ordercli foodora reorder <orderCode>`
55
+ - Confirm: `ordercli foodora reorder <orderCode> --confirm`
56
+ - Address: `ordercli foodora reorder <orderCode> --confirm --address-id <id>`
57
+
58
+ Cloudflare / bot protection
59
+
60
+ - Browser login: `ordercli foodora login --email you@example.com --password-stdin --browser`
61
+ - Reuse profile: `--browser-profile "$HOME/Library/Application Support/ordercli/browser-profile"`
62
+ - Import Chrome cookies: `ordercli foodora cookies chrome --profile "Default"`
63
+
64
+ Session import (no password)
65
+
66
+ - `ordercli foodora session chrome --url https://www.foodora.at/ --profile "Default"`
67
+ - `ordercli foodora session refresh --client-id android`
68
+
69
+ Deliveroo (WIP, not working yet)
70
+
71
+ - Requires `DELIVEROO_BEARER_TOKEN` (optional `DELIVEROO_COOKIE`).
72
+ - `ordercli deliveroo config set --market uk`
73
+ - `ordercli deliveroo history`
74
+
75
+ Notes
76
+
77
+ - Use `--config /tmp/ordercli.json` for testing.
78
+ - Confirm before any reorder or cart-changing action.
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: peekaboo
3
+ description: Capture and automate macOS UI with the Peekaboo CLI.
4
+ homepage: https://peekaboo.boo
5
+ metadata:
6
+ {
7
+ "kobold":
8
+ {
9
+ "emoji": "👀",
10
+ "os": ["darwin"],
11
+ "requires": { "bins": ["peekaboo"] },
12
+ "install":
13
+ [
14
+ {
15
+ "id": "brew",
16
+ "kind": "brew",
17
+ "formula": "steipete/tap/peekaboo",
18
+ "bins": ["peekaboo"],
19
+ "label": "Install Peekaboo (brew)",
20
+ },
21
+ ],
22
+ },
23
+ }
24
+ ---
25
+
26
+ # Peekaboo
27
+
28
+ Peekaboo is a full macOS UI automation CLI: capture/inspect screens, target UI
29
+ elements, drive input, and manage apps/windows/menus. Commands share a snapshot
30
+ cache and support `--json`/`-j` for scripting. Run `peekaboo` or
31
+ `peekaboo <cmd> --help` for flags; `peekaboo --version` prints build metadata.
32
+ Tip: run via `polter peekaboo` to ensure fresh builds.
33
+
34
+ ## Features (all CLI capabilities, excluding agent/MCP)
35
+
36
+ Core
37
+
38
+ - `bridge`: inspect Peekaboo Bridge host connectivity
39
+ - `capture`: live capture or video ingest + frame extraction
40
+ - `clean`: prune snapshot cache and temp files
41
+ - `config`: init/show/edit/validate, providers, models, credentials
42
+ - `image`: capture screenshots (screen/window/menu bar regions)
43
+ - `learn`: print the full agent guide + tool catalog
44
+ - `list`: apps, windows, screens, menubar, permissions
45
+ - `permissions`: check Screen Recording/Accessibility status
46
+ - `run`: execute `.peekaboo.json` scripts
47
+ - `sleep`: pause execution for a duration
48
+ - `tools`: list available tools with filtering/display options
49
+
50
+ Interaction
51
+
52
+ - `click`: target by ID/query/coords with smart waits
53
+ - `drag`: drag & drop across elements/coords/Dock
54
+ - `hotkey`: modifier combos like `cmd,shift,t`
55
+ - `move`: cursor positioning with optional smoothing
56
+ - `paste`: set clipboard -> paste -> restore
57
+ - `press`: special-key sequences with repeats
58
+ - `scroll`: directional scrolling (targeted + smooth)
59
+ - `swipe`: gesture-style drags between targets
60
+ - `type`: text + control keys (`--clear`, delays)
61
+
62
+ System
63
+
64
+ - `app`: launch/quit/relaunch/hide/unhide/switch/list apps
65
+ - `clipboard`: read/write clipboard (text/images/files)
66
+ - `dialog`: click/input/file/dismiss/list system dialogs
67
+ - `dock`: launch/right-click/hide/show/list Dock items
68
+ - `menu`: click/list application menus + menu extras
69
+ - `menubar`: list/click status bar items
70
+ - `open`: enhanced `open` with app targeting + JSON payloads
71
+ - `space`: list/switch/move-window (Spaces)
72
+ - `visualizer`: exercise Peekaboo visual feedback animations
73
+ - `window`: close/minimize/maximize/move/resize/focus/list
74
+
75
+ Vision
76
+
77
+ - `see`: annotated UI maps, snapshot IDs, optional analysis
78
+
79
+ Global runtime flags
80
+
81
+ - `--json`/`-j`, `--verbose`/`-v`, `--log-level <level>`
82
+ - `--no-remote`, `--bridge-socket <path>`
83
+
84
+ ## Quickstart (happy path)
85
+
86
+ ```bash
87
+ peekaboo permissions
88
+ peekaboo list apps --json
89
+ peekaboo see --annotate --path /tmp/peekaboo-see.png
90
+ peekaboo click --on B1
91
+ peekaboo type "Hello" --return
92
+ ```
93
+
94
+ ## Common targeting parameters (most interaction commands)
95
+
96
+ - App/window: `--app`, `--pid`, `--window-title`, `--window-id`, `--window-index`
97
+ - Snapshot targeting: `--snapshot` (ID from `see`; defaults to latest)
98
+ - Element/coords: `--on`/`--id` (element ID), `--coords x,y`
99
+ - Focus control: `--no-auto-focus`, `--space-switch`, `--bring-to-current-space`,
100
+ `--focus-timeout-seconds`, `--focus-retry-count`
101
+
102
+ ## Common capture parameters
103
+
104
+ - Output: `--path`, `--format png|jpg`, `--retina`
105
+ - Targeting: `--mode screen|window|frontmost`, `--screen-index`,
106
+ `--window-title`, `--window-id`
107
+ - Analysis: `--analyze "prompt"`, `--annotate`
108
+ - Capture engine: `--capture-engine auto|classic|cg|modern|sckit`
109
+
110
+ ## Common motion/typing parameters
111
+
112
+ - Timing: `--duration` (drag/swipe), `--steps`, `--delay` (type/scroll/press)
113
+ - Human-ish movement: `--profile human|linear`, `--wpm` (typing)
114
+ - Scroll: `--direction up|down|left|right`, `--amount <ticks>`, `--smooth`
115
+
116
+ ## Examples
117
+
118
+ ### See -> click -> type (most reliable flow)
119
+
120
+ ```bash
121
+ peekaboo see --app Safari --window-title "Login" --annotate --path /tmp/see.png
122
+ peekaboo click --on B3 --app Safari
123
+ peekaboo type "user@example.com" --app Safari
124
+ peekaboo press tab --count 1 --app Safari
125
+ peekaboo type "supersecret" --app Safari --return
126
+ ```
127
+
128
+ ### Target by window id
129
+
130
+ ```bash
131
+ peekaboo list windows --app "Visual Studio Code" --json
132
+ peekaboo click --window-id 12345 --coords 120,160
133
+ peekaboo type "Hello from Peekaboo" --window-id 12345
134
+ ```
135
+
136
+ ### Capture screenshots + analyze
137
+
138
+ ```bash
139
+ peekaboo image --mode screen --screen-index 0 --retina --path /tmp/screen.png
140
+ peekaboo image --app Safari --window-title "Dashboard" --analyze "Summarize KPIs"
141
+ peekaboo see --mode screen --screen-index 0 --analyze "Summarize the dashboard"
142
+ ```
143
+
144
+ ### Live capture (motion-aware)
145
+
146
+ ```bash
147
+ peekaboo capture live --mode region --region 100,100,800,600 --duration 30 \
148
+ --active-fps 8 --idle-fps 2 --highlight-changes --path /tmp/capture
149
+ ```
150
+
151
+ ### App + window management
152
+
153
+ ```bash
154
+ peekaboo app launch "Safari" --open https://example.com
155
+ peekaboo window focus --app Safari --window-title "Example"
156
+ peekaboo window set-bounds --app Safari --x 50 --y 50 --width 1200 --height 800
157
+ peekaboo app quit --app Safari
158
+ ```
159
+
160
+ ### Menus, menubar, dock
161
+
162
+ ```bash
163
+ peekaboo menu click --app Safari --item "New Window"
164
+ peekaboo menu click --app TextEdit --path "Format > Font > Show Fonts"
165
+ peekaboo menu click-extra --title "WiFi"
166
+ peekaboo dock launch Safari
167
+ peekaboo menubar list --json
168
+ ```
169
+
170
+ ### Mouse + gesture input
171
+
172
+ ```bash
173
+ peekaboo move 500,300 --smooth
174
+ peekaboo drag --from B1 --to T2
175
+ peekaboo swipe --from-coords 100,500 --to-coords 100,200 --duration 800
176
+ peekaboo scroll --direction down --amount 6 --smooth
177
+ ```
178
+
179
+ ### Keyboard input
180
+
181
+ ```bash
182
+ peekaboo hotkey --keys "cmd,shift,t"
183
+ peekaboo press escape
184
+ peekaboo type "Line 1\nLine 2" --delay 10
185
+ ```
186
+
187
+ Notes
188
+
189
+ - Requires Screen Recording + Accessibility permissions.
190
+ - Use `peekaboo see --annotate` to identify targets before clicking.
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: sag
3
+ description: ElevenLabs text-to-speech with mac-style say UX.
4
+ homepage: https://sag.sh
5
+ metadata:
6
+ {
7
+ "kobold":
8
+ {
9
+ "emoji": "🗣️",
10
+ "requires": { "bins": ["sag"], "env": ["ELEVENLABS_API_KEY"] },
11
+ "primaryEnv": "ELEVENLABS_API_KEY",
12
+ "install":
13
+ [
14
+ {
15
+ "id": "brew",
16
+ "kind": "brew",
17
+ "formula": "steipete/tap/sag",
18
+ "bins": ["sag"],
19
+ "label": "Install sag (brew)",
20
+ },
21
+ ],
22
+ },
23
+ }
24
+ ---
25
+
26
+ # sag
27
+
28
+ Use `sag` for ElevenLabs TTS with local playback.
29
+
30
+ API key (required)
31
+
32
+ - `ELEVENLABS_API_KEY` (preferred)
33
+ - `SAG_API_KEY` also supported by the CLI
34
+
35
+ Quick start
36
+
37
+ - `sag "Hello there"`
38
+ - `sag speak -v "Roger" "Hello"`
39
+ - `sag voices`
40
+ - `sag prompting` (model-specific tips)
41
+
42
+ Model notes
43
+
44
+ - Default: `eleven_v3` (expressive)
45
+ - Stable: `eleven_multilingual_v2`
46
+ - Fast: `eleven_flash_v2_5`
47
+
48
+ Pronunciation + delivery rules
49
+
50
+ - First fix: respell (e.g. "key-note"), add hyphens, adjust casing.
51
+ - Numbers/units/URLs: `--normalize auto` (or `off` if it harms names).
52
+ - Language bias: `--lang en|de|fr|...` to guide normalization.
53
+ - v3: SSML `<break>` not supported; use `[pause]`, `[short pause]`, `[long pause]`.
54
+ - v2/v2.5: SSML `<break time="1.5s" />` supported; `<phoneme>` not exposed in `sag`.
55
+
56
+ v3 audio tags (put at the entrance of a line)
57
+
58
+ - `[whispers]`, `[shouts]`, `[sings]`
59
+ - `[laughs]`, `[starts laughing]`, `[sighs]`, `[exhales]`
60
+ - `[sarcastic]`, `[curious]`, `[excited]`, `[crying]`, `[mischievously]`
61
+ - Example: `sag "[whispers] keep this quiet. [short pause] ok?"`
62
+
63
+ Voice defaults
64
+
65
+ - `ELEVENLABS_VOICE_ID` or `SAG_VOICE_ID`
66
+
67
+ Confirm voice + speaker before long output.
68
+
69
+ ## Chat voice responses
70
+
71
+ When Peter asks for a "voice" reply (e.g., "crazy scientist voice", "explain in voice"), generate audio and send it:
72
+
73
+ ```bash
74
+ # Generate audio file
75
+ sag -v Clawd -o /tmp/voice-reply.mp3 "Your message here"
76
+
77
+ # Then include in reply:
78
+ # MEDIA:/tmp/voice-reply.mp3
79
+ ```
80
+
81
+ Voice character tips:
82
+
83
+ - Crazy scientist: Use `[excited]` tags, dramatic pauses `[short pause]`, vary intensity
84
+ - Calm: Use `[whispers]` or slower pacing
85
+ - Dramatic: Use `[sings]` or `[shouts]` sparingly
86
+
87
+ Default voice for Clawd: `lj2rcrvANS3gaWWnczSX` (or just `-v Clawd`)
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: session-logs
3
+ description: Search and analyze your own session logs (older/parent conversations) using jq.
4
+ metadata: { "kobold": { "emoji": "📜", "requires": { "bins": ["jq", "rg"] } } }
5
+ ---
6
+
7
+ # session-logs
8
+
9
+ Search your complete conversation history stored in session JSONL files. Use this when a user references older/parent conversations or asks what was said before.
10
+
11
+ ## Trigger
12
+
13
+ Use this skill when the user asks about prior chats, parent conversations, or historical context that isn't in memory files.
14
+
15
+ ## Location
16
+
17
+ Session logs live at: `~/.kobold/agents/<agentId>/sessions/` (use the `agent=<id>` value from the system prompt Runtime line).
18
+
19
+ - **`sessions.json`** - Index mapping session keys to session IDs
20
+ - **`<session-id>.jsonl`** - Full conversation transcript per session
21
+
22
+ ## Structure
23
+
24
+ Each `.jsonl` file contains messages with:
25
+
26
+ - `type`: "session" (metadata) or "message"
27
+ - `timestamp`: ISO timestamp
28
+ - `message.role`: "user", "assistant", or "toolResult"
29
+ - `message.content[]`: Text, thinking, or tool calls (filter `type=="text"` for human-readable content)
30
+ - `message.usage.cost.total`: Cost per response
31
+
32
+ ## Common Queries
33
+
34
+ ### List all sessions by date and size
35
+
36
+ ```bash
37
+ for f in ~/.kobold/agents/<agentId>/sessions/*.jsonl; do
38
+ date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
39
+ size=$(ls -lh "$f" | awk '{print $5}')
40
+ echo "$date $size $(basename $f)"
41
+ done | sort -r
42
+ ```
43
+
44
+ ### Find sessions from a specific day
45
+
46
+ ```bash
47
+ for f in ~/.kobold/agents/<agentId>/sessions/*.jsonl; do
48
+ head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
49
+ done
50
+ ```
51
+
52
+ ### Extract user messages from a session
53
+
54
+ ```bash
55
+ jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
56
+ ```
57
+
58
+ ### Search for keyword in assistant responses
59
+
60
+ ```bash
61
+ jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
62
+ ```
63
+
64
+ ### Get total cost for a session
65
+
66
+ ```bash
67
+ jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
68
+ ```
69
+
70
+ ### Daily cost summary
71
+
72
+ ```bash
73
+ for f in ~/.kobold/agents/<agentId>/sessions/*.jsonl; do
74
+ date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
75
+ cost=$(jq -s '[.[] | .message.usage.cost.total // 0] | add' "$f")
76
+ echo "$date $cost"
77
+ done | awk '{a[$1]+=$2} END {for(d in a) print d, "$"a[d]}' | sort -r
78
+ ```
79
+
80
+ ### Count messages and tokens in a session
81
+
82
+ ```bash
83
+ jq -s '{
84
+ messages: length,
85
+ user: [.[] | select(.message.role == "user")] | length,
86
+ assistant: [.[] | select(.message.role == "assistant")] | length,
87
+ first: .[0].timestamp,
88
+ last: .[-1].timestamp
89
+ }' <session>.jsonl
90
+ ```
91
+
92
+ ### Tool usage breakdown
93
+
94
+ ```bash
95
+ jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
96
+ ```
97
+
98
+ ### Search across ALL sessions for a phrase
99
+
100
+ ```bash
101
+ rg -l "phrase" ~/.kobold/agents/<agentId>/sessions/*.jsonl
102
+ ```
103
+
104
+ ## Tips
105
+
106
+ - Sessions are append-only JSONL (one JSON object per line)
107
+ - Large sessions can be several MB - use `head`/`tail` for sampling
108
+ - The `sessions.json` index maps chat providers (discord, whatsapp, etc.) to session IDs
109
+ - Deleted sessions have `.deleted.<timestamp>` suffix
110
+
111
+ ## Fast text-only hint (low noise)
112
+
113
+ ```bash
114
+ jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.kobold/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
115
+ ```
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: sherpa-onnx-tts
3
+ description: Local text-to-speech via sherpa-onnx (offline, no cloud)
4
+ metadata:
5
+ {
6
+ "kobold":
7
+ {
8
+ "emoji": "🗣️",
9
+ "os": ["darwin", "linux", "win32"],
10
+ "requires": { "env": ["SHERPA_ONNX_RUNTIME_DIR", "SHERPA_ONNX_MODEL_DIR"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "download-runtime-macos",
15
+ "kind": "download",
16
+ "os": ["darwin"],
17
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-osx-universal2-shared.tar.bz2",
18
+ "archive": "tar.bz2",
19
+ "extract": true,
20
+ "stripComponents": 1,
21
+ "targetDir": "runtime",
22
+ "label": "Download sherpa-onnx runtime (macOS)",
23
+ },
24
+ {
25
+ "id": "download-runtime-linux-x64",
26
+ "kind": "download",
27
+ "os": ["linux"],
28
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2",
29
+ "archive": "tar.bz2",
30
+ "extract": true,
31
+ "stripComponents": 1,
32
+ "targetDir": "runtime",
33
+ "label": "Download sherpa-onnx runtime (Linux x64)",
34
+ },
35
+ {
36
+ "id": "download-runtime-win-x64",
37
+ "kind": "download",
38
+ "os": ["win32"],
39
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-win-x64-shared.tar.bz2",
40
+ "archive": "tar.bz2",
41
+ "extract": true,
42
+ "stripComponents": 1,
43
+ "targetDir": "runtime",
44
+ "label": "Download sherpa-onnx runtime (Windows x64)",
45
+ },
46
+ {
47
+ "id": "download-model-lessac",
48
+ "kind": "download",
49
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_US-lessac-high.tar.bz2",
50
+ "archive": "tar.bz2",
51
+ "extract": true,
52
+ "targetDir": "models",
53
+ "label": "Download Piper en_US lessac (high)",
54
+ },
55
+ ],
56
+ },
57
+ }
58
+ ---
59
+
60
+ # sherpa-onnx-tts
61
+
62
+ Local TTS using the sherpa-onnx offline CLI.
63
+
64
+ ## Install
65
+
66
+ 1. Download the runtime for your OS (extracts into `~/.kobold/tools/sherpa-onnx-tts/runtime`)
67
+ 2. Download a voice model (extracts into `~/.kobold/tools/sherpa-onnx-tts/models`)
68
+
69
+ Update `~/.kobold/kobold.json`:
70
+
71
+ ```json5
72
+ {
73
+ skills: {
74
+ entries: {
75
+ "sherpa-onnx-tts": {
76
+ env: {
77
+ SHERPA_ONNX_RUNTIME_DIR: "~/.kobold/tools/sherpa-onnx-tts/runtime",
78
+ SHERPA_ONNX_MODEL_DIR: "~/.kobold/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high",
79
+ },
80
+ },
81
+ },
82
+ },
83
+ }
84
+ ```
85
+
86
+ The wrapper lives in this skill folder. Run it directly, or add the wrapper to PATH:
87
+
88
+ ```bash
89
+ export PATH="{baseDir}/bin:$PATH"
90
+ ```
91
+
92
+ ## Usage
93
+
94
+ ```bash
95
+ {baseDir}/bin/sherpa-onnx-tts -o ./tts.wav "Hello from local TTS."
96
+ ```
97
+
98
+ Notes:
99
+
100
+ - Pick a different model from the sherpa-onnx `tts-models` release if you want another voice.
101
+ - If the model dir has multiple `.onnx` files, set `SHERPA_ONNX_MODEL_FILE` or pass `--model-file`.
102
+ - You can also pass `--tokens-file` or `--data-dir` to override the defaults.
103
+ - Windows: run `node {baseDir}\\bin\\sherpa-onnx-tts -o tts.wav "Hello from local TTS."`