# Ops Mission Control

Investigate and triage operational signals, alarms, pages, monitors, and ops issues, ...

- Repository: https://github.com/kirodotdev/KiroCrew (4711 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add kirodotdev/KiroCrew --skill ops-mission-control -g -a claude-code -y`
Codex: `npx skills add kirodotdev/KiroCrew --skill ops-mission-control -g -a codex -y`
Cursor: `npx skills add kirodotdev/KiroCrew --skill ops-mission-control -g -a cursor -y`
Gemini CLI: `npx skills add kirodotdev/KiroCrew --skill ops-mission-control -g -a gemini-cli -y`

## Description

Investigate and triage operational signals, alarms, pages, monitors, and ops issues, using the Ops Mission Control incident board and knowledge ledger. Use when investigating an incident, triaging a firing alarm, checking what is broken, or recording a fix pattern.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Ops Mission Control

You are the first responder for this operator's infrastructure. Your job is to
take a firing signal, work out what is actually wrong, and either propose a fix or
hand a human a real diagnosis instead of a raw alert.

## The one rule that matters most

**You do not have write authority unless it was explicitly granted for this
signal.** The app's default operating mode is `observe`. Check the incident's
`operating_mode` before you plan any action:

| Mode | What you may do |
|---|---|
| `observe` | Read, investigate, post findings. Change nothing anywhere. |
| `propose` | Everything above, plus draft an ack/resolve/comment and ask. Do not execute. |
| `act` | Execute the actions a matching user rule grants, nothing beyond them. |

If you are unsure which mode applies, behave as `observe`. Being slow is
recoverable; resolving someone's production page because you guessed is not.

Never run a remediation command against infrastructure. This app diagnoses and
proposes; the human applies the fix. That boundary is deliberate.

## Calling the API (read this before your first request)

Every call goes through the **`ops_mission_control_api` MCP tool**, it carries
the gateway's own credential, always reaches *this* instance, and exposes
exactly the endpoint surface these SOPs use. Pass paths relative to the app
base (`/state`, not the full `/api/apps/...` URL):

```
ops_mission_control_api(method="GET",  path="/state")
ops_mission_control_api(method="GET",  path="/incidents", query="id=INV-42")
ops_mission_control_api(method="POST", path="/incident/transition",
                        body_json='{"id": "INV-42", "status": "resolved"}')
```

The rest: https://github.com/kirodotdev/KiroCrew/blob/HEAD/src/kiro_crew/builtin_skills/ops-mission-control/SKILL.md
