English | 简体中文
An Agent-native project wiki for AI research / long-horizon projects.
A forkable Markdown wiki skeleton +
CLAUDE.mdthat lets your Agent know your project as well as you do.
"Process the st3 data into gop, run 8-GPU parallel, create the matching launch script, docs and records."
—— What's the project background? What are st3 and gop? Where do the previous launch scripts live? Where should the docs go?
No need to re-declare context in every prompt — the Agent knows this project as well as you do!
We built a wiki framework for research projects, plus a CLAUDE.md / AGENTS.md that tells the Agent how to read it — readable by both humans and Agents.
Given a prompt, the Agent reads CLAUDE.md, enters through Overview.md, finds the matching Data / Training / Eval Overview, assembles paths, configs and naming conventions, then writes scripts, launches jobs, and writes records back to the corresponding docs.
✨ Auto write-back once a task completes:
When you're using Claude Code / Codex-style Agents to modify code or kick off training:
- To make the Agent do one thing, you first spend several minutes writing a long prompt, pasting context piece by piece —— what the project is about, where the data is, which previous training script to reference, the naming rules, which directory the config files live in…… The actual instruction is short. Writing all of that is exhausting, and easy to miss pieces.
- Data / training / eval are usually scattered across different repos, checkpoints live somewhere on the cluster, and the Agent has no single entry point to find them.
- Running multiple Agents in parallel on the same project gets messy fast: your brain context-switches between tasks and the error rate spikes.
- Come back a few weeks later and you can't remember how run-7 and run-9 differ —— never mind expecting the Agent to remember.
The root cause is the same: the Agent has no persistent project context — every conversation starts from zero.
Build one Obsidian wiki repo per research project, plus a CLAUDE.md / AGENTS.md telling the Agent how to read it:
- Docs are linked with wiki-style
[[ ]]links, withOverview.mdas the single entry point. - Each doc is length-bounded; the Agent does progressive disclosure — read on demand, instead of drowning in the whole project up front.
- After the Agent finishes a task, it writes back data batches, training records, and eval results into the corresponding docs, so next time it doesn't need to be explained again.
Below is an actual screenshot of this repo's Obsidian Graph View (filenames redacted). Overview sits at the center, radiating out via [[ ]] links into Data / Training / Eval and other partitions — forming a real document graph that the Agent walks from the single entry point and drills into any sub-task on demand.
This repo is itself an abstract skeleton you can clone and rewrite for your own project:
Overview.md # Single entry: background, goals, methods, task navigation
CLAUDE.md / AGENTS.md # Agent read/write conventions (Claude Code / Codex / ...)
Storyline/ # Long-form narrative split from Overview: Introduction / RelatedWork / Target
Data/ # Data tasks (DataOverview + Records/)
Training/ # Training tasks (TrainingOverview + Records/)
Eval/ # Eval tasks (EvalOverview + Records/)
ExperimentalTracks/ # Unconverged side tracks (includes abandoned/ archive)
ResearchNotes/ # Background research, comparisons, decision rationale (read on demand)
Shared/ # Cross-task technical notes (env, cluster, general tools, ...)
skills/ # Bundled Skills (import-notes, project-doc-update)
zh-CN/ # Full Chinese mirror of the wiki above
This is a generic framework that fits most AI research projects and can be lightly tailored to your own.
- English (default, at the repo root):
README.md,Overview.md,CLAUDE.md,AGENTS.md,Data/,Training/,Eval/, ... - Simplified Chinese (full mirror):
README.zh-CN.mdat the root, and the full wiki mirror underzh-CN/(zh-CN/Overview.md,zh-CN/CLAUDE.md,zh-CN/Data/,zh-CN/Training/,zh-CN/Eval/, ...).
If you fork this repo and only work in one language, you can delete the other version.
- Fork / clone this repo
- Open it in your Markdown editor of choice (Obsidian recommended — see "Editor choices" below)
- Rewrite
Overview.mdand the Overviews underData//Training//Eval/for your project - Point your Agent at
CLAUDE.md/AGENTS.mdin this repo - Start using one-sentence prompts
Obsidian is not a hard dependency. All docs here are plain Markdown; [[ ]] is just a wiki-style link syntax that many tools parse:
- Obsidian (recommended): native
[[ ]], backlinks, graph view - VSCode with Foam or Markdown Links
- Logseq / Dendron / SiYuan or any other
[[ ]]-aware notes tool - Plain text editors: the Agent treats
[[ ]]as plain-text search anyway, so vim / nano works too
This repo ships two ready-to-use skills under skills/:
If you already have an in-flight research project, you likely have a pile of notes sitting in another notes app. This skill lets the Agent classify and file your existing notes into the right directories according to this repo's current rules, and update the indexes accordingly.
Two input modes are supported:
- Folder: give a directory path; the Agent walks it and reads anything it can parse (
.md/.txt/.pdf/.docx/ web clippings…) - Inline prompt: paste the note content directly into the conversation
Usage: trigger /import-notes (or just tell the Agent "import these notes" / "integrate this batch"). The Agent first proposes a migration plan; you confirm, then it writes. Add "batch mode" to skip per-item confirmation. You can import in multiple passes — just rerun it when new batches arrive.
When the Agent adds, modifies, or reorganizes project docs, it needs to follow this repo's doc-organization rules (which directory, how to name, how to link, how to archive). This skill centralizes those rules and auto-triggers whenever the Agent touches docs, keeping the wiki structure consistent.
Usage: generally no explicit invocation needed. When you ask the Agent to touch project docs (e.g. "write this eval result into the eval records" / "tidy up the stale tracks under ExperimentalTracks"), it'll apply this automatically. If you want it to forcibly sweep over the docs, say "clean up the docs following project-doc-update".
Drop all skills under skills/ into Claude Code's skills directory in one go.
User level (globally available):
mkdir -p ~/.claude/skills
cp -r skills/* ~/.claude/skills/Project level (scoped to this repo):
mkdir -p .claude/skills
cp -r skills/* .claude/skills/Other Agent tools that follow the SKILL.md convention (Codex, etc.) are the same — drop skills/ contents into its skills search path, or reference the SKILL.md files directly in the prompt.
A single-file rule (CLAUDE.md / AGENTS.md / .cursorrules) is enough for small projects, but after a research project has been running for a while you hit three problems:
- Context blowup: data, training, eval, experimental tracks, research notes all crammed into one file doesn't fit in the Agent's context.
- No progressive disclosure: the Agent can't read only the slice relevant to the current task type. Training tasks don't need data-processing details; eval tasks don't need abandoned experimental tracks.
- No write-back loop: a single-file rule is a read-only "instruction", not a "project memory" the Agent can maintain incrementally.
This repo's approach: treat CLAUDE.md / AGENTS.md as Agent "navigation instructions" (where to enter, how to read, how to write), and move the actual project context into an Obsidian wiki that the Agent reads on demand and continuously writes back to.
The recommended multi-repo layout (also what Overview.md assumes):
{{project root}}/
├── ResearchProjectWiki/ # Docs repo (fork of this), Agent cwd defaults here
│ ├── CLAUDE.md / AGENTS.md
│ ├── Overview.md
│ ├── {{data-pipeline repo}} # → symlinked from {{code root}}/{{data-pipeline repo}}
│ ├── {{training repo}} # → symlinked from {{code root}}/{{training repo}}
│ └── {{eval repo}} # → symlinked from {{code root}}/{{eval repo}}
├── {{code root}}/
│ ├── {{data-pipeline repo}}/
│ │ └── datasets/ # → symlinked from {{data root}}/processed/
│ ├── {{training repo}}/
│ │ └── outputs/ # → symlinked from {{output root}}/
│ └── {{eval repo}}/
├── {{data root}}/ # raw data + processed artifacts
└── {{output root}}/ # checkpoints / logs / eval results
When starting the Agent, cd into the docs repo root (ResearchProjectWiki/). CLAUDE.md will be auto-loaded by Claude Code; the Agent enters from Overview.md and walks through the symlinks to reach every code repo, dataset and output path. You don't need to bounce the Agent between code repos.
The wiki structure and skills here are plain Markdown, decoupled from any specific Agent tool. Mapping:
| Agent tool | Where to put the rules file | Where to put skills / custom instructions |
|---|---|---|
| Claude Code | Auto-reads CLAUDE.md (project root) |
~/.claude/skills/ or .claude/skills/ |
| Codex CLI | Auto-reads AGENTS.md (project root) |
~/.agents/skills/ or .agents/skills/ |
| Cursor | .cursor/rules/*.mdc or .cursorrules |
@-reference SKILL.md from the rules |
| Others | Point to CLAUDE.md / AGENTS.md as system prompt |
Tell the Agent the skills/ path |
For tools without a native skill mechanism, the simplest fix is to add a line to their rules file: "When maintaining docs, follow the rules in skills/project-doc-update/SKILL.md".
MIT License — fork, modify, and use commercially at will.


