a11y-check
Accessibility audit, scoped to the surfaces a product actually has. Detects web / rendered_markdown / terminal / native_app / video_audio / document /…
Use to assess Privacy by Design compliance and GDPR/data protection alignment for a feature or system.
$ npx -y skills add haabe/mycelium --skill privacy-check --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/privacy-checkContext preview
The summary Claude sees to decide when to auto-load this skill.
Use to assess Privacy by Design compliance and GDPR/data protection alignment for a feature or system.
name: privacy-check description: "Use to assess Privacy by Design compliance and GDPR/data protection alignment for a feature or system." metadata: instruction_budget: "37" framework_dependency: "mycelium" framework_dependency_note: "This skill is designed to run within the Mycelium framework (https://github.com/haabe/mycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: /plugin install mycelium@haabe-mycelium."
Privacy by Design assessment.
1. **Proactive not Reactive**: Are privacy measures built in from the start?
2. **Privacy as Default**: Is the most private option the default?
3. **Privacy Embedded in Design**: Is privacy integral to the system?
4. **Positive-Sum, not Zero-Sum** (originally "Full Functionality"): Privacy without trade-offs?
5. **End-to-End Security**: Data protected throughout its lifecycle?
6. **Visibility and Transparency**: Is data processing transparent?
7. **Respect for User Privacy**: Are user interests centered?
## Privacy Assessment: [Feature/System] ### PbD Principles | Principle | Status | Notes | |-----------|--------|-------| | Proactive | Pass/Fail | ... | | Default privacy | Pass/Fail | ... | | Embedded | Pass/Fail | ... | | Full functionality | Pass/Fail | ... | | End-to-end security | Pass/Fail | ... | | Transparency | Pass/Fail | ... | | User respect | Pass/Fail | ... | ### Data Inventory | Data | Purpose | Basis | Retention | Protection | |------|---------|-------|-----------|-----------| | ... | ... | ... | ... | ... | ### Risks and Recommendations 1. [risk and recommended action]
`.claude/canvas/privacy-assessment.yml` is the canonical record. The decision log is provenance; the canvas is what the framework READS. Write the canvas before the decision log — if only one of the two lands, it must be this one.
**WHY THIS SECTION EXISTS (v0.170.0).** On the dogfood project this file carried `last_assessed: 2026-05-04` while **all seven** Privacy-by-Design principles read `assessment: not-assessed` with empty `evidence`, and `data_inventory` was empty. **A date asserting an assessment that never landed is worse than an empty file**: a reader checking freshness sees an assessed record, and the `Privacy` theory gate — Required at L2-L4 — reads it. Never stamp `last_assessed` in a run that does not also fill the principles.
**UPDATE each of the seven keys in `principles`** (`proactive_not_reactive`, `privacy_as_default`, `privacy_embedded`, `full_functionality`, `end_to_end_security`, `visibility_transparency`, `respect_for_users`):
<principle_key>:
assessment: pass|partial|fail|not-assessed
evidence: "<what was observed, and where>"**Then:** `data_inventory` (what personal data the product actually touches — an empty list is a CLAIM that it touches none, so make it deliberately), `dpia_required` + `dpia_rationale`, and `last_assessed`.
**`last_assessed` IS A CLAIM ABOUT THE PRINCIPLES BELOW IT.** Set it only when they were filled in the same run. If the assessment is partial, say which keys were judged in `dpia_rationale` rather than dating the whole file.
**Hard rule** (per CLAUDE.md Communication Rules, anti-pattern #7 Stage 2 graduation). Before any user-facing summary claims the assessment was recorded, use the **Read tool** on the canvas file and confirm the VALUE fields above actually changed — not just `_meta.last_validated`. A stamp moving while the assessed fields stay at their defaults is the exact failure this skill shipped with: the file reads fresh and holds nothing. Preflight protects what gets written; Postflight protects what gets claimed about what was written.
**APPEND** a `### Privacy Assessment` entry to `.claude/harness/decision-log.md` with: principles assessed, data flows identified, risks found, GDPR compliance status.
A Claude Code harness that asks who this is for before the agent writes code. Outcome over output. You know how this goes. The idea turns up on a Thursday and it is a good one.
Accessibility audit, scoped to the surfaces a product actually has. Detects web / rendered_markdown / terminal / native_app / video_audio / document /…
Bring Mycelium into a project that already has code. Detects that the repo predates the framework, asks before touching anything, then reads the codebase to…
Design the smallest viable test to validate or invalidate a critical assumption. Based on Torres's assumption testing framework, organized by Gilad's AFTER…
Use before any research activity or significant decision. Reviews cognitive biases relevant to the current stage.
Use to evaluate whether current work aligns with Better Value Sooner Safer Happier. Run at diamond completion and periodically.
Lint canvas files for staleness, missing fields, inconsistent evidence types, and orphaned references. Run periodically or before major transitions.