{"owner":"builderz-labs","repo":"mission-control","hasSkills":true,"totalSkillsCount":9,"totalTokensCount":5207,"categories":["anthropic-skill","root-instruction","skill-json","claude-rule"],"hasMcp":false,"mcpConfig":null,"found":["skills/mission-control-installer/README.md","skills/mission-control-manage/README.md","public/llms.txt","skills/mission-control-manage/skill.json","CLAUDE.md","SKILL.md","tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json","tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json","skills/mission-control-installer/skill.json"],"skills":{"skills/mission-control-installer/README.md":"# Mission Control Installer Skill\n\nInstall and configure Mission Control on any Linux or macOS system.\n\n## What This Skill Does\n\n1. Detects the target OS and available runtimes (Docker or Node.js 20+)\n2. Clones or updates the Mission Control repository\n3. Generates a secure `.env` with random credentials\n4. Starts the dashboard via Docker Compose or local Node.js\n5. Runs an OpenClaw fleet health check (cleans stale PIDs, old logs, validates gateway)\n6. Prints the access URL and admin credentials\n\n## Usage\n\nRun the installer script:\n\n```bash\n# Auto-detect deployment mode (prefers Docker)\nbash install.sh\n\n# Force Docker deployment\nbash install.sh --docker\n\n# Force local deployment (Node.js + pnpm)\nbash install.sh --local\n\n# Custom port\nbash install.sh --port 8080\n\n# Skip OpenClaw fleet check\nbash install.sh --skip-openclaw\n```\n\nOr as a one-liner:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/builderz-labs/mission-control/main/install.sh | bash\n```\n\n## Prerequisites\n\n- **Docker mode**: Docker Engine with Docker Compose v2\n- **Local mode**: Node.js 20+, pnpm (auto-installed via corepack if missing)\n- **Both**: git (to clone the repository)\n\n## Post-Install\n\nAfter installation:\n\n1. Open `http://localhost:3000` (or your configured port)\n2. Log in with the credentials printed by the installer (also in `.env`)\n3. Configure your OpenClaw gateway connection in Settings\n4. Register agents via the Agents panel\n\n## Environment Configuration\n\nThe installer generates a `.env` from `.env.example` with secure random values for:\n\n- `AUTH_PASS` — 24-character random password\n- `API_KEY` — 32-character hex API key\n- `AUTH_SECRET` — 32-character session secret\n\nTo regenerate credentials independently:\n\n```bash\nbash scripts/generate-env.sh --force\n```\n","skills/mission-control-manage/README.md":"# Mission Control Management Skill\n\nManage a running Mission Control instance programmatically.\n\n## API Endpoints\n\nAll endpoints require authentication via `x-api-key` header or session cookie.\n\n### Health Check\n\n```bash\n# Quick health status\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health\n\n# Response: { \"status\": \"healthy\", \"version\": \"1.3.0\", \"checks\": [...] }\n```\n\nPossible statuses: `healthy`, `degraded`, `unhealthy`\n\n### System Overview\n\n```bash\n# Full system status (memory, disk, sessions, processes)\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=overview\n```\n\n### Diagnostics (Admin Only)\n\n```bash\n# Comprehensive diagnostics including security posture\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/diagnostics\n\n# Response includes:\n# - system: node version, platform, memory, docker detection\n# - security: score (0-100) with individual checks\n# - database: size, WAL mode, migration version\n# - gateway: configured, reachable, host/port\n# - agents: total count, by status\n# - retention: configured retention policies\n```\n\n### Check for Updates\n\n```bash\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/check\n\n# Response: { \"updateAvailable\": true, \"currentVersion\": \"1.3.0\", \"latestVersion\": \"1.4.0\", ... }\n```\n\n### Trigger Update\n\n```bash\n# Apply available update (bare-metal only; Docker returns instructions)\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/update\n```\n\n### Database Backup\n\n```bash\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/backup\n```\n\n### Agent Management\n\n```bash\n# List agents\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/agents\n\n# Register an agent\ncurl -X POST -H \"x-api-key: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-agent\", \"type\": \"openclaw\"}' \\\n  http://localhost:3000/api/agents\n```\n\n## Station Doctor\n\nFor local diagnostics without API access:\n\n```bash\nbash scripts/station-doctor.sh\n```\n\nChecks: Docker health, port availability, disk space, DB integrity, backup age.\n\n## Common Workflows\n\n### Automated Health Monitoring\n\n```bash\n# Check health and alert if unhealthy\nSTATUS=$(curl -sf -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health | jq -r '.status')\nif [ \"$STATUS\" != \"healthy\" ]; then\n  echo \"ALERT: Mission Control is $STATUS\"\nfi\n```\n\n### Pre-Upgrade Checklist\n\n1. Check for updates: `GET /api/releases/check`\n2. Create backup: `POST /api/backup`\n3. Run diagnostics: `GET /api/diagnostics` (verify no active tasks)\n4. Apply update: `POST /api/releases/update` (or `docker pull` + recreate for Docker)\n5. Verify health: `GET /api/status?action=health`\n","public/llms.txt":"# Mission Control\n\n> Open-source dashboard for AI agent orchestration.\n\nMission Control is a self-hosted dashboard for managing AI agent fleets. It provides task dispatch, cost tracking, quality review gates, recurring task scheduling, and multi-agent coordination — all powered by SQLite with zero external dependencies.\n\n## Key Features\n- Agent management with full lifecycle (register, heartbeat, wake, retire)\n- Kanban task board with priorities, assignments, and comments\n- Task queue with atomic claiming and priority-based dispatch\n- Auto-dispatch with model routing (Opus/Sonnet/Haiku by task complexity)\n- Aegis quality review gates for task sign-off\n- Real-time monitoring via WebSocket + SSE\n- Token usage and cost tracking with per-model breakdowns\n- Natural language recurring tasks with cron scheduling\n- MCP server with 35+ tools for agent integration\n- CLI for headless/scripted usage\n- Role-based access control (viewer, operator, admin)\n- REST API with OpenAPI spec\n\n## Stack\nNext.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS\n\n## Links\n- Source: https://github.com/builderz-labs/mission-control\n- Landing page: https://mc.builderz.dev\n- License: MIT\n\n## llms-full.txt\nFor the complete API reference and integration guide, see docs/cli-agent-control.md in the repository.\n","skills/mission-control-manage/skill.json":"{\n  \"name\": \"mission-control-manage\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Manage a running Mission Control instance — health checks, diagnostics, upgrades, backups\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"http\"],\n  \"parameters\": {\n    \"base_url\": {\n      \"type\": \"string\",\n      \"default\": \"http://localhost:3000\",\n      \"description\": \"Mission Control base URL\"\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"description\": \"API key for authentication (x-api-key header)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"management\", \"health\", \"upgrade\", \"backup\"]\n}\n","CLAUDE.md":"# Mission Control\n\nOpen-source dashboard for AI agent orchestration. Manage agent fleets, track tasks, monitor costs, and orchestrate workflows.\n\n**Stack**: Next.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS 4, Zustand, pnpm\n\n## Prerequisites\n\n- Node.js >= 22 (LTS recommended; 24.x also supported)\n- pnpm (`corepack enable` to auto-install)\n\n## Setup\n\n```bash\npnpm install\npnpm build\n```\n\nSecrets (AUTH_SECRET, API_KEY) auto-generate on first run if not set.\nVisit `http://localhost:3000/setup` to create an admin account, or set `AUTH_USER`/`AUTH_PASS` in `.env` for headless/CI seeding.\n\n## Run\n\n```bash\npnpm dev              # development (localhost:3000)\npnpm start            # production\nnode .next/standalone/server.js   # standalone mode (after build)\n```\n\n## Docker\n\n```bash\ndocker compose up                 # zero-config\nbash install.sh --docker          # full guided setup\n```\n\nProduction hardening: `docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d`\n\n## Tests\n\n```bash\npnpm test             # unit tests (vitest)\npnpm test:e2e         # end-to-end (playwright)\npnpm typecheck        # tsc --noEmit\npnpm lint             # eslint\npnpm test:all         # lint + typecheck + test + build + e2e\n```\n\n## Key Directories\n\n```\nsrc/app/          Next.js pages + API routes (App Router)\nsrc/components/   UI panels and shared components\nsrc/lib/          Core logic, database, utilities\n.data/            SQLite database + runtime state (gitignored)\nscripts/          Install, deploy, diagnostics scripts\ndocs/             Documentation and guides\n```\n\nPath alias: `@/*` maps to `./src/*`\n\n## Data Directory\n\nSet `MISSION_CONTROL_DATA_DIR` env var to change the data location (defaults to `.data/`).\nDatabase path: defaults to `<MISSION_CONTROL_DATA_DIR>/mission-control.db`.\n\n## Conventions\n\n- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`)\n- **No AI attribution**: Never add `Co-Authored-By` or similar trailers to commits\n- **Package manager**: pnpm only (no npm/yarn)\n- **Icons**: No icon libraries -- use raw text/emoji in components\n- **Standalone output**: `next.config.js` sets `output: 'standalone'`\n\n## Agent Control Interfaces\n\nMission Control provides three interfaces for autonomous agents:\n\n### MCP Server (recommended for agents)\n```bash\n# Add to any Claude Code agent:\nclaude mcp add mission-control -- node /path/to/mission-control/scripts/mc-mcp-server.cjs\n\n# Environment config:\nMC_URL=http://127.0.0.1:3000 MC_API_KEY=<key>\n```\n35 tools: agents, tasks, sessions, memory, soul, comments, tokens, skills, cron, status.\nSee `docs/cli-agent-control.md` for full tool list.\n\n### CLI\n```bash\npnpm mc agents list --json\npnpm mc tasks queue --agent Aegis --max-capacity 2 --json\npnpm mc events watch --types agent,task\n```\n\n### REST API\nOpenAPI spec: `openapi.json`. Interactive docs at `/docs` when running.\n\n## Common Pitfalls\n\n- **Standalone mode**: Use `node .next/standalone/server.js`, not `pnpm start` (which requires full `node_modules`)\n- **better-sqlite3**: Native addon -- needs rebuild when switching Node versions (`pnpm rebuild better-sqlite3`)\n- **AUTH_PASS with `#`**: Quote it (`AUTH_PASS=\"my#pass\"`) or use `AUTH_PASS_B64` (base64-encoded)\n- **Gateway optional**: Set `NEXT_PUBLIC_GATEWAY_OPTIONAL=true` for standalone deployments without gateway connectivity\n","SKILL.md":"---\nname: mission-control\ndescription: \"Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.\"\n---\n\n# Mission Control Agent Skill\n\nMission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.\n\n## Quick Start\n\n**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.\n\n**Auth header:** `x-api-key: <your-api-key>`\n\n**Register + heartbeat in two calls:**\n\n```bash\n# 1. Register\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"register\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"name\": \"My Agent\" }\n  }'\n\n# 2. Heartbeat (repeat every 5 minutes)\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"heartbeat\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"status\": \"online\" }\n  }'\n```\n\n## Authentication\n\nMC supports two auth methods:\n\n| Method | Header | Use Case |\n|--------|--------|----------|\n| API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD |\n| Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |\n\n**Roles (hierarchical):** `viewer` < `operator` < `admin`\n\n- **viewer** — Read-only access (GET endpoints)\n- **operator** — Create/update agents, tasks, skills, use adapters\n- **admin** — Full access including user management\n\nAPI key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.\n\nAgents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.\n\n## Agent Lifecycle\n\n```\nregister → heartbeat (5m interval) → fetch assignments → report task status → disconnect\n```\n\nAll lifecycle actions go through the adapter protocol (`POST /api/adapters`).\n\n### 1. Register\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"register\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"name\": \"My Agent\",\n    \"metadata\": { \"version\": \"1.0\", \"capabilities\": [\"code\", \"review\"] }\n  }\n}\n```\n\n### 2. Heartbeat\n\nSend every ~5 minutes to stay marked as online.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"heartbeat\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"status\": \"online\",\n    \"metrics\": { \"tasks_completed\": 5, \"uptime_seconds\": 3600 }\n  }\n}\n```\n\n### 3. Fetch Assignments\n\nReturns up to 5 pending tasks sorted by priority (critical → low), then due date.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"assignments\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n**Response:**\n\n```json\n{\n  \"assignments\": [\n    { \"taskId\": \"42\", \"description\": \"Fix login bug\\nUsers cannot log in with SSO\", \"priority\": 1 }\n  ],\n  \"framework\": \"generic\"\n}\n```\n\n### 4. Report Task Progress\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"report\",\n  \"payload\": {\n    \"taskId\": \"42\",\n    \"agentId\": \"my-agent-01\",\n    \"progress\": 75,\n    \"status\": \"in_progress\",\n    \"output\": \"Fixed SSO handler, running tests...\"\n  }\n}\n```\n\n`status` values: `in_progress`, `done`, `failed`, `blocked`\n\n### 5. Disconnect\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"disconnect\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n## Core API Reference\n\n### Agents — `/api/agents`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` |\n| POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` |\n| PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |\n\n**GET response shape:**\n\n```json\n{\n  \"agents\": [{\n    \"id\": 1, \"name\": \"scout\", \"role\": \"researcher\", \"status\": \"online\",\n    \"config\": {}, \"taskStats\": { \"total\": 10, \"assigned\": 2, \"in_progress\": 1, \"completed\": 7 }\n  }],\n  \"total\": 1, \"page\": 1, \"limit\": 50\n}\n```\n\n### Tasks — `/api/tasks`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` |\n| POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` |\n| PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |\n\n**Priority values:** `critical`, `high`, `medium`, `low`\n\n**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`\n\nNote: Moving a task to `done` via PUT requires an Aegis quality review approval.\n\n**POST response:**\n\n```json\n{\n  \"task\": {\n    \"id\": 42, \"title\": \"Fix login bug\", \"status\": \"assigned\",\n    \"priority\": \"high\", \"assigned_to\": \"scout\", \"ticket_ref\": \"GEN-001\",\n    \"tags\": [\"bug\"], \"metadata\": {}\n  }\n}\n```\n\n### Skills — `/api/skills`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List all skills across roots |\n| GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content |\n| GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill |\n| POST | operator | Create/upsert skill. Body: `{ source, name, content }` |\n| PUT | operator | Update skill content. Body: `{ source, name, content }` |\n| DELETE `?source=...&name=...` | operator | Delete a skill |\n\n**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`\n\n### Status — `/api/status`\n\n| Action | Min Role | Description |\n|--------|----------|-------------|\n| GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |\n| GET `?action=dashboard` | viewer | Aggregated dashboard data with DB stats |\n| GET `?action=gateway` | viewer | Gateway process status and port check |\n| GET `?action=models` | viewer | Available AI models (catalog + local Ollama) |\n| GET `?action=health` | viewer | Health checks (gateway, disk, memory) |\n| GET `?action=capabilities` | viewer | Feature flags: gateway reachable, Claude home, subscriptions |\n\n### Adapters — `/api/adapters`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List available framework adapter names |\n| POST | operator | Execute adapter action (see Agent Lifecycle above) |\n\n## Framework Adapter Protocol\n\nAll agent lifecycle operations use a single endpoint:\n\n```\nPOST /api/adapters\nContent-Type: application/json\nx-api-key: <key>\n\n{\n  \"framework\": \"<adapter-name>\",\n  \"action\": \"<action>\",\n  \"payload\": { ... }\n}\n```\n\n**Available frameworks:** `generic`, `openclaw`, `crewai`, `langgraph`, `autogen`, `claude-sdk`\n\n**Available actions:** `register`, `heartbeat`, `report`, `assignments`, `disconnect`\n\nAll adapters implement the same `FrameworkAdapter` interface — choose the one matching your agent framework, or use `generic` as a universal fallback.\n\n**Payload shapes by action:**\n\n| Action | Required Fields | Optional Fields |\n|--------|----------------|-----------------|\n| `register` | `agentId`, `name` | `metadata` |\n| `heartbeat` | `agentId` | `status`, `metrics` |\n| `report` | `taskId`, `agentId` | `progress`, `status`, `output` |\n| `assignments` | `agentId` | — |\n| `disconnect` | `agentId` | — |\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `API_KEY` | — | API key for agent/script authentication |\n| `OPENCLAW_GATEWAY_HOST` | `127.0.0.1` | Gateway host address |\n| `OPENCLAW_GATEWAY_PORT` | `18789` | Gateway port |\n| `OPENCLAW_STATE_DIR` | `~/.openclaw` | OpenClaw state directory |\n| `OPENCLAW_CONFIG_PATH` | `<state-dir>/openclaw.json` | Gateway config file path |\n| `MC_CLAUDE_HOME` | `~/.claude` | Claude home directory |\n\n## Real-Time Events\n\nMC broadcasts events via SSE (`/api/events`) and WebSocket. Key event types:\n\n- `agent.created`, `agent.updated`, `agent.status_changed`\n- `task.created`, `task.updated`, `task.status_changed`\n\nSubscribe to SSE for live dashboard updates when building integrations.\n","tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json":"{\n  \"agent:research-bot:main\": {\n    \"sessionId\": \"sess-research-main\",\n    \"updatedAt\": 4102444700000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"research\",\n    \"model\": {\n      \"primary\": \"anthropic/claude-sonnet-4-5\"\n    },\n    \"totalTokens\": 12800,\n    \"inputTokens\": 8100,\n    \"outputTokens\": 4700,\n    \"contextTokens\": 64000\n  }\n}\n","tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json":"{\n  \"agent:engineering-bot:main\": {\n    \"sessionId\": \"sess-eng-main\",\n    \"updatedAt\": 4102444800000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"engineering\",\n    \"model\": {\n      \"primary\": \"openai/gpt-5\"\n    },\n    \"totalTokens\": 24500,\n    \"inputTokens\": 16100,\n    \"outputTokens\": 8400,\n    \"contextTokens\": 120000\n  }\n}\n","skills/mission-control-installer/skill.json":"{\n  \"name\": \"mission-control-installer\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Install and configure Mission Control — the OpenClaw agent orchestration dashboard\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"fs\"],\n  \"parameters\": {\n    \"deployment_mode\": {\n      \"type\": \"string\",\n      \"enum\": [\"docker\", \"local\"],\n      \"default\": \"docker\",\n      \"description\": \"How to deploy Mission Control\"\n    },\n    \"port\": {\n      \"type\": \"number\",\n      \"default\": 3000,\n      \"description\": \"Port for the Mission Control dashboard\"\n    },\n    \"install_dir\": {\n      \"type\": \"string\",\n      \"default\": \"\",\n      \"description\": \"Installation directory (defaults to ./mission-control)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"dashboard\", \"installer\", \"docker\"]\n}\n"},"files":{"skills/mission-control-installer/README.md":"# Mission Control Installer Skill\n\nInstall and configure Mission Control on any Linux or macOS system.\n\n## What This Skill Does\n\n1. Detects the target OS and available runtimes (Docker or Node.js 20+)\n2. Clones or updates the Mission Control repository\n3. Generates a secure `.env` with random credentials\n4. Starts the dashboard via Docker Compose or local Node.js\n5. Runs an OpenClaw fleet health check (cleans stale PIDs, old logs, validates gateway)\n6. Prints the access URL and admin credentials\n\n## Usage\n\nRun the installer script:\n\n```bash\n# Auto-detect deployment mode (prefers Docker)\nbash install.sh\n\n# Force Docker deployment\nbash install.sh --docker\n\n# Force local deployment (Node.js + pnpm)\nbash install.sh --local\n\n# Custom port\nbash install.sh --port 8080\n\n# Skip OpenClaw fleet check\nbash install.sh --skip-openclaw\n```\n\nOr as a one-liner:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/builderz-labs/mission-control/main/install.sh | bash\n```\n\n## Prerequisites\n\n- **Docker mode**: Docker Engine with Docker Compose v2\n- **Local mode**: Node.js 20+, pnpm (auto-installed via corepack if missing)\n- **Both**: git (to clone the repository)\n\n## Post-Install\n\nAfter installation:\n\n1. Open `http://localhost:3000` (or your configured port)\n2. Log in with the credentials printed by the installer (also in `.env`)\n3. Configure your OpenClaw gateway connection in Settings\n4. Register agents via the Agents panel\n\n## Environment Configuration\n\nThe installer generates a `.env` from `.env.example` with secure random values for:\n\n- `AUTH_PASS` — 24-character random password\n- `API_KEY` — 32-character hex API key\n- `AUTH_SECRET` — 32-character session secret\n\nTo regenerate credentials independently:\n\n```bash\nbash scripts/generate-env.sh --force\n```\n","skills/mission-control-manage/README.md":"# Mission Control Management Skill\n\nManage a running Mission Control instance programmatically.\n\n## API Endpoints\n\nAll endpoints require authentication via `x-api-key` header or session cookie.\n\n### Health Check\n\n```bash\n# Quick health status\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health\n\n# Response: { \"status\": \"healthy\", \"version\": \"1.3.0\", \"checks\": [...] }\n```\n\nPossible statuses: `healthy`, `degraded`, `unhealthy`\n\n### System Overview\n\n```bash\n# Full system status (memory, disk, sessions, processes)\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=overview\n```\n\n### Diagnostics (Admin Only)\n\n```bash\n# Comprehensive diagnostics including security posture\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/diagnostics\n\n# Response includes:\n# - system: node version, platform, memory, docker detection\n# - security: score (0-100) with individual checks\n# - database: size, WAL mode, migration version\n# - gateway: configured, reachable, host/port\n# - agents: total count, by status\n# - retention: configured retention policies\n```\n\n### Check for Updates\n\n```bash\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/check\n\n# Response: { \"updateAvailable\": true, \"currentVersion\": \"1.3.0\", \"latestVersion\": \"1.4.0\", ... }\n```\n\n### Trigger Update\n\n```bash\n# Apply available update (bare-metal only; Docker returns instructions)\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/update\n```\n\n### Database Backup\n\n```bash\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/backup\n```\n\n### Agent Management\n\n```bash\n# List agents\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/agents\n\n# Register an agent\ncurl -X POST -H \"x-api-key: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-agent\", \"type\": \"openclaw\"}' \\\n  http://localhost:3000/api/agents\n```\n\n## Station Doctor\n\nFor local diagnostics without API access:\n\n```bash\nbash scripts/station-doctor.sh\n```\n\nChecks: Docker health, port availability, disk space, DB integrity, backup age.\n\n## Common Workflows\n\n### Automated Health Monitoring\n\n```bash\n# Check health and alert if unhealthy\nSTATUS=$(curl -sf -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health | jq -r '.status')\nif [ \"$STATUS\" != \"healthy\" ]; then\n  echo \"ALERT: Mission Control is $STATUS\"\nfi\n```\n\n### Pre-Upgrade Checklist\n\n1. Check for updates: `GET /api/releases/check`\n2. Create backup: `POST /api/backup`\n3. Run diagnostics: `GET /api/diagnostics` (verify no active tasks)\n4. Apply update: `POST /api/releases/update` (or `docker pull` + recreate for Docker)\n5. Verify health: `GET /api/status?action=health`\n","public/llms.txt":"# Mission Control\n\n> Open-source dashboard for AI agent orchestration.\n\nMission Control is a self-hosted dashboard for managing AI agent fleets. It provides task dispatch, cost tracking, quality review gates, recurring task scheduling, and multi-agent coordination — all powered by SQLite with zero external dependencies.\n\n## Key Features\n- Agent management with full lifecycle (register, heartbeat, wake, retire)\n- Kanban task board with priorities, assignments, and comments\n- Task queue with atomic claiming and priority-based dispatch\n- Auto-dispatch with model routing (Opus/Sonnet/Haiku by task complexity)\n- Aegis quality review gates for task sign-off\n- Real-time monitoring via WebSocket + SSE\n- Token usage and cost tracking with per-model breakdowns\n- Natural language recurring tasks with cron scheduling\n- MCP server with 35+ tools for agent integration\n- CLI for headless/scripted usage\n- Role-based access control (viewer, operator, admin)\n- REST API with OpenAPI spec\n\n## Stack\nNext.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS\n\n## Links\n- Source: https://github.com/builderz-labs/mission-control\n- Landing page: https://mc.builderz.dev\n- License: MIT\n\n## llms-full.txt\nFor the complete API reference and integration guide, see docs/cli-agent-control.md in the repository.\n","skills/mission-control-manage/skill.json":"{\n  \"name\": \"mission-control-manage\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Manage a running Mission Control instance — health checks, diagnostics, upgrades, backups\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"http\"],\n  \"parameters\": {\n    \"base_url\": {\n      \"type\": \"string\",\n      \"default\": \"http://localhost:3000\",\n      \"description\": \"Mission Control base URL\"\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"description\": \"API key for authentication (x-api-key header)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"management\", \"health\", \"upgrade\", \"backup\"]\n}\n","CLAUDE.md":"# Mission Control\n\nOpen-source dashboard for AI agent orchestration. Manage agent fleets, track tasks, monitor costs, and orchestrate workflows.\n\n**Stack**: Next.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS 4, Zustand, pnpm\n\n## Prerequisites\n\n- Node.js >= 22 (LTS recommended; 24.x also supported)\n- pnpm (`corepack enable` to auto-install)\n\n## Setup\n\n```bash\npnpm install\npnpm build\n```\n\nSecrets (AUTH_SECRET, API_KEY) auto-generate on first run if not set.\nVisit `http://localhost:3000/setup` to create an admin account, or set `AUTH_USER`/`AUTH_PASS` in `.env` for headless/CI seeding.\n\n## Run\n\n```bash\npnpm dev              # development (localhost:3000)\npnpm start            # production\nnode .next/standalone/server.js   # standalone mode (after build)\n```\n\n## Docker\n\n```bash\ndocker compose up                 # zero-config\nbash install.sh --docker          # full guided setup\n```\n\nProduction hardening: `docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d`\n\n## Tests\n\n```bash\npnpm test             # unit tests (vitest)\npnpm test:e2e         # end-to-end (playwright)\npnpm typecheck        # tsc --noEmit\npnpm lint             # eslint\npnpm test:all         # lint + typecheck + test + build + e2e\n```\n\n## Key Directories\n\n```\nsrc/app/          Next.js pages + API routes (App Router)\nsrc/components/   UI panels and shared components\nsrc/lib/          Core logic, database, utilities\n.data/            SQLite database + runtime state (gitignored)\nscripts/          Install, deploy, diagnostics scripts\ndocs/             Documentation and guides\n```\n\nPath alias: `@/*` maps to `./src/*`\n\n## Data Directory\n\nSet `MISSION_CONTROL_DATA_DIR` env var to change the data location (defaults to `.data/`).\nDatabase path: defaults to `<MISSION_CONTROL_DATA_DIR>/mission-control.db`.\n\n## Conventions\n\n- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`)\n- **No AI attribution**: Never add `Co-Authored-By` or similar trailers to commits\n- **Package manager**: pnpm only (no npm/yarn)\n- **Icons**: No icon libraries -- use raw text/emoji in components\n- **Standalone output**: `next.config.js` sets `output: 'standalone'`\n\n## Agent Control Interfaces\n\nMission Control provides three interfaces for autonomous agents:\n\n### MCP Server (recommended for agents)\n```bash\n# Add to any Claude Code agent:\nclaude mcp add mission-control -- node /path/to/mission-control/scripts/mc-mcp-server.cjs\n\n# Environment config:\nMC_URL=http://127.0.0.1:3000 MC_API_KEY=<key>\n```\n35 tools: agents, tasks, sessions, memory, soul, comments, tokens, skills, cron, status.\nSee `docs/cli-agent-control.md` for full tool list.\n\n### CLI\n```bash\npnpm mc agents list --json\npnpm mc tasks queue --agent Aegis --max-capacity 2 --json\npnpm mc events watch --types agent,task\n```\n\n### REST API\nOpenAPI spec: `openapi.json`. Interactive docs at `/docs` when running.\n\n## Common Pitfalls\n\n- **Standalone mode**: Use `node .next/standalone/server.js`, not `pnpm start` (which requires full `node_modules`)\n- **better-sqlite3**: Native addon -- needs rebuild when switching Node versions (`pnpm rebuild better-sqlite3`)\n- **AUTH_PASS with `#`**: Quote it (`AUTH_PASS=\"my#pass\"`) or use `AUTH_PASS_B64` (base64-encoded)\n- **Gateway optional**: Set `NEXT_PUBLIC_GATEWAY_OPTIONAL=true` for standalone deployments without gateway connectivity\n","SKILL.md":"---\nname: mission-control\ndescription: \"Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.\"\n---\n\n# Mission Control Agent Skill\n\nMission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.\n\n## Quick Start\n\n**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.\n\n**Auth header:** `x-api-key: <your-api-key>`\n\n**Register + heartbeat in two calls:**\n\n```bash\n# 1. Register\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"register\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"name\": \"My Agent\" }\n  }'\n\n# 2. Heartbeat (repeat every 5 minutes)\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"heartbeat\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"status\": \"online\" }\n  }'\n```\n\n## Authentication\n\nMC supports two auth methods:\n\n| Method | Header | Use Case |\n|--------|--------|----------|\n| API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD |\n| Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |\n\n**Roles (hierarchical):** `viewer` < `operator` < `admin`\n\n- **viewer** — Read-only access (GET endpoints)\n- **operator** — Create/update agents, tasks, skills, use adapters\n- **admin** — Full access including user management\n\nAPI key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.\n\nAgents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.\n\n## Agent Lifecycle\n\n```\nregister → heartbeat (5m interval) → fetch assignments → report task status → disconnect\n```\n\nAll lifecycle actions go through the adapter protocol (`POST /api/adapters`).\n\n### 1. Register\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"register\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"name\": \"My Agent\",\n    \"metadata\": { \"version\": \"1.0\", \"capabilities\": [\"code\", \"review\"] }\n  }\n}\n```\n\n### 2. Heartbeat\n\nSend every ~5 minutes to stay marked as online.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"heartbeat\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"status\": \"online\",\n    \"metrics\": { \"tasks_completed\": 5, \"uptime_seconds\": 3600 }\n  }\n}\n```\n\n### 3. Fetch Assignments\n\nReturns up to 5 pending tasks sorted by priority (critical → low), then due date.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"assignments\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n**Response:**\n\n```json\n{\n  \"assignments\": [\n    { \"taskId\": \"42\", \"description\": \"Fix login bug\\nUsers cannot log in with SSO\", \"priority\": 1 }\n  ],\n  \"framework\": \"generic\"\n}\n```\n\n### 4. Report Task Progress\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"report\",\n  \"payload\": {\n    \"taskId\": \"42\",\n    \"agentId\": \"my-agent-01\",\n    \"progress\": 75,\n    \"status\": \"in_progress\",\n    \"output\": \"Fixed SSO handler, running tests...\"\n  }\n}\n```\n\n`status` values: `in_progress`, `done`, `failed`, `blocked`\n\n### 5. Disconnect\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"disconnect\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n## Core API Reference\n\n### Agents — `/api/agents`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` |\n| POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` |\n| PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |\n\n**GET response shape:**\n\n```json\n{\n  \"agents\": [{\n    \"id\": 1, \"name\": \"scout\", \"role\": \"researcher\", \"status\": \"online\",\n    \"config\": {}, \"taskStats\": { \"total\": 10, \"assigned\": 2, \"in_progress\": 1, \"completed\": 7 }\n  }],\n  \"total\": 1, \"page\": 1, \"limit\": 50\n}\n```\n\n### Tasks — `/api/tasks`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` |\n| POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` |\n| PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |\n\n**Priority values:** `critical`, `high`, `medium`, `low`\n\n**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`\n\nNote: Moving a task to `done` via PUT requires an Aegis quality review approval.\n\n**POST response:**\n\n```json\n{\n  \"task\": {\n    \"id\": 42, \"title\": \"Fix login bug\", \"status\": \"assigned\",\n    \"priority\": \"high\", \"assigned_to\": \"scout\", \"ticket_ref\": \"GEN-001\",\n    \"tags\": [\"bug\"], \"metadata\": {}\n  }\n}\n```\n\n### Skills — `/api/skills`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List all skills across roots |\n| GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content |\n| GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill |\n| POST | operator | Create/upsert skill. Body: `{ source, name, content }` |\n| PUT | operator | Update skill content. Body: `{ source, name, content }` |\n| DELETE `?source=...&name=...` | operator | Delete a skill |\n\n**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`\n\n### Status — `/api/status`\n\n| Action | Min Role | Description |\n|--------|----------|-------------|\n| GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |\n| GET `?action=dashboard` | viewer | Aggregated dashboard data with DB stats |\n| GET `?action=gateway` | viewer | Gateway process status and port check |\n| GET `?action=models` | viewer | Available AI models (catalog + local Ollama) |\n| GET `?action=health` | viewer | Health checks (gateway, disk, memory) |\n| GET `?action=capabilities` | viewer | Feature flags: gateway reachable, Claude home, subscriptions |\n\n### Adapters — `/api/adapters`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List available framework adapter names |\n| POST | operator | Execute adapter action (see Agent Lifecycle above) |\n\n## Framework Adapter Protocol\n\nAll agent lifecycle operations use a single endpoint:\n\n```\nPOST /api/adapters\nContent-Type: application/json\nx-api-key: <key>\n\n{\n  \"framework\": \"<adapter-name>\",\n  \"action\": \"<action>\",\n  \"payload\": { ... }\n}\n```\n\n**Available frameworks:** `generic`, `openclaw`, `crewai`, `langgraph`, `autogen`, `claude-sdk`\n\n**Available actions:** `register`, `heartbeat`, `report`, `assignments`, `disconnect`\n\nAll adapters implement the same `FrameworkAdapter` interface — choose the one matching your agent framework, or use `generic` as a universal fallback.\n\n**Payload shapes by action:**\n\n| Action | Required Fields | Optional Fields |\n|--------|----------------|-----------------|\n| `register` | `agentId`, `name` | `metadata` |\n| `heartbeat` | `agentId` | `status`, `metrics` |\n| `report` | `taskId`, `agentId` | `progress`, `status`, `output` |\n| `assignments` | `agentId` | — |\n| `disconnect` | `agentId` | — |\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `API_KEY` | — | API key for agent/script authentication |\n| `OPENCLAW_GATEWAY_HOST` | `127.0.0.1` | Gateway host address |\n| `OPENCLAW_GATEWAY_PORT` | `18789` | Gateway port |\n| `OPENCLAW_STATE_DIR` | `~/.openclaw` | OpenClaw state directory |\n| `OPENCLAW_CONFIG_PATH` | `<state-dir>/openclaw.json` | Gateway config file path |\n| `MC_CLAUDE_HOME` | `~/.claude` | Claude home directory |\n\n## Real-Time Events\n\nMC broadcasts events via SSE (`/api/events`) and WebSocket. Key event types:\n\n- `agent.created`, `agent.updated`, `agent.status_changed`\n- `task.created`, `task.updated`, `task.status_changed`\n\nSubscribe to SSE for live dashboard updates when building integrations.\n","tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json":"{\n  \"agent:research-bot:main\": {\n    \"sessionId\": \"sess-research-main\",\n    \"updatedAt\": 4102444700000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"research\",\n    \"model\": {\n      \"primary\": \"anthropic/claude-sonnet-4-5\"\n    },\n    \"totalTokens\": 12800,\n    \"inputTokens\": 8100,\n    \"outputTokens\": 4700,\n    \"contextTokens\": 64000\n  }\n}\n","tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json":"{\n  \"agent:engineering-bot:main\": {\n    \"sessionId\": \"sess-eng-main\",\n    \"updatedAt\": 4102444800000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"engineering\",\n    \"model\": {\n      \"primary\": \"openai/gpt-5\"\n    },\n    \"totalTokens\": 24500,\n    \"inputTokens\": 16100,\n    \"outputTokens\": 8400,\n    \"contextTokens\": 120000\n  }\n}\n","skills/mission-control-installer/skill.json":"{\n  \"name\": \"mission-control-installer\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Install and configure Mission Control — the OpenClaw agent orchestration dashboard\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"fs\"],\n  \"parameters\": {\n    \"deployment_mode\": {\n      \"type\": \"string\",\n      \"enum\": [\"docker\", \"local\"],\n      \"default\": \"docker\",\n      \"description\": \"How to deploy Mission Control\"\n    },\n    \"port\": {\n      \"type\": \"number\",\n      \"default\": 3000,\n      \"description\": \"Port for the Mission Control dashboard\"\n    },\n    \"install_dir\": {\n      \"type\": \"string\",\n      \"default\": \"\",\n      \"description\": \"Installation directory (defaults to ./mission-control)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"dashboard\", \"installer\", \"docker\"]\n}\n"},"items":[{"name":"llms.txt","path":"public/llms.txt","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/public/llms.txt","title":"public - LLM Index & Context Digest","category":"root-instruction","format":"text","content":"# Mission Control\n\n> Open-source dashboard for AI agent orchestration.\n\nMission Control is a self-hosted dashboard for managing AI agent fleets. It provides task dispatch, cost tracking, quality review gates, recurring task scheduling, and multi-agent coordination — all powered by SQLite with zero external dependencies.\n\n## Key Features\n- Agent management with full lifecycle (register, heartbeat, wake, retire)\n- Kanban task board with priorities, assignments, and comments\n- Task queue with atomic claiming and priority-based dispatch\n- Auto-dispatch with model routing (Opus/Sonnet/Haiku by task complexity)\n- Aegis quality review gates for task sign-off\n- Real-time monitoring via WebSocket + SSE\n- Token usage and cost tracking with per-model breakdowns\n- Natural language recurring tasks with cron scheduling\n- MCP server with 35+ tools for agent integration\n- CLI for headless/scripted usage\n- Role-based access control (viewer, operator, admin)\n- REST API with OpenAPI spec\n\n## Stack\nNext.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS\n\n## Links\n- Source: https://github.com/builderz-labs/mission-control\n- Landing page: https://mc.builderz.dev\n- License: MIT\n\n## llms-full.txt\nFor the complete API reference and integration guide, see docs/cli-agent-control.md in the repository.\n","isInternal":false,"tokens":291,"sizeBytes":1315},{"name":"SKILL.md","path":"SKILL.md","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/SKILL.md","title":"mission-control","category":"anthropic-skill","format":"markdown","content":"---\nname: mission-control\ndescription: \"Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.\"\n---\n\n# Mission Control Agent Skill\n\nMission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.\n\n## Quick Start\n\n**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.\n\n**Auth header:** `x-api-key: <your-api-key>`\n\n**Register + heartbeat in two calls:**\n\n```bash\n# 1. Register\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"register\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"name\": \"My Agent\" }\n  }'\n\n# 2. Heartbeat (repeat every 5 minutes)\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"heartbeat\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"status\": \"online\" }\n  }'\n```\n\n## Authentication\n\nMC supports two auth methods:\n\n| Method | Header | Use Case |\n|--------|--------|----------|\n| API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD |\n| Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |\n\n**Roles (hierarchical):** `viewer` < `operator` < `admin`\n\n- **viewer** — Read-only access (GET endpoints)\n- **operator** — Create/update agents, tasks, skills, use adapters\n- **admin** — Full access including user management\n\nAPI key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.\n\nAgents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.\n\n## Agent Lifecycle\n\n```\nregister → heartbeat (5m interval) → fetch assignments → report task status → disconnect\n```\n\nAll lifecycle actions go through the adapter protocol (`POST /api/adapters`).\n\n### 1. Register\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"register\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"name\": \"My Agent\",\n    \"metadata\": { \"version\": \"1.0\", \"capabilities\": [\"code\", \"review\"] }\n  }\n}\n```\n\n### 2. Heartbeat\n\nSend every ~5 minutes to stay marked as online.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"heartbeat\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"status\": \"online\",\n    \"metrics\": { \"tasks_completed\": 5, \"uptime_seconds\": 3600 }\n  }\n}\n```\n\n### 3. Fetch Assignments\n\nReturns up to 5 pending tasks sorted by priority (critical → low), then due date.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"assignments\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n**Response:**\n\n```json\n{\n  \"assignments\": [\n    { \"taskId\": \"42\", \"description\": \"Fix login bug\\nUsers cannot log in with SSO\", \"priority\": 1 }\n  ],\n  \"framework\": \"generic\"\n}\n```\n\n### 4. Report Task Progress\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"report\",\n  \"payload\": {\n    \"taskId\": \"42\",\n    \"agentId\": \"my-agent-01\",\n    \"progress\": 75,\n    \"status\": \"in_progress\",\n    \"output\": \"Fixed SSO handler, running tests...\"\n  }\n}\n```\n\n`status` values: `in_progress`, `done`, `failed`, `blocked`\n\n### 5. Disconnect\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"disconnect\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n## Core API Reference\n\n### Agents — `/api/agents`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` |\n| POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` |\n| PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |\n\n**GET response shape:**\n\n```json\n{\n  \"agents\": [{\n    \"id\": 1, \"name\": \"scout\", \"role\": \"researcher\", \"status\": \"online\",\n    \"config\": {}, \"taskStats\": { \"total\": 10, \"assigned\": 2, \"in_progress\": 1, \"completed\": 7 }\n  }],\n  \"total\": 1, \"page\": 1, \"limit\": 50\n}\n```\n\n### Tasks — `/api/tasks`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` |\n| POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` |\n| PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |\n\n**Priority values:** `critical`, `high`, `medium`, `low`\n\n**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`\n\nNote: Moving a task to `done` via PUT requires an Aegis quality review approval.\n\n**POST response:**\n\n```json\n{\n  \"task\": {\n    \"id\": 42, \"title\": \"Fix login bug\", \"status\": \"assigned\",\n    \"priority\": \"high\", \"assigned_to\": \"scout\", \"ticket_ref\": \"GEN-001\",\n    \"tags\": [\"bug\"], \"metadata\": {}\n  }\n}\n```\n\n### Skills — `/api/skills`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List all skills across roots |\n| GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content |\n| GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill |\n| POST | operator | Create/upsert skill. Body: `{ source, name, content }` |\n| PUT | operator | Update skill content. Body: `{ source, name, content }` |\n| DELETE `?source=...&name=...` | operator | Delete a skill |\n\n**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`\n\n### Status — `/api/status`\n\n| Action | Min Role | Description |\n|--------|----------|-------------|\n| GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |\n| GET `?action=dashboard` | viewer | Aggregated dashboard data with DB stats |\n| GET `?action=gateway` | viewer | Gateway process status and port check |\n| GET `?action=models` | viewer | Available AI models (catalog + local Ollama) |\n| GET `?action=health` | viewer | Health checks (gateway, disk, memory) |\n| GET `?action=capabilities` | viewer | Feature flags: gateway reachable, Claude home, subscriptions |\n\n### Adapters — `/api/adapters`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List available framework adapter names |\n| POST | operator | Execute adapter action (see Agent Lifecycle above) |\n\n## Framework Adapter Protocol\n\nAll agent lifecycle operations use a single endpoint:\n\n```\nPOST /api/adapters\nContent-Type: application/json\nx-api-key: <key>\n\n{\n  \"framework\": \"<adapter-name>\",\n  \"action\": \"<action>\",\n  \"payload\": { ... }\n}\n```\n\n**Available frameworks:** `generic`, `openclaw`, `crewai`, `langgraph`, `autogen`, `claude-sdk`\n\n**Available actions:** `register`, `heartbeat`, `report`, `assignments`, `disconnect`\n\nAll adapters implement the same `FrameworkAdapter` interface — choose the one matching your agent framework, or use `generic` as a universal fallback.\n\n**Payload shapes by action:**\n\n| Action | Required Fields | Optional Fields |\n|--------|----------------|-----------------|\n| `register` | `agentId`, `name` | `metadata` |\n| `heartbeat` | `agentId` | `status`, `metrics` |\n| `report` | `taskId`, `agentId` | `progress`, `status`, `output` |\n| `assignments` | `agentId` | — |\n| `disconnect` | `agentId` | — |\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `API_KEY` | — | API key for agent/script authentication |\n| `OPENCLAW_GATEWAY_HOST` | `127.0.0.1` | Gateway host address |\n| `OPENCLAW_GATEWAY_PORT` | `18789` | Gateway port |\n| `OPENCLAW_STATE_DIR` | `~/.openclaw` | OpenClaw state directory |\n| `OPENCLAW_CONFIG_PATH` | `<state-dir>/openclaw.json` | Gateway config file path |\n| `MC_CLAUDE_HOME` | `~/.claude` | Claude home directory |\n\n## Real-Time Events\n\nMC broadcasts events via SSE (`/api/events`) and WebSocket. Key event types:\n\n- `agent.created`, `agent.updated`, `agent.status_changed`\n- `task.created`, `task.updated`, `task.status_changed`\n\nSubscribe to SSE for live dashboard updates when building integrations.\n","frontmatter":{"name":"mission-control","description":"Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs."},"isInternal":false,"tokens":2294,"sizeBytes":8401},{"name":"README.md","path":"skills/mission-control-installer/README.md","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/skills/mission-control-installer/README.md","title":"Mission-control-installer Skill","category":"anthropic-skill","format":"markdown","content":"# Mission Control Installer Skill\n\nInstall and configure Mission Control on any Linux or macOS system.\n\n## What This Skill Does\n\n1. Detects the target OS and available runtimes (Docker or Node.js 20+)\n2. Clones or updates the Mission Control repository\n3. Generates a secure `.env` with random credentials\n4. Starts the dashboard via Docker Compose or local Node.js\n5. Runs an OpenClaw fleet health check (cleans stale PIDs, old logs, validates gateway)\n6. Prints the access URL and admin credentials\n\n## Usage\n\nRun the installer script:\n\n```bash\n# Auto-detect deployment mode (prefers Docker)\nbash install.sh\n\n# Force Docker deployment\nbash install.sh --docker\n\n# Force local deployment (Node.js + pnpm)\nbash install.sh --local\n\n# Custom port\nbash install.sh --port 8080\n\n# Skip OpenClaw fleet check\nbash install.sh --skip-openclaw\n```\n\nOr as a one-liner:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/builderz-labs/mission-control/main/install.sh | bash\n```\n\n## Prerequisites\n\n- **Docker mode**: Docker Engine with Docker Compose v2\n- **Local mode**: Node.js 20+, pnpm (auto-installed via corepack if missing)\n- **Both**: git (to clone the repository)\n\n## Post-Install\n\nAfter installation:\n\n1. Open `http://localhost:3000` (or your configured port)\n2. Log in with the credentials printed by the installer (also in `.env`)\n3. Configure your OpenClaw gateway connection in Settings\n4. Register agents via the Agents panel\n\n## Environment Configuration\n\nThe installer generates a `.env` from `.env.example` with secure random values for:\n\n- `AUTH_PASS` — 24-character random password\n- `API_KEY` — 32-character hex API key\n- `AUTH_SECRET` — 32-character session secret\n\nTo regenerate credentials independently:\n\n```bash\nbash scripts/generate-env.sh --force\n```\n","isInternal":false,"tokens":429,"sizeBytes":1774},{"name":"README.md","path":"skills/mission-control-manage/README.md","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/skills/mission-control-manage/README.md","title":"Mission-control-manage Skill","category":"anthropic-skill","format":"markdown","content":"# Mission Control Management Skill\n\nManage a running Mission Control instance programmatically.\n\n## API Endpoints\n\nAll endpoints require authentication via `x-api-key` header or session cookie.\n\n### Health Check\n\n```bash\n# Quick health status\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health\n\n# Response: { \"status\": \"healthy\", \"version\": \"1.3.0\", \"checks\": [...] }\n```\n\nPossible statuses: `healthy`, `degraded`, `unhealthy`\n\n### System Overview\n\n```bash\n# Full system status (memory, disk, sessions, processes)\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=overview\n```\n\n### Diagnostics (Admin Only)\n\n```bash\n# Comprehensive diagnostics including security posture\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/diagnostics\n\n# Response includes:\n# - system: node version, platform, memory, docker detection\n# - security: score (0-100) with individual checks\n# - database: size, WAL mode, migration version\n# - gateway: configured, reachable, host/port\n# - agents: total count, by status\n# - retention: configured retention policies\n```\n\n### Check for Updates\n\n```bash\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/check\n\n# Response: { \"updateAvailable\": true, \"currentVersion\": \"1.3.0\", \"latestVersion\": \"1.4.0\", ... }\n```\n\n### Trigger Update\n\n```bash\n# Apply available update (bare-metal only; Docker returns instructions)\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/update\n```\n\n### Database Backup\n\n```bash\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/backup\n```\n\n### Agent Management\n\n```bash\n# List agents\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/agents\n\n# Register an agent\ncurl -X POST -H \"x-api-key: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-agent\", \"type\": \"openclaw\"}' \\\n  http://localhost:3000/api/agents\n```\n\n## Station Doctor\n\nFor local diagnostics without API access:\n\n```bash\nbash scripts/station-doctor.sh\n```\n\nChecks: Docker health, port availability, disk space, DB integrity, backup age.\n\n## Common Workflows\n\n### Automated Health Monitoring\n\n```bash\n# Check health and alert if unhealthy\nSTATUS=$(curl -sf -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health | jq -r '.status')\nif [ \"$STATUS\" != \"healthy\" ]; then\n  echo \"ALERT: Mission Control is $STATUS\"\nfi\n```\n\n### Pre-Upgrade Checklist\n\n1. Check for updates: `GET /api/releases/check`\n2. Create backup: `POST /api/backup`\n3. Run diagnostics: `GET /api/diagnostics` (verify no active tasks)\n4. Apply update: `POST /api/releases/update` (or `docker pull` + recreate for Docker)\n5. Verify health: `GET /api/status?action=health`\n","isInternal":false,"tokens":727,"sizeBytes":2691},{"name":"sessions.json","path":"tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json","title":"Sessions Skill","category":"anthropic-skill","format":"json","content":"{\n  \"agent:engineering-bot:main\": {\n    \"sessionId\": \"sess-eng-main\",\n    \"updatedAt\": 4102444800000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"engineering\",\n    \"model\": {\n      \"primary\": \"openai/gpt-5\"\n    },\n    \"totalTokens\": 24500,\n    \"inputTokens\": 16100,\n    \"outputTokens\": 8400,\n    \"contextTokens\": 120000\n  }\n}\n","frontmatter":{"agent:engineering-bot:main":{"sessionId":"sess-eng-main","updatedAt":4102444800000,"chatType":"dm","lastChannel":"engineering","model":{"primary":"openai/gpt-5"},"totalTokens":24500,"inputTokens":16100,"outputTokens":8400,"contextTokens":120000}},"isInternal":false,"tokens":105,"sizeBytes":324},{"name":"sessions.json","path":"tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json","title":"Sessions Skill","category":"anthropic-skill","format":"json","content":"{\n  \"agent:research-bot:main\": {\n    \"sessionId\": \"sess-research-main\",\n    \"updatedAt\": 4102444700000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"research\",\n    \"model\": {\n      \"primary\": \"anthropic/claude-sonnet-4-5\"\n    },\n    \"totalTokens\": 12800,\n    \"inputTokens\": 8100,\n    \"outputTokens\": 4700,\n    \"contextTokens\": 64000\n  }\n}\n","frontmatter":{"agent:research-bot:main":{"sessionId":"sess-research-main","updatedAt":4102444700000,"chatType":"dm","lastChannel":"research","model":{"primary":"anthropic/claude-sonnet-4-5"},"totalTokens":12800,"inputTokens":8100,"outputTokens":4700,"contextTokens":64000}},"isInternal":false,"tokens":112,"sizeBytes":336},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# Mission Control\n\nOpen-source dashboard for AI agent orchestration. Manage agent fleets, track tasks, monitor costs, and orchestrate workflows.\n\n**Stack**: Next.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS 4, Zustand, pnpm\n\n## Prerequisites\n\n- Node.js >= 22 (LTS recommended; 24.x also supported)\n- pnpm (`corepack enable` to auto-install)\n\n## Setup\n\n```bash\npnpm install\npnpm build\n```\n\nSecrets (AUTH_SECRET, API_KEY) auto-generate on first run if not set.\nVisit `http://localhost:3000/setup` to create an admin account, or set `AUTH_USER`/`AUTH_PASS` in `.env` for headless/CI seeding.\n\n## Run\n\n```bash\npnpm dev              # development (localhost:3000)\npnpm start            # production\nnode .next/standalone/server.js   # standalone mode (after build)\n```\n\n## Docker\n\n```bash\ndocker compose up                 # zero-config\nbash install.sh --docker          # full guided setup\n```\n\nProduction hardening: `docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d`\n\n## Tests\n\n```bash\npnpm test             # unit tests (vitest)\npnpm test:e2e         # end-to-end (playwright)\npnpm typecheck        # tsc --noEmit\npnpm lint             # eslint\npnpm test:all         # lint + typecheck + test + build + e2e\n```\n\n## Key Directories\n\n```\nsrc/app/          Next.js pages + API routes (App Router)\nsrc/components/   UI panels and shared components\nsrc/lib/          Core logic, database, utilities\n.data/            SQLite database + runtime state (gitignored)\nscripts/          Install, deploy, diagnostics scripts\ndocs/             Documentation and guides\n```\n\nPath alias: `@/*` maps to `./src/*`\n\n## Data Directory\n\nSet `MISSION_CONTROL_DATA_DIR` env var to change the data location (defaults to `.data/`).\nDatabase path: defaults to `<MISSION_CONTROL_DATA_DIR>/mission-control.db`.\n\n## Conventions\n\n- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`)\n- **No AI attribution**: Never add `Co-Authored-By` or similar trailers to commits\n- **Package manager**: pnpm only (no npm/yarn)\n- **Icons**: No icon libraries -- use raw text/emoji in components\n- **Standalone output**: `next.config.js` sets `output: 'standalone'`\n\n## Agent Control Interfaces\n\nMission Control provides three interfaces for autonomous agents:\n\n### MCP Server (recommended for agents)\n```bash\n# Add to any Claude Code agent:\nclaude mcp add mission-control -- node /path/to/mission-control/scripts/mc-mcp-server.cjs\n\n# Environment config:\nMC_URL=http://127.0.0.1:3000 MC_API_KEY=<key>\n```\n35 tools: agents, tasks, sessions, memory, soul, comments, tokens, skills, cron, status.\nSee `docs/cli-agent-control.md` for full tool list.\n\n### CLI\n```bash\npnpm mc agents list --json\npnpm mc tasks queue --agent Aegis --max-capacity 2 --json\npnpm mc events watch --types agent,task\n```\n\n### REST API\nOpenAPI spec: `openapi.json`. Interactive docs at `/docs` when running.\n\n## Common Pitfalls\n\n- **Standalone mode**: Use `node .next/standalone/server.js`, not `pnpm start` (which requires full `node_modules`)\n- **better-sqlite3**: Native addon -- needs rebuild when switching Node versions (`pnpm rebuild better-sqlite3`)\n- **AUTH_PASS with `#`**: Quote it (`AUTH_PASS=\"my#pass\"`) or use `AUTH_PASS_B64` (base64-encoded)\n- **Gateway optional**: Set `NEXT_PUBLIC_GATEWAY_OPTIONAL=true` for standalone deployments without gateway connectivity\n","isInternal":false,"tokens":881,"sizeBytes":3390},{"name":"skill.json","path":"skills/mission-control-installer/skill.json","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/skills/mission-control-installer/skill.json","title":"mission-control-installer","category":"skill-json","format":"json","content":"{\n  \"name\": \"mission-control-installer\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Install and configure Mission Control — the OpenClaw agent orchestration dashboard\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"fs\"],\n  \"parameters\": {\n    \"deployment_mode\": {\n      \"type\": \"string\",\n      \"enum\": [\"docker\", \"local\"],\n      \"default\": \"docker\",\n      \"description\": \"How to deploy Mission Control\"\n    },\n    \"port\": {\n      \"type\": \"number\",\n      \"default\": 3000,\n      \"description\": \"Port for the Mission Control dashboard\"\n    },\n    \"install_dir\": {\n      \"type\": \"string\",\n      \"default\": \"\",\n      \"description\": \"Installation directory (defaults to ./mission-control)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"dashboard\", \"installer\", \"docker\"]\n}\n","frontmatter":{"name":"mission-control-installer","version":"1.0.0","description":"Install and configure Mission Control — the OpenClaw agent orchestration dashboard","author":"Builderz Labs","license":"MIT","tools":["exec","fs"],"parameters":{"deployment_mode":{"type":"string","enum":["docker","local"],"default":"docker","description":"How to deploy Mission Control"},"port":{"type":"number","default":3000,"description":"Port for the Mission Control dashboard"},"install_dir":{"type":"string","default":"","description":"Installation directory (defaults to ./mission-control)"}},"tags":["mission-control","dashboard","installer","docker"]},"isInternal":false,"tokens":204,"sizeBytes":786},{"name":"skill.json","path":"skills/mission-control-manage/skill.json","rawUrl":"https://raw.githubusercontent.com/builderz-labs/mission-control/HEAD/skills/mission-control-manage/skill.json","title":"mission-control-manage","category":"skill-json","format":"json","content":"{\n  \"name\": \"mission-control-manage\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Manage a running Mission Control instance — health checks, diagnostics, upgrades, backups\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"http\"],\n  \"parameters\": {\n    \"base_url\": {\n      \"type\": \"string\",\n      \"default\": \"http://localhost:3000\",\n      \"description\": \"Mission Control base URL\"\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"description\": \"API key for authentication (x-api-key header)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"management\", \"health\", \"upgrade\", \"backup\"]\n}\n","frontmatter":{"name":"mission-control-manage","version":"1.0.0","description":"Manage a running Mission Control instance — health checks, diagnostics, upgrades, backups","author":"Builderz Labs","license":"MIT","tools":["exec","http"],"parameters":{"base_url":{"type":"string","default":"http://localhost:3000","description":"Mission Control base URL"},"api_key":{"type":"string","description":"API key for authentication (x-api-key header)"}},"tags":["mission-control","management","health","upgrade","backup"]},"isInternal":false,"tokens":164,"sizeBytes":605}],"systemPromptSnippet":"<yakaai_skills repo=\"builderz-labs/mission-control\">\n<!-- File: public/llms.txt (Tokens: ~291 | Category: root-instruction) -->\n# Mission Control\n\n> Open-source dashboard for AI agent orchestration.\n\nMission Control is a self-hosted dashboard for managing AI agent fleets. It provides task dispatch, cost tracking, quality review gates, recurring task scheduling, and multi-agent coordination — all powered by SQLite with zero external dependencies.\n\n## Key Features\n- Agent management with full lifecycle (register, heartbeat, wake, retire)\n- Kanban task board with priorities, assignments, and comments\n- Task queue with atomic claiming and priority-based dispatch\n- Auto-dispatch with model routing (Opus/Sonnet/Haiku by task complexity)\n- Aegis quality review gates for task sign-off\n- Real-time monitoring via WebSocket + SSE\n- Token usage and cost tracking with per-model breakdowns\n- Natural language recurring tasks with cron scheduling\n- MCP server with 35+ tools for agent integration\n- CLI for headless/scripted usage\n- Role-based access control (viewer, operator, admin)\n- REST API with OpenAPI spec\n\n## Stack\nNext.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS\n\n## Links\n- Source: https://github.com/builderz-labs/mission-control\n- Landing page: https://mc.builderz.dev\n- License: MIT\n\n## llms-full.txt\nFor the complete API reference and integration guide, see docs/cli-agent-control.md in the repository.\n\n<!-- File: SKILL.md (Tokens: ~2294 | Category: anthropic-skill) -->\n---\nname: mission-control\ndescription: \"Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.\"\n---\n\n# Mission Control Agent Skill\n\nMission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.\n\n## Quick Start\n\n**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.\n\n**Auth header:** `x-api-key: <your-api-key>`\n\n**Register + heartbeat in two calls:**\n\n```bash\n# 1. Register\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"register\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"name\": \"My Agent\" }\n  }'\n\n# 2. Heartbeat (repeat every 5 minutes)\ncurl -X POST http://localhost:3000/api/adapters \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $MC_API_KEY\" \\\n  -d '{\n    \"framework\": \"generic\",\n    \"action\": \"heartbeat\",\n    \"payload\": { \"agentId\": \"my-agent-01\", \"status\": \"online\" }\n  }'\n```\n\n## Authentication\n\nMC supports two auth methods:\n\n| Method | Header | Use Case |\n|--------|--------|----------|\n| API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD |\n| Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |\n\n**Roles (hierarchical):** `viewer` < `operator` < `admin`\n\n- **viewer** — Read-only access (GET endpoints)\n- **operator** — Create/update agents, tasks, skills, use adapters\n- **admin** — Full access including user management\n\nAPI key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.\n\nAgents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.\n\n## Agent Lifecycle\n\n```\nregister → heartbeat (5m interval) → fetch assignments → report task status → disconnect\n```\n\nAll lifecycle actions go through the adapter protocol (`POST /api/adapters`).\n\n### 1. Register\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"register\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"name\": \"My Agent\",\n    \"metadata\": { \"version\": \"1.0\", \"capabilities\": [\"code\", \"review\"] }\n  }\n}\n```\n\n### 2. Heartbeat\n\nSend every ~5 minutes to stay marked as online.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"heartbeat\",\n  \"payload\": {\n    \"agentId\": \"my-agent-01\",\n    \"status\": \"online\",\n    \"metrics\": { \"tasks_completed\": 5, \"uptime_seconds\": 3600 }\n  }\n}\n```\n\n### 3. Fetch Assignments\n\nReturns up to 5 pending tasks sorted by priority (critical → low), then due date.\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"assignments\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n**Response:**\n\n```json\n{\n  \"assignments\": [\n    { \"taskId\": \"42\", \"description\": \"Fix login bug\\nUsers cannot log in with SSO\", \"priority\": 1 }\n  ],\n  \"framework\": \"generic\"\n}\n```\n\n### 4. Report Task Progress\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"report\",\n  \"payload\": {\n    \"taskId\": \"42\",\n    \"agentId\": \"my-agent-01\",\n    \"progress\": 75,\n    \"status\": \"in_progress\",\n    \"output\": \"Fixed SSO handler, running tests...\"\n  }\n}\n```\n\n`status` values: `in_progress`, `done`, `failed`, `blocked`\n\n### 5. Disconnect\n\n```json\n{\n  \"framework\": \"generic\",\n  \"action\": \"disconnect\",\n  \"payload\": { \"agentId\": \"my-agent-01\" }\n}\n```\n\n## Core API Reference\n\n### Agents — `/api/agents`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` |\n| POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` |\n| PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |\n\n**GET response shape:**\n\n```json\n{\n  \"agents\": [{\n    \"id\": 1, \"name\": \"scout\", \"role\": \"researcher\", \"status\": \"online\",\n    \"config\": {}, \"taskStats\": { \"total\": 10, \"assigned\": 2, \"in_progress\": 1, \"completed\": 7 }\n  }],\n  \"total\": 1, \"page\": 1, \"limit\": 50\n}\n```\n\n### Tasks — `/api/tasks`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` |\n| POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` |\n| PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |\n\n**Priority values:** `critical`, `high`, `medium`, `low`\n\n**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`\n\nNote: Moving a task to `done` via PUT requires an Aegis quality review approval.\n\n**POST response:**\n\n```json\n{\n  \"task\": {\n    \"id\": 42, \"title\": \"Fix login bug\", \"status\": \"assigned\",\n    \"priority\": \"high\", \"assigned_to\": \"scout\", \"ticket_ref\": \"GEN-001\",\n    \"tags\": [\"bug\"], \"metadata\": {}\n  }\n}\n```\n\n### Skills — `/api/skills`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List all skills across roots |\n| GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content |\n| GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill |\n| POST | operator | Create/upsert skill. Body: `{ source, name, content }` |\n| PUT | operator | Update skill content. Body: `{ source, name, content }` |\n| DELETE `?source=...&name=...` | operator | Delete a skill |\n\n**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`\n\n### Status — `/api/status`\n\n| Action | Min Role | Description |\n|--------|----------|-------------|\n| GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |\n| GET `?action=dashboard` | viewer | Aggregated dashboard data with DB stats |\n| GET `?action=gateway` | viewer | Gateway process status and port check |\n| GET `?action=models` | viewer | Available AI models (catalog + local Ollama) |\n| GET `?action=health` | viewer | Health checks (gateway, disk, memory) |\n| GET `?action=capabilities` | viewer | Feature flags: gateway reachable, Claude home, subscriptions |\n\n### Adapters — `/api/adapters`\n\n| Method | Min Role | Description |\n|--------|----------|-------------|\n| GET | viewer | List available framework adapter names |\n| POST | operator | Execute adapter action (see Agent Lifecycle above) |\n\n## Framework Adapter Protocol\n\nAll agent lifecycle operations use a single endpoint:\n\n```\nPOST /api/adapters\nContent-Type: application/json\nx-api-key: <key>\n\n{\n  \"framework\": \"<adapter-name>\",\n  \"action\": \"<action>\",\n  \"payload\": { ... }\n}\n```\n\n**Available frameworks:** `generic`, `openclaw`, `crewai`, `langgraph`, `autogen`, `claude-sdk`\n\n**Available actions:** `register`, `heartbeat`, `report`, `assignments`, `disconnect`\n\nAll adapters implement the same `FrameworkAdapter` interface — choose the one matching your agent framework, or use `generic` as a universal fallback.\n\n**Payload shapes by action:**\n\n| Action | Required Fields | Optional Fields |\n|--------|----------------|-----------------|\n| `register` | `agentId`, `name` | `metadata` |\n| `heartbeat` | `agentId` | `status`, `metrics` |\n| `report` | `taskId`, `agentId` | `progress`, `status`, `output` |\n| `assignments` | `agentId` | — |\n| `disconnect` | `agentId` | — |\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `API_KEY` | — | API key for agent/script authentication |\n| `OPENCLAW_GATEWAY_HOST` | `127.0.0.1` | Gateway host address |\n| `OPENCLAW_GATEWAY_PORT` | `18789` | Gateway port |\n| `OPENCLAW_STATE_DIR` | `~/.openclaw` | OpenClaw state directory |\n| `OPENCLAW_CONFIG_PATH` | `<state-dir>/openclaw.json` | Gateway config file path |\n| `MC_CLAUDE_HOME` | `~/.claude` | Claude home directory |\n\n## Real-Time Events\n\nMC broadcasts events via SSE (`/api/events`) and WebSocket. Key event types:\n\n- `agent.created`, `agent.updated`, `agent.status_changed`\n- `task.created`, `task.updated`, `task.status_changed`\n\nSubscribe to SSE for live dashboard updates when building integrations.\n\n<!-- File: skills/mission-control-installer/README.md (Tokens: ~429 | Category: anthropic-skill) -->\n# Mission Control Installer Skill\n\nInstall and configure Mission Control on any Linux or macOS system.\n\n## What This Skill Does\n\n1. Detects the target OS and available runtimes (Docker or Node.js 20+)\n2. Clones or updates the Mission Control repository\n3. Generates a secure `.env` with random credentials\n4. Starts the dashboard via Docker Compose or local Node.js\n5. Runs an OpenClaw fleet health check (cleans stale PIDs, old logs, validates gateway)\n6. Prints the access URL and admin credentials\n\n## Usage\n\nRun the installer script:\n\n```bash\n# Auto-detect deployment mode (prefers Docker)\nbash install.sh\n\n# Force Docker deployment\nbash install.sh --docker\n\n# Force local deployment (Node.js + pnpm)\nbash install.sh --local\n\n# Custom port\nbash install.sh --port 8080\n\n# Skip OpenClaw fleet check\nbash install.sh --skip-openclaw\n```\n\nOr as a one-liner:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/builderz-labs/mission-control/main/install.sh | bash\n```\n\n## Prerequisites\n\n- **Docker mode**: Docker Engine with Docker Compose v2\n- **Local mode**: Node.js 20+, pnpm (auto-installed via corepack if missing)\n- **Both**: git (to clone the repository)\n\n## Post-Install\n\nAfter installation:\n\n1. Open `http://localhost:3000` (or your configured port)\n2. Log in with the credentials printed by the installer (also in `.env`)\n3. Configure your OpenClaw gateway connection in Settings\n4. Register agents via the Agents panel\n\n## Environment Configuration\n\nThe installer generates a `.env` from `.env.example` with secure random values for:\n\n- `AUTH_PASS` — 24-character random password\n- `API_KEY` — 32-character hex API key\n- `AUTH_SECRET` — 32-character session secret\n\nTo regenerate credentials independently:\n\n```bash\nbash scripts/generate-env.sh --force\n```\n\n<!-- File: skills/mission-control-manage/README.md (Tokens: ~727 | Category: anthropic-skill) -->\n# Mission Control Management Skill\n\nManage a running Mission Control instance programmatically.\n\n## API Endpoints\n\nAll endpoints require authentication via `x-api-key` header or session cookie.\n\n### Health Check\n\n```bash\n# Quick health status\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health\n\n# Response: { \"status\": \"healthy\", \"version\": \"1.3.0\", \"checks\": [...] }\n```\n\nPossible statuses: `healthy`, `degraded`, `unhealthy`\n\n### System Overview\n\n```bash\n# Full system status (memory, disk, sessions, processes)\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=overview\n```\n\n### Diagnostics (Admin Only)\n\n```bash\n# Comprehensive diagnostics including security posture\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/diagnostics\n\n# Response includes:\n# - system: node version, platform, memory, docker detection\n# - security: score (0-100) with individual checks\n# - database: size, WAL mode, migration version\n# - gateway: configured, reachable, host/port\n# - agents: total count, by status\n# - retention: configured retention policies\n```\n\n### Check for Updates\n\n```bash\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/check\n\n# Response: { \"updateAvailable\": true, \"currentVersion\": \"1.3.0\", \"latestVersion\": \"1.4.0\", ... }\n```\n\n### Trigger Update\n\n```bash\n# Apply available update (bare-metal only; Docker returns instructions)\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/releases/update\n```\n\n### Database Backup\n\n```bash\ncurl -X POST -H \"x-api-key: $API_KEY\" http://localhost:3000/api/backup\n```\n\n### Agent Management\n\n```bash\n# List agents\ncurl -H \"x-api-key: $API_KEY\" http://localhost:3000/api/agents\n\n# Register an agent\ncurl -X POST -H \"x-api-key: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-agent\", \"type\": \"openclaw\"}' \\\n  http://localhost:3000/api/agents\n```\n\n## Station Doctor\n\nFor local diagnostics without API access:\n\n```bash\nbash scripts/station-doctor.sh\n```\n\nChecks: Docker health, port availability, disk space, DB integrity, backup age.\n\n## Common Workflows\n\n### Automated Health Monitoring\n\n```bash\n# Check health and alert if unhealthy\nSTATUS=$(curl -sf -H \"x-api-key: $API_KEY\" http://localhost:3000/api/status?action=health | jq -r '.status')\nif [ \"$STATUS\" != \"healthy\" ]; then\n  echo \"ALERT: Mission Control is $STATUS\"\nfi\n```\n\n### Pre-Upgrade Checklist\n\n1. Check for updates: `GET /api/releases/check`\n2. Create backup: `POST /api/backup`\n3. Run diagnostics: `GET /api/diagnostics` (verify no active tasks)\n4. Apply update: `POST /api/releases/update` (or `docker pull` + recreate for Docker)\n5. Verify health: `GET /api/status?action=health`\n\n<!-- File: tests/fixtures/openclaw/agents/engineering-bot/sessions/sessions.json (Tokens: ~105 | Category: anthropic-skill) -->\n{\n  \"agent:engineering-bot:main\": {\n    \"sessionId\": \"sess-eng-main\",\n    \"updatedAt\": 4102444800000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"engineering\",\n    \"model\": {\n      \"primary\": \"openai/gpt-5\"\n    },\n    \"totalTokens\": 24500,\n    \"inputTokens\": 16100,\n    \"outputTokens\": 8400,\n    \"contextTokens\": 120000\n  }\n}\n\n<!-- File: tests/fixtures/openclaw/agents/research-bot/sessions/sessions.json (Tokens: ~112 | Category: anthropic-skill) -->\n{\n  \"agent:research-bot:main\": {\n    \"sessionId\": \"sess-research-main\",\n    \"updatedAt\": 4102444700000,\n    \"chatType\": \"dm\",\n    \"lastChannel\": \"research\",\n    \"model\": {\n      \"primary\": \"anthropic/claude-sonnet-4-5\"\n    },\n    \"totalTokens\": 12800,\n    \"inputTokens\": 8100,\n    \"outputTokens\": 4700,\n    \"contextTokens\": 64000\n  }\n}\n\n<!-- File: CLAUDE.md (Tokens: ~881 | Category: claude-rule) -->\n# Mission Control\n\nOpen-source dashboard for AI agent orchestration. Manage agent fleets, track tasks, monitor costs, and orchestrate workflows.\n\n**Stack**: Next.js 16, React 19, TypeScript 5, SQLite (better-sqlite3), Tailwind CSS 4, Zustand, pnpm\n\n## Prerequisites\n\n- Node.js >= 22 (LTS recommended; 24.x also supported)\n- pnpm (`corepack enable` to auto-install)\n\n## Setup\n\n```bash\npnpm install\npnpm build\n```\n\nSecrets (AUTH_SECRET, API_KEY) auto-generate on first run if not set.\nVisit `http://localhost:3000/setup` to create an admin account, or set `AUTH_USER`/`AUTH_PASS` in `.env` for headless/CI seeding.\n\n## Run\n\n```bash\npnpm dev              # development (localhost:3000)\npnpm start            # production\nnode .next/standalone/server.js   # standalone mode (after build)\n```\n\n## Docker\n\n```bash\ndocker compose up                 # zero-config\nbash install.sh --docker          # full guided setup\n```\n\nProduction hardening: `docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d`\n\n## Tests\n\n```bash\npnpm test             # unit tests (vitest)\npnpm test:e2e         # end-to-end (playwright)\npnpm typecheck        # tsc --noEmit\npnpm lint             # eslint\npnpm test:all         # lint + typecheck + test + build + e2e\n```\n\n## Key Directories\n\n```\nsrc/app/          Next.js pages + API routes (App Router)\nsrc/components/   UI panels and shared components\nsrc/lib/          Core logic, database, utilities\n.data/            SQLite database + runtime state (gitignored)\nscripts/          Install, deploy, diagnostics scripts\ndocs/             Documentation and guides\n```\n\nPath alias: `@/*` maps to `./src/*`\n\n## Data Directory\n\nSet `MISSION_CONTROL_DATA_DIR` env var to change the data location (defaults to `.data/`).\nDatabase path: defaults to `<MISSION_CONTROL_DATA_DIR>/mission-control.db`.\n\n## Conventions\n\n- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`)\n- **No AI attribution**: Never add `Co-Authored-By` or similar trailers to commits\n- **Package manager**: pnpm only (no npm/yarn)\n- **Icons**: No icon libraries -- use raw text/emoji in components\n- **Standalone output**: `next.config.js` sets `output: 'standalone'`\n\n## Agent Control Interfaces\n\nMission Control provides three interfaces for autonomous agents:\n\n### MCP Server (recommended for agents)\n```bash\n# Add to any Claude Code agent:\nclaude mcp add mission-control -- node /path/to/mission-control/scripts/mc-mcp-server.cjs\n\n# Environment config:\nMC_URL=http://127.0.0.1:3000 MC_API_KEY=<key>\n```\n35 tools: agents, tasks, sessions, memory, soul, comments, tokens, skills, cron, status.\nSee `docs/cli-agent-control.md` for full tool list.\n\n### CLI\n```bash\npnpm mc agents list --json\npnpm mc tasks queue --agent Aegis --max-capacity 2 --json\npnpm mc events watch --types agent,task\n```\n\n### REST API\nOpenAPI spec: `openapi.json`. Interactive docs at `/docs` when running.\n\n## Common Pitfalls\n\n- **Standalone mode**: Use `node .next/standalone/server.js`, not `pnpm start` (which requires full `node_modules`)\n- **better-sqlite3**: Native addon -- needs rebuild when switching Node versions (`pnpm rebuild better-sqlite3`)\n- **AUTH_PASS with `#`**: Quote it (`AUTH_PASS=\"my#pass\"`) or use `AUTH_PASS_B64` (base64-encoded)\n- **Gateway optional**: Set `NEXT_PUBLIC_GATEWAY_OPTIONAL=true` for standalone deployments without gateway connectivity\n\n<!-- File: skills/mission-control-installer/skill.json (Tokens: ~204 | Category: skill-json) -->\n{\n  \"name\": \"mission-control-installer\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Install and configure Mission Control — the OpenClaw agent orchestration dashboard\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"fs\"],\n  \"parameters\": {\n    \"deployment_mode\": {\n      \"type\": \"string\",\n      \"enum\": [\"docker\", \"local\"],\n      \"default\": \"docker\",\n      \"description\": \"How to deploy Mission Control\"\n    },\n    \"port\": {\n      \"type\": \"number\",\n      \"default\": 3000,\n      \"description\": \"Port for the Mission Control dashboard\"\n    },\n    \"install_dir\": {\n      \"type\": \"string\",\n      \"default\": \"\",\n      \"description\": \"Installation directory (defaults to ./mission-control)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"dashboard\", \"installer\", \"docker\"]\n}\n\n<!-- File: skills/mission-control-manage/skill.json (Tokens: ~164 | Category: skill-json) -->\n{\n  \"name\": \"mission-control-manage\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Manage a running Mission Control instance — health checks, diagnostics, upgrades, backups\",\n  \"author\": \"Builderz Labs\",\n  \"license\": \"MIT\",\n  \"tools\": [\"exec\", \"http\"],\n  \"parameters\": {\n    \"base_url\": {\n      \"type\": \"string\",\n      \"default\": \"http://localhost:3000\",\n      \"description\": \"Mission Control base URL\"\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"description\": \"API key for authentication (x-api-key header)\"\n    }\n  },\n  \"tags\": [\"mission-control\", \"management\", \"health\", \"upgrade\", \"backup\"]\n}\n</yakaai_skills>"}