From plinth
Initialize complete Python project with comprehensive documentation, development environment, and tooling. Use when creating a new Python project from scratch.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plinth:python-project-initThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Initialize a complete Python project with comprehensive documentation, development environment, and tooling.
Initialize a complete Python project with comprehensive documentation, development environment, and tooling.
Documentation:
README.md - Project overview and visionCLAUDE.md - Development guide for AI sessionsdocs/ - Delegates to /handoff:project-tracking for session tracking filesPython Setup:
pyproject.toml - uv-based dependency management with dev tools.gitignore - Python-specific gitignorePackage Structure:
{package_name}/ - Main package directory{package_name}/cli.py - CLI entry point placeholdertests/ - Test directoryWorkflow:
/handoff:session-pickup and /handoff:session-wrapup)Ask the user for the following (use AskUserQuestion if needed):
Required:
PROJECT_NAME - Display name (e.g., "Temoa", "Apantli")
PACKAGE_NAME - Python package name (e.g., "temoa", "apantli")
DESCRIPTION - One-sentence project description
Optional (with defaults):
PYTHON_VERSION - Default: ">=3.11"
VERSION - Default: "0.1.0"
Derived:
Create the project directory and subdirectories:
mkdir -p {PROJECT_NAME}
mkdir -p {PROJECT_NAME}/{PACKAGE_NAME}
mkdir -p {PROJECT_NAME}/tests
For each template file in skills/python-project-init/templates/:
{{PROJECT_NAME}} → PROJECT_NAME{{PACKAGE_NAME}} → PACKAGE_NAME{{DESCRIPTION}} → DESCRIPTION{{PYTHON_VERSION}} → PYTHON_VERSION{{VERSION}} → VERSIONTemplate mapping:
| Template | Target Location |
|---|---|
pyproject.toml.template | {PROJECT_NAME}/pyproject.toml |
README.md.template | {PROJECT_NAME}/README.md |
CLAUDE.md.template | {PROJECT_NAME}/CLAUDE.md |
.gitignore.template | {PROJECT_NAME}/.gitignore |
Create minimal Python package structure:
{PROJECT_NAME}/{PACKAGE_NAME}/init.py:
"""{{PROJECT_NAME}} - {{DESCRIPTION}}"""
__version__ = "{{VERSION}}"
{PROJECT_NAME}/{PACKAGE_NAME}/cli.py:
"""Command-line interface for {{PROJECT_NAME}}."""
import click
from . import __version__
@click.group()
@click.version_option(version=__version__, prog_name="{{PROJECT_NAME}}")
def main():
"""{{DESCRIPTION}}"""
pass
@main.command()
def hello():
"""Example command - replace with your CLI logic."""
print(f"{{PROJECT_NAME}} v{__version__}")
print("Ready to go!")
if __name__ == "__main__":
main()
{PROJECT_NAME}/tests/init.py:
"""Test suite for {{PROJECT_NAME}}."""
{PROJECT_NAME}/tests/test_basic.py:
"""Basic tests for {{PROJECT_NAME}}."""
from {{PACKAGE_NAME}} import __version__
def test_version():
"""Test version is defined."""
assert __version__ is not None
assert isinstance(__version__, str)
Invoke the project-tracking skill using the Skill tool:
Skill tool call:
skill: "handoff:project-tracking"
args: "new project, name: {PROJECT_NAME}, phase: Phase 0 - Research & Design, description: {DESCRIPTION}"
This delegates documentation setup to project-tracking, which will create:
docs/CONTEXT.md - Current session statedocs/IMPLEMENTATION.md - Phase 0 setupdocs/DECISIONS.md - Decision tracking registrydocs/chronicles/phase-0-foundation.md - Initial entryAsk the user if they want to initialize a git repository:
cd {PROJECT_NAME}
git init
git add .
git commit -m "$(cat <<'EOF'
docs: establish project infrastructure and comprehensive documentation
Set up {PROJECT_NAME} with comprehensive documentation following proven
patterns from plinth project templates. Established tech stack and
development workflow.
Documentation Structure:
- README.md: Project overview and vision
- CLAUDE.md: Development guide for AI sessions
- docs/CONTEXT.md: Current session state
- docs/IMPLEMENTATION.md: Phase-based implementation tracking
- docs/DECISIONS.md: Architectural decision registry
- pyproject.toml: Python setup with uv
Project Structure:
- {PACKAGE_NAME}/: Main Python package
- tests/: Test suite with pytest
- Development tools: mypy, ruff, pytest
Current Status: Phase 0 (Research & Design)
Next Step: Define core features and begin implementation planning
EOF
)"
Ask the user if they want to set up the development environment now:
cd {PROJECT_NAME}
uv sync
uv run {PACKAGE_NAME} --version
uv run pytest
This will:
.venv/ directoryuv.lock fileProvide verification commands and next steps to the user:
Verification:
cd {PROJECT_NAME}
# Verify structure
ls -la
ls -la {PACKAGE_NAME}
ls -la docs
# Verify CLI
uv run {PACKAGE_NAME} --version
# Run tests
uv run pytest
Next Steps:
README.md to add vision and feature detailsCLAUDE.md to add project-specific principlesdocs/IMPLEMENTATION.md Phase 0 with specific taskspyproject.toml as neededSession Management:
/handoff:session-pickup to resume work in next session/handoff:session-wrapup to document progress and commit changesBefore finishing, verify:
uv runAfter completion, tell the user:
/handoff:session-pickup in next sessioncd {PROJECT_NAME} && uv sync && uv run {PACKAGE_NAME} --versionKeep it brief and technical. Focus on what they need to do next.
| Variable | Example | Description |
|---|---|---|
{{PROJECT_NAME}} | "Temoa" | Display name for documentation |
{{PACKAGE_NAME}} | "temoa" | Python package name (lowercase) |
{{DESCRIPTION}} | "Language learning platform" | One-line description |
{{PYTHON_VERSION}} | ">=3.11" | Python version requirement |
{{VERSION}} | "0.1.0" | Initial project version |
npx claudepluginhub pborenstein/plinthScaffolds new Python, Rust, or TypeScript projects with git, CI/CD workflows, pre-commit hooks, and build configuration.
Scaffolds a new project with directory structure, CLAUDE.md, config files, hooks, skills, and first commit after interviewing the developer for name, description, stack, and optional components.
Scaffolds production-ready Python applications with modern tooling (uv, FastAPI, Django), type hints, testing, and best practices.