Dev Server Manager

VerifiedCaution

Start or restart the local dev server (FastAPI backend and Vite frontend) in a tmux session.

Sby Skills Guide Bot
DevOpsIntermediate
7/24/2026
Claude Code
#tmux#dev-server#fastapi#vite#worktree

Recommended for

Automated summary

Starts or restarts the local dev server (FastAPI backend and Vite frontend) inside a tmux session named flyfun-apps.

Strengths

  • Automates venv and .env resolution, including the git worktree case that shares the main repo's files
  • Detects an existing tmux session and either reuses it or recreates it based on the working directory
  • Launches both services in parallel in separate panes on dedicated ports (8010/3010)

Limitations

  • Tightly coupled to the flyfun-apps project: paths, ports and commands are hardcoded
  • Requires tmux to be installed and does not handle process startup failures
  • Disabled for model invocation, so it must be triggered explicitly
When to use it

Use it when you need to quickly start or restart the full development environment for the flyfun-apps project.

When not to use it

Avoid it on other projects or for production deployment, since its ports and paths are specific to flyfun-apps.

Security analysis

Caution
Quality score78/100

The skill is a local development runbook: it inspects a tmux session, resolves a virtualenv, optionally copies a .env, and launches FastAPI/Vite dev servers. Nothing is obfuscated, downloaded, or sent off-machine, and the kill is targeted at one named session. The only material concerns are that it wields powerful tooling (tmux, shell, secret-bearing .env copy) without declaring allowed-tools or confirming destructive steps — powerful but legitimate, hence caution rather than risky.

Findings
  • •No allowed-tools declared, yet the skill instructs execution of bash, tmux, and file-copy commands
  • •`tmux kill-session -t flyfun-apps` terminates an existing session without asking for confirmation (scoped, but could disrupt another checkout's server)
  • •Step 3 copies `.env` from `../main/.env` into the worktree — a file that typically holds secrets; low risk locally, but silently propagates credentials into new directories
  • •Assumes a specific sibling directory layout (`../main/venv`, `../main/.env`) and will follow those paths blindly
How this analysis is made

Examples

Start the dev server
Start the local dev server for this project in tmux.
Restart after switching worktree
I just switched to a different git worktree, restart the flyfun-apps dev server so it points at this directory.
Check if server is running
Is the flyfun-apps dev server already running, and on which ports?

name: devserver description: Start or restart the local dev server (backend + frontend) in a tmux session disable-model-invocation: true

Local dev server management

Manage the flyfun-apps tmux session that runs the FastAPI backend and Vite frontend dev server.

Ports: Backend 8010, Frontend 3010 (offset from flyfun-weather which uses 8000/3000).

Step 1 — Determine the project root

Figure out the correct project root (PROJECT_ROOT):

  • Use the current working directory
  • If we are in a git worktree (.git is a file not a directory), the working directory IS the project root for that worktree

Step 2 — Resolve the venv

  • If $PROJECT_ROOT/venv/ exists, use it
  • Otherwise check $PROJECT_ROOT/../main/venv/ (worktree case sharing main's venv)
  • If neither exists, tell the user and stop

Store the resolved path as VENV_PATH.

Step 3 — Check for .env file

  • If $PROJECT_ROOT/.env exists, good — nothing to do
  • If it does NOT exist, check if $PROJECT_ROOT/../main/.env exists (worktree case)
    • If found, copy it: cp ../main/.env $PROJECT_ROOT/.env
    • Tell the user it was copied
  • If neither exists, warn the user that the .env file is missing and the server will likely fail to start

Step 4 — Check for existing tmux session

Run: tmux has-session -t flyfun-apps 2>/dev/null

If a session exists:

  1. Check what directory it's running in: tmux display-message -t flyfun-apps -p '#{pane_current_path}'

  2. Compare that path to $PROJECT_ROOT

  3. If the directory matches and the session looks healthy, tell the user:

    Dev server already running at http://localhost:3010 — attach with tmux attach -t flyfun-apps

    Then stop (no restart needed).

  4. If the directory does NOT match (e.g., switched worktrees), kill the session:

    tmux kill-session -t flyfun-apps
    

    Then continue to Step 5 to create a fresh one.

Step 5 — Start the tmux session

Create a new tmux session with two panes:

# Create detached session — pane 0 runs the backend
tmux new-session -d -s flyfun-apps -c "$PROJECT_ROOT"

# Pane 0: backend (FastAPI with reload on port 8010)
tmux send-keys -t flyfun-apps "source $VENV_PATH/bin/activate && cd web/server && PORT=8010 python main.py" Enter

# Create pane 1 (vertical split) for the frontend watcher
tmux split-window -h -t flyfun-apps -c "$PROJECT_ROOT/web/client"
tmux send-keys -t flyfun-apps "BACKEND_PORT=8010 npm run dev -- --port 3010" Enter

Step 6 — Report to user

Tell the user:

  • Frontend running at http://localhost:3010 (with API proxy to backend)
  • Backend running at http://localhost:8010
  • Attach to tmux with: tmux attach -t flyfun-apps
  • Pane 0 = backend (uvicorn with --reload), Pane 1 = frontend (Vite dev server)

Notes

  • The .env file is loaded automatically by the app (shared.env_loader), no need to source it manually
  • uvicorn --reload watches for Python file changes automatically
  • Vite dev server provides HMR for TypeScript changes
  • The Vite proxy target is configured via BACKEND_PORT env var (defaults to 8010 in vite.config.ts)
  • Production uses port 8000 (docker), dev uses port 8010
  • flyfun-weather uses ports 8000/3000, so these are offset to avoid clashes

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/dev-server-manager-mryiqij4/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/dev-server-manager-mryiqij4' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/dev-server-manager-mryiqij4/download' --output '.skill-downloads/dev-server-manager-mryiqij4/SKILL.md.part' && mv '.skill-downloads/dev-server-manager-mryiqij4/SKILL.md.part' '.skill-downloads/dev-server-manager-mryiqij4/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/dev-server-manager-mryiqij4/SKILL.md' && test -s '.skill-downloads/dev-server-manager-mryiqij4/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/devserver' && cp -R '.skill-downloads/dev-server-manager-mryiqij4' '.claude/skills/devserver'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/dev-server-manager-mryiqij4'

openskills read 'dev-server-manager-mryiqij4'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/dev-server-manager-mryiqij4/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills