This README.md is for the person using the template, not for the agent.
The idea is simple:
- Write down what you want once.
- Reuse almost the same Codex prompt in every session.
- Let Codex keep the execution state in files so the project continues cleanly across sessions.
Use this template when:
- you want to start a project from zero with Codex
- you want project context to live in files instead of chat history
- you want to separate product intent from execution state
- you want one repeated run prompt instead of rewriting long prompts every time
The main files are:
- PROJECT_FORM.md: the user-owned project brief
- PROJECT_STATE.md: the Codex-owned execution state
- RUN_PROMPT.md: the single repeated prompt for new sessions
Helpful supporting files:
- PROJECT_FORM_EXAMPLE.md: an example brief
- fill-project-form.md: how to fill the form well
The responsibility split is:
- you edit
PROJECT_FORM.md - Codex updates
PROJECT_STATE.md - you reuse
RUN_PROMPT.mdin later sessions
- Fill PROJECT_FORM.md.
- Be especially clear about:
- what you want to build
- what counts as the first usable version
- what is out of scope for now
- your technical preferences
- how much autonomy Codex has
- Run Codex in this repository.
- Paste the prompt from RUN_PROMPT.md.
- Review the
work/,experiments/, andPROJECT_STATE.mdupdates Codex makes. - In later sessions, reuse the same RUN_PROMPT.md unless project direction changed.
If a blank form feels hard to start from, read PROJECT_FORM_EXAMPLE.md first.
You will usually edit:
- PROJECT_FORM.md
- selected result docs or reports when needed
- any direction-setting docs if project goals change
Update PROJECT_FORM.md first when:
- the product direction changes
- must-haves or non-goals change
- your stack preference changes
- you want to change Codex autonomy
- the definition of done changes
Codex should usually update:
- PROJECT_STATE.md
- the active folder under
work/ - experiments under
experiments/when needed docs/and relatedREADME.mdfiles when structure changes
In short:
PROJECT_FORM.mdis owned by youPROJECT_STATE.mdis maintained by Codex
- Fill
PROJECT_FORM.md. - Paste
RUN_PROMPT.md. - Let Codex create the first work folder and initialize project state.
- If direction changed, edit
PROJECT_FORM.md. - Otherwise, paste
RUN_PROMPT.mdagain. - Let Codex continue updating
PROJECT_STATE.mdand the relevant folders.
This avoids re-explaining the project in each session.
The main folders you will care about are:
- work/: implementation, writing, research, planning, cleanup
- experiments/: hypothesis, run, result, interpretation, publish flows
- docs/: structure and workflow guidance
- templates/: reusable file skeletons
- scripts/: CLIs for creating, moving, and validating work
Use work/ for:
- feature implementation
- refactoring
- documentation
- research
- planning
Use experiments/ when the flow is:
- hypothesis
- execution
- result collection
- interpretation
- publish or decision
Typical cases:
- model comparison
- parameter tuning
- performance experiments
- log/result-based analysis
- pre-release verification experiments
The repeated session prompt lives in RUN_PROMPT.md.
The rule is simple:
- use it in the first session
- use it again in later sessions
- do not keep rewriting the prompt unless the operating model itself changes
That keeps Codex behavior stable across sessions.
You will usually get better results if the initial brief clearly states:
- the user and the problem
- the first-version scope
- non-goals
- quality expectations
- test expectations
- deployment target
- how much Codex should decide on its own
You will usually get worse results from vague briefs like:
- "build me some app"
- "just do something good"
- no must-have / non-goal split
- no definition of done
These files mainly support the template itself:
They are useful reference files, but they are not the normal starting point for a template user.
# show generic work structure
python3 scripts/workctl.py tree
# validate generic work structure
python3 scripts/workctl.py validate --all
# create a new generic work item
python3 scripts/workctl.py init repo_cleanup --title "Repository cleanup" --owner ldh
# show experiment structure
python3 scripts/expctl.py tree
# validate experiment structure
python3 scripts/expctl.py validate --all
# create a new experiment
python3 scripts/expctl.py init attention_ablation --title "Attention ablation" --owner ldhStart here:
- Fill PROJECT_FORM.md.
- Paste RUN_PROMPT.md into Codex.
This template is licensed under the MIT License. See LICENSE.