Files
EOS/.pre-commit-config.yaml
T
Bobby NoelteandClaude Opus 5.5 dd41e5d57c chore(ai): add agent self-review and a CI check for agent-assisted PRs
Additional changes
Agents write a task plan to .scratch/<branch>/plan.md and self-review with code-review
Agents fix hard violations, report judgement calls and rerun the self-review before every push
Agents declare the review in a Self-review section of the pull request body
Add the ai-self-review workflow and scripts/check_pr_self_review.py for pull requests into main
Detect agents by Assisted-by or Anthropic Co-Authored-By trailers, body markers or the AI box
Fail only on a missing Self-review section or a missing, malformed or stale Reviewed SHA
Note an unticked AI-assisted box and malformed optional lines without failing
Comment on the pull request how to fix a failure and update that one comment on later runs
Show the same report in the job summary and accept Windows line endings in the body
Skip dependabot and release pull requests
Run on pull_request_target with the base branch's script, never pull request code
Add the pull request template: the pr skill's sections plus Checklist and Self-review
Require always valid optimization parameters in the energy-domain skill
Require datetimeutil for date and time handling in new and changed code in AGENTS.md
Require the Assisted-by trailer on agent commits in the commit-messages skill
Add tests for the check in tests/test_ai.py
Add GLOSSARY.md and the agent tracker docs in docs/agents/
Add decision record docs/adr/0001 with an ADR index in the docs toctree
Document the workflow in docs/develop/ai.md and CONTRIBUTING.md
Exclude docs/agents from Sphinx and PyMarkdown and ignore .scratch/
Document cz check instead of make gitlint for commit messages in docs/develop/ai.md

Assisted-by: Claude Code (claude-opus-5-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 15:37:33 +01:00

98 lines
2.8 KiB
YAML

default_stages: [pre-commit]
# Exclude some file types from automatic code style
exclude: \.(json|csv)$
repos:
# --- Basic sanity checks ---
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-merge-conflict
- id: check-toml
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-merge-conflict
exclude: '\.rst$' # Exclude .rst files from whitespace cleanup
# --- Import sorting ---
- repo: https://github.com/PyCQA/isort
rev: 8.0.1
hooks:
- id: isort
# --- Linting + Formatting via Ruff ---
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.16.3
hooks:
# Run the linter and fix simple isssues automatically
- id: ruff
args: [--fix]
# Run the formatter
- id: ruff-format
- repo: local
hooks:
# Run EOS custom file name linter
- id: eos-filename-linter
name: EOS filename linter
entry: uv run --locked --exact --extra dev python scripts/lint_filenames.py
language: system
types: [python]
pass_filenames: true
# --- Static type checking ---
- repo: local
hooks:
- id: mypy
name: mypy (locked development environment)
entry: uv run --locked --exact --extra dev python -m mypy --config-file pyproject.toml
language: unsupported
pass_filenames: false
always_run: true
# --- Markdown linter ---
- repo: https://github.com/jackdewinter/pymarkdown
rev: v0.9.39
hooks:
- id: pymarkdown
files: ^docs/
# docs/agents/ is seeded from the vendored engineering skills, not user documentation.
exclude: ^docs/agents/
args:
- --config=docs/pymarkdown.json
- scan
# --- Commit message linting ---
# - Local cross-platform hooks
- repo: local
hooks:
# Validate commit messages (using Python wrapper)
- id: commitizen-commit
name: Commitizen (venv-aware)
entry: scripts/cz_check_commit_message.py
language: python
additional_dependencies:
- .
stages: [commit-msg]
pass_filenames: false
# Branch name check on push (using Python wrapper)
- id: commitizen-branch
name: Commitizen branch check
entry: scripts/cz_check_branch.py
language: python
additional_dependencies:
- .
stages: [pre-push]
pass_filenames: false
# Validate new commit messages before push (using Python wrapper)
- id: commitizen-new-commits
name: Commitizen (check new commits only, .venv aware)
entry: scripts/cz_check_new_commits.py
language: python
additional_dependencies:
- .
stages: [pre-push]
pass_filenames: false