person-research
Autonomous digital footprint audit for a named person. Surfaces every publicly findable item across self-published channels, third-party publications, and leaked-but-public sources. Output is a single self-contained HTML brief with origin badges and a prioritized takedown action list so the subject can request removal. Public sources only.
What this skill does
# Person Research — Digital Footprint Audit
You perform autonomous web research on a named person and produce a self-contained HTML dossier intended to help that person see and act on their public digital footprint. You research the data yourself — do not ask the user for facts they would need to look up. Only ask for decisions and confirmations.
**Purpose framing — keep this in mind throughout:**
This is a **digital footprint audit / right-to-erasure self-service** tool. Output is intended to be shared with the subject so they can request removal of items they don't want public. Every item must carry its origin (who put it there) and its removal path (how to get it taken down).
**Hard rules:**
- **Public sources only.** No login-gated platforms (LinkedIn behind sign-in, paywalled databases). Use the publicly indexed/visible portions only.
- **Origin label is mandatory** for every item: `self-published`, `third-party`, or `leaked-but-public`.
- **Leaks: meta only.** For breach data: report the breach name, source, date, and the fact that the subject's email/handle appears in it. Do NOT quote passwords, private message contents, or other sensitive payload from leaks.
- **Removal route is mandatory** for every item where one is known. If the route is non-obvious, say so explicitly.
- **No fabrication.** If a source can't be opened, mark it skipped. Do not infer items that aren't actually cited.
- **Disambiguation first.** Never produce a dossier mixed from multiple people with the same name.
---
## Phase 1 — Setup
### 1. Collect input
Required:
- `full_name` (first + last)
Optional disambiguators (any combination):
- `current_employer`
- `city` / `region`
- `profession` / `role`
- `profile_url` (e.g. a known LinkedIn, X, or personal site)
- `birth_year` (only if user volunteers — never solicited beyond this)
- `email` (only if user volunteers — used for breach lookups)
If no `full_name` is provided, enter interview mode (foundation §7) and ask only for the name.
### 2. Disambiguate — candidate sweep
WebSearch the full name. Cluster results into distinct candidate people. For each plausible candidate produce a one-line disambiguator card:
```
[N] [Name]
Distinguishers: [employer / city / role / age / notable affiliation]
Top hits: [3 source URLs]
```
Present **all plausible candidates** (not just top 5). For very common names with many low-signal hits, group the long tail under "Other candidates with low signal — N people" and list only those with disambiguable profiles in detail.
Ask the user to pick by number, or to provide additional disambiguators. **Do not proceed until one candidate is confirmed.** Mixing two people in one dossier is a critical failure.
### 3. Confirm scope and output path
Present:
```
**Subject**: [name]
**Disambiguators**: [list]
**Output**: /documentation/[name-slug]/person-research/[name-slug].html
**Scope**: full digital footprint audit (self-published + third-party + leaked-but-public)
```
Ask for path override if needed. Create the directory if it doesn't exist.
---
## Phase 2 — Research pipeline
Track for every finding: source URL, exact title/handle, date if available, verbatim short quote or excerpt, and origin category.
### Self-published sources
**S1 — Personal website / blog / portfolio.** WebSearch `"[name]" site:[domain candidates]`, also `"[name]" personal blog OR portfolio OR website`. WebFetch any direct hits.
**S2 — Major social platforms (public profiles).** Search for the person's presence on:
- X / Twitter, Mastodon, Bluesky, Threads
- LinkedIn (public-visible parts only)
- Facebook, Instagram, TikTok (public posts/profiles only)
- YouTube channel, Twitch
- Reddit (own user profile)
Queries: `"[name]" site:twitter.com`, `"[name]" site:bsky.app`, etc. Capture handle, follower scale if visible, bio, sample of pinned/recent public posts.
**S3 — Code & technical platforms.** GitHub, GitLab, Codeberg, npm/PyPI/Crates author profiles, Stack Overflow user profile, Hacker News user, dev.to.
**S4 — Long-form publishing.** Medium, Substack, dev.to, personal newsletters, Ghost-hosted blogs.
**S5 — Audio / video / podcasting.** Their own YouTube channel posts, Spotify-for-creators / podcast host pages, SoundCloud, Vimeo.
**S6 — Author / creator profiles.** Goodreads author, Behance, Dribbble, ArtStation, Bandcamp, Patreon, Ko-fi.
**S7 — Speaker pages.** Conference speaker bios on event sites (where they listed themselves), Lanyrd-archive equivalents.
### Third-party published
**T1 — News, interviews, profile pieces.** WebSearch `"[name]" interview OR profile OR quote` and `"[name]" announced OR appointed OR named` from recent years.
**T2 — Co-authored papers.** Google Scholar, arXiv, ResearchGate, ORCID lookup. Note: ResearchGate is self-published when the person uploaded; third-party when only cited.
**T3 — Patents.** Google Patents — inventor listings.
**T4 — Public corporate filings.** For NL: KvK officer listings (UBO data is restricted). For US public co's: SEC filings naming them. Companies House (UK).
**T5 — Court / legal records.** rechtspraak.nl (NL), CourtListener (US), local equivalents. **Only the existence and public-record metadata of cases — do not retell case substance beyond what the published summary states.**
**T6 — Wikipedia & encyclopedic.** Wikipedia article in any language, Wikidata entry.
**T7 — Forum mentions / discussions ABOUT the person.** Reddit threads, Hacker News threads, Stack Exchange answers naming them, X/Twitter mentions discussing them (where searchable without login).
**T8 — Awards, honoree lists, alumni rosters.** Trade press, university alumni features, industry "30 under 30" / "top X" lists.
**T9 — Image search.** Google Images / TinEye reverse-search on their name — note pages where their photo appears (useful for the subject to know).
**T10 — Wayback Machine.** Archived versions of removed pages (their own old site, old social profile snapshots) — flag separately because removal from archive.org requires a specific process.
### Leaked-but-public
**L1 — Breach databases (meta only).** HaveIBeenPwned-style lookups using known emails: report breach name + date + the categories of leaked data per breach. **Do not quote any actual payload (no passwords, no private messages).**
**L2 — Pastebin / Ghostbin / similar.** Search for the name and known handles. Report only the existence of the paste, the URL, and a one-line description. Do not transcribe the contents if they contain credentials, private messages, or personal data dumps.
**L3 — Doxbins / harassment-archive sites.** If found, list with extreme care: source URL, date, and a generic description. **Never transcribe the contents.** These items should appear at the top of the takedown list with the urgency-flag.
**L4 — Old database dumps that surfaced publicly** (e.g., voter rolls scraped to GitHub, customer-list exposures). Existence + URL + one-line description only.
---
## Phase 3 — Synthesize
### Per-item required fields
- **Title / what it is**
- **Source URL**
- **Origin**: `self-published` | `third-party` | `leaked-but-public`
- **Platform** (specific: github.com, x.com, weekblad-debrug.nl, etc.)
- **Date** (publication or last-seen)
- **Brief description** (1–2 lines, neutral)
- **Removal route**: concrete steps to request takedown (see Removal Routes below)
- **Removal difficulty**: `easy` | `medium` | `hard` | `very-hard`
### Removal route catalog (use these defaults, refine where you know the specifics)
| Platform / origin | Default removal route | Difficulty |
|---|---|---|
| Own social account (X/IG/FB/etc.) | Delete post / delete account in app settings | easy |
| Own GitHub repo | Repo settings → Delete; for forks, ask forkers via issue | easy (own), hard (forks) |
| Own blog/Medium/Substack | Delete post in dashboard | easy |
| LinkedIn (own) | Edit / delete in profile | easy |
| Third-party news article | Email editor; cite GDPR Art. 17 in EU; cite "ouRelated in Web Dev
generating-lwc-components
IncludedLightning Web Components with PICKLES methodology and 165-point scoring. Use this skill when the user creates or edits LWC components, builds wire service patterns, or writes Jest tests for LWC. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use generating-apex), Aura components, or Visualforce.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Set up queries with useQuery, mutations with useMutation, configure QueryClient caching strategies, implement optimistic updates, and handle infinite scroll with useInfiniteQuery. Use when: setting up data fetching in React projects, migrating from v4 to v5, or fixing object syntax required errors, query callbacks removed issues, cacheTime renamed to gcTime, isPending vs isLoading confusion, keepPreviousData removed problems.
document-processor-api
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
nutrient-document-processing
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Covers useMutationState, simplified optimistic updates, throwOnError, network mode (offline/PWA), and infiniteQueryOptions. Use when setting up data fetching, fixing v4→v5 migration errors (object syntax, gcTime, isPending, keepPreviousData), or debugging SSR/hydration issues with streaming server components.
accelint-nextjs-best-practices
IncludedNext.js performance optimization and best practices. Use when writing Next.js code (App Router or Pages Router); implementing Server Components, Server Actions, or API routes; optimizing RSC serialization, data fetching, or server-side rendering; reviewing Next.js code for performance issues; fixing authentication in Server Actions; or implementing Suspense boundaries, parallel data fetching, or request deduplication.