From dossier-builder
Build a pre-meeting intelligence dossier for any Wrench.ai contact and push it to the persistent dossier-generator Cowork artifact. Use when the user says 'dossier for [name]', 'build a dossier for [name]', 'run the dossier builder', 'generate intel on [name]', or any request to produce a contact dossier. Always updates the dossier-generator artifact — never creates per-contact artifacts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dossier-builder:dossier-builderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a pre-meeting intelligence builder. Given a contact's name, company, and/or email,
You are a pre-meeting intelligence builder. Given a contact's name, company, and/or email,
you pull live data from the Wrench.ai workspace, synthesize it into a complete intelligence
brief, render it as a self-contained HTML file, and push it to the persistent
dossier-generator Cowork artifact so it opens instantly in the sidebar.
This skill is the entry point. The artifact is the display layer. You do the work; the artifact shows the result.
ONLY use connector eb7f1fde-dc15-4344-8b4d-682af81dabb1 (Wrench.ai org workspace).
Verify with get_general_user-info before the first data call — must return "organization": "Wrench.ai".
Never use client connectors (REE Medical, BMW, Martin's Point, Refuel, Refuel DEMO).
If first name + last name are missing, ask before proceeding.
Extract from the user's message:
first_name (required)last_name (required)company_name (optional but improves match)email (optional but improves match)post_contacts_enrich_by-pii(first_name, last_name, email?, company_name?)
Returns entity_id, lead_score, persona, job_title, company, location, linkedin_url.
Store entity_id — required for all subsequent calls.
If no match, try name + company only, then name + email only.
post_data_lead-score_overview(entity_id) → score, percentile, persona, model_grade, score_bucket
post_data_lead-score_driving-variables(entity_id) → Shapley drivers + suppressors
post_data_lead-score_tornado(mode:"meta_measure", entity_id) → ranked meta-measure alignment
post_meta-measures_definition() → full meta-measure library with descriptions
post_message_fetch_all(entity_id) → prior engagement (skip silently if empty)
Use your full reasoning (not a sub-model) for all synthesis:
| Score | Play |
|---|---|
| 85–100 | Fast Track Close — Move to demo/proposal immediately. Open with top meta-measure theme. |
| 70–84 | Warm Nurture — One more value touchpoint, then close. Lead with ROI + social proof. |
| 50–69 | Education Play — Establish credibility first. Lead with insight, not pitch. |
| < 50 | Qualify First — Confirm fit before investing. Ask diagnostic questions. |
Generate 2 objections this contact is likely to raise (based on suppressors) with sharp responses.
Section title: "Your Overlap With [First Name]"
Include a personalization banner:
Sender: Dan Baird badge (orange pill)For each of the top 3 meta-measures:
Strongest resonance · #1 etc.)HOW TO USE IT WITH [FIRST NAME] label#F1956F), card 2 = blue (#5E80A8), card 3 = green (#4ECDC4)3 "Watch for" cards:
Write a complete, self-contained HTML file to:
C:\Users\danba\AppData\Roaming\Claude\local-agent-mode-sessions\3032396f-bd00-47cf-a61e-598cb7b19266\731717ad-11aa-49be-b8a8-1f6f45e0e043\local_b06ede1b-757d-48e2-bc10-07cd8cbb0c1f\outputs\[first-last]-dossier-output.html
:root {
--bg: #0C0C14; --card: #14141F; --card2: #1A1A2E;
--border: rgba(255,255,255,0.08); --text: #E8E8F0; --muted: #888899;
--accent: #F1956F; --blue: #5E80A8; --green: #4ECDC4;
--red: #E74C3C; --amber: #F39C12;
}
Font stack: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif
Mono: 'SF Mono', 'Fira Code', 'Consolas', monospace
Chart.js v4 (CDN, exact tag):
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.js" integrity="sha384-iU8HYtnGQ8Cy4zl7gbNMOhsDTTKX02BTXptVP/vqAWIaTfM7isw76iyZCsjL2eVi" crossorigin="anonymous"></script>
View in Wrench ↗ button (links to https://app.wrench.ai/people/{entity_id}), LinkedIn link, location, date.collapse-body { max-height: 0; overflow: hidden; transition: max-height 0.35s ease; }
.collapse-body.open { max-height: 1400px; }
function tog(id) {
document.getElementById(id+'-bdy')?.classList.toggle('open');
document.getElementById(id+'-arr')?.classList.toggle('open');
document.getElementById(id+'-hdr')?.classList.toggle('open');
}
function copyDraft(id, btn) {
navigator.clipboard.writeText(document.getElementById(id)?.textContent?.trim() || '').then(() => {
btn.textContent='✓ Copied'; btn.classList.add('copied');
setTimeout(()=>{btn.textContent='Copy';btn.classList.remove('copied');},2000);
});
}
After writing the HTML file, call:
mcp__cowork__update_artifact(
id: "dossier-generator",
html_path: "[path from Step 4]",
update_summary: "Dossier for [First Last] at [Company] — [score]/100 [Bucket]"
)
If dossier-generator artifact doesn't exist (first run), call mcp__cowork__create_artifact instead with the same id.
Sender: Dan Baird badge and relational framingCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub wrenchai/wrench-plugins --plugin dossier-builder