docs, feat(SREP-4460, SREP-4926: Add Standardized Claude hooks, skill, agents. Update standardised docs)#556
Conversation
|
@devppratik: This pull request references SREP-4460 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. This pull request references SREP-4926 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: devppratik The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdds a Claude developer tooling suite: agent playbooks, hook scripts and stop validation, skills and helper scripts for Prow CI, prek/pre-commit CI configs, gitleaks rules, Claude settings, and contributor/developer documentation. ChangesClaude Developer Tooling & Automation
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 14 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (14 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #556 +/- ##
==========================================
+ Coverage 68.29% 75.10% +6.81%
==========================================
Files 8 8
Lines 1088 1374 +286
==========================================
+ Hits 743 1032 +289
+ Misses 315 312 -3
Partials 30 30 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
hack/prek.ci.toml (1)
1-64:⚠️ Potential issue | 🟠 Major | ⚡ Quick winGitleaks secret scanning is missing from CI configuration.
The CI variant of the prek config (
hack/prek.ci.toml) excludes the gitleaks hook that is present in the development config (prek.tomllines 26-32). This creates a security gap where secrets could be committed and reach CI without detection during pre-commit.Gitleaks does not require internal network access and should run in CI to provide a final safety check before merge. The security-agent documentation (
.claude/agents/security-agent.mdlines 208-209) explicitly states "CI: Tekton runs gitleaks and gosec", but this CI config does not enable gitleaks.🔒 Proposed fix to add gitleaks to CI config
] +# Gitleaks secret scanning +[[repos]] +repo = "https://github.com/gitleaks/gitleaks" +rev = "v8.18.0" +hooks = [ + { id = "gitleaks", args = ["--config=.gitleaks.toml"] }, +] + # golangci-lint static analysis [[repos]]Based on learnings, never commit secrets, tokens, or credentials. CI must validate this before merge.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@hack/prek.ci.toml` around lines 1 - 64, The CI prek config is missing the gitleaks pre-commit hook (id "gitleaks"), so add the same gitleaks hook entry used in the dev config into hack/prek.ci.toml's hooks list: create a hook with id "gitleaks" (matching the dev/prek.toml configuration), include the same repo/rev/args/regex settings used for detection, and place it alongside the file-hygiene hooks (the first [[repos]] block) so CI runs gitleaks before merges; ensure any pass_filenames or timeout settings mirror the development config to maintain consistent behavior in CI.
🧹 Nitpick comments (2)
.claude/agents/docs-agent.md (1)
188-198: 💤 Low valueAdd language identifier to fenced code block.
The code block at line 188 lacks a language identifier. Adding
textwould improve semantic clarity and address the markdownlint warning.📝 Proposed fix
-``` +```text Updated: DEVELOPMENT.md - Added section on new make target: go-bench - Fixed typo in test commands🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/agents/docs-agent.md around lines 188 - 198, The fenced code block using triple backticks that contains the "Updated: DEVELOPMENT.md" changelog lacks a language identifier; update the opening fence from "```" to "```text" so the block is tagged as text (use the exact identifier text) to satisfy markdownlint and improve semantic clarity..claude/skills/README.md (1)
66-72: ⚡ Quick winSpecify language for fenced code block.
The directory structure example should specify a language identifier (e.g.,
textortree) for proper rendering.📝 Proposed fix
-``` +```text .claude/skills/ ├── README.md └── skillname/🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/README.md around lines 66 - 72, The fenced directory-structure block in .claude/skills/README.md lacks a language identifier; update the opening fence from ``` to a language such as ```text (or ```tree) so the tree/ASCII diagram renders correctly—modify the block that shows ".claude/skills/ ├── README.md └── skillname/ ├── SKILL.md └── reference/" to use the chosen language identifier.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/hooks/README.md:
- Around line 180-183: Update the "Automatic Validation" docs to reflect the
stop hook's actual behavior: change the statement that the stop hook runs `prek
run --all-files` on every turn to explain that the stop hook runs conditionally
by default and invokes `prek run` with a CI config (e.g. `--config
hack/prek.ci.toml`) rather than unconditionally using `--all-files`; reference
the stop hook and the `prek run` invocation so readers understand the
conditional execution and the use of the CI config flag.
In @.claude/settings.json:
- Around line 37-42: Update .claude/settings.json to explicitly deny the
SKIP=... hook-bypass pattern by adding a deny entry alongside "Bash(git commit
--no-verify)"—for example add a rule like "Bash(SKIP=* git commit *)" (or
equivalent pattern matching used in this file) so that both env-variable
bypasses and --no-verify are blocked; modify the list that currently contains
"Bash(git commit --no-verify)" and other Bash entries to include this new deny
pattern referencing the same array where "Bash(git push --force origin master)"
and "Bash(git push --force origin main)" appear.
In @.gitleaks.toml:
- Line 28: The global allowlist entry [allowlist].paths = '.*_test\.go' is too
broad and suppresses findings in all Go tests; narrow or remove it by replacing
that pattern with a more specific path or filename regex (e.g., target only
fixture or testdata directories or explicit fixture filenames) or remove the
allowlist line entirely, ensuring you update the .gitleaks.toml entry for
[allowlist].paths to something like a scoped regex that only matches known safe
fixture test files rather than '.*_test\.go'.
- Around line 34-58: The global [allowlist] entries (the regexes array and
stopwords array) are too broad and can suppress real findings; instead, move or
duplicate only the truly benign patterns into per-rule allowlists using
targetRules, and/or tighten the patterns (e.g., anchor or scope the regexes like
the placeholder entry) so they only match intended test files; update the
regexes array and stopwords array to remove generic tokens ("test", "fake",
"dummy", "placeholder", etc.) and add scoped allowlist entries on the specific
rule definitions (using targetRules) that produced the false positives.
---
Outside diff comments:
In `@hack/prek.ci.toml`:
- Around line 1-64: The CI prek config is missing the gitleaks pre-commit hook
(id "gitleaks"), so add the same gitleaks hook entry used in the dev config into
hack/prek.ci.toml's hooks list: create a hook with id "gitleaks" (matching the
dev/prek.toml configuration), include the same repo/rev/args/regex settings used
for detection, and place it alongside the file-hygiene hooks (the first
[[repos]] block) so CI runs gitleaks before merges; ensure any pass_filenames or
timeout settings mirror the development config to maintain consistent behavior
in CI.
---
Nitpick comments:
In @.claude/agents/docs-agent.md:
- Around line 188-198: The fenced code block using triple backticks that
contains the "Updated: DEVELOPMENT.md" changelog lacks a language identifier;
update the opening fence from "```" to "```text" so the block is tagged as text
(use the exact identifier text) to satisfy markdownlint and improve semantic
clarity.
In @.claude/skills/README.md:
- Around line 66-72: The fenced directory-structure block in
.claude/skills/README.md lacks a language identifier; update the opening fence
from ``` to a language such as ```text (or ```tree) so the tree/ASCII diagram
renders correctly—modify the block that shows ".claude/skills/ ├── README.md └──
skillname/ ├── SKILL.md └── reference/" to use the chosen language identifier.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 99841ecf-71c2-4b18-b70e-d2b4a0f6f6da
📒 Files selected for processing (21)
.claude/agents/README.md.claude/agents/ci-agent.md.claude/agents/docs-agent.md.claude/agents/lint-agent.md.claude/agents/security-agent.md.claude/agents/test-agent.md.claude/hooks/README.md.claude/hooks/cleanup.sh.claude/hooks/pre-edit.sh.claude/hooks/stop-prek-validation.sh.claude/settings.json.claude/skills/README.md.claude/skills/prow-ci/SKILL.md.gitleaks.toml.prek-versionCONTRIBUTING.mdDEVELOPMENT.mdTESTING.mdhack/ci.shhack/prek.ci.tomlprek.toml
|
/hold |
2f3f617 to
03e529d
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
.claude/agents/docs-agent.md (1)
44-45: ⚡ Quick winValidation examples miss
docs/**/*.mdfiles.Several commands only scan top-level
*.md, so drift underdocs/is skipped even though this file declaresdocs/*.mdin scope.Suggested doc fix
-grep '```bash' -A 10 *.md | grep '^make\|^go\|^ginkgo' +grep -r '```bash' -A 10 . --include='*.md' | grep '^make\|^go\|^ginkgo' -grep -E '```$' *.md # Code blocks without language -grep -E '\[.*\]\(\./' *.md # Relative links to check +grep -r -E '```$' . --include='*.md' # Code blocks without language +grep -r -E '\[.*\]\(\./' . --include='*.md' # Relative links to check -grep '```bash' *.md | grep 'make ' | sed 's/.*make \([a-z-]*\).*/\1/' | sort -u +grep -r '```bash' . --include='*.md' | grep 'make ' | sed 's/.*make \([a-z-]*\).*/\1/' | sort -uAlso applies to: 59-61, 179-183
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/agents/docs-agent.md around lines 44 - 45, Update all grep invocations that scan only top-level *.md to run recursively with an include filter for markdown files: replace occurrences of patterns like "grep '```bash' -A 10 *.md", "grep -E '```$' *.md", "grep -E '\\[.*\\]\\(\\./' *.md", and "grep '```bash' *.md | grep 'make ' ..." with their recursive equivalents using "-r . --include='*.md'". Locate these exact string patterns in the doc and change them to use grep -r with --include='*.md' so docs/**/*.md are scanned.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/agents/docs-agent.md:
- Around line 188-198: The fenced code block showing the changelog snippet lacks
a language tag and triggers MD040; update the block around the changelog (the
triple-backtick fence containing "Updated: DEVELOPMENT.md" and the bullet lines)
to include a language identifier (e.g., add ```text or ```diff) so the lint rule
passes and formatting is preserved.
In @.claude/skills/README.md:
- Around line 66-72: The fenced directory-tree block in .claude/skills/README.md
is missing a language tag; update the opening fence from ``` to ```text so the
block becomes a text code block (e.g., change the triple-backticks before the
".claude/skills/" tree to "```text") to satisfy MD040 and ensure the directory
tree is treated as plain text.
---
Nitpick comments:
In @.claude/agents/docs-agent.md:
- Around line 44-45: Update all grep invocations that scan only top-level *.md
to run recursively with an include filter for markdown files: replace
occurrences of patterns like "grep '```bash' -A 10 *.md", "grep -E '```$' *.md",
"grep -E '\\[.*\\]\\(\\./' *.md", and "grep '```bash' *.md | grep 'make ' ..."
with their recursive equivalents using "-r . --include='*.md'". Locate these
exact string patterns in the doc and change them to use grep -r with
--include='*.md' so docs/**/*.md are scanned.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: dae78451-062b-4d0d-b499-39c658395e08
📒 Files selected for processing (21)
.claude/agents/README.md.claude/agents/ci-agent.md.claude/agents/docs-agent.md.claude/agents/lint-agent.md.claude/agents/security-agent.md.claude/agents/test-agent.md.claude/hooks/README.md.claude/hooks/cleanup.sh.claude/hooks/pre-edit.sh.claude/hooks/stop-prek-validation.sh.claude/settings.json.claude/skills/README.md.claude/skills/prow-ci/SKILL.md.gitleaks.toml.prek-versionCONTRIBUTING.mdDEVELOPMENT.mdTESTING.mdhack/ci.shhack/prek.ci.tomlprek.toml
✅ Files skipped from review due to trivial changes (7)
- .prek-version
- DEVELOPMENT.md
- .claude/agents/ci-agent.md
- TESTING.md
- CONTRIBUTING.md
- .claude/agents/test-agent.md
- .claude/agents/security-agent.md
🚧 Files skipped from review as they are similar to previous changes (9)
- hack/prek.ci.toml
- hack/ci.sh
- .claude/agents/lint-agent.md
- .gitleaks.toml
- .claude/settings.json
- prek.toml
- .claude/hooks/cleanup.sh
- .claude/hooks/pre-edit.sh
- .claude/hooks/stop-prek-validation.sh
d109ca8 to
ecd32fc
Compare
There was a problem hiding this comment.
Actionable comments posted: 8
♻️ Duplicate comments (3)
.claude/agents/docs-agent.md (1)
188-198:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd a language tag to the fenced output block.
This block still triggers MD040; use
```text(or```diff) on the opening fence.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/agents/docs-agent.md around lines 188 - 198, The fenced code block starting with ``` and containing the change summary triggers MD040; update the opening fence to include a language tag (e.g., change ``` to ```text or ```diff) so the block is explicitly marked (locate the triple-backtick fenced block that wraps "Updated: DEVELOPMENT.md" and add the language tag on the opening fence)..claude/skills/README.md (1)
66-72:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd a language tag to the directory-tree fence.
Please change the opening fence to
```textto satisfy MD040.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/README.md around lines 66 - 72, The fenced block in .claude/skills/README.md showing the directory tree lacks a language tag and triggers MD040; update the opening fence from ``` to a language-tagged fence such as ```text so the directory-tree block in README.md (the .claude/skills/ directory-tree snippet) is recognized as plain text by the linter..claude/hooks/README.md (1)
180-183:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAutomatic-validation docs are still inconsistent with the hook implementation.
This section still states “every turn” +
--all-files, but the stop hook is conditional by default and runs with--config hack/prek.ci.toml.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/hooks/README.md around lines 180 - 183, Update the "Automatic Validation" section to match the hook implementation: change the description of the "stop hook" behavior (referenced as "stop hook" and the "Automatic Validation" heading) to state that the stop hook is conditional by default and, when active, invokes prek with --config hack/prek.ci.toml rather than running prek run --all-files on every turn; ensure the text replaces "On every turn: Stop hook runs `prek run --all-files`" with a concise note about the conditional default and the --config usage.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/hooks/stop-prek-validation.sh:
- Around line 23-38: The script calls jq (-n) when handling the "not in a git
repo" path before verifying jq is installed; either check for jq availability
earlier (move the if ! command -v jq ... block above the REPO_ROOT/git rev-parse
usage) or avoid requiring jq for early errors by replacing the jq -n usage with
a plain here-doc JSON (same format used later) so the REPO_ROOT check can emit
valid hook JSON without invoking jq; look for the REPO_ROOT assignment and the
jq -n invocation and update accordingly, keeping the existing command -v jq
dependency check intact.
In @.claude/skills/prow-ci/analyze_failure.py:
- Line 11: Replace the unsafe xml.etree.ElementTree import with
defusedxml.ElementTree and narrow the broad exception handler around
ET.parse(...) so it only catches XML parse and defused-XML security errors:
catch ET.ParseError and defusedxml.common.DefusedXmlException (and its
subclasses such as EntitiesForbidden, DTDForbidden) instead of a blanket except
Exception; update the import to use defusedxml.ElementTree as ET and update the
except block around the ET.parse call to log the specific exception and
skip/continue processing as before.
In @.claude/skills/prow-ci/SKILL.md:
- Around line 69-71: The fenced code block containing the example URL in
SKILL.md is missing a language specifier required by markdownlint MD040; update
the triple-backtick fence that wraps the URL (the fenced block shown between
lines with "```" and the URL "https://prow.ci.openshift.org/...") to include a
language token such as text (e.g., change "```" to "```text") so the block is
labeled and MD040 is satisfied.
- Line 7: Update the heading text "Rbac Permissions Operator" to proper casing
"RBAC Permissions Operator" and remove the hardcoded personal absolute path
referenced in the content (the /home/... local path used as an example); replace
that absolute path with a repository-relative path or a placeholder like
"<repo_root>/path/to/repo" or "./" so the guide is portable for all contributors
and update any adjacent occurrences accordingly.
In @.gitleaks.toml:
- Around line 12-19: Add an [extend] section with useDefault = true to the
.gitleaks.toml so the file extends Gitleaks' built-in rules rather than acting
as a standalone config; specifically, insert an [extend] header and set the
useDefault key to true (e.g., [extend] useDefault = true) near the top of the
file (close to the existing [allowlist] block) so that running prek.toml with
--config=.gitleaks.toml will include the default Gitleaks detectors in addition
to any custom [[rules]].
In `@prek.toml`:
- Around line 71-76: The RBAC wildcard hook is configured to run via entry =
"bash -c 'make rbac-wildcard-check'" but the Make target rbac-wildcard-check in
boilerplate/openshift/golang-osd-operator/standard.mk currently only prints
warnings and exits 0, so the prek hook can never fail; update the make target
(rbac-wildcard-check) or add a wrapper so it returns non-zero when wildcard RBAC
violations are detected (e.g., change the check logic in standard.mk lines
around the rbac-wildcard-check target to exit 1 on any match or propagate a
failing exit code), ensuring prek's hook can block CI when violations are found.
In `@TESTING.md`:
- Around line 131-147: The fenced code block containing the test example has two
opening "```go" markers; remove the extra opener so there is exactly one opening
"```go" and a single closing "```", i.e. ensure the block that starts with
It("should reconcile resource", func() { ... }) is wrapped by a single pair of
code fences to satisfy markdownlint.
- Around line 267-275: Update the conflicting Pre-commit section in TESTING.md
to remove or clarify the misleading YAML snippet and explicitly state that
running full Go tests is not automated by pre-commit in the current repo;
instead, mention that prek.toml only includes go-build, go-mod-tidy, and
rbac-wildcard-check and that developers must run make go-test manually before
pushing (i.e., it's a manual pre-push step). Refer to the "Pre-commit" section
and the example YAML block in TESTING.md when making this change.
---
Duplicate comments:
In @.claude/agents/docs-agent.md:
- Around line 188-198: The fenced code block starting with ``` and containing
the change summary triggers MD040; update the opening fence to include a
language tag (e.g., change ``` to ```text or ```diff) so the block is explicitly
marked (locate the triple-backtick fenced block that wraps "Updated:
DEVELOPMENT.md" and add the language tag on the opening fence).
In @.claude/hooks/README.md:
- Around line 180-183: Update the "Automatic Validation" section to match the
hook implementation: change the description of the "stop hook" behavior
(referenced as "stop hook" and the "Automatic Validation" heading) to state that
the stop hook is conditional by default and, when active, invokes prek with
--config hack/prek.ci.toml rather than running prek run --all-files on every
turn; ensure the text replaces "On every turn: Stop hook runs `prek run
--all-files`" with a concise note about the conditional default and the --config
usage.
In @.claude/skills/README.md:
- Around line 66-72: The fenced block in .claude/skills/README.md showing the
directory tree lacks a language tag and triggers MD040; update the opening fence
from ``` to a language-tagged fence such as ```text so the directory-tree block
in README.md (the .claude/skills/ directory-tree snippet) is recognized as plain
text by the linter.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 3c5edaf0-c5a9-4433-bba2-202cf6b41a30
📒 Files selected for processing (24)
.claude/agents/README.md.claude/agents/ci-agent.md.claude/agents/docs-agent.md.claude/agents/lint-agent.md.claude/agents/security-agent.md.claude/agents/test-agent.md.claude/hooks/README.md.claude/hooks/cleanup.sh.claude/hooks/pre-edit.sh.claude/hooks/stop-prek-validation.sh.claude/settings.json.claude/skills/README.md.claude/skills/prow-ci/SKILL.md.claude/skills/prow-ci/analyze_failure.py.claude/skills/prow-ci/fetch_prow_artifacts.py.gitignore.gitleaks.toml.prek-versionCONTRIBUTING.mdDEVELOPMENT.mdTESTING.mdhack/ci.shhack/prek.ci.tomlprek.toml
✅ Files skipped from review due to trivial changes (7)
- .gitignore
- .prek-version
- .claude/hooks/cleanup.sh
- DEVELOPMENT.md
- CONTRIBUTING.md
- .claude/agents/test-agent.md
- .claude/agents/security-agent.md
🚧 Files skipped from review as they are similar to previous changes (6)
- hack/prek.ci.toml
- .claude/hooks/pre-edit.sh
- .claude/agents/lint-agent.md
- .claude/settings.json
- hack/ci.sh
- .claude/agents/ci-agent.md
ecd32fc to
8516e0b
Compare
There was a problem hiding this comment.
♻️ Duplicate comments (10)
.claude/hooks/README.md (1)
180-183:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAlign automatic-validation docs with actual stop-hook behavior.
Line 182 currently says the stop hook runs
prek run --all-fileson every turn, but implementation is conditional by default and uses--config hack/prek.ci.toml. Please update this section to avoid misleading contributors.📝 Suggested doc fix
### Automatic Validation Prek runs automatically: -- **On every turn**: Stop hook runs `prek run --all-files` +- **On stop (default, when changes exist)**: Stop hook runs `prek run --config hack/prek.ci.toml` +- **On every stop (strict mode)**: Set `CLAUDE_LINT_ON_STOP=true` - **On commit**: Pre-commit hook runs relevant checks🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/hooks/README.md around lines 180 - 183, The docs incorrectly state the stop hook always runs `prek run --all-files`; update the "Automatic Validation" section to match the actual stop-hook behavior by noting that the stop hook is conditional by default and invokes Prek with the CI config (e.g., `prek run --all-files --config hack/prek.ci.toml`) only when enabled; reference the stop hook and the `--config hack/prek.ci.toml` flag and clarify that per-turn execution is not unconditional but controlled by the hook configuration..claude/skills/README.md (1)
66-72:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd a language tag for the directory tree block.
The fenced block is missing a language specifier (MD040).
Suggested doc fix
-``` +```text .claude/skills/ ├── README.md └── skillname/🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/README.md around lines 66 - 72, The fenced directory-tree block in README.md is missing a language specifier (MD040); update the triple-backtick fence that contains the .claude/skills directory tree to include a language tag (e.g., ```text) so the block becomes a labeled code block, preserving the exact tree contents inside the fence..claude/skills/prow-ci/analyze_failure.py (1)
11-53:⚠️ Potential issue | 🟠 Major | ⚡ Quick winUse a hardened XML parser for JUnit artifacts and narrow exception handling.
.claude/skills/prow-ci/analyze_failure.pyparses downloadedjunit*.xmlusingxml.etree.ElementTree(ET.parse(...)at line 18) and suppresses all errors withexcept Exception(lines 51-53). Replace withdefusedxml.ElementTreeand narrow handling to XML parse errors plus defusedxml security exceptions (catchET.ParseErroranddefusedxml.common.DefusedXmlException/ subclasses likeEntitiesForbidden,DTDForbidden) instead of a blanket catch.Recommended fix
-import xml.etree.ElementTree as ET +import defusedxml.ElementTree as ET +from defusedxml.common import DefusedXmlException from pathlib import Path def parse_junit_xml(xml_file): """Parse JUnit XML and extract failures.""" try: tree = ET.parse(xml_file) root = tree.getroot() failures = [] for testsuite in root.findall('.//testsuite'): suite_name = testsuite.get('name', 'unknown') for testcase in testsuite.findall('.//testcase'): test_name = testcase.get('name', 'unknown') classname = testcase.get('classname', '') failure = testcase.find('failure') error = testcase.find('error') if failure is not None: failures.append({ 'type': 'failure', 'suite': suite_name, 'test': test_name, 'class': classname, 'message': failure.get('message', ''), 'details': failure.text or '' }) elif error is not None: failures.append({ 'type': 'error', 'suite': suite_name, 'test': test_name, 'class': classname, 'message': error.get('message', ''), 'details': error.text or '' }) return failures - except Exception as e: + except (ET.ParseError, DefusedXmlException) as e: print(f"Warning: Could not parse {xml_file}: {e}", file=sys.stderr) return []Verify that
defusedxmlis available or add it to project dependencies:#!/bin/bash # Check if defusedxml is mentioned in any Python dependency files rg -n "defusedxml" . || echo "Not found - needs to be added" # Check for Python dependency manifests fd -t f -e txt -e toml -e cfg -e py -e lock "requirements|pyproject|setup|Pipfile|poetry" | head -20🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/prow-ci/analyze_failure.py around lines 11 - 53, The parse_junit_xml function currently uses xml.etree.ElementTree.ET.parse and catches Exception broadly; replace the import to use defusedxml.ElementTree (so parse_junit_xml uses defusedxml.ElementTree.parse) and change the except to only catch xml parsing and defusedxml security exceptions (catch ET.ParseError and defusedxml.common.DefusedXmlException or its specific subclasses such as EntitiesForbidden and DTDForbidden) while leaving other exceptions to surface; also add the defusedxml import and ensure defusedxml is listed in project dependencies..claude/skills/prow-ci/SKILL.md (3)
7-7:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix RBAC capitalization in heading.
The heading says "Rbac Permissions Operator" but should use the proper acronym capitalization "RBAC Permissions Operator".
Quick fix
-# Prow CI Analysis for Rbac Permissions Operator +# Prow CI Analysis for RBAC Permissions Operator🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/prow-ci/SKILL.md at line 7, Heading "Rbac Permissions Operator" uses incorrect capitalization; update the heading text to "RBAC Permissions Operator" by replacing the string "Rbac Permissions Operator" with "RBAC Permissions Operator" in the SKILL.md content (the markdown H1 line that currently reads "# Rbac Permissions Operator").
77-80:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRemove hardcoded personal absolute path.
Line 80 contains a personal local path
/Users/ppanda/rh-projects/...that makes the guide less portable for contributors. Replace with a repository-relative path.Suggested fix
Run the fetch script first: ```bash -cd /Users/ppanda/rh-projects/ROSA-730/rbac-permissions-operator/.claude/skills/prow-ci +cd .claude/skills/prow-ci python3 fetch_prow_artifacts.py "<prow-job-url>" -o .work/prow-artifacts</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.claude/skills/prow-ci/SKILL.md around lines 77 - 80, Replace the hardcoded
personal absolute path
'/Users/ppanda/rh-projects/ROSA-730/rbac-permissions-operator/.claude/skills/prow-ci'
in the "Run the fetch script first:" block with the repository-relative path
'.claude/skills/prow-ci' so contributors can runcd .claude/skills/prow-ci
instead of the local user path; update any matching occurrences in SKILL.md to
keep the guide portable.</details> --- `72-74`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_ **Label the fenced URL example block.** This fence should include a language (e.g., `text`) to satisfy markdownlint MD040. <details> <summary>Quick fix</summary> ```diff -``` +```text https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_rbac-permissions-operator/328/pull-ci-openshift-rbac-permissions-operator-master-lint/2059308810190721024</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.claude/skills/prow-ci/SKILL.md around lines 72 - 74, The fenced code block
that contains the Prow CI URL should be labeled with a language to satisfy
markdownlint MD040; update the triple-backtick fence that wraps
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_rbac-permissions-operator/328/pull-ci-openshift-rbac-permissions-operator-master-lint/2059308810190721024"
to use a language tag (for example changetotext) so the fenced block is
explicitly labeled.</details> </blockquote></details> <details> <summary>.claude/agents/docs-agent.md (1)</summary><blockquote> `188-198`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_ **Add a language tag to the fenced output block.** This code fence is missing a language identifier, which breaks your own markdown-style rule and triggers MD040. <details> <summary>Suggested doc fix</summary> ```diff -``` +```text Updated: DEVELOPMENT.md - Added section on new make target: go-bench - Fixed typo in test commands ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.claude/agents/docs-agent.md around lines 188 - 198, The fenced output block
containing the changelog text (the triple-backtick block beginning with
"Updated: DEVELOPMENT.md") is missing a language tag and triggers MD040; update
the opening fence fromtotext (or another appropriate language
identifier) so the block follows the project's markdown rules and the linter
passes, e.g., replace the openingwithtext for the block that contains
"Updated: DEVELOPMENT.md ...".</details> </blockquote></details> <details> <summary>.claude/hooks/stop-prek-validation.sh (1)</summary><blockquote> `23-38`: _⚠️ Potential issue_ | _🟠 Major_ | _⚡ Quick win_ **Check `jq` before first use (or avoid requiring it for early error path).** Line 27 invokes `jq` before dependency validation, so the script can fail with `command not found` instead of returning valid hook JSON. <details> <summary>Suggested fix</summary> ```diff # Ensure we're running from the git repository root # This handles cases where Claude Code's CWD is in a subdirectory (e.g., .claude/skills/) REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) if [[ -z "$REPO_ROOT" ]]; then - jq -n '{"decision": "block", "reason": "Not in a git repository. Cannot run prek validation."}' + cat <<'EOF' +{"decision":"block","reason":"Not in a git repository. Cannot run prek validation."} +EOF exit 0 fi -cd "$REPO_ROOT" +cd "$REPO_ROOT" || { + cat <<'EOF' +{"decision":"block","reason":"Failed to change to repository root."} +EOF + exit 0 +} ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/hooks/stop-prek-validation.sh around lines 23 - 38, The script calls jq in the REPO_ROOT-empty branch (the jq -n call) before the dependency check, which can cause a "command not found" error; move the jq availability check (the if ! command -v jq &> /dev/null block) to occur before any use of jq (i.e., before the REPO_ROOT conditional), or alternatively change the REPO_ROOT-empty branch to emit the JSON with a here-doc (same style as the later jq-missing message) instead of calling jq; update references in the script around REPO_ROOT and the jq -n invocation accordingly. ``` </details> </blockquote></details> <details> <summary>TESTING.md (2)</summary><blockquote> `131-147`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_ **Fix the broken fenced code block.** There are two opening ` ```go ` fences (Lines 131-132), causing the example to render incorrectly and failing markdownlint validation. Remove the duplicate opener at Line 132. <details> <summary>🔧 Proposed fix</summary> ```diff ### Testing Controllers ```go -```go It("should reconcile resource", func() { // Create custom resource resource := &v1alpha1.CustomResource{...} ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In
@TESTING.mdaround lines 131 - 147, The markdown example has a duplicate
opening fenced code block marker ("go") causing broken rendering; remove the extra opener so there is only one "go" before the test example (the block
starting with It("should reconcile resource", func() { ... })) and keep the
closing "```" at the end, ensuring the fenced block wraps the test snippet
correctly.</details> --- `267-275`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_ **Remove or clarify the misleading YAML example.** The YAML block (Lines 268-272) implies that `go-test` runs automatically in pre-commit, but Lines 274-275 contradict this by stating it's NOT in the current config. Remove the example YAML or explicitly mark it as "Example configuration (not currently enabled)" to avoid confusion. <details> <summary>🔧 Proposed fix</summary> ```diff ## Pre-commit Integration -Tests run automatically in pre-commit when Go files change: -```yaml -- id: go-test - entry: make go-test - files: '\.go$' -``` - -This is NOT in current pre-commit config (too slow for pre-commit). -Run manually before pushing: `make go-test` +The full test suite is too slow for pre-commit hooks. + +Current pre-commit config runs only: `go-build`, `go-mod-tidy`, and `rbac-wildcard-check`. + +**Run manually before pushing:** +```bash +make go-test +``` ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@TESTING.md` around lines 267 - 275, The YAML snippet showing an automatic pre-commit hook for "go-test" is misleading; update TESTING.md by removing that YAML example or explicitly labeling it as an "Example configuration (not enabled)" and replace it with a clear statement that the full test suite is too slow for pre-commit and must be run manually via "make go-test", and add the current pre-commit hooks list (e.g., "go-build", "go-mod-tidy", "rbac-wildcard-check") so readers know what runs automatically instead of "go-test". ``` </details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.Duplicate comments:
In @.claude/agents/docs-agent.md:
- Around line 188-198: The fenced output block containing the changelog text
(the triple-backtick block beginning with "Updated: DEVELOPMENT.md") is missing
a language tag and triggers MD040; update the opening fence fromtotext
(or another appropriate language identifier) so the block follows the project's
markdown rules and the linter passes, e.g., replace the openingwithtext
for the block that contains "Updated: DEVELOPMENT.md ...".In @.claude/hooks/README.md:
- Around line 180-183: The docs incorrectly state the stop hook always runs
prek run --all-files; update the "Automatic Validation" section to match the
actual stop-hook behavior by noting that the stop hook is conditional by default
and invokes Prek with the CI config (e.g.,prek run --all-files --config hack/prek.ci.toml) only when enabled; reference the stop hook and the--config hack/prek.ci.tomlflag and clarify that per-turn execution is not unconditional
but controlled by the hook configuration.In @.claude/hooks/stop-prek-validation.sh:
- Around line 23-38: The script calls jq in the REPO_ROOT-empty branch (the jq
-n call) before the dependency check, which can cause a "command not found"
error; move the jq availability check (the if ! command -v jq &> /dev/null
block) to occur before any use of jq (i.e., before the REPO_ROOT conditional),
or alternatively change the REPO_ROOT-empty branch to emit the JSON with a
here-doc (same style as the later jq-missing message) instead of calling jq;
update references in the script around REPO_ROOT and the jq -n invocation
accordingly.In @.claude/skills/prow-ci/analyze_failure.py:
- Around line 11-53: The parse_junit_xml function currently uses
xml.etree.ElementTree.ET.parse and catches Exception broadly; replace the import
to use defusedxml.ElementTree (so parse_junit_xml uses
defusedxml.ElementTree.parse) and change the except to only catch xml parsing
and defusedxml security exceptions (catch ET.ParseError and
defusedxml.common.DefusedXmlException or its specific subclasses such as
EntitiesForbidden and DTDForbidden) while leaving other exceptions to surface;
also add the defusedxml import and ensure defusedxml is listed in project
dependencies.In @.claude/skills/prow-ci/SKILL.md:
- Line 7: Heading "Rbac Permissions Operator" uses incorrect capitalization;
update the heading text to "RBAC Permissions Operator" by replacing the string
"Rbac Permissions Operator" with "RBAC Permissions Operator" in the SKILL.md
content (the markdown H1 line that currently reads "# Rbac Permissions
Operator").- Around line 77-80: Replace the hardcoded personal absolute path
'/Users/ppanda/rh-projects/ROSA-730/rbac-permissions-operator/.claude/skills/prow-ci'
in the "Run the fetch script first:" block with the repository-relative path
'.claude/skills/prow-ci' so contributors can runcd .claude/skills/prow-ci
instead of the local user path; update any matching occurrences in SKILL.md to
keep the guide portable.- Around line 72-74: The fenced code block that contains the Prow CI URL should
be labeled with a language to satisfy markdownlint MD040; update the
triple-backtick fence that wraps
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_rbac-permissions-operator/328/pull-ci-openshift-rbac-permissions-operator-master-lint/2059308810190721024"
to use a language tag (for example changetotext) so the fenced block is
explicitly labeled.In @.claude/skills/README.md:
- Around line 66-72: The fenced directory-tree block in README.md is missing a
language specifier (MD040); update the triple-backtick fence that contains the
.claude/skills directory tree to include a language tag (e.g., ```text) so the
block becomes a labeled code block, preserving the exact tree contents inside
the fence.In
@TESTING.md:
- Around line 131-147: The markdown example has a duplicate opening fenced code
block marker ("go") causing broken rendering; remove the extra opener so there is only one "go" before the test example (the block starting with
It("should reconcile resource", func() { ... })) and keep the closing "```" at
the end, ensuring the fenced block wraps the test snippet correctly.- Around line 267-275: The YAML snippet showing an automatic pre-commit hook for
"go-test" is misleading; update TESTING.md by removing that YAML example or
explicitly labeling it as an "Example configuration (not enabled)" and replace
it with a clear statement that the full test suite is too slow for pre-commit
and must be run manually via "make go-test", and add the current pre-commit
hooks list (e.g., "go-build", "go-mod-tidy", "rbac-wildcard-check") so readers
know what runs automatically instead of "go-test".</details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Repository YAML (base), Central YAML (inherited) **Review profile**: CHILL **Plan**: Enterprise **Run ID**: `a060c6c3-7633-4119-9ced-d1c1f09f1e48` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between d109ca873c87fb4ce7132ec07746f46afd0015a0 and 8516e0b13b652bc157ed6586cba8dcd96a6b882d. </details> <details> <summary>📒 Files selected for processing (24)</summary> * `.claude/agents/README.md` * `.claude/agents/ci-agent.md` * `.claude/agents/docs-agent.md` * `.claude/agents/lint-agent.md` * `.claude/agents/security-agent.md` * `.claude/agents/test-agent.md` * `.claude/hooks/README.md` * `.claude/hooks/cleanup.sh` * `.claude/hooks/pre-edit.sh` * `.claude/hooks/stop-prek-validation.sh` * `.claude/settings.json` * `.claude/skills/README.md` * `.claude/skills/prow-ci/SKILL.md` * `.claude/skills/prow-ci/analyze_failure.py` * `.claude/skills/prow-ci/fetch_prow_artifacts.py` * `.gitignore` * `.gitleaks.toml` * `.prek-version` * `CONTRIBUTING.md` * `DEVELOPMENT.md` * `TESTING.md` * `hack/ci.sh` * `hack/prek.ci.toml` * `prek.toml` </details> <details> <summary>✅ Files skipped from review due to trivial changes (9)</summary> * .prek-version * hack/ci.sh * .claude/hooks/pre-edit.sh * CONTRIBUTING.md * DEVELOPMENT.md * .claude/agents/ci-agent.md * .claude/agents/test-agent.md * .claude/agents/lint-agent.md * .claude/agents/security-agent.md </details> <details> <summary>🚧 Files skipped from review as they are similar to previous changes (6)</summary> * .gitignore * hack/prek.ci.toml * .claude/hooks/cleanup.sh * .gitleaks.toml * prek.toml * .claude/settings.json </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.claude/skills/prow-ci/SKILL.md (1)
72-74:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd language specifier to fenced code block.
The fenced code block is missing a language identifier, which violates markdownlint MD040.
📝 Proposed fix
Example Prow job URL: -``` +```text https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_configure_alertmanager_operator/<PR_NUMBER>/pull-ci-openshift-configure-alertmanager-operator-master-lint/<BUILD_ID></details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.claude/skills/prow-ci/SKILL.md around lines 72 - 74, The fenced code block
containing the prow.ci URL lacks a language specifier (markdownlint MD040); fix
it by editing the fenced block in .claude/skills/prow-ci/SKILL.md (the block
that currently contains the URL
"https://prow.ci.openshift.org/view/gs/.../<BUILD_ID>") to include a language
identifier (e.g., add "text" after the opening), so the block becomestext ... ``` to satisfy the linter.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.Inline comments:
In @.claude/skills/prow-ci/SKILL.md:
- Line 80: The line using the redundant command 'cd $PWD/.claude/skills/prow-ci'
assumes the user is at the repo root and is not portable; either replace it with
a portable path like 'cd .claude/skills/prow-ci' (removes $PWD), document the
assumption that commands run from the repository root, or adopt a robust
variable-based approach (e.g., use a REPO_ROOT/WORKDIR variable) so the target
directory is constructed explicitly; update the SKILL.md entry referencing 'cd
$PWD/.claude/skills/prow-ci' accordingly.
Duplicate comments:
In @.claude/skills/prow-ci/SKILL.md:
- Around line 72-74: The fenced code block containing the prow.ci URL lacks a
language specifier (markdownlint MD040); fix it by editing the fenced block in
.claude/skills/prow-ci/SKILL.md (the block that currently contains the URL
"https://prow.ci.openshift.org/view/gs/.../<BUILD_ID>") to include a language
identifier (e.g., add "text" after the opening), so the block becomestext ... ``` to satisfy the linter.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Repository YAML (base), Central YAML (inherited) **Review profile**: CHILL **Plan**: Enterprise **Run ID**: `5ce2df42-be9b-4552-8b41-1a3f1458c1b9` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 8516e0b13b652bc157ed6586cba8dcd96a6b882d and 09fc5529c37aa1f3127d02f776f1a5bf7b3521cb. </details> <details> <summary>📒 Files selected for processing (1)</summary> * `.claude/skills/prow-ci/SKILL.md` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
830b1be to
19e5b32
Compare
19e5b32 to
915b72a
Compare
- Update settings.json with prek permissions and comprehensive deny rules - Update hooks (stop-prek-validation.sh, pre-edit.sh, README.md) - Update agents with repo-specific references - Update skills with repo-specific prow-ci examples - Ensure all references are operator-specific Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
/label tide/merge-method-squash |
- Make pre-edit.sh canonicalization portable across GNU/BSD/macOS - Add python fallback for path normalization - Works with non-existent files - Fix stop-prek-validation.sh to explicitly validate changed files - Prevents validation scope ambiguity - Validates staged + unstaged + untracked files - Complete prow-ci SKILL.md title with operator name Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
- Copy latest analyze_failure.py and fetch_prow_artifacts.py from AAO - Fix gitleaks: narrow test file allowlist to testdata dirs - Remove broad .*_test.go pattern that disabled scanning for all test files
Changes: - Added SessionStart hook to .claude/settings.json that runs session-start-prek-setup.sh - Copied session-start-prek-setup.sh hook script to .claude/hooks/ - Updated docs-agent.md to include .claude/settings.json in sync triggers The SessionStart hook ensures prek is installed and configured when Claude Code starts a session, improving developer experience. Related: CodeRabbit review feedback on hook configuration documentation
|
@devppratik: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
What type of PR is this?
docs/feature
What this PR does / why we need it?
References
Summary by CodeRabbit