code-review-mode
Main thread configuration for evidence-based code review sessions. Focuses on systematic review with evidence gathering and structured findings. Use via:…
Facilitates human-in-loop qualitative evaluation of skill executions.
> /plugin marketplace add athola/claude-night-marketHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Facilitates human-in-loop qualitative evaluation of skill executions.
name: skill-evaluator agent: true allowed-tools: - Read - Write - Grep - Bash escalation: opus-when-stuck context: fork 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 command /abstract:evaluate-skill proof-of-work # Agent loads logs $ Read ~/.claude/skills/logs/imbue/proof-of-work/2026-01
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 structured findings. Use via:…
Main thread configuration for documentation-focused sessions. Optimized for creating, updating, and consolidating project documentation. Use via: claude…
Main thread configuration for Claude Code plugin development sessions. Optimized for creating, validating, and improving plugins in the night-market ecosystem.…
Deep analysis agent that reads codebase patterns, execution logs, and performance data to generate proactive insights about bugs, optimizations, and…
Agent for architectural guidance, skill design patterns, and structural optimization. Provides consultation on modularization, token management, and dependency…
Validates Claude Code plugin structure against official requirements