/unbroker
Find and remove authorized personal information exposures from data brokers and people-search sites with a consent-gated local workflow.
$ npx -y skills add CoWork-OS/CoWork-OS --skill unbroker --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/unbroker
Context preview
The summary Claude sees to decide when to auto-load this skill.
Find and remove authorized personal information exposures from data brokers and people-search sites with a consent-gated local workflow.
SKILL.md
unbroker.SKILL.mdname: unbroker
description: Find and remove authorized personal information exposures from data brokers and people-search sites with a consent-gated local workflow.
unbroker
This CoWork OS bundled port is based on the upstream Hermes Agent `unbroker` skill: https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/security/unbroker
CoWork runtime mapping:
- Treat `terminal` as CoWork's shell/run_command capability.
- Treat `web_extract` as CoWork web search, fetch, or extraction tools.
- Treat `browser_*` as the available CoWork browser automation tools.
- Treat `delegate_task` as CoWork multi-agent orchestration when available.
- Treat `cronjob` as CoWork scheduling/automation.
- The Python engine stores data under `$PDD_DATA_DIR` when set. Otherwise it prefers
`$COWORK_HOME/unbroker`, then `$COWORK_USER_DATA_DIR/unbroker`, then the upstream legacy `$HERMES_HOME/unbroker` / `~/.hermes/unbroker` path.
Code is MIT licensed. Broker data includes BADBOOL-derived data under CC BY-NC-SA 4.0; keep the license and attribution notes in `LICENSE.txt` and the README intact when redistributing.
Find where a person's personal information (name, addresses, phone, email, relatives) is exposed on data brokers and people-search sites, then remove it - automatically where possible, with guided human steps only where a site demands a CAPTCHA, government ID, phone call, or fax. Manages multiple people independently. It does **not** defeat anti-bot systems, does **not** act on anyone without recorded consent, and does **not** remove public records (voter/property/court) or accounts the person controls.
The Python CLI (`scripts/pdd.py`) owns the deterministic state - config, dossiers + consent, the broker database, tier planning, the ledger, drafts, reports, **email sending (SMTP), verification-link polling (IMAP), and the autonomous action queue (`next`)**. You (the agent) do the scanning, form-driving, parallel work, and scheduling with the matching CoWork tools.
Autonomy contract
This skill is designed to run **hands-off**. After intake (+ recorded consent) there are exactly TWO legitimate human touchpoints: (1) the intake conversation itself, and (2) ONE consolidated human-task digest at the end of the run (`$PDD tasks`). Between those:
- **Never ask the operator to choose configuration.** `$PDD setup --auto` detects capabilities and
picks the most autonomous valid config itself.
- **Never pause before individual submissions** when `autonomy=full` (the default): the consent
recorded at intake is standing authorization for T0-T2 opt-outs. (`autonomy=assisted` restores per-submission confirmation for cautious operators - honor `confirm_first` flags in `next` output.)
- **Never interrupt the run for human-only work.** Record it (`record ... human_task_queued
--reason "..."`) and keep going; it all surfaces once in the final digest.
- **Drive the whole run as a loop over `$PDD next <subject>`** - it returns the exact ordered actions
to take right now (scan, poll verification, re-check, opt out parents-first, requeue blocked), plus the human digest. Execute every action, record outcomes, re-run `next`, repeat until `done_for_now`. Then present the digest, report, and schedule the cron.
The hard limits that autonomy never overrides: no acting without recorded consent, no disclosure beyond `disclosure_fields`, no CAPTCHA/anti-bot bypass, and `confirmed_removed` only after a verifying re-scan.
When to Use
- "Remove my (or my family member's) data from data brokers / people-search sites."
- "Opt me out", "delete me from Spokeo/Whitepages/etc.", "clean up after a doxxing."
- "Set up recurring privacy monitoring" (brokers re-list people).
- Checking which brokers still expose someone and why.
Prerequisites
- `python3` (stdlib only; no extra packages needed for the core engine).
- **Optional upgrades** (the skill works zero-config without these; `setup --auto` turns on every
one it detects, reading credentials from the shell env **and from the CoWork runtime `.env`** (`$COWORK_HOME/.env` or `$COWORK_USER_DATA_DIR/.env`, with upstream `$HERMES_HOME/.env` as a compatibility fallback) so keys already loaded for local tools are picked up without re-exporting - each one converts a class of human tasks into agent actions):
- **Cloud browser (recommended default): `BROWSERBASE_API_KEY`.** `setup --auto` selects it
whenever the key is present, and it is the intended baseline: a real residential-IP cloud browser **clears soft/managed CAPTCHAs (Cloudflare Turnstile, hCaptcha/reCAPTCHA checkbox) as normal operation**, so those brokers stay automated (T1) instead of becoming human tasks. This is not CAPTCHA "solving" - no solver service, no fingerprint spoofing; only interactive/behavioral ("hard") challenges the browser genuinely cannot pass fall back to a human task. Without the key, the plain agent browser is used and soft-CAPTCHA brokers drop to T2 (human).
- Email automation, two credential-free-or-not options:
- **Browser mode (no password): `setup --email-mode browser`.** The agent sends opt-out/CCPA
emails and opens verification links through the operator's **logged-in webmail** using browser tools. Nothing is stored. This requires CoWork to be pointed at the operator's own logged-in browser, **NOT** a cloud browser: a headless cloud browser (Browserbase) holds no webmail session and is itself Cloudflare/DataDome-gated on webmail and on session-bound broker gates (e.g. PeopleConnect guided-mode). Drive the operator's real Chrome over CDP - launch `chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.cowork/chrome-debug"` (a dedicated debug profile signed into the webmail once, not the Default profile) and connect the browser tools to `127.0.0.1:9222`. **`$PDD cdp` launches this for you** (finds Chrome/Chromium/Brave/Edge, starts it detached on the dedicated
Read more
name: unbroker description: Find and remove authorized personal information exposures from data brokers and people-search sites with a consent-gated local workflow.
unbroker
This CoWork OS bundled port is based on the upstream Hermes Agent `unbroker` skill: https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/security/unbroker
CoWork runtime mapping:
- Treat `terminal` as CoWork's shell/run_command capability.
- Treat `web_extract` as CoWork web search, fetch, or extraction tools.
- Treat `browser_*` as the available CoWork browser automation tools.
- Treat `delegate_task` as CoWork multi-agent orchestration when available.
- Treat `cronjob` as CoWork scheduling/automation.
- The Python engine stores data under `$PDD_DATA_DIR` when set. Otherwise it prefers
`$COWORK_HOME/unbroker`, then `$COWORK_USER_DATA_DIR/unbroker`, then the upstream legacy `$HERMES_HOME/unbroker` / `~/.hermes/unbroker` path.
Code is MIT licensed. Broker data includes BADBOOL-derived data under CC BY-NC-SA 4.0; keep the license and attribution notes in `LICENSE.txt` and the README intact when redistributing.
Find where a person's personal information (name, addresses, phone, email, relatives) is exposed on data brokers and people-search sites, then remove it - automatically where possible, with guided human steps only where a site demands a CAPTCHA, government ID, phone call, or fax. Manages multiple people independently. It does **not** defeat anti-bot systems, does **not** act on anyone without recorded consent, and does **not** remove public records (voter/property/court) or accounts the person controls.
The Python CLI (`scripts/pdd.py`) owns the deterministic state - config, dossiers + consent, the broker database, tier planning, the ledger, drafts, reports, **email sending (SMTP), verification-link polling (IMAP), and the autonomous action queue (`next`)**. You (the agent) do the scanning, form-driving, parallel work, and scheduling with the matching CoWork tools.
Autonomy contract
This skill is designed to run **hands-off**. After intake (+ recorded consent) there are exactly TWO legitimate human touchpoints: (1) the intake conversation itself, and (2) ONE consolidated human-task digest at the end of the run (`$PDD tasks`). Between those:
- **Never ask the operator to choose configuration.** `$PDD setup --auto` detects capabilities and
picks the most autonomous valid config itself.
- **Never pause before individual submissions** when `autonomy=full` (the default): the consent
recorded at intake is standing authorization for T0-T2 opt-outs. (`autonomy=assisted` restores per-submission confirmation for cautious operators - honor `confirm_first` flags in `next` output.)
- **Never interrupt the run for human-only work.** Record it (`record ... human_task_queued
--reason "..."`) and keep going; it all surfaces once in the final digest.
- **Drive the whole run as a loop over `$PDD next <subject>`** - it returns the exact ordered actions
to take right now (scan, poll verification, re-check, opt out parents-first, requeue blocked), plus the human digest. Execute every action, record outcomes, re-run `next`, repeat until `done_for_now`. Then present the digest, report, and schedule the cron.
The hard limits that autonomy never overrides: no acting without recorded consent, no disclosure beyond `disclosure_fields`, no CAPTCHA/anti-bot bypass, and `confirmed_removed` only after a verifying re-scan.
When to Use
- "Remove my (or my family member's) data from data brokers / people-search sites."
- "Opt me out", "delete me from Spokeo/Whitepages/etc.", "clean up after a doxxing."
- "Set up recurring privacy monitoring" (brokers re-list people).
- Checking which brokers still expose someone and why.
Prerequisites
- `python3` (stdlib only; no extra packages needed for the core engine).
- **Optional upgrades** (the skill works zero-config without these; `setup --auto` turns on every
one it detects, reading credentials from the shell env **and from the CoWork runtime `.env`** (`$COWORK_HOME/.env` or `$COWORK_USER_DATA_DIR/.env`, with upstream `$HERMES_HOME/.env` as a compatibility fallback) so keys already loaded for local tools are picked up without re-exporting - each one converts a class of human tasks into agent actions):
- **Cloud browser (recommended default): `BROWSERBASE_API_KEY`.** `setup --auto` selects it
whenever the key is present, and it is the intended baseline: a real residential-IP cloud browser **clears soft/managed CAPTCHAs (Cloudflare Turnstile, hCaptcha/reCAPTCHA checkbox) as normal operation**, so those brokers stay automated (T1) instead of becoming human tasks. This is not CAPTCHA "solving" - no solver service, no fingerprint spoofing; only interactive/behavioral ("hard") challenges the browser genuinely cannot pass fall back to a human task. Without the key, the plain agent browser is used and soft-CAPTCHA brokers drop to T2 (human).
- Email automation, two credential-free-or-not options:
- **Browser mode (no password): `setup --email-mode browser`.** The agent sends opt-out/CCPA
emails and opens verification links through the operator's **logged-in webmail** using browser tools. Nothing is stored. This requires CoWork to be pointed at the operator's own logged-in browser, **NOT** a cloud browser: a headless cloud browser (Browserbase) holds no webmail session and is itself Cloudflare/DataDome-gated on webmail and on session-bound broker gates (e.g. PeopleConnect guided-mode). Drive the operator's real Chrome over CDP - launch `chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.cowork/chrome-debug"` (a dedicated debug profile signed into the webmail once, not the Default profile) and connect the browser tools to `127.0.0.1:9222`. **`$PDD cdp` launches this for you** (finds Chrome/Chromium/Brave/Edge, starts it detached on the dedicated
Local-first personal agentic OS and everything app for coding, knowledge work, web design, automations, and artifacts.
Repo: CoWork-OS/CoWork-OS
Other skills on cowork-os.
- /attack-path-analysis
Use when Codex is already in the attack-path-analysis phase of a security scan or the user explicitly asks to trace a security finding from source to sink and calibrate severity. Do not use as the primary trigger for full PR, commit, branch, patch, or repository scans.
Open skill - /deep-security-scan
Use when the user asks for a deep, exhaustive, multi-pass, or variance-reducing repository-wide Codex Security scan. Run repeated independent repository-wide discovery passes with worker-specific threat models, semantically merge candidates, synthesize one canonical validation
Open skill - /finding-discovery
Use when Codex is already in the finding-discovery phase of a security scan or the user explicitly asks to discover candidate security findings in a repository or code change. Do not use as the primary trigger for full PR, commit, branch, patch, or repository scans.
Open skill - /fix-finding
Use when the user explicitly asks to fix and verify a validated or plausible security finding. Do not use as the primary trigger for full PR, commit, branch, patch, or repository scans.
Open skill - /security-diff-scan
Use when the user asks for a security review of a pull request, commit, branch diff, working-tree patch, or other Git-backed change set.
Open skill - /security-scan
Use when the user asks for a repository-wide or scoped-path security scan.
Open skill

