Scaffold
An opinionated Python bootstrapper that creates a project, git history, optional GitHub remote, shared virtual environment, and Obsidian hub together.
Overview
Scaffold compresses the repetitive first hour of a solo project into one command. Given a name and stack, it renders a template, places Python environments on the shared development disk when needed, initializes git, and creates the corresponding project hub in Obsidian.
The tool is intentionally opinionated for the local `/Projects` workflow: project names become kebab-case slugs, stack templates are selected from configuration, and GitHub remote creation can be skipped or made public explicitly rather than being an invisible side effect.
Methodology
A small orchestration engine builds a context object containing the project name, slug, stack, date, owner, and description. Jinja2 renders the selected stack tree, then optional Python environment setup, git initialization, remote creation, and hub creation run as separate stages with clear subprocess boundaries.
Configuration owns the paths for projects, templates, shared Python environments, and Obsidian. Existing directories and existing hub notes are treated as guardrails, so the bootstrapper fails before overwriting an existing project and leaves a previously created hub untouched.
What it does
- Stack templates for Python, web, Node, Rust, and empty projects
- Kebab-case project slug generation and context rendering
- Shared-disk Python virtual environments symlinked into projects
- Initial git repository and commit creation
- Optional private/public GitHub remote creation and push
- Project hub generation in `obsidian_docs/01-projects`