setup-python-project
Scaffold a new Python project with uv, ruff, pytest, and GitHub Actions CI.
Skill by phobologic
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/phobologic-setup-python-project
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/setup-python-project
What's inside
- Skill name
setup-python-project- Description
- Scaffold a new Python project with uv, ruff, pytest, and GitHub Actions CI. Use when the user says "set up a new Python project", "scaffold a project", "create a new Python app", or similar.
- License
- MIT
- Instructions
- 194 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Setup Python Project
Scaffold a new Python project with opinionated defaults: uv for package management,
ruff for linting/formatting, pytest for testing, and GitHub Actions for CI.
## Phase 1 — Determine project name
- If `$ARGUMENTS` is non-empty, use it as the project name
- Otherwise, infer from `basename $PWD`
- Derive the Python package name by replacing hyphens with underscores (e.g. `my-app` → `my_app`)
Present a brief summary to the user of what will be created, then ask for confirmation:
```
Project name: <name>
Package dir: <package_name>/
Tests dir: tests/
Files to create: pyproject.toml, .python-version, .gitignore, README.md,
<package_name>/__init__.py, tests/__init__.py,
.github/workflows/test.yml
Proceed? [y/N]
```
## Phase 2 — Preflight checks
Before writing anything:
1. Check if any of the target files already exist. If conflicts exist, list them and ask
whether to overwrite. Do not overwrite silently.
2. Check if git is initialized (`git rev-parse --git-dir 2>/dev/null`). If not, note it
in the final report — don't run `git init` yourself.
## Phase 3 — Scaffold files
Write each file in order:
### `pyproject.toml`
```toml
[project]
name = "<name>"
version = "0.1.0"
description = ""
readme = "README.md"
requires-python = ">=3.13"
dependencies = []
[dependency-groups]
dev = [
"pytest>=8.0.0",
"pytest-asyncio>=0.23.0",
"ruff>=0.9.0",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
[tool.ruff]
target-version = "py313"
line-length = 88
[tool.ruff.lint]
select = [
"F", # pyflakes
"E", # pycodestyle errors
"W", # pycodestyle warnings
"I", # isort
"UP", # pyupgrade
"B", # flake8-bugbear
"SIM", # flake8-simplify
"C4", # flake8-comprehensions
"RUF", # ruff-specific rules
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["S101"]
[tool.ruff.lint.isort]
required-imports = ["from __future__ import annotations"]
known-first-party = ["<package_name>"]
[tool.ruff.format]
quote-style = "double"
```
### `.python-version`
```
3.13
```
### `.gitignore`
```
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
tmp/
.code-review/
.tickets/
```
### `README.md`
```markdown
# <name>
```
### `<package_name>/__init__.py`From phobologic/claude_code, MIT.
More from phobologic/claude_code
- 0.468score
implement-ticket
phobologic
Implement one or more tk tickets.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
multi-review
phobologic
Perform a comprehensive code review using multiple specialized sub-agents in parallel.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
review
phobologic
Quick code review using an adversarial sub-agent.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
spec
phobologic
Turns a rough idea into a structured implementation plan with tk epics and tickets.
SkillDFreshness: D★ 7Claude Code +9 - 0.463score
migrate-beads
phobologic
Migrate this project's issue tracking from beads (bd) to tickets (tk).
SkillDFreshness: D★ 7Claude Code +9 - 0.458score
use-railway
phobologic
Set up Railway CLI rules for this project by creating a symlink into .claude/rules/.
SkillDFreshness: D★ 7Claude Code +9 - 0.458score
use-sqlalchemy
phobologic
Set up SQLAlchemy async + Alembic rules for this project by creating a symlink into .claude/rules/.
SkillDFreshness: D★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 17, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/phobologic/claude_code
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from phobologic
- 0.468score
implement-ticket
phobologic
Implement one or more tk tickets.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
multi-review
phobologic
Perform a comprehensive code review using multiple specialized sub-agents in parallel.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
review
phobologic
Quick code review using an adversarial sub-agent.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
spec
phobologic
Turns a rough idea into a structured implementation plan with tk epics and tickets.
SkillDFreshness: D★ 7Claude Code +9 - 0.463score
migrate-beads
phobologic
Migrate this project's issue tracking from beads (bd) to tickets (tk).
SkillDFreshness: D★ 7Claude Code +9 - 0.458score
use-railway
phobologic
Set up Railway CLI rules for this project by creating a symlink into .claude/rules/.
SkillDFreshness: D★ 7Claude Code +9
Cite this page
setup-python-project skill. Agent Mart. https://agentmart.dev/skills/phobologic-setup-python-project (last updated 2026-10-24)