$npx -y skills add mphinance/alpha-skills --skill dual-axis-skill-reviewerReview 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 thre
| 1 | # Dual Axis Skill Reviewer |
| 2 | |
| 3 | Run the dual-axis reviewer script and save reports to `reports/`. |
| 4 | |
| 5 | The script supports: |
| 6 | - Random or fixed skill selection |
| 7 | - Auto-axis scoring with optional test execution |
| 8 | - LLM prompt generation |
| 9 | - LLM JSON review merge with weighted final score |
| 10 | - Cross-project review via `--project-root` |
| 11 | |
| 12 | ## When to Use |
| 13 | |
| 14 | - Need reproducible scoring for one skill in `skills/*/SKILL.md`. |
| 15 | - Need improvement items when final score is below 90. |
| 16 | - Need both deterministic checks and qualitative LLM code/content review. |
| 17 | - Need to review skills in a **different project** from the command line. |
| 18 | |
| 19 | ## Prerequisites |
| 20 | |
| 21 | - Python 3.9+ |
| 22 | - `uv` (recommended — auto-resolves `pyyaml` dependency via inline metadata) |
| 23 | - For tests: `uv sync --extra dev` or equivalent in the target project |
| 24 | - For LLM-axis merge: JSON file that follows the LLM review schema (see Resources) |
| 25 | |
| 26 | ## Workflow |
| 27 | |
| 28 | Determine the correct script path based on your context: |
| 29 | |
| 30 | - **Same project**: `skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py` |
| 31 | - **Global install**: `~/.claude/skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py` |
| 32 | |
| 33 | The examples below use `REVIEWER` as a placeholder. Set it once: |
| 34 | |
| 35 | ```bash |
| 36 | # If reviewing from the same project: |
| 37 | REVIEWER=skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py |
| 38 | |
| 39 | # If reviewing another project (global install): |
| 40 | REVIEWER=~/.claude/skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py |
| 41 | ``` |
| 42 | |
| 43 | ### Step 1: Run Auto Axis + Generate LLM Prompt |
| 44 | |
| 45 | ```bash |
| 46 | uv run "$REVIEWER" \ |
| 47 | --project-root . \ |
| 48 | --emit-llm-prompt \ |
| 49 | --output-dir reports/ |
| 50 | ``` |
| 51 | |
| 52 | When reviewing a different project, point `--project-root` to it: |
| 53 | |
| 54 | ```bash |
| 55 | uv run "$REVIEWER" \ |
| 56 | --project-root /path/to/other/project \ |
| 57 | --emit-llm-prompt \ |
| 58 | --output-dir reports/ |
| 59 | ``` |
| 60 | |
| 61 | ### Step 2: Run LLM Review |
| 62 | - Use the generated prompt file in `reports/skill_review_prompt_<skill>_<timestamp>.md`. |
| 63 | - Ask the LLM to return strict JSON output. |
| 64 | - 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. |
| 65 | |
| 66 | ### Step 3: Merge Auto + LLM Axes |
| 67 | |
| 68 | ```bash |
| 69 | uv run "$REVIEWER" \ |
| 70 | --project-root . \ |
| 71 | --skill <skill-name> \ |
| 72 | --llm-review-json <path-to-llm-review.json> \ |
| 73 | --auto-weight 0.5 \ |
| 74 | --llm-weight 0.5 \ |
| 75 | --output-dir reports/ |
| 76 | ``` |
| 77 | |
| 78 | ### Step 4: Optional Controls |
| 79 | |
| 80 | - Fix selection for reproducibility: `--skill <name>` or `--seed <int>` |
| 81 | - Review all skills at once: `--all` |
| 82 | - Skip tests for quick triage: `--skip-tests` |
| 83 | - Change report location: `--output-dir <dir>` |
| 84 | - Increase `--auto-weight` for stricter deterministic gating. |
| 85 | - Increase `--llm-weight` when qualitative/code-review depth is prioritized. |
| 86 | |
| 87 | ## Output |
| 88 | |
| 89 | - `reports/skill_review_<skill>_<timestamp>.json` |
| 90 | - `reports/skill_review_<skill>_<timestamp>.md` |
| 91 | - `reports/skill_review_prompt_<skill>_<timestamp>.md` (when `--emit-llm-prompt` is enabled) |
| 92 | |
| 93 | ## Installation (Global) |
| 94 | |
| 95 | To use this skill from any project, symlink it into `~/.claude/skills/`: |
| 96 | |
| 97 | ```bash |
| 98 | ln -sfn /path/to/claude-trading-skills/skills/dual-axis-skill-reviewer \ |
| 99 | ~/.claude/skills/dual-axis-skill-reviewer |
| 100 | ``` |
| 101 | |
| 102 | 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`. |
| 103 | |
| 104 | ## Resources |
| 105 | |
| 106 | - Auto axis scores metadata, workflow coverage, execution safety, artifact presence, and test health. |
| 107 | - Auto axis detects `knowledge_only` skills and adjusts script/test expectations to avoid unfair penalties. |
| 108 | - LLM axis scores deep content quality (correctness, risk, missing logic, maintainability). |
| 109 | - Final score is weighted average. |
| 110 | - If final score is below 90, improvement items are required and listed in the markdown report. |
| 111 | - Script: `skills/dual-axis-skill-reviewer/scripts/run_dual_axis_review.py` |
| 112 | - LLM schema: `references/llm_review_schema.md` |
| 113 | - Rubric detail: `references/scoring_rubric.md` |