with one click
outpost-tools
// Reference for opentower/outpost tools available to agents. Load this skill to understand the cron scheduling, lifecycle inspection, and session interaction tools. Auto-load at session start for autonomous agents.
// Reference for opentower/outpost tools available to agents. Load this skill to understand the cron scheduling, lifecycle inspection, and session interaction tools. Auto-load at session start for autonomous agents.
Auto-merge a PR after it is marked ready-for-review, if the change is small, non-disruptive, and all checks pass.
Diagnose and fix failing CI on a PR. Capped at 3 attempts. Load repo-setup first.
Promote a draft PR to ready-for-review after CI passes and self-review is clean. Assigns reviewers and adds labels.
Clone or refresh a GitHub repo and prepare the working tree. Load this before any situation skill.
Resolve a GitHub issue end-to-end — explore, plan, implement, clean up, and open a draft PR.
Triage and respond to comments on a PR. Fix if actionable, reply either way. Load repo-setup first.
| name | outpost-tools |
| description | Reference for opentower/outpost tools available to agents. Load this skill to understand the cron scheduling, lifecycle inspection, and session interaction tools. Auto-load at session start for autonomous agents. |
| license | Apache-2.0 |
| metadata | {"audience":"autonomous-agents","autoload":true} |
This skill documents the tools provided by the opentower plugin for managing scheduled jobs, inspecting dispatches/entities, and interacting with other sessions. Load this skill when you need to schedule work, check on other sessions, or understand the opentower lifecycle.
Use these tools to schedule recurring or one-time delayed tasks.
create_cron_jobCreate a scheduled job that runs a prompt at specified times.
Args:
name (required): Unique name for the job (e.g., daily-triage)cron_expression (required): Standard cron format (minute hour day month weekday)
0 9 * * MON-FRI — weekdays at 9am0 0 * * * — daily at midnight*/15 * * * * — every 15 minutesprompt (required): The prompt to execute when the job runsagent (optional): Agent to use (defaults to configured default)entity_key (optional): Entity key for session affinity (e.g., owner/repo#42).
If set, executions reuse the same session as that entity.timezone (optional): Timezone for schedule (default: UTC)run_once (optional): If true, job is disabled after first execution.
Use for one-time delayed tasks like CI polling.Important: Recurring jobs must have intervals of at least 1 hour.
run_once jobs bypass this restriction.
Confirmation required: Always present job details to user and get explicit confirmation before creating.
list_cron_jobsList all scheduled cron jobs with their status and next run time.
Args:
enabled_only (optional): Filter by enabled/disabled statuslimit (optional): Max jobs to return (default: 50)get_cron_jobGet details of a specific job including its prompt and execution history.
Args:
identifier (required): Job name or IDinclude_executions (optional): Include recent execution historyupdate_cron_jobModify an existing cron job.
Args:
identifier (required): Job name or IDenabled (optional): Enable/disable the jobcron_expression (optional): New scheduleprompt (optional): New promptagent (optional): New agenttimezone (optional): New timezoneentity_key (optional): New entity key (null to clear)delete_cron_jobPermanently delete a cron job and its execution history.
Args:
identifier (required): Job name or IDConfirmation required: Always confirm with user before deleting.
trigger_cron_jobManually trigger a job to run immediately, outside its normal schedule.
Args:
identifier (required): Job name or IDUse these tools to inspect opentower dispatches, entities, and sessions.
list_dispatchesList recent dispatches (sessions triggered by webhooks or cron).
Args:
limit (optional): Max dispatches to return (default: 10)status (optional): Filter by status: started, completed, failed, timeoutevent (optional): Filter by event type (e.g., issues, pull_request, check_suite)Use case: Scan recent activity, check session statuses, find session IDs.
list_entitiesList entities (issues/PRs) tracked by opentower with their session mappings.
Args:
limit (optional): Max entities to return (default: 10)repo (optional): Filter by repository (e.g., owner/repo)Use case: Find which session handles a specific issue/PR.
get_entityGet full details of a specific entity including all its dispatches and links.
Args:
entity_key (required): Entity key (e.g., owner/repo#42)Returns: Entity details, all dispatches, and linked entities.
read_session_messagesRead messages from an opentower-managed session.
Args:
session_id (required): Session ID (get from list_dispatches or get_entity)limit (optional): Max messages to return (default: 20)Use case: Check what another session has done, read its conversation history.
post_session_messagePost a message into an existing session. This sends a prompt to the agent in that session.
Args:
session_id (required): Session ID to post tomessage (required): The prompt to sendagent (optional): Override the handling agentConfirmation required: Always explain which session you will message, show the message content, and get explicit user confirmation before posting.
Use with care: This directly interacts with another agent session.
After creating a draft PR, schedule a run_once job to check CI in ~10 minutes:
create_cron_job(
name: "ci-check-pr-42",
cron_expression: "13 14 * * *", // ~10 min from now
run_once: true,
entity_key: "owner/repo#42", // same session
prompt: "Check CI status for PR #42. If passed, load mark-pr-ready skill."
)
get_entity(entity_key: "owner/repo#123")
// Returns session_id, share_url, and all dispatches
list_dispatches(status: "failed", limit: 5)
// Then read_session_messages to understand what went wrong
// First, check what the session has done
read_session_messages(session_id: "...")
// Then, if appropriate and user-approved, send a nudge
post_session_message(
session_id: "...",
message: "CI has passed. Please continue with the review."
)
list_dispatches for session discovery, not the SDK client directly.post_session_message bypasses dispatch creation — use it for simple
nudges, not for starting new work.entity_key ensures related work happens in
the same session, preserving context.