dual-axis-skill-reviewer
tradermonty/claude-trading-skills
Review skills with dual-axis scoring: deterministic code checks + LLM deep review.
What is dual-axis-skill-reviewer?
A reproducible quality-scoring system for AI agent skills that combines automated code-based checks (structure, tests, safety) with LLM-driven content review. Use it to gate skill merges at a score threshold, identify concrete improvements for low-scoring skills, or audit skills across projects.
- Runs deterministic checks on skill structure, scripts, tests, and execution safety
- Generates LLM review prompts for qualitative code and content assessment
- Merges auto-axis and LLM-axis scores with configurable weights for a final quality score
- Supports cross-project skill review via --project-root flag
- Detects knowledge-only skills and adjusts scoring expectations accordingly
- Displays skills-index.yaml verification declarations as informational context
How to install dual-axis-skill-reviewer
npx skills add https://github.com/tradermonty/claude-trading-skills --skill dual-axis-skill-reviewer- Python 3.9+
- uv package manager (recommended for auto-resolving pyyaml)
- For test execution: uv sync --extra dev in the target project
- For LLM-axis merge: JSON file matching the LLM review schema
How to use dual-axis-skill-reviewer
- 1.Set REVIEWER variable to the script path (same project or global install)
- 2.Run auto-axis checks and generate LLM prompt: uv run "$REVIEWER" --project-root . --emit-llm-prompt --output-dir reports/
- 3.Use the generated prompt file to request LLM review (Claude Code can orchestrate this)
- 4.Merge axes with weights: uv run "$REVIEWER" --project-root . --skill <name> --llm-review-json <path> --auto-weight 0.5 --llm-weight 0.5 --output-dir reports/
- 5.Review the JSON and Markdown reports in reports/ for score, improvement items, and verification status
Use cases
- Gate pull requests by requiring skills to score 90+ before merge
- Audit a skill library across multiple projects from a single command
- Generate improvement items when a skill scores below 90
- Combine deterministic safety checks with human-like code-review depth
- Reproduce scoring consistently using fixed skill selection or seed values
- Skill library maintainers
- CI/CD pipeline operators gating skill quality
- AI agent platform teams managing multi-project skill catalogs
- Developers reviewing skills for correctness and safety
dual-axis-skill-reviewer FAQ
Auto-axis runs deterministic checks on skill structure, scripts, tests, and execution safety. LLM-axis provides qualitative assessment of content correctness, risk, logic gaps, and maintainability. The final score is a weighted average of both.
Yes. Use the --project-root flag to point to any project directory, and the script will discover and review skills in that project's skills/ folder.
The markdown report lists concrete improvement items. You can use these to prioritize fixes before gating a merge or deployment.
No. Use --skip-tests for quick triage. Tests are useful for validating execution safety but can be skipped if you're only reviewing code or content.
Symlink the skill into ~/.claude/skills/: ln -sfn /path/to/claude-trading-skills/skills/dual-axis-skill-reviewer ~/.claude/skills/dual-axis-skill-reviewer
Full instructions (SKILL.md)
Source of truth, from tradermonty/claude-trading-skills.
name: dual-axis-skill-reviewer
description: "Review skills in any project using a dual-axis method: (1) deterministic code-based checks (structure, scripts, tests, execution safety) and (2) LLM deep review findings. Use when you need reproducible quality scoring for skills/*/SKILL.md, want to gate merges with a score threshold (for example 90+), or need concrete improvement items for low-scoring skills. Works across projects via --project-root."
Dual Axis Skill Reviewer
Run the dual-axis reviewer script and save reports to reports/.
The script supports:
- Random or fixed skill selection
- Auto-axis scoring with optional test execution
- LLM prompt generation
- LLM JSON review merge with weighted final score
- Cross-project review via
--project-root - Non-scoring display of
skills-index.yamlproduction verification declarations
When to Use
- Need reproducible scoring for one skill in
skills/*/SKILL.md. - Need improvement items when final score is below 90.
- Need both deterministic checks and qualitative LLM code/content review.
- Need to review skills in a different project from the command line.
Prerequisites
- Python 3.9+
uv(recommended — auto-resolvespyyamldependency via inline metadata)- For tests:
uv sync --extra devor equivalent in the target project - For LLM-axis merge: JSON file that follows the LLM review schema (see Resources)
Workflow
Determine the correct script path based on your context:
- Same project:
skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py - Global install:
~/.claude/skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py
The examples below use REVIEWER as a placeholder. Set it once:
# If reviewing from the same project:
REVIEWER=skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py
# If reviewing another project (global install):
REVIEWER=~/.claude/skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py
Step 1: Run Auto Axis + Generate LLM Prompt
uv run "$REVIEWER" \
--project-root . \
--emit-llm-prompt \
--output-dir reports/
When reviewing a different project, point --project-root to it:
uv run "$REVIEWER" \
--project-root /path/to/other/project \
--emit-llm-prompt \
--output-dir reports/
Step 2: Run LLM Review
- Use the generated prompt file in
reports/skill_review_prompt_<skill>_<timestamp>.md. - Ask the LLM to return strict JSON output.
- When running inside Claude Code, let Claude act as orchestrator: read the generated prompt, produce the LLM review JSON, and save it for the merge step.
Step 3: Merge Auto + LLM Axes
uv run "$REVIEWER" \
--project-root . \
--skill <skill-name> \
--llm-review-json <path-to-llm-review.json> \
--auto-weight 0.5 \
--llm-weight 0.5 \
--output-dir reports/
Step 4: Optional Controls
- Fix selection for reproducibility:
--skill <name>or--seed <int> - Review all skills at once:
--all - Skip tests for quick triage:
--skip-tests - Change report location:
--output-dir <dir> - Increase
--auto-weightfor stricter deterministic gating. - Increase
--llm-weightwhen qualitative/code-review depth is prioritized.
Output
reports/skill_review_<skill>_<timestamp>.jsonreports/skill_review_<skill>_<timestamp>.mdreports/skill_review_prompt_<skill>_<timestamp>.md(when--emit-llm-promptis enabled)
When the target project has a skills-index.yaml entry with a complete verification block, JSON
and Markdown reports also show its declared axes, not_verified gaps, non-applicable axes, and
all_applicable_axes_passed. This section is informational only. It is excluded from auto/LLM/final
scores and does not replace a live high-severity issue check.
Installation (Global)
To use this skill from any project, symlink it into ~/.claude/skills/:
ln -sfn /path/to/claude-trading-skills/skills/dual-axis-skill-reviewer \
~/.claude/skills/dual-axis-skill-reviewer
After this, Claude Code will discover the skill in all projects, and the script is accessible at ~/.claude/skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py.
Resources
- Auto axis scores metadata, workflow coverage, execution safety, artifact presence, and test health.
- Auto axis detects
knowledge_onlyskills and adjusts script/test expectations to avoid unfair penalties. - LLM axis scores deep content quality (correctness, risk, missing logic, maintainability).
- Final score is weighted average.
- If final score is below 90, improvement items are required and listed in the markdown report.
- Script:
skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py - LLM schema:
references/llm_review_schema.md - Rubric detail:
references/scoring_rubric.md
Related skills
More from tradermonty/claude-trading-skills and the wider catalog.

earnings-calendar
Retrieve upcoming US stock earnings announcements filtered by market cap using the Financial Modeling Prep API.

earnings-trade-analyzer
Score post-earnings stocks on a 5-factor system to identify momentum trade candidates.

economic-calendar-fetcher
Fetch upcoming economic events and data releases from FMP API for market analysis and trading decisions.

edge-candidate-agent
Generate and validate US equity edge research tickets for trade-strategy-pipeline Phase I execution.

edge-concept-synthesizer
Cluster trading detector tickets into reusable edge concepts with thesis and invalidation signals.

edge-hint-extractor
Extract market observations into structured edge hints for trading concept synthesis and auto-detection.