Observed since 20 Oct, 21:33 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Scaffold AI-agent-ready projects from curated templates, presets, or a dirtree layout
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.
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.
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
projboot create Generates-l / --lang):
python / python-microservice: src/ layout, pyproject.toml, Dockerfile, GitHub CItypescript: package.json, tsconfig.json, src/index.ts, multi-stage Dockerfilehelm-chart: Chart.yaml, values.yaml, templates/, helm lint CIrails: Minimal Rails skeletonnone: Minimal agent-only repo (README.md + .gitignore)AGENTS.md: Project overview, $arch rules, directory map ($outputs_dir/, $scripts_dir/, $prompts_file), and graphify instructionsgraphify-out/: Knowledge graph folder (automatically updated via graphify update . if graphify is 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 starter project-conventions/SKILL.md)$prompts_file (default PROMPTS.md): Ordered prompt catalog$outputs_dir/ & $scripts_dir/ directories-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~/.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 default arch, outputs_dir, scripts_dir, prompts_file, and agents.~/.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_file variables.~/.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
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.
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.
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.
pypistats · 3 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 9 | 2026-10-21T12:04:12.0619192Z |
| 2026-10-19 – 2026-10-19 | 3 | 2026-10-21T12:04:12.0619192Z |
| 2026-10-18 – 2026-10-18 | 127 | 2026-10-21T12:04:12.0619192Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 18 Oct 2026 | 4 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 21:33 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:2927a949f2eb5600773d33c92c1afd99ceb9fbf164d30e7f1610f9555574888c