mcpbeat

View

glebis/view

Build a self-contained interactive HTML that lets you SEE de-identification and restoration — original ↔ redacted ↔ rehydrated, with color-coded PII spans and All/None/Selected toggles. Use when the user says "show me what was redacted", "visualize the de-id", "compare original and redacted", "highlight the PII", "view redaction diff", "see what rehydrate restored", or wants to inspect exactly which spans each type/layer removes. LOCAL only — the HTML embeds REAL values (like a vault artifact): written locally, gitignored, banner-marked private, never shipped or committed.

5k tokens
context cost
the whole folder, loaded on every use
2
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
337
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/glebis/claude-skills --skill view

What comes with it

15 062 bytes besides the instruction
scripts/view.py

The instruction itself

6 sections, as written by the author

confide:view — visual de-id diff (what redaction & rehydrate do)

Produce ONE standalone .html that renders a transcript with every PII span

highlighted and color-coded by type, and lets you toggle between the original and

the redacted views interactively. It reuses the span data from the shared core

(shared/confide_core.py) — a thin renderer, no new detection logic.

Privacy invariants (do not violate)

  • The HTML embeds REAL values (originals + placeholders) so you can compare them.

It is therefore a vault artifact: same posture as the relationship-graph HTML.

  • Local only. Written next to the input, a sibling .gitignore excludes

*.view.html (and *.map.json), and a red PRIVATE banner sits at the top.

Never share it, never commit it, never ship it.

  • Counts only to stdout. The terminal output carries span counts by type — never

PII values or redacted-text dumps.

  • Self-contained & offline. Inline CSS + JS, no CDN / external resources, so it

renders offline and can never 404. Default detection layer is regex (no network,

no models).

Run it

python3 skills/view/scripts/view.py ORIGINAL.txt

If a <name>.map.json sits next to the input (from confide:anon), it is picked up

automatically so the view shows exactly that known PII; otherwise PII is detected with

the local layers and a fresh reversible map is built in memory.

Options:

  • --map MAP.json — supply the reversible map explicitly.
  • --layers regex,natasha,llm — choose detection layers (default regex, offline-safe).
  • --out DIR — write the .view.html into DIR instead of next to the input.

It writes <name>.view.html and ensures a sibling .gitignore.

What the HTML shows

  • The transcript with each PII span wrapped in

<mark class="pii TYPE" data-orig=… data-ph=…>, colored by type (PERSON, DATE,

EMAIL, …). Hover a span to see original ↔ placeholder.

  • An interactive state toggle:
  • All — fully redacted: every span shows its placeholder.
  • None — original: nothing masked.
  • Selected — mask only the PII types you check (per-type checkboxes in the legend).
  • A legend + counts by type.

After running

  • Open the <name>.view.html locally in a browser to inspect the de-id.
  • Report the counts summary (types) — never paste PII.
  • Remind the user the file is private/local and must not be shared or committed.

Setup

The default regex layer always works offline. For Natasha (RU NER) or the local LLM

layer, run confide:setup first; otherwise pass --layers regex.

How to use it

Copy the folder

Take glebis/view from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.