From ot
Deep source-cited dossier on a subject (person, business, family/principals, panel, entity warranting multi-section briefing). Briefing depth: multi-page, quotation-heavy, every claim sourced. Triggers: dossier, deep brief, in-depth profile, briefing-depth research, research file on a named subject.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ot:build-dossier <subject: a person, a business, a family + their business(es), a panel, etc; with whatever seed information is available, plus an output folder if known><subject: a person, a business, a family + their business(es), a panel, etc; with whatever seed information is available, plus an output folder if known>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a dossier deep enough that the next reader can chair a meeting, draft substantive correspondence, run a roleplay simulation, or make a contracting decision from it. The output is multi-page, source-cited, and quotation-heavy. Summaries do not pass.
Produce a dossier deep enough that the next reader can chair a meeting, draft substantive correspondence, run a roleplay simulation, or make a contracting decision from it. The output is multi-page, source-cited, and quotation-heavy. Summaries do not pass.
The skill is subject-agnostic. The same depth discipline applies whether the subject is a panel chair, a small family business, a community elder, an institution, or a person-and-business unit. The output structure adapts to subject type; the depth rules do not.
Identification gates dossier production. If the subject cannot be confidently identified, halt and surface the search trace.
Pick the closest match before drafting; the dossier sections reorganise around it.
If two subject types apply at once (a person who also runs a business that is itself relevant), use the family / principals + business shape rather than two stapled dossiers.
Lookups dispatch through underlying skills, one haiku subagent per outlet, in parallel. Sonnet collects the bundle and writes the dossier.
linkedin.com - LinkedIn person and company pagesfacebook.com - Facebook profiles, pages, postsinstagram.com - public-facing feedsemail-check - local IMAP via mu, for prior correspondenceotter.ai - meeting transcripts the user has captured. When the project tree references a recording but the local cleaned-up transcript is missing or thin, run otter.ai first - voice and family dynamics live in dialogue, and a clean transcript is research infrastructure rather than a nice-to-have.For business or group subjects, also:
If a required underlying skill is genuinely unavailable, halt and report a setup issue. Do not improvise with raw browser commands.
The seed often combines several. A person-plus-business seed ("the X family and their motor shop") is common and triggers §1.2.
Step A - local project search (always first when a project context is named). Run rg -i across the named tree for every variant of the seed names. Read every hit in full. Project files (correspondence, meeting transcripts, leases, contracts) carry signature blocks, ABNs on quote letterheads, family relationships stated in conversation, and the trading-vs-registered distinction already resolved by someone who actually met them.
For meeting transcripts referenced but not cleanly captured locally, invoke otter.ai before going external. Dialogue carries more about a family than press releases ever will.
If email-check is available, run it on every named principal in parallel with the project grep.
If the user's contact_graph Postgres DB is reachable (see find-person for connection details), query it for each named person.
Step B - registry lookup (when subject is a business, or a person + business pair).
For person-only subjects, registry is rarely useful in the abstract - but if any external signal during fan-out indicates the person trades commercially (a Facebook business page bearing their phone, a LinkedIn "self-employed" entry, a trading domain in whois), the seed is effectively person-plus-business and registry corroboration becomes a hard requirement, not a side check. The trap: a sole-trader's social handle is often not their legal name; ABR / whois are the cheapest path to the registered name keyed to the same phone, email, or domain the seed already gave you.
Step C - parallel external fan-out. Dispatch one haiku subagent per applicable outlet in a single message. Each runs only its outlet, returns candidates or "no match", and Sonnet performs §1.3 verification across the bundle.
| Outlet | Person seed | Business seed |
|---|---|---|
| linkedin.com | Profile read at canonical URL; if URL unknown, search by name + organisation | Company page; named-employee search |
| facebook.com | Profile search by name + city; verify with name + employer + photo | Business-page search by name + suburb. Photos-tab read includes image content (vision-OCR), not only alt-text - business cards, decals, signage, name tags routinely sit at random positions in the gallery and carry the legal name, ABN, or address. |
| instagram.com | Only if the subject has a public-facing feed | Hospitality, retail, creative, automotive customisers |
| WebSearch | "Full Name" {role-or-employer}; news, talks, papers | "Trading Name" suburb; reviews, news, court records |
| Domain or website | If known | About, services, team, history, news pages |
Local project grep happened in Step A and is not re-run here.
When the seed names persons but the business is unknown ("the X family motor shop"), the path is: local project hit -> self-disclosed business name in transcript or correspondence -> registry confirmation -> external corroboration. Family relationships signal a join: two persons converging on one ABN or one Facebook page is strong evidence both belong to the same business unit.
A subject is confirmed when at least two independent signals corroborate. Signals include name match (allowing common variants and the registered-vs-trading distinction), location match, role or employer or director match, ABN or ACN match, a distinguishing detail from the seed, and direct self-disclosure in a project-internal source.
Independent means independent chain of evidence, not just two fields. A phone seed that lands on a Facebook business page whose linked LinkedIn handle encodes a name is one signal: phone, page, handle, and assumed name all trace back to one self-published chain. The name in a LinkedIn URL slug, a Facebook page handle, or an Instagram username is whatever the person registered, which may be legal, alias, former, or marketing - not a verified legal name. For sole-trader and small-business subjects this is acute, since the trading face is one person's social account; pull the registry corroboration before treating the social-profile name as the legal name (ABR ABN Lookup keyed to the seed phone or trading name; whois of any associated .com.au domain returns the registrant; equivalents apply in other jurisdictions). A name that conflicts between social handle and registry blocks the dossier rather than appearing as a footnote.
Same-industry collisions are a trap. Two handyman sole traders called John in nearby Brisbane suburbs is precisely the configuration where the social-handle-to-name leap fails: trade overlap reads as corroboration but is just a coincidence of two common names in one industry. When the seed's industry is densely populated with similar names, raise the corroboration bar; an unverified name carried into the dossier propagates through every section and forces a rebuild.
A single signal is not confirmation. Two near-matches in nearby suburbs are two candidates - surface both, do not pick.
Briefing-depth output: multi-page, source-cited, quotation-heavy.
In a single message, dispatch one haiku subagent per applicable outlet. Each subagent reads every relevant page in full (not just metadata), extracts direct quotes wherever the subject's voice is on the record, and returns raw material with URLs rather than a synthesised summary. Sonnet collects all replies and writes the dossier from the merged material. If a return is thin and the gap is closable (a session expired, a search returned none on the first variant), mount a second-round dispatch before drafting.
Image content is part of the read, not metadata around it. For subjects with a small-business Facebook, Instagram, or Google Maps presence, the Photos-tab subagent opens each image and reads it visually: a printed business card, a trade-vehicle decal, signage, a name tag on a uniform, an awards plaque, a captioned school photo, a uniformed group shot. These are primary-source identification artefacts and frequently carry the legal name, registered address, ABN, or named associate the dossier turns on. A Photos-tab pass that only ingests alt-text or filenames will miss the business card sitting at position 17 of 63; the cost of skipping is identifying the wrong person.
Frontmatter is mandatory: subject identifiers (name, role, ABN, etc.), status: dossier, seeded_from, compiled date.
A title image follows the frontmatter, embedded with markdown image syntax referencing a file in the same folder as the dossier. Priority: a face photograph confirmed as the subject; a business card, signage, or trade-vehicle decal bearing the subject's name; another identifying image (uniform name tag, awards plaque, school photo with caption, news photo with caption). For business and family-business subjects the business-card or signage image is often the strongest available, since sole traders rarely post their own face. The image file lives alongside the dossier (downloaded into the same folder), and the dossier inlines it with a relative path so the document is self-contained when read or copied. When no verifiable image of any of those kinds exists, record the absence inline with the search trace and the date - a stock image, generic page banner, or unrelated thumbnail is negative evidence dressed as positive and does not belong at the top of the dossier.
Person dossier sections (single individual):
## 0. Handle
Key-value table of identity facts (legal name, DOB, phone, email(s), trading as, ABN/ACN, postcode or address where on record, known key relationships). Then one paragraph of context: the briefing-equivalent of "if a journalist had 60 seconds, what is this person".
End with a Sources line listing the URLs used in the handle.
## 1. Biography
Residence, family where stated, faith and personal values where evidenced, hobbies, notable life events. Each non-trivial detail cited inline. Where unknown, mark `Finding: gap` and note what would close it.
## 2. Education
Every institution, degree, year, specialisation. Honours and scholarships. Mentors if discoverable. Where unknown, mark `Finding: not established` with the reasoning.
## 3. Career - chronological
Every role with dates and a paragraph on what the role meant in its field at the time. Annotate transitions: who recruited them, why they left, what the pattern reveals.
## 4. Worldview and political leaning
Every public stance on record. Quote directly, at length. Note what they champion, what they criticise, what they avoid commenting on. Flag partisan signals.
## 5. Personality and style
Voice register(s) with sample quotes. Sentence rhythm. Meeting behaviour as evidenced by colleagues. Conflict style. How they treat juniors, peers, adversaries. Humour, ego, patience, risk appetite.
## 6. Social media - full content review
Per platform: cadence, themes, representative quotes. What they author, what they amplify, what they ignore. Cross-platform corroboration: where one platform added detail another missed, where they conflicted, where verification failed.
## 7. Networks and relationships
Named individuals only. Each with a stated relationship mechanism. Connection counts are not evidence.
## 8. Current focus
Priorities and visible action, tied to named projects, funding rounds, strategy documents, recent posts.
## 9. Likely position
On the question that prompted this dossier, given §1-§8. What will land well; what will draw resistance.
## 10. Simulation prompt
A "you are <name>" paragraph in second person packing six to ten of their most telling habits. Useable verbatim by a roleplay agent.
## 11. Sources
Every URL grouped by source type (official bio, interview, social post, press, adversarial coverage, third-party). Flag dead, paywalled, or authenticated links.
Business dossier sections (single trading entity):
## 0. One-paragraph handle
## 1. Legal identity and registry footprint (ABN, ACN, registered name, trading names, GST status, addresses, history of name changes and ABN cancellations)
## 2. Ownership and control (directors, officers, shareholders, partners, beneficial owner, holding-trust layers)
## 3. Related entities (other businesses each principal is associated with, current and prior; pattern interpretation)
## 4. History (founding, location moves, expansions, ownership transitions, rebrands, each transition cited)
## 5. What they do today (services, target customers, scale, specialisations; tone and positioning quoted from their own marketing copy)
## 6. Public footprint (website, Facebook, Instagram, LinkedIn, Google Maps, news; per-platform cadence, voice, customer interaction quality)
## 7. Reputation signals and red flags (court records, regulator action, insolvency notices, customer-protection complaints; each marked [verified] with source or [rumour, unsourced])
## 8. Financial signals where visible (scale from employee count, fleet, premises, advertising, property history, ATO disclosures, tender awards)
## 9. Networks and connections (industry associations, chambers, sponsorships, named associates)
## 10. Outlook and positioning
## 11. Project relationship (every meeting, contract, invoice, message in the named project where the business or its principals appear; with date and outcome)
## 12. Implications for the user's decision
## 13. Sources
Family or principals + business sections (two or more linked persons + one or several shared businesses):
## 0. One-paragraph handle
Covers all principals and their business(es) as one unit; opens with the family relationship and the commercial relationship to the project.
## 1. The principals
One block per person, in order of seniority or relevance to the project. Each block contains a compressed person-dossier (handle, biography, career-relevant detail, worldview if surfaced in the project tree, personality and voice with direct quotes from any project-internal transcripts or correspondence, social-media review, current focus). Voice-capture matters: if the project has a meeting transcript with the principal speaking, quote multi-sentence excerpts that show their hedge words, register switches, and rhythm.
## 2. The business(es)
One block per business. Each block contains the Business sections (legal identity, ownership, related entities, history, services today, public footprint, reputation signals, financial signals).
## 3. Family-business dynamics
Relationships among the principals. Division of roles across the businesses. Succession signals (who is being groomed for what). Decision-making patterns where the project has observed them. Internal tensions if surfaced.
## 4. Project relationship
Every meeting, contract, invoice, message in the named project where the business or its principals appear. Across all principals and all businesses, woven into a single timeline. Each entry: date, who was present, topic, outcome, outstanding items.
## 5. Outlook
What is each principal currently focused on; what is each business positioned for; how is the family unit changing.
## 6. Implications for the user's decision
Risk and reward in plain language. Where evidence is thin, say so.
## 7. Sources
Every URL and project-internal reference, grouped by source type. Flag dead, paywalled, or authenticated links.
Group, panel, committee sections:
## 0. One-paragraph handle
## 1. Institutional context (charter, founding, current authority)
## 2. Membership (one person-block per member, compressed)
## 3. Decision history (concrete decisions with dates, votes if known, dissents)
## 4. Internal dynamics (alliances, factions, named tensions, succession patterns)
## 5. Project relationship
## 6. Implications
## 7. Sources
If the request named a folder, write <folder>/<slug>.dossier.md. Slug: subject's last name, family surname, or business slug, lower-case-hyphenated. Where the surrounding folder has a sibling .seed.md shape established, follow it.
If no folder was named, return the dossier in the conversation. Default to /tmp/<slug>-dossier.md only if length makes inline return awkward, and ask before writing.
These rules drive a dossier to briefing depth without naming a word count. The dossier is finished when the source material is exhausted, not when a section count is reached. A thin source set produces a shorter dossier honestly; a rich set produces a longer one.
[unsourced] and listed as a gap to close.Checked: not found with the queries used and the date when absent. Topics the subject has not spoken on, platforms they do not use, and searches that returned nothing belong on a visible line, not in white space.Checked: not on record when searched and absent.Finding: established, Finding: gap, or Finding: not established to make the resolution status of each section legible to the next reader. A gap is informative; a fabrication is not.[verified] when an independent source corroborates. [unverified] when independent corroboration would be possible but has not been done. [unverifiable] when no public source could plausibly corroborate (private financials, internal staffing claims, claims about prior employer relationships not on public record, self-claims of character or skill). Citing a meeting transcript is not the same as verifying the content of what was said in it; the dossier shows which is which. For briefing-and-simulation dossiers (panel members, public figures, interview subjects whose words are the data), the goal is voice and prediction rather than fact-adjudication, so the tagging is optional, but the source citation remains.[unverified] and moving on. Triangulation steps: list the comparable population (top-performing franchises at the time, named policy authors, comparable industry peers); locate the subject through their public traces (Facebook check-ins and tagged friends, school affiliation, professional-body register, family network); cross-reference whether the subject appears where the claim would put them. The result of the attempt - hit, miss, partial - is the line that goes in the dossier. "Searched the comparable population and the subject's name does not appear" is more useful than [unverified] alone because it shows what was tried and what would close the gap.§N numbers, which to a fresh reader read as pointers to a different dossier. Where evidence given inline can answer a question, repeat it lightly rather than cross-pointer.b***@example.com is a hint, not an address.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub smartlayer/ot --plugin ot