This repository is a copyable starting point for a lightweight project operating system built around:
AGENTS.mdas the agent bootstrap guide.memory-bank/as the current project source of truth.evolution/as versioned history for direction changes.- execution harnesses as repeatable commands that prove the software works.
- model eval harnesses as repeatable evaluations that measure model-assisted behavior.
The goal is not documentation volume. The goal is to give humans and agents the same compact operating manual, then connect that manual to executable harnesses.
Language versions: 🇨🇳 中文 · 🇯🇵 日本語 · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español.
Project-level sample files:
- AGENTS.md
- memory-bank/product.md
- memory-bank/architecture.md
- memory-bank/tech-stack.md
- memory-bank/milestone.md
- memory-bank/status-M1.md
- evolution/prompt-v1.md
- evolution/result-v1.md
User-account-level sample files:
Harness references:
From a new project root:
cp /path/to/skills/AGENTS.md .
cp -R /path/to/skills/memory-bank .
cp -R /path/to/skills/evolution .
mkdir -p docsThen edit the copied files in this order:
memory-bank/product.md: define what the project is and is not.memory-bank/architecture.md: define layout, data flow, and boundaries.memory-bank/tech-stack.md: define commands, dependencies, and harnesses.memory-bank/milestone.md: define the first milestone.memory-bank/status-M1.md: define the first milestone's actionable rows.evolution/prompt-v1.md: record the initial direction.evolution/result-v1.md: record the current starting state.AGENTS.md: replace placeholders with project-specific commands and rules.
Keep README.md simple and user-facing. Put long-form references in docs/.
For a new project, you can use the sample files as the initial structure and ask an AI agent to fill them in after you describe the product.
Warning: copying these files over an existing project can overwrite files already on disk. Make a backup or commit your current work first.
From the new project root:
cp /path/to/skills/AGENTS.md .
cp -R /path/to/skills/memory-bank .
cp -R /path/to/skills/evolution .
mkdir -p docsThen chat with the agent until the product, users, boundaries, commands, and first milestone are clear. Ask it to fill in:
AGENTS.mdmemory-bank/product.mdmemory-bank/architecture.mdmemory-bank/tech-stack.mdmemory-bank/milestone.mdmemory-bank/status-M1.mdevolution/prompt-v1.mdevolution/result-v1.md
Example prompt:
Read the sample AGENTS.md, memory-bank/*, and evolution/* files. Based on our
discussion of this new project, replace the placeholders with accurate project
content. Keep README user-facing, put long-form references in docs/, and make
memory-bank/status-M1.md contain the first actionable milestone rows.
For an existing project, read before writing:
find . -name '*.md' -print | sort
rg -n "TODO|FIXME|roadmap|architecture|security|deploy|test|release" .
rg --filesThen:
- Read the root README, agent guides, docs, package READMEs, and major package comments.
- Copy in
AGENTS.md,memory-bank/, andevolution/from this repository. - Fill the memory bank from what the project already says, not from an imagined rewrite.
- Move stable long-form references into
docs/. - Convert duplicated roadmap/status material into
memory-bank/milestone.mdand onememory-bank/status-Mx.mdfile per milestoneMx. - Keep known gaps visible in the matching
status-Mx.mdfile instead of hiding them.
For an existing project, the agent can do the inventory and first memory-bank draft. This works best when the project already has useful README, docs, package comments, tests, or CI files.
Warning: copying these sample files into an existing project can overwrite
existing AGENTS.md, memory-bank/, or evolution/ files. Commit first, make a
backup, or copy the samples to a temporary location before asking the agent to
merge them.
From the existing project root:
cp /path/to/skills/AGENTS.md .
cp -R /path/to/skills/memory-bank .
cp -R /path/to/skills/evolution .
mkdir -p docsThen ask the agent to read the project before writing:
Read the existing README, docs, package README files, tests, build files, and
major source directories. Use that actual project content to fill in AGENTS.md,
memory-bank/*, and evolution/*. Preserve useful existing documentation by moving
long-form references into docs/. Keep known gaps visible in the matching
memory-bank/status-Mx.md file. Do not invent product direction that is not
supported by the existing project.
The agent should:
- Inventory existing markdown and source layout.
- Identify commands, dependencies, tests, and harnesses.
- Fill in the memory bank from current project reality.
- Move or summarize long-form references into
docs/. - Keep
README.mdsimple and user-facing. - Leave unresolved gaps as pending or blocked rows in the matching
memory-bank/status-Mx.mdfile.
With an agent such as Codex or Claude Code, the user-facing workflow can be as simple as typing:
tackle next pending item in memory bank
The agent should find the next actionable row in the current milestone's
memory-bank/status-Mx.md file,
complete that task, run the required verification, update the memory bank, and
make a scoped git commit. If that row is the last open item in a milestone, the
agent should run a deep code review of the milestone, run the milestone review
from memory-bank/milestone.md, complete required verification, and make a git
commit for the milestone changes before moving on. During that review it should
also decide whether evolution/ needs a new version because the product
direction, architecture boundary, milestone target, or public/private contract
direction materially changed.
Under the surface, the normal agent workflow is:
- Read
AGENTS.md. - Read the memory bank files in the order listed by
AGENTS.md. - Tackle exactly one scoped task or status row.
- Update the matching memory-bank file if scope, architecture, tools, milestone acceptance, or status changed.
- Mark a row
[+]only after verification passes. - Commit the row as a scoped unit.
- Keep one
memory-bank/status-Mx.mdfile for each milestoneMx. - If a milestone becomes complete, run a deep code review and the milestone
review procedure in
memory-bank/milestone.md. - After review and required verification pass, make a git commit for the milestone changes.
- Check
evolution/and add a new version only when the review finds a real direction, boundary, milestone, or contract change.
Status rows use these markers:
| Symbol | Meaning |
|---|---|
[ ] |
Pending |
[+] |
Completed |
[~] |
In progress |
[!] |
Blocked |
[X] |
Cancelled |
The API harness is account-level because it can drive any project that follows this memory-bank shape.
mkdir -p ~/.local/bin ~/.codex/prompts
cp /path/to/skills/.local/bin/tackle-memory-bank-api-loop ~/.local/bin/
cp /path/to/skills/.codex/prompts/tackle-next-memory-bank-todo.md ~/.codex/prompts/
chmod +x ~/.local/bin/tackle-memory-bank-api-loopRun one row:
LLM_MODEL=gpt-5.5 OPENAI_API_KEY=... MAX_RUNS=1 tackle-memory-bank-api-loop .Run a loop:
LLM_MODEL=gpt-5.5 OPENAI_API_KEY=... MAX_RUNS=5 tackle-memory-bank-api-loop .Use an OpenAI-compatible provider:
LLM_API_BASE=https://openrouter.ai/api/v1 \
LLM_API_KEY=... \
LLM_MODEL=openai/gpt-5.5 \
MAX_RUNS=1 \
tackle-memory-bank-api-loop .Use a local OpenAI-compatible server:
LLM_API_BASE=http://localhost:1234/v1 \
LLM_MODEL=local-model-name \
MAX_RUNS=1 \
tackle-memory-bank-api-loop .Use Anthropic (Claude) instead of the OpenAI-compatible path:
LLM_PROVIDER=anthropic \
LLM_MODEL=claude-opus-4-7 \
ANTHROPIC_API_KEY=... \
MAX_RUNS=1 \
tackle-memory-bank-api-loop .The harness embeds the task instruction in its API prompt. It does not call the Codex CLI, and it does not require the external prompt file at runtime. The prompt file is included as a reusable human/agent reference. The same JSON command protocol drives the agent loop regardless of which provider is used.
For normal project work, tackle-memory-bank-api-loop is an execution harness:
it repeatedly runs an agent against a repository, gives it shell access through a
controlled command protocol, and checks git state between runs.
It becomes part of a model eval harness only when you score outcomes across models, prompts, pass rates, review findings, cost, latency, or regressions.
Read more:
- Keep
AGENTS.mdshort. - Keep project
README.mduser-facing. - Put long explanations in
docs/. - Put active truth in
memory-bank/. - Put historical direction snapshots in
evolution/. - Update memory in the same commit as the code or docs it describes.
- Add a new evolution version only for a real direction change.
- Delete duplicate docs once useful content has been merged.