Skip to content
Agentmart
Submit a tool

setup-python-project

Scaffold a new Python project with uv, ruff, pytest, and GitHub Actions CI.

Skill by phobologic

IndexedMIT★ 7
Write a review

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.

We use your email only for this newsletter. Privacy

About

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.

Use cases: testing, devops

No 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.

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from phobologic

Cite this page

setup-python-project skill. Agent Mart. https://agentmart.dev/skills/phobologic-setup-python-project (last updated 2026-10-24)