{"id":73065,"plugin_id":"plugin_asdk_app_6ac60755990481918de6a1f3b22dcf8e","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T01:17:21.092Z","digest":"eee3793ca267a7c23b911a3292e76f1aea80268386382e67f65d5c46220a811a","against":null,"payload":{"description":"Shared subroutine that loads the Breakthrough context behind a request — resolves which contacts, companies, and recorded calls are in scope, then retrieves the relevant sales playbook sections. The answering skill runs this first, so it is not selected on its own; invoke it directly only to preload everything known about an account before a working session.","included_files":[],"name":"gather-context","skill_md_contents":"---\nname: gather-context\ndescription: >-\n  Shared subroutine that loads the Breakthrough context behind a request — resolves\n  which contacts, companies, and recorded calls are in scope, then retrieves the\n  relevant sales playbook sections. The answering skill runs this\n  first, so it is not selected on its own; invoke it directly only to preload\n  everything known about an account before a working session.\ndisable-model-invocation: true\n---\n\n# Gather Breakthrough context\n\nThe prelude the answering skill runs before it produces anything:\nresolve the entities in scope, then pull the evidence and playbook behind them.\n\nRead `${CLAUDE_PLUGIN_ROOT}/references/context-assembly.md` for the voice, length, and\nweb-search rules that come with this context. Read\n`${CLAUDE_PLUGIN_ROOT}/references/mcp-tools.md` for argument details.\n\n## Sequence\n\n**1. Confirm scope.** Call `whoami`. If `license_id` is missing, stop — the session is\nnot authenticated and every other tool will return `skipped`. Tell the user to\nauthenticate rather than reporting an empty result.\n\n**2. Resolve.** Call `resolve_prompt_context` with the user's message **verbatim**. Do\nnot summarize or extract keywords first; the tool does its own signal extraction and\npre-digesting destroys what it keys on.\n\nThe response carries a `recommendations` array generated from real counts against this\norg's data. **Follow it unless you have a specific reason not to.** It knows\nwhat exists in scope; the prompt text does not.\n\n**If the response says `clarification_needed: true`, stop and ask.** (When the map lists\n`ambiguous_names` without that flag, the request's target resolved elsewhere: proceed with\nit and do not pick one of the listed people.) A first name that\nmatches several people (\"Ben\", \"Andre\", \"Marco\") is a question for the user, not a\nguess for you. The flag already accounts for shared history: when only one candidate\nhas calls on record the map resolves them and does not set the flag, so if you are\nseeing it, history did not settle it either. Reply with the\ncandidates from `ambiguous_names` (name, company, calls on record) and nothing else; do\nnot resolve, draft, or answer until the user says which person they mean. The native\napp never has to guess here because the user attached the record; asking is how this\nsurface gets the same certainty.\n\n**3. Detail.** For entities the map surfaced, call `contact_profile` and\n`business_profile`. Each returns the entity notes and `recent_calls`: that person's or\ncompany's calls, newest first, with `tags`. When the request is about their past calls\n(\"from my calls with Ben, what does he care about\"), the notes are the starting point,\nnot the answer: read the calls — `format=\"summary\"` for each (up to 3 in full).\n\n**Sales methodology.** The scorecard belongs to the company. `business_profile` shows it\nas a `sales_methodology` field. When the request is about a deal (what\nto do next, gaps, call prep, strategy, where it stands) and it is present, call\n`sales_methodology` with the `business_id`, then read\n`${CLAUDE_PLUGIN_ROOT}/references/sales-coaching.md` before answering. For a deal with a\nperson, `contact_profile` shows `company.sales_methodology`; use `company.id` as `business_id`. Skip it for\ndrafting and for notes from a call unless the user asks.\n\n**After a clarifying question.** If you asked which person or company and the user\nanswered with a name, run `resolve_prompt_context` on that name before continuing. The\nclarified map carries the CALLS ON RECORD step that the ambiguous one could not.\n\n**4. Evidence.** Pull transcripts with `search_transcripts`,\n`contact_transcripts_list`, or `call_transcript_conversation`. Use `format=\"summary\"`\nwhen scanning several calls — pulling multiple transcripts at `format=\"full\"` buries the\nquestion in raw text. The rule: up to 3 calls, open them in full; more than 3, open each as\n`format=\"summary\"` (its thematic summary) and go back to `format=\"full\"` only for the one\ncall an exact quote or number must come from. The app carries full transcripts up to 5,\nbut everything you open stays in your context for the whole conversation, so the\nplugin's ceiling is lower on purpose. Use `format=\"full\"` for a single deep dive, and when the request\nturns on what was said on one call (a summary of it, notes from it, a follow-up to it,\na thank-you for it), open that call — the native app hands the whole transcript to the\nmodel, and answering from the stored notes instead is the gap. A long transcript comes\nback in parts: the response carries `parts` and `next_part`; keep calling with the next\n`part` until `next_part` is null before you summarize or extract anything from it.\nWhen a resolved person has calls on record, the map's **CALLS ON RECORD** recommendation\nnames the exact next step; follow it whenever the request is about a call with them.\n\n**5. Playbook.** Call `sales_playbook` with the user's current message and the\nconversation so far.\n\n## When to stop early\n\nSteps 3 and 4 are conditional on step 2. A request with no entity signal — \"what's a\ngood subject line pattern?\" — has no contact, business, or call to resolve, so skip\nthose rather than firing lookups that come back empty. Retrieving nothing and retrieving\nnothing *useful* look the same in the output but cost the user latency.\n\n**Step 5 is not conditional.** The playbook is org-level guidance, so it is exactly\nwhat a question with no entity signal needs — \"what's a good subject line pattern?\" is\nanswered by this org's playbook, not by a generic one. Skip `sales_playbook` only when\nthe request turns on no guidance at all: a bare record lookup, or reading back what was\nsaid on a call.\n\n## Reporting\n\nState what you actually found: which contacts and businesses resolved, which calls you\nread, whether the playbook returned relevant sections. If a name in the request resolved\nto nothing, say so explicitly — a draft built on an unresolved contact is a draft about\nsomeone the user may not have meant.\n\nNever assert a fact about a contact or business that no retrieved source supports.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}