Goal
Tidy the repo so a first-time visitor (and a fresh git clone) sees a clean,
purposeful layout — closer to TIGER-AI-Lab/OpenResearcher,
whose root is just README.md, pyproject.toml, .gitignore,
.env.template, a few top-level modules, and assets/ + scripts/ + utils/.
Our committed root is already reasonable, but a few things have crept in that
make the project look less polished than it is. None of this touches behavior —
it's pure hygiene.
Checklist
1. Stop tracking .env (priority)
.env is currently committed. It should never be in version control:
2. Expand .gitignore so git status is clean on a fresh checkout
Right now a clone picks up a lot of scratch noise that isn't ignored. Add:
3. Put images in assets/
Mirror OpenResearcher's assets/ dir — move README/figure images there and
reference them via relative paths, instead of leaving screenshots loose.
4. Consolidate non-standard root docs into docs/
docs/ currently holds only v1-vs-v2.md. Move project-internal docs there to
slim the root:
5. Collect loose scripts under scripts/
Match OpenResearcher's scripts/ + utils/ split — move stray top-level shell
/ analysis scripts into scripts/, leaving only the documented entrypoints
(run.sh) at root.
Acceptance
git status on a fresh clone is empty (no untracked cruft)
- root tree is close to OpenResearcher's: README + standard files +
src/ docs/ eval/ assets/ scripts/ tests/
- no secrets tracked anywhere in history
Goal
Tidy the repo so a first-time visitor (and a fresh
git clone) sees a clean,purposeful layout — closer to TIGER-AI-Lab/OpenResearcher,
whose root is just
README.md,pyproject.toml,.gitignore,.env.template, a few top-level modules, andassets/+scripts/+utils/.Our committed root is already reasonable, but a few things have crept in that
make the project look less polished than it is. None of this touches behavior —
it's pure hygiene.
Checklist
1. Stop tracking
.env(priority).envis currently committed. It should never be in version control:git rm --cached .env, commit a.env.templatewith keys only, no values.envto.gitignoregit filter-repo/ BFG) — anything that lived in a public repo must be treated as compromised.env.template2. Expand
.gitignoresogit statusis clean on a fresh checkoutRight now a clone picks up a lot of scratch noise that isn't ignored. Add:
.env._*(macOS AppleDouble files)*.bak,*.bak.*/*.png) — keep intentional images underassets/(see Rename .env.example to .env with PurelyMail config #3)*-this-session-*.txtand similar)3. Put images in
assets/Mirror OpenResearcher's
assets/dir — move README/figure images there andreference them via relative paths, instead of leaving screenshots loose.
4. Consolidate non-standard root docs into
docs/docs/currently holds onlyv1-vs-v2.md. Move project-internal docs there toslim the root:
AGENTS.md→docs/CHANGELOG.md→docs/(or keep at root — maintainer's call)README.md,README.zh-CN.md,LICENSE,NOTICE,CITATION.cff,CONTRIBUTING.md5. Collect loose scripts under
scripts/Match OpenResearcher's
scripts/+utils/split — move stray top-level shell/ analysis scripts into
scripts/, leaving only the documented entrypoints(
run.sh) at root.Acceptance
git statuson a fresh clone is empty (no untracked cruft)src/docs/eval/assets/scripts/tests/