cowork-os 0.3.21
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.
- package/LICENSE +21 -0
- package/README.md +1638 -0
- package/bin/cowork.js +42 -0
- package/build/entitlements.mac.plist +16 -0
- package/build/icon.icns +0 -0
- package/build/icon.png +0 -0
- package/dist/electron/electron/activity/ActivityRepository.js +190 -0
- package/dist/electron/electron/agent/browser/browser-service.js +639 -0
- package/dist/electron/electron/agent/context-manager.js +225 -0
- package/dist/electron/electron/agent/custom-skill-loader.js +566 -0
- package/dist/electron/electron/agent/daemon.js +975 -0
- package/dist/electron/electron/agent/executor.js +3561 -0
- package/dist/electron/electron/agent/llm/anthropic-provider.js +155 -0
- package/dist/electron/electron/agent/llm/bedrock-provider.js +202 -0
- package/dist/electron/electron/agent/llm/gemini-provider.js +375 -0
- package/dist/electron/electron/agent/llm/index.js +34 -0
- package/dist/electron/electron/agent/llm/ollama-provider.js +263 -0
- package/dist/electron/electron/agent/llm/openai-oauth.js +101 -0
- package/dist/electron/electron/agent/llm/openai-provider.js +657 -0
- package/dist/electron/electron/agent/llm/openrouter-provider.js +232 -0
- package/dist/electron/electron/agent/llm/pricing.js +160 -0
- package/dist/electron/electron/agent/llm/provider-factory.js +880 -0
- package/dist/electron/electron/agent/llm/types.js +178 -0
- package/dist/electron/electron/agent/queue-manager.js +378 -0
- package/dist/electron/electron/agent/sandbox/docker-sandbox.js +402 -0
- package/dist/electron/electron/agent/sandbox/macos-sandbox.js +407 -0
- package/dist/electron/electron/agent/sandbox/runner.js +410 -0
- package/dist/electron/electron/agent/sandbox/sandbox-factory.js +228 -0
- package/dist/electron/electron/agent/sandbox/security-utils.js +258 -0
- package/dist/electron/electron/agent/search/brave-provider.js +119 -0
- package/dist/electron/electron/agent/search/google-provider.js +100 -0
- package/dist/electron/electron/agent/search/index.js +28 -0
- package/dist/electron/electron/agent/search/provider-factory.js +395 -0
- package/dist/electron/electron/agent/search/serpapi-provider.js +112 -0
- package/dist/electron/electron/agent/search/tavily-provider.js +90 -0
- package/dist/electron/electron/agent/search/types.js +40 -0
- package/dist/electron/electron/agent/security/index.js +12 -0
- package/dist/electron/electron/agent/security/input-sanitizer.js +303 -0
- package/dist/electron/electron/agent/security/output-filter.js +217 -0
- package/dist/electron/electron/agent/skill-eligibility.js +281 -0
- package/dist/electron/electron/agent/skill-registry.js +396 -0
- package/dist/electron/electron/agent/skills/document.js +878 -0
- package/dist/electron/electron/agent/skills/image-generator.js +225 -0
- package/dist/electron/electron/agent/skills/organizer.js +141 -0
- package/dist/electron/electron/agent/skills/presentation.js +367 -0
- package/dist/electron/electron/agent/skills/spreadsheet.js +165 -0
- package/dist/electron/electron/agent/tools/browser-tools.js +523 -0
- package/dist/electron/electron/agent/tools/builtin-settings.js +384 -0
- package/dist/electron/electron/agent/tools/canvas-tools.js +530 -0
- package/dist/electron/electron/agent/tools/cron-tools.js +577 -0
- package/dist/electron/electron/agent/tools/edit-tools.js +194 -0
- package/dist/electron/electron/agent/tools/file-tools.js +719 -0
- package/dist/electron/electron/agent/tools/glob-tools.js +283 -0
- package/dist/electron/electron/agent/tools/grep-tools.js +387 -0
- package/dist/electron/electron/agent/tools/image-tools.js +111 -0
- package/dist/electron/electron/agent/tools/mention-tools.js +282 -0
- package/dist/electron/electron/agent/tools/node-tools.js +476 -0
- package/dist/electron/electron/agent/tools/registry.js +2719 -0
- package/dist/electron/electron/agent/tools/search-tools.js +91 -0
- package/dist/electron/electron/agent/tools/shell-tools.js +574 -0
- package/dist/electron/electron/agent/tools/skill-tools.js +274 -0
- package/dist/electron/electron/agent/tools/system-tools.js +578 -0
- package/dist/electron/electron/agent/tools/web-fetch-tools.js +444 -0
- package/dist/electron/electron/agent/tools/x-tools.js +264 -0
- package/dist/electron/electron/agents/AgentRoleRepository.js +420 -0
- package/dist/electron/electron/agents/HeartbeatService.js +356 -0
- package/dist/electron/electron/agents/MentionRepository.js +197 -0
- package/dist/electron/electron/agents/TaskSubscriptionRepository.js +168 -0
- package/dist/electron/electron/agents/WorkingStateRepository.js +229 -0
- package/dist/electron/electron/canvas/canvas-manager.js +714 -0
- package/dist/electron/electron/canvas/canvas-preload.js +53 -0
- package/dist/electron/electron/canvas/canvas-protocol.js +195 -0
- package/dist/electron/electron/canvas/canvas-store.js +174 -0
- package/dist/electron/electron/canvas/index.js +13 -0
- package/dist/electron/electron/control-plane/client.js +364 -0
- package/dist/electron/electron/control-plane/handlers.js +572 -0
- package/dist/electron/electron/control-plane/index.js +41 -0
- package/dist/electron/electron/control-plane/node-manager.js +264 -0
- package/dist/electron/electron/control-plane/protocol.js +194 -0
- package/dist/electron/electron/control-plane/remote-client.js +437 -0
- package/dist/electron/electron/control-plane/server.js +640 -0
- package/dist/electron/electron/control-plane/settings.js +369 -0
- package/dist/electron/electron/control-plane/ssh-tunnel.js +549 -0
- package/dist/electron/electron/cron/index.js +30 -0
- package/dist/electron/electron/cron/schedule.js +190 -0
- package/dist/electron/electron/cron/service.js +614 -0
- package/dist/electron/electron/cron/store.js +155 -0
- package/dist/electron/electron/cron/types.js +82 -0
- package/dist/electron/electron/cron/webhook.js +258 -0
- package/dist/electron/electron/database/SecureSettingsRepository.js +444 -0
- package/dist/electron/electron/database/TaskLabelRepository.js +120 -0
- package/dist/electron/electron/database/repositories.js +1781 -0
- package/dist/electron/electron/database/schema.js +978 -0
- package/dist/electron/electron/extensions/index.js +33 -0
- package/dist/electron/electron/extensions/loader.js +313 -0
- package/dist/electron/electron/extensions/registry.js +485 -0
- package/dist/electron/electron/extensions/types.js +11 -0
- package/dist/electron/electron/gateway/channel-registry.js +1102 -0
- package/dist/electron/electron/gateway/channels/bluebubbles-client.js +479 -0
- package/dist/electron/electron/gateway/channels/bluebubbles.js +432 -0
- package/dist/electron/electron/gateway/channels/discord.js +975 -0
- package/dist/electron/electron/gateway/channels/email-client.js +593 -0
- package/dist/electron/electron/gateway/channels/email.js +443 -0
- package/dist/electron/electron/gateway/channels/google-chat.js +631 -0
- package/dist/electron/electron/gateway/channels/imessage-client.js +363 -0
- package/dist/electron/electron/gateway/channels/imessage.js +465 -0
- package/dist/electron/electron/gateway/channels/index.js +36 -0
- package/dist/electron/electron/gateway/channels/line-client.js +470 -0
- package/dist/electron/electron/gateway/channels/line.js +479 -0
- package/dist/electron/electron/gateway/channels/matrix-client.js +432 -0
- package/dist/electron/electron/gateway/channels/matrix.js +592 -0
- package/dist/electron/electron/gateway/channels/mattermost-client.js +394 -0
- package/dist/electron/electron/gateway/channels/mattermost.js +496 -0
- package/dist/electron/electron/gateway/channels/signal-client.js +500 -0
- package/dist/electron/electron/gateway/channels/signal.js +582 -0
- package/dist/electron/electron/gateway/channels/slack.js +415 -0
- package/dist/electron/electron/gateway/channels/teams.js +596 -0
- package/dist/electron/electron/gateway/channels/telegram.js +1390 -0
- package/dist/electron/electron/gateway/channels/twitch-client.js +502 -0
- package/dist/electron/electron/gateway/channels/twitch.js +396 -0
- package/dist/electron/electron/gateway/channels/types.js +8 -0
- package/dist/electron/electron/gateway/channels/whatsapp.js +953 -0
- package/dist/electron/electron/gateway/context-policy.js +268 -0
- package/dist/electron/electron/gateway/index.js +1063 -0
- package/dist/electron/electron/gateway/infrastructure.js +496 -0
- package/dist/electron/electron/gateway/router.js +2700 -0
- package/dist/electron/electron/gateway/security.js +375 -0
- package/dist/electron/electron/gateway/session.js +115 -0
- package/dist/electron/electron/gateway/tunnel.js +503 -0
- package/dist/electron/electron/guardrails/guardrail-manager.js +348 -0
- package/dist/electron/electron/hooks/gmail-watcher.js +300 -0
- package/dist/electron/electron/hooks/index.js +46 -0
- package/dist/electron/electron/hooks/mappings.js +381 -0
- package/dist/electron/electron/hooks/server.js +480 -0
- package/dist/electron/electron/hooks/settings.js +447 -0
- package/dist/electron/electron/hooks/types.js +41 -0
- package/dist/electron/electron/ipc/canvas-handlers.js +158 -0
- package/dist/electron/electron/ipc/handlers.js +3138 -0
- package/dist/electron/electron/ipc/mission-control-handlers.js +141 -0
- package/dist/electron/electron/main.js +448 -0
- package/dist/electron/electron/mcp/client/MCPClientManager.js +330 -0
- package/dist/electron/electron/mcp/client/MCPServerConnection.js +437 -0
- package/dist/electron/electron/mcp/client/transports/SSETransport.js +304 -0
- package/dist/electron/electron/mcp/client/transports/StdioTransport.js +307 -0
- package/dist/electron/electron/mcp/client/transports/WebSocketTransport.js +329 -0
- package/dist/electron/electron/mcp/host/MCPHostServer.js +354 -0
- package/dist/electron/electron/mcp/host/ToolAdapter.js +100 -0
- package/dist/electron/electron/mcp/registry/MCPRegistryManager.js +497 -0
- package/dist/electron/electron/mcp/settings.js +446 -0
- package/dist/electron/electron/mcp/types.js +59 -0
- package/dist/electron/electron/memory/MemoryService.js +435 -0
- package/dist/electron/electron/notifications/index.js +17 -0
- package/dist/electron/electron/notifications/service.js +118 -0
- package/dist/electron/electron/notifications/store.js +144 -0
- package/dist/electron/electron/preload.js +842 -0
- package/dist/electron/electron/reports/StandupReportService.js +272 -0
- package/dist/electron/electron/security/concurrency.js +293 -0
- package/dist/electron/electron/security/index.js +15 -0
- package/dist/electron/electron/security/policy-manager.js +435 -0
- package/dist/electron/electron/settings/appearance-manager.js +193 -0
- package/dist/electron/electron/settings/personality-manager.js +724 -0
- package/dist/electron/electron/settings/x-manager.js +58 -0
- package/dist/electron/electron/tailscale/exposure.js +188 -0
- package/dist/electron/electron/tailscale/index.js +28 -0
- package/dist/electron/electron/tailscale/settings.js +205 -0
- package/dist/electron/electron/tailscale/tailscale.js +355 -0
- package/dist/electron/electron/tray/QuickInputWindow.js +568 -0
- package/dist/electron/electron/tray/TrayManager.js +895 -0
- package/dist/electron/electron/tray/index.js +9 -0
- package/dist/electron/electron/updater/index.js +6 -0
- package/dist/electron/electron/updater/update-manager.js +418 -0
- package/dist/electron/electron/utils/env-migration.js +209 -0
- package/dist/electron/electron/utils/process.js +102 -0
- package/dist/electron/electron/utils/rate-limiter.js +104 -0
- package/dist/electron/electron/utils/validation.js +419 -0
- package/dist/electron/electron/utils/x-cli.js +177 -0
- package/dist/electron/electron/voice/VoiceService.js +507 -0
- package/dist/electron/electron/voice/index.js +14 -0
- package/dist/electron/electron/voice/voice-settings-manager.js +359 -0
- package/dist/electron/shared/channelMessages.js +170 -0
- package/dist/electron/shared/types.js +1185 -0
- package/package.json +159 -0
- package/resources/skills/1password.json +10 -0
- package/resources/skills/add-documentation.json +31 -0
- package/resources/skills/analyze-csv.json +17 -0
- package/resources/skills/apple-notes.json +10 -0
- package/resources/skills/apple-reminders.json +10 -0
- package/resources/skills/auto-commenter.json +10 -0
- package/resources/skills/bear-notes.json +10 -0
- package/resources/skills/bird.json +35 -0
- package/resources/skills/blogwatcher.json +10 -0
- package/resources/skills/blucli.json +10 -0
- package/resources/skills/bluebubbles.json +10 -0
- package/resources/skills/camsnap.json +10 -0
- package/resources/skills/clean-imports.json +18 -0
- package/resources/skills/code-review.json +18 -0
- package/resources/skills/coding-agent.json +10 -0
- package/resources/skills/compare-files.json +23 -0
- package/resources/skills/convert-code.json +34 -0
- package/resources/skills/create-changelog.json +24 -0
- package/resources/skills/debug-error.json +17 -0
- package/resources/skills/dependency-check.json +10 -0
- package/resources/skills/discord.json +10 -0
- package/resources/skills/eightctl.json +10 -0
- package/resources/skills/explain-code.json +29 -0
- package/resources/skills/extract-todos.json +18 -0
- package/resources/skills/food-order.json +10 -0
- package/resources/skills/gemini.json +10 -0
- package/resources/skills/generate-readme.json +10 -0
- package/resources/skills/gifgrep.json +10 -0
- package/resources/skills/git-commit.json +10 -0
- package/resources/skills/github.json +10 -0
- package/resources/skills/gog.json +10 -0
- package/resources/skills/goplaces.json +10 -0
- package/resources/skills/himalaya.json +10 -0
- package/resources/skills/imsg.json +10 -0
- package/resources/skills/karpathy-guidelines.json +12 -0
- package/resources/skills/last30days.json +26 -0
- package/resources/skills/local-places.json +10 -0
- package/resources/skills/mcporter.json +10 -0
- package/resources/skills/model-usage.json +10 -0
- package/resources/skills/nano-banana-pro.json +10 -0
- package/resources/skills/nano-pdf.json +10 -0
- package/resources/skills/notion.json +10 -0
- package/resources/skills/obsidian.json +10 -0
- package/resources/skills/openai-image-gen.json +10 -0
- package/resources/skills/openai-whisper-api.json +10 -0
- package/resources/skills/openai-whisper.json +10 -0
- package/resources/skills/openhue.json +10 -0
- package/resources/skills/oracle.json +10 -0
- package/resources/skills/ordercli.json +10 -0
- package/resources/skills/peekaboo.json +10 -0
- package/resources/skills/project-structure.json +10 -0
- package/resources/skills/proofread.json +17 -0
- package/resources/skills/refactor-code.json +31 -0
- package/resources/skills/rename-symbol.json +23 -0
- package/resources/skills/sag.json +10 -0
- package/resources/skills/security-audit.json +18 -0
- package/resources/skills/session-logs.json +10 -0
- package/resources/skills/sherpa-onnx-tts.json +10 -0
- package/resources/skills/skill-creator.json +15 -0
- package/resources/skills/skill-hub.json +29 -0
- package/resources/skills/slack.json +10 -0
- package/resources/skills/songsee.json +10 -0
- package/resources/skills/sonoscli.json +10 -0
- package/resources/skills/spotify-player.json +10 -0
- package/resources/skills/startup-cfo.json +55 -0
- package/resources/skills/summarize-folder.json +18 -0
- package/resources/skills/summarize.json +10 -0
- package/resources/skills/things-mac.json +10 -0
- package/resources/skills/tmux.json +10 -0
- package/resources/skills/translate.json +36 -0
- package/resources/skills/trello.json +10 -0
- package/resources/skills/video-frames.json +10 -0
- package/resources/skills/voice-call.json +10 -0
- package/resources/skills/wacli.json +10 -0
- package/resources/skills/weather.json +10 -0
- package/resources/skills/write-tests.json +31 -0
- package/src/electron/activity/ActivityRepository.ts +238 -0
- package/src/electron/agent/browser/browser-service.ts +721 -0
- package/src/electron/agent/context-manager.ts +257 -0
- package/src/electron/agent/custom-skill-loader.ts +634 -0
- package/src/electron/agent/daemon.ts +1097 -0
- package/src/electron/agent/executor.ts +4017 -0
- package/src/electron/agent/llm/anthropic-provider.ts +175 -0
- package/src/electron/agent/llm/bedrock-provider.ts +236 -0
- package/src/electron/agent/llm/gemini-provider.ts +422 -0
- package/src/electron/agent/llm/index.ts +9 -0
- package/src/electron/agent/llm/ollama-provider.ts +347 -0
- package/src/electron/agent/llm/openai-oauth.ts +127 -0
- package/src/electron/agent/llm/openai-provider.ts +686 -0
- package/src/electron/agent/llm/openrouter-provider.ts +273 -0
- package/src/electron/agent/llm/pricing.ts +180 -0
- package/src/electron/agent/llm/provider-factory.ts +971 -0
- package/src/electron/agent/llm/types.ts +291 -0
- package/src/electron/agent/queue-manager.ts +408 -0
- package/src/electron/agent/sandbox/docker-sandbox.ts +453 -0
- package/src/electron/agent/sandbox/macos-sandbox.ts +426 -0
- package/src/electron/agent/sandbox/runner.ts +453 -0
- package/src/electron/agent/sandbox/sandbox-factory.ts +337 -0
- package/src/electron/agent/sandbox/security-utils.ts +251 -0
- package/src/electron/agent/search/brave-provider.ts +141 -0
- package/src/electron/agent/search/google-provider.ts +131 -0
- package/src/electron/agent/search/index.ts +6 -0
- package/src/electron/agent/search/provider-factory.ts +450 -0
- package/src/electron/agent/search/serpapi-provider.ts +138 -0
- package/src/electron/agent/search/tavily-provider.ts +108 -0
- package/src/electron/agent/search/types.ts +118 -0
- package/src/electron/agent/security/index.ts +20 -0
- package/src/electron/agent/security/input-sanitizer.ts +380 -0
- package/src/electron/agent/security/output-filter.ts +259 -0
- package/src/electron/agent/skill-eligibility.ts +334 -0
- package/src/electron/agent/skill-registry.ts +457 -0
- package/src/electron/agent/skills/document.ts +1070 -0
- package/src/electron/agent/skills/image-generator.ts +272 -0
- package/src/electron/agent/skills/organizer.ts +131 -0
- package/src/electron/agent/skills/presentation.ts +418 -0
- package/src/electron/agent/skills/spreadsheet.ts +166 -0
- package/src/electron/agent/tools/browser-tools.ts +546 -0
- package/src/electron/agent/tools/builtin-settings.ts +422 -0
- package/src/electron/agent/tools/canvas-tools.ts +572 -0
- package/src/electron/agent/tools/cron-tools.ts +723 -0
- package/src/electron/agent/tools/edit-tools.ts +196 -0
- package/src/electron/agent/tools/file-tools.ts +811 -0
- package/src/electron/agent/tools/glob-tools.ts +303 -0
- package/src/electron/agent/tools/grep-tools.ts +432 -0
- package/src/electron/agent/tools/image-tools.ts +126 -0
- package/src/electron/agent/tools/mention-tools.ts +371 -0
- package/src/electron/agent/tools/node-tools.ts +550 -0
- package/src/electron/agent/tools/registry.ts +3052 -0
- package/src/electron/agent/tools/search-tools.ts +111 -0
- package/src/electron/agent/tools/shell-tools.ts +651 -0
- package/src/electron/agent/tools/skill-tools.ts +340 -0
- package/src/electron/agent/tools/system-tools.ts +665 -0
- package/src/electron/agent/tools/web-fetch-tools.ts +528 -0
- package/src/electron/agent/tools/x-tools.ts +267 -0
- package/src/electron/agents/AgentRoleRepository.ts +557 -0
- package/src/electron/agents/HeartbeatService.ts +469 -0
- package/src/electron/agents/MentionRepository.ts +242 -0
- package/src/electron/agents/TaskSubscriptionRepository.ts +231 -0
- package/src/electron/agents/WorkingStateRepository.ts +278 -0
- package/src/electron/canvas/canvas-manager.ts +818 -0
- package/src/electron/canvas/canvas-preload.ts +102 -0
- package/src/electron/canvas/canvas-protocol.ts +174 -0
- package/src/electron/canvas/canvas-store.ts +200 -0
- package/src/electron/canvas/index.ts +8 -0
- package/src/electron/control-plane/client.ts +527 -0
- package/src/electron/control-plane/handlers.ts +723 -0
- package/src/electron/control-plane/index.ts +51 -0
- package/src/electron/control-plane/node-manager.ts +322 -0
- package/src/electron/control-plane/protocol.ts +269 -0
- package/src/electron/control-plane/remote-client.ts +517 -0
- package/src/electron/control-plane/server.ts +853 -0
- package/src/electron/control-plane/settings.ts +401 -0
- package/src/electron/control-plane/ssh-tunnel.ts +624 -0
- package/src/electron/cron/index.ts +9 -0
- package/src/electron/cron/schedule.ts +217 -0
- package/src/electron/cron/service.ts +743 -0
- package/src/electron/cron/store.ts +165 -0
- package/src/electron/cron/types.ts +291 -0
- package/src/electron/cron/webhook.ts +303 -0
- package/src/electron/database/SecureSettingsRepository.ts +514 -0
- package/src/electron/database/TaskLabelRepository.ts +148 -0
- package/src/electron/database/repositories.ts +2397 -0
- package/src/electron/database/schema.ts +1017 -0
- package/src/electron/extensions/index.ts +18 -0
- package/src/electron/extensions/loader.ts +336 -0
- package/src/electron/extensions/registry.ts +546 -0
- package/src/electron/extensions/types.ts +372 -0
- package/src/electron/gateway/channel-registry.ts +1267 -0
- package/src/electron/gateway/channels/bluebubbles-client.ts +641 -0
- package/src/electron/gateway/channels/bluebubbles.ts +509 -0
- package/src/electron/gateway/channels/discord.ts +1150 -0
- package/src/electron/gateway/channels/email-client.ts +708 -0
- package/src/electron/gateway/channels/email.ts +516 -0
- package/src/electron/gateway/channels/google-chat.ts +760 -0
- package/src/electron/gateway/channels/imessage-client.ts +473 -0
- package/src/electron/gateway/channels/imessage.ts +520 -0
- package/src/electron/gateway/channels/index.ts +21 -0
- package/src/electron/gateway/channels/line-client.ts +598 -0
- package/src/electron/gateway/channels/line.ts +559 -0
- package/src/electron/gateway/channels/matrix-client.ts +632 -0
- package/src/electron/gateway/channels/matrix.ts +655 -0
- package/src/electron/gateway/channels/mattermost-client.ts +526 -0
- package/src/electron/gateway/channels/mattermost.ts +550 -0
- package/src/electron/gateway/channels/signal-client.ts +722 -0
- package/src/electron/gateway/channels/signal.ts +666 -0
- package/src/electron/gateway/channels/slack.ts +458 -0
- package/src/electron/gateway/channels/teams.ts +681 -0
- package/src/electron/gateway/channels/telegram.ts +1727 -0
- package/src/electron/gateway/channels/twitch-client.ts +665 -0
- package/src/electron/gateway/channels/twitch.ts +468 -0
- package/src/electron/gateway/channels/types.ts +1002 -0
- package/src/electron/gateway/channels/whatsapp.ts +1101 -0
- package/src/electron/gateway/context-policy.ts +382 -0
- package/src/electron/gateway/index.ts +1274 -0
- package/src/electron/gateway/infrastructure.ts +645 -0
- package/src/electron/gateway/router.ts +3206 -0
- package/src/electron/gateway/security.ts +422 -0
- package/src/electron/gateway/session.ts +144 -0
- package/src/electron/gateway/tunnel.ts +626 -0
- package/src/electron/guardrails/guardrail-manager.ts +380 -0
- package/src/electron/hooks/gmail-watcher.ts +355 -0
- package/src/electron/hooks/index.ts +30 -0
- package/src/electron/hooks/mappings.ts +404 -0
- package/src/electron/hooks/server.ts +574 -0
- package/src/electron/hooks/settings.ts +466 -0
- package/src/electron/hooks/types.ts +245 -0
- package/src/electron/ipc/canvas-handlers.ts +223 -0
- package/src/electron/ipc/handlers.ts +3661 -0
- package/src/electron/ipc/mission-control-handlers.ts +182 -0
- package/src/electron/main.ts +496 -0
- package/src/electron/mcp/client/MCPClientManager.ts +406 -0
- package/src/electron/mcp/client/MCPServerConnection.ts +514 -0
- package/src/electron/mcp/client/transports/SSETransport.ts +360 -0
- package/src/electron/mcp/client/transports/StdioTransport.ts +355 -0
- package/src/electron/mcp/client/transports/WebSocketTransport.ts +384 -0
- package/src/electron/mcp/host/MCPHostServer.ts +388 -0
- package/src/electron/mcp/host/ToolAdapter.ts +140 -0
- package/src/electron/mcp/registry/MCPRegistryManager.ts +565 -0
- package/src/electron/mcp/settings.ts +468 -0
- package/src/electron/mcp/types.ts +371 -0
- package/src/electron/memory/MemoryService.ts +523 -0
- package/src/electron/notifications/index.ts +16 -0
- package/src/electron/notifications/service.ts +161 -0
- package/src/electron/notifications/store.ts +163 -0
- package/src/electron/preload.ts +2845 -0
- package/src/electron/reports/StandupReportService.ts +356 -0
- package/src/electron/security/concurrency.ts +333 -0
- package/src/electron/security/index.ts +17 -0
- package/src/electron/security/policy-manager.ts +539 -0
- package/src/electron/settings/appearance-manager.ts +182 -0
- package/src/electron/settings/personality-manager.ts +800 -0
- package/src/electron/settings/x-manager.ts +62 -0
- package/src/electron/tailscale/exposure.ts +262 -0
- package/src/electron/tailscale/index.ts +34 -0
- package/src/electron/tailscale/settings.ts +218 -0
- package/src/electron/tailscale/tailscale.ts +379 -0
- package/src/electron/tray/QuickInputWindow.ts +609 -0
- package/src/electron/tray/TrayManager.ts +1005 -0
- package/src/electron/tray/index.ts +6 -0
- package/src/electron/updater/index.ts +1 -0
- package/src/electron/updater/update-manager.ts +447 -0
- package/src/electron/utils/env-migration.ts +203 -0
- package/src/electron/utils/process.ts +124 -0
- package/src/electron/utils/rate-limiter.ts +130 -0
- package/src/electron/utils/validation.ts +493 -0
- package/src/electron/utils/x-cli.ts +198 -0
- package/src/electron/voice/VoiceService.ts +583 -0
- package/src/electron/voice/index.ts +9 -0
- package/src/electron/voice/voice-settings-manager.ts +403 -0
- package/src/renderer/App.tsx +775 -0
- package/src/renderer/components/ActivityFeed.tsx +407 -0
- package/src/renderer/components/ActivityFeedItem.tsx +285 -0
- package/src/renderer/components/AgentRoleCard.tsx +343 -0
- package/src/renderer/components/AgentRoleEditor.tsx +805 -0
- package/src/renderer/components/AgentSquadSettings.tsx +295 -0
- package/src/renderer/components/AgentWorkingStatePanel.tsx +411 -0
- package/src/renderer/components/AppearanceSettings.tsx +122 -0
- package/src/renderer/components/ApprovalDialog.tsx +100 -0
- package/src/renderer/components/BlueBubblesSettings.tsx +505 -0
- package/src/renderer/components/BuiltinToolsSettings.tsx +307 -0
- package/src/renderer/components/CanvasPreview.tsx +1189 -0
- package/src/renderer/components/CommandOutput.tsx +202 -0
- package/src/renderer/components/ContextPolicySettings.tsx +523 -0
- package/src/renderer/components/ControlPlaneSettings.tsx +1134 -0
- package/src/renderer/components/DisclaimerModal.tsx +124 -0
- package/src/renderer/components/DiscordSettings.tsx +436 -0
- package/src/renderer/components/EmailSettings.tsx +606 -0
- package/src/renderer/components/ExtensionsSettings.tsx +542 -0
- package/src/renderer/components/FileViewer.tsx +224 -0
- package/src/renderer/components/GoogleChatSettings.tsx +535 -0
- package/src/renderer/components/GuardrailSettings.tsx +487 -0
- package/src/renderer/components/HooksSettings.tsx +581 -0
- package/src/renderer/components/ImessageSettings.tsx +484 -0
- package/src/renderer/components/LineSettings.tsx +483 -0
- package/src/renderer/components/MCPRegistryBrowser.tsx +386 -0
- package/src/renderer/components/MCPSettings.tsx +943 -0
- package/src/renderer/components/MainContent.tsx +2433 -0
- package/src/renderer/components/MatrixSettings.tsx +510 -0
- package/src/renderer/components/MattermostSettings.tsx +473 -0
- package/src/renderer/components/MemorySettings.tsx +247 -0
- package/src/renderer/components/MentionBadge.tsx +87 -0
- package/src/renderer/components/MentionInput.tsx +409 -0
- package/src/renderer/components/MentionList.tsx +476 -0
- package/src/renderer/components/MissionControlPanel.tsx +1995 -0
- package/src/renderer/components/NodesSettings.tsx +316 -0
- package/src/renderer/components/NotificationPanel.tsx +481 -0
- package/src/renderer/components/Onboarding/AwakeningOrb.tsx +44 -0
- package/src/renderer/components/Onboarding/Onboarding.tsx +443 -0
- package/src/renderer/components/Onboarding/TypewriterText.tsx +102 -0
- package/src/renderer/components/Onboarding/index.ts +3 -0
- package/src/renderer/components/OnboardingModal.tsx +698 -0
- package/src/renderer/components/PairingCodeDisplay.tsx +324 -0
- package/src/renderer/components/PersonalitySettings.tsx +597 -0
- package/src/renderer/components/QueueSettings.tsx +119 -0
- package/src/renderer/components/QuickTaskFAB.tsx +71 -0
- package/src/renderer/components/RightPanel.tsx +413 -0
- package/src/renderer/components/ScheduledTasksSettings.tsx +1328 -0
- package/src/renderer/components/SearchSettings.tsx +328 -0
- package/src/renderer/components/Settings.tsx +1504 -0
- package/src/renderer/components/Sidebar.tsx +344 -0
- package/src/renderer/components/SignalSettings.tsx +673 -0
- package/src/renderer/components/SkillHubBrowser.tsx +458 -0
- package/src/renderer/components/SkillParameterModal.tsx +185 -0
- package/src/renderer/components/SkillsSettings.tsx +451 -0
- package/src/renderer/components/SlackSettings.tsx +442 -0
- package/src/renderer/components/StandupReportViewer.tsx +614 -0
- package/src/renderer/components/TaskBoard.tsx +498 -0
- package/src/renderer/components/TaskBoardCard.tsx +357 -0
- package/src/renderer/components/TaskBoardColumn.tsx +211 -0
- package/src/renderer/components/TaskLabelManager.tsx +472 -0
- package/src/renderer/components/TaskQueuePanel.tsx +144 -0
- package/src/renderer/components/TaskQuickActions.tsx +492 -0
- package/src/renderer/components/TaskTimeline.tsx +216 -0
- package/src/renderer/components/TaskView.tsx +162 -0
- package/src/renderer/components/TeamsSettings.tsx +518 -0
- package/src/renderer/components/TelegramSettings.tsx +421 -0
- package/src/renderer/components/Toast.tsx +76 -0
- package/src/renderer/components/TraySettings.tsx +189 -0
- package/src/renderer/components/TwitchSettings.tsx +511 -0
- package/src/renderer/components/UpdateSettings.tsx +295 -0
- package/src/renderer/components/VoiceIndicator.tsx +270 -0
- package/src/renderer/components/VoiceSettings.tsx +867 -0
- package/src/renderer/components/WhatsAppSettings.tsx +721 -0
- package/src/renderer/components/WorkingStateEditor.tsx +309 -0
- package/src/renderer/components/WorkingStateHistory.tsx +481 -0
- package/src/renderer/components/WorkspaceSelector.tsx +150 -0
- package/src/renderer/components/XSettings.tsx +311 -0
- package/src/renderer/global.d.ts +9 -0
- package/src/renderer/hooks/useAgentContext.ts +153 -0
- package/src/renderer/hooks/useOnboardingFlow.ts +548 -0
- package/src/renderer/hooks/useVoiceInput.ts +268 -0
- package/src/renderer/index.html +12 -0
- package/src/renderer/main.tsx +10 -0
- package/src/renderer/public/cowork-os-logo.png +0 -0
- package/src/renderer/quick-input.html +164 -0
- package/src/renderer/styles/index.css +14504 -0
- package/src/renderer/utils/agentMessages.ts +749 -0
- package/src/renderer/utils/voice-directives.ts +169 -0
- package/src/shared/channelMessages.ts +213 -0
- package/src/shared/types.ts +3608 -0
- package/tsconfig.electron.json +26 -0
- package/tsconfig.json +26 -0
- package/tsconfig.node.json +10 -0
- package/vite.config.ts +23 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eightctl",
|
|
3
|
+
"name": "Eightctl",
|
|
4
|
+
"description": "Control Eight Sleep pods (status, temperature, alarms, schedules).",
|
|
5
|
+
"icon": "🎛️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# eightctl\n\nUse `eightctl` for Eight Sleep pod control. Requires auth.\n\nAuth\n\n- Config: `~/.config/eightctl/config.yaml`\n- Env: `EIGHTCTL_EMAIL`, `EIGHTCTL_PASSWORD`\n\nQuick start\n\n- `eightctl status`\n- `eightctl on|off`\n- `eightctl temp 20`\n\nCommon tasks\n\n- Alarms: `eightctl alarm list|create|dismiss`\n- Schedules: `eightctl schedule list|create|update`\n- Audio: `eightctl audio state|play|pause`\n- Base: `eightctl base info|angle`\n\nNotes\n\n- API is unofficial and rate-limited; avoid repeated logins.\n- Confirm before changing temperature or alarms.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "explain-code",
|
|
3
|
+
"name": "Explain Code",
|
|
4
|
+
"description": "Get a detailed explanation of how code works",
|
|
5
|
+
"icon": "📖",
|
|
6
|
+
"category": "Learning",
|
|
7
|
+
"prompt": "Please explain the code in {{path}} in detail.\n\nInclude:\n- What the code does at a high level\n- How it works step by step\n- Key concepts and patterns used\n- Any complex or tricky parts\n- How it fits into the larger system (if applicable)\n\nExplain at a {{level}} level.",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "path",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Path to the file to explain",
|
|
13
|
+
"required": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "level",
|
|
17
|
+
"type": "select",
|
|
18
|
+
"description": "Explanation depth",
|
|
19
|
+
"required": true,
|
|
20
|
+
"default": "intermediate",
|
|
21
|
+
"options": [
|
|
22
|
+
"beginner",
|
|
23
|
+
"intermediate",
|
|
24
|
+
"advanced"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"enabled": true
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "extract-todos",
|
|
3
|
+
"name": "Extract TODOs",
|
|
4
|
+
"description": "Find all TODO/FIXME comments in codebase",
|
|
5
|
+
"icon": "📌",
|
|
6
|
+
"category": "Utilities",
|
|
7
|
+
"prompt": "Please find all TODO, FIXME, HACK, and XXX comments in the codebase.\n\nSearch in {{path}} and provide:\n1. **Summary**: Total count by type\n2. **By File**: Group findings by file\n3. **By Priority**: If priority markers exist (e.g., TODO(high))\n4. **Old TODOs**: Identify TODOs that might be stale\n\nFor each TODO:\n- File path and line number\n- The full comment text\n- Surrounding context if helpful\n\nSuggest which TODOs should be prioritized based on:\n- Security implications\n- Bug-related issues\n- Technical debt impact",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "path",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Path to search",
|
|
13
|
+
"required": true,
|
|
14
|
+
"default": "."
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"enabled": true
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "food-order",
|
|
3
|
+
"name": "Food-order",
|
|
4
|
+
"description": "Reorder Foodora orders + track ETA/status with ordercli. Never confirm without explicit user approval. Triggers: order food, reorder, track ETA.",
|
|
5
|
+
"icon": "🥡",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Food order (Foodora via ordercli)\n\nGoal: reorder a previous Foodora order safely (preview first; confirm only on explicit user “yes/confirm/place the order”).\n\nHard safety rules\n\n- Never run `ordercli foodora reorder ... --confirm` unless user explicitly confirms placing the order.\n- Prefer preview-only steps first; show what will happen; ask for confirmation.\n- If user is unsure: stop at preview and ask questions.\n\nSetup (once)\n\n- Country: `ordercli foodora countries` → `ordercli foodora config set --country AT`\n- Login (password): `ordercli foodora login --email you@example.com --password-stdin`\n- Login (no password, preferred): `ordercli foodora session chrome --url https://www.foodora.at/ --profile \"Default\"`\n\nFind what to reorder\n\n- Recent list: `ordercli foodora history --limit 10`\n- Details: `ordercli foodora history show <orderCode>`\n- If needed (machine-readable): `ordercli foodora history show <orderCode> --json`\n\nPreview reorder (no cart changes)\n\n- `ordercli foodora reorder <orderCode>`\n\nPlace reorder (cart change; explicit confirmation required)\n\n- Confirm first, then run: `ordercli foodora reorder <orderCode> --confirm`\n- Multiple addresses? Ask user for the right `--address-id` (take from their Foodora account / prior order data) and run:\n - `ordercli foodora reorder <orderCode> --confirm --address-id <id>`\n\nTrack the order\n\n- ETA/status (active list): `ordercli foodora orders`\n- Live updates: `ordercli foodora orders --watch`\n- Single order detail: `ordercli foodora order <orderCode>`\n\nDebug / safe testing\n\n- Use a throwaway config: `ordercli --config /tmp/ordercli.json ...`",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "gemini",
|
|
3
|
+
"name": "Gemini",
|
|
4
|
+
"description": "Gemini CLI for one-shot Q&A, summaries, and generation.",
|
|
5
|
+
"icon": "♊️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Gemini CLI\n\nUse Gemini in one-shot mode with a positional prompt (avoid interactive mode).\n\nQuick start\n\n- `gemini \"Answer this question...\"`\n- `gemini --model <name> \"Prompt...\"`\n- `gemini --output-format json \"Return JSON\"`\n\nExtensions\n\n- List: `gemini --list-extensions`\n- Manage: `gemini extensions <command>`\n\nNotes\n\n- If auth is required, run `gemini` once interactively and follow the login flow.\n- Avoid `--yolo` for safety.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "generate-readme",
|
|
3
|
+
"name": "Generate README",
|
|
4
|
+
"description": "Create a README.md for a project",
|
|
5
|
+
"icon": "📄",
|
|
6
|
+
"category": "Project",
|
|
7
|
+
"prompt": "Please analyze this project and generate a comprehensive README.md.\n\nInclude:\n- Project title and description\n- Features list\n- Installation instructions\n- Usage examples\n- Configuration options\n- API documentation (if applicable)\n- Contributing guidelines\n- License information\n\nAnalyze the codebase to understand:\n- What the project does\n- How to install dependencies\n- How to run/build the project\n- Key configuration files\n\nSave the README.md in the project root.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "gifgrep",
|
|
3
|
+
"name": "Gifgrep",
|
|
4
|
+
"description": "Search GIF providers with CLI/TUI, download results, and extract stills/sheets.",
|
|
5
|
+
"icon": "🧲",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# gifgrep\n\nUse `gifgrep` to search GIF providers (Tenor/Giphy), browse in a TUI, download results, and extract stills or sheets.\n\nGIF-Grab (gifgrep workflow)\n\n- Search → preview → download → extract (still/sheet) for fast review and sharing.\n\nQuick start\n\n- `gifgrep cats --max 5`\n- `gifgrep cats --format url | head -n 5`\n- `gifgrep search --json cats | jq '.[0].url'`\n- `gifgrep tui \"office handshake\"`\n- `gifgrep cats --download --max 1 --format url`\n\nTUI + previews\n\n- TUI: `gifgrep tui \"query\"`\n- CLI still previews: `--thumbs` (Kitty/Ghostty only; still frame)\n\nDownload + reveal\n\n- `--download` saves to `~/Downloads`\n- `--reveal` shows the last download in Finder\n\nStills + sheets\n\n- `gifgrep still ./clip.gif --at 1.5s -o still.png`\n- `gifgrep sheet ./clip.gif --frames 9 --cols 3 -o sheet.png`\n- Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).\n- Tune: `--frames` (count), `--cols` (grid width), `--padding` (spacing).\n\nProviders\n\n- `--source auto|tenor|giphy`\n- `GIPHY_API_KEY` required for `--source giphy`\n- `TENOR_API_KEY` optional (Tenor demo key used if unset)\n\nOutput\n\n- `--json` prints an array of results (`id`, `title`, `url`, `preview_url`, `tags`, `width`, `height`)\n- `--format` for pipe-friendly fields (e.g., `url`)\n\nEnvironment tweaks\n\n- `GIFGREP_SOFTWARE_ANIM=1` to force software animation\n- `GIFGREP_CELL_ASPECT=0.5` to tweak preview geometry",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "git-commit",
|
|
3
|
+
"name": "Git Commit",
|
|
4
|
+
"description": "Create a well-formatted commit message from staged changes",
|
|
5
|
+
"icon": "📝",
|
|
6
|
+
"category": "Development",
|
|
7
|
+
"prompt": "Please analyze the staged git changes and create a well-formatted commit message.\n\nSteps:\n1. Run `git diff --staged` to see the changes\n2. Analyze what was changed and why\n3. Create a commit message following conventional commits format:\n - type(scope): description\n - Types: feat, fix, docs, style, refactor, test, chore\n4. Include a brief body if the changes are complex\n5. Run `git commit -m \"message\"` with the generated message\n\nMake the commit message clear, concise, and descriptive.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "github",
|
|
3
|
+
"name": "Github",
|
|
4
|
+
"description": "Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.",
|
|
5
|
+
"icon": "🐙",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# GitHub Skill\n\nUse the `gh` CLI to interact with GitHub. Always specify `--repo owner/repo` when not in a git directory, or use URLs directly.\n\n## Pull Requests\n\nCheck CI status on a PR:\n\n```bash\ngh pr checks 55 --repo owner/repo\n```\n\nList recent workflow runs:\n\n```bash\ngh run list --repo owner/repo --limit 10\n```\n\nView a run and see which steps failed:\n\n```bash\ngh run view <run-id> --repo owner/repo\n```\n\nView logs for failed steps only:\n\n```bash\ngh run view <run-id> --repo owner/repo --log-failed\n```\n\n## API for Advanced Queries\n\nThe `gh api` command is useful for accessing data not available through other subcommands.\n\nGet PR with specific fields:\n\n```bash\ngh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'\n```\n\n## JSON Output\n\nMost commands support `--json` for structured output. You can use `--jq` to filter:\n\n```bash\ngh issue list --repo owner/repo --json number,title --jq '.[] | \"\\(.number): \\(.title)\"'\n```",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "gog",
|
|
3
|
+
"name": "Gog",
|
|
4
|
+
"description": "Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.",
|
|
5
|
+
"icon": "🎮",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# gog\n\nUse `gog` for Gmail/Calendar/Drive/Contacts/Sheets/Docs. Requires OAuth setup.\n\nSetup (once)\n\n- `gog auth credentials /path/to/client_secret.json`\n- `gog auth add you@gmail.com --services gmail,calendar,drive,contacts,docs,sheets`\n- `gog auth list`\n\nCommon commands\n\n- Gmail search: `gog gmail search 'newer_than:7d' --max 10`\n- Gmail messages search (per email, ignores threading): `gog gmail messages search \"in:inbox from:ryanair.com\" --max 20 --account you@example.com`\n- Gmail send (plain): `gog gmail send --to a@b.com --subject \"Hi\" --body \"Hello\"`\n- Gmail send (multi-line): `gog gmail send --to a@b.com --subject \"Hi\" --body-file ./message.txt`\n- Gmail send (stdin): `gog gmail send --to a@b.com --subject \"Hi\" --body-file -`\n- Gmail send (HTML): `gog gmail send --to a@b.com --subject \"Hi\" --body-html \"<p>Hello</p>\"`\n- Gmail draft: `gog gmail drafts create --to a@b.com --subject \"Hi\" --body-file ./message.txt`\n- Gmail send draft: `gog gmail drafts send <draftId>`\n- Gmail reply: `gog gmail send --to a@b.com --subject \"Re: Hi\" --body \"Reply\" --reply-to-message-id <msgId>`\n- Calendar list events: `gog calendar events <calendarId> --from <iso> --to <iso>`\n- Calendar create event: `gog calendar create <calendarId> --summary \"Title\" --from <iso> --to <iso>`\n- Calendar create with color: `gog calendar create <calendarId> --summary \"Title\" --from <iso> --to <iso> --event-color 7`\n- Calendar update event: `gog calendar update <calendarId> <eventId> --summary \"New Title\" --event-color 4`\n- Calendar show colors: `gog calendar colors`\n- Drive search: `gog drive search \"query\" --max 10`\n- Contacts: `gog contacts list --max 20`\n- Sheets get: `gog sheets get <sheetId> \"Tab!A1:D10\" --json`\n- Sheets update: `gog sheets update <sheetId> \"Tab!A1:B2\" --values-json '[[\"A\",\"B\"],[\"1\",\"2\"]]' --input USER_ENTERED`\n- Sheets append: `gog sheets append <sheetId> \"Tab!A:C\" --values-json '[[\"x\",\"y\",\"z\"]]' --insert INSERT_ROWS`\n- Sheets clear: `gog sheets clear <sheetId> \"Tab!A2:Z\"`\n- Sheets metadata: `gog sheets metadata <sheetId> --json`\n- Docs export: `gog docs export <docId> --format txt --out /tmp/doc.txt`\n- Docs cat: `gog docs cat <docId>`\n\nCalendar Colors\n\n- Use `gog calendar colors` to see all available event colors (IDs 1-11)\n- Add colors to events with `--event-color <id>` flag\n- Event color IDs (from `gog calendar colors` output):\n - 1: #a4bdfc\n - 2: #7ae7bf\n - 3: #dbadff\n - 4: #ff887c\n - 5: #fbd75b\n - 6: #ffb878\n - 7: #46d6db\n - 8: #e1e1e1\n - 9: #5484ed\n - 10: #51b749\n - 11: #dc2127\n\nEmail Formatting\n\n- Prefer plain text. Use `--body-file` for multi-paragraph messages (or `--body-file -` for stdin).\n- Same `--body-file` pattern works for drafts and replies.\n- `--body` does not unescape `\\n`. If you need inline newlines, use a heredoc or `$'Line 1\\n\\nLine 2'`.\n- Use `--body-html` only when you need rich formatting.\n- HTML tags: `<p>` for paragraphs, `<br>` for line breaks, `<strong>` for bold, `<em>` for italic, `<a href=\"url\">` for links, `<ul>`/`<li>` for lists.\n- Example (plain text via stdin):\n\n ```bash\n gog gmail send --to recipient@example.com \\\n --subject \"Meeting Follow-up\" \\\n --body-file - <<'EOF'\n Hi Name,\n\n Thanks for meeting today. Next steps:\n - Item one\n - Item two\n\n Best regards,\n Your Name\n EOF\n ```\n\n- Example (HTML list):\n ```bash\n gog gmail send --to recipient@example.com \\\n --subject \"Meeting Follow-up\" \\\n --body-html \"<p>Hi Name,</p><p>Thanks for meeting today. Here are the next steps:</p><ul><li>Item one</li><li>Item two</li></ul><p>Best regards,<br>Your Name</p>\"\n ```\n\nNotes\n\n- Set `GOG_ACCOUNT=you@gmail.com` to avoid repeating `--account`.\n- For scripting, prefer `--json` plus `--no-input`.\n- Sheets values can be passed via `--values-json` (recommended) or as inline rows.\n- Docs supports export/cat/copy. In-place edits require a Docs API client (not in gog).\n- Confirm before sending mail or creating events.\n- `gog gmail search` returns one row per thread; use `gog gmail messages search` when you need every individual email returned separately.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "goplaces",
|
|
3
|
+
"name": "Goplaces",
|
|
4
|
+
"description": "Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.",
|
|
5
|
+
"icon": "📍",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# goplaces\n\nModern Google Places API (New) CLI. Human output by default, `--json` for scripts.\n\nInstall\n\n- Homebrew: `brew install steipete/tap/goplaces`\n\nConfig\n\n- `GOOGLE_PLACES_API_KEY` required.\n- Optional: `GOOGLE_PLACES_BASE_URL` for testing/proxying.\n\nCommon commands\n\n- Search: `goplaces search \"coffee\" --open-now --min-rating 4 --limit 5`\n- Bias: `goplaces search \"pizza\" --lat 40.8 --lng -73.9 --radius-m 3000`\n- Pagination: `goplaces search \"pizza\" --page-token \"NEXT_PAGE_TOKEN\"`\n- Resolve: `goplaces resolve \"Soho, London\" --limit 5`\n- Details: `goplaces details <place_id> --reviews`\n- JSON: `goplaces search \"sushi\" --json`\n\nNotes\n\n- `--no-color` or `NO_COLOR` disables ANSI color.\n- Price levels: 0..4 (free → very expensive).\n- Type filter sends only the first `--type` value (API accepts one).",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "himalaya",
|
|
3
|
+
"name": "Himalaya",
|
|
4
|
+
"description": "CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).",
|
|
5
|
+
"icon": "📧",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Himalaya Email CLI\n\nHimalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.\n\n## References\n\n- `references/configuration.md` (config file setup + IMAP/SMTP authentication)\n- `references/message-composition.md` (MML syntax for composing emails)\n\n## Prerequisites\n\n1. Himalaya CLI installed (`himalaya --version` to verify)\n2. A configuration file at `~/.config/himalaya/config.toml`\n3. IMAP/SMTP credentials configured (password stored securely)\n\n## Configuration Setup\n\nRun the interactive wizard to set up an account:\n\n```bash\nhimalaya account configure\n```\n\nOr create `~/.config/himalaya/config.toml` manually:\n\n```toml\n[accounts.personal]\nemail = \"you@example.com\"\ndisplay-name = \"Your Name\"\ndefault = true\n\nbackend.type = \"imap\"\nbackend.host = \"imap.example.com\"\nbackend.port = 993\nbackend.encryption.type = \"tls\"\nbackend.login = \"you@example.com\"\nbackend.auth.type = \"password\"\nbackend.auth.cmd = \"pass show email/imap\" # or use keyring\n\nmessage.send.backend.type = \"smtp\"\nmessage.send.backend.host = \"smtp.example.com\"\nmessage.send.backend.port = 587\nmessage.send.backend.encryption.type = \"start-tls\"\nmessage.send.backend.login = \"you@example.com\"\nmessage.send.backend.auth.type = \"password\"\nmessage.send.backend.auth.cmd = \"pass show email/smtp\"\n```\n\n## Common Operations\n\n### List Folders\n\n```bash\nhimalaya folder list\n```\n\n### List Emails\n\nList emails in INBOX (default):\n\n```bash\nhimalaya envelope list\n```\n\nList emails in a specific folder:\n\n```bash\nhimalaya envelope list --folder \"Sent\"\n```\n\nList with pagination:\n\n```bash\nhimalaya envelope list --page 1 --page-size 20\n```\n\n### Search Emails\n\n```bash\nhimalaya envelope list from john@example.com subject meeting\n```\n\n### Read an Email\n\nRead email by ID (shows plain text):\n\n```bash\nhimalaya message read 42\n```\n\nExport raw MIME:\n\n```bash\nhimalaya message export 42 --full\n```\n\n### Reply to an Email\n\nInteractive reply (opens $EDITOR):\n\n```bash\nhimalaya message reply 42\n```\n\nReply-all:\n\n```bash\nhimalaya message reply 42 --all\n```\n\n### Forward an Email\n\n```bash\nhimalaya message forward 42\n```\n\n### Write a New Email\n\nInteractive compose (opens $EDITOR):\n\n```bash\nhimalaya message write\n```\n\nSend directly using template:\n\n```bash\ncat << 'EOF' | himalaya template send\nFrom: you@example.com\nTo: recipient@example.com\nSubject: Test Message\n\nHello from Himalaya!\nEOF\n```\n\nOr with headers flag:\n\n```bash\nhimalaya message write -H \"To:recipient@example.com\" -H \"Subject:Test\" \"Message body here\"\n```\n\n### Move/Copy Emails\n\nMove to folder:\n\n```bash\nhimalaya message move 42 \"Archive\"\n```\n\nCopy to folder:\n\n```bash\nhimalaya message copy 42 \"Important\"\n```\n\n### Delete an Email\n\n```bash\nhimalaya message delete 42\n```\n\n### Manage Flags\n\nAdd flag:\n\n```bash\nhimalaya flag add 42 --flag seen\n```\n\nRemove flag:\n\n```bash\nhimalaya flag remove 42 --flag seen\n```\n\n## Multiple Accounts\n\nList accounts:\n\n```bash\nhimalaya account list\n```\n\nUse a specific account:\n\n```bash\nhimalaya --account work envelope list\n```\n\n## Attachments\n\nSave attachments from a message:\n\n```bash\nhimalaya attachment download 42\n```\n\nSave to specific directory:\n\n```bash\nhimalaya attachment download 42 --dir ~/Downloads\n```\n\n## Output Formats\n\nMost commands support `--output` for structured output:\n\n```bash\nhimalaya envelope list --output json\nhimalaya envelope list --output plain\n```\n\n## Debugging\n\nEnable debug logging:\n\n```bash\nRUST_LOG=debug himalaya envelope list\n```\n\nFull trace with backtrace:\n\n```bash\nRUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list\n```\n\n## Tips\n\n- Use `himalaya --help` or `himalaya <command> --help` for detailed usage.\n- Message IDs are relative to the current folder; re-list after folder changes.\n- For composing rich emails with attachments, use MML syntax (see `references/message-composition.md`).\n- Store passwords securely using `pass`, system keyring, or a command that outputs the password.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "imsg",
|
|
3
|
+
"name": "Imsg",
|
|
4
|
+
"description": "iMessage/SMS CLI for listing chats, history, watch, and sending.",
|
|
5
|
+
"icon": "📨",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# imsg\n\nUse `imsg` to read and send Messages.app iMessage/SMS on macOS.\n\nRequirements\n\n- Messages.app signed in\n- Full Disk Access for your terminal\n- Automation permission to control Messages.app (for sending)\n\nCommon commands\n\n- List chats: `imsg chats --limit 10 --json`\n- History: `imsg history --chat-id 1 --limit 20 --attachments --json`\n- Watch: `imsg watch --chat-id 1 --attachments`\n- Send: `imsg send --to \"+14155551212\" --text \"hi\" --file /path/pic.jpg`\n\nNotes\n\n- `--service imessage|sms|auto` controls delivery.\n- Confirm recipient + message before sending.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "karpathy-guidelines",
|
|
3
|
+
"name": "Task Guidelines",
|
|
4
|
+
"description": "Best practices for high-quality task execution",
|
|
5
|
+
"icon": "🧠",
|
|
6
|
+
"category": "Guidelines",
|
|
7
|
+
"type": "guideline",
|
|
8
|
+
"priority": 1,
|
|
9
|
+
"prompt": "## Task Guidelines\n\n**1. Think Before Acting**\n- State assumptions explicitly. If uncertain, ask.\n- If multiple interpretations exist, present them - don't pick silently.\n- If a simpler approach exists, say so. Push back when warranted.\n- If something is unclear, stop. Name what's confusing. Ask.\n\n**2. Simplicity First**\n- Do only what was asked - no extra features or \"improvements\".\n- Keep outputs focused and minimal.\n- Don't add unnecessary complexity or options.\n- If the task can be done simply, do it simply.\n\n**3. Focused Changes**\n- Only modify what's directly relevant to the task.\n- Don't reorganize, rename, or \"improve\" unrelated things.\n- Match existing patterns and conventions.\n- If you notice unrelated issues, mention them - don't fix them unsolicited.\n\n**4. Goal-Driven Execution**\n- Transform tasks into verifiable goals.\n- For multi-step tasks, state a brief plan with verification steps.\n- Loop until success criteria are met.",
|
|
10
|
+
"parameters": [],
|
|
11
|
+
"enabled": true
|
|
12
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "last30days",
|
|
3
|
+
"name": "Last 30 Days",
|
|
4
|
+
"description": "Research topics across Reddit and X from the past month to generate working prompts",
|
|
5
|
+
"icon": "🔬",
|
|
6
|
+
"category": "Research",
|
|
7
|
+
"priority": 1,
|
|
8
|
+
"prompt": "Research \"{{topic}}\" across Reddit and X from the past 30 days.\n\nIMPORTANT: Use the EXACT search term \"{{topic}}\" as provided. Do NOT interpret, correct, or modify the search term in any way.\n\nGoal: Find real community discussions, patterns, and best practices to generate copy-paste-ready prompts that actually work.\n\nSteps:\n1. Search Reddit and X for discussions about \"{{topic}}\" (use this exact term) from the last 30 days\n2. Analyze engagement metrics (upvotes, likes, retweets) to identify what resonates\n3. Extract patterns and techniques that users report as effective\n4. Synthesize findings into actionable, domain-specific prompts\n\nTarget tool: {{tool}}\n\nOutput:\n- Summary of key findings from community discussions\n- 3-5 ready-to-use prompts based on what's working\n- Tips and techniques discovered from real users\n- Links to notable discussions for reference",
|
|
9
|
+
"parameters": [
|
|
10
|
+
{
|
|
11
|
+
"name": "topic",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "The topic to research (e.g., 'prompting techniques', 'iOS app mockups', 'animation effects')",
|
|
14
|
+
"required": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "tool",
|
|
18
|
+
"type": "select",
|
|
19
|
+
"description": "Target AI tool for the prompts",
|
|
20
|
+
"required": false,
|
|
21
|
+
"default": "Any",
|
|
22
|
+
"options": ["Any", "ChatGPT", "Claude", "Midjourney", "DALL-E", "Stable Diffusion", "Cursor", "Claude Code"]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"enabled": true
|
|
26
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "local-places",
|
|
3
|
+
"name": "Local-places",
|
|
4
|
+
"description": "Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.",
|
|
5
|
+
"icon": "📍",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# 📍 Local Places\n\n_Find places, Go fast_\n\nSearch for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.\n\n## Setup\n\n```bash\ncd {baseDir}\necho \"GOOGLE_PLACES_API_KEY=your-key\" > .env\nuv venv && uv pip install -e \".[dev]\"\nuv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000\n```\n\nRequires `GOOGLE_PLACES_API_KEY` in `.env` or environment.\n\n## Quick Start\n\n1. **Check server:** `curl http://127.0.0.1:8000/ping`\n\n2. **Resolve location:**\n\n```bash\ncurl -X POST http://127.0.0.1:8000/locations/resolve \\\n -H \"Content-Type: application/json\" \\\n -d '{\"location_text\": \"Soho, London\", \"limit\": 5}'\n```\n\n3. **Search places:**\n\n```bash\ncurl -X POST http://127.0.0.1:8000/places/search \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"query\": \"coffee shop\",\n \"location_bias\": {\"lat\": 51.5137, \"lng\": -0.1366, \"radius_m\": 1000},\n \"filters\": {\"open_now\": true, \"min_rating\": 4.0},\n \"limit\": 10\n }'\n```\n\n4. **Get details:**\n\n```bash\ncurl http://127.0.0.1:8000/places/{place_id}\n```\n\n## Conversation Flow\n\n1. If user says \"near me\" or gives vague location → resolve it first\n2. If multiple results → show numbered list, ask user to pick\n3. Ask for preferences: type, open now, rating, price level\n4. Search with `location_bias` from chosen location\n5. Present results with name, rating, address, open status\n6. Offer to fetch details or refine search\n\n## Filter Constraints\n\n- `filters.types`: exactly ONE type (e.g., \"restaurant\", \"cafe\", \"gym\")\n- `filters.price_levels`: integers 0-4 (0=free, 4=very expensive)\n- `filters.min_rating`: 0-5 in 0.5 increments\n- `filters.open_now`: boolean\n- `limit`: 1-20 for search, 1-10 for resolve\n- `location_bias.radius_m`: must be > 0\n\n## Response Format\n\n```json\n{\n \"results\": [\n {\n \"place_id\": \"ChIJ...\",\n \"name\": \"Coffee Shop\",\n \"address\": \"123 Main St\",\n \"location\": { \"lat\": 51.5, \"lng\": -0.1 },\n \"rating\": 4.6,\n \"price_level\": 2,\n \"types\": [\"cafe\", \"food\"],\n \"open_now\": true\n }\n ],\n \"next_page_token\": \"...\"\n}\n```\n\nUse `next_page_token` as `page_token` in next request for more results.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "mcporter",
|
|
3
|
+
"name": "Mcporter",
|
|
4
|
+
"description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
|
|
5
|
+
"icon": "📦",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# mcporter\n\nUse `mcporter` to work with MCP servers directly.\n\nQuick start\n\n- `mcporter list`\n- `mcporter list <server> --schema`\n- `mcporter call <server.tool> key=value`\n\nCall tools\n\n- Selector: `mcporter call linear.list_issues team=ENG limit:5`\n- Function syntax: `mcporter call \"linear.create_issue(title: \\\"Bug\\\")\"`\n- Full URL: `mcporter call https://api.example.com/mcp.fetch url:https://example.com`\n- Stdio: `mcporter call --stdio \"bun run ./server.ts\" scrape url=https://example.com`\n- JSON payload: `mcporter call <server.tool> --args '{\"limit\":5}'`\n\nAuth + config\n\n- OAuth: `mcporter auth <server | url> [--reset]`\n- Config: `mcporter config list|get|add|remove|import|login|logout`\n\nDaemon\n\n- `mcporter daemon start|status|stop|restart`\n\nCodegen\n\n- CLI: `mcporter generate-cli --server <name>` or `--command <url>`\n- Inspect: `mcporter inspect-cli <path> [--json]`\n- TS: `mcporter emit-ts <server> --mode client|types`\n\nNotes\n\n- Config default: `./config/mcporter.json` (override with `--config`).\n- Prefer `--output json` for machine-readable results.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "model-usage",
|
|
3
|
+
"name": "Model-usage",
|
|
4
|
+
"description": "Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.",
|
|
5
|
+
"icon": "📊",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Model usage\n\n## Overview\n\nGet per-model usage cost from CodexBar's local cost logs. Supports \"current model\" (most recent daily entry) or \"all models\" summaries for Codex or Claude.\n\nTODO: add Linux CLI support guidance once CodexBar CLI install path is documented for Linux.\n\n## Quick start\n\n1. Fetch cost JSON via CodexBar CLI or pass a JSON file.\n2. Use the bundled script to summarize by model.\n\n```bash\npython {baseDir}/scripts/model_usage.py --provider codex --mode current\npython {baseDir}/scripts/model_usage.py --provider codex --mode all\npython {baseDir}/scripts/model_usage.py --provider claude --mode all --format json --pretty\n```\n\n## Current model logic\n\n- Uses the most recent daily row with `modelBreakdowns`.\n- Picks the model with the highest cost in that row.\n- Falls back to the last entry in `modelsUsed` when breakdowns are missing.\n- Override with `--model <name>` when you need a specific model.\n\n## Inputs\n\n- Default: runs `codexbar cost --format json --provider <codex|claude>`.\n- File or stdin:\n\n```bash\ncodexbar cost --provider codex --format json > /tmp/cost.json\npython {baseDir}/scripts/model_usage.py --input /tmp/cost.json --mode all\ncat /tmp/cost.json | python {baseDir}/scripts/model_usage.py --input - --mode current\n```\n\n## Output\n\n- Text (default) or JSON (`--format json --pretty`).\n- Values are cost-only per model; tokens are not split by model in CodexBar output.\n\n## References\n\n- Read `references/codexbar-cli.md` for CLI flags and cost JSON fields.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "nano-banana-pro",
|
|
3
|
+
"name": "Nano-banana-pro",
|
|
4
|
+
"description": "Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).",
|
|
5
|
+
"icon": "🍌",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Nano Banana Pro (Gemini 3 Pro Image)\n\nUse the bundled script to generate or edit images.\n\nGenerate\n\n```bash\nuv run {baseDir}/scripts/generate_image.py --prompt \"your image description\" --filename \"output.png\" --resolution 1K\n```\n\nEdit (single image)\n\n```bash\nuv run {baseDir}/scripts/generate_image.py --prompt \"edit instructions\" --filename \"output.png\" -i \"/path/in.png\" --resolution 2K\n```\n\nMulti-image composition (up to 14 images)\n\n```bash\nuv run {baseDir}/scripts/generate_image.py --prompt \"combine these into one scene\" --filename \"output.png\" -i img1.png -i img2.png -i img3.png\n```\n\nAPI key\n\n- `GEMINI_API_KEY` env var\n- Or set `skills.\"nano-banana-pro\".apiKey` / `skills.\"nano-banana-pro\".env.GEMINI_API_KEY` in `~/.CoWork-OSS/CoWork-OSS.json`\n\nNotes\n\n- Resolutions: `1K` (default), `2K`, `4K`.\n- Use timestamps in filenames: `yyyy-mm-dd-hh-mm-ss-name.png`.\n- The script prints a `MEDIA:` line for CoWork-OSS to auto-attach on supported chat providers.\n- Do not read the image back; report the saved path only.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "nano-pdf",
|
|
3
|
+
"name": "Nano-pdf",
|
|
4
|
+
"description": "Edit PDFs with natural-language instructions using the nano-pdf CLI.",
|
|
5
|
+
"icon": "📄",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# nano-pdf\n\nUse `nano-pdf` to apply edits to a specific page in a PDF using a natural-language instruction.\n\n## Quick start\n\n```bash\nnano-pdf edit deck.pdf 1 \"Change the title to 'Q3 Results' and fix the typo in the subtitle\"\n```\n\nNotes:\n\n- Page numbers are 0-based or 1-based depending on the tool’s version/config; if the result looks off by one, retry with the other.\n- Always sanity-check the output PDF before sending it out.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "notion",
|
|
3
|
+
"name": "Notion",
|
|
4
|
+
"description": "Notion API for creating and managing pages, databases, and blocks.",
|
|
5
|
+
"icon": "📝",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# notion\n\nUse the Notion API to create/read/update pages, data sources (databases), and blocks.\n\n## Setup\n\n1. Create an integration at https://notion.so/my-integrations\n2. Copy the API key (starts with `ntn_` or `secret_`)\n3. Store it:\n\n```bash\nmkdir -p ~/.config/notion\necho \"ntn_your_key_here\" > ~/.config/notion/api_key\n```\n\n4. Share target pages/databases with your integration (click \"...\" → \"Connect to\" → your integration name)\n\n## API Basics\n\nAll requests need:\n\n```bash\nNOTION_KEY=$(cat ~/.config/notion/api_key)\ncurl -X GET \"https://api.notion.com/v1/...\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\"\n```\n\n> **Note:** The `Notion-Version` header is required. This skill uses `2025-09-03` (latest). In this version, databases are called \"data sources\" in the API.\n\n## Common Operations\n\n**Search for pages and data sources:**\n\n```bash\ncurl -X POST \"https://api.notion.com/v1/search\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"query\": \"page title\"}'\n```\n\n**Get page:**\n\n```bash\ncurl \"https://api.notion.com/v1/pages/{page_id}\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\"\n```\n\n**Get page content (blocks):**\n\n```bash\ncurl \"https://api.notion.com/v1/blocks/{page_id}/children\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\"\n```\n\n**Create page in a data source:**\n\n```bash\ncurl -X POST \"https://api.notion.com/v1/pages\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"parent\": {\"database_id\": \"xxx\"},\n \"properties\": {\n \"Name\": {\"title\": [{\"text\": {\"content\": \"New Item\"}}]},\n \"Status\": {\"select\": {\"name\": \"Todo\"}}\n }\n }'\n```\n\n**Query a data source (database):**\n\n```bash\ncurl -X POST \"https://api.notion.com/v1/data_sources/{data_source_id}/query\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"filter\": {\"property\": \"Status\", \"select\": {\"equals\": \"Active\"}},\n \"sorts\": [{\"property\": \"Date\", \"direction\": \"descending\"}]\n }'\n```\n\n**Create a data source (database):**\n\n```bash\ncurl -X POST \"https://api.notion.com/v1/data_sources\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"parent\": {\"page_id\": \"xxx\"},\n \"title\": [{\"text\": {\"content\": \"My Database\"}}],\n \"properties\": {\n \"Name\": {\"title\": {}},\n \"Status\": {\"select\": {\"options\": [{\"name\": \"Todo\"}, {\"name\": \"Done\"}]}},\n \"Date\": {\"date\": {}}\n }\n }'\n```\n\n**Update page properties:**\n\n```bash\ncurl -X PATCH \"https://api.notion.com/v1/pages/{page_id}\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"properties\": {\"Status\": {\"select\": {\"name\": \"Done\"}}}}'\n```\n\n**Add blocks to page:**\n\n```bash\ncurl -X PATCH \"https://api.notion.com/v1/blocks/{page_id}/children\" \\\n -H \"Authorization: Bearer $NOTION_KEY\" \\\n -H \"Notion-Version: 2025-09-03\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"children\": [\n {\"object\": \"block\", \"type\": \"paragraph\", \"paragraph\": {\"rich_text\": [{\"text\": {\"content\": \"Hello\"}}]}}\n ]\n }'\n```\n\n## Property Types\n\nCommon property formats for database items:\n\n- **Title:** `{\"title\": [{\"text\": {\"content\": \"...\"}}]}`\n- **Rich text:** `{\"rich_text\": [{\"text\": {\"content\": \"...\"}}]}`\n- **Select:** `{\"select\": {\"name\": \"Option\"}}`\n- **Multi-select:** `{\"multi_select\": [{\"name\": \"A\"}, {\"name\": \"B\"}]}`\n- **Date:** `{\"date\": {\"start\": \"2024-01-15\", \"end\": \"2024-01-16\"}}`\n- **Checkbox:** `{\"checkbox\": true}`\n- **Number:** `{\"number\": 42}`\n- **URL:** `{\"url\": \"https://...\"}`\n- **Email:** `{\"email\": \"a@b.com\"}`\n- **Relation:** `{\"relation\": [{\"id\": \"page_id\"}]}`\n\n## Key Differences in 2025-09-03\n\n- **Databases → Data Sources:** Use `/data_sources/` endpoints for queries and retrieval\n- **Two IDs:** Each database now has both a `database_id` and a `data_source_id`\n - Use `database_id` when creating pages (`parent: {\"database_id\": \"...\"}`)\n - Use `data_source_id` when querying (`POST /v1/data_sources/{id}/query`)\n- **Search results:** Databases return as `\"object\": \"data_source\"` with their `data_source_id`\n- **Parent in responses:** Pages show `parent.data_source_id` alongside `parent.database_id`\n- **Finding the data_source_id:** Search for the database, or call `GET /v1/data_sources/{data_source_id}`\n\n## Notes\n\n- Page/database IDs are UUIDs (with or without dashes)\n- The API cannot set database view filters — that's UI-only\n- Rate limit: ~3 requests/second average\n- Use `is_inline: true` when creating data sources to embed them in pages",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "obsidian",
|
|
3
|
+
"name": "Obsidian",
|
|
4
|
+
"description": "Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.",
|
|
5
|
+
"icon": "💎",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Obsidian\n\nObsidian vault = a normal folder on disk.\n\nVault structure (typical)\n\n- Notes: `*.md` (plain text Markdown; edit with any editor)\n- Config: `.obsidian/` (workspace + plugin settings; usually don’t touch from scripts)\n- Canvases: `*.canvas` (JSON)\n- Attachments: whatever folder you chose in Obsidian settings (images/PDFs/etc.)\n\n## Find the active vault(s)\n\nObsidian desktop tracks vaults here (source of truth):\n\n- `~/Library/Application Support/obsidian/obsidian.json`\n\n`obsidian-cli` resolves vaults from that file; vault name is typically the **folder name** (path suffix).\n\nFast “what vault is active / where are the notes?”\n\n- If you’ve already set a default: `obsidian-cli print-default --path-only`\n- Otherwise, read `~/Library/Application Support/obsidian/obsidian.json` and use the vault entry with `\"open\": true`.\n\nNotes\n\n- Multiple vaults common (iCloud vs `~/Documents`, work/personal, etc.). Don’t guess; read config.\n- Avoid writing hardcoded vault paths into scripts; prefer reading the config or using `print-default`.\n\n## obsidian-cli quick start\n\nPick a default vault (once):\n\n- `obsidian-cli set-default \"<vault-folder-name>\"`\n- `obsidian-cli print-default` / `obsidian-cli print-default --path-only`\n\nSearch\n\n- `obsidian-cli search \"query\"` (note names)\n- `obsidian-cli search-content \"query\"` (inside notes; shows snippets + lines)\n\nCreate\n\n- `obsidian-cli create \"Folder/New note\" --content \"...\" --open`\n- Requires Obsidian URI handler (`obsidian://…`) working (Obsidian installed).\n- Avoid creating notes under “hidden” dot-folders (e.g. `.something/...`) via URI; Obsidian may refuse.\n\nMove/rename (safe refactor)\n\n- `obsidian-cli move \"old/path/note\" \"new/path/note\"`\n- Updates `[[wikilinks]]` and common Markdown links across the vault (this is the main win vs `mv`).\n\nDelete\n\n- `obsidian-cli delete \"path/note\"`\n\nPrefer direct edits when appropriate: open the `.md` file and change it; Obsidian will pick it up.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-image-gen",
|
|
3
|
+
"name": "Openai-image-gen",
|
|
4
|
+
"description": "Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.",
|
|
5
|
+
"icon": "🖼️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# OpenAI Image Gen\n\nGenerate a handful of “random but structured” prompts and render them via the OpenAI Images API.\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/gen.py\nopen ~/Projects/tmp/openai-image-gen-*/index.html # if ~/Projects/tmp exists; else ./tmp/...\n```\n\nUseful flags:\n\n```bash\n# GPT image models with various options\npython3 {baseDir}/scripts/gen.py --count 16 --model gpt-image-1\npython3 {baseDir}/scripts/gen.py --prompt \"ultra-detailed studio photo of a lobster astronaut\" --count 4\npython3 {baseDir}/scripts/gen.py --size 1536x1024 --quality high --out-dir ./out/images\npython3 {baseDir}/scripts/gen.py --model gpt-image-1.5 --background transparent --output-format webp\n\n# DALL-E 3 (note: count is automatically limited to 1)\npython3 {baseDir}/scripts/gen.py --model dall-e-3 --quality hd --size 1792x1024 --style vivid\npython3 {baseDir}/scripts/gen.py --model dall-e-3 --style natural --prompt \"serene mountain landscape\"\n\n# DALL-E 2\npython3 {baseDir}/scripts/gen.py --model dall-e-2 --size 512x512 --count 4\n```\n\n## Model-Specific Parameters\n\nDifferent models support different parameter values. The script automatically selects appropriate defaults based on the model.\n\n### Size\n\n- **GPT image models** (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`): `1024x1024`, `1536x1024` (landscape), `1024x1536` (portrait), or `auto`\n - Default: `1024x1024`\n- **dall-e-3**: `1024x1024`, `1792x1024`, or `1024x1792`\n - Default: `1024x1024`\n- **dall-e-2**: `256x256`, `512x512`, or `1024x1024`\n - Default: `1024x1024`\n\n### Quality\n\n- **GPT image models**: `auto`, `high`, `medium`, or `low`\n - Default: `high`\n- **dall-e-3**: `hd` or `standard`\n - Default: `standard`\n- **dall-e-2**: `standard` only\n - Default: `standard`\n\n### Other Notable Differences\n\n- **dall-e-3** only supports generating 1 image at a time (`n=1`). The script automatically limits count to 1 when using this model.\n- **GPT image models** support additional parameters:\n - `--background`: `transparent`, `opaque`, or `auto` (default)\n - `--output-format`: `png` (default), `jpeg`, or `webp`\n - Note: `stream` and `moderation` are available via API but not yet implemented in this script\n- **dall-e-3** has a `--style` parameter: `vivid` (hyper-real, dramatic) or `natural` (more natural looking)\n\n## Output\n\n- `*.png`, `*.jpeg`, or `*.webp` images (output format depends on model + `--output-format`)\n- `prompts.json` (prompt → file mapping)\n- `index.html` (thumbnail gallery)",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-whisper-api",
|
|
3
|
+
"name": "Openai-whisper-api",
|
|
4
|
+
"description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).",
|
|
5
|
+
"icon": "☁️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# OpenAI Whisper API (curl)\n\nTranscribe an audio file via OpenAI’s `/v1/audio/transcriptions` endpoint.\n\n## Quick start\n\n```bash\n{baseDir}/scripts/transcribe.sh /path/to/audio.m4a\n```\n\nDefaults:\n\n- Model: `whisper-1`\n- Output: `<input>.txt`\n\n## Useful flags\n\n```bash\n{baseDir}/scripts/transcribe.sh /path/to/audio.ogg --model whisper-1 --out /tmp/transcript.txt\n{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --language en\n{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --prompt \"Speaker names: Peter, Daniel\"\n{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --json --out /tmp/transcript.json\n```\n\n## API key\n\nSet `OPENAI_API_KEY`, or configure it in `~/.CoWork-OSS/CoWork-OSS.json`:\n\n```json5\n{\n skills: {\n \"openai-whisper-api\": {\n apiKey: \"OPENAI_KEY_HERE\",\n },\n },\n}\n```",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-whisper",
|
|
3
|
+
"name": "Openai-whisper",
|
|
4
|
+
"description": "Local speech-to-text with the Whisper CLI (no API key).",
|
|
5
|
+
"icon": "🎙️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Whisper (CLI)\n\nUse `whisper` to transcribe audio locally.\n\nQuick start\n\n- `whisper /path/audio.mp3 --model medium --output_format txt --output_dir .`\n- `whisper /path/audio.m4a --task translate --output_format srt`\n\nNotes\n\n- Models download to `~/.cache/whisper` on first run.\n- `--model` defaults to `turbo` on this install.\n- Use smaller models for speed, larger for accuracy.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openhue",
|
|
3
|
+
"name": "Openhue",
|
|
4
|
+
"description": "Control Philips Hue lights/scenes via the OpenHue CLI.",
|
|
5
|
+
"icon": "💡",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# OpenHue CLI\n\nUse `openhue` to control Hue lights and scenes via a Hue Bridge.\n\nSetup\n\n- Discover bridges: `openhue discover`\n- Guided setup: `openhue setup`\n\nRead\n\n- `openhue get light --json`\n- `openhue get room --json`\n- `openhue get scene --json`\n\nWrite\n\n- Turn on: `openhue set light <id-or-name> --on`\n- Turn off: `openhue set light <id-or-name> --off`\n- Brightness: `openhue set light <id> --on --brightness 50`\n- Color: `openhue set light <id> --on --rgb #3399FF`\n- Scene: `openhue set scene <scene-id>`\n\nNotes\n\n- You may need to press the Hue Bridge button during setup.\n- Use `--room \"Room Name\"` when light names are ambiguous.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "oracle",
|
|
3
|
+
"name": "Oracle",
|
|
4
|
+
"description": "Best practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).",
|
|
5
|
+
"icon": "🧿",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# oracle — best use\n\nOracle bundles your prompt + selected files into one “one-shot” request so another model can answer with real repo context (API or browser automation). Treat output as advisory: verify against code + tests.\n\n## Main use case (browser, GPT‑5.2 Pro)\n\nDefault workflow here: `--engine browser` with GPT‑5.2 Pro in ChatGPT. This is the common “long think” path: ~10 minutes to ~1 hour is normal; expect a stored session you can reattach to.\n\nRecommended defaults:\n\n- Engine: browser (`--engine browser`)\n- Model: GPT‑5.2 Pro (`--model gpt-5.2-pro` or `--model \"5.2 Pro\"`)\n\n## Golden path\n\n1. Pick a tight file set (fewest files that still contain the truth).\n2. Preview payload + token spend (`--dry-run` + `--files-report`).\n3. Use browser mode for the usual GPT‑5.2 Pro workflow; use API only when you explicitly want it.\n4. If the run detaches/timeouts: reattach to the stored session (don’t re-run).\n\n## Commands (preferred)\n\n- Help:\n - `oracle --help`\n - If the binary isn’t installed: `npx -y @steipete/oracle --help` (avoid `pnpx` here; sqlite bindings).\n\n- Preview (no tokens):\n - `oracle --dry-run summary -p \"<task>\" --file \"src/**\" --file \"!**/*.test.*\"`\n - `oracle --dry-run full -p \"<task>\" --file \"src/**\"`\n\n- Token sanity:\n - `oracle --dry-run summary --files-report -p \"<task>\" --file \"src/**\"`\n\n- Browser run (main path; long-running is normal):\n - `oracle --engine browser --model gpt-5.2-pro -p \"<task>\" --file \"src/**\"`\n\n- Manual paste fallback:\n - `oracle --render --copy -p \"<task>\" --file \"src/**\"`\n - Note: `--copy` is a hidden alias for `--copy-markdown`.\n\n## Attaching files (`--file`)\n\n`--file` accepts files, directories, and globs. You can pass it multiple times; entries can be comma-separated.\n\n- Include:\n - `--file \"src/**\"`\n - `--file src/index.ts`\n - `--file docs --file README.md`\n\n- Exclude:\n - `--file \"src/**\" --file \"!src/**/*.test.ts\" --file \"!**/*.snap\"`\n\n- Defaults (implementation behavior):\n - Default-ignored dirs: `node_modules`, `dist`, `coverage`, `.git`, `.turbo`, `.next`, `build`, `tmp` (skipped unless explicitly passed as literal dirs/files).\n - Honors `.gitignore` when expanding globs.\n - Does not follow symlinks.\n - Dotfiles filtered unless opted in via pattern (e.g. `--file \".github/**\"`).\n - Files > 1 MB rejected.\n\n## Engines (API vs browser)\n\n- Auto-pick: `api` when `OPENAI_API_KEY` is set; otherwise `browser`.\n- Browser supports GPT + Gemini only; use `--engine api` for Claude/Grok/Codex or multi-model runs.\n- Browser attachments:\n - `--browser-attachments auto|never|always` (auto pastes inline up to ~60k chars then uploads).\n- Remote browser host:\n - Host: `oracle serve --host 0.0.0.0 --port 9473 --token <secret>`\n - Client: `oracle --engine browser --remote-host <host:port> --remote-token <secret> -p \"<task>\" --file \"src/**\"`\n\n## Sessions + slugs\n\n- Stored under `~/.oracle/sessions` (override with `ORACLE_HOME_DIR`).\n- Runs may detach or take a long time (browser + GPT‑5.2 Pro often does). If the CLI times out: don’t re-run; reattach.\n - List: `oracle status --hours 72`\n - Attach: `oracle session <id> --render`\n- Use `--slug \"<3-5 words>\"` to keep session IDs readable.\n- Duplicate prompt guard exists; use `--force` only when you truly want a fresh run.\n\n## Prompt template (high signal)\n\nOracle starts with **zero** project knowledge. Assume the model cannot infer your stack, build tooling, conventions, or “obvious” paths. Include:\n\n- Project briefing (stack + build/test commands + platform constraints).\n- “Where things live” (key directories, entrypoints, config files, boundaries).\n- Exact question + what you tried + the error text (verbatim).\n- Constraints (“don’t change X”, “must keep public API”, etc).\n- Desired output (“return patch plan + tests”, “give 3 options with tradeoffs”).\n\n## Safety\n\n- Don’t attach secrets by default (`.env`, key files, auth tokens). Redact aggressively; share only what’s required.\n\n## “Exhaustive prompt” restoration pattern\n\nFor long investigations, write a standalone prompt + file set so you can rerun days later:\n\n- 6–30 sentence project briefing + the goal.\n- Repro steps + exact errors + what you tried.\n- Attach all context files needed (entrypoints, configs, key modules, docs).\n\nOracle runs are one-shot; the model doesn’t remember prior runs. “Restoring context” means re-running with the same prompt + `--file …` set (or reattaching a still-running stored session).",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ordercli",
|
|
3
|
+
"name": "Ordercli",
|
|
4
|
+
"description": "Foodora-only CLI for checking past orders and active order status (Deliveroo WIP).",
|
|
5
|
+
"icon": "🛵",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# ordercli\n\nUse `ordercli` to check past orders and track active order status (Foodora only right now).\n\nQuick start (Foodora)\n\n- `ordercli foodora countries`\n- `ordercli foodora config set --country AT`\n- `ordercli foodora login --email you@example.com --password-stdin`\n- `ordercli foodora orders`\n- `ordercli foodora history --limit 20`\n- `ordercli foodora history show <orderCode>`\n\nOrders\n\n- Active list (arrival/status): `ordercli foodora orders`\n- Watch: `ordercli foodora orders --watch`\n- Active order detail: `ordercli foodora order <orderCode>`\n- History detail JSON: `ordercli foodora history show <orderCode> --json`\n\nReorder (adds to cart)\n\n- Preview: `ordercli foodora reorder <orderCode>`\n- Confirm: `ordercli foodora reorder <orderCode> --confirm`\n- Address: `ordercli foodora reorder <orderCode> --confirm --address-id <id>`\n\nCloudflare / bot protection\n\n- Browser login: `ordercli foodora login --email you@example.com --password-stdin --browser`\n- Reuse profile: `--browser-profile \"$HOME/Library/Application Support/ordercli/browser-profile\"`\n- Import Chrome cookies: `ordercli foodora cookies chrome --profile \"Default\"`\n\nSession import (no password)\n\n- `ordercli foodora session chrome --url https://www.foodora.at/ --profile \"Default\"`\n- `ordercli foodora session refresh --client-id android`\n\nDeliveroo (WIP, not working yet)\n\n- Requires `DELIVEROO_BEARER_TOKEN` (optional `DELIVEROO_COOKIE`).\n- `ordercli deliveroo config set --market uk`\n- `ordercli deliveroo history`\n\nNotes\n\n- Use `--config /tmp/ordercli.json` for testing.\n- Confirm before any reorder or cart-changing action.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "peekaboo",
|
|
3
|
+
"name": "Peekaboo",
|
|
4
|
+
"description": "Capture and automate macOS UI with the Peekaboo CLI.",
|
|
5
|
+
"icon": "👀",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# Peekaboo\n\nPeekaboo is a full macOS UI automation CLI: capture/inspect screens, target UI\nelements, drive input, and manage apps/windows/menus. Commands share a snapshot\ncache and support `--json`/`-j` for scripting. Run `peekaboo` or\n`peekaboo <cmd> --help` for flags; `peekaboo --version` prints build metadata.\nTip: run via `polter peekaboo` to ensure fresh builds.\n\n## Features (all CLI capabilities, excluding agent/MCP)\n\nCore\n\n- `bridge`: inspect Peekaboo Bridge host connectivity\n- `capture`: live capture or video ingest + frame extraction\n- `clean`: prune snapshot cache and temp files\n- `config`: init/show/edit/validate, providers, models, credentials\n- `image`: capture screenshots (screen/window/menu bar regions)\n- `learn`: print the full agent guide + tool catalog\n- `list`: apps, windows, screens, menubar, permissions\n- `permissions`: check Screen Recording/Accessibility status\n- `run`: execute `.peekaboo.json` scripts\n- `sleep`: pause execution for a duration\n- `tools`: list available tools with filtering/display options\n\nInteraction\n\n- `click`: target by ID/query/coords with smart waits\n- `drag`: drag & drop across elements/coords/Dock\n- `hotkey`: modifier combos like `cmd,shift,t`\n- `move`: cursor positioning with optional smoothing\n- `paste`: set clipboard -> paste -> restore\n- `press`: special-key sequences with repeats\n- `scroll`: directional scrolling (targeted + smooth)\n- `swipe`: gesture-style drags between targets\n- `type`: text + control keys (`--clear`, delays)\n\nSystem\n\n- `app`: launch/quit/relaunch/hide/unhide/switch/list apps\n- `clipboard`: read/write clipboard (text/images/files)\n- `dialog`: click/input/file/dismiss/list system dialogs\n- `dock`: launch/right-click/hide/show/list Dock items\n- `menu`: click/list application menus + menu extras\n- `menubar`: list/click status bar items\n- `open`: enhanced `open` with app targeting + JSON payloads\n- `space`: list/switch/move-window (Spaces)\n- `visualizer`: exercise Peekaboo visual feedback animations\n- `window`: close/minimize/maximize/move/resize/focus/list\n\nVision\n\n- `see`: annotated UI maps, snapshot IDs, optional analysis\n\nGlobal runtime flags\n\n- `--json`/`-j`, `--verbose`/`-v`, `--log-level <level>`\n- `--no-remote`, `--bridge-socket <path>`\n\n## Quickstart (happy path)\n\n```bash\npeekaboo permissions\npeekaboo list apps --json\npeekaboo see --annotate --path /tmp/peekaboo-see.png\npeekaboo click --on B1\npeekaboo type \"Hello\" --return\n```\n\n## Common targeting parameters (most interaction commands)\n\n- App/window: `--app`, `--pid`, `--window-title`, `--window-id`, `--window-index`\n- Snapshot targeting: `--snapshot` (ID from `see`; defaults to latest)\n- Element/coords: `--on`/`--id` (element ID), `--coords x,y`\n- Focus control: `--no-auto-focus`, `--space-switch`, `--bring-to-current-space`,\n `--focus-timeout-seconds`, `--focus-retry-count`\n\n## Common capture parameters\n\n- Output: `--path`, `--format png|jpg`, `--retina`\n- Targeting: `--mode screen|window|frontmost`, `--screen-index`,\n `--window-title`, `--window-id`\n- Analysis: `--analyze \"prompt\"`, `--annotate`\n- Capture engine: `--capture-engine auto|classic|cg|modern|sckit`\n\n## Common motion/typing parameters\n\n- Timing: `--duration` (drag/swipe), `--steps`, `--delay` (type/scroll/press)\n- Human-ish movement: `--profile human|linear`, `--wpm` (typing)\n- Scroll: `--direction up|down|left|right`, `--amount <ticks>`, `--smooth`\n\n## Examples\n\n### See -> click -> type (most reliable flow)\n\n```bash\npeekaboo see --app Safari --window-title \"Login\" --annotate --path /tmp/see.png\npeekaboo click --on B3 --app Safari\npeekaboo type \"user@example.com\" --app Safari\npeekaboo press tab --count 1 --app Safari\npeekaboo type \"supersecret\" --app Safari --return\n```\n\n### Target by window id\n\n```bash\npeekaboo list windows --app \"Visual Studio Code\" --json\npeekaboo click --window-id 12345 --coords 120,160\npeekaboo type \"Hello from Peekaboo\" --window-id 12345\n```\n\n### Capture screenshots + analyze\n\n```bash\npeekaboo image --mode screen --screen-index 0 --retina --path /tmp/screen.png\npeekaboo image --app Safari --window-title \"Dashboard\" --analyze \"Summarize KPIs\"\npeekaboo see --mode screen --screen-index 0 --analyze \"Summarize the dashboard\"\n```\n\n### Live capture (motion-aware)\n\n```bash\npeekaboo capture live --mode region --region 100,100,800,600 --duration 30 \\\n --active-fps 8 --idle-fps 2 --highlight-changes --path /tmp/capture\n```\n\n### App + window management\n\n```bash\npeekaboo app launch \"Safari\" --open https://example.com\npeekaboo window focus --app Safari --window-title \"Example\"\npeekaboo window set-bounds --app Safari --x 50 --y 50 --width 1200 --height 800\npeekaboo app quit --app Safari\n```\n\n### Menus, menubar, dock\n\n```bash\npeekaboo menu click --app Safari --item \"New Window\"\npeekaboo menu click --app TextEdit --path \"Format > Font > Show Fonts\"\npeekaboo menu click-extra --title \"WiFi\"\npeekaboo dock launch Safari\npeekaboo menubar list --json\n```\n\n### Mouse + gesture input\n\n```bash\npeekaboo move 500,300 --smooth\npeekaboo drag --from B1 --to T2\npeekaboo swipe --from-coords 100,500 --to-coords 100,200 --duration 800\npeekaboo scroll --direction down --amount 6 --smooth\n```\n\n### Keyboard input\n\n```bash\npeekaboo hotkey --keys \"cmd,shift,t\"\npeekaboo press escape\npeekaboo type \"Line 1\\nLine 2\" --delay 10\n```\n\nNotes\n\n- Requires Screen Recording + Accessibility permissions.\n- Use `peekaboo see --annotate` to identify targets before clicking.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "project-structure",
|
|
3
|
+
"name": "Project Structure",
|
|
4
|
+
"description": "Analyze and explain project architecture",
|
|
5
|
+
"icon": "🏗️",
|
|
6
|
+
"category": "Project",
|
|
7
|
+
"prompt": "Please analyze this project's structure and architecture.\n\nProvide:\n1. **Directory Structure**: Visual tree of important directories\n2. **Architecture Overview**: How the project is organized\n3. **Key Files**: Entry points, configs, main modules\n4. **Data Flow**: How data moves through the system\n5. **Dependencies**: External libraries and their purposes\n6. **Design Patterns**: Patterns used in the codebase\n7. **Tech Stack**: Languages, frameworks, tools used\n\nFormat as a clear, well-organized document that would help a new developer understand the project.",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "proofread",
|
|
3
|
+
"name": "Proofread",
|
|
4
|
+
"description": "Check document for grammar and clarity",
|
|
5
|
+
"icon": "✏️",
|
|
6
|
+
"category": "Writing",
|
|
7
|
+
"prompt": "Please proofread the document at {{path}}.\n\nCheck for:\n- Spelling errors\n- Grammar mistakes\n- Punctuation issues\n- Awkward phrasing\n- Unclear sentences\n- Consistency (terminology, formatting)\n- Tone appropriateness\n\nFor each issue:\n1. Quote the original text\n2. Explain the problem\n3. Suggest a correction\n\nAt the end, provide:\n- Overall quality score (1-10)\n- Summary of common issues\n- General improvement suggestions",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "path",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Path to the document",
|
|
13
|
+
"required": true
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"enabled": true
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "refactor-code",
|
|
3
|
+
"name": "Refactor Code",
|
|
4
|
+
"description": "Improve code structure and readability",
|
|
5
|
+
"icon": "🔧",
|
|
6
|
+
"category": "Development",
|
|
7
|
+
"prompt": "Please refactor the code in {{path}} to improve its quality.\n\nFocus on:\n- {{focus}}\n- Maintaining the same functionality\n- Adding comments where helpful\n- Following best practices for the language\n\nExplain the changes you make and why.",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "path",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Path to the file to refactor",
|
|
13
|
+
"required": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "focus",
|
|
17
|
+
"type": "select",
|
|
18
|
+
"description": "What to focus on",
|
|
19
|
+
"required": true,
|
|
20
|
+
"default": "readability",
|
|
21
|
+
"options": [
|
|
22
|
+
"readability",
|
|
23
|
+
"performance",
|
|
24
|
+
"modularity",
|
|
25
|
+
"error handling",
|
|
26
|
+
"all of the above"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"enabled": true
|
|
31
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rename-symbol",
|
|
3
|
+
"name": "Rename Symbol",
|
|
4
|
+
"description": "Rename a variable/function across files",
|
|
5
|
+
"icon": "🏷️",
|
|
6
|
+
"category": "Utilities",
|
|
7
|
+
"prompt": "Please rename \"{{oldName}}\" to \"{{newName}}\" across the project.\n\nSteps:\n1. Find all occurrences of the symbol\n2. Distinguish between:\n - The actual symbol (function, variable, class)\n - String literals containing the name\n - Comments mentioning the name\n3. Rename only the actual symbol references\n4. Update imports/exports as needed\n5. Check for naming conflicts\n\nReport:\n- Files modified\n- Number of replacements\n- Any manual review needed (strings, comments)\n\nBe careful not to rename unrelated code that happens to have the same name.",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "oldName",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Current name of the symbol",
|
|
13
|
+
"required": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "newName",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "New name for the symbol",
|
|
19
|
+
"required": true
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"enabled": true
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "sag",
|
|
3
|
+
"name": "Sag",
|
|
4
|
+
"description": "ElevenLabs text-to-speech with mac-style say UX.",
|
|
5
|
+
"icon": "🗣️",
|
|
6
|
+
"category": "Tools",
|
|
7
|
+
"prompt": "# sag\n\nUse `sag` for ElevenLabs TTS with local playback.\n\nAPI key (required)\n\n- `ELEVENLABS_API_KEY` (preferred)\n- `SAG_API_KEY` also supported by the CLI\n\nQuick start\n\n- `sag \"Hello there\"`\n- `sag speak -v \"Roger\" \"Hello\"`\n- `sag voices`\n- `sag prompting` (model-specific tips)\n\nModel notes\n\n- Default: `eleven_v3` (expressive)\n- Stable: `eleven_multilingual_v2`\n- Fast: `eleven_flash_v2_5`\n\nPronunciation + delivery rules\n\n- First fix: respell (e.g. \"key-note\"), add hyphens, adjust casing.\n- Numbers/units/URLs: `--normalize auto` (or `off` if it harms names).\n- Language bias: `--lang en|de|fr|...` to guide normalization.\n- v3: SSML `<break>` not supported; use `[pause]`, `[short pause]`, `[long pause]`.\n- v2/v2.5: SSML `<break time=\"1.5s\" />` supported; `<phoneme>` not exposed in `sag`.\n\nv3 audio tags (put at the entrance of a line)\n\n- `[whispers]`, `[shouts]`, `[sings]`\n- `[laughs]`, `[starts laughing]`, `[sighs]`, `[exhales]`\n- `[sarcastic]`, `[curious]`, `[excited]`, `[crying]`, `[mischievously]`\n- Example: `sag \"[whispers] keep this quiet. [short pause] ok?\"`\n\nVoice defaults\n\n- `ELEVENLABS_VOICE_ID` or `SAG_VOICE_ID`\n\nConfirm voice + speaker before long output.\n\n## Chat voice responses\n\nWhen Peter asks for a \"voice\" reply (e.g., \"crazy scientist voice\", \"explain in voice\"), generate audio and send it:\n\n```bash\n# Generate audio file\nsag -v CoWork-OSS -o /tmp/voice-reply.mp3 \"Your message here\"\n\n# Then include in reply:\n# MEDIA:/tmp/voice-reply.mp3\n```\n\nVoice character tips:\n\n- Crazy scientist: Use `[excited]` tags, dramatic pauses `[short pause]`, vary intensity\n- Calm: Use `[whispers]` or slower pacing\n- Dramatic: Use `[sings]` or `[shouts]` sparingly\n\nDefault voice for CoWork-OSS: `lj2rcrvANS3gaWWnczSX` (or just `-v CoWork-OSS`)",
|
|
8
|
+
"parameters": [],
|
|
9
|
+
"enabled": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "security-audit",
|
|
3
|
+
"name": "Security Audit",
|
|
4
|
+
"description": "Check code for common security vulnerabilities",
|
|
5
|
+
"icon": "🔒",
|
|
6
|
+
"category": "Development",
|
|
7
|
+
"prompt": "Please perform a security audit on {{path}}.\n\nCheck for:\n- SQL injection vulnerabilities\n- XSS (Cross-Site Scripting) risks\n- Command injection possibilities\n- Insecure data handling\n- Hardcoded secrets or credentials\n- Insecure dependencies\n- Authentication/authorization issues\n- Input validation problems\n- Sensitive data exposure\n\nFor each issue found:\n1. Describe the vulnerability\n2. Explain the potential impact\n3. Provide a fix with code example\n4. Rate severity (Critical/High/Medium/Low)",
|
|
8
|
+
"parameters": [
|
|
9
|
+
{
|
|
10
|
+
"name": "path",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Path to file or folder to audit",
|
|
13
|
+
"required": true,
|
|
14
|
+
"default": "."
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"enabled": true
|
|
18
|
+
}
|