# Chemenu - .gitignore # # Rule for this file: `raw/`, `kb/` and `work/` are the repository's content, and # a pattern that silently excludes one of their files is a data-loss bug - the # wiki keeps reporting the file as covered while `publish` never commits it. # So: # 1. Anything repo-local (build output, toolchain state) is anchored with a # leading `/` so it only matches at the repo root. # 2. Directory patterns (`foo/`) must ALWAYS be anchored: git cannot # re-include a file whose parent directory is excluded, so the negation # block at the bottom cannot rescue it. # 3. The negation block at the bottom is the backstop for file patterns. # 4. `reports/` is the exception in the other direction: it holds derived # output that must stay OUT of git, so its rule is required rather than # forbidden. # `tools/wikitool docs verify` enforces all of this with canary probes in both # directions. # OS generated files .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Editor directories and files /.idea/ /.vscode/ *.swp *.swo # Temporary files *.tmp *.temp *~ # Logs (but keep kb/log.md) *.log !kb/log.md # Local environment files .env .env.local .env.*.local # Build artifacts *.exe *.dll *.so *.o *.a __pycache__/ *.pyc *.pyo *.pyd # Node.js /node_modules/ /package-lock.json npm-debug.log* # Python /venv/ /.venv/ /env/ /.env/ /tools/.venv/ /tools/.pytest_cache/ # wikitool session-scoped iteration/cost budget state (see AGENTS.md # "Gates") - local, per-session, never committed /tools/.wikitool_session/ # Go /go.mod /go.sum /bin/ # IDE *.iml *.ipr *.iws # Obsidian (if used locally) /.obsidian/ # Backup files *.bak *.backup *.orig # System files /core /tags /TAGS # Generated lint reports. Derived output: the structural half is recomputable # from the tree at any commit, so committing it would create a second, drifting # copy. The contract explaining that is the one file that must survive. /reports/* !/reports/CONTRACT.md # Per-checkout environment notes (harness, skills, MCP servers, connectors, # remotes - see AGENTS.md "Environment"). Optional, and specific to one # working copy: two clones of this repo are two different environments, so # committing one clone's answers would hand the other a file that is wrong # rather than missing. The `.template` beside it is tracked and ships with # `dist export`; this anchored pattern deliberately does not match it. /ENVIRONMENT.md # Coverage output from `pytest --cov` (see .gitea/workflows/ci.yml). Derived, # like reports/: recomputable from any commit, and `publish` runs `git add -A`, # so an unignored htmlcov/ would commit itself on the next content publish. /tools/.coverage /tools/.coverage.* /tools/coverage.xml /tools/htmlcov/ # Published skills. `instructions//SKILL.md` is the source; these two # directories are copies made by `wikitool instructions sync` for the harnesses # that read them (`.agents/` for Copilot/Codex/Vibe, `.claude/` for Claude # Code). Committing a copy would create the same drifting second copy the # reports rule exists to prevent. A fresh clone publishes them once - see # instructions/bootstrap.md. /.agents/skills/ /.claude/skills/ # Content backstop - keep this block last. Nothing under raw/, kb/ or work/ may # be excluded by a pattern above; see the header note for why directory patterns # still have to be anchored rather than relying on these negations. !raw/** !kb/** !work/**