Agent skill

Python Project Setup

by FerroxLabs in FerroxLabs/wayland

Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for…

Apache-2.0Auto-check passedDevelopment

Install Python Project Setup

skills CLI
$ npx skills add FerroxLabs/wayland --skill python-project-setup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FerroxLabs/wayland python-project-setup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/python-project-setup .claude/skills/python-project-setup && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
python-project-setup
GitHub stars
608
Token cost
~3.7k tokens
SKILL.md length
1,226 words
Files
1
Skills in repo
1,194
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for…

  • Works in 8 steps: Assess the project context. Before… → Choose the dependency management tool.… → Choose the project layout. Apply this… → …
  • The user asks about starting a new Python project
  • SKILL.md covers When to Use, Process, Output Format and Rules, plus 2 more sections
  • Calls ruff, uv and mypy

What it does

Python Project Setup is an agent skill from FerroxLabs/wayland. Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for linting/formatting. Use when the user asks about starting a new Python project, structuring a Python package, configuring pyproject.toml, choosing between src layout and flat layout, setting up Python dependency management, or configuring Python linting and type checking from scratch. Do NOT use when the user asks about Python…

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Linting and formatting, Type safety and Dependency management. It works with Python, Ruff and Pydantic. The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.

When your agent uses it

  • The user asks about starting a new Python project
  • Structuring a Python package
  • Configuring pyproject.toml
  • Choosing between src layout and flat layout

Example prompts

  • “Use the python-project-setup skill to guide expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for…”
  • “/python-project-setup”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Assess the project context. Before generating any files, determine
  2. Choose the dependency management tool. Apply this decision tree
  3. Choose the project layout. Apply this decision tree
  4. Generate the project structure. Create the directory tree and all configuration files per the Output Format below. Every file must be…
  5. Configure the type checker (mypy). Apply this decision tree
  6. Configure the linter and formatter (ruff). Apply this decision tree
  7. Configure pre-commit hooks (team projects only). Set up
  8. Verify the setup. Confirm the following checks pass

What it can do on your machine

Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • ruff
    • uv
    • mypy

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Python Project Setup loads about 3.7k tokens when it runs. Until then it costs about 191 tokens; SKILL.md has 1,226 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~191
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 1,226 words, ~3,711 tokens.

Download SKILL.mdSave it as .claude/skills/python-project-setup/SKILL.md (or your agent's skills folder).
name
python-project-setup
description
Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for linting/formatting. Use when the user asks about starting a new Python project, structuring a Python package, configuring pyproject.toml, choosing between src layout and flat layout, setting up Python dependency management, or configuring Python linting and type checking from scratch. Do NOT use when the user asks about Python language features or syntax (use `python-idioms`), Python testing setup (use `python-testing-patterns`), Python async programming (use `python-async-patterns`), or Python data modeling with Pydantic (use `python-data-modeling`).
license
Apache-2.0
metadata.author
foundry-skills
metadata.version
1.0.0
metadata.tags
python best-practices template
metadata.category
software-engineering
metadata.subcategory
languages-runtimes
metadata.disclaimer
none
metadata.difficulty
intermediate

Python Project Setup

When to Use

Use this skill when:

  • User asks to set up a new Python project from scratch
  • User wants to know Python project structure conventions
  • User asks about pyproject.toml, setup.py, or Python packaging
  • User mentions virtual environments, dependency management, or lock files
  • User asks about configuring mypy, ruff, or Python tooling for a new project
  • User wants to create a distributable Python package or library
  • User asks about src layout vs flat layout for Python

Do NOT use this skill when:

  • The user is asking about Python language features or syntax → use python-idioms
  • The user already has a project and wants to add testing → use python-testing-patterns
  • The user wants to set up async patterns → use python-async-patterns
  • The user is asking about data validation and modeling → use python-data-modeling
  • The user wants to improve performance of existing code → use python-performance
  • The user is asking about type annotations and generics → use python-type-system
  • The user wants to handle errors and exceptions → use python-error-handling

Process

  1. Assess the project context. Before generating any files, determine:

    • Is this a library/package (distributed via PyPI) or an application (deployed directly)?
      • If library: src layout is mandatory. Editable installs and packaging are critical.
      • If application: flat layout is acceptable. Focus on reproducibility and deployment.
    • Is this a solo project or team project?
      • If team: enforce pre-commit hooks, stricter linting, and type checking from day one.
      • If solo: still configure tooling but relax some rules for velocity.
    • What is the minimum Python version?
      • If 3.12+: use the new type statement syntax awareness. Enable latest mypy features.
      • If 3.10-3.11: structural pattern matching is available. Standard generics from __future__.
      • If 3.9 or below: avoid unless legacy constraint. Document why in pyproject.toml.
  2. Choose the dependency management tool. Apply this decision tree:

    • If the team values fast installs and modern standards: use uv (Rust-based, 10-100x faster than pip, resolves dependencies deterministically, lockfile built-in).
    • If the project needs compatibility with existing CI/CD that only supports the standard Python installer: use pip-tools with requirements.in compiled to requirements.txt.
    • If the project is a library that needs flexible dependency ranges: still use uv or pip-tools, but define loose ranges in pyproject.toml [project.dependencies] and pin exact versions in lock files.
    • NEVER use requirements.txt alone without a lock mechanism. Version drift between developers is the number one Python project reliability problem.
  3. Choose the project layout. Apply this decision tree:

    • If building a redistributable package: use src layout (src/package_name/). This prevents accidental imports from the working directory during testing.
    • If building a deployed application with no distribution: flat layout (package_name/ at root) is acceptable and simpler.
    • If building a monorepo with multiple packages: use src layout per package with a workspace definition.
  4. Generate the project structure. Create the directory tree and all configuration files per the Output Format below. Every file must be generated - do not leave any configuration for the user to fill in manually.

  5. Configure the type checker (mypy). Apply this decision tree:

    • Default: strict = true in [tool.mypy]. This enables all strict flags.
    • If integrating with third-party packages that lack type stubs: add per-module overrides with ignore_missing_imports = true for those specific packages only.
    • If the project uses Pydantic: add plugins = ["pydantic.mypy"] for model validation support.
    • ALWAYS include a py.typed marker file in the package directory for PEP 561 compliance.
  6. Configure the linter and formatter (ruff). Apply this decision tree:

    • Use ruff for both linting AND formatting (replaces flake8, black, isort, pyflakes, and more).
    • Default rule set: select = ["E", "F", "W", "I", "N", "UP", "S", "B", "A", "C4", "DTZ", "T10", "ISC", "ICN", "PIE", "PT", "RSE", "RET", "SLF", "SIM", "TID", "TCH", "ARG", "PLC", "PLE", "PLW", "TRY", "FLY", "PERF", "RUF"]
    • If team is migrating from flake8/black: start with select = ["E", "F", "W", "I"] and expand incrementally.
    • Line length: 88 (ruff default, matches black) or 120 (if team prefers wider lines on modern monitors).
  7. Configure pre-commit hooks (team projects only). Set up:

    • ruff check (lint)
    • ruff format (format)
    • mypy (type check)
    • pytest (optional, for fast test suites only - do not gate on slow integration tests)
  8. Verify the setup. Confirm the following checks pass:

    • uv sync (or editable dev install) succeeds without errors
    • ruff check . passes with no violations
    • ruff format --check . reports no formatting changes needed
    • mypy . passes with zero errors
    • pytest executes successfully (even with minimal tests)

Output Format

{project-name}/
├── src/                          # Only for src layout
│   └── {package_name}/
│       ├── __init__.py
│       ├── py.typed              # PEP 561 marker
│       └── main.py               # Entry point (applications only)
├── tests/
│   ├── __init__.py
│   ├── conftest.py               # Shared fixtures
│   └── test_placeholder.py       # Initial test to verify setup
├── pyproject.toml                # Complete project configuration
├── .python-version               # Pin Python version (e.g., 3.12)
├── .gitignore                    # Python-specific gitignore
├── README.md                     # Project documentation
└── .pre-commit-config.yaml       # Pre-commit hooks (team projects)

pyproject.toml template:

toml
[project]
name = "{project-name}"
version = "0.1.0"
description = "{Project description}"
requires-python = ">={min-python-version}"
license = "MIT"
authors = [
    { name = "{Author Name}", email = "{email}" },
]
dependencies = []

[project.optional-dependencies]
dev = [
    "pytest>=8.0",
    "pytest-cov>=5.0",
    "mypy>=1.10",
    "ruff>=0.5",
    "pre-commit>=3.7",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/{package_name}"]

[tool.ruff]
target-version = "py{min-version-digits}"
line-length = 88

[tool.ruff.lint]
select = [
    "E", "F", "W", "I", "N", "UP", "S", "B", "A", "C4",
    "DTZ", "T10", "ISC", "ICN", "PIE", "PT", "RSE", "RET",
    "SLF", "SIM", "TID", "TCH", "ARG", "PLC", "PLE", "PLW",
    "TRY", "FLY", "PERF", "RUF",
]

[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101"]  # Allow assert in tests

[tool.mypy]
strict = true
warn_return_any = true
warn_unused_configs = true
plugins = []

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra -q --strict-markers"

conftest.py template:

python
"""Shared test fixtures for {project-name}."""

import pytest


@pytest.fixture
def sample_data() -> dict[str, str]:
    """Provide sample data for tests. Customize per project."""
    return {"key": "value"}

.pre-commit-config.yaml template:

yaml
repos:
  - repo: local
    hooks:
      - id: ruff-check
        name: ruff-check
        entry: ruff check --fix
        language: system
        types: [python]
      - id: ruff-format
        name: ruff-format
        entry: ruff format
        language: system
        types: [python]
      - id: mypy
        name: mypy
        entry: mypy
        language: system
        types: [python]
        pass_filenames: false
Show full SKILL.md (502 more words)Show less

Rules

  1. NEVER use setup.py or setup.cfg for new projects. pyproject.toml is the standard since PEP 621.
  2. NEVER use requirements.txt as the sole dependency specification. Always use pyproject.toml for dependency declaration with a lockfile mechanism for reproducibility.
  3. ALWAYS include a py.typed marker file in the package directory for PEP 561 compliance.
  4. ALWAYS configure mypy in strict mode by default. Relax per-module only with documented justification.
  5. ALWAYS use ruff for both linting and formatting. Do not configure flake8, black, and isort separately - ruff replaces all three.
  6. NEVER hardcode Python version requirements below 3.10 without explicit legacy justification from the user.
  7. ALWAYS include a .gitignore with Python-specific entries (.venv/, __pycache__/, *.pyc, .mypy_cache/, .ruff_cache/, dist/, *.egg-info/).
  8. ALWAYS create an initial test file that imports the package to verify the project structure works end-to-end.
  9. For library projects: ALWAYS use src layout. For application projects: document the choice between src and flat layout with rationale.
  10. NEVER leave placeholder or TODO comments in generated configuration files. Every value must be filled in based on the project context.

Edge Cases

  • Legacy codebase migration: When the user has an existing project with setup.py and requirements.txt, do not rewrite from scratch. Create a pyproject.toml that preserves all existing dependencies, add a migration note, and configure ruff with a minimal rule set that the existing code passes. Expand rules incrementally. Keep setup.py as a shim if the build system requires it during transition.

  • Monorepo with multiple Python packages: Each package gets its own pyproject.toml with src layout. Use uv workspaces (if available) or a top-level Makefile that orchestrates builds. Shared dependencies go in a constraints.txt or workspace-level configuration. Each package must be independently installable.

  • CI environment without uv: If the CI system only supports the standard Python package installer, generate a requirements-lock.txt from uv and reference it in CI. Document the two-step workflow: developers use uv locally, CI uses the lock file for deterministic installs.

  • Corporate proxy or air-gapped environment: Configure uv or pip to use a private index with --index-url or --extra-index-url in pyproject.toml under [tool.uv] or in a pip.conf. Document the configuration so new developers do not default to public PyPI.

  • Data science projects with heavy native dependencies: When the project depends on NumPy, SciPy, pandas, or similar packages with C extensions, verify the build toolchain is available. Consider using conda/mamba for native dependency management alongside pyproject.toml for Python-level dependencies. Document the dual dependency management strategy.

Example

Input: "I need to set up a new Python web API project. It will be a FastAPI service deployed to AWS Lambda via container. Team of 4 developers, Python 3.12. We use GitHub Actions for CI."

Output:

order-service/
├── src/
│   └── order_service/
│       ├── __init__.py
│       ├── py.typed
│       ├── main.py
│       ├── config.py
│       ├── models/
│       │   └── __init__.py
│       ├── routes/
│       │   └── __init__.py
│       └── services/
│           └── __init__.py
├── tests/
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_main.py
│   └── test_health.py
├── pyproject.toml
├── .python-version
├── Dockerfile
├── .gitignore
├── .pre-commit-config.yaml
└── README.md

pyproject.toml:

toml
[project]
name = "order-service"
version = "0.1.0"
description = "Order management API service"
requires-python = ">=3.12"
license = "MIT"
authors = [
    { name = "Order Team", email = "team@company.com" },
]
dependencies = [
    "fastapi>=0.115",
    "uvicorn[standard]>=0.30",
    "pydantic>=2.8",
    "mangum>=0.19",
]

[project.optional-dependencies]
dev = [
    "pytest>=8.0",
    "pytest-cov>=5.0",
    "pytest-asyncio>=0.24",
    "httpx>=0.27",
    "mypy>=1.10",
    "ruff>=0.5",
    "pre-commit>=3.7",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/order_service"]

[tool.ruff]
target-version = "py312"
line-length = 88

[tool.ruff.lint]
select = [
    "E", "F", "W", "I", "N", "UP", "S", "B", "A", "C4",
    "DTZ", "T10", "ISC", "ICN", "PIE", "PT", "RSE", "RET",
    "SLF", "SIM", "TID", "TCH", "ARG", "PLC", "PLE", "PLW",
    "TRY", "FLY", "PERF", "RUF",
]

[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101"]

[tool.mypy]
strict = true
warn_return_any = true
warn_unused_configs = true
plugins = ["pydantic.mypy"]

[[tool.mypy.overrides]]
module = ["mangum.*"]
ignore_missing_imports = true

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra -q --strict-markers"
asyncio_mode = "auto"

tests/conftest.py:

python
"""Shared test fixtures for order-service."""

import pytest
from fastapi.testclient import TestClient

from order_service.main import app


@pytest.fixture
def client() -> TestClient:
    """Provide a test client for the FastAPI application."""
    return TestClient(app)

tests/test_health.py:

python
"""Health check endpoint tests."""

from fastapi.testclient import TestClient


def test_health_returns_ok(client: TestClient) -> None:
    """Verify the health check endpoint returns 200 with status ok."""
    response = client.get("/health")
    assert response.status_code == 200
    assert response.json() == {"status": "ok"}

This setup provides: src layout for packaging integrity, mypy strict mode with Pydantic plugin, ruff with comprehensive rule set, pytest-asyncio for async endpoint testing, httpx for async client testing, mangum for AWS Lambda adapter, and pre-commit hooks for the 4-person team. The Dockerfile would use multi-stage builds targeting the Lambda Python 3.12 base image.

© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in src/process/resources/skills-library/bodies/skills/software-engineering/python-project-setup of FerroxLabs/wayland.

Open the folder on GitHubat commit 4c030c7

Compare with similar skills

Python Project Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Python Project Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Python Project Setup this skillFerroxLabs/wayland608—~3.7kAutomated safety check: PassApache-2.0
Adk Stylegoogle/adk-python22k—~748Automated safety check: PassApache-2.0
Modern Python ToolchainXiaomiMiMo/MiMo-Code14k—~1.5kAutomated safety check: NotesMIT
Python Prodavila7/claude-code-templates32k7 repos~1.8kAutomated safety check: PassMIT
Python ProJeffallan/claude-skills12k—~1.6kAutomated safety check: PassMIT
Vibe Python Style Guidemistralai/mistral-vibe5.1k—~1.2kAutomated safety check: PassApache-2.0

Similar skills

  • Adk Style

    google/adk-python

    Official

    Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I/O, file…

    22k GitHub stars~748 tokensUpdated today
    DevelopmentAuto-check passed
  • Modern Python Toolchain

    XiaomiMiMo/MiMo-Code

    Sets up Python projects with uv for packages and environments, ruff for linting and formatting, and pyright for type checking, with rules for running everything through uv.

    14k GitHub stars~1.5k tokensUpdated 4 days ago
    DevelopmentAuto-check: notes
  • Python Pro

    davila7/claude-code-templates

    Master Python 3.12+ with modern features, async programming, performance optimization, and production-ready practices.

    32k GitHub starsUsed in 7 repos~1.8k tokens
    DevelopmentAuto-check passed
  • Python Pro

    Jeffallan/claude-skills

    Writes type-annotated Python 3.11+ with async patterns, dataclasses and pytest suites, validated with mypy in strict mode, black and ruff.

    12k GitHub stars~1.6k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • Vibe Python Style Guide

    mistralai/mistral-vibe

    Official

    Python conventions for the Mistral Vibe codebase covering style, strict typing, imports, Pydantic patterns, logging, error handling and file I/O.

    5.1k GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Modern Python Tooling

    trailofbits/skills

    Official

    Sets up Python projects and standalone scripts with uv, ruff, ty, pytest and prek, and helps move existing projects off pip, Poetry, mypy and black.

    7.4k GitHub stars~2.5k tokensUpdated 5 days ago
    DevelopmentAuto-check passed

More from FerroxLabs/wayland

All 1,194 skills in this repo
  • Star Office Helper

    FerroxLabs/wayland

    Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.

    608 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Openclaw Setup

    FerroxLabs/wayland

    OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.

    608 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Tvcontrol Setup

    FerroxLabs/wayland

    Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.

    608 GitHub stars~5.7k tokensUpdated yesterday
    Auto-check passed
  • Ab Testing Specialist

    FerroxLabs/wayland

    End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.

    608 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Academic Writer

    FerroxLabs/wayland

    Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…

    608 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Accessibility Auditor

    FerroxLabs/wayland

    Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…

    608 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Python Project Setup

What does Python Project Setup do?

Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for…. Python Project Setup is an agent skill from FerroxLabs/wayland.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for linting/formatting.

When should I use Python Project Setup?

Python Project Setup fits situations like: the user asks about starting a new Python project; structuring a Python package; configuring pyproject.toml; choosing between src layout and flat layout.

How do I install Python Project Setup in Claude Code?

Run `npx skills add FerroxLabs/wayland --skill python-project-setup -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/python-project-setup in FerroxLabs/wayland) into .claude/skills/python-project-setup in your project. Claude Code loads it when a task matches its description.

How do I install Python Project Setup in Codex?

Run `npx skills add FerroxLabs/wayland --skill python-project-setup -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/python-project-setup in FerroxLabs/wayland) into .agents/skills/python-project-setup in your project. Codex loads it when a task matches its description.

Can I use Python Project Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill python-project-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/python-project-setup, .gemini/skills/python-project-setup, .github/skills/python-project-setup and .opencode/skills/python-project-setup in your project.

What does Python Project Setup need to run?

Going by SKILL.md and its folder, Python Project Setup needs the command-line tools its instructions call (ruff, uv and mypy). Our summary lists: Python 3.

Does Python Project Setup access the network?

SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Python Project Setup safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Python Project Setup use?

Python Project Setup is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Python Project Setup use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Python Project Setup?

Skills that share tags, products or a category with Python Project Setup: Adk Style (google/adk-python, 22k stars), Modern Python Toolchain (XiaomiMiMo/MiMo-Code, 14k stars), Python Pro (davila7/claude-code-templates, 32k stars) and Python Pro (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Python Project Setup?

FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.

Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.