An interactive CLI that installs a documentation-driven development system into a new or existing repository.
It generates:
- repository-specific
AGENTS.mdinstructions; - a human-oriented root
README.md; - layered product, architecture, design, implementation, and delivery docs;
- active, deferred, and archived work tracking;
- reusable document and agent-prompt templates;
- stack-aware commands and code-organization guidance;
- a generated documentation structure check.
./create-project-systemThe guided flow lets you choose a named preset or configure the frontend, backend, database, and package manager individually. It previews the resolved configuration and asks for confirmation before writing.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/luberius/create-project-system/main/create-project-system)"bash -c keeps standard input available for the interactive menus.
fullstack-go React/Vite + Go + SQLite + Nub
saas-typescript Next.js + Fastify + PostgreSQL + pnpm
api-python FastAPI + PostgreSQL
api-rust Axum + PostgreSQL
custom Choose every value
List them from the CLI:
./create-project-system --list-presets./create-project-system \
--preset fullstack-go \
--project-name acme-ops \
--product-name "Acme Ops" \
--target ./acme-ops \
--yes \
--non-interactivePreview without writing:
./create-project-system \
--preset saas-typescript \
--project-name acme-cloud \
--target ./acme-cloud \
--dry-run \
--non-interactiveExplicit stack flags can override a preset. Run
./create-project-system --help for every option.
The CLI intentionally targets Bash 3.2 and uses standard Unix tools so the downloaded artifact remains self-contained.
make testTests generate disposable projects under /tmp, validate their documentation,
exercise custom and preset configurations, and verify cancellation, dry-run,
escaping, overrides, and overwrite protection.
- Existing generated files are not overwritten unless
--forceis supplied. --dry-runcreates no destination.- Interactive generation requires confirmation unless
--yesis supplied. - Frontend and backend cannot both be
none.