This repository is a starting point for agentic-forward software projects: projects that expect coding agents to participate in design, implementation, review, and maintenance from the beginning.
The template is intentionally minimal. It does not lock you into a language, framework, or deployment target. Instead, it gives you a durable operating model:
- stable root documents that define current product truth, future direction, design language, architecture, and execution-planning expectations
- a simple repository layout for code, tests, and assets
- contributor guidance that keeps human and agent work aligned as the project grows
Use this template when you want a new repository to:
- onboard humans and agents quickly
- keep high-level project context in version control instead of scattered across chat history
- encourage substantial work to start from an executable plan instead of ad hoc implementation
- make architectural and design decisions explicit early
- stay flexible about the eventual tech stack
This repository is a good fit for greenfield projects, internal tools, prototypes expected to grow into production systems, and any codebase where AI-assisted development is part of the normal workflow.
The current repository is mostly documentation by design. Each root document has a specific job:
README.mdexplains what the project is, how to get started, and how to validate changes locally.PRODUCT.mdcaptures the current user-visible product state, workflows, capability boundaries, and important limitations.ROADMAP.mdcaptures the intended product direction, planned capabilities, strategic priorities, and explicit non-priorities.AGENTS.mdcontains repository-specific instructions for coding agents working in this repo.PLANS.mddefines the ExecPlan format and the rules for using execution plans on complex work.DESIGN.mdis the durable design-language reference for the product.ARCHITECTURE.mdis the durable architectural map for the system.
The repository also reserves these top-level directories:
src/for runtime codetests/for tests that mirror thesrc/layoutassets/for static assets when the project needs them
Agentic-forward projects work better when important context is stored in the repository itself instead of being recreated in every conversation.
This template treats the root documentation as project control documents:
README.mdkeeps onboarding and commands current.PRODUCT.mdkeeps the current product truth explicit, especially for small and medium user-visible changes that may not get their own ExecPlan.ROADMAP.mdkeeps intended future direction explicit so contributors can distinguish current behavior from planned behavior.PLANS.mdensures larger changes are driven by self-contained execution plans.DESIGN.mdcaptures stable product and interface language.ARCHITECTURE.mdcaptures stable system boundaries and invariants.AGENTS.mdtells coding agents how to behave in this specific repository.
As the project evolves, these documents should be updated alongside the code they govern.
Start by turning the template into the real project you want to build.
- Create a new repository from this template, or clone it and rename it for your project.
- Replace placeholder text in
README.md,PRODUCT.md,ROADMAP.md,DESIGN.md, andARCHITECTURE.mdwith project-specific content. - Decide on your initial language, framework, and toolchain.
- Add your first runtime code under
src/and mirror tests undertests/. - Document the canonical development and test commands in
README.mdas soon as you introduce them. - Use ExecPlans for complex features, significant refactors, or work with meaningful ambiguity.
In practice, the first pass through the template usually looks like this:
- name the product and describe the user problem in
README.md - describe the product's current workflows and capabilities in
PRODUCT.md - describe the intended future direction and planned capabilities in
ROADMAP.md - describe the visual and interaction direction in
DESIGN.md - describe the codebase shape and boundaries in
ARCHITECTURE.md - add the initial toolchain and document its commands
- implement the first thin slice of real functionality
If you are starting a new project from scratch, this sequence works well:
-
Define the product briefly. Write a short description of who the user is, what problem the project solves, and what the first usable workflow should be.
-
Establish the durable docs. Update
README.md,PRODUCT.md,ROADMAP.md,DESIGN.md, andARCHITECTURE.mdso a new contributor can understand the project without external context. -
Add the toolchain. Choose your language and development commands. When you do, document the canonical commands in this README. Prefer a single obvious entry point such as
make test,npm test, orpytest. -
Build with small, testable increments. Put runtime code in
src/, keep tests intests/, and keep the layout simple until the project clearly needs more structure. -
Use ExecPlans for substantial work. When the task is complex or likely to touch multiple areas, write a plan in
plans/and keep it current as the work proceeds.
This template is designed so agents can contribute without relying on undocumented context.
To keep that working:
- keep root docs accurate
- update
PRODUCT.mdwhen user-visible capabilities, workflows, or scope boundaries change - update
ROADMAP.mdwhen long-lived product direction, priorities, or intended future capabilities change - document new commands when you add a toolchain
- update
DESIGN.mdwhen stable design language changes - update
ARCHITECTURE.mdwhen structure, ownership, or invariants change - keep implementation work observable through tests, commands, or clear acceptance criteria
For larger changes, point agents at the relevant control documents and have them work from an ExecPlan rather than a vague prompt alone.
Use this layout unless the project has a strong reason to evolve beyond it:
.
├── AGENTS.md
├── ARCHITECTURE.md
├── DESIGN.md
├── PLANS.md
├── PRODUCT.md
├── ROADMAP.md
├── README.md
├── assets/
├── plans/
├── src/
└── tests/
Not every directory needs to exist on day one. Add them when the project needs them, but keep the structure predictable.
No language-specific toolchain is checked in yet. Until you add one, the lightweight repository checks are:
git statusto inspect pending changesrg --filesto list the current file setgit log --onelineto inspect commit-message style
Once you introduce a real toolchain, replace this section with the canonical commands contributors should run.
- Keep runtime code in
src/. - Mirror tests under
tests/. - Keep static assets in
assets/when needed. - Keep
PRODUCT.mdin sync with current user-visible behavior and scope. - Keep
ROADMAP.mdin sync with durable product direction and priorities. - Treat root-level
ALLCAPS.mdfiles as durable project guidance, not scratch notes. - Use ExecPlans for complex features and significant refactors.
- Keep the repository easy for a new human or agent to understand without hidden context.
Before calling a project based on this template "ready," make sure you have done the following:
- replaced placeholder project names in
PRODUCT.md,ROADMAP.md,DESIGN.md, andARCHITECTURE.md - described the actual product and intended users in this README
- described the current capabilities and workflows in
PRODUCT.md - described the intended direction and near-term priorities in
ROADMAP.md - documented the initial toolchain and test command
- created the first
src/andtests/modules - confirmed that
AGENTS.mdmatches how you want coding agents to work in the repo
At template stage, validation is mostly structural:
rg --filesshould show the expected control documents and project directoriesgit statusshould clearly reflect documentation and code changes- once a toolchain is added, the documented test command should become the default proof that the repository is healthy
This template favors explicit context over implied context.
A new contributor should be able to clone the repository, read the root documents, and understand:
- what the project is for
- what the product currently does
- what the product is intended to become
- how to work in it
- where code should go
- when to write a plan
- which documents must be updated when the project changes
That is the point of the template: less re-explaining, less guesswork, and a cleaner handoff between humans and agents.