Unbili is a local MkDocs knowledge site for engineering course notes. The repository stores Markdown source content under docs/, a small amount of MkDocs theme customization, and a generated site/ output directory that is still tracked in Git for historical reasons.
- Python 3.13
- MkDocs
- Material for MkDocs
pymdown-extensions- MathJax
- Giscus
mkdocs.yml: build entry, navigation, theme, Markdown extensions, JS/CSS wiringdocs/: source notes, PDFs, extracted images, local CSS/JS assetsoverrides/: MkDocs Material overridessite/: generated static site output.claude/: Claude-local maintenance guidance and permission settingsrequirements.txt: Python dependenciesMAINTENANCE_LOG.md: human-readable maintenance history and follow-up notes
- Source homepage:
docs/index.md - Build/config entry:
mkdocs.yml - Generated homepage:
site/index.html
Install dependencies:
pip install -r requirements.txtRun a preview server:
mkdocs serveBuild the site:
mkdocs buildRun a disposable validation build without touching tracked site/ output:
powershell -ExecutionPolicy Bypass -File .\scripts\validate-mkdocs.ps1This repository currently uses two note patterns:
- Long-form Markdown pages, usually one course per
index.md - PDF-backed pages with both embedded PDF preview and extracted image fallback
Representative examples:
- Long-form Markdown:
docs/math/ode/index.md - Long-form Markdown:
docs/major/foundation/thermodynamics/index.md - PDF-backed page:
docs/major/foundation/engineering-mechanics.md - PDF-backed page:
docs/physics/optics/interference.md
This repository uses an owner-approved Claude local stop hook that auto-commits and auto-deploys note/config changes. Treat that as an intentional workflow, not an accident.
Current behavior:
- Session stop may auto-commit
docs/andmkdocs.ymlchanges - Session stop may auto-push
main - Session stop may auto-run
mkdocs gh-deploy --force
Because of that:
- Do not leave partial content edits in
docs/ormkdocs.yml - If a task should stay local only, state that explicitly before making those edits
- Review
.claude/settings.local.jsonbefore changing deployment behavior
site/is still tracked in Git, so any local build can dirty the working tree._ode*.txtfiles are temporary extraction artifacts and should not be committed.- Workflow rules currently live partly in
.claude/and must stay synchronized with repository docs.
Preferred local validation:
- Use
scripts/validate-mkdocs.ps1for build verification when you do not intend to refresh trackedsite/ - Use plain
mkdocs buildonly when you intentionally want updated generated output
Codex and Claude should both read these files before editing repository conventions:
SKILL.mdREADME.mdMAINTENANCE_LOG.md.claude/commands/notes-guide.mdscripts/validate-mkdocs.ps1
When changing workflow, deployment, structure, or conventions, append a short log entry to MAINTENANCE_LOG.md.