Skip to content

OCPEDGE-2575: Add repo-standards plugin with hooks and compliance skills#73

Draft
jeff-roche wants to merge 4 commits intoopenshift-eng:mainfrom
jeff-roche:feat/repo-standards-plugin
Draft

OCPEDGE-2575: Add repo-standards plugin with hooks and compliance skills#73
jeff-roche wants to merge 4 commits intoopenshift-eng:mainfrom
jeff-roche:feat/repo-standards-plugin

Conversation

@jeff-roche
Copy link
Copy Markdown
Contributor

@jeff-roche jeff-roche commented Apr 22, 2026

Summary

  • Adds repo-standards Claude Code plugin that checks repos meet agentic development standards
  • SessionStart hooks auto-detect missing artifacts (README, CONTRIBUTING, AGENTS.md, .coderabbit.yaml) and warn on AGENTS.md >200 lines
  • scaffold-repo skill interactively generates missing artifacts from templates
  • health-check skill produces PASS/WARN/FAIL compliance report
  • 7 self-contained law files defining standards (no external doc dependencies)

Test plan

  • Install plugin via marketplace
  • Verify SessionStart hooks fire and report missing artifacts
  • Run /repo-standards:health-check and verify structured report
  • Run /repo-standards:scaffold-repo on a test repo and verify artifact generation
  • Verify hook scripts pass unit tests: echo '{"cwd":"."}' | bash plugins/repo-standards/scripts/check-repo-artifacts.sh

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Adds a repo-standards plugin that auto-runs repository compliance checks at session start.
    • New health-check command that audits a repo and returns PASS/WARN/FAIL reports.
    • New scaffold command to interactively generate or upgrade missing standard repository artifacts and ensure agent instruction symlink.
  • Documentation

    • Added comprehensive docs covering laws, required artifacts, CONTRIBUTING/AGENTS conventions, CodeRabbit guidance, and installation/usage.

…ills

Adds SessionStart hooks for automatic repo artifact compliance detection,
scaffold-repo and health-check skills, and seven self-contained law files
defining agentic development standards.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Apr 22, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jeff-roche

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 22, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 22, 2026

Walkthrough

Adds a new repo-standards plugin with manifest and marketplace entry, SessionStart hooks, verification scripts, authored law documents, and two user-invocable skills for health checks and scaffolding to enforce repository artifact, AGENTS.md, and .coderabbit.yaml standards.

Changes

Cohort / File(s) Summary
Plugin manifest & registry
plugins/repo-standards/.claude-plugin/plugin.json, plugins/repo-standards/README.md, .claude-plugin/marketplace.json
Adds plugin manifest, README documenting usage/commands/laws, and marketplace registration.
Session hooks
plugins/repo-standards/hooks/hooks.json
Registers SessionStart matcher running artifact and AGENTS.md size check commands with timeouts and status messages.
Law documents & index
plugins/repo-standards/references/laws/01-required-artifacts.md, .../02-contributing-template.md, .../03-agents-md-convention.md, .../04-coderabbit-config.md, .../05-architecture-docs.md, .../06-upstream-docs.md, .../07-new-repo-mandate.md, plugins/repo-standards/references/repo-standards-laws.md
Adds seven normative law documents and a non-normative index defining required/recommended artifacts, CONTRIBUTING.md template, AGENTS.md conventions (including CLAUDE.md symlink and 200-line limit), CodeRabbit config expectations, and architecture/upstream/new-repo policies.
Verification scripts
plugins/repo-standards/scripts/check-repo-artifacts.sh, plugins/repo-standards/scripts/check-agents-md-size.sh, plugins/repo-standards/scripts/check-coderabbit-config.sh
Adds executable Bash scripts used by hooks/skills to validate presence/symlink of AGENTS.md/CLAUDE.md, report AGENTS.md line-count exceedance (JSON output), and inspect .coderabbit.yaml (yq or grep fallback, JSON output).
User-invocable skills
plugins/repo-standards/skills/health-check/SKILL.md, plugins/repo-standards/skills/scaffold-repo/SKILL.md
Adds health-check and scaffold-repo skills that run scripted checks, validate file contents/sections, produce PASS/WARN/FAIL reports, and interactively scaffold missing artifacts.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding a new repo-standards plugin with SessionStart hooks and compliance skills (scaffold-repo and health-check).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@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: 7

🧹 Nitpick comments (4)
plugins/repo-standards/references/laws/02-contributing-template.md (1)

26-28: Consider the flexibility of prescriptive branch naming patterns.

The law mandates a specific branch naming pattern (type/short-description) with a fixed set of allowed types. While standardization is valuable for AI tooling, this prescriptive approach may not fit all project types or existing team conventions.

If the target audience includes repositories with established different conventions, consider either:

  1. Making this a SHOULD rather than MUST
  2. Allowing configuration/override of the pattern
  3. Documenting that this applies only to new repositories (per Law 07's post-April-2026 mandate)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/references/laws/02-contributing-template.md` around
lines 26 - 28, The rule enforcing branch names as MUST use the pattern
`type/short-description` with fixed types (`feat`, `fix`, `docs`, `chore`,
`refactor`, `test`) is too prescriptive; update the contributing template so the
branch-naming requirement is less strict by either changing MUST to SHOULD,
adding a note that the pattern is configurable/overridable by repository
settings, or documenting that this applies only to new repositories (referencing
Law 07 for the post-April-2026 scope); modify the text around the branch naming
example and the list of valid types to reflect the chosen approach and include a
short sentence explaining how to configure or override the pattern.
plugins/repo-standards/scripts/check-agents-md-size.sh (1)

35-35: Consider trimming wc -l output for portability.

On some systems (notably macOS), wc -l outputs leading whitespace. While bash arithmetic handles this, trimming explicitly improves portability and clarity.

♻️ Optional portability fix
-LINE_COUNT=$(wc -l < "$TARGET")
+LINE_COUNT=$(wc -l < "$TARGET" | tr -d ' ')
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/scripts/check-agents-md-size.sh` at line 35, The
LINE_COUNT assignment using wc -l can produce leading whitespace on some
systems; update the assignment that sets LINE_COUNT (which reads from TARGET) to
trim whitespace from wc's output before using it — e.g., pipe wc -l through a
whitespace-trimmer such as awk '{print $1}' or xargs/printf to ensure LINE_COUNT
is a clean numeric string. Ensure the change only affects the LINE_COUNT
assignment and still reads from TARGET.
plugins/repo-standards/skills/health-check/SKILL.md (1)

69-69: Symlink verification requires Bash, not just Read.

Step 4 mentions "reading files directly" for the CLAUDE.md symlink check, but detecting whether a file is a symlink requires test -L or readlink commands. The allowed-tools include Bash, so this is possible, but the instruction could be clearer.

📝 Suggested clarification
-1. **CLAUDE.md symlink** --- verify CLAUDE.md is a symlink to AGENTS.md (not a copy)
+1. **CLAUDE.md symlink** --- use `test -L CLAUDE.md && readlink CLAUDE.md` to verify CLAUDE.md is a symlink pointing to AGENTS.md
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/skills/health-check/SKILL.md` at line 69, Update the
Step 4 wording for the "CLAUDE.md symlink" check to explicitly state that
verifying CLAUDE.md is a symlink to AGENTS.md requires using Bash symlink checks
(e.g., test -L or readlink) rather than just reading files, and mention that
Bash is available in allowed-tools so the check should use those commands when
validating CLAUDE.md -> AGENTS.md symlink behavior.
plugins/repo-standards/references/laws/04-coderabbit-config.md (1)

21-28: Consider whether !*.md is too broad for path filters.

The recommended path filter !*.md excludes all Markdown files from code review. This might inadvertently skip reviews of documentation changes in files like CHANGELOG.md, SECURITY.md, or the compliance artifacts this plugin requires. Consider scoping to specific directories or explicitly listing exclusions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/references/laws/04-coderabbit-config.md` around lines
21 - 28, The current reviews:path_filters entry includes the broad exclusion
pattern "!*.md" which will skip all Markdown review coverage (refer to the
reviews:path_filters block and the "!*.md" pattern); to fix it, remove or narrow
that pattern so documentation and compliance files are not inadvertently
excluded — either delete the "!*.md" line or replace it with targeted exclusions
(for example restrict to a specific directory like "docs/**" or enumerate
explicit filenames such as "CHANGELOG.md" or "SECURITY.md") so only the intended
markup is skipped while keeping critical docs included in reviews.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/repo-standards/.claude-plugin/plugin.json`:
- Around line 1-8: The plugin manifest for "repo-standards" is present but not
registered in the marketplace catalog; run the marketplace registration flow by
executing the repository's marketplace catalog-update command (./marketplace
catalog-update) to add "repo-standards" to .claude-plugin/marketplace.json, then
verify the plugin appears (select .name == "repo-standards") and run the smoke
test script plugins/tests/marketplace_smoke_test.sh to confirm successful
registration; if the registration fails, re-run the catalog-update and inspect
the generated .claude-plugin/marketplace.json for errors.

In `@plugins/repo-standards/references/laws/02-contributing-template.md`:
- Line 66: The contributing template claims health checks validate section
headers case-insensitively (line 66) but the health-check SKILL.md (Step 4)
doesn't state that; either update the Step 4 text in SKILL.md to explicitly
document that header matching is case-insensitive (e.g., "verify required
section headers exist (case-insensitive)"), or change the CONTRIBUTING.md line
66 to remove the "case-insensitive" claim if the validation is actually
case-sensitive—update the file referenced as health-check SKILL.md (Step 4)
and/or the contributing template line to make the behavior and documentation
consistent.
- Line 50: The health-check currently only verifies CONTRIBUTING.md headers;
update the health-check logic (e.g., the function that inspects
CONTRIBUTING.md—search for the existing validateContributingMd /
verifySectionHeaders logic in the health-check skill) to locate the "Testing"
section body and assert it contains the literal "80%" (or the phrase "Minimum
coverage target: 80%") rather than just the header; if the substring is missing,
return a failing health-check result and a clear message indicating the Testing
section must include the 80% coverage requirement.

In `@plugins/repo-standards/references/laws/03-agents-md-convention.md`:
- Line 5: Update the sentence in AGENTS.md attribution: replace the inaccurate
"established by the Linux Foundation / Agentic AI Foundation" claim with a
precise provenance statement that OpenAI originally released AGENTS.md in August
2025 and later contributed it to the Agentic AI Foundation (a directed fund
under the Linux Foundation) in December 2025; also replace the vague "23+ AI
coding tools" phrase with either a specific list of the supported tools or a
link to the current supported-tools list on agents.md to make the claim
verifiable.

In `@plugins/repo-standards/scripts/check-coderabbit-config.sh`:
- Around line 21-29: The yq queries and grep fallbacks are out of sync with Law
04: update the yq checks to read the nested boolean/value fields (e.g., use
.reviews.auto_review.enabled instead of .reviews.auto_review) and ensure the
path_filters and instructions queries target the correct nested keys under
reviews (e.g., .reviews.path_filters and .reviews.instructions) so they check
actual values rather than just existence; mirror that behavior in the fallback
grep logic by matching key:value pairs or boolean true/enabled values for
AUTO_REVIEW, PATH_FILTERS, and INSTRUCTIONS using the same CONFIG variable so
both branches produce consistent results.

In `@plugins/repo-standards/scripts/check-repo-artifacts.sh`:
- Around line 42-48: The symlink check incorrectly treats any symlink named
CLAUDE.md as valid; update the logic around the existing CLAUDE.md / AGENTS.md
checks so that when CLAUDE.md exists and is a symlink (the current -L test) you
also resolve its target (e.g., via readlink or readlink -f) and verify it points
to AGENTS.md; if the resolved target is not AGENTS.md set SYMLINK_WARN (the same
variable used now) to a message stating CLAUDE.md is a symlink but does not
point to AGENTS.md, otherwise treat it as valid. Ensure you reference CLAUDE.md,
AGENTS.md and SYMLINK_WARN in the updated conditional paths.

In `@plugins/repo-standards/skills/scaffold-repo/SKILL.md`:
- Around line 85-92: Update Step 4 in SKILL.md to guard symlink creation by
verifying the source file AGENTS.md exists before calling ln -sf; replace the
unconditional ln -sf AGENTS.md CLAUDE.md with a conditional check (e.g., test -f
or test -e) that only runs ln if AGENTS.md is present and otherwise emits a
clear message or fails the step so the CLAUDE.md symlink cannot be created
dangling, referencing the Step 3 AGENTS.md generation flow to ensure this check
aligns with downstream behavior.

---

Nitpick comments:
In `@plugins/repo-standards/references/laws/02-contributing-template.md`:
- Around line 26-28: The rule enforcing branch names as MUST use the pattern
`type/short-description` with fixed types (`feat`, `fix`, `docs`, `chore`,
`refactor`, `test`) is too prescriptive; update the contributing template so the
branch-naming requirement is less strict by either changing MUST to SHOULD,
adding a note that the pattern is configurable/overridable by repository
settings, or documenting that this applies only to new repositories (referencing
Law 07 for the post-April-2026 scope); modify the text around the branch naming
example and the list of valid types to reflect the chosen approach and include a
short sentence explaining how to configure or override the pattern.

In `@plugins/repo-standards/references/laws/04-coderabbit-config.md`:
- Around line 21-28: The current reviews:path_filters entry includes the broad
exclusion pattern "!*.md" which will skip all Markdown review coverage (refer to
the reviews:path_filters block and the "!*.md" pattern); to fix it, remove or
narrow that pattern so documentation and compliance files are not inadvertently
excluded — either delete the "!*.md" line or replace it with targeted exclusions
(for example restrict to a specific directory like "docs/**" or enumerate
explicit filenames such as "CHANGELOG.md" or "SECURITY.md") so only the intended
markup is skipped while keeping critical docs included in reviews.

In `@plugins/repo-standards/scripts/check-agents-md-size.sh`:
- Line 35: The LINE_COUNT assignment using wc -l can produce leading whitespace
on some systems; update the assignment that sets LINE_COUNT (which reads from
TARGET) to trim whitespace from wc's output before using it — e.g., pipe wc -l
through a whitespace-trimmer such as awk '{print $1}' or xargs/printf to ensure
LINE_COUNT is a clean numeric string. Ensure the change only affects the
LINE_COUNT assignment and still reads from TARGET.

In `@plugins/repo-standards/skills/health-check/SKILL.md`:
- Line 69: Update the Step 4 wording for the "CLAUDE.md symlink" check to
explicitly state that verifying CLAUDE.md is a symlink to AGENTS.md requires
using Bash symlink checks (e.g., test -L or readlink) rather than just reading
files, and mention that Bash is available in allowed-tools so the check should
use those commands when validating CLAUDE.md -> AGENTS.md symlink behavior.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9fbae1b7-f75d-4c3e-b65f-d429414dc432

📥 Commits

Reviewing files that changed from the base of the PR and between c994b2d and 2474b43.

📒 Files selected for processing (16)
  • plugins/repo-standards/.claude-plugin/plugin.json
  • plugins/repo-standards/README.md
  • plugins/repo-standards/hooks/hooks.json
  • plugins/repo-standards/references/laws/01-required-artifacts.md
  • plugins/repo-standards/references/laws/02-contributing-template.md
  • plugins/repo-standards/references/laws/03-agents-md-convention.md
  • plugins/repo-standards/references/laws/04-coderabbit-config.md
  • plugins/repo-standards/references/laws/05-architecture-docs.md
  • plugins/repo-standards/references/laws/06-upstream-docs.md
  • plugins/repo-standards/references/laws/07-new-repo-mandate.md
  • plugins/repo-standards/references/repo-standards-laws.md
  • plugins/repo-standards/scripts/check-agents-md-size.sh
  • plugins/repo-standards/scripts/check-coderabbit-config.sh
  • plugins/repo-standards/scripts/check-repo-artifacts.sh
  • plugins/repo-standards/skills/health-check/SKILL.md
  • plugins/repo-standards/skills/scaffold-repo/SKILL.md

Comment thread plugins/repo-standards/.claude-plugin/plugin.json
Comment thread plugins/repo-standards/references/laws/02-contributing-template.md
Comment thread plugins/repo-standards/references/laws/02-contributing-template.md
Comment thread plugins/repo-standards/references/laws/03-agents-md-convention.md Outdated
Comment thread plugins/repo-standards/scripts/check-coderabbit-config.sh
Comment thread plugins/repo-standards/scripts/check-repo-artifacts.sh
Comment thread plugins/repo-standards/skills/scaffold-repo/SKILL.md
jeff-roche and others added 2 commits April 22, 2026 13:36
- Use #!/usr/bin/bash shebang across all scripts
- Validate symlink target with readlink (not just -L test)
- Fix yq query to check .reviews.auto_review.enabled directly
- Trim wc -l whitespace for portability
- Guard symlink creation on AGENTS.md existence
- Correct AGENTS.md provenance (OpenAI → Agentic AI Foundation)
- Narrow *.md coderabbit exclusion to specific files
- Soften branch naming from MUST to SHOULD
- Clarify health-check: case-insensitive headers, Bash symlink verification

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@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: 1

🧹 Nitpick comments (1)
plugins/repo-standards/skills/health-check/SKILL.md (1)

78-94: Optional: Add language marker to fenced code block.

The example compliance table at line 80 opens a fenced code block without a language identifier. While not critical (the content is example output, not executable code), markdownlint recommends explicit markers for consistency.

✨ Suggested refinement
-```
+```text
 | Check | Status | Detail |
 |-------|--------|--------|
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/skills/health-check/SKILL.md` around lines 78 - 94,
The fenced code block showing the example compliance table lacks a language
marker; update the opening fence for that example compliance table (the
triple-backtick that precedes the table) to include a language identifier such
as text or markdown (e.g., change the opening "```" to "```text") so
markdownlint is satisfied and the block is explicitly marked; locate the fenced
block labeled "Output a compliance table" in SKILL.md and modify the opening
fence accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/repo-standards/skills/scaffold-repo/SKILL.md`:
- Around line 43-52: Step 2's AskUserQuestion sequence is missing a prompt to
determine whether the repo contains multiple components, but Step 3 later checks
"repo has multiple components" when deciding to add docs/architecture.md; add a
required AskUserQuestion entry in Step 2 that explicitly asks "Does this
repository contain multiple components? (y/n)" (no defaults), store the answer
in a variable used by the existing Step 3 condition, and ensure the new
question's variable name matches the conditional referenced for
docs/architecture.md so the branching in Step 3 works correctly.

---

Nitpick comments:
In `@plugins/repo-standards/skills/health-check/SKILL.md`:
- Around line 78-94: The fenced code block showing the example compliance table
lacks a language marker; update the opening fence for that example compliance
table (the triple-backtick that precedes the table) to include a language
identifier such as text or markdown (e.g., change the opening "```" to
"```text") so markdownlint is satisfied and the block is explicitly marked;
locate the fenced block labeled "Output a compliance table" in SKILL.md and
modify the opening fence accordingly.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0f3d12c3-d9fe-45e4-a1f8-b41da58e0fce

📥 Commits

Reviewing files that changed from the base of the PR and between 2474b43 and 42b5ada.

📒 Files selected for processing (9)
  • .claude-plugin/marketplace.json
  • plugins/repo-standards/references/laws/02-contributing-template.md
  • plugins/repo-standards/references/laws/03-agents-md-convention.md
  • plugins/repo-standards/references/laws/04-coderabbit-config.md
  • plugins/repo-standards/scripts/check-agents-md-size.sh
  • plugins/repo-standards/scripts/check-coderabbit-config.sh
  • plugins/repo-standards/scripts/check-repo-artifacts.sh
  • plugins/repo-standards/skills/health-check/SKILL.md
  • plugins/repo-standards/skills/scaffold-repo/SKILL.md
✅ Files skipped from review due to trivial changes (6)
  • plugins/repo-standards/references/laws/02-contributing-template.md
  • .claude-plugin/marketplace.json
  • plugins/repo-standards/references/laws/03-agents-md-convention.md
  • plugins/repo-standards/scripts/check-agents-md-size.sh
  • plugins/repo-standards/scripts/check-coderabbit-config.sh
  • plugins/repo-standards/references/laws/04-coderabbit-config.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • plugins/repo-standards/scripts/check-repo-artifacts.sh

Comment thread plugins/repo-standards/skills/scaffold-repo/SKILL.md
scaffold-repo: add "multiple components?" question to Step 2 so the
docs/architecture.md conditional in Step 3 has the data it needs.

health-check: add text language tag to example table code fence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@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.

🧹 Nitpick comments (3)
plugins/repo-standards/skills/scaffold-repo/SKILL.md (1)

60-82: Add blank lines around subsection headings.

The markdown linter (markdownlint-cli2) reports MD022 violations at lines 60, 65, 70, 76, and 80. Each heading should be surrounded by blank lines for consistency with markdown best practices.

📝 Proposed formatting fixes
 For each missing artifact, generate the file using templates from the Laws and customize with the gathered project details.
 
 #### CONTRIBUTING.md (if missing)
+
 - Use the template structure from Law 02
 - Fill in language-specific tooling (formatters, test commands) based on the primary language
 - Include all required sections
 
 #### AGENTS.md (if missing)
+
 - Follow Law 03 conventions
 - Include: project overview, build/test/lint commands, code style, PR/commit format, security considerations
 - Keep under 200 lines
 
 #### .coderabbit.yaml (if missing)
+
 - Follow Law 04 requirements
 - Enable auto_review
 - Add path_filters appropriate for the project language
 - Include basic review instructions
 
 #### docs/architecture.md (if missing and multiple components confirmed)
+
 - Follow Law 05 recommendations
 - Create a skeleton with section headers for the team to fill in
 
 #### docs/upstream.md (if missing and upstream relationship confirmed)
+
 - Follow Law 06 recommendations
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/skills/scaffold-repo/SKILL.md` around lines 60 - 82,
Add blank lines before and after each subsection heading in the SKILL.md snippet
to resolve MD022: ensure there is an empty line above and below the headings
"#### CONTRIBUTING.md (if missing)", "#### AGENTS.md (if missing)", "####
.coderabbit.yaml (if missing)", "#### docs/architecture.md (if missing and
multiple components confirmed)", and "#### docs/upstream.md (if missing and
upstream relationship confirmed) so each heading is separated from surrounding
text and list items; update the SKILL.md content accordingly and run
markdownlint to confirm the MD022 violations are cleared.
plugins/repo-standards/skills/health-check/SKILL.md (2)

76-100: Add blank lines around Step 5 headings.

The markdown linter reports MD022 violations at lines 76 and 80. Add blank lines before and after these headings.

📝 Proposed formatting fix
 ---
 
 ### Step 5: Produce Report
 
 Output a compliance table:
 
 ```text
 | Check | Status | Detail |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/skills/health-check/SKILL.md` around lines 76 - 100,
Add blank lines surrounding the "Step 5: Produce Report" heading and the
subsequent subheading/table block to satisfy MD022: insert one blank line
immediately before the "### Step 5: Produce Report" heading and one blank line
after that heading (and similarly ensure a blank line before and after the
fenced code block/table that begins with "| Check | Status | Detail |") so the
heading and the table are separated by blank lines; update SKILL.md accordingly
around the "Step 5: Produce Report" section.

65-72: Add blank lines around numbered list item headings.

The markdown linter reports MD022 violations at lines 65 and 70. Headings embedded within list items should be surrounded by blank lines for consistent formatting.

📝 Proposed formatting fix
 Perform these checks by reading files directly:
 
 1. **CLAUDE.md symlink** --- use Bash to verify CLAUDE.md is a symlink pointing to AGENTS.md: `test -L CLAUDE.md && readlink CLAUDE.md` should return `AGENTS.md`. A regular file or a symlink to a different target is non-compliant.
+
 2. **CONTRIBUTING.md sections** --- verify required section headers exist (case-insensitive match): Getting Started, Development Workflow, Branch Naming, Commit Messages, Testing, Code Review, Code Style
+
 3. **docs/architecture.md** --- check if it exists (recommended, not required)
+
 4. **docs/upstream.md** --- check if it exists (recommended, not required)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/repo-standards/skills/health-check/SKILL.md` around lines 65 - 72,
The "Step 4: Additional Read-Based Checks" numbered list has headings embedded
in list items causing MD022; edit SKILL.md to insert a blank line before and
after each paragraph that contains a subheading inside the numbered list (the
CLAUDE.md symlink check, the CONTRIBUTING.md sections bullet, and the
docs/architecture.md and docs/upstream.md checks) so each list item’s heading is
separated by blank lines from surrounding text; update the block under the "Step
4: Additional Read-Based Checks" section accordingly to satisfy the markdown
linter.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@plugins/repo-standards/skills/health-check/SKILL.md`:
- Around line 76-100: Add blank lines surrounding the "Step 5: Produce Report"
heading and the subsequent subheading/table block to satisfy MD022: insert one
blank line immediately before the "### Step 5: Produce Report" heading and one
blank line after that heading (and similarly ensure a blank line before and
after the fenced code block/table that begins with "| Check | Status | Detail
|") so the heading and the table are separated by blank lines; update SKILL.md
accordingly around the "Step 5: Produce Report" section.
- Around line 65-72: The "Step 4: Additional Read-Based Checks" numbered list
has headings embedded in list items causing MD022; edit SKILL.md to insert a
blank line before and after each paragraph that contains a subheading inside the
numbered list (the CLAUDE.md symlink check, the CONTRIBUTING.md sections bullet,
and the docs/architecture.md and docs/upstream.md checks) so each list item’s
heading is separated by blank lines from surrounding text; update the block
under the "Step 4: Additional Read-Based Checks" section accordingly to satisfy
the markdown linter.

In `@plugins/repo-standards/skills/scaffold-repo/SKILL.md`:
- Around line 60-82: Add blank lines before and after each subsection heading in
the SKILL.md snippet to resolve MD022: ensure there is an empty line above and
below the headings "#### CONTRIBUTING.md (if missing)", "#### AGENTS.md (if
missing)", "#### .coderabbit.yaml (if missing)", "#### docs/architecture.md (if
missing and multiple components confirmed)", and "#### docs/upstream.md (if
missing and upstream relationship confirmed) so each heading is separated from
surrounding text and list items; update the SKILL.md content accordingly and run
markdownlint to confirm the MD022 violations are cleared.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a0d77541-117a-4775-bfda-612a5e597504

📥 Commits

Reviewing files that changed from the base of the PR and between 42b5ada and 592f506.

📒 Files selected for processing (2)
  • plugins/repo-standards/skills/health-check/SKILL.md
  • plugins/repo-standards/skills/scaffold-repo/SKILL.md

Copy link
Copy Markdown
Contributor

@brandisher brandisher left a comment

Choose a reason for hiding this comment

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

The only blocker I see here is the plugin name :-) "repo-standards" is really way too generic to be meaningful. It's a little wordy but agentic-sdlc-doc-standards is more accurate with what you're trying to achieve. I'm open to other ideas.

Landing this as a plugin without affecting edge-tooling directly is a good idea and gives a starting point to run the health check against.

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 22, 2026
@jeff-roche
Copy link
Copy Markdown
Contributor Author

The only blocker I see here is the plugin name :-) "repo-standards" is really way too generic to be meaningful. It's a little wordy but agentic-sdlc-doc-standards is more accurate with what you're trying to achieve. I'm open to other ideas.

Landing this as a plugin without affecting edge-tooling directly is a good idea and gives a starting point to run the health check against.

Agreed, this is really meant as a hybrid platforms agentic sdlc validation/bootstrapping plugin so a few thoughts:

Curious your thoughts @brandisher

@brandisher
Copy link
Copy Markdown
Contributor

brandisher commented Apr 24, 2026

The only blocker I see here is the plugin name :-) "repo-standards" is really way too generic to be meaningful. It's a little wordy but agentic-sdlc-doc-standards is more accurate with what you're trying to achieve. I'm open to other ideas.
Landing this as a plugin without affecting edge-tooling directly is a good idea and gives a starting point to run the health check against.

Agreed, this is really meant as a hybrid platforms agentic sdlc validation/bootstrapping plugin so a few thoughts:

  • Should this live in our repo? Is there a better home for it?

You gave me a light bulb moment. I like the idea of having an agentic sdlc checker but maybe we could take a more accessible approach instead of installing it as CC plugin. One mechanic that comes to mind is the one-liner bash approach (showing CodeRabbit CLI as an example): curl -fsSL https://cli.coderabbit.ai/install.sh | sh

If we had a curl -fsSL https://github.com/openshift-eng/edge-tooling/agentic-sdlc-healthcheck.sh | sh it would be very accessible, not require any installation or marketplace setup, etc. Simply output a report of what's good and what's missing.

It would be really easy for us to ping out to the org a script that they could one-line run in their repos to do a healthcheck. This disconnects the implementation of the details (which teams would want to own) from their current state.

Yeah I think so and in fact, this is probably one of the checked items in the aforementioned script. Teams will need to provide coderabbit guidelines to get better reviews for their repos but it'll likely be individualistic based on experience. If our script at least checks for the existence of it then we're being helpful without dictating implementation.

@jeff-roche jeff-roche marked this pull request as draft April 27, 2026 12:26
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants