Skill Library

Pipeline State.

Sweep the firm's CRM, wiki, team chat, and document store in parallel to produce a single 'where are we with this company' briefing — relationship timeline, work product trail, open threads, and live chatter. Triggers on 'where are we with,' 'status on,' 'catch me up on,' 'state of play on,' or before any call or meeting.

Sourcing
S.1

Install

Download the bundle, then drop it into your skills directory — typically ~/.opencode/skills/ or the equivalent for your runtime. The skill activates automatically once its description matches the current task.

Download pipeline-state.skillZipped SKILL.md bundle
S.2

Manifest

Compatibility
  • OpenCode
  • Any frontier model that accepts SKILL.md
Tools the skill expects
ReadWebSearchAskUserQuestion
S.3

Why we maintain it

No single system tells the full story of a deal. The CRM knows touches but lags. The wiki holds opinions but isn't always updated. Team chat is the freshest signal but unstructured. The document store has everything written and said but no timeline. This skill fans out across all four in parallel and synthesizes one briefing, so anyone walking into a meeting on a deal they haven't owned can be current in 90 seconds — without four browser tabs, four searches, and three guesses. Tool-agnostic: map the firm's actual stack into the configuration block at the top, then activate.

S.4

SKILL.md

The full skill body, exactly as the host runtime loads it. This is the source of truth — the download is the same content packaged as a standard bundle.


name: pipeline-state description: > Produce a fast "where are we with this company" briefing by sweeping the firm's CRM, knowledge base, team chat, and document/knowledge store in parallel. Use when the user wants caught up on a company's relationship and process state — not specific facts. Triggers: "where are we with [company]", "status on [company]", "catch me up on [company]", "latest with [company]", "get me up to speed on", "where do we stand with", "what have we done on", "state of play on", "rundown on", "refresh me on", "history with [company]", "where is [company] at". Also trigger before calls or meetings when the user wants a cross-system orientation. Do NOT use for specific factual questions about a company (financials, tech, team, market, sector) — that is a research query. Do NOT use for data room inventories. Do NOT use for memo writing. Relationship and process state only.

Pipeline State — Cross-System Company Status Sweep

Produce a fast, decision-grade snapshot of where the firm stands with a company by sweeping the firm's internal systems in parallel. The output is a status briefing, not a deep dive.

This skill exists because no single system tells the full story. The CRM knows the touch history. The knowledge base / wiki holds the deal-team's own opinions and saved external content. The team chat holds real-time, unfiltered discussion. The document/knowledge store holds everything written and said (memos, transcripts, decks, working materials). Together they answer "where are we at." Individually they don't.

Configure Before Use — Map the Firm's Stack

This skill is tool-agnostic. Before activating, fill in which products the firm actually uses for each role. Common examples in parentheses — pick the firm's real tools.

  • CRM — touchpoint history, contacts, lists, notes, calls, emails, meetings. (Examples: Attio, Affinity, Salesforce, HubSpot, Copper.)
  • Knowledge base / wiki — deal-team's own opinions on companies AND saved external articles. Keep these two roles distinct. (Examples: Notion, Coda, Confluence, Slab, internal SharePoint sites.)
  • Team chat — real-time team discussion; often the freshest signal. (Examples: Slack, Microsoft Teams, Discord.)
  • Document / knowledge store — memos, call transcripts, decks, IC materials, diligence files; often searched via a RAG layer. (Examples: SharePoint, Google Drive, Box, Dropbox, a custom RAG over any of the above, Glean, Hebbia.)

Once mapped, substitute the firm's real tool names everywhere this skill says CRM / knowledge base / team chat / document store.

Routing — When NOT to Use This Skill

  • Specific factual questions about a company ("what's their revenue model," "who's the CEO," "what's their tech stack," "who are their investors") → a research / RAG query. This skill is for state, not substance.
  • Data room inventory → a dedicated data-room skill.
  • Memo writing (PMB, ICB, ICM, equivalent) → the firm's memo-writing skill.
  • Sector or thematic research → a research skill.
  • Multi-company roster / list pulls → CRM export.

If the user wants to know facts about the company, route away from this skill even if they phrased it with "what do we know." The trigger is relationship and process state, not company knowledge.

Inputs

  • Company name (required). If ambiguous (e.g., "Apex" could mean several companies), ask once before fanning out.
  • That's it. Don't ask for anything else. Infer the rest from system queries.

Process

Run the four sweeps in parallel wherever the tool runtime allows. This is a speed-first workflow — the user is waiting and wants a single briefing, not four sequential reports.

Step 1 — Fan out four queries simultaneously

1a. CRM sweep

Goal: last/first touch, recent activity, owner, list memberships. Do not overindex on the status field — most firms are not disciplined about updating it. Treat status as a hint, not ground truth. Last email and last calendar interaction are the real signals.

What to query (use whatever the firm's CRM exposes):

  • Find the company record by name.
  • Pull list / pipeline / stage memberships (universe, targeted, reconnect, passed, portfolio, or whatever the firm uses). Report them literally — "in Targeted list" — not as inferred status.
  • Pull recent notes attached to the company (most recent 2–3).
  • Pull the most recent inbound/outbound emails (latest 3–5; capture sender, date, subject).
  • Pull recent and upcoming meetings (date, attendees, title).
  • Pull any call recordings tied to the company (date, participants).

What to extract:

  • Owner (who runs this deal at the firm)
  • List memberships (status proxy — read literally)
  • First touch date (oldest interaction — email, meeting, or note)
  • Last touch date (most recent interaction — email, calendar, note, call)
  • Last meeting (date, who was there, what was it)
  • Upcoming meetings (any scheduled)
  • Recent notes (most recent 2–3, by date)

1b. Knowledge base / wiki sweep

Goal: check the firm's wiki for the company and read what's there. Read-only — do not write, add, or modify anything.

Most firms maintain two distinct kinds of records in their wiki. Do not conflate them:

  1. Firm's own pipeline / opinion page — where the firm stores its own company opinions and the work it has done (thesis notes, diligence observations, scores, internal assessments). This is our work and our view. Not every company has one, but when one exists it is a primary internal signal.
  2. Saved articles / external content — where the team saves external articles or third-party content about a company or related theme. These are not the firm's own work — they're external content someone thought worth saving.

The critical discipline: a saved external article is not a firm view. Never report a saved article as if it were the firm's own assessment, and never blend the two into one undifferentiated "wiki finding."

What to extract:

  • Firm pipeline page — exists? Yes/no. If no, note it and move on. If yes: last updated date, key fields (sector, sub-sector, status, score, owner, any custom fields), and page body content (thesis notes, diligence checklist progress, observations).
  • Saved external content — any items? Yes/no. If yes, capture each item's title/source, date saved, and a one-line note on what it covers. Flag clearly that these are saved external articles, not firm work.

If neither exists, say so plainly. Don't fabricate a page and don't suggest creating one unless the user asks.

1c. Team chat sweep

Goal: surface real-time team chatter — who's been talking about the company, in which channels, and whether there's a live thread worth knowing about. Team chat is often the freshest signal of all; teams react to news and intros here before it ever lands in the CRM or a memo. Read-only — never post, reply, schedule, or draft anything.

What to query:

  • Primary search across all channels for the company name, sorted by timestamp.
  • Optionally narrow to a known deal channel if the first pass is noisy.
  • If a hit is clearly material and sits on a thread, follow the thread (parent + replies).
  • Cap at 1–2 searches plus at most one thread read. This is a sweep, not an audit.

What to extract:

  • Most recent mention (date, author, channel) — strong last-touch candidate.
  • Who's been discussing it (which people, which channels).
  • Any live thread (date, channel, gist of the discussion).
  • Notable links or shared materials (articles, decks, partnership news the team flagged).

If team chat returns nothing, one line: "No team chat mentions found." Move on.

1d. Document / knowledge store sweep

Goal: surface memos, call transcripts, presentations, IC materials, and working files the firm has generated. This is the only system that sees everything written and said.

Use the firm's standard query layer over the document store (whatever the firm's RAG, search, or query skill is) — don't re-implement endpoint, auth, or query construction here.

Query construction: Send a single, focused query that asks for the work product trail, not company facts. Example wording:

"What memos, call notes, IC materials, presentations, or working documents do we have on [Company Name]? Summarize what work the team has done on this deal and when."

If the company has a common name, disambiguate (e.g., "Apex Space (launch vehicles)" not "Apex").

Do NOT run a deep dive from this skill — that's a different workflow. One focused query is the default. A subsequent run or two is fine to add color — e.g., to clarify what a specific memo concluded, pin down a transcript date, or chase one thread the first pass left fuzzy. Cap at three calls. The user is waiting; this is a sweep, not a deep dive. Don't recurse past three calls chasing completeness.

What to extract:

  • Memos written (type — PMB/ICB/ICM/other — date, author if available)
  • Call transcripts (date, who from the firm, who from the company)
  • Decks or presentations they sent us, or we built
  • Diligence materials in the deal folder
  • Last work product date (most recent file or memo)

Step 2 — Synthesize a single briefing

Once all four sweeps return, compose one briefing in the output format below. Do not deliver four separate reports. The whole point is unified state.

Resolve conflicts: if the CRM's "last touch" is Sept 12 but the document store shows a call transcript from Oct 3, the document store wins — the CRM may not have captured the meeting. Likewise, a team-chat message can be the freshest signal of all, since teams chat in real time before anything hits the CRM or a memo. Always cross-check dates across all four systems and report the most recent as the true last touch.

If something contradicts or is unclear, say so briefly — don't paper over gaps.

Step 3 — Speed discipline

  • Target end-to-end runtime: under 90 seconds where possible. Parallelize aggressively.
  • Don't pull more notes/emails/transcripts/chat hits than you need — most recent 3–5 each is enough.
  • Don't recursively chase every reference. State + work product trail, then stop.
  • If a system returns nothing, say so in one line and move on. Don't retry endlessly.

Output Format

Deliver a single briefing with this structure. Keep it tight — this is a status update, not a memo.

# [Company Name] — Where We Stand

**Owner:** [Firm deal lead]
**List(s) / Status:** [CRM list memberships, literal — e.g., "Targeted, AI & Semiconductors"]
**First touch:** [Date — earliest evidence of contact]
**Last touch:** [Date — most recent interaction across all systems, incl. team chat]
**Firm pipeline page (wiki):** [Yes / No, last updated date if yes]
**Saved external articles (wiki):** [Yes / No, count if yes]

## Relationship Timeline
- [Date] — [What happened: intro, first call, follow-up, deck received, chat flag, etc.]
- [Date] — [Next material event]
- [Date] — [Most recent material event]

## Work Product
- [Memo type — date — brief note on what it covers]
- [Call transcript — date — participants]
- [Deck / materials — date — source]
- [Other diligence work — date]

## Team Chatter
- [Date — channel — author — gist of what was said or shared. Skip this section entirely if
  no chat mentions exist.]

## Open Threads / Where the Ball Is
- [What's pending — e.g., "Awaiting financials," "Follow-up call scheduled for X," "No
  outbound since [date]"]
- [Who owes whom what]

## Firm Pipeline Page (if exists)
- [2–4 bullet points pulling the most decision-relevant content from the firm pipeline page —
  our own thesis notes, diligence, score, observations. Skip this section entirely if no
  pipeline page exists.]

## Saved External Articles (if any)
- [Title/source — date saved — one line on what it covers. These are saved external articles,
  NOT the firm's own work — label them as such. Skip this section entirely if nothing is
  saved.]

## Gaps / Inconsistencies
- [Anything that didn't line up across systems, or anything obviously missing — e.g., "No
  call transcripts in the document store despite CRM showing two meetings." Skip if nothing
  notable.]

If a section has nothing to report (e.g., no upcoming meetings, no chat mentions), omit it rather than including an empty bullet. Don't pad.

Tone

  • Direct. No hedging, no CYA.
  • Past-tense, factual reporting.
  • Negative findings are fine and welcome — "We haven't touched this company in 7 months" is a useful sentence.
  • No "let me know if you'd like me to dig deeper" closers.

Error Handling

  • Company not found in CRM: Report it plainly. Still run the wiki, team chat, and document store sweeps — sometimes a company has work product or chatter before a CRM record.
  • No firm pipeline page: One line: "No firm pipeline page found." Note separately whether any saved external articles exist. Move on.
  • No team chat mentions: One line: "No team chat mentions found." Move on.
  • Document store returns nothing: One line acknowledging it, then deliver what the other systems showed. Don't fabricate.
  • Ambiguous company name: Ask once before fanning out. Better one clarifying question than four sweeps on the wrong entity.
  • One system errors out: Deliver the briefing with the others and flag the gap explicitly at the top of the output ("CRM sweep failed — relationship timeline below is based on wiki, team chat, and document store only").

Notes

  • Read-only across the board. This skill never writes to any system. No notes added, no pages updated, no chat messages or drafts, no records modified.
  • Status fields are unreliable. Don't anchor on CRM or wiki status fields. Use them as hints, not source of truth. Last interaction date is the real signal.
  • Team chat is often the freshest signal. Real-time chatter frequently predates the CRM and memos. Weight a recent chat mention heavily when resolving last touch.
  • Parallel by default. The four sweeps are independent — fire them concurrently.
  • Cap document-store calls at three. One focused query by default; a follow-up run or two is fine to add color, but stop at three. This is not a deep dive.
  • Output is briefing, not memo. If the user wants a memo afterward, they'll ask — route to the firm's memo-writing skill at that point.