Repository operating guide for coding agents in ssl-website.
- Project type: Sphinx documentation website (Python)
- Dependency manager:
uv - Python version target:
3.14(.python-version) - Source directory:
src/ - Build output directory:
build/ - Main Sphinx config:
src/conf.py - CI workflow:
.github/workflows/build.yml
Checked paths:
.cursor/rules/-> not present.cursorrules-> not present.github/copilot-instructions.md-> not present
If these files are added later, treat them as higher-priority instructions and update this document.
- Recommended model for agentic edits in this repo:
GPT-5.3-Codex - Preferred access path: GitHub Copilot
Preferred setup:
uv syncMake helper:
make create-devNotes:
make create-devrunsuv syncanduv build- Prefer
uv run <command>for tools inside the managed environment
There is no dedicated lint/test framework configured in repo config files
(no project-level pytest, ruff, mypy, black, flake8, or pylint
configuration detected).
The Sphinx build is the effective validation gate.
Build site:
make build-projEquivalent direct command:
uv run sphinx-build -vvv --write-all --fresh-env src buildLocal live preview:
make serve-siteEquivalent direct command:
uv run sphinx-autobuild src buildStrict docs validation (recommended before PR):
uv run sphinx-build -n -W --keep-going --write-all src buildLink validation (recommended when URLs change):
uv run sphinx-build -b linkcheck src build/linkcheckThere is currently no unit-test suite, so no true single-test command exists. Use targeted checks instead:
- Run strict Sphinx build
- Verify only the changed pages in
build/ - Run linkcheck if links were added/updated
If pytest is introduced later, use this single-test pattern:
uv run pytest tests/path/test_file.py::test_name- Keep documentation source under
src/ - Keep generated artifacts under
build/only - Keep reusable profile snippets in
src/_static/*.rst - Keep style overrides in
src/_static/custom.css - Keep publication pages in
src/publications/
Applies to src/conf.py and any new Python code.
- Follow PEP 8 with 4-space indentation
- Use explicit imports; avoid wildcard imports
- Group imports: standard library, third-party, local
- Remove unused imports
- Use
snake_casefor functions/variables/modules - Use
UPPER_SNAKE_CASEfor constants - Prefer descriptive names over abbreviations
- Add type hints for new code when practical
- Keep functions focused and side effects explicit
- Fail early with clear, actionable messages
- Raise specific exceptions
- Avoid broad
except Exceptionunless re-raising/context wrapping - Do not silently swallow exceptions
- Validate paths and required keys before processing
- Preserve root cause on re-raise (
raise ... from err)
- Preserve existing heading hierarchy/adornment style per file
- Keep prose concise, factual, and non-redundant
- Keep line wrapping readable and consistent
- Reuse directives already used in this repo (
grid,include, admonitions) - Keep include boundaries exact for
:start-after:and:end-before: - Do not rename sentinel markers in
_static/*.rstcasually - Avoid broad rewrites unless explicitly requested
- Match surrounding quote and formatting style in touched files
- Avoid formatting-only churn in unrelated sections
- Keep names and capitalization consistent with existing member entries
- Preserve existing Unicode names where already present
- Keep changes small, localized, and reviewable
- Make scoped edits in
src/_static/custom.css - Prefer extending existing styles over global overrides
- Avoid changes that can destabilize Sphinx Book Theme defaults
- Validate rendering on desktop and mobile
Current workflow behavior:
- Setup Python (workflow currently uses 3.13)
- Install
uvand runuv sync - Build docs with
sphinx-build --write-all src build - Publish built site
Agent changes should remain compatible with this flow.
- Run
uv syncif dependencies/config changed - Run strict docs build
- Run linkcheck for URL changes
- Verify changed pages render correctly
- Confirm include slices still resolve
- Keep commit/PR message focused on why
- Do not assume
pytestexists today - Do not assume a linter/formatter is configured today
- Do not assume Node/npm tooling exists
- Do not assume markdown-first docs (this repo is RST-first)
When tests/linters/tooling/CI/rule files change, update AGENTS.md immediately
so future agents get accurate guidance.