From python-skills
Bootstrap new Python projects and multi-package workspaces with uv on macOS using deterministic scripts and consistent defaults. Use when creating a new uv Python project, scaffolding a uv monorepo/workspace, setting up package or service profiles, customizing scaffold defaults through layered YAML profiles, initializing dev tooling (pytest, ruff, mypy), creating README scaffolds, or initializing git with an optional first commit.
How this skill is triggered — by the user, by Claude, or both
Slash command
/python-skills:bootstrap-uv-python-workspaceThis 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 repeatable `uv`-based scaffolds for both single projects and workspaces.
agents/openai.yamlassets/README.md.tmplassets/profiles/init_uv_python_project.config.yamlassets/profiles/init_uv_python_workspace.config.yamlreferences/customization.mdreferences/interactive-customization.mdreferences/uv-command-recipes.mdscripts/init_uv_python_project.shscripts/init_uv_python_workspace.shCreate repeatable uv-based scaffolds for both single projects and workspaces.
Use this skill as the shared scaffolding basis for other Python bootstrap skills that need consistent uv project and workspace defaults.
uv project or workspace creation.scripts/init_uv_python_project.shscripts/init_uv_python_workspace.shpackageservice--name and optional --path, --python, --force, --initial-commit, and --no-git-init.uv run pytestuv run ruff check .uv run mypy ..env for safe defaults.env.local for machine-local or secret overridespydantic-settings# Package project
scripts/init_uv_python_project.sh --name my-lib --profile package
# Service project
scripts/init_uv_python_project.sh --name my-service --profile service --python 3.13
# Workspace with defaults (core-lib package + api-service service)
scripts/init_uv_python_workspace.sh --name my-workspace
# Workspace with explicit members and profile mapping
scripts/init_uv_python_workspace.sh \
--name platform \
--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_uv_python_project.sh --name my-lib --force
# Skip git initialization
scripts/init_uv_python_workspace.sh --name platform --no-git-init
# Create initial commit after successful scaffold
scripts/init_uv_python_project.sh --name my-service --profile service --initial-commit
3.13 (override with --python).pytest, ruff, mypy..env, ignored .env.local, and pydantic-settings.--no-git-init).core-lib,api-servicepackage, remaining members servicestatus
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: one of the two canonical shell entrypoints completedoutput
--force is set.pyproject.toml.uv and git when git initialization is enabled.scripts/init_uv_python_project.sh and scripts/init_uv_python_workspace.sh.bootstrap-python-service when the user wants FastAPI-first scaffolding.bootstrap-python-mcp-service when the user wants FastMCP-first scaffolding.integrate-fastapi-fastmcp when the user already has one surface and needs integration guidance for the other inside the same uv project or workspace.Use $bootstrap-uv-python-workspace.
Scope boundaries:
- Work only inside <REPO_PATH>.
- Create temporary scaffolds only under <SCRATCH_ROOT>/<NAME>-<STAMP>.
- Do not modify unrelated files outside the temporary scaffold path.
Task:
1. If <MODE:PROJECT|WORKSPACE> is PROJECT, run:
`scripts/init_uv_python_project.sh --name <NAME> --profile <PROFILE:PACKAGE|SERVICE> --python <PYTHON_VERSION> --path <SCRATCH_ROOT>/<NAME>-<STAMP> <FORCE_FLAG> <GIT_INIT_MODE>`
2. If <MODE:PROJECT|WORKSPACE> is WORKSPACE, run:
`scripts/init_uv_python_workspace.sh --name <NAME> --python <PYTHON_VERSION> --path <SCRATCH_ROOT>/<NAME>-<STAMP> --members "<MEMBERS_CSV>" --profile-map "<PROFILE_MAP>" <FORCE_FLAG> <GIT_INIT_MODE>`
3. Run validation checks in the scaffold root:
- `uv run pytest`
- `uv run ruff check .`
- `uv run mypy .`
4. If <KEEP_OR_CLEANUP_ARTIFACTS:KEEP|CLEANUP> is CLEANUP, remove the scaffold directory after reporting results.
Output contract:
1. STATUS: PASS or FAIL
2. COMMANDS: exact commands executed, in order
3. RESULTS: concise check outcomes
4. If FAIL: include a short stderr summary and minimal fix recommendation
5. If PASS with no findings: include "safe to archive"
codex exec --full-auto --sandbox workspace-write --cd "<REPO_PATH>" "<PROMPT_BODY>"
<PROMPT_BODY> template:
Use $bootstrap-uv-python-workspace.
Stay strictly within <REPO_PATH>. Create temporary artifacts only under <SCRATCH_ROOT>/<NAME>-<STAMP>.
Run scaffold generation for <MODE:PROJECT|WORKSPACE>, then run:
- `uv run pytest`
- `uv run ruff check .`
- `uv run mypy .`
Return STATUS, exact commands, and concise results only. If failures occur, provide only the minimal remediation needed.
<REPO_PATH><SCRATCH_ROOT><NAME><STAMP><MODE:PROJECT|WORKSPACE><PROFILE:PACKAGE|SERVICE><MEMBERS_CSV><PROFILE_MAP><PYTHON_VERSION><FORCE_FLAG><GIT_INIT_MODE><KEEP_OR_CLEANUP_ARTIFACTS:KEEP|CLEANUP>package or service).--config profile file.codex/profiles/bootstrap-uv-python-workspace/customization.yaml~/.config/gaelic-ghost/python-skills/bootstrap-uv-python-workspace/customization.yaml--bypassing-all-profiles--bypassing-repo-profile--deleting-repo-profilereferences/interactive-customization.md for schema and examples.references/uv-command-recipes.mdreferences/customization.mdscripts/init_uv_python_project.shscripts/init_uv_python_workspace.shassets/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.