brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
wakewire-setupSet up wakewire end to end — install/start the local daemon, wire a first GitHub or Gmail route into a Codex thread, and verify with a test delivery. Use when the user wants external events (GitHub pushes/PRs/issues, emails) delivered into their Codex threads, or when wakewire tools report the daemon is not running.
Independent GitHub snapshot · Automated classification · Original documentation governs
You are configuring wakewire, a local daemon that pushes external events into Codex threads. Configuration happens through the wakewire_* MCP tools; this skill is the runbook.
Call wakewire_status.
npm install -g wakewire
wakewire init
wakewire start --detach # or: wakewire service install (starts at login)
Then call wakewire_status again.adapter.codexReachable is true. If not, codex isn't on PATH for the daemon — ask the user how they installed Codex.Most users want events delivered "into this thread". MCP tools cannot see the current thread id, but shell commands can:
echo "$CODEX_THREAD_ID"target: {"type":"thread","threadId":"<value>"}.If the user prefers fresh threads per event (e.g. "spawn a worktree and investigate each failure"), use target: {"type":"new-thread","cwd":"<abs repo path>","worktree":true} instead.
wakewire_source_setup_github with the repo (e.g. {"repo":"acme/api"}). It creates a smee.io relay channel and returns a webhook URL, a secret, and step-by-step instructions.{"mode":"listen"} with their own tunnel.ping on creation; wakewire_status should show the source received it.wakewire_source_setup_gmail with {label, user, authKind: "imap-password"}. The user creates an app password at https://myaccount.google.com/apppasswords (needs 2-Step Verification) and runs wakewire auth imap in a terminal to store it. Also works for non-Gmail IMAP servers via host/port.wakewire_source_setup_gmail with {label, user}. The user creates their own Google OAuth client (Desktop type) and runs wakewire auth gmail in a terminal to complete consent.wakewire_source_setup_slack (optionally with {team: "workspace-name"}). It returns the one-time Slack app setup: create an app, enable Socket Mode (app-level token, connections:write), add bot scopes (app_mentions:read, channels:history, channels:read, users:read), subscribe to bot events (app_mention, message.channels), install, invite the bot to channels.wakewire auth slack in a terminal — both tokens go in via hidden prompts, never through this conversation.app_mention by default (any channel the bot is in); matching plain message events requires naming channels. Bot-posted messages are skipped by default.Use the generic webhook source. The loop:
wakewire_source_setup_webhook with name and verification only (check the provider's docs for its signature header; hmac-sha256 + header name covers most). Relay the returned URL + secret. The next 3 events are captured raw.wakewire_source_captures.deliveryId/kind/occurredAt paths, a summary template, and fields (alias → dot.path). Only mapped fields reach the model, so map what routes and prompts need, nothing more.wakewire_source_setup_webhook with the mapping (the secret and relay URL are preserved).source: "webhook", match: {"provider": "<name>", "where": [...]}.
Known-provider presets (ClickUp, Linear, Sentry) are in the package's recipes/ directory.Call wakewire_route_add. Examples:
{
"name": "api main pushes",
"source": "github",
"match": {"repo": "acme/api", "events": ["push"], "branches": ["main"]},
"target": {"type": "thread", "threadId": "<resolved id>"},
"promptTemplate": "Summarize this push to {{repo}}:{{branch}} and flag anything risky."
}
match: {"label": "agent-inbox"}.Prompt templates may interpolate only whitelisted summary fields ({{summary}}, {{repo}}, {{branch}}, {{kind}}, {{subject}}, {{from}}, …). Event payloads are always delivered as fenced untrusted data — remind the user that email/commit content must be treated as data, not instructions.
Sandbox: default is read-only. Only set "sandbox": "workspace-write" for GitHub routes if the user explicitly wants the injected turns to edit files. Gmail routes are always read-only.
wakewire_deliveries → pick a delivery id → wakewire_replay.wakewire_deliveries that the delivery status is delivered and the turn arrived in the target thread.