# How to Validate if a Skill Passes All Three Verification Criteria in Cangjie-Skill

> Learn how to validate if a skill passes all three verification criteria V1 V2 and V3 in Cangjie-Skill. Ensure your skill meets all requirements for successful submission.

- Repository: [kangarooking/cangjie-skill](https://github.com/kangarooking/cangjie-skill)
- Tags: how-to-guide
- Published: 2026-08-14

---

**A skill passes all three verification criteria only when it satisfies V1 (cross-domain evidence), V2 (predictive power), and V3 (author exclusivity) simultaneously; any failure demotes the candidate to rejected status.**

The **Cangjie-Skill** project uses a rigorous **triple-verification** process to ensure only high-quality, author-specific insights become independent skills. According to [`methodology/03-stage1.5-triple-verify.md`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md), each candidate unit extracted from a source book must withstand three distinct tests before earning [`verified.md`](https://github.com/kangarooking/cangjie-skill/blob/main/verified.md) status.

## The Three Verification Criteria (V1, V2, V3)

### V1 – Cross-Domain Verification (跨域验证)

**V1 checks whether the unit appears in at least two distinct contexts** within the source material. A "distinct context" means separate chapters, stories, or objects that independently illustrate the same underlying principle.

- **Pass condition**: Two or more separate passages provide concrete evidence
- **Fail condition**: Only one context exists, or multiple references are essentially the same example repeated

In [`methodology/03-stage1.5-triple-verify.md#V1-跨域验证`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md), this prevents surface-level patterns from being mistaken for deep structural insights.

### V2 – Predictive Power Test (预测力测试)

**V2 evaluates whether the unit can answer a novel question** the book never explicitly addresses. The evaluator designs a new scenario, applies the candidate unit, and checks if a meaningful, non-trivial answer emerges.

- **Pass condition**: The unit derives a sensible, actionable answer to a previously unaddressed problem
- **Fail condition**: The application produces trivial, circular, or nonsensical results

This test, documented in [`methodology/03-stage1.5-triple-verify.md#V2-预测力测试`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md), ensures skills have genuine extrapolative utility beyond their original context.

### V3 – Exclusivity Check (独特性检验)

**V3 demands the unit reflect the author's unique insight**, not generic common-sense knowledge. If anyone with basic field knowledge could state it, the candidate fails.

- **Pass condition**: The unit expresses a distinctive, potentially counter-intuitive view specific to the author
- **Fail condition**: The statement is obvious, conventional wisdom, or widely known principles

Per [`methodology/03-stage1.5-triple-verify.md#V3-独特性检验`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md), this criterion preserves the knowledge base's originality and prevents dilution with recycled ideas.

## How the Verification Flow Executes

The complete validation process runs as an automated pipeline with optional human confirmation:

| Step | Action | Output Location |
|------|--------|-----------------|
| 1 | Merge all extractor outputs from `books/<slug>/candidates/*.md` | Candidate pool |
| 2 | Deduplicate identical units found by different extractors | Reduced candidate set |
| 3 | Execute V1, V2, V3 sequentially with recorded rationale | Verification results |
| 4 | **All pass** → Promote to verified skill | `books/<slug>/verified.md` |
| 5 | **Any fail** → Reject with specific failure note | `books/<slug>/rejected/<id>.md` |
| 6 | Present summary to user for final keep/cut decision | Workflow continuation |

As stated in [**SKILL.md** lines 98-105](https://github.com/kangarooking/cangjie-skill/blob/main/SKILL.md):

```text
读取 methodology/03-stage1.5-triple-verify.md, 对每个候选单元执行:
- V1 跨域
- V2 预测力
- V3 独特性

```

Only units achieving `passed: true` in **all three verification blocks** proceed to [`verified.md`](https://github.com/kangarooking/cangjie-skill/blob/main/verified.md).

## Validated Skill Example: [`verified.md`](https://github.com/kangarooking/cangjie-skill/blob/main/verified.md) Structure

A properly verified skill contains explicit passing records for each criterion:

```yaml
id: f01
title: 逆向思维
type: framework
V1_cross_domain:
  passed: true
  evidence:
    - 第 3 讲: 投资决策场景
    - 第 7 讲: 工程设计场景
    - 第 11 讲: 教学方法场景
V2_predictive_power:
  passed: true
  novel_question: "如果面试官问我一个不知道答案的问题该怎么办?"
  derived_answer: "逆问'我最不希望他认为我是什么样的人',从这个反面倒推应该展现什么"
V3_exclusivity:
  passed: true
  why_not_common: "常识是'要多想', 逆向思维是'优先反着想' — 这是反直觉的排序"

```

Notice that **all three sections** (`V1_cross_domain`, `V2_predictive_power`, `V3_exclusivity`) declare `passed: true`. Missing or `false` values in any section trigger rejection.

## Programmatic Verification Check

Use this Python script to validate any candidate file against the triple-criteria requirement:

```python
import yaml
import pathlib


def load_candidate(path):
    """Load a candidate or verified skill from YAML frontmatter."""
    return yaml.safe_load(path.read_text(encoding='utf-8'))


def passes_all_verification(candidate):
    """
    Check if candidate passes all three verification criteria.
    
    Returns True only when V1_cross_domain, V2_predictive_power,
    and V3_exclusivity all have passed: true.
    """
    verification_keys = [
        'V1_cross_domain',
        'V2_predictive_power',
        'V3_exclusivity'
    ]
    return all(
        candidate.get(v, {}).get('passed', False)
        for v in verification_keys
    )


# Example usage

candidate_path = pathlib.Path('books/example/verified.md')
candidate = load_candidate(candidate_path)

if passes_all_verification(candidate):
    print(f"✅ {candidate['title']} passes all verification criteria")
else:
    print(f"❌ {candidate['title']} fails verification")

```

The `passes_all()` function implements the strict conjunction logic: **no partial credit**. A candidate must satisfy V1 **and** V2 **and** V3 to return `True`.

## Where Verification Results Are Stored

| File Path | Purpose |
|-----------|---------|
| [`methodology/03-stage1.5-triple-verify.md`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md) | Complete specification of V1-V3 criteria and evaluation methodology |
| [`SKILL.md`](https://github.com/kangarooking/cangjie-skill/blob/main/SKILL.md) | Master workflow referencing the triple-verification stage |
| `books/<slug>/candidates/*.md` | Raw extractor outputs awaiting verification |
| `books/<slug>/verified.md` | Skills that passed all three criteria |
| `books/<slug>/rejected/<id>.md` | Failed candidates with explicit failure reasons per criterion |

## Summary

- **Triple-verification** requires concurrent satisfaction of **V1 (cross-domain evidence)**, **V2 (predictive power)**, and **V3 (author exclusivity)**
- **Strict conjunction**: One failure demotes the candidate to `rejected/` regardless of other passes
- **Source of truth**: [`methodology/03-stage1.5-triple-verify.md`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md) defines all criteria; [`SKILL.md`](https://github.com/kangarooking/cangjie-skill/blob/main/SKILL.md) orchestrates the workflow
- **Output destinations**: Pass → [`verified.md`](https://github.com/kangarooking/cangjie-skill/blob/main/verified.md); Fail → `rejected/<id>.md` with diagnostic details
- **Programmatic check**: Verify `passed: true` exists in all three YAML blocks (`V1_cross_domain`, `V2_predictive_power`, `V3_exclusivity`)

## Frequently Asked Questions

### What happens if a skill passes V1 and V2 but fails V3?

The candidate is **rejected** and written to `books/<slug>/rejected/<id>.md` with a note that V3 (exclusivity) failed. The Cangjie-Skill system requires **all three** criteria; partial passes receive no credit. The rejected unit may still serve as a glossary entry or counter-example in later stages.

### Can the verification criteria be adjusted or customized per book?

The criteria are **fixed by design** in [`methodology/03-stage1.5-triple-verify.md`](https://github.com/kangarooking/cangjie-skill/blob/main/methodology/03-stage1.5-triple-verify.md) to ensure consistency across the knowledge base. However, the **evidence standards** for each criterion can adapt to a book's structure—V1 might compare chapters in a textbook versus scenes in a narrative work, while maintaining the core requirement of two distinct contexts.

### How does the system handle edge cases where V2 predictive power is ambiguous?

The methodology requires **documented rationale** for every V2 judgment. Evaluators must specify the exact novel question posed and the derived answer obtained. If multiple reviewers disagree on whether a derived answer is "sensible and non-trivial," the candidate defaults to rejected status pending human arbitration during the "keep or cut" confirmation step.

### What's the difference between a candidate and a verified skill?

A **candidate** is any unit extracted by automated tools into `books/<slug>/candidates/*.md`—essentially a raw pattern with potential. A **verified skill** has survived triple-verification and resides in `books/<slug>/verified.md` with full V1-V3 documentation. The verification gate typically eliminates 60-80% of initial candidates based on empirical project patterns.