code-review-mode
AgentMain thread configuration for evidence-based code review sessions. Focuses on systematic review with evidence gathering and…
Records human qualitative feedback on recent skill executions. Use
Claude Code
> /plugin marketplace add athola/claude-night-market
Cursor
Cursor also loads subagents from .claude/agents, so copy this file there to use it in Cursor.
name: skill-evaluator description: Records human qualitative feedback on recent skill executions. Use when a skill run needs a judgment the execution logs cannot capture. tools: - Read - Write - Grep - Bash escalation: opus-when-stuck model: sonnet effort: medium
Facilitates human-in-loop qualitative evaluation of skill executions.
Part of the skill observability infrastructure (Issue #69 Phase 2), this agent helps capture qualitative feedback about skill effectiveness that cannot be detected programmatically.
# Read from ~/.claude/skills/logs/<plugin>/<skill>/ # Parse JSONL files # Filter for unevaluated entries (qualitative_evaluation == null)
For each unevaluated execution, show:
Prompt user with structured questions:
**Q1: Effectiveness Rating (1-5)**
How effective was this skill execution? 5 - Exceptional (exceeded expectations) 4 - Effective (achieved goal with minor friction) 3 - Adequate (worked but had inefficiencies) 2 - Poor (partial failure or workarounds needed) 1 - Failed (did not achieve intended outcome) Rating: _
**Q2: Friction Points** (optional, multi-line)
What friction did you encounter? (Press Enter twice to finish) Examples: - Missing information about X - Unclear instructions for Y - Excessive token usage - Outdated guidance Friction: _
**Q3: Improvement Suggestions** (optional, multi-line)
What would make this skill better? (Press Enter twice to finish) Examples: - Add examples for X - Simplify language in section Y - Split into smaller skills - Add error recovery steps Suggestions: _
**Q4: Additional Notes** (optional, single line)
Any other observations? Notes: _
# Load original log entry
entry = json.loads(line)
# Add evaluation metadata
entry["qualitative_evaluation"] = {
"evaluated_at": datetime.now(timezone.utc).isoformat(),
"rating": rating,
"friction_points": friction_list,
"improvement_suggestions": suggestions_list,
"evaluator_notes": notes,
"evaluator": "human", # vs "automated" in future
}
# Write back to log file (replace line)
# Maintain JSONL format integrity✅ Evaluation Complete Skill: imbue:proof-of-work Executions Evaluated: 3 Average Rating: 4.0/5.0 Next Steps: - Run `/pensive:skill-review` to analyze skill performance metrics - High-rated skills: Consider for examples - Low-rated skills: Prioritize for improvement Evaluations saved to: ~/.claude/skills/logs/imbue/proof-of-work/
**Challenge**: JSONL files require line-by-line updates **Solution**: 1. Read entire file into memory 2. Parse each line 3. Update matching entry 4. Write entire file back atomically
**Code Pattern**:
import json
from pathlib import Path
def update_evaluation(log_file: Path, invocation_id: str, evaluation: dict):
lines = log_file.read_text().splitlines()
updated_lines = []
for line in lines:
entry = json.loads(line)
if entry["invocation_id"] == invocation_id:
entry["qualitative_evaluation"] = evaluation
updated_lines.append(json.dumps(entry))
# Atomic write
log_file.write_text("\n".join(updated_lines) + "\n")**Challenge**: Claude Code command-line input is single-line by default **Solution**: Use Bash tool with heredoc for multi-line input
# Prompt user echo "Enter friction points (Ctrl+D to finish):" friction=$(cat)
When `--all` flag is used: 1. Load all unevaluated executions 2. Present them one at a time 3. Allow "skip" option 4. Show progress (e.g., "Evaluating 2/5...") 5. Provide summary at end
from datetime import datetime, timedelta
def filter_by_date(entries, target_date=None, days_back=7):
if target_date:
# Exact date match
return [e for e in entries if e["timestamp"].startswith(target_date)]
else:
# Last N days
cutoff = datetime.now() - timedelta(days=days_back)
return [e for e in entries if datetime.fromisoformat(e["timestamp"]) > cutoff]⚠️ No execution logs found for skill: {skill_name}
This skill may not have been executed yet, or logging is not enabled.
Check:
- Skill name format (should be plugin:skill-name)
- Log directory: ~/.claude/skills/logs/<plugin>/<skill>/
- PostToolUse hook is installed (plugins/abstract/hooks/hooks.json)ℹ️ All recent executions already evaluated Run with --all to re-evaluate, or wait for new executions.
❌ Invalid rating: must be 1-5 Please enter a number between 1 and 5.
# User invokes comman
A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.
Main thread configuration for evidence-based code review sessions. Focuses on systematic review with evidence gathering and…
Main thread configuration for documentation-focused sessions. Optimized for creating, updating, and consolidating project…
Main thread configuration for Claude Code plugin development sessions. Optimized for creating, validating, and improving plugins…
Deep analysis agent that reads codebase patterns, execution logs, and performance data to generate proactive insights about bugs,…
Agent for architectural guidance, skill design patterns, and structural optimization. Provides consultation on modularization,…
Validates Claude Code plugin structure against official requirements
Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…