dossier
Skill1 starsChanged 33 days agoMITView on GitHub
Use when working in a repository that holds a dossier.yaml, or when a task concerns a client, counterpart, prospect, partner or recruiter, such as preparing or debriefing a call, writing a mail, message or document for someone outside the team, filing a transcript, mail or brochure that arrived, checking or correcting a fact about the relationship, or answering where the deal stands. Load it before reading or changing anything in such a repository, including when the user only asks to fix a typo in a transcript.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- yuanhaorannnnnn/agent-skillstheir own version, first seen Nov 1, 2026
- koffih/claude-skill-dossiertheir own version, first seen Nov 1, 2026
- eins78/agent-skillstheir own version, first seen Oct 30, 2026
- JohnnyMcGee/claude-skillstheir own version, first seen Oct 17, 2026
- pnp/sharepoint-skillstheir own version, first seen Aug 24, 2026
- Hassaan146/claude-skillstheir own version, first seen Jul 25, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- pnp/sharepoint-skills★ 142same name
- Hassaan146/claude-skills★ 18same name
- eins78/agent-skills★ 2same name
- Hussain-Elfalah/Agentic-Skills★ 2same name
- mahiunfiltered/claude-code-skills★ 1same name
- dacrypt/tesla-claude-plugin★ 0same name
- JohnnyMcGee/claude-skills★ 0same name
- koffih/claude-skill-dossier★ 0same name
- stefanhoth/dossier★ 0same name
- yuanhaorannnnnn/agent-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- dossier-callSkill
- dossier-draftSkill
- dossier-ingestSkill
- dossier-initSkill
- dossier-statusSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Look for the nearest dossier.yaml in the working directory or a parent (the search goes upward and does not stop at a .git folder, like the …
- Very specific: line 20
If there is none, say so in one line, suggest dossier-init when the task concerns a relationship worth tracking, then continue with the …
- Very specific: line 74
Write Name (Organisation) on the first mention of a person in a file.
- Very specific: line 105
Every file in outbound/ opens with a status block, in the file's own comment syntax (<!-- --> in Markdown and HTML, # lines in plain text):
- Distinctive: line 118
Never mark a draft as sent or reviewed: a human sends it and edits the status line.
- Very specific: line 135
Leave a .claude/ folder in a subfolder (the symptom of an agent launched from the wrong directory).
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
dossier
A client dossier is a git repository that holds the memory of a relationship with an external party. This skill is its protocol: it is loaded first, and every rule below applies on every harness, with or without hooks. Hooks in Claude Code only remind and catch likely shortcuts; the rules in this file are the real boundary.
Find the dossier first
Look for the nearest dossier.yaml in the working directory or a parent (the search goes
upward and does not stop at a .git folder, like the linter and the hooks). When a repository
holds several dossiers, the nearest one wins; read nothing from and write nothing to a dossier
above or beside it.
If there is none, say so in one line, suggest dossier-init when the task concerns a
relationship worth tracking, then continue with the user's task. This skill never blocks work
outside a dossier. The task skills stop when no dossier is found; this one only steps aside.
Layout
Folder and file names are fixed English names, never translated or remapped.
dossier.yaml: configuration (language, counterparts, confidential names, consent).sources/: immutable.received/,transcripts/withraw/, text extractions next to PDFs.dossier/: the seven living files.ACTORS.md: who is who on every side, role, decision power, expectations.HISTORY.md: dated chronology, commitments in progress (ours, theirs), upcoming deadlines.LEARNINGS.md: what the exchanges teach about the counterpart.TONE.md: the voice, and the log of every reviewer comment on a draft.CHANNELS.md: how we communicate, addresses, call habits, confidentiality level.OPEN-QUESTIONS.md: answered, still open on their side, what we would ask the end client.RELATIONSHIP.md: status, metrics, our view, their view (reconstructed), opportunities.
knowledge/:CONTEXT.md(the one-page context),DOCTRINE.md(what we say and never say),decisions/,watch/.outbound/: everything addressed to the counterpart:deliverables/,mails/,calls/. Files are namedYYYY-MM-DD_slug.
Read before acting, update before handing back
| Task | Read first | Update before handing back |
| Any session | knowledge/CONTEXT.md, dossier/HISTORY.md | nothing, unless something was learned |
| Write a message or a document for the counterpart | dossier/TONE.md, dossier/LEARNINGS.md, knowledge/DOCTRINE.md, knowledge/decisions/ | dossier/HISTORY.md (commitment taken, date), dossier/TONE.md if a human gave feedback |
| Prepare a call | dossier/OPEN-QUESTIONS.md, previous files in outbound/calls/ | a call file in outbound/calls/ with objectives, agenda, what we do not do |
| Debrief a call | the transcript in sources/transcripts/ | HISTORY.md, OPEN-QUESTIONS.md, LEARNINGS.md, ACTORS.md, CHANNELS.md, RELATIONSHIP.md at a milestone |
| Check a fact | sources/ | the line that was wrong |
| Ingest a source | nothing | sources/ (file plus text extraction), then every living file the source touches |
"Before handing back" means in the same session, before its final message. Update the living
files the work touched, or state in one sentence why none needed it. In Claude Code a stop check
blocks the first stop of a turn when outbound/ or sources/ changed and dossier/ did not;
the rule is the same without that check, and you apply it yourself.
Writing a fact
- <fact, one sentence, absolute dates> (<source>, <locator>).- Source examples:
call @12:34,mail 2026-09-16 from Jane,brochure p. 4,internal note p. 15. A fact line ends with one parenthesised source; that is the shape the linter reads. - One fact per line. Dates are absolute: convert "tomorrow" before writing.
- A line whose source is a reconstruction (their view as we reconstruct it) says "reconstructed". A line without a source is an opinion and says so.
- Each living file keeps its
Last updated:line current: an absolute date, then after which event (for exampleLast updated: 2026-09-16, after the kickoff call). - A quote from a transcript is checked in context before it is reused.
- A contradicted line is corrected in place, not duplicated; append
(corrects a line dated <date>). - Write
Name (Organisation)on the first mention of a person in a file.
When a source is wrong
Nothing under sources/ is ever modified or corrected, even when a transcript is plainly wrong
and even when the user asks for it. The rule covers every route: Write, Edit, sed -i or any
script, mv, rm, cp over a file, a redirection, retyping a file. New sources are copied in
unchanged, never written or retyped. In Claude Code a guard denies the obvious shortcuts, but it
is a heuristic that reads the command text; a command it fails to recognise is still forbidden.
It does not see eval, interpreters (python3 -c and the like), command substitutions, variables or
loops, so this file stays the boundary: never modify a source by any route, seen or not by the guard.
Common rationalizations, all answered the same way: "the user asked me to fix it" (observed at the baseline), "it is one character", "they are forwarding it in five minutes", "I will tell them afterwards" (these three are anticipated, not observed). The user's request is met by the filed correction, not by editing the source. Do not offer to override the rule; offer the corrected fact.
What to do instead:
- Quote the source as it is, in the line itself.
- File one dated, sourced correction line in the living file where the fact belongs.
- Tell the user what you filed and where, and that the source stays as received.
Worked example, a transcript that misheard an amount:
- Mark Lee (Northwind) set the budget at 12,000 euros on 2026-03-04; the transcript reads "twelve million" (call 2026-03-04 @21:07).Outbound status header
Every file in outbound/ opens with a status block, in the file's own comment syntax (<!-- -->
in Markdown and HTML, # lines in plain text):
Status: draft | reviewed by <name> | sent <date time> by <name>
To: <recipient>
Subject: <subject> (mails)
Deadline: YYYY-MM-DD (optional)
Written by: <human or "agent session, YYYY-MM-DD">
Rules: no confidential names; see knowledge/DOCTRINE.mdsent needs a date and a sender. Deadline: is an absolute date. A new draft is draft.
Never mark a draft as sent or reviewed: a human sends it and edits the status line.
Language
Dossier content (living files, outbound drafts, knowledge) is written in the language set by the
language key of dossier.yaml. Paths are fixed English names.
Protocol keywords stay in English: Last updated:, the status header field names and the
status values (draft, reviewed by, sent). Headings, examples and content follow the
dossier's language.
Never
- Send a message or a document. Drafts go to
outbound/with a status header; humans send. - Modify anything in
sources/. - Name a confidential party (the
confidential_namesofdossier.yaml) underoutbound/, unlessconsent_recorded: trueis set andconsent_sourceis filled in. - Promise what
knowledge/DOCTRINE.mdforbids; the doctrine is read before writing to the counterpart. - Leave a
.claude/folder in a subfolder (the symptom of an agent launched from the wrong directory).
Checking the shape
From the dossier, run python3 "${CLAUDE_PLUGIN_ROOT}/scripts/lint.py" to check the mechanical
rules (fact lines, status headers, confidential names). If that script is not available (a
bare-skills install has no scripts), say so and apply the rules above by reading the files.
Other skills
dossier-init starts a dossier in this repository or completes a scaffold that already exists.
dossier-ingest files a source that arrived (a transcript, mail, brochure, PDF or link) under
sources/ and turns it into dated, sourced lines in the living files.
dossier-draft writes every draft addressed to the counterpart (a mail, a message, a deliverable or a
note) under outbound/, has it reviewed by doctrine-reviewer and records the commitment in
history; every draft goes through it.
dossier-call prepares a call (a file in outbound/calls/ with what we want to obtain, a timed
agenda, what we do not do and the open questions to ask) and debriefs it from its transcript; every
call preparation and every debrief goes through it.
dossier-status answers where the deal stands, read-only: the one-line status, the commitments due,
the overdue drafts, the sources not yet reflected, the stale living files and the lint findings.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

