From runbear
Set up and manage a Runbear agent's event triggers and scheduled jobs through the Runbear management MCP — event triggers (Pipedream-driven, fire when something happens in an external app like a new Gmail, a new Notion page, or a GitHub issue) and scheduled jobs (run the agent on a cron schedule or once at a set time). Use when the user wants to "trigger the agent when X happens", "run the agent every morning / weekly / on a schedule", "remind me / run this once at <time>", "notify me on Slack or email when <event>", or to list, inspect, pause, resume, or delete an agent's existing triggers. Standalone: it owns the cross-tool decision tree and preconditions; the individual MCP tools own their own mechanics. The target agent is given by app UUID, agent URL, agent name (fuzzy-matched), or "my personal agent".
How this skill is triggered — by the user, by Claude, or both
Slash command
/runbear:triggers <appId-or-url-or-name | --personal> [list | delete] [--every <cron> | --at <time> | --on <app event>]<appId-or-url-or-name | --personal> [list | delete] [--every <cron> | --at <time> | --on <app event>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Set up and manage the ways a Runbear agent runs on its own — without a person
Set up and manage the ways a Runbear agent runs on its own — without a person mentioning it. There are two kinds, and picking the right one is most of the job:
kind: external, Pipedream-driven) — fires when something
happens in an external app: a new Gmail arrives, a Notion page is created, a
GitHub issue is opened, etc.kind: scheduled) — runs the agent on a cron schedule
(periodic) or once at a specific time.This skill owns the decision tree, preconditions, and interactive prompts. It
does not restate each tool's mechanics — the trigger MCP tools carry their own
authoritative guidance (call sequence, Pipedream prop shapes, the reloadProps
chain, run-now etiquette, URL formats). Follow the tool descriptions for those and
don't duplicate them here.
list_supported_trigger_types,
describe_pipedream_trigger_component, create_external_trigger,
create_scheduled_job, list_triggers, get_trigger, update_trigger,
delete_trigger, and run_trigger_now. If those tools are unavailable, tell
the user to connect the Runbear MCP first and stop.--personal / "my personal agent". Resolve it before anything else; never
guess a UUID./runbear:triggers "My Agent" # interview: what should fire the agent?
/runbear:triggers "My Agent" --every "0 9 * * MON" # weekly Monday 9am scheduled job
/runbear:triggers "My Agent" --at "tomorrow 3pm" # one-shot scheduled job
/runbear:triggers "My Agent" --on "new Gmail" # event trigger from an app
/runbear:triggers "My Agent" list # list existing triggers
/runbear:triggers --personal list # the caller's personal agent
.../agents/<uuid>) → use directly.--personal / "my personal agent" → get_personal_agent.list_agents (fuzzy):
AskUserQuestion
(the interactive UI), one option per candidate (name, app id, a
disambiguator), and use the one the user picks.Capture whether this is a team agent or the personal agent — it decides the detail-URL shape later.
Read the user's intent and route. When it's ambiguous, ask with AskUserQuestion
(interactive UI) — options Event trigger (when something happens in an app) vs
Scheduled job (on a clock).
<app> <thing> happens", "on every new email / issue / row",
reacting to an external event ⇒ event trigger → Step 3.<date>" ⇒ scheduled job (once)
→ Step 4.Delivery is a separate axis from kind: what the agent produces vs where the result goes. Keep those apart (see Step 6).
Follow the tools' own sequence and prop rules; this skill just orders it and adds the preconditions:
list_supported_trigger_types (narrow with query, e.g. gmail, github) to
pick a real component key. Prefer the latest version, and prefer OAuth
over API-key variants — recommend OAuth to the user first, mention key auth only
as a fallback.
AskUserQuestion.describe_pipedream_trigger_component,
following the reloadProps chain until required props are satisfied. Use the
exact prop shapes the tool describes (app/auth props as
{ authProvisionId } objects, timer props nested) — don't invent shapes here.find_pipedream_account_id; if none exists, use
generate_pipedream_connect_token to have the user connect the account, then
re-resolve. Do not fabricate an apn_... id.create_external_trigger. If the user wants notifications, pass
notificationConfig in the same call (Step 6) — don't create then update.prompt needs a specific app (e.g.
"summarize my Linear work"), that app must be connected and healthy on the agent
first: search_apps → connect_app_to_agent → verify_app_to_agent until
{ status: 'connected' }. Only then create the job.create_scheduled_job:
periodic → a Vixie cron expression + IANA timezone. Minimum interval is
hourly — finer schedules are rejected; if the user asked for sub-hourly, say
so and offer the closest allowed cadence.once → a future executeAt (ms). Convert the user's natural-language time in
their timezone; confirm the resolved absolute time back to them.slackAppInstallationId + target (or
teamsTarget). For a silent job (tool calls fire, nothing posted) pass
notify: false and omit the destination — this is also the only way for a
Teams-only org with no Slack install.url and ask — with AskUserQuestion — whether to run it now. Only
call run_trigger_now if they confirm; never auto-run.list_triggers for the agent; each item's kind (external /
scheduled) is the discriminator the other tools take. Use get_trigger for one
item's full config.update_trigger with status: INACTIVE / ACTIVE.update_trigger (only the fields you pass change): triggerPrompt /
filterPrompt / configuredProps / notificationConfig for external;
name / prompt / config / destination for scheduled.AskUserQuestion), then
delete_trigger.run_trigger_now, scheduled jobs only; event triggers can't be
invoked manually.triggerPrompt / job prompt describe WHAT to produce; notificationConfig
(external) or slackAppInstallationId+target / teamsTarget (scheduled)
describe WHERE / HOW to deliver it. Never put a Slack/email destination in the
prompt and also in the delivery config — pick the delivery config.
Resolve destination ids before building the config:
list_slack_installations for the installation, list_slack_channels
for the channel id (or a user id for a DM). When the Slack tools aren't
available, ask the user for the ids with AskUserQuestion / a direct ask rather
than guessing.intervalSeconds, the literal 60, "polling",
"every minute / 60 seconds", "near real-time". Describe the user-facing outcome
only.https://app.runbear.io/agents/{agentId}/event-triggers/{id}; personal agent:
https://app.runbear.io/personal/event-triggers/{id}. No other path exists
(/scheduled-jobs/…, /triggers/… 404).create_external_trigger returns a limit message ("You can
create up to N external triggers."), do not claim it was created or surface a
URL. Explain the blocker and offer to list_triggers or delete_trigger (after
confirmation) to free a slot.AskUserQuestion, never a plain-text
menu.generate_pipedream_connect_token), open it for the user with Bash (background,
non-blocking, cross-platform: open / xdg-open / start) and also print it as
a fallback for headless sessions.✅ Trigger set up
agent: <agentName> (<team|personal>)
kind: event trigger — <app event> | scheduled job — <cron | once @ time>
delivery: <Slack #channel / DM / email> | silent (no post)
url: <detail url>
next: <event: produce a real event to test> | <scheduled: run it now?>
.runbear/deploy.json manifest.
Triggers live on the hosted agent and are managed directly through the MCP.npx claudepluginhub runbear-io/skills --plugin runbearGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.