Account vault
Skill tga-cheetung/account-intelligence-vault/.claude/skills/account-vault
One markdown file per target account. Agents read it before every score, email, and call. Every signal compounds. Public Claude Code skill + heartbeat + per-account schema that mirrors your CRM.
npx -y skills add tga-cheetung/account-intelligence-vault --skill account-vaultAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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".
SKILL.md
7.0 KB, as published. Nobody here has run it
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_idfrontmatter 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>.mdalready 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.mdtovault/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/<domain>.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 (seesummary). - 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>.mdline 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_typeagainstvault/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/<domain>.md. Summary marked stale. Run /account-vault summary <domain> 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
## Summaryand the next##heading) with the new bullets. - Remove any
<!-- stale: regenerate -->marker. - Update
last_touched:to today.
list [filter]
- Walk
vault/accounts/*.mdreading 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 invault/people/. - After any write, update
last_touched:in frontmatter.
Configuration
Required environment:
ANTHROPIC_API_KEY— forsummaryanddossier(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'svault/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").