For the complete documentation index, see llms.txt. This page is also available as Markdown.

luciq-masking-rules

Audit an installed app's PII masking posture across all three Luciq masking layers, surface gaps against a compliance framework (HIPAA, GDPR, PCI-DSS, SOC 2, CCPA, FERPA), and close them one control a

End-to-end PII posture audit and masking walkthrough for an app that already has the Luciq SDK installed. The agent scans all three masking layers — automatic type-based screenshot masking, per-view markers on sensitive views, and network masking configuration — surfaces gaps against your stated compliance posture, and walks you through closing them one control at a time with cited evidence.

The audit is designed to be re-run: before launch, before a new screen ships, or before a compliance review — without redoing onboarding.

Use this skill when

  • You ask to "audit my PII", "check my masking", "review Luciq privacy / PII posture", or "what's masked in Luciq?"

  • You ask to "prep Luciq for HIPAA", "GDPR", "SOC 2", "PCI-DSS", "CCPA", or "FERPA"

  • You ask to "add masking to [a screen]" and want a broader posture review alongside it

What the agent does

  • Posture scan. Reads all three masking layers in parallel (silent): automatic screenshot masking types at SDK init, per-view privacy markers on sensitive views (with a flag for each view showing whether it's already marked), and network masking config including obfuscateLog, omitLog, and custom mask key extensions. Also checks five defense-in-depth controls: consent gating before Session Replay, grayscale screenshots, FLAG_SECURE on Android, usersPageEnabled, and server-side UI inflate sites that require an isPrivate flow.

  • Compliance alignment. If you name a framework (HIPAA, GDPR, PCI-DSS, SOC 2, CCPA, FERPA), the agent loads the matching preset and compares each profile value against it in the same scan pass.

  • Evidence-cited recap. Opens with one line stating overall posture honestly — "Strong on view-level, weak on network" — then up to six cited findings: file:line, SDK version, a CLAUDE.md quote with line number.

  • Bucketed plan. Groups gaps into three positive buckets: close now (clear apply step, named compliance fit, high impact), optional — add if you'd like (defense-in-depth, not strictly required), and monitor (controls already in place with revisit conditions).

  • Per-control walk. For each "close now" item — and any "optional" you select — the agent runs a three-step micro-flow: Ask (one-line with cited gap), Apply (diff shown before any edit; server-side controls become copy-pasteable support ticket lines), and Summarize.

  • Dashboard verification. After controls are applied, one concrete round-trip to confirm masked regions render as solid black rectangles on a session in the dashboard.

  • Handoff doc. Writes LUCIQ_MASKING.md at the repo root — posture snapshot by layer, controls applied with file:line, deferred items with revisit conditions, server-side request lines, and a pre-production privacy checklist. Appends a new dated block if the file already exists.

Install

The fastest path is the plugin install. Add the marketplace and install:

Works in Claude Code and Cursor. The plugin install also wires up the Luciq MCP server in one step.

After install, the skill is available as /luciq-skills:luciq-masking-rules.

For other agents, install via npm:

Or copy SKILL.md from the public repo to ~/.claude/skills/luciq-masking-rules/SKILL.md (user-global) or .claude/skills/luciq-masking-rules/SKILL.md (project-local). The full SKILL.md is reproduced in the expandable below.

📋 Click to expand the full SKILL.md

Prerequisites

  • The Luciq SDK must be installed and initialized in your project. This skill assumes the SDK init is already present — running it on an uninstrumented project produces incorrect results. Use luciq-setup to install first.

  • The Luciq MCP server is optional. If authenticated, the agent reads masking configuration from your other apps to surface workspace precedent.

If the Luciq MCP server isn't connected, the skill still runs. Workspace precedent (Track F) is optional — only the local repo scan is required.

How the agent audits

The agent tracks seven explicit phases. It stops rather than faking progress if a phase can't complete with confidence.

Phase 0. Detect mode and compliance posture

Two reads happen at the trigger: mode and stated compliance framework.

Trigger phrasing
Mode
Behavior

"must-haves", "fast", "quick"

FAST

Applies the top 3 missing controls with one-line confirms. ~2 minutes.

"audit", "what am I missing", "report", "review"

AUDIT

Report only. Posture scan + recap + bucketed plan + handoff doc. No apply without follow-up confirmation.

anything else, including "review my PII", "prep for HIPAA"

GUIDED

Full arc with per-control walk and verification. ~8 minutes. Default.

If you name a compliance framework (HIPAA, GDPR, SOC 2, PCI-DSS, CCPA, FERPA) in your message or in CLAUDE.md, the agent loads the matching preset and confirms it in one line before starting.

Phase 1. Posture scan

Silent and parallel. Produces a structured PII profile the rest of the workflow reads from.

Track A — Context docs. Reads CLAUDE.md, AGENTS.md, .cursorrules, README.md, and project docs in priority order. Extracts explicit privacy lines, compliance framework mentions, and a quotable line with line number.

Track B — Sensitive view enumeration. For each sensitive screen, enumerates individual views bound to PII-flavored properties (password, email, cardNumber, cvv, ssn, pin, dob, iban, firstName, lastName, phoneNumber, address, and related). Records whether each view already has a Luciq privacy marker applied. Filters out false positives in test, spec, mock, and generated paths. Re-enumerated from the current repo state on every run.

Track C — Auto-mask configuration. Detects what the SDK init sets for automatic screenshot masking using platform-specific patterns (e.g., SessionReplay.autoMaskScreenshotOptions on iOS, Luciq.setAutoMaskScreenshotsTypes( on Android). Records whether auto-mask is not configured — which is distinct from MASK_NOTHING. Verifies the SDK version to determine whether network auto-masking defaults apply.

Track D — Network masking. Detects setNetworkAutoMaskingState, manual obfuscateLog and omitLog hooks, and custom mask key extensions. Default is on from SDK 14.2.0 — but the SDK version is verified before claiming this.

Track E — Defense-in-depth controls. Five reads: consent gating before Session Replay, grayscale screenshots, FLAG_SECURE override on Android, usersPageEnabled, and server-side UI inflate sites (which require an isPrivate flow if present).

Track F — Workspace precedent (optional, MCP). If the Luciq MCP is authenticated, reads masking config from your other apps via list_applications. A precedent quote is the strongest trust signal available for an audit. Skipped silently if MCP isn't authenticated.

For any named compliance framework, the agent compares each profile value against the framework's preset in the same pass.

Phase 2. Recap — what's masked today

Opens with one line stating overall posture honestly. Then up to six cited evidence lines: file:line, SDK version, CLAUDE.md quote. Skips padding — if posture is fully clean, one line says so.

Phase 3. Plan — three positive buckets

Every gap lands in a bucket. "Close now" items name the control, the cited gap, and the proposed apply target. "Monitor" items name a revisit condition.

In AUDIT mode, the agent stops here, writes the handoff doc, and exits. Nothing is applied without follow-up confirmation.

Phase 4. Per-control walk

For each "close now" item (and any "optional" you select), the agent runs:

  1. Ask — one line: the control, the cited gap, the proposed change. Three responses: Yes / No / Tell me more.

  2. Apply — derived from the posture profile, not from defaults. The diff is shown before any edit is made. For server-side controls (network mask key additions, usersPageEnabled), the agent prepares a copy-pasteable support ticket line instead.

  3. Summarize — what was done, what's left for you, move to the next control.

For per-view markers, the first 3–5 are confirmed individually so you can catch false positives; the remaining views are then batch-confirmed in one block.

Phase 5. Verification

After all selected controls are applied, one concrete verification round-trip:

  1. Build and launch the app.

  2. Navigate to a screen you just marked private.

  3. Trigger a bug report or wait for a Session Replay frame.

  4. Open the dashboard and confirm masked regions render as solid black rectangles.

The agent waits for your confirmation. If you say "later," the verification steps appear in the handoff doc. FAST mode skips this phase.

Phase 6. Handoff — write LUCIQ_MASKING.md

Writes LUCIQ_MASKING.md at the repo root, or appends a new dated session block if the file already exists. Contents:

  • Posture snapshot by layer (auto-mask, per-view, network, defense-in-depth)

  • Compliance posture: framework named (or not specified), preset applied, deltas resolved this session

  • Controls applied, each with file:line

  • Controls deferred, each with a revisit condition

  • Server-side requests as copy-pasteable support ticket lines

  • Pre-production privacy checklist

  • Visual verification: timestamp and screen name if confirmed, or not verified this session

  • Pointers to sibling skills: luciq-onboard for a product walk, luciq-migrate for SDK upgrades, luciq-debug for incident investigation

Last updated