ci(github): add PR title validation workflow#6
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. 📝 WalkthroughWalkthroughThis PR adds automated PR title validation infrastructure by introducing a GitHub Actions workflow that enforces Conventional Commits format for all pull requests, complemented by contributor documentation explaining the naming conventions and providing usage examples. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
Pre-merge checks✅ Passed checks (5 passed)
Comment |
Co-authored-by: kimchanhyung98 <60088641+kimchanhyung98@users.noreply.github.com>
Co-authored-by: kimchanhyung98 <60088641+kimchanhyung98@users.noreply.github.com>
- Add GitHub Actions workflow (pr-title-check.yml) - Validate PR titles using Conventional Commits format - Require scope for all PRs - Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert - Subject must start with lowercase - Add PR template (pull_request_template.md) - Include type and scope examples - Common scopes: user, product, order, payment, auth, api, database, etc. - Add Korean PR guide (pull-request-guide.md) - Type descriptions table - Scope descriptions table - Title formatting rules and examples 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
@coderabbitai review |
|
@kimchanhyung98: I'll review the changes in this PR for you. ✅ Actions performedReview triggered.
|
|
Starting a code review as requested. Please wait a moment while I analyze the changes. |
There was a problem hiding this comment.
Pull request overview
This PR adds automated PR title validation using GitHub Actions to enforce Conventional Commits format. The implementation goes beyond the minimal specification in the PR description by adding comprehensive configuration options, supporting WIP PRs, and providing bilingual documentation.
Key changes:
- Workflow configured with v6 of the semantic PR action (vs v5 in description) with enhanced validation rules including required scopes, lowercase enforcement, and label-based exceptions
- Comprehensive documentation added in both English (PR template) and Korean (PR guide) with detailed type/scope references and examples
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
.github/workflows/pr-title-check.yml |
Implements PR title validation with conventional commit enforcement, scope requirements, and configurable ignore patterns |
.github/pull_request_template.md |
Provides inline PR template with format guidance, type/scope examples for contributors |
.github/pull-request-guide.md |
Comprehensive Korean documentation detailing PR title rules, types, scopes, and examples |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.github/pull-request-guide.md (1)
39-45: Add language identifier to the fenced code block.The code block is missing a language identifier. Add an empty string or 'text' after the opening fence to satisfy markdownlint.
Based on static analysis hints from markdownlint-cli2.
🔎 Proposed fix
-``` +```text feat(user): add email verification fix(payment): resolve timeout error refactor(order): extract calculation logic docs(api): add OpenAPI specification chore(deps): upgrade Laravel to 12.1</details> </blockquote></details> </blockquote></details> <details> <summary>📜 Review details</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between af441c2738f242a3dae489d1fee7c09f861893f2 and 25eea78de4588719286f64f4cf216ed5a02a3a1c. </details> <details> <summary>📒 Files selected for processing (3)</summary> * `.github/pull-request-guide.md` * `.github/pull_request_template.md` * `.github/workflows/pr-title-check.yml` </details> <details> <summary>🧰 Additional context used</summary> <details> <summary>🪛 markdownlint-cli2 (0.18.1)</summary> <details> <summary>.github/pull-request-guide.md</summary> 39-39: Fenced code blocks should have a language specified (MD040, fenced-code-language) </details> </details> </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)</summary> * GitHub Check: Agent </details> <details> <summary>🔇 Additional comments (5)</summary><blockquote> <details> <summary>.github/pull_request_template.md (1)</summary><blockquote> `1-13`: **LGTM! Clear and consistent PR template.** The template provides helpful guidance that aligns perfectly with the workflow validation rules. The types, scopes, and examples follow the Conventional Commits format correctly. </blockquote></details> <details> <summary>.github/pull-request-guide.md (1)</summary><blockquote> `1-45`: **LGTM! Comprehensive PR guide.** The guide is well-structured and provides clear instructions in Korean. The types, scopes, and examples are all consistent with the workflow validation rules and the PR template. </blockquote></details> <details> <summary>.github/workflows/pr-title-check.yml (3)</summary><blockquote> `21-59`: **Configuration looks good overall.** The action configuration correctly enforces the Conventional Commits format with appropriate types, required scopes, WIP support, and lowercase subject requirement. The custom error message is clear and helpful. --- `42-44`: **Clarify the intent of `disallowScopes` pattern.** The pattern `[A-Z]+` will disallow any scope containing uppercase letters. However, the comment says "Disallow uppercase scopes and multiple scopes", but this pattern won't catch multiple scopes like `scope1,scope2`. If the intent is to disallow multiple scopes, consider using a pattern like `.*,.*` instead. If the intent is to disallow uppercase letters in scopes (which aligns with the lowercase requirement), the current pattern is correct but the comment should be updated. Please clarify the intended behavior: - Should `user,product` (multiple scopes) be disallowed? - Should `User` or `USER` (uppercase scope) be disallowed? - Both? --- `3-14`: **Security implications of `pull_request_target` are appropriate for this use case.** The workflow safely uses `pull_request_target` because `amannn/action-semantic-pull-request@v6` only validates the PR title without executing or checking out any code from the pull request. The write permissions for `pull-requests` and `statuses` are necessary to post validation status checks and comments on PRs from forks, which requires `pull_request_target` instead of `pull_request`. Consider documenting this security design decision (why `pull_request_target` is safe here) for future maintainers, as it helps clarify that this is intentional and safe. </blockquote></details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Introduces a .github/dependabot.yml file with a basic setup for weekly updates. The package ecosystem is not yet specified and should be configured according to project needs.
Updated the dependabot.yml configuration to specify 'npm' as the package-ecosystem, enabling automated dependency updates for npm packages.
Adds GitHub Actions workflow for automatic PR title validation using conventional commit format.
Changes
.github/workflows/pr-title-check.ymlusingamannn/action-semantic-pull-request@v5pull_requestevents:opened,edited,synchronizepermissions: pull-requests: readfor minimal privilegeWorkflow
PRs with non-conforming titles will show a failing status check.
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.
Summary by CodeRabbit
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.