At /learn-eval after the self-assessment score is given, use this command for objective cross-validation.
Step 1: Locate Skill
When there is an argument: use the specified path or name directly. If the argument is a name rather than a path, search:
ls ~/.claude/skills/learned/*{引數}*.md 2>/dev/null
ls .claude/skills/learned/*{引數}*.md 2>/dev/null
When there is no argument: find the most recently modified learned skill:
ls -t ~/.claude/skills/learned/*.md | head -1
After confirming the target, tell the user:目標:{skill_name} ({line_count} 行)
Step 2: Choose Depth
Offer three modes for the user to choose from:
Choose validation depth:
- structural — structural analysis (instant, 0 tokens)
- trigger — + description quality + trigger query generation (~6K tokens)
- full — + ablation experiment to verify whether the skill actually helps (~18K tokens; only 1 case × 1 run, limited statistical power, for sanity check only)
Default: 1 (just press Enter)
Step 3: Run Bridge
python3 ~/Documents/skills-ecosystem-eval/src/learn_eval_bridge.py \
"{skill_path}" --mode {mode}
If the bridge does not exist, prompt to clone first:~/Documents/skills-ecosystem-eval/
Bridge output completeness check: before presenting scores, use a deterministic tool to confirm the output contains all required fields:
| Mode | Required fields |
|---|---|
| structural | s3_score, code_score, density, section_score, redundancy_penalty |
| trigger | + s1_score, description_quality |
| full | + s2_delta, with_skill_score, without_skill_score |
If any field is missing,stop the calculation and warn:[警告] Bridge 輸出缺少欄位:{缺失欄位列表},分數計算不完整,映射結果不可靠. Mark the corresponding dimension score for the missing field as N/A,do not substitute 0 into the calculation。
Step 4: Present Results
Three-system scores
| System | Score | Description |
|---|---|---|
| System 3 (Structure) | X/10 | Frontmatter format + sections + code examples + content density |
| System 1 (Trigger) | X/10 | Description quality (+ trigger F1 if available) |
| System 2 (Ablation) | delta | with_skill vs without_skill (only available in full mode) |
learn-eval 5-dimension mapping (including data coverage rate)
Map the three-system scores to learn-eval's 5 dimensions (1-5), display them side by side with the learn-eval self-assessment, and annotate the data source reliability next to each dimension:
| Dimension | Objective score | learn-eval threshold (≥3) | Data coverage |
|---|---|---|---|
| Specificity | X.X/5 | ✓/✗ | High — S3 structural analysis (deterministic, 1 scan) |
| Actionability | X.X/5 | ✓/✗ | Low — S2 delta is based on 1 case × 1 run, for sanity check only |
| Scope Fit | X.X/5 | ✓/✗ | Medium — S1 description quality analysis (LLM semantic judgment, supplementary) |
| Non-redundancy | X.X/5 | ✓/✗ | High — S3 structural analysis (deterministic) |
| Coverage | X.X/5 | ✓/✗ | High — S3 structural analysis (deterministic) |
Total score: XX.X/25 — Gate: PASS/FAIL
Coverage levels:High= deterministic tool (grep/glob/AST), results are reproducible;Medium= LLM semantic judgment, results may fluctuate due to prompt changes;Low= single-case ablation experiment, statistical power is insufficient for strong conclusions.
Highlight key points
- Any dimension < 3.0: clearly mark as [FAIL] and explain the reason
- High redundancy: list the names of overlapping skills
- No code examples: specifically flagged (the most common reason for point deduction)
- Dimensions with "low" coverage: add a
[低統計力]marker to avoid misjudgment
Step 5: Suggested actions
Give specific suggestions based on the results:
| Result | Suggestion | Verification confidence |
|---|---|---|
| Gate PASS + no issue | Quality confirmed, no action needed | Depends on the mode used (structural lowest, full highest) |
| Gate PASS + has issue | List improvement items (e.g., add code example) | Medium (supplemented by LLM semantic judgment) |
| Gate FAIL | List required fixes, ask the user whether to fix them now | High (structural verification) |
| High redundancy | Suggest merging or differentiating, list overlapping skills | High (deterministic grep search) |
| delta ≤ 0 (full mode) | The skill may not actually help; suggest checking whether its content is already covered by the model's parametric knowledge | Low [low statistical power] — a 1-case ablation is only for directional reference and should not be used for direct retirement |
If the user agrees to the changes: Directly read the skill file, make changes based on the suggestions (add code examples, modify the description, etc.), and after modifying, rerun bridge verification.
Mapping formulas
The logic by which Bridge converts the three-system scores into the 5 learn-eval dimensions:
| Dimension | Source | Calculation |
|---|---|---|
| Specificity | S3 code_score + density | 1 + (code/10)×2 + (density/10)×2 |
| Actionability | S2 delta + S3 structural | 3 + delta×2 + (structural-5)×0.2 |
| Scope Fit | S1 description_quality | 1 + (desc_quality/10)×4 |
| Non-redundancy | S3 redundancy_penalty | 5 - penalty |
| Coverage | S3 section_score + density | 1 + (section/10)×2 + (density/10)×2 |
(all values clamped to 1.0-5.0)
Limitations
structuralThe mode only looks at file structure and does not call the LLMtriggerThe mode generates queries but does not actually run trigger tests (requiresrun_eval.py's.claude/commands/mechanism)fullThe mode's ablation only runs 1 case × 1 run (limited statistical power, but enough for a sanity check)- Active agents(
~/.claude/agents/)'s structure and learned skills are different, so some dimensions do not apply