Coding

supervisor-config-gen

Try it

Bash tool that generates a Supervisor (supervisord) `[program:*]` config file from zero CLI flags — it derives everything from the current directory (program name = dirname, `command=<dir>/run.sh`, `directory=<dir>`, `user=$(whoami)`, logs under `$HOME/logs/supervisord/`) and writes `<dirname>-supervisor.conf` into that same directory, overwriting silently if present. Use when the user wants to generate a Supervisor program config for an app directory that has a `run.sh` entrypoint.

What it does

supervisor-config-gen — generate a Supervisor program config from a directory

The skill document

supervisor-config-gen — generate a Supervisor program config from a directory

supervisor-config-gen is a single bash script with no flags, no args, no env vars. Run it from inside an app directory and it emits a Supervisor [program:x] config for that app, inferring everything from the directory itself.

Security & safety

  • Generates a local plain-text config file. No network calls, no external services.
  • The generated config controls what Supervisor executes and as which user — review the output before pointing supervisord at it, same as reviewing any generated shell/config artifact.
  • It overwrites -supervisor.conf in the current directory without prompting if one already exists. Don't run it in a directory where that file has manual edits you want to keep.
  • The script does not sandbox or validate the target run.sh — it just references its path. Make sure run.sh is what you expect before Supervisor runs it.

When to use

  • The user wants a Supervisor program config for an app directory that has a run.sh entrypoint (a startup script Supervisor should manage).
  • The user says "generate a supervisor config for this app" / "supervisorize this" / "make a supervisord conf".

When NOT to use

  • The app has no run.sh — the generated command= will point at a script that doesn't exist. Add/rename a run.sh entrypoint first, or hand-write the config.
  • You need non-default supervisord settings (custom numprocs, environment vars, non-TERM stop signal, different log paths/rotation, etc.) — this tool has no flags to control those. Generate the base config, then hand-edit it.
  • You need configs for multiple apps at once — the tool is single-directory, single-invocation.

Inputs → output

There is nothing to pass in. The script derives every field from ambient state at run time:

FieldSource
program_name (used in filename + [program:x])basename $(pwd) — the current directory's name
command$(pwd)/run.sh — a run.sh is REQUIRED to exist in the current directory (the script doesn't check, it just hardcodes the path)
directory$(pwd)
user$(whoami) — the user invoking the script
stdout_logfile / stderr_logfile$HOME/logs/supervisord/-{out,err}.log
output path./-supervisor.conf (written in the current directory, overwritten if it exists)

Everything else (numprocs=1, stopsignal=TERM, stopwaitsecs=10, stopasgroup=true, killasgroup=true, autostart=true, autorestart=true, redirect_stderr=true, redirect_stdout=true, 50MB log rotation with 10 backups on stdout) is fixed/hardcoded — not configurable via flags.

Example invocation

Given an app directory shitty-app/ containing main.py and run.sh:

cd shitty-app
supervisor-config-gen
# Generated shitty-app-supervisor.conf

Resulting shitty-app-supervisor.conf (paths reflect the actual invoking user/home/cwd):

[program:shitty-app]
command=/home/not-root/shitty-app/run.sh
directory=/home/not-root/shitty-app
process_name=%(program_name)s
numprocs=1
user=not-root

stopsignal=TERM
stopwaitsecs=10
stopasgroup=true

killasgroup=true

autostart=true
autorestart=true

redirect_stderr=true
redirect_stdout=true

stdout_logfile=/home/not-root/logs/supervisord/%(program_name)s-out.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/home/not-root/logs/supervisord/%(program_name)s-err.log
stderr_logfile_maxbytes=50MB

For install steps and the full field reference, see references/setup.md.

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván1 installs

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants

More from psyb0t

Browse all skills

Drive a user-deployed mt5-httpapi MetaTrader 5 bridge over HTTP, with per-action confirmation on every real-money call.

by psyb0t107 installs4 stars

Docker-packaged browser automation for QA against anti-bot stacks and authorized detection testing.

by psyb0t137 installs2 stars

Self-hosted OpenAI-compatible speech service — transcription, translation, and synthesis from one container.

by psyb0t13 installs

Run ffmpeg, sox, and ImageMagick jobs against your files in a fixed-allowlist SSH sandbox.

by psyb0t71 installs

Generate speech audio via Qwen3-TTS over SSH with preset voices, voice cloning, and voice design.

by psyb0t55 installs

Drive one or more IMAP/SMTP mailboxes through a single REST + MCP endpoint — read, search, send, mark-seen, and delete across accounts in parallel.

by psyb0t15 installs