Loading...
Loading...
Add a Docker dev service to this project. Supported services: Redis, RabbitMQ, PostgreSQL, MySQL/MariaDB, MongoDB. Writes Docker Compose and Taskfile configs to .devtools/.
npx skill4agent add cyboooooorg/dev-tools add-service.devtools/.envSKILL_RAW_BASE| Service | Compose Template | Taskfile Template | Metadata |
|---|---|---|---|
| redis | compose-templates/redis/redis.compose.yml | taskfile-templates/redis/redis.Taskfile.yml | compose-templates/redis/metadata.json |
| rabbitmq | compose-templates/rabbitmq/rabbitmq.compose.yml | taskfile-templates/rabbitmq/rabbitmq.Taskfile.yml | compose-templates/rabbitmq/metadata.json |
| postgres | compose-templates/postgres/postgres.compose.yml | taskfile-templates/postgres/postgres.Taskfile.yml | compose-templates/postgres/metadata.json |
| mysql | compose-templates/mysql/mysql.compose.yml | taskfile-templates/mysql/mysql.Taskfile.yml | compose-templates/mysql/metadata.json |
| mongodb | compose-templates/mongodb/mongodb.compose.yml | taskfile-templates/mongodb/mongodb.Taskfile.yml | compose-templates/mongodb/metadata.json |
| monitoring | compose-templates/monitoring/monitoring.compose.yml | taskfile-templates/monitoring/monitoring.Taskfile.yml | compose-templates/monitoring/metadata.json |
taskfile-templates/root/Taskfile.ymlnpx skills addSKILL_RAW_BASE=https://raw.githubusercontent.com/Cyboooooorg/dev-tools/maincurl -fsSL "${SKILL_RAW_BASE}/<template-path>"curlwget -qO- "${SKILL_RAW_BASE}/<template-path>"${ENV_VAR}${REDIS_PORT}{{TOKEN}}$ARGUMENTSSERVICE=$ARGUMENTS$ARGUMENTStest -f .devtools/${SERVICE}.compose.yml"is already installed in${SERVICE}.".devtools/
"Add another instance with an alias, or cancel? [alias/cancel]""Nothing written. Exiting."cachesessionALIAS=<alias>SERVICE_SLUG=${SERVICE}-${ALIAS}redis-cacheSERVICE_SNAKE=${SERVICE}_${ALIAS}redis_cacheENV_PREFIX=<SERVICE_UPPER>_<ALIAS_UPPER>REDIS_CACHEtest -f .devtools/${SERVICE_SLUG}.compose.yml"${SERVICE_SLUG} is already installed — nothing to do."MODE=aliasMODE=standard.devtools/test -d .devtools.devtools/.devtools/"Creating .devtools/ directory..."mkdir -p .devtools.devtools/.gitignore.env"Project name for Docker namespacing? [default: <derive from git remote or pwd>]"basename $(git remote get-url origin 2>/dev/null || echo $(pwd)) | sed 's/\.git$//'COMPOSE_PROJECT_NAME=<user answer or default>.devtools/.envCOMPOSE_PROJECT_NAMESERVICE$ARGUMENTS"Which service would you like to add? (redis / rabbitmq / postgres / mysql / mongodb)"
SERVICE=<user answer>and stop."Service '<answer>' is not supported. Supported: redis, rabbitmq, postgres, mysql, mongodb."
curl -fsSL "${SKILL_RAW_BASE}/compose-templates/${SERVICE}/metadata.json"parameters[]{ name, default, env_var, token }ui_companionexporterAskUserQuestion[default: X][default: <port from metadata>]ANSWERS[port][default: <version from metadata>]ANSWERS[version][default: 6379]"Password? [optional — press enter to skip]"ANSWERS[password]=""ANSWERS[password]=<user input>[default: 5672]"Username? [default: admin]"ANSWERS[username]"Password? (required — no default)"ANSWERS[password]"Management UI port? [default: 15672]"ANSWERS[ui_port][default: 5432]"Username? [default: postgres]"ANSWERS[username]"Password? (required — no default)"ANSWERS[password]"Database name? [default: app]"ANSWERS[db_name][default: 3306]"Username? [default: app]"ANSWERS[username]"Password? (required — no default)"ANSWERS[password]"Database name? [default: app]"ANSWERS[db_name]"Root password? (required — no default)"ANSWERS[root_password][default: 27017]"Username? [default: admin]"ANSWERS[username]"Password? (required — no default)"ANSWERS[password]rabbitmqui_companion"Enable UI companion? [y/N]"ANSWERS[ui_enabled]=falseANSWERS[ui_enabled]=true"Enable auth on UI? [y/N]"ANSWERS[ui_auth]=<true/false>"pgAdmin login email? [default: admin@local.dev]"ANSWERS[pgadmin_email]"pgAdmin login password? (required)"ANSWERS[pgadmin_password]ANSWERS[ui_auth]=true"Mongo Express username? [default: admin]"ANSWERS[me_username]"Mongo Express password? (required)"ANSWERS[me_password]"Also set up Taskfile tasks? [Y/n]"ANSWERS[taskfile]=<true/false>"Also install monitoring (Grafana + Prometheus)? [y/N]"ANSWERS[monitoring]=<true/false>ANSWERS[monitoring]=true"Grafana admin password? [default: admin]"ANSWERS[grafana_password]****Service: redis
Mode: standard install (or: alias install as "redis-cache")
─────────────────────────────────────────────
Port: 6379
Version: 7
Password: ****
UI companion: disabled
Taskfile tasks: yes
Monitoring: no
─────────────────────────────────────────────
Files to write:
.devtools/.gitignore (first install only)
.devtools/redis.compose.yml
.devtools/redis.Taskfile.yml (if Taskfile=yes)
.devtools/compose.yml (created or appended)
.devtools/Taskfile.yml (created on first install only)
.devtools/.env (appended)
.devtools/.env.example (appended)"Write these files? [Y/n]""Cancelled. Nothing written."curl -fsSL "${SKILL_RAW_BASE}/compose-templates/${SERVICE}/${SERVICE}.compose.yml"MODE=standardSERVICE=redisANSWERS[password]--requirepass ${REDIS_PASSWORD}command:-a "${REDIS_PASSWORD}"healthcheck.test.devtools/redis.compose.ymlMODE=alias.devtools/<filename>.compose.yml<filename>${SERVICE}${SERVICE_SLUG}redis-cachecurl -fsSL "${SKILL_RAW_BASE}/taskfile-templates/${SERVICE}/${SERVICE}.Taskfile.yml".devtools/<filename>.Taskfile.yml<filename>${SERVICE}${SERVICE_SLUG}compose.ymlcompose.yml.devtools/.env# ── <SERVICE> ───────────────────────────────────────
<ENV_VAR_NAME>=<value>
...env_var| Service | Env vars to append |
|---|---|
| redis | REDIS_PORT, REDIS_VERSION, REDIS_PASSWORD (empty string if skipped) |
| rabbitmq | RABBITMQ_PORT, RABBITMQ_VERSION, RABBITMQ_USERNAME, RABBITMQ_PASSWORD, RABBITMQ_UI_PORT |
| postgres | POSTGRES_PORT, POSTGRES_VERSION, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB, POSTGRES_UI_PORT (if UI enabled), PGADMIN_DEFAULT_EMAIL (if UI enabled), PGADMIN_DEFAULT_PASSWORD (if UI enabled) |
| mysql | MYSQL_PORT, MYSQL_VERSION, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_ROOT_PASSWORD, MYSQL_UI_PORT (if UI enabled) |
| mongodb | MONGODB_PORT, MONGODB_VERSION, MONGO_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD, MONGODB_UI_PORT (if UI enabled), MONGO_EXPRESS_BASICAUTH (if UI enabled: |
ENV_PREFIX_REDIS_CACHE_PORTREDIS_CACHE_VERSIONREDIS_CACHE_PASSWORD.devtools/.env ## REPLACEDCOMPOSE_PROJECT_NAME.devtools/.envCOMPOSE_PROJECT_NAMECOMPOSE_PROFILES.devtools/.envCOMPOSE_PROJECT_NAME=<value>
COMPOSE_PROFILES=servicesCOMPOSE_PROFILES=servicesdocker compose up--profileCOMPOSE_PROFILESuimonitoring.devtools/.env.example# ── <SERVICE> ───────────────────────────────────────
REDIS_PORT=6379
REDIS_VERSION=7
REDIS_PASSWORD=CHANGE_ME
REDIS_UI_PORT=5540.devtools/.env.exampleCOMPOSE_PROJECT_NAME=myapp
COMPOSE_PROFILES=servicesCHANGE_MEadmin@example.com.devtools/.env# ── Monitoring ──────────────────────────────────────
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=<ANSWERS[grafana_password]>GRAFANA_ADMIN_USERGRAFANA_ADMIN_PASSWORD.devtools/.env.example# ── Monitoring ──────────────────────────────────────
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=CHANGE_MEcurl -fsSL "${SKILL_RAW_BASE}/compose-templates/monitoring/monitoring.compose.yml".devtools/monitoring.compose.ymlANSWERS[taskfile]=truecurl -fsSL "${SKILL_RAW_BASE}/taskfile-templates/monitoring/monitoring.Taskfile.yml".devtools/monitoring.Taskfile.ymlmonitoring.compose.yml.devtools/compose.yml - ./monitoring.compose.ymlmonitoring.compose.ymlcompose.yml.devtools/compose.yml.devtools/compose.yml# .devtools/compose.yml
# Root compose aggregator — managed by dev-tools skill
# Do not edit manually; run the skill to add or remove services.
include:
- ./<filename>.compose.yml<filename>${SERVICE}${SERVICE_SLUG}include: - ./<filename>.compose.yml.devtools/Taskfile.ymltest -f .devtools/Taskfile.ymlcurl -fsSL "${SKILL_RAW_BASE}/taskfile-templates/root/Taskfile.yml".devtools/Taskfile.ymloptional: true.devtools/Taskfile.ymloptional: trueMODE=standardSERVICE_SLUG${SERVICE}-${ALIAS}redis-cacheSERVICE_SNAKE${SERVICE}_${ALIAS}redis_cacheENV_PREFIX<SERVICE_UPPER>_<ALIAS_UPPER>REDIS_CACHE| What | Old value (pattern) | New value |
|---|---|---|
| YAML service key | | |
| Container name suffix | | |
| Volume key declaration | | |
| Volume reference (under volumes:) | | |
| Network key declaration | | |
| Network reference (under networks:) | | |
| Env var names in content | | |
| Env var names in content | | |
| Env var names in content | | |
| Env var names in content | | |
| Env var names in content | | |
| Other service-specific env vars | | |
redis_cache:redis-cache${SERVICE}.compose.yml${SERVICE_SLUG}.compose.ymllogs -f ${SERVICE}logs -f ${SERVICE_SNAKE}restart ${SERVICE}restart ${SERVICE_SNAKE}✓ Done! Files written: .devtools/.gitignore (first install)
.devtools/redis.compose.yml (or redis-cache.compose.yml for alias)
.devtools/redis.Taskfile.yml (if Taskfile=yes)
.devtools/compose.yml (created or updated)
.devtools/Taskfile.yml (if first install)
.devtools/.env (appended)
.devtools/.env.example (appended) Start service: task redis:up
With UI: task redis:up-ui
With monitoring: task redis:up-monitoring
Stop: task redis:down Start service: task redis-cache:up## REPLACED.devtools/.env⚠ Warning: The following keys were already present in .devtools/.env and have been replaced:
- REDIS_PORT (old value marked ## REPLACED)
Review .devtools/.env if this is unexpected.⚠ Do not commit .devtools/.env — it contains real credentials.
.devtools/.gitignore already excludes it..devtools/<service>.compose.yml<service>-<alias>.compose.yml.devtools/<service>.Taskfile.yml.devtools/.env.devtools/.env.example.devtools/.gitignore.env.devtools/compose.yml.devtools/Taskfile.ymltask <service>:up