moonlight-lupin/agent-skills

entity-research

Deep background research on an entity — a company OR a person — into a cited dossier: identity & background, ownership & key management, adverse / negative media, public sanctions-list name-match signals, PEP indications from public research, and litigation…

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Entity Research

Deep background research on a company or a person → a cited dossier for a human to read and act on. General-purpose research — vetting a vendor, a counterparty before a contract, a prospective hire, a partner, or verifying a media claim.

Research & compilation — NOT a determination. This skill does not screen, clear, rate, or block anyone. A sanctions-list / PEP / watchlist signal is a SIGNAL to escalate to a qualified compliance / AML function, not a finding; negative press is an allegation with a source and date, not a proven fact. Everything is cited; nothing is auto-acted on.

Scope and routing

Use this skill for general background research and fast public signals. Do not use it as a substitute for professional CDD/AML screening, sanctions clearance, PEP screening, or a compliance decision, and do not build an intrusive profile of a private individual.

When to use it

  • Vet a vendor / supplier / counterparty before engaging or signing a contract.
  • Background on a prospective hire, a partner, or a co-investor's principal.
  • Check for negative / adverse media or litigation on a name.
  • A quick public sanctions-list signal check (to escalate, not to clear).
  • A quick PEP indication check from public research (to escalate, not to clear).
  • "Who actually owns / runs X?" — ownership & key-management background.

The research lenses

  1. Identity & background — confirm you have the right entity (registration no., jurisdiction, incorporation date, website, aliases / former names; for a person: role, employer, location, DOB if public). Disambiguate same-name entities early.
  2. Ownership & key management — shareholders / UBO signals, directors, senior managers; group/parent structure. Use the people-enrichment skill / PDL for people & firmographics where appropriate.
  3. Adverse / negative media — allegations, investigations, scandals, insolvency, fraud, environmental/labour issues — each with source, date, and allegation-vs-outcome.
  4. Sanctions / PEP / watchlist signalsscreen_lists(name) checks public sanctions lists only (OFAC SDN + Consolidated, UK OFSI, UN). PEP indications are manual/open-web research signals, such as public office, senior state-owned enterprise role, close-associate indications, or official biographies. Neither is a clearance.
  5. Litigation & regulatory — material lawsuits, regulator actions, fines, debarments.
  6. Summary & flags — a short read with escalation flags for a compliance reviewer.

Data sources (self-sufficient core + optional depth)

  • Open webweb_search + web_extract for press, litigation, registry mentions, ownership clues, and public PEP indications.
  • Deep-research engine — for a thorough pass, hand the entity + lenses to a deep-research engine/skill if available; otherwise run fan-out searches directly.
  • PDL (people / firmographics) — run the `people-enrichment` skill for the owner / key-management / company layer where appropriate (needs PDL_API_KEY).
  • Public sanctions listsscripts/entity_research.pyscreen_lists(name) fetches + token-name-matches the official government consolidated lists: US (OFAC SDN + Consolidated), UK (OFSI), UN. It returns potential-match signals only. It is not fuzzy/phonetic screening and does not cover all local autonomous lists. For a country's local autonomous measures, do a manual official-portal check. A match is a signal to verify with a compliance function; no match is NOT a clearance.

Workflow

  1. Pin the subject — name + identifiers (jurisdiction, registration no., website, role/employer for a person). Resolve same-name ambiguity before researching.
  2. Plan the research — break the entity into 3-6 research sub-questions across the lenses (e.g. "Who owns X?", "Any litigation against X?", "Is X on any sanctions list?"). Define success criteria: what would a complete dossier cover? This plan guides which lenses to prioritize and prevents skipping lenses.
  3. Run the lenses — fan-out web search per lens; PDL for people/firmographics; screen_lists() for public sanctions-list signals; manual official/public checks for PEP indications and local sanctions lists. Capture the source URL + date for every claim.
  • Date grounding (mandatory). Before searching, ground in the real current date: "Today's date is {current date}. Use {current year} in queries — never a year inferred from training data."
  • Quality filter. Discard thin/irrelevant results before extraction: landing pages, aggregator stubs (<100 words of substantive content), pages with keyword overlap but no actual relevance (word-boundary match entity name, not substring), and duplicate URLs.
  1. Gap analysis — after the first pass, review findings against the research plan from step 2. Which sub-questions are unanswered? Which lenses have thin coverage? Generate targeted follow-up queries for the gaps and run a second search pass. Repeat once more if significant gaps remain (max 3 passes).
  2. Weigh — primary/official sources > reputable press > blogs/forums; allegation vs outcome; recency; corroboration (≥2 independent sources for a serious claim). Flag low-confidence items as such; don't launder rumour into fact.
  3. Assembledossier(...) builds the cited markdown dossier (the six lenses + a "not a determination" header + escalation flags). Deliver to chat or save as .md.
  4. Flag escalations — any sanctions-list signal, PEP indication, serious adverse finding, or integrity concern → call out "escalate to a compliance / AML reviewer" explicitly.

See references/research-lenses.md (what to look for + query patterns) and references/boundaries-and-sanctions.md (the signal-not-determination rule, false positives, and privacy guardrails).

Output pattern

For adverse / litigation / regulatory findings, prefer a compact table:

ItemSourceDateAllegation / charge / outcomeConfidenceEscalate?

For sanctions / PEP / watchlist signals, never write "clear" or "blocked". Use language like:

  • Public sanctions-list check found no potential matches in OFAC SDN/Consolidated, UK OFSI and UN via screen_lists() as of [date]. This is not a clearance; local lists and professional screening remain outside this helper.
  • Potential sanctions-list name match on "[matched name]" ([list], score [x]) — escalate to compliance / AML reviewer for verification.
  • Public PEP indication: [public office / SOE role / close associate indication] from [source, date] — escalate for compliance review. This is not a PEP-screening determination.

Boundaries & safety

  • Research, not a determination / clearance. Sanctions-list or PEP signal = escalate, never "clear" or "block". No match ≠ clean.
  • PEP clarity. screen_lists() is not a PEP screener. PEP indications come from public-source research and must be reviewed by a qualified compliance function.
  • Allegations vs facts. Attribute and date every negative item; distinguish allegation, charge, and outcome. Avoid defamatory framing; report what sources say, with the source.
  • Persons — legitimate purpose, public info only. Research a person only for a legitimate purpose (vetting), and only publicly-available information; don't compile sensitive personal data (health, beliefs, sexuality, etc.) or build an intrusive profile.
  • A dossier is a draft for a human — never the basis for an automated action.

Principles

  • Drafts, not advice — a dossier is a research aid for a person to read and act on.
  • Never invent — cite every claim with a source + date; mark thin/uncorroborated items as such.
  • Signal, not determination — a sanctions-list / PEP / watchlist signal escalates; it never clears or blocks.
  • Honesty and calibration — distinguish allegation from outcome; present conflicts, note confidence.
  • Workspace hygiene — keep the dossier local; it's internal and may name individuals.

Data handling — search the name, not the relationship

A bare name with no relationship attached is fine to research on the open web. But:

  • Never leak the context. Search "[entity]", not "we're investing in [entity]" or "[entity] our client" — keep your deal/client relationship out of external queries.
  • If the entity is tied to a live deal or a client, the relationship stays confidential (omit it from queries); the public research on the name still proceeds.
  • Keep the dossier on the local machine; it may name individuals.

Files

  • scripts/entity_research.pyscreen_lists (public sanctions-list name-match signal, cached, graceful), dossier (assemble the cited markdown dossier + escalation flags), name-normalisation/citation helpers; --self-test (offline; matcher + dossier).
  • references/research-lenses.md — per-lens checklist + good query patterns + source weighting.
  • references/boundaries-and-sanctions.md — the lists, signal-not-determination, false positives, escalation, and person-privacy guardrails.

Verification checklist

  • [ ] Subject pinned; same-name ambiguity resolved (or both presented).
  • [ ] Research plan created (3-6 sub-questions across lenses, success criteria defined).
  • [ ] Date grounding applied — queries use current year, not training-cutoff year.
  • [ ] Quality filter applied — thin/irrelevant/duplicate results discarded before extraction.
  • [ ] Gap analysis run — at least 2 search passes; remaining gaps documented.
  • [ ] Every claim carries a source URL + date; serious claims corroborated (≥2 sources).
  • [ ] Allegations attributed and distinguished from outcomes; thin items flagged as thin.
  • [ ] screen_lists() presented as public sanctions-list signal only, never PEP screening or clearance.
  • [ ] PEP indications, if any, came from public sources and are presented as escalation signals only.
  • [ ] Person research limited to a legitimate purpose and public info only.
  • [ ] Escalation flags listed explicitly; dossier kept local.

Requirements

  • Python 3.8+ (stdlib only for screen_lists/dossier).
  • Session web search + fetch tools for the research lenses (not bundled).
  • Network for screen_lists (public lists) — --self-test runs offline.
  • Optional: PDL_API_KEY + the people-enrichment skill for the people/firmographics layer; a deep-research engine/skill for a deeper pass.
du même dépôt

Autres Skills

Tous les Skills
moonlight-lupin
Communauté

claude-plugin-converter

Convert Claude Code plugins into self-contained Hermes plugins — discovery analysis then full conversion

installations
1
GitHub Stars
62
Mis à jour
7 sept.
moonlight-lupin
Communauté

clips-studio

Use when the user wants to "make a video/clip", "generate a video from text", "animate this image/photo", "create a marketing reel / social video / teaser", "do a 3D / parallax move", "pan/zoom/orbit a shot", or mentions fal.ai, Kling, Veo or Seedance for video. Staged fal.ai workflow — brainstorm, draft cheaply, produce the final at quality. Three modes: text-to-video, animate (still to motion), camera-move (push-in/pan/orbit). Not for still images (image-studio), slide decks, or charts. Honesty discipline: never depict real identifiable subjects via text-to-video.

installations
1
GitHub Stars
62
Mis à jour
7 sept.
moonlight-lupin
Communauté

decision-log

ADR-style decision journal for agents and teams. Create numbered decision records, track superseding chains, schedule periodic reviews, and search past decisions to avoid re-litigating settled questions.

installations
1
GitHub Stars
62
Mis à jour
7 sept.
moonlight-lupin
Communauté

deep-research

Autonomous multi-step deep research engine implementing an iterative Think → Search → Extract → Synthesize → Stop loop. The LLM drives every decision: what to search, what's relevant, what's missing, and when to stop. Produces a cited, magazine-quality report with inline citations, category- specific formatting, and research stats. Trigger when the user asks for "deep research", "research report on", "comprehensive analysis of", "look into X in depth", "write a report on X", or any question needing multi-source synthesis beyond a single search. For entity vetting/dossiers use entity-research; for news digests use news-monitoring; for source-grounded Q&A use notebooklm-mode.

installations
1
GitHub Stars
62
Mis à jour
7 sept.