Skip to content

Conversation

@nyatinte
Copy link
Owner

@nyatinte nyatinte commented Jul 23, 2025

Overview

This PR configures lefthook to run git hooks only in Claude Code environments, allowing more flexible development workflows.

Changes

  • Added skip condition to lefthook.yml using CLAUDECODE environment variable
  • Git hooks now only execute when CLAUDECODE=1 (Claude Code environment)
  • Manual development remains unaffected by pre-commit checks

Benefits

  • 🤖 Claude Code gets automatic quality checks for self-correction loops
  • 👨‍💻 Human developers can commit freely without hook interruptions
  • 🔄 Follows Anthropic's recommended practice for AI-driven development

Implementation

Uses lefthook's skip feature with a simple test:

skip:
  - run: test "$CLAUDECODE" != 1  # Skip for non-Claude Code environments

This aligns with the "Create self-sufficient loops" principle from Anthropic's guide on how teams use Claude Code.

Summary by CodeRabbit

  • Chores
    • Updated pre-commit configuration to conditionally skip hooks unless a specific environment variable is set.

- Add skip condition using CLAUDECODE environment variable
- Hooks will only run when CLAUDECODE=1 (Claude Code environment)
- Manual development remains unaffected by git hooks
@coderabbitai
Copy link

coderabbitai bot commented Jul 23, 2025

Walkthrough

A skip condition was added to the pre-commit section of the lefthook.yml configuration file. This condition checks if the CLAUDECODE environment variable is set to 1 and skips pre-commit hooks unless this condition is met. No other changes were made.

Changes

File Change Summary
lefthook.yml Added a skip condition for pre-commit hooks based on CLAUDECODE.

Estimated code review effort

1 (~2 minutes)

Poem

A hop and a skip, a check on the way,
Pre-commit hooks now know when to stay.
If CLAUDECODE’s set, they’ll run with delight,
Else they’ll rest easy, out of sight.
🐇✨
Configuration’s neat, review’s a breeze—
Hopping through changes with relative ease!


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dc3bf13 and 2cda6e8.

📒 Files selected for processing (1)
  • lefthook.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • lefthook.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @nyatinte, 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 introduces a targeted configuration for git hooks, enabling them to run exclusively within specific automated development environments. The primary goal is to optimize the development workflow by providing automated quality checks for AI-driven development while minimizing friction for human developers.

Highlights

  • Conditional Git Hooks: I've configured the lefthook pre-commit git hook to execute only when the CLAUDECODE environment variable is set to 1. This ensures that automated quality checks run specifically within Claude Code environments.
  • Developer Workflow Improvement: This change allows human developers to commit code without being interrupted by pre-commit checks, as these hooks will now be skipped outside of the Claude Code environment.
Using Gemini Code Assist

The 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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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 or fill out our survey to provide feedback.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a 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 correctly configures lefthook to conditionally run pre-commit hooks based on the CLAUDECODE environment variable, which is a great way to tailor the development workflow for different environments. The implementation is sound. My only feedback is a minor suggestion to improve maintainability by ensuring comments are in English, consistent with the rest of the project.

lefthook.yml Outdated

pre-commit:
skip:
- run: test "$CLAUDECODE" != 1 # Claude Code以外はスキップ

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For better maintainability and consistency with the rest of the project, which appears to be primarily in English, it's recommended to write comments in English. This ensures clarity for all current and future contributors. The PR description itself contains a suitable English version of this comment.

    - run: test "$CLAUDECODE" != 1  # Skip for non-Claude Code environments

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jul 23, 2025

Open in StackBlitz

npm i https://pkg.pr.new/nyatinte/ccexp@56

commit: 2cda6e8

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
lefthook.yml (1)

5-6: Make the test more robust & shell-safe

Quoting the literal and adding a default value guards against an unset variable and makes the intent explicit:

-    - run: test "$CLAUDECODE" != 1  # Claude Code以外はスキップ
+    - run: '[ "${CLAUDECODE:-0}" != "1" ]'  # Skip hooks unless running inside Claude Code

${CLAUDECODE:-0} prevents an “unary operator expected” warning under set -u/strict-mode shells.
• Surrounding the whole expression with single quotes avoids YAML parsing edge-cases and keeps the [] POSIX-compatible.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a30c251 and dc3bf13.

📒 Files selected for processing (1)
  • lefthook.yml (1 hunks)
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to {CLAUDE.md,CLAUDE.local.md} : CLAUDE.md and CLAUDE.local.md must be used for project-level and local configuration, respectively
Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to ~/.claude/CLAUDE.md : Global user configuration must be stored in `~/.claude/CLAUDE.md`
lefthook.yml (2)

Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to {CLAUDE.md,CLAUDE.local.md} : CLAUDE.md and CLAUDE.local.md must be used for project-level and local configuration, respectively

Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to ~/.claude/CLAUDE.md : Global user configuration must be stored in ~/.claude/CLAUDE.md

🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to {CLAUDE.md,CLAUDE.local.md} : CLAUDE.md and CLAUDE.local.md must be used for project-level and local configuration, respectively
Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to ~/.claude/CLAUDE.md : Global user configuration must be stored in `~/.claude/CLAUDE.md`
lefthook.yml (2)

Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to {CLAUDE.md,CLAUDE.local.md} : CLAUDE.md and CLAUDE.local.md must be used for project-level and local configuration, respectively

Learnt from: CR
PR: nyatinte/ccexp#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-19T14:41:32.816Z
Learning: Applies to ~/.claude/CLAUDE.md : Global user configuration must be stored in ~/.claude/CLAUDE.md

@nyatinte nyatinte merged commit 77410ec into main Jul 23, 2025
9 checks passed
@nyatinte nyatinte deleted the feat/lefthook-claude-code-only branch July 29, 2025 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants