| name | account-vault |
| description | Reads, writes, and summarizes per-account markdown files in a vault. Use when the user asks about a target account, wants a dossier, wants to append a signal, or wants to find accounts by frontmatter filter. Triggers on phrases like "tell me about <domain>", "dossier for <domain>", "/account-vault", "/dossier", "/account-new", "/account-append", "/account-list". |
| argument-hint | <command> <domain> [args] |
account-vault
This skill turns the vault folder into a queryable, agent-writable intelligence layer for the GTM operator's target accounts. Every account is one markdown file at vault/accounts/<domain>.md. The skill knows the schema, the read patterns, and the write protocol from the root CLAUDE.md.
Deploy when
- The user mentions a target account by domain or company name
- The user asks for a dossier, brief, or summary of an account
- The user has a new signal, interaction, meeting note, or research finding to file
- The user wants to find accounts matching criteria ("show me all Series B fintechs in our vault")
What this skill is NOT
- Not the CRM. Stage, owner, and ARR live in the CRM. The
crm_id frontmatter field is the bidirectional link — never re-derive CRM data here.
- Not a free-form notes app. Account-scoped intel only. Send personal notes elsewhere.
STEP 0: Parse the user's input
Expected forms:
/account-vault new <domain> — scaffold a new file
/account-vault dossier <domain> — 5-bullet brief
/account-vault append <domain> <signal_type> "<note>" — append a signal
/account-vault summary <domain> — regenerate the top-of-file summary
/account-vault list [filter] — search by frontmatter
Or natural language: "tell me about acme.com", "what do we know about Acme?", "add to acme.com: they hired a new VP Sales", "show me all tier-A accounts".
Extract:
command (one of: new, dossier, append, summary, list)
domain (root domain — strip protocol, www., trailing slashes)
args (signal_type, note, filter — depending on command)
If the domain is ambiguous (the user said the company name not the domain), search vault/accounts/ for matching frontmatter domain: or filename. If multiple match, ask which one.
STEP 1: Route by command
new <domain>
- Check if
vault/accounts/<domain>.md already exists. If yes, surface the existing file and ask if the user wants to view, append, or overwrite (destructive — never default to overwrite).
- Copy
vault/_templates/account.md to vault/accounts/<domain>.md.
- Fill in
domain:, created: <today>, last_touched: <today> in the frontmatter. Leave the rest blank for the user.
- Surface: "Created vault/accounts/.md. Fill in Firmographics + Open questions when you have them; the rest will populate as you append signals and interactions."
dossier <domain>
- Read
vault/accounts/<domain>.md. If it does not exist, offer to create it (new) and stop.
- Parse the frontmatter and the Summary section. If the Summary section has fewer than 3 bullets or is older than 14 days (compare
last_touched), regenerate it (see summary).
- Read the most recent 3 signals from the Buying signals section.
- Read the most recent 2 interactions from the Interaction log.
- Produce a 5-bullet brief:
- Bullet 1: who they are (firmographics one-liner)
- Bullet 2: most recent signal + its implication
- Bullet 3: most recent interaction + outcome
- Bullet 4: the top open question (if any)
- Bullet 5: the recommended next action (judgment — be concrete)
- Cite the file with a
vault/accounts/<domain>.md line at the bottom so the user can open it.
Total token budget: ~600 tokens out. Brief means brief.
append <domain> <signal_type> "<note>"
-
Read vault/accounts/<domain>.md. If it does not exist, offer to create it (new) and stop.
-
Validate signal_type against vault/signals/signal-catalog.md. If unknown, ask the user whether to (a) pick an existing type, or (b) add a new type to the catalog first (do not silently invent new types).
-
Append under the <!-- agent-appendable: signals --> marker, at the top of the section (newest-first), using the schema from the signal catalog:
### <YYYY-MM-DD> — <one-line title derived from the note>
- Signal type: <signal_type>
- Source: <source — ask if not given>
- Confidence: <low | medium | high — ask if not given>
- Implication: <one sentence — generate from the note>
-
Update last_touched: in frontmatter to today.
-
Mark the Summary section stale (add a comment <!-- stale: regenerate --> near the marker). Do NOT auto-regenerate the summary on every append — too expensive. Regenerate on demand or once per week via heartbeat.
-
Confirm: "Appended <signal_type> signal to vault/accounts/.md. Summary marked stale. Run /account-vault summary to refresh."
summary <domain>
- Read the entire file.
- Generate a 5-bullet summary that covers:
- Firmographics one-liner (industry + size + stage)
- Most recent material signal + implication
- Most recent interaction + outcome
- Tech stack and most relevant adjacent products
- The top open question or the recommended next action
- Replace the body of the Summary section (between
## Summary and the next ## heading) with the new bullets.
- Remove any
<!-- stale: regenerate --> marker.
- Update
last_touched: to today.
list [filter]
- Walk
vault/accounts/*.md reading only the frontmatter (do NOT read full files — keep this cheap).
- If no filter, list all accounts with: filename, tier, status, last_touched, top-tags.
- If filter is given, parse it as
key=value (e.g., tier=A, status=active, tags=fintech). Multi-criteria filters are AND'd. Examples the user might give: list tier=A status=active, list tags=fintech, list last_touched>=2026-05-01.
- Output a sorted table (by last_touched descending).
- Cap the list at 50; if more match, surface the count and ask whether to widen the view.
STEP 2: Maintain the write protocol
Always:
- Write under
<!-- agent-appendable: ... --> markers only. Never touch Firmographics or Open questions sections (those are human-maintained).
- Use ISO dates (
YYYY-MM-DD). Refuse relative dates ("yesterday", "last week") — ask for the date if not given.
- Wikilink contacts as
[[<slug>]] referencing files in vault/people/.
- After any write, update
last_touched: in frontmatter.
Configuration
Required environment:
ANTHROPIC_API_KEY — for summary and dossier (these use the Anthropic SDK via the in-session model, no extra config needed if the user is already running Claude Code)
Optional environment:
VAULT_ROOT — path to the vault. Defaults to the current working directory's vault/ folder if Claude Code was launched at the repo root.
Installation
Drop this file at ~/.claude/skills/account-vault/SKILL.md. Restart Claude Code if needed (or /skills reload). The skill is then available via the /account-vault slash command and via natural language ("tell me about acme.com").