Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate Python project scaffolding with Poetry/pipenv, pytest configuration, type hints (mypy), linting (ruff/black), and packaging (setuptools/flit).
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 263% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 434% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 319% | 0% |
Trigger conditions:
Not for:
Time normalization:
NOW_ET using NIST/time.gov semantics (America/New_York, ISO-8601)NOW_ET for all citation access datesInput validation:
project_type must be one of: library, application, cli, data-pipelinedependency_manager must be one of: poetry, pipenv, pip-toolspython_version must be one of: 3.9, 3.10, 3.11, 3.12 (string format)project_name must be valid Python package name (lowercase, hyphens allowed)Source freshness:
Fast path for common cases:
project_name/ src/project_name/ # for library/cli __init__.py py.typed # PEP 561 marker project_name/ # for application/data-pipeline __init__.py tests/ __init__.py conftest.py docs/ .gitignore README.md pyproject.toml
python_version input)Decision: If only basic scaffolding needed → STOP at T1; otherwise proceed to T2.
Extended configuration with all tools:
Poetry (pyproject.toml) accessed 2025-10-26T02:31:27-04:00 toml tool.poetry] name = "project-name" version = "0.1.0" description = "" authors = "Your Name <you@example.com>"]
tool.poetry.dependencies] python = "^3.11"
tool.poetry.group.dev.dependencies] pytest = "^7.4.0" pytest-cov = "^4.1.0" mypy = "^1.5.0" ruff = "^0.1.0" black = "^23.9.0"
pipenv (Pipfile) accessed 2025-10-26T02:31:27-04:00
pip-tools (requirements.in) accessed 2025-10-26T02:31:27-04:00
toml [tool.pytest.ini_options] minversion = "7.0" addopts = "-ra -q --strict-markers --cov=src" testpaths = ["tests"] pythonpath = ["src"] markers = [ "slow: marks tests as slow", "integration: marks tests as integration tests", ]
toml [tool.mypy] python_version = "3.11" strict = true warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true
Ruff (all-in-one linter/formatter) accessed 2025-10-26T02:31:27-04:00 toml [tool.ruff] target-version = "py311" line-length = 100 select = ["E", "F", "I", "N", "W", "UP"] ignore = ["E501"]
Black (code formatter) accessed 2025-10-26T02:31:27-04:00 toml [tool.black] line-length = 100 target-version = ['py311']
.pre-commit-config.yamlmakefile .PHONY: test lint format typecheck install
install: poetry install
test: pytest
lint: ruff check .
format: black . ruff check --fix .
typecheck: mypy src
Deep configuration for publishable packages:
[tool.poetry.build-system] or [build-system]poetry version integrationtoml [tool.poetry.scripts] my-cli = "project_name.cli:main"
Dependency Manager Selection:
Project Type Structure:
src/package_name/, includes py.typed, strict mypypackage_name/, relaxed typing, focus on integration testsAbort Conditions:
project_name (contains uppercase, special chars) → error "Invalid package name"python_version → error "Python version must be 3.9+"Tool Version Selection:
NOW_ETSchema (JSON):
json{ "project_name": "string", "project_type": "library | application | cli | data-pipeline", "python_version": "string", "dependency_manager": "poetry | pipenv | pip-tools", "structure": { "directories": ["string"], "files": { "path/to/file": "file content (string)" } }, "commands": { "install": "string", "test": "string", "lint": "string", "format": "string", "publish": "string (optional)" }, "next_steps": ["string"], "timestamp": "ISO-8601 string (NOW_ET)" }
Required Fields:
project_name, project_type, python_version, dependency_manager, structure, commands, next_steps, timestampFile Contents:
Quick Start: Python Library (35 lines)
python# examples/library_example.py from dataclasses import dataclass from datetime import datetime @dataclass(frozen=True) class AnalysisResult: length: int word_count: int analyzed_at: datetime class TextAnalyzer: def __init__(self) -> None: self._history: list[str] = [] def analyze(self, text: str) -> AnalysisResult: if not text or not text.strip(): raise ValueError("Text cannot be empty") self._history.append(text) word_count = len(text.split()) return AnalysisResult(len(text), word_count, datetime.utcnow()) def get_history(self) -> tuple[str, ...]: return tuple(self._history)
Additional Examples:
examples/cli_example.py (32 lines) - Click framework, file I/O, error handlingexamples/api_example.py (38 lines) - Pydantic models, async endpointsTemplate Resources (see resources/)
pyproject-library.toml / pyproject-cli.toml / pyproject-api.tomlexample_test.py - pytest with fixtures and parametrizepre-commit-config.yaml - ruff, black, mypy hooksToken Budgets:
Safety:
Auditability:
Determinism:
Performance:
Official Documentation (accessed 2025-10-26T02:31:27-04:00):
Tool Configurations:
/resources/pyproject-templates/ - Complete pyproject.toml templates by project type/resources/pre-commit-configs/ - Pre-commit configurations for different tool combinations/resources/makefile-templates/ - Makefile templates for poetry/pipenv/pip-toolsBest Practices:
Community Resources:
Other measured skills in the registry, with their headline benchmark lift.