From python-skills
Bootstrap Python FastAPI services on macOS using uv with consistent project and workspace scaffolds. Use when creating a new backend/API service from scratch, scaffolding a single uv service project, scaffolding a uv workspace with package/service members, customizing scaffold defaults through layered YAML profiles, initializing pytest+ruff+mypy defaults, creating README.md, initializing git, and running initial validation commands.
How this skill is triggered — by the user, by Claude, or both
Slash command
/python-skills:bootstrap-python-serviceThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create production-oriented FastAPI starter layouts using one direct shell entrypoint backed by the shared `bootstrap-uv-python-workspace` scaffolding scripts.
Create production-oriented FastAPI starter layouts using one direct shell entrypoint backed by the shared bootstrap-uv-python-workspace scaffolding scripts.
bootstrap-uv-python-workspace only when the task is generic uv scaffolding without FastAPI-specific expectations.namemodepathpython, members, profile_map, force, initial_commit, no_git_initscripts/init_python_service.sh --name <name> --mode <project|workspace>
bootstrap-uv-python-workspace scaffolding layer.uv run pytestuv run ruff check .uv run mypy ..env for safe defaults.env.local for machine-local or secret overridespydantic-settings# Project mode (default)
scripts/init_python_service.sh --name my-service
# Project mode with explicit options
scripts/init_python_service.sh --name my-service --mode project --python 3.13 --path /tmp/my-service
# Workspace mode with defaults (core-lib package + api-service service)
scripts/init_python_service.sh --name platform --mode workspace
# Workspace mode with explicit members and profile mapping
scripts/init_python_service.sh \
--name platform \
--mode workspace \
--members "core-lib,billing-service,orders-service" \
--profile-map "core-lib=package,billing-service=service,orders-service=service"
# Allow non-empty target directory
scripts/init_python_service.sh --name my-service --force
# Skip git initialization
scripts/init_python_service.sh --name my-service --no-git-init
# Create initial commit
scripts/init_python_service.sh --name my-service --initial-commit
name: requiredmode: project or workspace; defaults to projectpath: optional target directory; defaults to ./<name>python: optional Python version; defaults to 3.13members: optional workspace member CSV for workspace modeprofile_map: optional workspace profile CSV for workspace modeforce: optional flag allowing non-empty target directoriesinitial_commit: optional flag creating an initial commit after a successful scaffoldno_git_init: optional flag disabling git initializationstatus
success: scaffold and built-in validation completedblocked: prerequisites or target-directory constraints prevented the runfailed: the script started but validation or generation failedpath_type
primary: the canonical shell entrypoint completedoutput
project3.13pytest, ruff, mypy.env, ignored .env.local, and pydantic-settingscore-lib,api-servicepackage, remaining members service--force is set.uv and git unless git initialization was explicitly disabled.--initial-commit is combined with --no-git-init.Use uv FastAPI integration style as primary guidance:
uv add fastapi --extra standard
uv add pydantic-settings python-dotenv
uv run fastapi dev app/main.py
# optional production-style local run
uv run fastapi run app/main.py
Generated FastAPI scaffolds should use pydantic-settings with .env plus .env.local, following the documented FastAPI settings pattern with cached settings loading.
scripts/init_python_service.sh.bootstrap-uv-python-workspace directly only when FastAPI-specific behavior is not wanted.bootstrap-python-mcp-service instead when the user wants a FastMCP server rather than an HTTP API service.integrate-fastapi-fastmcp when the user wants an existing or planned FastAPI project to host, generate, or coexist with a FastMCP surface.Use $bootstrap-python-service.
Scope boundaries:
- Work only inside <REPO_PATH>.
- Create or validate scaffold output only in <TARGET_PATH>.
- Limit activity to scaffolding and verification; no unrelated refactors.
Task:
1. If <MODE:PROJECT|WORKSPACE> is PROJECT, run:
`scripts/init_python_service.sh --name <SERVICE_NAME> --mode project --path <TARGET_PATH> --python <PYTHON_VERSION> <FORCE_FLAG> <GIT_INIT_MODE>`
2. If <MODE:PROJECT|WORKSPACE> is WORKSPACE, run:
`scripts/init_python_service.sh --name <SERVICE_NAME> --mode workspace --path <TARGET_PATH> --python <PYTHON_VERSION> --members "<MEMBERS_CSV>" --profile-map "<PROFILE_MAP>" <FORCE_FLAG> <GIT_INIT_MODE>`
3. Validate generated checks:
- `uv run pytest`
- `uv run ruff check .`
- `uv run mypy .`
4. If mode is PROJECT, also validate generated run commands:
- `uv run fastapi dev app/main.py`
- `uv run fastapi run app/main.py`
Output contract:
1. STATUS: PASS or FAIL
2. GENERATED_PATH: final output path
3. COMMANDS: exact commands executed
4. RESULTS: concise check outputs
5. If FAIL: short root-cause summary and minimal remediation steps
codex exec --full-auto --sandbox workspace-write --cd "<REPO_PATH>" "<PROMPT_BODY>"
Optional machine-readable variant:
codex exec --json --full-auto --sandbox workspace-write --cd "<REPO_PATH>" "<PROMPT_BODY>"
<PROMPT_BODY> template:
Use $bootstrap-python-service.
Scope is scaffolding plus verification only in <TARGET_PATH> under <REPO_PATH>.
Run the scaffold command for <MODE:PROJECT|WORKSPACE>, then run pytest, ruff, and mypy.
If project mode, confirm FastAPI dev/run commands are valid.
Return STATUS, generated path, exact command transcript, and minimal remediation on failure.
<REPO_PATH><SERVICE_NAME><MODE:PROJECT|WORKSPACE><TARGET_PATH><PYTHON_VERSION><MEMBERS_CSV><PROFILE_MAP><FORCE_FLAG><GIT_INIT_MODE>--config profile file.codex/profiles/bootstrap-python-service/customization.yaml~/.config/gaelic-ghost/python-skills/bootstrap-python-service/customization.yaml--bypassing-all-profiles--bypassing-repo-profile--deleting-repo-profilereferences/interactive-customization.md for schema and examples.references/conventions.mdreferences/customization.mdreferences/interactive-customization.mdscripts/init_python_service.shbootstrap-uv-python-workspace.assets/README.md.tmplnpx claudepluginhub gaelic-ghost/socket --plugin python-skillsCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.