Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
},
"metadata": {
"description": "Orchestrator skill for RHDH plugin development - onboard, update, and maintain plugins in the Extensions Catalog",
"version": "0.4.0"
"version": "0.5.0"
},
"plugins": [
{
"name": "rhdh",
"source": "./",
"description": "Skills for RHDH plugin lifecycle management",
"version": "0.4.0",
"version": "0.5.0",
"strict": true
}
]
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "rhdh",
"description": "All-in-one toolkit for Red Hat Developer Hub (RHDH). Covers plugin development, overlay management, environment setup, version compatibility, CI/CD, and RHDH ecosystem navigation.",
"version": "0.4.0",
"version": "0.5.0",
"author": {
"name": "RHDH Store Manager"
},
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ Track work across the four RHDH Jira projects.

- **[rhdh](./skills/rhdh/SKILL.md)** — Entry point and router. Detects your environment, runs `doctor` checks, maintains a cross-session worklog, and routes to the right skill. Start here if you're not sure what you need.

### Repository Readiness

- **[agent-ready](./skills/agent-ready/SKILL.md)** — Assess RHDH repositories against agentready criteria and address each gap. RHDH-aware: detects the repo from its remote URL, uses `rhdh-repos.md` context to pre-fill `AGENTS.md` and skip inapplicable findings. Supports single-repo and batch modes (assess all RHDH repos in one pass).

### Meta

- **[skill-maker](./skills/skill-maker/SKILL.md)** — Create new skills or consolidate existing ones following the [Agent Skills open standard](https://agentskills.io/specification). Interviews you about scope and edge cases before drafting.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "rhdh-skill"
version = "0.4.0"
version = "0.5.0"
description = "Claude Code skill for RHDH plugin development"
readme = "README.md"
license = "Apache-2.0"
Expand Down
225 changes: 225 additions & 0 deletions skills/agent-ready/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
---
name: agent-ready
description: |
Assesses a git repository's readiness for use by AI coding agents using the agentready CLI, then walks through and addresses each gap. RHDH-aware: detects RHDH repositories and uses rhdh-repos.md context to pre-fill AGENTS.md and skip inapplicable findings. Use when asked to "assess agent readiness", "run agentready", "check how agent-ready this repo is", "make this repo agent-ready", "improve agent readiness score", "assess all RHDH repos", "batch agent readiness", or "onboard this repo for agents".
---

## Prerequisites

`uvx` is a hard dependency. Verify it is available before any other step:

```bash
uvx --version
```

If missing, stop: "`uvx` is required. Install via `pip install uv` or see [uv installation](https://docs.astral.sh/uv/getting-started/installation/)."

## Step 1: Mode selection

If no path was provided, present a structured choice:

- **Single repo** — assess the current working directory (default)
- **Batch** — assess all RHDH repositories (see Batch mode below)

If a path was provided, skip this and proceed to Step 2.

## Step 2: Setup

**Path:** Use the provided path, or `.` for the current directory. Validate it is a git repository:

```bash
git -C . rev-parse --is-inside-work-tree # replace . with path if provided
```

If not a git repository, stop and tell the user.

**RHDH detection:** Check the repo's git remote URL:

```bash
git -C <path> remote get-url origin 2>/dev/null
```

Attempt to read `~/.claude/skills/rhdh/references/rhdh-repos.md`. If the file does not exist, skip RHDH detection and proceed with generic assessment — do not stop or warn the user. If found, check whether the remote URL matches any repo's upstream URL. If matched, note the repo name, tech stack, key paths, and conventions — these inform AGENTS.md generation and finding triage. Store as `rhdh_context`.

**Config file:** Only use a config file if the user explicitly provided one. Do not ask.

## Step 3: Run the assessment

```bash
REPORT_DIR=$(mktemp -d) # on Windows: use %TEMP% or Python tempfile
uvx --from git+https://github.com/ambient-code/agentready agentready -- assess \
-o "$REPORT_DIR" \
<path>
```

Append `-c <config-path>` if the user provided a config file.

Note the value of `$REPORT_DIR` — shell variables do not persist across tool calls.

Parse `$REPORT_DIR/assessment-latest.json`. Extract:
- `overall_score`, `certification_level`
- `findings` — each with `attribute.id`, `attribute.tier`, `attribute.default_weight`, `attribute.name`, `status`, `score`, `evidence`, `remediation`

## Step 4: Present summary

```
Score: <overall_score>/100 — <certification_level>
Failing: <N> findings (<N1> Tier 1, <N2> Tier 2, ...)
```

If no failing findings, congratulate the user and stop.

Otherwise ask:

> "Fix applicable findings automatically, or review each one individually?
> **auto** (default) — apply self-contained fixes immediately; prompt only when input is needed
> **review** — prompt yes/skip/defer/quit for every finding"

Default to **auto** if the user says yes, presses Enter, or says "fix everything".

## Step 5: Work through findings

Work only through `status == "fail"` findings. Skip `not_applicable` and `pass` silently.

**Sort order:** ascending tier, then descending `attribute.default_weight` within each tier.

If `rhdh_context` is set, skip findings that clearly don't apply to the detected tech stack (e.g., lock file checks for a Bash-only repo, `src/` layout for a GitOps YAML repo) — note them in the summary.

### Auto mode

Apply each fix without prompting **unless**:

- The fix requires project-specific input (CI platform, package ecosystem)
- The finding might not apply to this repo type — present it and ask whether to apply or skip

**Skip without prompting:** ADRs, design intent, architecture decisions — these require human rationale. Note them in the final summary.

For the `agent_instructions` finding, follow the inline AGENTS.md generation in the `agent_instructions` section below — this applies in both auto and review modes.

After processing, list what was applied, prompted, and skipped, then proceed to Step 6.

### Review mode

For each finding:

```
[Tier <N>] <attribute.name> — <score>/100
Evidence: <evidence items>

Remediation: <remediation.summary>

Apply this fix? [yes / skip / defer / quit]
```

**yes** — apply the fix, then move to the next finding.
**skip** — move on; do not revisit. Use this if the finding doesn't apply to this repo.
**defer** — note it; surface again after re-run.
**quit** — stop immediately.

**ADR and design intent findings:** Do not use JSON remediation. Ask instead:

> "Do you have any architectural decisions worth capturing? Describe the decision and rationale — I'll write the ADR. Skip to add manually later."

Write only if the user provides input. Never invent rationale.

### `agent_instructions` finding (both modes)

Generate `AGENTS.md` and `CLAUDE.md` inline — do not delegate to another skill.

**Scan the repo for commands:**
- `package.json` → `scripts` entries (build, test, lint, typecheck, dev)
- `Makefile` / `GNUmakefile` → targets
- `pyproject.toml` → `[tool.pytest]`, `[tool.ruff]`, `[tool.mypy]`, `[project.scripts]`
- `.github/workflows/*.yml` → `run:` steps containing test/lint/build/typecheck keywords

**If `rhdh_context` is set:** pull key paths, tech stack, conventions, and branching model directly from the matched `rhdh-repos.md` entry — use these to pre-fill AGENTS.md sections and skip generic questions where RHDH context already answers them.

**If not RHDH (or RHDH context doesn't cover it):** ask these three questions one at a time:
1. "What are 2-3 conventions an agent couldn't discover by reading the code? Skip if none."
2. "Any non-obvious architectural decisions or places where things live unexpectedly? Skip if obvious."
3. "Any commit format, CI checks, or PR conventions agents should know? Skip if standard."

Write `AGENTS.md`:

```markdown
# <repo-name>

## Build & Test Commands
- Build: `<command>`
- Test all: `<command>`
- Test single file: `<command>`
- Lint: `<command>`
- Type check: `<command>`

## Key Conventions
<from scan + questions/rhdh_context>

## Architecture
<from questions/rhdh_context — omit if nothing to say>

## PR Conventions
- Agent-assisted commits should include an `Assisted-by: <model>` footer
<from questions>
```

Write `CLAUDE.md` with exactly: `@AGENTS.md`

Omit any section — including its header — where there is nothing to say. Do not invent content.

### Applying other fixes (both modes)

Use `remediation.steps`, `remediation.commands`, and `remediation.examples` from the JSON. Do not invent steps beyond what the JSON provides.

## Step 6: Re-run and present results

```bash
REPORT_DIR=$(mktemp -d) # on Windows: use %TEMP% or Python tempfile
uvx --from git+https://github.com/ambient-code/agentready agentready -- assess \
-o "$REPORT_DIR" \
<path>
```

Show before/after:

```
Before: <old_score>/100 (<old_certification_level>)
After: <new_score>/100 (<new_certification_level>)

Remaining failures: <N> findings
```

If remaining failures (including deferred), ask: "Would you like to continue addressing the remaining findings?" If yes, repeat Step 5.

## Batch mode

When the user selects batch assessment:

1. Ask: "What directory are your RHDH repos cloned into? (e.g. `~/git`)"
2. Find subdirectories that are git repos:

```bash
find <dir> -maxdepth 2 -name ".git" -type d | sed 's|/.git||'
```

3. For each, check if the remote URL matches a repo in `rhdh-repos.md`. Assess only matching repos.
4. Run the assessment on each matched repo (Step 3) and collect results.
5. Present a summary table:

```
Repo Score Level Failing
rhdh 72/100 Bronze 4
rhdh-operator 45/100 Needs Improvement 11
rhdh-plugins 88/100 Silver 1
```

6. Ask: "Would you like to address findings for any of these repos?" If yes, the user picks one — run Step 3 (assessment) on that repo to get fresh findings, then run Steps 4–6 for it.

## Gotchas

- The first `uvx` run fetches and builds agentready from GitHub — this can take 30–60 seconds. Subsequent runs use the cache. If the fetch fails, stop — do not proceed without a valid report.
- Do not output the report to the repository directory — use the temp dir to avoid polluting the working tree.
- `not_applicable` findings reflect the detected language stack; do not mention them unless the user asks.
- Deferred findings surface again after the re-run.
- Never invent rationale for ADRs or design docs. In auto mode, skip them. In review mode, ask for rationale before writing anything.
- In batch mode, only assess repos whose remote URL matches `rhdh-repos.md` — do not assess unrelated repos in the same directory.
- `rhdh-repos.md` is expected at `~/.claude/skills/rhdh/references/rhdh-repos.md` — the default install path when using `npx skills add redhat-developer/rhdh-skill`. If the `rhdh` skill was installed to a different prefix, RHDH detection will silently degrade to generic mode. This is by design — no error, no warning.
Loading