بنقرة واحدة
configure
// Walks through full ops-suite setup: asks about all infrastructure components and writes config.yaml. Use when setting up ops-suite for the first time or when config.yaml is missing.
// Walks through full ops-suite setup: asks about all infrastructure components and writes config.yaml. Use when setting up ops-suite for the first time or when config.yaml is missing.
Run database migrations against remote environments. Use when asked about "migrations", "pending schema changes", "apply migrations", "migration status", "update schema". SKIP: querying data (use db-query); service health (use service-status).
Execute read-only queries against databases in any environment. Use when asked about "SQL", "check data", "count records", "find rows", "query database", "how many X?", "look up Y". SKIP: running migrations (use db-migrate); service health (use service-status).
Deploy a merged PR or commit to an environment. TRIGGER when: chained by workflow-deploy or another skill; user explicitly invokes /deploy with a PR number, commit SHA, or ref. SKIP: interactive guided deployments (use workflow-deploy).
Show deployment status across environments — current deployed commit, author, timestamp, PR, and drift between envs. Use when asked about "deploy status", "what is deployed", "what version is in prod", "is prod up to date", "show deployments", "current commit per env", "deployment overview", "env diff", "qué hay desplegado", "estado de los deploys". TRIGGER when: user asks "what's deployed in X", "deploy status", "is staging behind prod", "show me deploys", "last deploy of [service]", "deployment diff between envs", "qué versión hay en prod". SKIP: deploying new versions (use deploy or workflow-deploy); pod health (use service-status); logs (use service-logs).
Establish local connections to cluster services like databases, brokers, and APIs. Use when asked about "port-forward", "connect to database", "local connection", "tunnel", "forward port", "access service locally". TRIGGER when: user asks "port-forward to X", "connect to database locally", "tunnel to service", "forward port", "access service locally", "open local connection to X". SKIP: checking service health (use service-status); running queries (use db-query).
Move failed messages from dead letter queues back to their main queue. Use when asked about "reprocess DLQ", "retry failed messages", "move DLQ messages", "republish dead letters". SKIP: diagnosing failures first (use queue-triage); checking counts (use queue-status).
Always use AskUserQuestion for every selection in this wizard. Never present choices as plain text lists.
multiSelect: falsemultiSelect: trueAskUserQuestion with an "Other" option that prompts the user to typepreview on options when showing side-by-side comparisons (e.g. port mappings)AskUserQuestion call to minimize round-tripsFull interactive wizard. Asks the user about every infrastructure component one section at a time. Auto-detection is used only to suggest defaults — every question is always asked explicitly, never skipped.
Resolve the user config directory as ${XDG_CONFIG_HOME:-$HOME/.config}/ops-suite. Store it as {config_dir}. Create it with mkdir -p {config_dir} before writing.
Ask:
"What container orchestrator do you use?"
kubernetes — kubectl + cluster contextsdocker-compose — local or remote compose filesecs — Amazon Elastic Container Servicenone — no container orchestratorStore as {orchestrator}.
Ask:
"Which environments do you want to configure?" (multi-select)
devstagingprodother — user types the name(s) in notesStore the list as {envs}.
Read adapters/{orchestrator}.md for all orchestrator-specific detection commands and questions. If the adapter does not exist, tell the user the orchestrator is not yet supported and skip environment-specific detection (ask manually).
Follow the adapter instructions for each environment to collect:
{env.context} or equivalent connection identifier{env.ns_apps} / service scope (where app services run){env.ns_infra} / infra scope (where broker and DB run){env.local_port} (local port for DB port-forwarding)Ask:
"Which message broker do you use?"
rabbitmqazure-service-bussqskafkanoneStore as {broker}.
For each environment, follow the orchestrator adapter's "Detect broker service" instructions (if available) to optionally suggest a default. Then ask:
Ask per environment:
"{env_name} — RabbitMQ service name?" (suggest detected or
rabbitmq)
"{env_name} — Pod name pattern (e.g.
rabbitmq-*)?"
"{env_name} — Management port?" (default
15672)
"{env_name} — AMQP port?" (default
5672)
"{env_name} — vhost?" (default
/)
Ask per environment for the connection string or region/endpoint relevant to that broker.
Ask:
"Which database do you use?"
postgresqlmysqlmongodbnoneStore as {database}.
For each environment, follow the orchestrator adapter's "Detect database service" instructions (if available) to optionally suggest a default. Then ask:
Ask per environment:
"{env_name} — DB proxy/service name?" (suggest detected)
"{env_name} — Port?" (default: 6432 pgbouncer / 5432 postgres / 3306 mysql)
"{env_name} — Default database name?"
Ask per environment for service name and port (default 27017).
Ask:
"Which CI/CD provider triggers your deployments?"
github-actionsgitlab-cinoneStore as {ci_provider}.
Ask:
"How is the image tag determined after a CI run?"
run-id (most common), commit-sha, tag{image_tag_source}"Repository slug? (e.g.
my-org/my-repo)"
{repo_slug}Ask:
"Which database migration tool do you use?"
mikro-orm, typeorm, knex, flyway, noneStore as {migration_tool}.
Ask:
"Migration command? (e.g.
npm run migrations:up)" Store as{migration_command}.
Follow the orchestrator adapter's "Detect primary service" instructions (if available) to optionally suggest defaults. Then ask:
"Primary application service name? (used for health checks and log tailing after deploys)"
Store as {primary_service}.
Ask:
"Register additional services for port-forwarding? (e.g. internal APIs, admin panels)"
yes / noIf yes, repeat until done:
my-api)svc/my-api for k8s, service name for compose/ECS)http://localhost:{port}/health)Assemble and write to {config_dir}/config.yaml:
# ops-suite configuration — generated by /ops-suite:configure on {YYYY-MM-DD}
orchestrator: {orchestrator}
message_broker: {broker}
database: {database}
service: {primary_service}
environments:
{env_name}:
context: "{env.context}"
namespaces:
apps: "{env.ns_apps}"
infra: "{env.ns_infra}"
services:
broker:
name: "{broker_service}"
namespace: "{env.ns_infra}"
management_port: {mgmt_port}
amqp_port: {amqp_port}
vhost: "{vhost}"
pod_pattern: "{pod_pattern}"
database:
name: "{db_service}"
namespace: "{env.ns_infra}"
port: {db_port}
default_db: "{default_db}"
deploy:
ci_provider: {ci_provider}
repo: "{repo_slug}"
image_tag_source: {image_tag_source}
migration_tool: {migration_tool}
migration_command: "{migration_command}"
local_ports:
{env_name}: {env.local_port}
service_registry:
{name}:
namespace: {ns}
service: {svc}
port: {port}
verify: "{health_check}"
Omit blocks for none values.
mkdir -p /tmp/ops-suite-session
Write /tmp/ops-suite-session/config.json with equivalent JSON so all skills can use it immediately.
✓ ops-suite configured successfully
────────────────────────────────────────────────────
Orchestrator: {orchestrator}
Environments: {env_name_1}, {env_name_2}, ...
Broker: {broker}
Database: {database}
CI provider: {ci_provider}
Migrations: {migration_tool}
Primary service: {primary_service}
Config written → {config_dir}/config.yaml
Session cache → /tmp/ops-suite-session/config.json
Skills now available:
/ops-suite:service-status check service health & restarts
/ops-suite:service-logs tail and search logs
/ops-suite:queue-status inspect queues [if broker ≠ none]
/ops-suite:queue-triage diagnose DLQs [if broker ≠ none]
/ops-suite:db-query run read-only SQL [if database ≠ none]
/ops-suite:db-migrate apply migrations [if migration_tool ≠ none]
/ops-suite:port-forward connect to services [if orchestrator ≠ none]
/ops-suite:workflow-deploy guided interactive deploy [if ci_provider ≠ none]
────────────────────────────────────────────────────