CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/k-anonymity-verifier

Verifies that a masked dataset satisfies k-anonymity, l-diversity, and t-closeness by computing equivalence classes over chosen quasi-identifiers and reporting re-identification risk. Covers quasi-identifier selection heuristics, threshold guidance, pycanon API (k_anonymity / l_diversity / t_closeness / report), ARX Java API and GUI workflow, SmartNoise for differential-privacy comparison, and CI-gate integration. Distinct from pii-masking-pipeline-builder's masking-techniques catalog (which lists masking operators but defers k-anonymity measurement to dedicated tooling) and from presidio-pii-detection (which detects PII spans but offers no equivalence-class analysis). Use when you need to confirm whether a masked dataset meets a stated k, l, or t threshold before promoting it to a non-production environment.

70

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, well-structured multi-step skill: executable code, explicit threshold guidance, a validation gate with feedback loops, and properly deferred detail in one-level-deep references. The main weaknesses are a cross-file inconsistency between the documented qi-policy.yaml format and the gate script that reads it, a phantom scripts/k_anonymity_gate.py path, and minor token waste from repeated citations and textbook privacy-model definitions.

Suggestions

Align the policy format across the bundle: either change the Step 4 YAML example to the top-level schema the gate script expects (and have the gate parse the YAML directly instead of the '.yaml'.replace('.yaml','.json') JSON hack), or update the gate script in references/ci-gate.md to read the nested qi_policy: keys.

Resolve the scripts/k_anonymity_gate.py reference: either ship the gate script as an actual scripts/ file in the bundle or reword Step 6 to say the script (shown in references/ci-gate.md) must be created at that path, so users don't search for a nonexistent file.

Trim repeated inline citations of the pycanon GitHub URL (it appears six-plus times) to once per section or the References list, and compress the Overview's l-diversity/t-closeness textbook definitions to one line each, keeping only the threshold-relevant citations.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious domain guidance (QI selection heuristics, threshold bands, anti-patterns, limitations) rather than padding, but has minor trimmable fat: the Overview re-explains l-diversity and t-closeness definitions Claude already knows, and the pycanon GitHub URL is repeated inline six-plus times. This fits 'efficient; minor instances of over-explanation that could be trimmed' — not 5 because those repeats and textbook definitions don't each earn their place, and not 3 because the bulk is skill-specific knowledge (threshold bands, Sweeney statistics, suppression-rate guidance) Claude cannot be assumed to know.

4 / 5

Actionability

Mostly executable: install commands, a copy-paste-ready Step 3 snippet, API signatures with return types, a concrete policy YAML, report calls, and a numeric worked example. It falls short of 5 due to concrete gaps in the end-to-end path: Step 6 names 'scripts/k_anonymity_gate.py' but no scripts/ directory exists in the bundle (the script is inlined in references/ci-gate.md), and the body's qi-policy.yaml format (top-level 'qi_policy:' wrapper, YAML) does not match the gate script's expectations (top-level 'quasi_identifiers', loaded from a .json file), so following Steps 4 and 6 as written would fail.

4 / 5

Workflow Clarity

The 8 steps are clearly sequenced with an up-front 'How to use' map, validation is explicit (the Step 6 CI gate 'exits non-zero on any breach' so a failing dataset cannot be promoted), and error-recovery feedback loops are stated ('When a dataset fails, re-mask or generalise with ARX ... and re-verify') and demonstrated concretely in the worked example (k=1 → generalise → re-run → PASS). This matches the top anchor including explicit validation for a batch/promotion operation; score 4 would require a missing or merely implicit checkpoint, and none is.

5 / 5

Progressive Disclosure

Good structure: the body is a well-sectioned overview, and bulk detail (full gate script + GitHub Actions workflow, full ARX Java code and 7-step GUI workflow) is correctly deferred to references/ci-gate.md and references/arx-api.md, both real files, both linked at the point of need (Steps 6 and 7), one level deep, and listed again in the References section. It misses 5 because the body cites 'scripts/k_anonymity_gate.py' as a bundle path that does not exist in the bundle, a minor navigation/organization inaccuracy; it stays above 3 because the split itself is appropriate and all reference links resolve.

4 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A highly effective description: it states concrete capabilities in third person, gives an explicit 'Use when' trigger tied to a real decision point (threshold check before promotion), and actively disambiguates against the two neighboring skills. The only room for improvement is broader synonym coverage (e.g., 'de-identification', 'anonymized dataset') in the trigger vocabulary.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with comprehensive coverage: 'Verifies that a masked dataset satisfies k-anonymity, l-diversity, and t-closeness by computing equivalence classes over chosen quasi-identifiers and reporting re-identification risk', plus a detailed capability inventory ('quasi-identifier selection heuristics, threshold guidance, pycanon API (k_anonymity / l_diversity / t_closeness / report), ARX Java API and GUI workflow, SmartNoise for differential-privacy comparison, and CI-gate integration'). It is written in third person ('Verifies', 'Covers', 'Distinct from'), matching the top anchor's comprehensiveness; it is not score 4 because there is no noticeable coverage gap — every major capability of the skill is named.

5 / 5

Completeness

Both 'what' and 'when' are explicit and concrete: 'Verifies that a masked dataset satisfies k-anonymity, l-diversity, and t-closeness by computing equivalence classes...' (what) and 'Use when you need to confirm whether a masked dataset meets a stated k, l, or t threshold before promoting it to a non-production environment' (when, with a concrete trigger scenario). This matches the anchor-5 exemplar pattern exactly; score 4 would require the 'when' to be less explicit, which it is not.

5 / 5

Trigger Term Quality

Strong natural keywords users would say: 'k-anonymity', 'l-diversity', 't-closeness', 're-identification risk', 'quasi-identifiers', 'masked dataset', 'meets a stated k, l, or t threshold'. It stops short of the 5 anchor's 'comprehensive coverage including synonyms' — common variations such as 'de-identified'/'de-identification', 'anonymize/anonymized dataset', or 'privacy threshold check' are absent; it is above 3 because the core domain vocabulary plus tool names (pycanon, ARX) are all present.

4 / 5

Distinctiveness Conflict Risk

The description explicitly disambiguates from the two nearest skills: 'Distinct from pii-masking-pipeline-builder's masking-techniques catalog (which lists masking operators but defers k-anonymity measurement to dedicated tooling) and from presidio-pii-detection (which detects PII spans but offers no equivalence-class analysis)'. It occupies a clear niche (post-masking verification of k/l/t on stored datasets) with distinct triggers, so minimal conflict risk; the 4 anchor would require some overlap concern, and none is present.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents