review-kubeasy-challenge Pass

Review a Kubeasy challenge for quality, pedagogy, and bypass resistance. Runs lint directly, then spawns a kubeasy-challenge-learner agent and a kubeasy-challenge-bypasser agent, combines their reports, scores the result, and writes a PR comment. Use when reviewing a challenge PR or auditing an existing challenge. Arguments: SLUG: <slug>

0
stars
0
downloads
0
views

// Install Skill

Install Skill

Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.

Install globally (user-level):

npx skillhub install kubeasy-dev/registry/review-kubeasy-challenge

Install in current project:

npx skillhub install kubeasy-dev/registry/review-kubeasy-challenge --project

Suggested path: ~/.claude/skills/review-kubeasy-challenge/

SKILL.md Content

---
name: review-kubeasy-challenge
description: >
  Review a Kubeasy challenge for quality, pedagogy, and bypass resistance.
  Runs lint directly, then spawns a kubeasy-challenge-learner agent and a
  kubeasy-challenge-bypasser agent, combines their reports, scores the result,
  and writes a PR comment. Use when reviewing a challenge PR or auditing an
  existing challenge. Arguments: SLUG: <slug>
---

You are reviewing a Kubeasy challenge for quality, pedagogy, and bypass resistance.

`$ARGUMENTS` contains the challenge slug.

## Step 1: Lint

Run lint directly — no agent needed:

```bash
cd challenges/<slug> && kubeasy dev lint
```

If lint fails → score 0/20, verdict ❌ Fail. Write the PR comment with lint errors and stop.

## Step 2: Read challenge metadata

Read `challenges/<slug>/challenge.yaml` — title, description, initialSituation, objective, difficulty, estimatedTime, type, validation titles.

Note any metadata issues before running the agents (tutorial-style tone, spoiler titles, etc.).

## Step 3: Run the learner agent

Call the Agent tool with `subagent_type: kubeasy-challenge-learner`.
Prompt: the challenge slug.

The agent returns a free-form report + JSON block. Wait for it before proceeding.

## Step 4: Clean between agents

```bash
cd challenges && kubeasy dev clean <slug>
kubectl wait --for=delete namespace/<slug> --timeout=20s 2>/dev/null || true
```

## Step 5: Run the bypasser agent

Call the Agent tool with `subagent_type: kubeasy-challenge-bypasser`.
Prompt: the challenge slug.

The agent returns a free-form report + JSON block. Wait for it before proceeding.

## Step 6: Score

Combine metadata observations + learner report + bypasser report to score each criterion 0–4:

| Criterion | 4 (Excellent) | 3 (Good) | 2 (Needs work) | 1 (Poor) | 0 (Broken) |
|-----------|---------------|----------|-----------------|----------|------------|
| **Clarity** | Crystal clear symptoms, situation, objective | Minor ambiguity | Missing context | Confusing or misleading | Incomprehensible |
| **Pedagogy** | Teaches exactly the right concept, natural investigation path | Minor gaps | Some misdirection or mixed concepts | Minimal educational value | Teaches nothing or bad practices |
| **Validation** | Checks outcomes perfectly, accepts multiple valid solutions | Rare edge cases slip | Some misalignment with learning goal | Checks implementation not outcome | Broken or missing |
| **Bypass resistance** | All shortcuts blocked, educational frame solid | Minor theoretical bypasses | Significant bypass possible | Easy to cheat without learning | Trivially bypassable |
| **UX** | Difficulty/time accurate, errors helpful, smooth flow | Minor friction | Noticeable gaps in feedback | Frustrating experience | Impossible or broken |

Scoring signals:
- `broken_state_confirmed: false` → Pedagogy = 0
- `spoiler_comments` non-empty → automatic 0/20, ❌ Fail
- `bypass_found: true` + `policies_present: false` → Bypass resistance ≤ 2
- `solved: false` after 5 attempts → UX = 0, flag as unsolvable
- `friction_points` non-empty → deduct from UX
- `validations_initially_passing` non-empty → note under Validation
- `argocd_annotations: true` → note under UX

## Step 7: Write the PR comment

Write to `review-<slug>-pr-comment.md` in the registry root.

**Must not reveal:** root cause, fix, specific commands, field names, or anything that spoils investigation.

```markdown
## 🔍 Challenge Review: <title>

**Score: X/20** · Verdict: ✅ Pass | ⚠️ Needs work | ❌ Fail

| Criterion | Score | Comment |
|-----------|:-----:|---------|
| Clarity | X/4 | |
| Pedagogy | X/4 | |
| Validation | X/4 | |
| Bypass resistance | X/4 | |
| UX | X/4 | |

### Issues
- 

### Recommendations
- 

### Flags
- Solvable: ✅/❌
- Bypass found: ✅/❌
- Coherent with learning goal: ✅/❌
- Solved in X attempt(s)

---
*Reviewed by Kubeasy Challenge Reviewer*
```

## Verdict thresholds

| Score | Verdict |
|-------|---------|
| 18–20 | ✅ Pass — ready to merge |
| 14–17 | ⚠️ Needs work — minor tweaks |
| 10–13 | ❌ Fail — significant revision |
| < 10  | ❌ Fail — major redesign |