CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

consent-registry

Use when the user asks to "log this subscriber's opt-in", record unsubscribes/complaints, or query lawful basis; curates pseudonymous consent facts through the append-only consent stream and applies suppression/erasure tombstones immediately. Not for SEND scoring — use email-quality-auditor; not for building segments — use list-segment-builder. 订阅同意台账/实时退订抑制/合法性依据登记

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./protocol/consent-registry/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

67%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.

The body is dense, protocol-specific, and free of filler, with a numbered procedure that includes real validation checkpoints and a well-designed refusal path. Its main weaknesses are structural: all detail (event schemas, runtime contract) is deferred to reference files that are missing from the bundle and whose paths escape the skill directory, and the longest procedural steps are run-on sentences that would be clearer as sub-steps or tables.

Suggestions

Ship the referenced files inside the skill bundle (references/registry-event-protocol.md, references/runtime-invocation.md, scripts/registry-events.py, etc.) and change paths like ../../references/... to bundle-relative references/... so every link in 'Runtime Reads' and 'Reference Materials' resolves for a standalone install.

Break the 100+ word run-on steps (especially procedure steps 4 and 6) into short sub-steps with a field table for the immediate-suppress-handoff and erasure capability parameters, so each requirement is independently checkable.

Add an inline example of one append event (upsert or suppress) showing the exact NDJSON payload and expected_revision usage, plus an error-recovery branch for what to do when `verify consent` fails.

DimensionReasoningScore

Conciseness

No space is spent explaining concepts Claude already knows — every line is skill-specific protocol (capability model, event ordering, tombstones), and the Quick Start is three terse examples. Not 5 because several procedure steps (especially steps 4 and 6) are 100+ word run-on sentences mixing conditions, field lists, and host sequences that would be tighter as short sub-steps or a field table.

4 / 5

Actionability

Concrete executable guidance is present: `python3 "$AARON_SKILLS_ROOT/scripts/registry-events.py" is-suppressed <subject-id>`, the exact root-resolution snippet, named event fields (`expected_revision`, `subscription_status: subscribed`, `basis_ref`), and an exact host sequence ("`append consent` → confirm projection regenerated → `verify consent` → replay-safe `is-suppressed`"). Not 5 because the actual event payloads / NDJSON shapes are never shown inline — the upsert/suppress/erase append examples are deferred entirely to the registry-event-protocol reference, leaving the most common mutation path without a copy-paste-ready example.

4 / 5

Workflow Clarity

The 8-step procedure is clearly sequenced with validation checkpoints for the risky operations — "verify the registry script, event schema, and system catalog before invoking it", "regenerate ... then `verify consent` and re-run `is-suppressed` for changed subjects", and the refusal path that keeps execution `NEEDS_INPUT` with "no mutation occurred until that handoff runs". Not 5 because there are no explicit error-recovery/feedback loops (what to do when `verify consent` fails or a capability check rejects the append), which the batch/destructive operations here (erasure, suppression) warrant.

4 / 5

Progressive Disclosure

The body is structured as an overview pointing to detail files ("Reference Materials", "Runtime Reads"), but the actual bundle contains no references/, scripts/, or assets/ directories — every deferred path (`../../references/registry-event-protocol.md`, `../../references/runtime-invocation.md`, `../../references/send-benchmark.md`, `../../PRIVACY.md`, `../../SECURITY.md`, `scripts/registry-events.py`) resolves two levels outside the skill folder to files that do not exist in this bundle, so the navigation structure is broken for a standalone install. Not 3 because 'references present but not clearly signaled' understates the problem: the references are signaled but absent/non-resolvable, and the core protocol content they should carry is nowhere accessible; not 1 because the SKILL.md itself has clear sections rather than being a monolithic wall of text.

2 / 5

Total

14

/

20

Passed

Description

87%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 strong description: explicit trigger phrases, a concrete what/when pair, and named negative boundaries against adjacent skills. Weaknesses are minor — restore/suppression-query actions and a few natural synonyms (suppress, GDPR, consent record) are absent, and the duplicated Chinese summary adds tokens without new triggers.

DimensionReasoningScore

Specificity

Multiple concrete actions are named — "log this subscriber's opt-in", "record unsubscribes/complaints", "query lawful basis", "curates pseudonymous consent facts through the append-only consent stream", "applies suppression/erasure tombstones immediately" — with only minor gaps (restore and live suppression queries are not mentioned, and "curates consent facts" is slightly abstract). Not 5 because coverage of the skill's own operations (restore, is-suppressed check) is incomplete; not 3 because far more than 1-2 concrete actions are listed.

4 / 5

Completeness

It explicitly answers both: what ("curates pseudonymous consent facts through the append-only consent stream and applies suppression/erasure tombstones immediately") and when ("Use when the user asks to 'log this subscriber's opt-in', record unsubscribes/complaints, or query lawful basis") with concrete trigger phrases, plus explicit negative scope ("Not for SEND scoring — use email-quality-auditor; not for building segments — use list-segment-builder"). This matches the level-5 anchor exactly; the level-4 anchor's 'when could be more explicit' clearly does not apply.

5 / 5

Trigger Term Quality

Natural user-facing phrases like "log this subscriber's opt-in", "record unsubscribes/complaints", and "query lawful basis" would plausibly be said verbatim, and "opt-in"/"unsubscribe" are the domain's common terms. Not 5 because several natural synonyms are missing (suppress/suppression list, GDPR/erasure request, consent record); not 3 because the quoted trigger phrase is unusually natural and coverage goes well beyond a bare domain keyword.

4 / 5

Distinctiveness Conflict Risk

It carves out a clear niche (consent evidence and live suppression) and actively disambiguates the two nearest neighbors by name ("not for SEND scoring — use email-quality-auditor; not for building segments — use list-segment-builder"). Minimal conflict risk; the level-4 anchor ('minor overlap risk') is weaker than what the text demonstrates.

5 / 5

Total

18

/

20

Passed

Validation

81%

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

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

relative_links

Relative link issues: 10 suspicious

Warning

Total

13

/

16

Passed

Repository

aaron-he-zhu/aaron-marketing-skills

Path

protocol/consent-registry/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.