bootstrap-uv-python-workspace
SKILL.md
Bootstrap UV Python Workspace
Purpose
Create 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.
When To Use
- Use this skill for generic
uvproject or workspace creation. - Use this skill when the user needs package or service scaffolding without the higher-level FastAPI or FastMCP overlays.
- Expect downstream higher-level Python bootstrap skills to delegate here rather than duplicate its defaults.
Primary Workflow
- Choose the canonical entrypoint:
- single project:
scripts/init_uv_python_project.sh - workspace:
scripts/init_uv_python_workspace.sh
- single project:
- Select the profile or profile map:
packageservice
- Run the selected script with explicit
--nameand optional--path,--python,--force,--initial-commit, and--no-git-init. - Accept the built-in validation path:
uv run pytestuv run ruff check .uv run mypy .
- Return the generated path plus the exact next-step commands emitted by the script.
Commands
# 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
Defaults
- Python version:
3.13(override with--python). - Quality tooling:
pytest,ruff,mypy. - Git initialization: enabled by default (disable via
--no-git-init). - Workspace defaults:
- Members:
core-lib,api-service - Profiles: first member
package, remaining membersservice - Local linking: services depend on the first package member using uv workspace sources.
Outputs
statussuccess: scaffold and built-in validation completedblocked: prerequisites or target-directory constraints prevented the runfailed: the script started but validation or generation failed
path_typeprimary: one of the two canonical shell entrypoints completed
output- resolved project or workspace path
- emitted validation commands
- generated run examples
Guardrails
- Refuse non-empty target directories unless
--forceis set. - Refuse to overwrite an existing
pyproject.toml. - Require
uvandgitwhen git initialization is enabled. - Exit non-zero with actionable error text for invalid arguments or missing prerequisites.
Fallbacks and Handoffs
- Preferred paths are
scripts/init_uv_python_project.shandscripts/init_uv_python_workspace.sh. - Recommend
bootstrap-python-servicewhen the user wants FastAPI-first scaffolding. - Recommend
bootstrap-python-mcp-servicewhen the user wants FastMCP-first scaffolding.
Automation Suitability
- Codex App automation: Medium. Best for scheduled scaffold health checks, not day-to-day product delivery.
- Codex CLI automation: High. Strong fit for CI or scheduled scaffold validation.
Codex App Automation Prompt Template
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 CLI Automation Prompt Template
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.
Customization Placeholders
<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>
Interactive Customization Workflow
- Ask whether users want project or workspace script execution.
- Gather name, path, Python version, and git/force flags.
- If project script, gather profile (
packageorservice). - If workspace script, gather members and optional profile map.
- Return both:
- A YAML profile for durable reuse.
- The exact scaffold command to run.
- Use this precedence order:
- CLI flags
--configprofile file.codex/profiles/bootstrap-uv-python-workspace/customization.yaml~/.config/gaelic-ghost/python-skills/bootstrap-uv-python-workspace/customization.yaml- Script defaults
- If users want temporary reset behavior:
--bypassing-all-profiles--bypassing-repo-profile--deleting-repo-profile
- If users provide no customization or profile files, keep existing script defaults unchanged.
- See
references/interactive-customization.mdfor schema and examples.
References
references/uv-command-recipes.mdreferences/customization.md
Script Inventory
scripts/init_uv_python_project.shscripts/init_uv_python_workspace.sh
Assets
assets/README.md.tmpl
Weekly Installs
10
Repository
gaelic-ghost/py…n-skillsGitHub Stars
1
First Seen
Feb 27, 2026
Security Audits
Installed on
codex10
cline9
gemini-cli9
github-copilot9
kimi-cli9
cursor9