Skip to content

Add AI skills for ramenctl commands - #452

Closed
nirs wants to merge 1 commit into
RamenDR:mainfrom
nirs:ramenctl-skill
Closed

Add AI skills for ramenctl commands#452
nirs wants to merge 1 commit into
RamenDR:mainfrom
nirs:ramenctl-skill

Conversation

@nirs

@nirs nirs commented May 14, 2026

Copy link
Copy Markdown
Member

Ship a skills/ tree so humans and agents know how to drive ramenctl for DR: init, validate clusters, validate application, gather application, test run, and test clean. Each skill is plain markdown with YAML frontmatter (Cursor discovers it); the README explains how to copy the folder into other tools too.

Why this is fun: a scene

This is the same example that opens skills/README.md — a tiny screenplay so you can feel what we are enabling before you read any tables.

INT. CURSOR CHAT — DAY

USER
        Help me set up ramenctl for my clusters. My kubeconfigs are in
        ocp/: hub.yaml is the hub, c1.yaml and c2.yaml are the managed
        clusters.

AGENT
        (Runs ramenctl init, fills kubeconfigs, reads ClusterClaims on c1
        and c2, matches names on the hub, sets clusterSet.)
        Your config is ready.

USER
        Can you check the clusters?

AGENT
        (Runs ramenctl validate clusters -o ocp/clusters.)
        Validation completed (91 ok, 0 warning, 0 problem).
        (Opens validate-clusters.html in the browser.)

USER
        Validate an application too.

AGENT
        (Lists DRPCs on the hub.)
        I found two applications:
          1. rbd4 (openshift-dr-ops) — FailedOver
          2. appset-deploy-rbd (openshift-gitops) — Deployed
        Which one should I validate?

USER
        rbd4.

AGENT
        (Runs ramenctl validate application --name rbd4 --namespace
        openshift-dr-ops -o ocp/rbd4.)
        All clear. Opening validate-application.html.

USER
        You are a very skillful agent!

AGENT
        Glad it helped.

What is in the box

  • README: install hints (Cursor, Claude Code, others), output-directory tips, common tasks, and the scene above up front.
  • Skills: step-by-step for each command; init includes clusterSet discovery via ClusterClaims; validate-application asks the user which kubeconfig is hub vs managed, suggests validate clusters for triage/bugs, and calls troubleshooting an initial draft where we expect more playbooks later.

How we checked it

Exercised init, validate clusters, validate application, and gather application against real clusters.

Summary by CodeRabbit

  • Documentation
    • Added comprehensive ramenctl AI Skills documentation for init, validate clusters, validate application, gather application, test run, and test clean.
    • Each guide provides prerequisites, step‑by‑step workflows, expected outputs and directory conventions, troubleshooting/triage steps, artifact inspection guidance, and best practices for DR testing, cleanup, and reporting.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 14, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds a new skills/README.md and six per-skill SKILL.md documentation pages under skills/ describing ramenctl AI Skills: init, validate-clusters, validate-application, gather-application, test run, and test clean. All changes are documentation-only.

Changes

ramenctl AI Skills — documentation set

Layer / File(s) Summary
Master README and AI-tool guidance
skills/README.md
New top-level skills README with example session, available-skills table, output-directory and rerun naming conventions, common task guidance, and instructions for using SKILL.md with Cursor, Claude Code, and other markdown-capable AI tools.
Initialize config guidance
skills/ramenctl-init/SKILL.md
Step-by-step ramenctl init doc: interactive env elicitation, --envfile/--config behavior, editing hub/passive-hub/managed kubeconfig paths, ClusterSet discovery via ClusterClaim and managedclusters labels, optional DR test config sections, and default-config notes.
Cluster validation skill
skills/ramenctl-validate-clusters/SKILL.md
ramenctl validate clusters usage, exit-code/html semantics, expected artifacts (validate-clusters.yaml/.html/.log, validate-clusters.data/), .clustersStatus checks (managed clusters, hub, S3), data layout, and initial troubleshooting checklist.
Application validation skill
skills/ramenctl-validate-application/SKILL.md
ramenctl validate application workflow: DRPC discovery, command flags and output-dir convention (<env>/<app-name>), exit-code/html behavior, report artifacts (validate-application.*, validate-application.data/), .applicationStatus semantics, troubleshooting steps, and recommendation to run cluster validation as sibling run.
Gather application data skill
skills/ramenctl-gather-application/SKILL.md
ramenctl gather application documentation: prerequisites, hub DRPC lookup, -o <env>/<app-name> output-dir convention, produced artifacts (gather-application.*, gather-application.data/), per-cluster and S3 gathered-data layout, sample inspection commands, and note that gathered secrets are sanitized.
DR test run skill
skills/ramenctl-test-run/SKILL.md
ramenctl test run end-to-end test documentation: prerequisites and required config sections (repo, drPolicy, pvcSpecs, deployers, tests), supported deployer types, test flow (deploy/protect/failover/relocate/unprotect/undeploy), generated outputs (test-run.*, test-run.data/), failure triage, Ctrl+C behavior, and archiving guidance.
Test cleanup skill
skills/ramenctl-test-clean/SKILL.md
ramenctl test clean doc: prerequisites (prior test run; restore infra if needed), run workflow with same output-dir, expected outputs (test-clean.*), verification steps, and guidance to inspect logs or manually delete stuck resources if cleanup fails.

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add AI skills for ramenctl commands' clearly and accurately summarizes the main change: adding a collection of Markdown skill files with YAML frontmatter to document ramenctl commands for AI assistants.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

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

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (2)
skills/ramenctl-validate-application/SKILL.md (1)

82-84: ⚡ Quick win

Use a cross-platform command for opening reports (Line 83).

open works on macOS, but this workflow is likely run from Linux as well. Add Linux-friendly alternative(s) in the snippet/text.

Suggested patch
-```bash
-open <output-dir>/validate-application.html
-```
+```bash
+# macOS
+open <output-dir>/validate-application.html
+# Linux
+xdg-open <output-dir>/validate-application.html
+```
🤖 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 `@skills/ramenctl-validate-application/SKILL.md` around lines 82 - 84, Replace
the macOS-only example command `open <output-dir>/validate-application.html` in
SKILL.md with cross-platform alternatives: keep the macOS `open` line and add a
Linux `xdg-open <output-dir>/validate-application.html` line (and optionally a
comment indicating which OS each line targets) so the validation report
instruction in the `open <output-dir>/validate-application.html` snippet works
on both macOS and Linux.
skills/ramenctl-validate-clusters/SKILL.md (1)

65-67: ⚡ Quick win

Document Linux alternative to open (Line 66).

open is macOS-specific; add xdg-open so the step works cross-platform.

Suggested patch
-```bash
-open <output-dir>/validate-clusters.html
-```
+```bash
+# macOS
+open <output-dir>/validate-clusters.html
+# Linux
+xdg-open <output-dir>/validate-clusters.html
+```
🤖 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 `@skills/ramenctl-validate-clusters/SKILL.md` around lines 65 - 67, Update the
README step that shows how to open validate-clusters.html to include a
cross-platform Linux alternative: keep the existing macOS `open
<output-dir>/validate-clusters.html` and add `xdg-open
<output-dir>/validate-clusters.html` (with brief labels like "# macOS" and "#
Linux") in the SKILL.md section that currently shows the single `open` command
so users on Linux can open the file as well.
🤖 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 `@skills/ramenctl-gather-application/SKILL.md`:
- Around line 52-54: Add explicit fence languages to the two markdown fenced
code blocks that currently lack them: change the block containing the single
line "✅ Gather completed" to use a text fence (```text) and likewise add a text
fence to the larger directory-tree block that begins with
"gather-application.data/". Update the opening backticks for those fences so
markdownlint MD040 is satisfied, leaving the block contents unchanged.

In `@skills/ramenctl-init/SKILL.md`:
- Around line 105-110: The example-output code fence in SKILL.md is unlabeled
which triggers MD040; update the fenced block that shows the cluster table by
adding a language label ```text at the opening fence so it becomes a labeled
code block; locate the unlabeled example-output block (the triple-backtick fence
containing the NAME/HUB/ACCEPTED table) and change its opening fence to ```text
while leaving the block contents unchanged.

In `@skills/ramenctl-test-clean/SKILL.md`:
- Around line 39-41: The fenced code block showing the test summary ("✅ passed
(N passed, 0 failed, 0 skipped)") lacks a fence language which triggers MD040;
update the block in SKILL.md to include a language identifier (e.g., add "text"
after the opening triple backticks) so the block becomes ```text ... ```,
leaving the content unchanged.

In `@skills/ramenctl-test-run/SKILL.md`:
- Around line 55-57: The two fenced code blocks that currently start with ```
and contain "✅ passed (N passed, 0 failed, 0 skipped)" and "❌ failed (N passed,
M failed, 0 skipped)" are missing language identifiers and trigger MD040; update
both fences to include a language (e.g., change the opening fences to ```text)
so each block reads as ```text followed by the status line and closing ```,
ensuring the lint rule is satisfied for the blocks shown around the "✅
passed..." and "❌ failed..." snippets.

In `@skills/ramenctl-validate-application/SKILL.md`:
- Around line 33-36: Several fenced code blocks in SKILL.md are missing a
language specifier and trigger markdownlint MD040; update each triple-backtick
block shown (the table block starting with "NAMESPACE   NAME...", the "✅
Validation completed..." and "❌ Validation completed..." blocks, and the
directory-tree block starting with "validate-application.data/") to use a
language tag like ```text so they read ```text ... ```; ensure the same change
is applied to the other occurrences noted (the blocks around lines 59–67 and
116–129) and keep the content unchanged aside from adding the language
specifier.

In `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 41-43: Several fenced code blocks in SKILL.md (the blocks
containing "✅ Validation completed (N ok, 0 warning, 0 problem)", "❌ Validation
completed (N ok, M warning, P problem)", and the directory tree block starting
with "validate-clusters.data/") are missing a fence language and trigger MD040;
add a language identifier (use "text") after the opening triple backticks for
each of those three blocks so they become ```text, ensuring the validation
messages and the directory tree are fenced as text.

In `@skills/README.md`:
- Around line 72-74: The fenced code block containing the line "Read
skills/ramenctl-validate-clusters/SKILL.md and help me validate my clusters." is
unlabeled and triggers MD040; update the opening triple backticks to include a
language label (for example change ``` to ```text or ```bash) so the block is
explicit (e.g., use ```text before the line and keep the closing ```), ensuring
the markdown lint warning is resolved.

---

Nitpick comments:
In `@skills/ramenctl-validate-application/SKILL.md`:
- Around line 82-84: Replace the macOS-only example command `open
<output-dir>/validate-application.html` in SKILL.md with cross-platform
alternatives: keep the macOS `open` line and add a Linux `xdg-open
<output-dir>/validate-application.html` line (and optionally a comment
indicating which OS each line targets) so the validation report instruction in
the `open <output-dir>/validate-application.html` snippet works on both macOS
and Linux.

In `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 65-67: Update the README step that shows how to open
validate-clusters.html to include a cross-platform Linux alternative: keep the
existing macOS `open <output-dir>/validate-clusters.html` and add `xdg-open
<output-dir>/validate-clusters.html` (with brief labels like "# macOS" and "#
Linux") in the SKILL.md section that currently shows the single `open` command
so users on Linux can open the file as well.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b9bd95b7-0bee-49da-90cf-49c7e21bb35b

📥 Commits

Reviewing files that changed from the base of the PR and between 5109c53 and d33609c.

📒 Files selected for processing (7)
  • skills/README.md
  • skills/ramenctl-gather-application/SKILL.md
  • skills/ramenctl-init/SKILL.md
  • skills/ramenctl-test-clean/SKILL.md
  • skills/ramenctl-test-run/SKILL.md
  • skills/ramenctl-validate-application/SKILL.md
  • skills/ramenctl-validate-clusters/SKILL.md
📜 Review details
🧰 Additional context used
🪛 LanguageTool
skills/ramenctl-init/SKILL.md

[grammar] ~124-~124: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.22.1)
skills/ramenctl-gather-application/SKILL.md

[warning] 52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 73-73: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-run/SKILL.md

[warning] 55-55: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-clean/SKILL.md

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-validate-clusters/SKILL.md

[warning] 41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 48-48: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-init/SKILL.md

[warning] 105-105: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-validate-application/SKILL.md

[warning] 33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 59-59: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 65-65: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 116-116: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/README.md

[warning] 72-72: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (2)
skills/README.md (1)

1-71: LGTM!

Also applies to: 76-86

skills/ramenctl-init/SKILL.md (1)

1-104: LGTM!

Also applies to: 111-162

Comment thread skills/ramenctl-gather-application/SKILL.md Outdated
Comment thread skills/ramenctl-init/SKILL.md Outdated
Comment thread skills/ramenctl-test-clean/SKILL.md Outdated
Comment thread skills/ramenctl-test-run/SKILL.md Outdated
Comment thread skills/ramenctl-validate-application/SKILL.md Outdated
Comment thread skills/ramenctl-validate-clusters/SKILL.md Outdated
Comment thread skills/README.md Outdated
@nirs
nirs force-pushed the ramenctl-skill branch 2 times, most recently from 3915c0b to 5a8963a Compare May 15, 2026 00:32

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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 `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 65-67: Replace the macOS-only example "open
<output-dir>/validate-clusters.html" in SKILL.md with cross-platform
instructions: update the code block that currently shows only the `open` command
to include both macOS (`open <output-dir>/validate-clusters.html`) and Linux
(`xdg-open <output-dir>/validate-clusters.html`) variants so Linux users can
open the generated validate-clusters.html report; keep the surrounding bash code
fence and add short comments indicating which line is for macOS vs Linux.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bcd91b9a-72fc-4bf9-928b-0a82f688de0d

📥 Commits

Reviewing files that changed from the base of the PR and between d33609c and 3915c0b.

📒 Files selected for processing (7)
  • skills/README.md
  • skills/ramenctl-gather-application/SKILL.md
  • skills/ramenctl-init/SKILL.md
  • skills/ramenctl-test-clean/SKILL.md
  • skills/ramenctl-test-run/SKILL.md
  • skills/ramenctl-validate-application/SKILL.md
  • skills/ramenctl-validate-clusters/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Test (ubuntu-24.04)
  • GitHub Check: Test (ubuntu-24.04-arm)
  • GitHub Check: Build (darwin, arm64)
  • GitHub Check: Build (darwin, amd64)
  • GitHub Check: Build (windows, amd64)
  • GitHub Check: Build (linux, arm64)
  • GitHub Check: Test (windows-latest)
  • GitHub Check: Test (macos-15-intel)
  • GitHub Check: Test (macos-15)
  • GitHub Check: Build (linux, amd64)
  • GitHub Check: Lint
🧰 Additional context used
🪛 LanguageTool
skills/ramenctl-init/SKILL.md

[grammar] ~125-~125: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.22.1)
skills/ramenctl-validate-application/SKILL.md

[warning] 41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 82-82: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 88-88: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 139-139: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/README.md

[warning] 133-133: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-gather-application/SKILL.md

[warning] 52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 73-73: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-init/SKILL.md

[warning] 106-106: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-clean/SKILL.md

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-run/SKILL.md

[warning] 55-55: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-validate-clusters/SKILL.md

[warning] 41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 48-48: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (7)
skills/ramenctl-gather-application/SKILL.md (1)

52-54: Fenced code blocks still missing language labels.

This is the same MD040 issue already raised previously for this file and still applies at Line 52 and Line 73.

Also applies to: 73-98

skills/ramenctl-init/SKILL.md (1)

106-111: Example output fence remains unlabeled.

Same previously reported MD040 issue is still present at Line 106.

skills/ramenctl-test-clean/SKILL.md (1)

39-41: Success output fence is still unlabeled.

This repeats the previously raised MD040 finding at Line 39.

skills/ramenctl-test-run/SKILL.md (1)

55-57: Result-status fenced blocks still missing language labels.

This is the same MD040 issue previously flagged, still present at Line 55 and Line 62.

Also applies to: 62-64

skills/ramenctl-validate-clusters/SKILL.md (1)

41-43: Multiple fenced code blocks are still unlabeled.

Previously reported MD040 issue remains at Line 41, Line 48, and Line 101.

Also applies to: 48-50, 101-114

skills/README.md (1)

1-147: LGTM!

skills/ramenctl-validate-application/SKILL.md (1)

1-180: LGTM!

Comment thread skills/ramenctl-validate-clusters/SKILL.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

♻️ Duplicate comments (15)
skills/README.md (1)

133-135: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add language identifier to the fenced code block.

This unlabeled fence triggers MD040 markdown lint warnings.

🔧 Suggested fix
-```
+```text
 Read skills/ramenctl-validate-clusters/SKILL.md and help me validate my clusters.
</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 @skills/README.md around lines 133 - 135, The fenced code block in
skills/README.md containing "Read skills/ramenctl-validate-clusters/SKILL.md and
help me validate my clusters." is unlabeled and triggers MD040; update that
fence to include a language identifier (e.g., change the opening totext)
so the block is labeled as text and the markdown lint warning is resolved.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-validate-clusters/SKILL.md (4)</summary><blockquote>

`65-67`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Provide cross-platform instructions for opening the HTML report.**

The `open` command is macOS-specific and will fail on Linux systems.





<details>
<summary>🔧 Suggested fix for cross-platform compatibility</summary>

```diff
-```bash
-open <output-dir>/validate-clusters.html
-```
+```bash
+# macOS
+open <output-dir>/validate-clusters.html
+# Linux
+xdg-open <output-dir>/validate-clusters.html
+```
```
</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 `@skills/ramenctl-validate-clusters/SKILL.md` around lines 65 - 67, The README
snippet uses the macOS-only `open` command; update the `validate-clusters.html`
opening instructions in SKILL.md to provide cross-platform alternatives by
adding explicit examples for macOS (`open`) and Linux (`xdg-open`) (or a note to
use the appropriate command for the reader's OS) in the same bash code block so
users on Linux can follow the correct command.
```

</details>

---

`41-43`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the success message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ✅ Validation completed (N ok, 0 warning, 0 problem)
 ```
```
</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 @skills/ramenctl-validate-clusters/SKILL.md around lines 41 - 43, The fenced
code block containing "✅ Validation completed (N ok, 0 warning, 0 problem)" is
unlabeled and causing MD040 lint warnings; update that fence from an unlabeled
triple-backtick to include a language identifier (e.g., change totext)
so the block becomes a labeled code fence and the markdown linter stops flagging
MD040.


</details>

---

`101-114`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the directory structure fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 validate-clusters.data/
 ├── <cluster>/
 │   ├── cluster/
```
</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 @skills/ramenctl-validate-clusters/SKILL.md around lines 101 - 114, The
fenced directory-structure block for validate-clusters.data is missing a
language identifier which causes MD040 lint warnings; update the fence starting
with the triple backticks that opens the diagram in SKILL.md to include a
language token like "text" (i.e., change totext) so the block is
explicitly labeled, leaving the diagram content unchanged and ensuring the rest
of the file (the closing ``` and surrounding text) remains intact.


</details>

---

`48-50`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Specify language for the failure message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ❌ Validation completed (N ok, M warning, P problem)
 ```
```
</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 @skills/ramenctl-validate-clusters/SKILL.md around lines 48 - 50, The
unlabeled code fence in SKILL.md showing the failure message should be changed
to a labeled fence (e.g., use text) so the markdown linter MD040 stops complaining; locate the fence containing "❌ Validation completed (N ok, M warning, P problem)" and replace the opening triple backticks with a language tag (for example, text) to explicitly specify the fence language.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-test-clean/SKILL.md (1)</summary><blockquote>

`39-41`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Specify language for the success message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ✅ passed (N passed, 0 failed, 0 skipped)
 ```
```
</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 @skills/ramenctl-test-clean/SKILL.md around lines 39 - 41, Update the
unlabeled fenced code block showing the test summary so it specifies a language
label (use "text") to satisfy MD040; locate the fence containing "✅ passed (N
passed, 0 failed, 0 skipped)" in SKILL.md and change the opening triple
backticks to "```text" so the block becomes a labeled plain-text fence.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-validate-application/SKILL.md (4)</summary><blockquote>

`88-90`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Specify language for the failure message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ❌ Validation completed (N ok, M warning, P problem)
 ```
```
</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 @skills/ramenctl-validate-application/SKILL.md around lines 88 - 90, The
markdown fence for the failure message is unlabeled and triggers MD040; update
the fenced code block containing "❌ Validation completed (N ok, M warning, P
problem)" to use a language label (e.g., change the opening fence to text) so the fence becomes text ... ```; locate the fenced block in SKILL.md that
contains that exact message and add the language specifier to the opening
backticks.


</details>

---

`139-152`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the directory structure fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 validate-application.data/
 ├── <cluster>/
 │   ├── cluster/
```
</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 @skills/ramenctl-validate-application/SKILL.md around lines 139 - 152, The
fenced code block showing the directory tree (starting with
"validate-application.data/") is missing a language identifier and triggers
MD040; update the opening fence for that block to include a language (e.g., add
"text" after the backticks) so the block becomes "```text" and preserves the
ASCII tree formatting; locate the block containing "validate-application.data/"
in SKILL.md and change its opening fence accordingly.


</details>

---

`41-44`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the example output fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 NAMESPACE   NAME                   AGE   PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
 argocd      appset-deploy-rbd      69m   dr1                dr2               Relocate       Relocated
 ```
```
</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 @skills/ramenctl-validate-application/SKILL.md around lines 41 - 44, The
example output block in SKILL.md uses an unlabeled code fence (``` ) which
triggers MD040; change that fence to include a language identifier (e.g.,

the fence is labeled and the markdown lint warning is resolved.

82-84: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Specify language for the success message fence.

This unlabeled fence triggers MD040 markdown lint warnings.

🔧 Suggested fix
-```
+```text
 ✅ Validation completed (N ok, 0 warning, 0 problem)
</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 @skills/ramenctl-validate-application/SKILL.md around lines 82 - 84, The
unlabeled code fence containing the success message "✅ Validation completed (N
ok, 0 warning, 0 problem)" in SKILL.md is triggering MD040; update that fenced
block to include a language specifier (e.g., add "text" after the opening ```
fence) so the fence becomes labeled and the markdown linter warning is resolved.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-init/SKILL.md (1)</summary><blockquote>

`106-111`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the example output fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 NAME            HUB ACCEPTED   MANAGED CLUSTER URLS                 JOINED   AVAILABLE   AGE   CLUSTERSET
 my-c1           true           https://api.my-c1.example.com:6443   True     True        16d   dr-clusters
 my-c2           true           https://api.my-c2.example.com:6443   True     True        16d   dr-clusters
 local-cluster   true           https://api.my-hub.example.com:6443  True     True        16d   default
 ```
```
</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 @skills/ramenctl-init/SKILL.md around lines 106 - 111, The example output
fence in the SKILL.md snippet is unlabeled and triggers MD040; fix it by adding
a language identifier after the opening triple backticks (e.g., change the
opening "" to "text") for the example block that starts with "NAME
HUB ACCEPTED MANAGED CLUSTER URLS..." so the fenced code block is explicitly
marked as plain text.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-test-run/SKILL.md (2)</summary><blockquote>

`62-64`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the failure message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ❌ failed (N passed, M failed, 0 skipped)
 ```
```
</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 @skills/ramenctl-test-run/SKILL.md around lines 62 - 64, Add the language
identifier "text" to the unlabeled fenced code block that contains the failure
message (the block starting with and containing "❌ failed (N passed, M failed, 0 skipped)") so the fence becomestext to satisfy MD040; update the
fence around that exact snippet in SKILL.md.


</details>

---

`55-57`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the success message fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ✅ passed (N passed, 0 failed, 0 skipped)
 ```
```
</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 @skills/ramenctl-test-run/SKILL.md around lines 55 - 57, The markdown code
fence containing the success message "✅ passed (N passed, 0 failed, 0 skipped)"
is unlabeled and causing MD040 lint warnings; update that fenced block from an
unlabeled triple-backtick to a language-labeled fence (e.g., change the opening
"" to "text") so the fence reads as a text code block and the linter
warning is resolved.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-gather-application/SKILL.md (2)</summary><blockquote>

`73-98`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Add language identifier to the directory structure fence.**

This unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 gather-application.data/
 ├── dr1/
 │   ├── cluster/
```
</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 @skills/ramenctl-gather-application/SKILL.md around lines 73 - 98, The fenced
directory-tree block starting with "gather-application.data/" is missing a
language identifier and triggers MD040; update the triple-backtick fence in
SKILL.md that wraps the directory structure (the block that begins with
gather-application.data/) to include a language tag such as ```text so the fence
becomes labeled and the markdown lint warning is resolved.


</details>

---

`52-54`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Specify language for the fenced code block.**

The unlabeled fence triggers MD040 markdown lint warnings.





<details>
<summary>🔧 Suggested fix</summary>

```diff
-```
+```text
 ✅ Gather completed
 ```
```
</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 @skills/ramenctl-gather-application/SKILL.md around lines 52 - 54, The fenced
code block containing "✅ Gather completed" in SKILL.md is unlabeled and triggers
MD040; update that block to include a language identifier (e.g., change the
opening totext) so the fence becomes a labeled code block (```text ...

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

Duplicate comments:
In `@skills/ramenctl-gather-application/SKILL.md`:
- Around line 73-98: The fenced directory-tree block starting with
"gather-application.data/" is missing a language identifier and triggers MD040;
update the triple-backtick fence in SKILL.md that wraps the directory structure
(the block that begins with gather-application.data/) to include a language tag
such as ```text so the fence becomes labeled and the markdown lint warning is
resolved.
- Around line 52-54: The fenced code block containing "✅ Gather completed" in
SKILL.md is unlabeled and triggers MD040; update that block to include a
language identifier (e.g., change the opening ``` to ```text) so the fence
becomes a labeled code block (```text ... ```), preserving the exact content
inside the block.

In `@skills/ramenctl-init/SKILL.md`:
- Around line 106-111: The example output fence in the SKILL.md snippet is
unlabeled and triggers MD040; fix it by adding a language identifier after the
opening triple backticks (e.g., change the opening "```" to "```text") for the
example block that starts with "NAME            HUB ACCEPTED   MANAGED CLUSTER
URLS..." so the fenced code block is explicitly marked as plain text.

In `@skills/ramenctl-test-clean/SKILL.md`:
- Around line 39-41: Update the unlabeled fenced code block showing the test
summary so it specifies a language label (use "text") to satisfy MD040; locate
the fence containing "✅ passed (N passed, 0 failed, 0 skipped)" in SKILL.md and
change the opening triple backticks to "```text" so the block becomes a labeled
plain-text fence.

In `@skills/ramenctl-test-run/SKILL.md`:
- Around line 62-64: Add the language identifier "text" to the unlabeled fenced
code block that contains the failure message (the block starting with ``` and
containing "❌ failed (N passed, M failed, 0 skipped)") so the fence becomes
```text to satisfy MD040; update the fence around that exact snippet in
SKILL.md.
- Around line 55-57: The markdown code fence containing the success message "✅
passed (N passed, 0 failed, 0 skipped)" is unlabeled and causing MD040 lint
warnings; update that fenced block from an unlabeled triple-backtick to a
language-labeled fence (e.g., change the opening "```" to "```text") so the
fence reads as a text code block and the linter warning is resolved.

In `@skills/ramenctl-validate-application/SKILL.md`:
- Around line 88-90: The markdown fence for the failure message is unlabeled and
triggers MD040; update the fenced code block containing "❌ Validation completed
(N ok, M warning, P problem)" to use a language label (e.g., change the opening
fence to ```text) so the fence becomes ```text ... ```; locate the fenced block
in SKILL.md that contains that exact message and add the language specifier to
the opening backticks.
- Around line 139-152: The fenced code block showing the directory tree
(starting with "validate-application.data/") is missing a language identifier
and triggers MD040; update the opening fence for that block to include a
language (e.g., add "text" after the backticks) so the block becomes "```text"
and preserves the ASCII tree formatting; locate the block containing
"validate-application.data/" in SKILL.md and change its opening fence
accordingly.
- Around line 41-44: The example output block in SKILL.md uses an unlabeled code
fence (``` ) which triggers MD040; change that fence to include a language
identifier (e.g., ```text) surrounding the table lines (the NAMESPACE... and
argocd... rows) so the fence is labeled and the markdown lint warning is
resolved.
- Around line 82-84: The unlabeled code fence containing the success message "✅
Validation completed (N ok, 0 warning, 0 problem)" in SKILL.md is triggering
MD040; update that fenced block to include a language specifier (e.g., add
"text" after the opening ``` fence) so the fence becomes labeled and the
markdown linter warning is resolved.

In `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 65-67: The README snippet uses the macOS-only `open` command;
update the `validate-clusters.html` opening instructions in SKILL.md to provide
cross-platform alternatives by adding explicit examples for macOS (`open`) and
Linux (`xdg-open`) (or a note to use the appropriate command for the reader's
OS) in the same bash code block so users on Linux can follow the correct
command.
- Around line 41-43: The fenced code block containing "✅ Validation completed (N
ok, 0 warning, 0 problem)" is unlabeled and causing MD040 lint warnings; update
that fence from an unlabeled triple-backtick to include a language identifier
(e.g., change ``` to ```text) so the block becomes a labeled code fence and the
markdown linter stops flagging MD040.
- Around line 101-114: The fenced directory-structure block for
validate-clusters.data is missing a language identifier which causes MD040 lint
warnings; update the fence starting with the triple backticks that opens the
diagram in SKILL.md to include a language token like "text" (i.e., change ``` to
```text) so the block is explicitly labeled, leaving the diagram content
unchanged and ensuring the rest of the file (the closing ``` and surrounding
text) remains intact.
- Around line 48-50: The unlabeled code fence in SKILL.md showing the failure
message should be changed to a labeled fence (e.g., use ```text) so the markdown
linter MD040 stops complaining; locate the fence containing "❌ Validation
completed (N ok, M warning, P problem)" and replace the opening triple backticks
with a language tag (for example, ```text) to explicitly specify the fence
language.

In `@skills/README.md`:
- Around line 133-135: The fenced code block in skills/README.md containing
"Read skills/ramenctl-validate-clusters/SKILL.md and help me validate my
clusters." is unlabeled and triggers MD040; update that fence to include a
language identifier (e.g., change the opening ``` to ```text) so the block is
labeled as text and the markdown lint warning is resolved.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: eb8016e6-ef5d-4260-a2d8-669e374c556a

📥 Commits

Reviewing files that changed from the base of the PR and between 3915c0b and 5a8963a.

📒 Files selected for processing (7)
  • skills/README.md
  • skills/ramenctl-gather-application/SKILL.md
  • skills/ramenctl-init/SKILL.md
  • skills/ramenctl-test-clean/SKILL.md
  • skills/ramenctl-test-run/SKILL.md
  • skills/ramenctl-validate-application/SKILL.md
  • skills/ramenctl-validate-clusters/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Test (macos-15-intel)
  • GitHub Check: Test (windows-latest)
🧰 Additional context used
🪛 LanguageTool
skills/ramenctl-init/SKILL.md

[grammar] ~125-~125: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.22.1)
skills/README.md

[warning] 133-133: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-gather-application/SKILL.md

[warning] 52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 73-73: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-init/SKILL.md

[warning] 106-106: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-clean/SKILL.md

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-test-run/SKILL.md

[warning] 55-55: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-validate-application/SKILL.md

[warning] 41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 82-82: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 88-88: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 139-139: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/ramenctl-validate-clusters/SKILL.md

[warning] 41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 48-48: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

@nirs
nirs force-pushed the ramenctl-skill branch from 5a8963a to 373fb2d Compare May 15, 2026 00:54

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🤖 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 `@skills/ramenctl-gather-application/SKILL.md`:
- Around line 41-43: The fenced code blocks containing the command examples
(e.g., the line with "ramenctl gather application --name <drpc-name> --namespace
<namespace> -o <output-dir>") include leading "$" prompts, which triggers
markdownlint MD014; remove the "$" prefix from each command-only line in those
console code fences (also update the other command-only blocks referenced around
the same section) so the fenced blocks contain bare commands without shell
prompt characters.

In `@skills/ramenctl-test-clean/SKILL.md`:
- Around line 26-28: Remove the leading shell prompt from the command-only
console code blocks to satisfy MD014: replace lines like "$ ramenctl test clean
-o <output-dir>" inside the ```console``` fences with the same command but
without the leading "$", and do the same for the other command-only block
referenced (the block around lines 47-51); keep the ```console``` fences but
ensure they contain only the command text (no prompt or output).

In `@skills/ramenctl-test-run/SKILL.md`:
- Around line 39-41: Remove the leading "$ " prompt markers from all console
code blocks so they contain only the raw commands (e.g., change "`$ ramenctl
test run -o <output-dir>`" to "`ramenctl test run -o <output-dir>`"); apply the
same change to the other affected blocks referenced (lines showing the other
console snippets) so markdownlint MD014 stops failing and examples are raw
commands only.

In `@skills/ramenctl-validate-application/SKILL.md`:
- Around line 64-66: Remove the leading shell prompt characters from the code
block examples so they comply with MD014: edit the console fenced code blocks
that currently show "$ ramenctl validate application --name <drpc-name>
--namespace <namespace> -o <output-dir>" (and the other similar blocks around
the same file at the regions noted: the snippets near lines 105-107, 165-167,
and 171-173) and delete the leading "$ " from each line so the commands are raw
(e.g., "ramenctl validate application --name ...") while leaving the rest of the
text and code fencing unchanged.

In `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 28-30: Remove the leading "$" prompt from the command-only fenced
code blocks so they contain plain commands (e.g. change "$ ramenctl validate
clusters -o <output-dir>" to "ramenctl validate clusters -o <output-dir>") in
SKILL.md; apply the same change to the other command block referenced around
lines 70-72 to satisfy markdownlint MD014.

In `@skills/README.md`:
- Around line 115-117: Remove the leading shell prompt from the command-only
```console``` code blocks so they comply with MD014: replace "`$ cp -r skills/
~/.cursor/skills/`" with "cp -r skills/ ~/.cursor/skills/" and replace "`$ cat
skills/*/SKILL.md >> CLAUDE.md`" with "cat skills/*/SKILL.md >> CLAUDE.md"
(update both matching ```console``` blocks in the README).
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8b49aff7-b4d4-4e67-9f8c-9efc85dabca8

📥 Commits

Reviewing files that changed from the base of the PR and between 5a8963a and 373fb2d.

📒 Files selected for processing (7)
  • skills/README.md
  • skills/ramenctl-gather-application/SKILL.md
  • skills/ramenctl-init/SKILL.md
  • skills/ramenctl-test-clean/SKILL.md
  • skills/ramenctl-test-run/SKILL.md
  • skills/ramenctl-validate-application/SKILL.md
  • skills/ramenctl-validate-clusters/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Test (macos-15-intel)
  • GitHub Check: Test (ubuntu-24.04)
  • GitHub Check: Build (linux, arm64)
  • GitHub Check: Build (darwin, amd64)
  • GitHub Check: Test (ubuntu-24.04-arm)
  • GitHub Check: Build (windows, amd64)
  • GitHub Check: Test (windows-latest)
  • GitHub Check: Build (linux, amd64)
  • GitHub Check: Build (darwin, arm64)
  • GitHub Check: Test (macos-15)
  • GitHub Check: Lint
🧰 Additional context used
🪛 LanguageTool
skills/ramenctl-gather-application/SKILL.md

[grammar] ~105-~105: Use a hyphen to join words.
Context: ...Inspecting gathered resources Check VRG protected PVC conditions: ```console $ ...

(QB_NEW_EN_HYPHEN)

skills/ramenctl-init/SKILL.md

[grammar] ~129-~129: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.22.1)
skills/README.md

[warning] 116-116: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 128-128: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-gather-application/SKILL.md

[warning] 42-42: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 108-108: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 114-114: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-test-clean/SKILL.md

[warning] 27-27: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 48-48: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 49-49: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 50-50: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-test-run/SKILL.md

[warning] 40-40: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 81-81: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 87-87: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 93-93: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 116-116: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-validate-application/SKILL.md

[warning] 65-65: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 106-106: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 166-166: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 172-172: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-validate-clusters/SKILL.md

[warning] 29-29: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 71-71: Dollar signs used before commands without showing output

(MD014, commands-show-output)

🔇 Additional comments (1)
skills/ramenctl-init/SKILL.md (1)

1-167: LGTM!

Comment thread skills/ramenctl-gather-application/SKILL.md
Comment thread skills/ramenctl-test-clean/SKILL.md
Comment thread skills/ramenctl-test-run/SKILL.md
Comment thread skills/ramenctl-validate-application/SKILL.md
Comment thread skills/ramenctl-validate-clusters/SKILL.md
Comment thread skills/README.md
@nirs
nirs force-pushed the ramenctl-skill branch from 373fb2d to 4b747f3 Compare May 15, 2026 01:04

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

♻️ Duplicate comments (7)
skills/README.md (2)

134-134: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove shell prompt from command-only console block.

The console block contains only a command without output, so the leading $ triggers MD014 lint warnings.

Suggested fix
 ```console
-$ cat skills/*/SKILL.md >> CLAUDE.md
+cat skills/*/SKILL.md >> CLAUDE.md
</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 @skills/README.md at line 134, The README's console block includes a leading
shell prompt character in the command-only line ("$ cat skills//SKILL.md >>
CLAUDE.md"), which triggers MD014 lint warnings; update the console block to
remove the leading "$" so the line reads "cat skills/
/SKILL.md >> CLAUDE.md"
(locate the command in skills/README.md and replace the string with the
prompt-free version).


</details>

---

`122-122`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompt from command-only console block.**

The console block contains only a command without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ cp -r skills/ ~/.cursor/skills/
+cp -r skills/ ~/.cursor/skills/
</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 @skills/README.md at line 122, Remove the leading shell prompt from the
command-only console block so it doesn't trigger MD014: edit the console block
containing the command "cp -r skills/ ~/.cursor/skills/" and change the line
from a prompt-prefixed entry to a raw command (remove the leading "$"); ensure
the block remains fenced as a console/code block and contains only the command
text.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-validate-clusters/SKILL.md (1)</summary><blockquote>

`29-29`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompts from command-only console blocks.**

These console blocks contain only commands without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ ramenctl validate clusters -o <output-dir>
+ramenctl validate clusters -o <output-dir>

@@

-$ yq '.clustersStatus' < <output-dir>/validate-clusters.yaml
+yq '.clustersStatus' < <output-dir>/validate-clusters.yaml
</details>


Also applies to: 71-71

<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 @skills/ramenctl-validate-clusters/SKILL.md at line 29, Remove the leading
shell prompt characters from the command-only console blocks so they don't
trigger MD014; specifically edit the console blocks containing the commands
"ramenctl validate clusters -o " and "yq '.clustersStatus' <
/validate-clusters.yaml" (and the other identical occurrence) to
delete the leading "$ " so the fence contains just the command text.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-test-clean/SKILL.md (1)</summary><blockquote>

`27-27`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompts from command-only console blocks.**

These console blocks contain only commands without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ ramenctl test clean -o <output-dir>
+ramenctl test clean -o <output-dir>

@@

-$ kubectl get drpc -A --kubeconfig <hub-kubeconfig> | grep test-
-$ kubectl get ns --kubeconfig <c1-kubeconfig> | grep test-
-$ kubectl get ns --kubeconfig <c2-kubeconfig> | grep test-
+kubectl get drpc -A --kubeconfig <hub-kubeconfig> | grep test-
+kubectl get ns --kubeconfig <c1-kubeconfig> | grep test-
+kubectl get ns --kubeconfig <c2-kubeconfig> | grep test-
</details>


Also applies to: 48-50

<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 @skills/ramenctl-test-clean/SKILL.md at line 27, Remove the leading shell
prompt characters from command-only console blocks in SKILL.md: change the lines
starting with "$ ramenctl test clean -o " and the "$ kubectl get
drpc -A --kubeconfig | grep test-" / "$ kubectl get ns
--kubeconfig | grep test-" / "$ kubectl get ns --kubeconfig
| grep test-" to omit the "$" so the blocks contain only the
commands (also apply the same removal for the occurrences noted at lines 48-50).


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-test-run/SKILL.md (1)</summary><blockquote>

`40-40`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompts from command-only console blocks.**

These console blocks contain only commands without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ ramenctl test run -o <output-dir>
+ramenctl test run -o <output-dir>

@@

-$ yq '.status' < <output-dir>/test-run.yaml
+yq '.status' < <output-dir>/test-run.yaml

@@

-$ yq '.steps[-1].items' < <output-dir>/test-run.yaml
+yq '.steps[-1].items' < <output-dir>/test-run.yaml

@@

-$ grep -E '(INFO|ERROR).+<app-name>' <output-dir>/test-run.log
+grep -E '(INFO|ERROR).+<app-name>' <output-dir>/test-run.log

@@

-$ ramenctl test clean -o <output-dir>
+ramenctl test clean -o <output-dir>
</details>


Also applies to: 81-81, 87-87, 93-93, 116-116

<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 @skills/ramenctl-test-run/SKILL.md at line 40, Remove the leading shell
prompt characters from command-only console blocks in SKILL.md: for each code
block containing only commands (e.g., lines with "ramenctl test run -o
", "yq '.status' < /test-run.yaml", "yq
'.steps[-1].items' < /test-run.yaml", "grep -E
'(INFO|ERROR).+' /test-run.log", and "ramenctl test clean
-o ") delete the leading "$ " so the blocks contain just the
commands (no prompt) to satisfy MD014 linting.


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-gather-application/SKILL.md (1)</summary><blockquote>

`42-42`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompts from command-only console blocks.**

These console blocks contain only commands without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ ramenctl gather application --name <drpc-name> --namespace <namespace> -o <output-dir>
+ramenctl gather application --name <drpc-name> --namespace <namespace> -o <output-dir>

@@

-$ yq '.status.protectedPVCs[0].conditions' < <output-dir>/gather-application.data/<cluster>/namespaces/<ns>/ramendr.openshift.io/volumereplicationgroups/<name>.yaml
+yq '.status.protectedPVCs[0].conditions' < <output-dir>/gather-application.data/<cluster>/namespaces/<ns>/ramendr.openshift.io/volumereplicationgroups/<name>.yaml

@@

-$ grep -E 'ERROR.+<app-name>' <output-dir>/gather-application.data/<cluster>/namespaces/ramen-system/pods/*/manager/current.log
+grep -E 'ERROR.+<app-name>' <output-dir>/gather-application.data/<cluster>/namespaces/ramen-system/pods/*/manager/current.log
</details>


Also applies to: 108-108, 114-114

<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 @skills/ramenctl-gather-application/SKILL.md at line 42, Remove the leading
shell prompt characters from command-only console code blocks in SKILL.md: find
the lines containing "ramenctl gather application --name --namespace
-o ", "yq '.status.protectedPVCs[0].conditions' <
/gather-application.data//namespaces//ramendr.openshift.io/volumereplicationgroups/.yaml",
and "grep -E 'ERROR.+'
/gather-application.data//namespaces/ramen-system/pods/*/manager/current.log"
and remove the leading "$ " from each code block so the blocks contain only the
command text (this addresses MD014 lint warnings).


</details>

</blockquote></details>
<details>
<summary>skills/ramenctl-validate-application/SKILL.md (1)</summary><blockquote>

`65-65`: _⚠️ Potential issue_ | _🟡 Minor_ | _⚡ Quick win_

**Remove shell prompts from command-only console blocks.**

These console blocks contain only commands without output, so the leading `$` triggers MD014 lint warnings.




<details>
<summary>Suggested fix</summary>

```diff
 ```console
-$ ramenctl validate application --name <drpc-name> --namespace <namespace> -o <output-dir>
+ramenctl validate application --name <drpc-name> --namespace <namespace> -o <output-dir>

@@

-$ yq '.applicationStatus' < <output-dir>/validate-application.yaml
+yq '.applicationStatus' < <output-dir>/validate-application.yaml

@@

-$ yq '.status' < <output-dir>/validate-application.data/<cluster>/namespaces/<ns>/ramendr.openshift.io/volumereplicationgroups/<name>.yaml
+yq '.status' < <output-dir>/validate-application.data/<cluster>/namespaces/<ns>/ramendr.openshift.io/volumereplicationgroups/<name>.yaml

@@

-$ grep -E 'ERROR.+<app-name>' <output-dir>/validate-application.data/<cluster>/namespaces/ramen-system/pods/*/manager/current.log
+grep -E 'ERROR.+<app-name>' <output-dir>/validate-application.data/<cluster>/namespaces/ramen-system/pods/*/manager/current.log
</details>


Also applies to: 106-106, 166-166, 172-172

<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 @skills/ramenctl-validate-application/SKILL.md at line 65, Remove the leading
shell prompt characters from command-only console blocks in SKILL.md so they no
longer start with "$"; specifically edit the console blocks containing the
commands "ramenctl validate application --name --namespace
-o ", "yq '.applicationStatus' <
/validate-application.yaml", "yq '.status' <
/validate-application.data//namespaces//ramendr.openshift.io/volumereplicationgroups/.yaml",
and "grep -E 'ERROR.+'
/validate-application.data//namespaces/ramen-system/pods/*/manager/current.log"
(and the other occurrences noted at lines 106, 166, 172) so each command appears
without the leading "$" to satisfy MD014 lint rules.


</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 @skills/ramenctl-gather-application/SKILL.md:

  • Line 42: Remove the leading shell prompt characters from command-only console
    code blocks in SKILL.md: find the lines containing "ramenctl gather application
    --name --namespace -o ", "yq
    '.status.protectedPVCs[0].conditions' <
    /gather-application.data//namespaces//ramendr.openshift.io/volumereplicationgroups/.yaml",
    and "grep -E 'ERROR.+'
    /gather-application.data//namespaces/ramen-system/pods/*/manager/current.log"
    and remove the leading "$ " from each code block so the blocks contain only the
    command text (this addresses MD014 lint warnings).

In @skills/ramenctl-test-clean/SKILL.md:

  • Line 27: Remove the leading shell prompt characters from command-only console
    blocks in SKILL.md: change the lines starting with "$ ramenctl test clean -o
    " and the "$ kubectl get drpc -A --kubeconfig |
    grep test-" / "$ kubectl get ns --kubeconfig | grep test-" / "$
    kubectl get ns --kubeconfig | grep test-" to omit the "$" so the
    blocks contain only the commands (also apply the same removal for the
    occurrences noted at lines 48-50).

In @skills/ramenctl-test-run/SKILL.md:

  • Line 40: Remove the leading shell prompt characters from command-only console
    blocks in SKILL.md: for each code block containing only commands (e.g., lines
    with "ramenctl test run -o ", "yq '.status' <
    /test-run.yaml", "yq '.steps[-1].items' <
    /test-run.yaml", "grep -E '(INFO|ERROR).+'
    /test-run.log", and "ramenctl test clean -o ") delete
    the leading "$ " so the blocks contain just the commands (no prompt) to satisfy
    MD014 linting.

In @skills/ramenctl-validate-application/SKILL.md:

  • Line 65: Remove the leading shell prompt characters from command-only console
    blocks in SKILL.md so they no longer start with "$"; specifically edit the
    console blocks containing the commands "ramenctl validate application --name
    --namespace -o ", "yq '.applicationStatus' <
    /validate-application.yaml", "yq '.status' <
    /validate-application.data//namespaces//ramendr.openshift.io/volumereplicationgroups/.yaml",
    and "grep -E 'ERROR.+'
    /validate-application.data//namespaces/ramen-system/pods/*/manager/current.log"
    (and the other occurrences noted at lines 106, 166, 172) so each command appears
    without the leading "$" to satisfy MD014 lint rules.

In @skills/ramenctl-validate-clusters/SKILL.md:

  • Line 29: Remove the leading shell prompt characters from the command-only
    console blocks so they don't trigger MD014; specifically edit the console blocks
    containing the commands "ramenctl validate clusters -o " and "yq
    '.clustersStatus' < /validate-clusters.yaml" (and the other
    identical occurrence) to delete the leading "$ " so the fence contains just the
    command text.

In @skills/README.md:

  • Line 134: The README's console block includes a leading shell prompt character
    in the command-only line ("$ cat skills//SKILL.md >> CLAUDE.md"), which
    triggers MD014 lint warnings; update the console block to remove the leading "$"
    so the line reads "cat skills/
    /SKILL.md >> CLAUDE.md" (locate the command in
    skills/README.md and replace the string with the prompt-free version).
  • Line 122: Remove the leading shell prompt from the command-only console block
    so it doesn't trigger MD014: edit the console block containing the command "cp
    -r skills/ ~/.cursor/skills/" and change the line from a prompt-prefixed entry
    to a raw command (remove the leading "$"); ensure the block remains fenced as a
    console/code block and contains only the command text.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro Plus

**Run ID**: `7e255cf4-5534-4812-96b4-1c456977e3a0`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 373fb2d16d6e2179ae40b69ee8c4efe94bb996bd and 4b747f3bb137454e5ce0576db6167e5d5a919c25.

</details>

<details>
<summary>📒 Files selected for processing (7)</summary>

* `skills/README.md`
* `skills/ramenctl-gather-application/SKILL.md`
* `skills/ramenctl-init/SKILL.md`
* `skills/ramenctl-test-clean/SKILL.md`
* `skills/ramenctl-test-run/SKILL.md`
* `skills/ramenctl-validate-application/SKILL.md`
* `skills/ramenctl-validate-clusters/SKILL.md`

</details>

</details>

<details>
<summary>📜 Review details</summary>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)</summary>

* GitHub Check: Build (linux, amd64)
* GitHub Check: Build (linux, arm64)
* GitHub Check: Test (macos-15)
* GitHub Check: Build (darwin, arm64)
* GitHub Check: Build (windows, amd64)
* GitHub Check: Test (windows-latest)
* GitHub Check: Build (darwin, amd64)
* GitHub Check: Test (ubuntu-24.04)
* GitHub Check: Test (ubuntu-24.04-arm)
* GitHub Check: Lint
* GitHub Check: Test (macos-15-intel)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>skills/ramenctl-gather-application/SKILL.md</summary>

[grammar] ~105-~105: Use a hyphen to join words.
Context: ...Inspecting gathered resources  Check VRG protected PVC conditions:  ```console $ ...

(QB_NEW_EN_HYPHEN)

</details>
<details>
<summary>skills/ramenctl-init/SKILL.md</summary>

[grammar] ~129-~129: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

<details>
<summary>skills/README.md</summary>

[warning] 122-122: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 134-134: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>
<details>
<summary>skills/ramenctl-gather-application/SKILL.md</summary>

[warning] 42-42: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 108-108: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 114-114: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>
<details>
<summary>skills/ramenctl-test-clean/SKILL.md</summary>

[warning] 27-27: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 48-48: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 49-49: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 50-50: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>
<details>
<summary>skills/ramenctl-test-run/SKILL.md</summary>

[warning] 40-40: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 81-81: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 87-87: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 93-93: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 116-116: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>
<details>
<summary>skills/ramenctl-validate-application/SKILL.md</summary>

[warning] 65-65: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 106-106: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 166-166: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 172-172: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>
<details>
<summary>skills/ramenctl-validate-clusters/SKILL.md</summary>

[warning] 29-29: Dollar signs used before commands without showing output

(MD014, commands-show-output)

---

[warning] 71-71: Dollar signs used before commands without showing output

(MD014, commands-show-output)

</details>

</details>

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@nirs
nirs force-pushed the ramenctl-skill branch from 4b747f3 to e88c80c Compare May 15, 2026 01:12
@nirs

nirs commented May 15, 2026

Copy link
Copy Markdown
Member Author

CodeRabbit / review follow-up

Summary

We do not run markdownlint in this repo; CodeRabbit’s markdown rules are informative only. We fixed what matched our goals (MD040, cross-platform HTML guidance, alignment with docs/, clearer skill text). We are not changing fenced examples to satisfy MD014 so we stay consistent with docs/, which uses $ in console blocks the same way.

Fixed (accepted)

  1. MD040 — fenced blocks without a language — All relevant fences in skills/ and the README now use an explicit language (console, text, or yaml).

  2. macOS-only open for HTML reports — Validate skills no longer imply only open. They describe opening validate-*.html in a browser and point at pkg/command/browser.go for how ramenctl picks open / xdg-open / Windows start, with a short note for macOS / Linux / Windows.

  3. Alignment with docs/ for hub kubectl (DRPC list) — Primary example matches docs/gather.md / docs/validate.md: kubectl get drpc -A --context hub, with a note to use --kubeconfig <hub-kubeconfig> from the ramenctl config when the hub is not a merged hub context. Optional post–test clean checks follow the same idea (hub like docs; managed clusters via kubeconfig or equivalent contexts).

  4. Inspect commands (yq / grep) — Short descriptions live outside the console fences so intent stays clear and blocks stay transcript-style.

  5. README screenplay — Small content updates; text kept for the screenplay block on purpose.

Rejected / won’t do (and why)

  1. MD014 — remove $ from “command-only” console blocksRejected. We don’t enforce markdownlint in CI, and docs/ already uses $ in console for the same pattern. Stripping $ only in skills/ would diverge from docs/ without a repo-wide change.

  2. Per-OS fenced copy-paste for open / xdg-openSuperseded by browser.go-aligned prose: less duplication, matches implementation, stays portable.

Stale inline threads

Some inline comments may point at old line numbers after edits—safe to resolve once the branch matches the above.

@nirs
nirs force-pushed the ramenctl-skill branch 2 times, most recently from 4625281 to 647b378 Compare May 15, 2026 02:57
@nirs

nirs commented May 15, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 15, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@skills/ramenctl-validate-application/SKILL.md`:
- Line 77: Replace the ambiguous subcommand usage "ramenctl validate" with the
full subcommand "ramenctl validate application" in the skill guidance so users
run the exact command; search for occurrences of the string "ramenctl validate"
in SKILL.md (the line shown) and update them to "ramenctl validate application"
while preserving surrounding text and punctuation.

In `@skills/ramenctl-validate-clusters/SKILL.md`:
- Around line 62-63: Replace the ambiguous command string "ramenctl validate"
with the exact command "ramenctl validate clusters" in the sentence that
instructs opening <output-dir>/validate-clusters.html so the instructions are
unambiguous and copy/paste-safe; locate the occurrence of "ramenctl validate"
(the command text) in SKILL.md and update it to "ramenctl validate clusters".
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e2c95579-6a2f-4531-ad30-0a07f2790363

📥 Commits

Reviewing files that changed from the base of the PR and between 373fb2d and 647b378.

📒 Files selected for processing (7)
  • skills/README.md
  • skills/ramenctl-gather-application/SKILL.md
  • skills/ramenctl-init/SKILL.md
  • skills/ramenctl-test-clean/SKILL.md
  • skills/ramenctl-test-run/SKILL.md
  • skills/ramenctl-validate-application/SKILL.md
  • skills/ramenctl-validate-clusters/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Test (macos-15-intel)
  • GitHub Check: Test (windows-latest)
🧰 Additional context used
🪛 LanguageTool
skills/ramenctl-gather-application/SKILL.md

[grammar] ~106-~106: Use a hyphen to join words.
Context: ...Inspecting gathered resources Check VRG protected PVC conditions: ```console $ ...

(QB_NEW_EN_HYPHEN)

skills/ramenctl-init/SKILL.md

[grammar] ~127-~127: Ensure spelling is correct
Context: ... type, a cluster belongs to exactly one clusterSet (set via the `cluster.open-cluster-mana...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.22.1)
skills/README.md

[warning] 122-122: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 134-134: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-test-clean/SKILL.md

[warning] 27-27: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-gather-application/SKILL.md

[warning] 41-41: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 109-109: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 115-115: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-test-run/SKILL.md

[warning] 40-40: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 81-81: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 87-87: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 93-93: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 116-116: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-validate-application/SKILL.md

[warning] 44-44: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 103-103: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 163-163: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 169-169: Dollar signs used before commands without showing output

(MD014, commands-show-output)

skills/ramenctl-validate-clusters/SKILL.md

[warning] 29-29: Dollar signs used before commands without showing output

(MD014, commands-show-output)


[warning] 89-89: Dollar signs used before commands without showing output

(MD014, commands-show-output)

🔇 Additional comments (8)
skills/README.md (1)

1-153: LGTM!

skills/ramenctl-gather-application/SKILL.md (1)

1-125: LGTM!

skills/ramenctl-init/SKILL.md (1)

1-165: LGTM!

skills/ramenctl-test-run/SKILL.md (1)

1-125: LGTM!

skills/ramenctl-test-clean/SKILL.md (4)

26-28: MD014 flagged but explicitly rejected by author.

The static analysis tool flags the $ prompt in this command-only block, but per the PR comments summary, the author has chosen to maintain consistency with existing docs/ and not enforce markdownlint rules.


1-11: LGTM!


35-49: LGTM!


50-55: LGTM!

Comment thread skills/ramenctl-validate-application/SKILL.md Outdated
Comment thread skills/ramenctl-validate-clusters/SKILL.md Outdated
Add markdown skills (with Cursor frontmatter) so AI assistants can drive
ramenctl for DR: init, validate clusters, validate application, gather
application, test run, and test clean. Include README with install hints for
multiple tools.

README leads with a screenplay-style example session, states that init is
the only required ordering before other commands, replaces a linear
"typical workflow" with common tasks, and documents output directory
conventions.

Init skill: user must identify which kubeconfig is hub vs managed clusters.

Validate application skill: suggest validate clusters for triage and bug
reports (description, callout, and workflow step); note troubleshooting
sections are an initial draft.

Validate clusters skill: note troubleshooting is an initial draft.

Tested init, validate clusters, validate application, and gather application
against real clusters.

Assisted-by: Cursor/Claude Opus 4.6
Signed-off-by: Nir Soffer <nsoffer@redhat.com>
@nirs
nirs force-pushed the ramenctl-skill branch from 647b378 to f85c9ed Compare May 15, 2026 03:09
@nirs
nirs marked this pull request as draft May 16, 2026 07:20
@nirs

nirs commented May 16, 2026

Copy link
Copy Markdown
Member Author

Replaced by #455

@nirs nirs closed this May 16, 2026
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.

1 participant