Build internal tools and AI agents in Go — or just download and run Claude / Codex / Gemini as a Slack + Telegram + web agent host. No copy-pasting. You own the code.
Use for ANY work on an agent channel transport — creating a new channel under internal/agents/channels/ / (Slack, Telegram, Discord, …), refactoring an existing one, fixing bugs in event fan-out / approval flow / hot-reload, or touching the registry, setup composer, or shared interfaces in internal/agents/channels.…
Use for ANY work on agent resource limits or usage analytics — the memory guard, CPU/IO/task contention controls, OOM detection and reporting, the Resources page, usage history sampling and retention, spawn admission, or wick memory report. Covers internal/agents/provider/{memscope,oomscore}…
Every exported field in a Config / Configs struct that carries a wick:"..." tag becomes one editable row in the configs table at boot time, scoped to that module's key. Fields without a tag are ignored.
Use for ANY work on a connector in the wick core repo — creating a new connector under internal/connectors/, refactoring/improving an existing one, fixing bugs, adding operations, editing the Configs or per-op Input structs, or touching anything that affects the MCP surface (internal/mcp/) or the registry…
Use when creating or editing any UI component, styling, button, input, form, card, modal, or layout. Enforces the project design system — Inter font, 8-pixel grid, green/navy palette, named color tokens, dark/light theming, responsive layout, and icon/spacing rules.
Use when a connector handles credentials, tokens, or any value the LLM should carry between calls without ever seeing the plaintext. Covers the secret tag (auto-mask), manual c.Mask / c.MaskIgnoreCase for dynamic response data, the wickenc token format, per-user keys, and the MCP redirect tools (wickencrypt…
Use for ANY work on the Svelte SPAs or shared FE libraries under fe/ — adding or editing a component, writing API calls, creating a new SPA workspace, porting templ-embedded JS into a SPA, wiring a new route, or extracting shared code. Covers the npm-workspaces layout (fe/common/ shared libs + fe/agents/ SPAs), the…
Use when building, packaging, or releasing a connector (or later a tool/job) as an EXTERNAL wick PLUGIN — a separate binary in the plugins monorepo that wick downloads and runs over gRPC, instead of an in-tree module compiled into wick. Covers the plugins repo layout (one folder per plugin under connector/ /), the…
Use for ANY work on a tool OR job in the repo — creating new, improving/refactoring existing, fixing bugs, editing view/handler/service/JS, adding features, or touching anything under internal/tools/{tool}/ or internal/jobs/{job}/. Covers both surfaces because they share the same Config reflection, the same wick:"..."…
Use for ANY work on a workflow node type — creating a new node executor under internal/agents/workflow/nodes/, refactoring/improving an existing one, adding fields to a node's schema, or wiring the executor into setup/manager.go. Covers the full executor contract — workflow.Executor interface, engine.NodeDescriptor…
Use when the user asks how wick agents work — sessions, projects, presets, providers, channels (Slack/Telegram/web), the pool and its queue, scheduled messages, or where agent state lives on disk. Covers the mental model behind sessions and projects, how to point an agent at a folder, and how to reach the same agent…
Use when the user asks to look something up or act on an external system through wick — check a ticket, query a database, read logs, search Slack, call an API — or asks which connectors are available. Covers the list → drill → schema → execute discovery cycle over MCP, session workspaces for throwaway credentials, and…
Use when the user wants wick to reach an API it has no connector for yet — "buatin connector untuk X", "add a connector for this API", "wrap this cURL", "register our internal MCP server", "add an operation to that connector I made", or asks why a connector they built shows nothing. Covers the custom-connector…
Use when asked anything about wick itself — what it is, what it can do, whether an update is available, what changed in a release, how a feature works, or how to configure something. Points to the live documentation site and release feed so answers come from current sources, never from memory.
Use when the session's prompt says notes are waiting, when picking up work someone (or some earlier session) already started, when you learn something a later session would otherwise have to rediscover, or when the user mentions notes, handover, or "what did we find last time". Notes work on a plain session too — no…
Use when the user asks about installing, updating, removing, disabling, or building a wick plugin — a connector shipped as a standalone binary that wick runs over gRPC. Covers the plugin CLI, the marketplace catalog, install verification and signing, when to choose a plugin over an in-tree module or a custom…
Use when the user asks about agent memory or CPU limits, an agent being killed or OOM, the Resources page, usage history, disk space, why a spawn is queued, or how to cap what an agent may consume. Covers the three guard modes and what each actually does, which platform enforces what, how to read the four separate…
Use BEFORE writing any HTML artifact, widget, diagram, chart, image gallery, or dashboard into a wick chat reply. Covers which fence to use (html vs htmlfile vs svg vs mermaid vs imagecard), the theme bridge variables an artifact must use, why fetch() is blocked inside an artifact and what to use instead…
Use when finishing a turn nobody needs to read — a monitor or poll that found nothing new, a scheduled run mid-sequence, bookkeeping between steps. Covers the exact [silent] marker that keeps a reply out of Slack/Telegram and push notifications, where it must sit, what breaks it, and when to reply normally instead.
Use BEFORE writing any reply that will be delivered to Slack — Slack uses mrkdwn, not markdown, and wick sends your text through unconverted. Covers the syntax that differs (bold, italic, strike, links, headings, tables), which rich fences degrade badly, how to write one message that reads well on both Slack and the…
Use when the session's prompt names a ticket (T-XXXX), when the user talks about tickets, the board, statuses, assignees, or when a conversation has gone off the rails and the work should continue in a fresh session on the same ticket. Covers the ticket model (one ticket, many sessions), keeping status honest, and…
Use when the user asks to build, edit, debug, or run a wick workflow — a multi-step automation stored as a graph of typed nodes with triggers (cron, channel, webhook, manual). Covers when a workflow is the right tool versus an agent or a job, the node catalog, trigger types, the render context, and how to author one…