Review Skills banner
levnikolaevich levnikolaevich

Review Skills

Development community intermediate

Description

Universal review (ln-162) + repo-specific checks for claude-code-skills repository.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

Repository README

This is the README for levnikolaevich/claude-code-skills, shared by 22 entries in this directory. It describes the repository, not this entry specifically.


description: Run skill quality review with repo-specific checks for claude-code-skills allowed-tools: Skill, Bash, Grep, Glob, Read, AskUserQuestion

Review Skills

Universal review (ln-162) + repo-specific checks for claude-code-skills repository.

Execution Strategy

**Step 1 FIRST** — invoke ln-162 via Skill tool (MANDATORY, visible to user). **Step 2** — run repo-specific bash script (can overlap with ln-162 phases). Combine in Step 3.

Step 1: Universal Review (MANDATORY Skill invocation)

**NON-NEGOTIABLE:** You MUST call `Skill(skill: "ln-162-skill-reviewer", args: "$ARGUMENTS")` via the Skill tool. Do NOT skip this or execute ln-162 phases manually without the Skill call. The Skill tool loads the full skill content which you then follow.

Invoke `Skill("ln-162-skill-reviewer")` with `$ARGUMENTS` (pass through scope — skill dirs or empty for auto-detect).

Step 2: Repo-Specific Checks

Run this single combined script. It outputs a ready-to-use report table.

#!/usr/bin/env bash

RESULTS=()
add_result() { RESULTS+=("$1|$2|$3"); }

# === R1: Marketplace paths ===
if [ -f .claude-plugin/marketplace.json ]; then
  R1_FAILS=0
  while read -r path; do
    [ -d "$path" ] || R1_FAILS=$((R1_FAILS + 1))
  done < <(grep -oE '"\./ln-[^"]+' .claude-plugin/marketplace.json | tr -d '"')
  [ "$R1_FAILS" -eq 0 ] && add_result R1 "Marketplace paths" PASS || add_result R1 "Marketplace paths" "FAIL ($R1_FAILS missing dirs)"
else
  add_result R1 "Marketplace paths" SKIP
fi

# === R2: Root docs stale skill names ===
R2_FAILS=0
for doc in README.md AGENTS.md .claude-plugin/marketplace.json; do
  [ -f "$doc" ] || continue
  while read -r skill; do
    ls -d ${skill}*/ >/dev/null 2>&1 || R2_FAILS=$((R2_FAILS + 1))
  done < <(grep -oE 'ln-[0-9]+-[a-z-]+' "$doc" | sort -u)
done
[ "$R2_FAILS" -eq 0 ] && add_result R2 "Root docs stale names" PASS || add_result R2 "Root docs stale names" "FAIL ($R2_FAILS stale refs)"

# === R3: Skill count accuracy ===
actual=$(ls -d ln-*/SKILL.md 2>/dev/null | wc -l)
R3_FAILS=0
if [ -f README.md ]; then
  badge=$(grep -oE 'skills-[0-9]+' README.md | grep -oE '[0-9]+' || true)
  [ -n "$badge" ] && [ "$badge" != "$actual" ] && R3_FAILS=$((R3_FAILS + 1))
fi
if [ -f .claude-plugin/marketplace.json ]; then
  market=$(grep -oE '"\./ln-[^"]+' .claude-plugin/marketplace.json | wc -l)
  [ "$market" != "$actual" ] && R3_FAILS=$((R3_FAILS + 1))
fi
[ "$R3_FAILS" -eq 0 ] && add_result R3 "Skill count accuracy" "PASS ($actual skills)" || add_result R3 "Skill count accuracy" "FAIL (badge/marketplace mismatch, actual=$actual)"

# === R4: Plugin completeness ===
R4_FAILS=0
for skill_dir in ln-*/; do
  skill_name="./${skill_dir%/}"
  grep -q "\"$skill_name\"" .claude-plugin/marketplace.json 2>/dev/null || R4_FAILS=$((R4_FAILS + 1))
done
[ "$R4_FAILS" -eq 0 ] && add_result R4 "Plugin completeness" PASS || add_result R4 "Plugin completeness" "FAIL ($R4_FAILS orphan skills)"

# === R5: Pipeline data-flow (semi-automated) ===
R