-
Notifications
You must be signed in to change notification settings - Fork 0
chore(.github): add pre-commit hooks and quality enforcement configs #58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Important
Looks good to me! 👍
Reviewed everything up to 7676081 in 7 seconds. Click for details.
- Reviewed
285lines of code in6files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_39J2Cfqx5Fw1hdM0
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
Summary of ChangesHello @JacobPEvans, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the repository's development workflow by integrating a suite of code quality and consistency tools. It establishes robust configurations for commit message and branch naming conventions, alongside comprehensive pre-commit hooks for automated checks. The changes aim to improve code maintainability, readability, and adherence to project standards by catching issues early in the development cycle. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a comprehensive set of development tools to enforce code quality, which is a great initiative. The configurations for commit message linting, pre-commit hooks, markdown linting, and spell checking are well-structured.
My review focuses on refining these configurations for better usability and correctness. Key feedback points include:
- Correcting invalid version pins in
.pre-commit-config.yamlwhich would prevent the hooks from being installed. - Removing redundant commit message validation to avoid confusion between
commitlintandcommit-check. - Adjusting
commitlintrules to be less restrictive. - Improving the
cspellconfiguration to actually check configuration files. - Minor enhancements to markdown linting and link checking rules.
Overall, these are excellent additions, and with a few adjustments, they will provide a solid foundation for maintaining code quality in the repository.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds repo-wide development tooling configuration intended to standardize commit conventions and run automated quality checks via pre-commit.
Changes:
- Adds commit message and branch name validation via commitlint and commit-check.
- Introduces a pre-commit hook set for YAML hygiene, Markdown linting, spell checking, link checking, and commit-msg validation.
- Extends markdownlint settings and adds standalone configs for cspell and markdown-link-check.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
cchk.toml |
Adds commit-check regex rules for commit messages and branch naming. |
.pre-commit-config.yaml |
Defines pre-commit hooks for hygiene, linting, spell/link checks, and commit-msg validation. |
.markdownlint.json |
Expands markdownlint rule configuration (lengths, headings, HTML allowlist, etc.). |
.markdown-link-check.json |
Adds configuration for markdown-link-check behavior (ignore patterns, retries). |
.cspell.json |
Adds cspell configuration with allowlist words and ignore paths. |
.commitlintrc.yaml |
Adds commitlint rules enforcing conventional commit structure and limits. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Changes based on Gemini Code Assist and Copilot review of PR #58: .pre-commit-config.yaml: - Fix all rev versions to actual latest releases (v6.0.0, v0.20.0, v9.6.0, v3.14.2, v9.24.0, v2.4.1) - Pin @commitlint/config-conventional to 19.8.0 - Simplify install comment to align with CONTRIBUTING.md - Change commit-check to check-branch only (push stage) .commitlintrc.yaml: - Add 'breaking' to type-enum (matches CONTRIBUTING.md) - Remove subject-case rule (too restrictive for acronyms) - Lower body-max-line-length from 200 to 100 cchk.toml: - Remove redundant [commit.message] section (commitlint handles this) - Fix branch regex to match main/develop exactly and require prefix/ format for feature branches .cspell.json: - Remove 'endof' (unlikely to appear in prose) - Keep 'precommit' (the whole point of cspell is to allow non-standard forms that ARE used in the project) - Remove *.yml/*.yaml from ignorePaths so YAML descriptions get spell-checked .markdown-link-check.json: - Add 307/308 redirect status codes .markdownlint.json: - Add MD025 rule for single H1 per document https://claude.ai/code/session_012pnq7NzqB4VkUyQTm9yc8u
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Important
Looks good to me! 👍
Reviewed efe6137 in 10 seconds. Click for details.
- Reviewed
182lines of code in6files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_DBaTPp6g1tR7MjZ4
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Important
Looks good to me! 👍
Reviewed f37051e in 8 seconds. Click for details.
- Reviewed
13lines of code in1files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_EBWjZT6j0afXXOAe
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Important
Looks good to me! 👍
Reviewed b940ac1 in 10 seconds. Click for details.
- Reviewed
41lines of code in3files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_qoZPf9YbqHYgmTnj
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
Analytical Assessment: Is This the Best Approach?What the PR Does WellClean tool separation — After the review fixes, each tool has a single responsibility:
No overlap. No redundancy. This is the right architecture. Versions are all confirmed latest as of 2026-02-07:
Commitlint config was simplified from 68 → 41 lines by removing 7 rules that just re-declared What Was Fixed in This Pass
Design Decision: body-max-line-length as WarningKept as warning (level 1) rather than error (level 2). With Could It Be Simpler?The PR adds 5 new config files (+ enhances 1 existing). For a
The only potential simplification would be removing Verdict: Good to merge. Clean separation, all latest versions, no redundancy, full pre-commit hook coverage verified (all hooks pass on push). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Important
Looks good to me! 👍
Reviewed 7b3cfe9 in 6 seconds. Click for details.
- Reviewed
67lines of code in3files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_fIIUT5fSGbbUUC6C
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
Add pre-commit framework configuration and supporting config files that form the foundation for the Conventional Standards Enforcement Framework (Epic #30). New files: - .pre-commit-config.yaml: Base hooks + commit-msg validation (#25, #26) - .commitlintrc.yaml: Conventional commit rules (#29) - cchk.toml: commit-check branch/message validation (#31) - .cspell.json: Spell-check dictionary (#40) - .markdown-link-check.json: Link checker config (#41) Updated: - .markdownlint.json: Enhanced rules for headings, code blocks, HTML elements, and fenced code style (#42) Closes #25, Closes #26, Closes #29, Closes #31 Closes #40, Closes #41, Closes #42 https://claude.ai/code/session_012pnq7NzqB4VkUyQTm9yc8u
Changes based on Gemini Code Assist and Copilot review of PR #58: .pre-commit-config.yaml: - Fix all rev versions to actual latest releases (v6.0.0, v0.20.0, v9.6.0, v3.14.2, v9.24.0, v2.4.1) - Pin @commitlint/config-conventional to 19.8.0 - Simplify install comment to align with CONTRIBUTING.md - Change commit-check to check-branch only (push stage) .commitlintrc.yaml: - Add 'breaking' to type-enum (matches CONTRIBUTING.md) - Remove subject-case rule (too restrictive for acronyms) - Lower body-max-line-length from 200 to 100 cchk.toml: - Remove redundant [commit.message] section (commitlint handles this) - Fix branch regex to match main/develop exactly and require prefix/ format for feature branches .cspell.json: - Remove 'endof' (unlikely to appear in prose) - Keep 'precommit' (the whole point of cspell is to allow non-standard forms that ARE used in the project) - Remove *.yml/*.yaml from ignorePaths so YAML descriptions get spell-checked .markdown-link-check.json: - Add 307/308 redirect status codes .markdownlint.json: - Add MD025 rule for single H1 per document https://claude.ai/code/session_012pnq7NzqB4VkUyQTm9yc8u
Bump from v19.8.0 to v20.4.1. The only breaking change in v20 is that body-max-line-length now ignores lines containing URLs, which is desirable behavior for this project. https://claude.ai/code/session_012pnq7NzqB4VkUyQTm9yc8u
…rage Remove 7 redundant rule declarations from .commitlintrc.yaml that already match @commitlint/config-conventional defaults. Only 4 rules that actually differ from defaults remain: type-enum, body-leading-blank, footer-leading-blank, and body-max-line-length. Remove *.toml from cspell ignorePaths so user-facing error messages in cchk.toml get spell-checked. Add 'hotfix' to allowlist for the branch naming regex. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add commitlintrc, agentsmd, frontmatter to cspell allowlist (words used in existing repo files caught by spell checker) - Add ../docs/ ignore pattern to markdown-link-check config (PR templates use repo-relative paths that work on GitHub but not in local file resolution) - Pass --config cchk.toml to check-branch hook so commit-check reads project config instead of falling back to built-in defaults - Fix deprecated stage name: push → pre-push Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Critical fixes found during code review:
1. cchk.toml used wrong TOML section [commit.branch] with unsupported
keys (regex, error). The tool reads config.get("branch", {}), expects
allow_branch_types, allow_branch_names, conventional_branch. Rewrote
to correct [branch] section format.
2. Pre-commit args [--config, cchk.toml] replaced the default [--branch]
arg (pre-commit replaces, not merges). Without --branch, commit-check
returned 0 without validating. Removed custom args since cchk.toml is
auto-discovered from default search paths.
3. Install instructions said "pre-commit install" which only installs
pre-commit hooks. commit-msg and pre-push stages need explicit
--hook-type flags. Updated both .pre-commit-config.yaml header and
docs/CONTRIBUTING.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7b3cfe9 to
e2e6949
Compare
Summary
Adds pre-commit hooks and supporting configuration to enforce code quality standards, conventional commit messages, and branch naming conventions.
Changes
Pre-commit Hooks (
.pre-commit-config.yaml)Tool Configuration
.commitlintrc.yamlbreaking, removesbuild/revert/style), body-leading-blank and footer-leading-blank promoted to errorcchk.tomlfeat/,fix/,docs/,chore/,ci/,test/,refactor/,perf/,release/,hotfix/,claude/prefixes plusmain/develop.cspell.json.git,node_modules,*.json,LICENSE.markdown-link-check.json#anchors and../docs/relative paths.markdownlint.jsonOther
docs/CONTRIBUTING.mdinstall instructions to include--hook-type commit-msg --hook-type pre-pushDesign Decisions
@commitlint/config-conventionaldefaultscchk.tomlis auto-discovered by commit-check (default search path), no--configarg neededTest Plan
Closes #25, Closes #26, Closes #29, Closes #31, Closes #40, Closes #41, Closes #42