К основному содержанию
скилл CX Codex

harms-check — скилл для Claude Code: проверка вреда от дизайна

Скилл, который до релиза ищет в интерфейсе манипулятивные паттерны и предвидимые злоупотребления, пока их не поймали проверки безопасности и приватности.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add haabe/mycelium --skill harms-check -a claude-code
Открыть на GitHub

Что делает harms-check

Скилл смотрит на продукт так, будто тот работает ровно как задумано, и спрашивает, кому это может навредить. Три шага: сверка с каталогом тёмных паттернов Бригнулла (roach motel, drip pricing, confirmshaming, предзаполненные галочки), сканирование последствий по методике doteveryone — включая тех, кто продуктом не пользуется, — и разбор предвидимого злоупотребления, когда легальную функцию разворачивают во вред человеку.

Запускается не всегда. Триггеры: интерфейс для живых людей, сценарии убеждения, удержания, отмены, согласия или цен, либо работа с уязвимыми людьми. Внутренняя тулза или библиотека — скилл велит пропустить проверку и записать, почему она не нужна. Результат оформляется таблицами и вердиктом: чистая польза для пользователя или отрицательный по шкале Happier, с рекомендациями по переделке.

Скилл рассчитан на работу внутри фреймворка Mycelium: вне его пропускаются состояние canvas, теоретические гейты и запись вердикта в .claude/diamonds/active.yml. Он воспитывает того, кто взял манипулятивный паттерн по недосмотру, но остановить намеренного манипулятора не может. Ничего не блокирует: отрицательный вердикт не мешает выпуску.

Какие задачи решает

  • найти тёмные паттерны в экране оформления подписки
  • проверить, легко ли пользователю отменить покупку
  • оценить, кому навредит функция, работающая как задумано
  • разобрать злоупотребление легальной функцией посторонним человеком
  • зафиксировать в журнале решений, что проверка не требуется

Примеры запросов агенту

  • Проверь по harms-check экран отмены подписки: не слишком ли сложно уйти?
  • Сделай harms-check для сценария согласия на обработку данных
  • Запусти harms-check на фиче с рекомендациями для детей

Как установить harms-check

1Через Skills CLI (Vercel)

npx skills add haabe/mycelium --skill harms-check -a claude-code

2Вручную: положить файлы

~/.claude/skills/harms-check/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/harms-check/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о harms-check

Как установить harms-check в Claude Code?

Выполните npx skills add haabe/mycelium --skill harms-check -a claude-code. Скилл окажется в ~/.claude/skills/harms-check/SKILL.md.

Что делает harms-check?

Ищет манипулятивные паттерны в интерфейсе, прогоняет сценарии последствий и разбирает предвидимое злоупотребление. На выходе — вердикт Happier и список правок.

Нужен ли harms-check для внутреннего инструмента?

Нет. Если продукт не показывают живым людям и в нём нет сценариев убеждения, удержания или согласия, скилл велит пропустить проверку. Причина пропуска записывается в журнал.

Исходный текст

SKILL.md · MIT
---
name: harms-check
description: "Use when building anything USER-FACING (or with persuasion/retention/cancellation/consent/pricing flows, or that touches vulnerable people) to surface design-level harm the security/privacy/compliance gates miss: dark/deceptive patterns and foreseeable misuse. Assumes the product works as designed and asks who it could harm and whether it is Happier-negative. NUDGE, not a block."
metadata:
  instruction_budget: "44"
  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."
---

# Harms Check Skill

Design-time harm-to-users check — the safety-by-design lens the security/privacy/compliance gates structurally miss. Assumes the product works EXACTLY as designed. `/threat-model` (STRIDE) asks how an attacker breaks it; `/privacy-check` asks about personal data; neither asks: **who could this harm when it works as intended, and how could a legitimate feature be misused?**

This is the design-time front-end of the BVSSH **Happier** dimension: a manipulative or harmful design is Happier-negative by definition, and this gate catches it before `/bvssh-check` would only measure it post-hoc.

## When to run (JiT — conditional, NOT universal)

Fires only when the product-shape warrants it:
- **User-facing** product/feature (real people use it), OR
- has **persuasion / retention / conversion / cancellation / consent / pricing** flows (the dark-pattern surface), OR
- **touches vulnerable people** (children, patients, financially- or otherwise at-risk).

If none apply (internal dev tooling, a library, a build script), **SKIP — say so and move on.** This is a NUDGE, never a hard block.

**At release, the framework asks for it (v0.321.0).** When work that reaches real people has an exposure record on its diamond and no harms check recorded there, the release path says so in one advisory line: in the release gate's refusal, in `scale_locks.py --exposure-state`, and as context when a release is allowed. That line is the prompt to run this skill, or to record that it does not apply. It never refuses anything, and a Happier-negative verdict does not stop a release.

## Workflow

### 1. Dark / deceptive patterns (Brignull) — does the design manipulate the user?

Check the design against the recognised, regulated catalog (deceptive.design; FTC / EU Digital Fairness Act / GDPR-consent):
- [ ] **Obstruction / roach motel** — easy to get in, hard to cancel, leave, or delete
- [ ] **Sneaking** — hidden costs, drip pricing, sneak-into-basket, hidden subscription
- [ ] **Forced continuity / forced action** — silent auto-renew; forced account/consent to proceed
- [ ] **Confirmshaming** — guilt/shame wording to steer a choice ("No, I don't want to save money")
- [ ] **Nagging** — repeated interruption until the user relents
- [ ] **Misdirection / visual interference** — pre-ticked boxes, manipulative default, tricked hierarchy
- [ ] **Privacy zuckering** — coaxing users to share more than intended; consent dark patterns
- [ ] **Bait and switch / disguised ads** — the control does something other than advertised

Any hit = the design manipulates or coerces → Happier-NEGATIVE. Redesign for the honest default.

### 2. Consequence scanning (doteveryone) — intended AND unintended

- Intended consequences — which to amplify?
- **Unintended** consequences (assume it works as designed and scales) — which to **mitigate**?
- Who could this harm — including **vulnerable users AND non-users / third parties / society**?
- Who is **least able to absorb** the harm?

### 3. Foreseeable misuse (harms modeling) — weaponising a legitimate feature

- How could a bad actor use this feature-working-as-designed to harm someone (harassment, stalking, fraud, coercion)?
- What reasonably-foreseeable **"unsupported uses"** create harm?

## Output

```
## Harms Check: [Feature/Product]

Scope trigger: [user-facing | persuasion/retention flow | vulnerable users | N/A — skipped]

### Deceptive patterns
| Pattern | Present? | Honest redesign |
|---------|----------|-----------------|
| ... | yes/no | ... |

### Consequences & foreseeable misuse
| Harm | Who (incl. non-users / vulnerable) | Working-as-designed or misuse | Mitigation |
|------|------------------------------------|-------------------------------|-----------|
| ... | ... | ... | ... |

### Happier verdict
[net-positive for the user | Happier-NEGATIVE — redesign]

### Recommendations (NUDGE — advice, not a block)
1. ...
```

## Record the verdict on the exposure (v0.321.0)

When the diamond carrying this work has an exposure record (`exposures[]` in `.claude/diamonds/active.yml`), write the result on the record this check was run for:

```yaml
harms_check:
  'on': '2026-10-11'             # the date the check was run; quote both (a bare `on` is a YAML 1.1 boolean)
  verdict: net-positive          # net-positive | happier-negative | not-applicable
  note: "what was found, or why it does not apply"
```

- `not-applicable` is the SKIP above, written down: use it when none of the scope triggers apply, and put the reason in `note`.
- `happier-negative` is recorded as it is. It does not stop a release. The person decides whether the work goes out as designed, and the release path reminds them of the verdict when it does.
- It is not one of the exposure's `gates`, and nothing reads it to allow or refuse anything. Without it, the release path keeps saying that no harms check is recorded for that exposure.
- Use the Read tool on `.claude/diamonds/active.yml` before editing it, and change only this key.
- No exposure record yet (the work has not been put in front of anyone): the decision-log entry below is the whole record.

## Honest limits (scope guard)

This gate **educates** a builder who reached for a manipulative pattern without seeing the harm; it **cannot stop** a builder who deliberately wants to manipulate. It is a NUDGE keyed to product-shape — **not** a trust-&-safety / content-moderation apparatus. Online-content harms (CSAM, disinformation, hate speech) are out of scope and belong to specialised tooling, not Mycelium.

## Decision Log (MANDATORY per G-P4)

**APPEND** a `### Harms Check` entry to `.claude/harness/decision-log.md` with: the scope trigger, any deceptive patterns found, foreseeable-misuse / vulnerable-user harms, the Happier verdict, and mitigations accepted or waived.

## Theory Citations

- Brignull: Deceptive (Dark) Patterns
- doteveryone: Consequence Scanning
- Microsoft: Harms Modeling (foreseeable misuse; vulnerable- and non-user harm)
- Smart: BVSSH — the "Happier" dimension (this gate is its design-time front-end)
- eSafety / WEF: Safety by Design (anticipate harm before it occurs)

© haabe · MIT · haabe/mycelium

Похожие скиллы

Все скиллы по теме «Безопасность» →
git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. 499 069установок ponytail-review DietrichGebert Скилл проверяет изменения глубже обычного diff: читает связанный код, ищет ошибки, риски, проблемы нагрузки и недостающие тесты. Пригодится для ревью PR и коммитов. CX Codex +1 57 000установок ponytail-audit DietrichGebert Проверяет репозиторий и ранжирует ошибки, риски и лишний код. Подойдёт, если нужен разовый разбор без автоматических правок. CX Codex +1 45 400установок security-audit cloudflare Проверяет кодовую базу на уязвимости и ищет нарушения границ доверия. Пригодится перед релизом или для точечного разбора опасных участков кода. CX Codex +1 54 800установок security-and-hardening addyosmani Помогает проектировать защиту и проверять код на уязвимости при работе с вводом, авторизацией, сессиями и внешними сервисами. Подойдёт перед релизом и при создании функций, которые обрабатывают недоверенные данные. CX Codex +1 70 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора18

ping Смоук-тест: отвечает одной строкой-маркером, если плагин Mycelium собрался и подключился правильно. Для повседневной работы не нужен. CX Codex +1 ★ 47звёзд репо mocked-persona-interview Скилл для тех случаев, когда реальных пользователей опросить нельзя: он проводит интервью с вымышленными персонами, но по жёстким правилам, чтобы те не превратились в машину подтверждения собственных идей. CX Codex +1 ★ 47звёзд репо metrics-detect Сканирует проект и помогает настроить сбор метрик из GitHub, Plausible, Stripe и других источников. Полезен, если проект завёлся до появления такой настройки. CX Codex +1 ★ 47звёзд репо jtbd-map Раскладывает задачи пользователя на функциональную, эмоциональную и социальную составляющие и записывает результат в файл канвы. CX Codex +1 ★ 47звёзд репо friction-log Собирает черновик честного отчёта о том, где работа с Mycelium путала или тормозила. Пользователь правит его сам и решает, отправлять ли. CX Codex +1 ★ 47звёзд репо fan-out Разворачивает несколько субагентов на одну задачу, а потом сводит их результаты в один выбор. Нужен, когда решений два и больше и надо понять, какое выживет. CX Codex +1 ★ 47звёзд репо diamond-render Строит схему решений из .claude/diamonds/active.yml: что уже записано, в каком порядке и что ещё впереди. Пригодится в конце оценки проекта. CX Codex +1 ★ 47звёзд репо devils-advocate Гоняет вашу идею через пять приёмов критики и десять вопросов, чтобы поймать слабое допущение до того, как оно станет решением. CX Codex +1 ★ 47звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой