agent-bootstrap (projboot)
Scaffold AI-agent-ready projects from curated language templates, customizable workflow presets, or a tree-style layout — locally first, with one-command GitHub repository creation.
Install
pip install agent-bootstrap # installs both `projboot` and `agent-bootstrap`
pip install -e ".[dev]" # dev: + pytest for the test suite
Requires Python 3.11+. Local scaffolding needs no token and no network; GitHub remote creation (-r github --create) uses GITHUB_TOKEN.
Quickstart: AI Agent Project Bootstrapping (projboot create)
Create a new Python project pre-wired for Claude Code and GitHub Copilot, scaffolded locally and pushed to a new GitHub repository:
projboot create new-project -l python -a claude -a gh-copilot -r github --create --clone
Or scaffold locally with custom directories for generated outputs, helper scripts, an ordered prompts catalog, and architecture conventions (all automatically wired into AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, etc.):
projboot create new-project \
-l python \
-a claude -a gh-copilot -a codeassistant \
--arch hexagonal \
--outputs-dir artifacts/out \
--scripts-dir hack \
--prompts-file docs/PROMPTS.md
What projboot create Generates
- Base Language Stack (
-l / --lang):python/python-microservice:src/layout,pyproject.toml,Dockerfile, GitHub CItypescript:package.json,tsconfig.json,src/index.ts, multi-stageDockerfilehelm-chart:Chart.yaml,values.yaml,templates/,helm lintCIrails: Minimal Rails skeletonnone: Minimal agent-only repo (README.md+.gitignore)
- Universal Agent Harness (Always Included):
AGENTS.md: Project overview,$archrules, directory map ($outputs_dir/,$scripts_dir/,$prompts_file), andgraphifyinstructionsgraphify-out/: Knowledge graph folder (automatically updated viagraphify update .ifgraphifyis installed).remember/: Persistent agent memory (MEMORY.md&decisions.md, or copied from~/.config/projboot/remember/).agents/skills/: Reusable project skills (copied from~/.config/projboot/skills/or starterproject-conventions/SKILL.md)$prompts_file(defaultPROMPTS.md): Ordered prompt catalog$outputs_dir/&$scripts_dir/directories
- Assistant Overlays (
-a / --agent, repeatable):-a claude:CLAUDE.md+.claude/settings.json-a gh-copilot:.github/copilot-instructions.md+.github/prompts/bootstrap.prompt.md-a codeassistant:.codeassistant/instructions.md-a cursor:.cursor/rules/project.mdc
Presets & Personal User Store (~/.config/projboot/)
Initialize your personal projboot configuration directory (or set PROJBOOT_HOME to customize its path):
projboot config-init
projboot list-presets
This creates:
~/.config/projboot/presets.toml— Define named presets (default,clean-arch, or your own) with defaultarch,outputs_dir,scripts_dir,prompts_file, andagents.~/.config/projboot/skills/— Any skill files placed here are automatically copied into.agents/skills/and rendered with your project's$name,$arch,$outputs_dir,$scripts_dir, and$prompts_filevariables.~/.config/projboot/remember/— Starter memory templates copied into.remember/on every new project.
Use a named preset with -p / --preset:
projboot create my-service -l python -p clean-arch
Classic Template & Dirtree Commands
List available base templates:
projboot list-templates
Scaffold directly from a base template (without the AI agent harness):
projboot init --name my-svc --template python-microservice \
--description "My service" --license mit --holder "Your Name" --local
Override or add template variables with --var (repeatable):
projboot init --name demo --template typescript --var name=real-package-name --local
Build a layout from a tree-style file — directories become paths, leaf files are materialized empty:
projboot init-from-tree --name myproject --tree-file examples/tree.txt --gitkeep --local
--gitkeep drops a .gitkeep in empty directories so they survive; --force allows overwriting a non-empty local target directory.
How Templating Works
Templates render with Python's string.Template ($name, $description, $year, $holder, $arch, $outputs_dir, $scripts_dir, $prompts_file, plus any --var). This is deliberate: Helm's Go-template syntax ({{ .Values.foo }}) and GitHub Actions expressions (${{ secrets.X }}) contain no bare $identifier, so they pass through untouched. str.format() or Jinja2 would corrupt them.
Tests
pytest -q
The dirtree parser, template rendering, preset & user store loader, AI agent overlays, CLI (local + GitHub dispatch via mocks), and GitHub helper are all covered without any network access.
Metadata
Release files for agent-bootstrap 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| agent_bootstrap-0.1.0.tar.gz | 27.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_bootstrap-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.9 kB
Release files / agent_bootstrap-0.1.0.tar.gz
| Download URL | agent_bootstrap-0.1.0.tar.gz |
|---|---|
| Size | 27.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b0e48b50c4358b8ba29fb1124eb5478162994ef9d9aff8f076705a0e0c13c6c
|
|
BLAKE2b-256 checksum How to use checksums |
2638ed8649a4e57c613c46c7dbb4ba89604035fbea20511536ca636014b841d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Release files / agent_bootstrap-0.1.0-py3-none-any.whl
| Download URL | agent_bootstrap-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7bcab02528b1dc9d4c14493ca040319cfc5dceacf9a202f4561bcbbe6f44fcd3
|
|
BLAKE2b-256 checksum How to use checksums |
8cf3b7cc5e5a54bb2f0f460cb93025ddf416831806507fe9d56d2e7a56ef66b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Security for agent-bootstrap 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.