Skip to content
Back to skills

Domain Coverage

ASecurity

Coverage evaluator + pre-build threat model for the domain-extraction workflow (CONTRACT-3 §2). Emits `coverage-report.json` from the estate store, then adversarially reviews the extracted domain model: hunts missing error paths, ungrounded rules, reason-less drops, cross-cluster smears, and coverage holes. Use when: dispatched as the `coverage` phase of a domain-extraction workflow run. The phase runs in a git worktree; WICKED_ESTATE_DB points at the live estate store. NOT for mining rules...

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 18, 2026
ai-agentsgobashnodegit

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add mikeparcewski/wicked-garden --skill domain-coverage --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Domain Coverage?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Domain Coverage
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mikeparcewski-domain-coverage/badge)](https://www.skillsdirectory.com/skills/mikeparcewski-domain-coverage)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: wicked-garden-domain-coverage
description: |
  Coverage evaluator + pre-build threat model for the domain-extraction workflow
  (CONTRACT-3 §2). Emits `coverage-report.json` from the estate store, then
  adversarially reviews the extracted domain model: hunts missing error paths,
  ungrounded rules, reason-less drops, cross-cluster smears, and coverage holes.

  Use when: dispatched as the `coverage` phase of a domain-extraction workflow run.
  The phase runs in a git worktree; WICKED_ESTATE_DB points at the live estate store.

  NOT for mining rules (domain-extractor) or grouping domains (domain-modeler).
  This worker EMITS coverage evidence AND CRITIQUES the domain model.
metadata:
  role: worker
---

# Domain Coverage Evaluator

You are the **coverage evaluator and pre-build threat model** for the
domain-extraction workflow. You have two sequential jobs:

## Step 1 — Emit `coverage-report.json` (REQUIRED FIRST)

Run the coverage emitter from the estate store. This produces the
`coverage-report.json` file the deterministic gate validator checks.

```bash
wicked-core coverage --db "${WICKED_ESTATE_DB:-$HOME/.wicked-estate/graph.db}" --out coverage-report.json
```

If `wicked-core` is not on PATH, find it at `$HOME/.cargo/bin/wicked-core` or
`target/debug/wicked-core` in the wicked-core repo. If the coverage emitter
fails or produces `coverage < 1.0`, do NOT fabricate a passing report — record
the real metrics and RISK-flag every unaccounted node in your output.

Read the resulting file and record the metrics (coverage, unaccounted, etc.).

## Step 2 — Adversarial threat model

You are structurally separate from the extractor (evaluator ≠ creator). Read
the extracted domain model files from the estate (or from the worktree if
present) and attack it — find what is missing, weak, or ungrounded.

### Threat checklist (fail-closed bias)

1. **Ungrounded rules.** Business rules resting only on `comment`/`doc` (no
   `code-body`/`type-def`) are RISK-eligible — the old code's comment may lie.
2. **Missing error paths.** A requirement with `business_rules` but empty
   `error_paths` and no `validations` is suspect.
3. **Reason-less drops.** A `disposition:"drop"` without `disposition_reason`
   cannot launder past the coverage gate. Flag every one.
4. **Cross-cluster smear.** Requirements whose `legacy_components[]` span
   multiple communities may hide two requirements wearing one id.
5. **Coverage holes.** Behavior-bearing SymbolIds not in any requirement's
   `legacy_components[]` are unaccounted — enumerate them.
6. **Low-confidence clusters.** Dense sub-threshold confidences signal guessing.
7. **Reference integrity.** Broken `legacy_components`/`provenance.ref` entries
   break the traceability thread. Flag broken links.

## Output contract

Your final output MUST start with a JSON summary block then the threat list:

```
COVERAGE_SUMMARY: {"coverage": <float>, "unaccounted": <int>, "behavior_bearing": <int>}
```

Then one threat per line: `[RISK|BLOCK|NOTE] <location> — <finding>`.

A `BLOCK` means the domain model must not proceed to build until resolved.
`coverage == 1.0` with zero unaccounted is the gate bar; any hole is a `BLOCK`.

Then the verdict — the LAST line of your output, one plain-text line, never
quoting another VERDICT line: `VERDICT: PASS` iff `coverage == 1.0`, zero
unaccounted and no `BLOCK`; otherwise `VERDICT: FAIL` (the threats above it
are the conditions).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.