{"id":"130fe564-9737-4748-b749-8977c19a9674","shortId":"ypzfaB","kind":"skill","title":"python-build-tools","tagline":"Python project tooling with uv, mise, ruff, basedpyright, and pytest. Use when setting up pyproject.toml, running builds, typechecking, configuring tests, linting, formatting, or managing Python environments.","description":"# Python Build Tools\n\nModern Python development tooling using uv, mise, ruff, basedpyright, and pytest.\n\n## Quick Start\n\n### Minimal pyproject.toml\n\n```toml\n[project]\nname = \"my-project\"\nversion = \"0.1.0\"\nrequires-python = \">=3.12\"\ndependencies = [\"fastapi\", \"pydantic\"]\n\n[project.optional-dependencies]\ndev = [\"pytest>=8.0.0\", \"ruff>=0.8.0\", \"basedpyright>=1.0.0\"]\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.ruff]\ntarget-version = \"py312\"\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"I\", \"N\", \"UP\", \"RUF\"]\n\n[tool.basedpyright]\ntypeCheckingMode = \"strict\"\n\n[tool.pytest.ini_options]\ntestpaths = [\"tests\"]\n```\n\n### Setup Project\n\n```bash\nuv init my-project && cd my-project\nuv sync\nuv add fastapi pydantic\nuv add --dev pytest ruff basedpyright\n```\n\n## Tool Overview\n\n| Tool | Purpose | Replaces |\n|------|---------|----------|\n| **uv** | Package management | pip, virtualenv |\n| **mise** | Version & tasks | pyenv, asdf |\n| **ruff** | Lint & format | black, isort, flake8 |\n| **basedpyright** | Type checking | mypy |\n| **pytest** | Testing | unittest |\n\n## Common Commands\n\n### Lint and Format\n\n```bash\nuv run ruff check --fix .\nuv run ruff format .\n```\n\n### Type Check\n\n```bash\nuv run basedpyright\nuv run basedpyright src/main.py\n```\n\n### Test\n\n```bash\nuv run pytest\nuv run pytest --cov=src --cov-report=html\n```\n\n### Manage Dependencies\n\n```bash\nuv add fastapi\nuv add --dev pytest\nuv lock --upgrade\nuv tree\n```\n\n## Mise Configuration\n\nCreate `.mise.toml` for consistent development:\n\n```toml\n[tools]\npython = \"3.12\"\n\n[tasks.lint]\nrun = \"uv run ruff check --fix .\"\n\n[tasks.format]\nrun = \"uv run ruff format .\"\n\n[tasks.typecheck]\nrun = \"uv run basedpyright\"\n\n[tasks.test]\nrun = \"uv run pytest\"\n\n[tasks.check]\ndepends = [\"lint\", \"format\", \"typecheck\", \"test\"]\n```\n\nUsage:\n\n```bash\nmise install\nmise run check\n```\n\n## Type Hints Example\n\n```python\nfrom decimal import Decimal\nfrom typing import Optional\n\ndef calculate_discount(\n    total: Decimal,\n    rate: Optional[Decimal] = None\n) -> Decimal:\n    if rate is None:\n        rate = Decimal(\"0.1\")\n    return total * rate\n```\n\n## Best Practices\n\n1. Use uv for all package management (faster, reliable)\n2. Pin Python version with mise\n3. Configure tools in pyproject.toml\n4. Enable strict type checking\n5. Run checks before commit\n\n## References\n\nFor detailed configuration and advanced patterns:\n\n- **[references/uv.md](references/uv.md)** - Workspaces, scripts, dependency management\n- **[references/ruff.md](references/ruff.md)** - Rules, per-file ignores, pre-commit integration\n- **[references/basedpyright.md](references/basedpyright.md)** - Type patterns, generics, protocols","tags":["python","build","tools","atelier","martinffx","agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex"],"capabilities":["skill","source-martinffx","skill-python-build-tools","topic-agent-skills","topic-agentic-coding","topic-anthropic","topic-claude-code","topic-claude-skills","topic-code-review","topic-codex","topic-codex-skill","topic-opencode","topic-prompt-engineering","topic-sdd","topic-spec-driven-development"],"categories":["atelier"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/martinffx/atelier/python-build-tools","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add martinffx/atelier","source_repo":"https://github.com/martinffx/atelier","install_from":"skills.sh"}},"qualityScore":"0.461","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 23 github stars · SKILL.md body (2,663 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:23.221Z","embedding":null,"createdAt":"2026-05-10T07:03:12.057Z","updatedAt":"2026-05-18T19:05:23.221Z","lastSeenAt":"2026-05-18T19:05:23.221Z","tsv":"'0.1':283 '0.1.0':56 '0.8.0':70 '1':289 '1.0.0':72 '2':298 '3':304 '3.12':60,218 '4':309 '5':314 '8.0.0':68 'add':117,121,197,200 'advanc':324 'asdf':140 'backend':80 'basedpyright':12,42,71,125,147,174,177,236 'bash':104,159,171,180,195,249 'best':287 'black':144 'build':3,21,32,74,79 'build-backend':78 'build-system':73 'calcul':268 'cd':110 'check':149,163,170,224,254,313,316 'command':155 'commit':318,341 'common':154 'configur':23,209,305,322 'consist':213 'cov':187,190 'cov-report':189 'creat':210 'decim':260,262,271,274,276,282 'def':267 'depend':61,65,194,243,330 'detail':321 'dev':66,122,201 'develop':36,214 'discount':269 'e':89 'enabl':310 'environ':30 'exampl':257 'f':90 'fastapi':62,118,198 'faster':296 'file':337 'fix':164,225 'flake8':146 'format':26,143,158,168,231,245 'generic':347 'hatchl':77 'hatchling.build':81 'hint':256 'html':192 'ignor':338 'import':261,265 'init':106 'instal':251 'integr':342 'isort':145 'lint':25,142,156,244 'lock':204 'manag':28,133,193,295,331 'minim':47 'mise':10,40,136,208,250,252,303 'mise.toml':211 'modern':34 'my-project':52,107,111 'mypi':150 'n':92 'name':51 'none':275,280 'option':99,266,273 'overview':127 'packag':132,294 'pattern':325,346 'per':336 'per-fil':335 'pin':299 'pip':134 'practic':288 'pre':340 'pre-commit':339 'project':6,50,54,103,109,113 'project.optional':64 'protocol':348 'purpos':129 'py312':86 'pydant':63,119 'pyenv':139 'pyproject.toml':19,48,308 'pytest':14,44,67,123,151,183,186,202,241 'python':2,5,29,31,35,59,217,258,300 'python-build-tool':1 'quick':45 'rate':272,278,281,286 'refer':319 'references/basedpyright.md':343,344 'references/ruff.md':332,333 'references/uv.md':326,327 'reliabl':297 'replac':130 'report':191 'requir':58,76 'requires-python':57 'return':284 'ruf':94 'ruff':11,41,69,124,141,162,167,223,230 'rule':334 'run':20,161,166,173,176,182,185,220,222,227,229,233,235,238,240,253,315 'script':329 'select':88 'set':17 'setup':102 'skill' 'skill-python-build-tools' 'source-martinffx' 'src':188 'src/main.py':178 'start':46 'strict':97,311 'sync':115 'system':75 'target':84 'target-vers':83 'task':138 'tasks.check':242 'tasks.format':226 'tasks.lint':219 'tasks.test':237 'tasks.typecheck':232 'test':24,101,152,179,247 'testpath':100 'toml':49,215 'tool':4,7,33,37,126,128,216,306 'tool.basedpyright':95 'tool.pytest.ini':98 'tool.ruff':82 'tool.ruff.lint':87 'topic-agent-skills' 'topic-agentic-coding' 'topic-anthropic' 'topic-claude-code' 'topic-claude-skills' 'topic-code-review' 'topic-codex' 'topic-codex-skill' 'topic-opencode' 'topic-prompt-engineering' 'topic-sdd' 'topic-spec-driven-development' 'total':270,285 'tree':207 'type':148,169,255,264,312,345 'typecheck':22,246 'typecheckingmod':96 'unittest':153 'upgrad':205 'usag':248 'use':15,38,290 'uv':9,39,105,114,116,120,131,160,165,172,175,181,184,196,199,203,206,221,228,234,239,291 'version':55,85,137,301 'virtualenv':135 'workspac':328","prices":[{"id":"2750a6ac-9fb1-4577-afbb-3e09547635ee","listingId":"130fe564-9737-4748-b749-8977c19a9674","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"martinffx","category":"atelier","install_from":"skills.sh"},"createdAt":"2026-05-10T07:03:12.057Z"}],"sources":[{"listingId":"130fe564-9737-4748-b749-8977c19a9674","source":"github","sourceId":"martinffx/atelier/python-build-tools","sourceUrl":"https://github.com/martinffx/atelier/tree/main/skills/python-build-tools","isPrimary":false,"firstSeenAt":"2026-05-10T07:03:12.057Z","lastSeenAt":"2026-05-18T19:05:23.221Z"}],"details":{"listingId":"130fe564-9737-4748-b749-8977c19a9674","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"martinffx","slug":"python-build-tools","github":{"repo":"martinffx/atelier","stars":23,"topics":["agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex","codex-skill","opencode","prompt-engineering","sdd","spec-driven-development"],"license":"mit","html_url":"https://github.com/martinffx/atelier","pushed_at":"2026-05-18T06:56:45Z","description":"An atelier for Opencode, Claude Code, and other coding agents: spec-driven workflows, deep thinking, and code quality.","skill_md_sha":"ba24d5a1ca949b336b97cd0d9bfe8388d4c52f19","skill_md_path":"skills/python-build-tools/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/martinffx/atelier/tree/main/skills/python-build-tools"},"layout":"multi","source":"github","category":"atelier","frontmatter":{"name":"python-build-tools","description":"Python project tooling with uv, mise, ruff, basedpyright, and pytest. Use when setting up pyproject.toml, running builds, typechecking, configuring tests, linting, formatting, or managing Python environments."},"skills_sh_url":"https://skills.sh/martinffx/atelier/python-build-tools"},"updatedAt":"2026-05-18T19:05:23.221Z"}}