warm-path-workspace
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWarm-Path Deal Workspace
暖路径交易工作区
Turn "here is a company, here are our LinkedIn connections" into one self-contained,
shareable HTML workspace that answers two questions an account team actually has: who
decides, and who do we already know who can get us to them.
Most stakeholder maps stop at the first question. The second is where deals are won, and it
is the part people fake - they draw a line from every connection straight to the buyer, which
makes an intern look as valuable as a VP. This skill scores every route instead, so the
operator spends their scarcest resource (a teammate's willingness to make an ask) on routes
that will actually land.
将“这是一家公司,这是我们的LinkedIn联系人”转化为一个独立、可共享的HTML工作区,解答客户团队真正关心的两个问题:谁做决策,以及我们已经认识谁可以帮我们对接决策者。
大多数利益相关者图谱仅停留在第一个问题上。第二个问题才是促成交易的关键,而这也是人们常敷衍了事的部分——他们会画一条线将每个联系人直接连接到买家,这让实习生看起来和副总裁一样有价值。本技能会为每条路径打分,让操作人员将最稀缺的资源(团队成员愿意提出请求的意愿)用在真正有效的路径上。
What gets built
构建内容
One HTML file, published with the tool, with a tab set per account and an account
switcher on top when there is more than one:
Artifact| Tab | Contents |
|---|---|
| Overview | Account brief, headcount and funding tiles, hiring-signal chart, recent activity |
| Stakeholders | Buying group grouped by deal role; each card opens a drawer with the LinkedIn deep dive, priorities, talking points, objections, a copy-ready opener, notable posts, career timeline - every claim behind an evidence dropdown |
| Relationship Map | YOU → warm connection → named intermediary → decision maker, colour and thickness weighted by route strength, plus a ranked chain list |
| Signals | Hiring surges, job changes, intent posts, funding, newest first |
| Plays | 3-6 prioritized moves, each citing the signal or path behind it |
通过工具发布一个HTML文件,每个客户对应一个标签页;当有多个客户时,顶部会显示客户切换器:
Artifact| 标签页 | 内容 |
|---|---|
| 概览 | 客户简报、员工人数和融资信息卡片、招聘信号图表、近期动态 |
| 利益相关者 | 按交易角色分组的采购组;每个卡片可展开抽屉,展示LinkedIn深度分析、优先级、沟通要点、异议、可直接复制的开场白、重要帖子、职业 timeline ——每项结论都附带证据下拉框 |
| 关系图谱 | 您 → 暖联系人 → 指定中间人 → 决策者,路线的颜色和粗细按路径强度加权,同时附带排名链路列表 |
| 信号 | 招聘激增、职位变动、意向帖子、融资信息,按时间倒序排列 |
| 行动方案 | 3-6个优先级行动,每个行动都引用背后的信号或路径 |
Inputs
输入项
Ask only for what is missing.
| Input | Required | Default |
|---|---|---|
| Target account(s) | yes | - |
| LinkedIn connection export(s) | no, but the point of the skill | skip warm paths, say so |
| Seller company + one-line product | no | infer from context |
| Deal stage | no | "Prospecting" |
| Depth | no | 6-8 stakeholders per account |
Exports arrive as a bare , an unzipped folder,
or the raw . All three work. When the export contains the owner's name is
read from it automatically - do not ask the user who each file belongs to when the file
already says. Confirm the detected names back to them, because attributing a connection to the
wrong teammate sends the intro request to the wrong person.
Connections.csvBasic_LinkedInDataExport_*.zipProfile.csv仅询问缺失的信息。
| 输入项 | 是否必填 | 默认值 |
|---|---|---|
| 目标客户 | 是 | - |
| LinkedIn联系人导出文件 | 否,但为技能核心功能 | 跳过暖路径,并告知用户 |
| 销售方公司 + 一句话产品介绍 | 否 | 从上下文推断 |
| 交易阶段 | 否 | "潜在客户开发" |
| 深度 | 否 | 每个客户6-8名利益相关者 |
导出文件可以是单独的、解压后的文件夹,或原始文件。这三种格式均支持。当导出文件包含时,会自动从中读取所有者姓名——当文件已包含相关信息时,无需询问用户每个文件属于谁。将检测到的姓名回传给用户确认,因为将联系人归属到错误的团队成员会导致引荐请求发送给错误的人。
Connections.csvBasic_LinkedInDataExport_*.zipProfile.csvPhase 0 - preflight and an isolated working directory
阶段0 - 预检与独立工作目录
Create a run-scoped working directory and use it for everything:
bash
WORK="$(mktemp -d -t wpw)" # or <somewhere>/wpw-<account>-<timestamp>
mkdir -p "$WORK"This matters more than it looks. Two runs sharing a scratch path will clobber each other's
, and the failure is silent: in testing one run briefly reported that an
owner had zero connections at an account when they had ten thousand. Cross-owner
contamination is the worst corruption this tool can produce, because the operator ends up
asking the wrong teammate for an intro to someone they have never met. One directory per run,
always.
connections.jsonThen check Crustdata is reachable and surface the balance in one line. All Crustdata calls in
this skill run through the Code Mode MCP (install.crustdata.com/mcp):
plain-JavaScript scripts calling — every
script opens with a or comment, branches on ,
and returns only the compact projection it needs ( is a response whitelist: the result
carries only the groups you list). The preflight is (free):
execute({ code })await callTool(name, params)// user query: ...// model query: ...r.okfieldsaccount_creditsjs
// model query: preflight - Crustdata reachable + credit balance
const r = await callTool("account_credits", {});
return r.ok ? r.data : { error: r.message };创建一个运行范围专属的工作目录,并将所有操作都放在该目录中:
bash
WORK="$(mktemp -d -t wpw)" # 或 <somewhere>/wpw-<account>-<timestamp>
mkdir -p "$WORK"这比看起来更重要。两个运行共享临时路径会互相覆盖对方的,且故障是静默的:在测试中,某次运行短暂报告某所有者在某客户处有0个联系人,而实际上他们有10000个。跨所有者污染是此工具可能产生的最严重问题,因为操作人员最终会向从未见过目标对象的团队成员请求引荐。每次运行都使用单独的目录,务必遵守。
connections.json然后检查Crustdata是否可访问,并在一行中显示余额。本技能中所有Crustdata调用都通过Code Mode MCP(install.crustdata.com/mcp)执行:纯JavaScript的脚本调用 ——每个脚本都以或注释开头,根据分支处理,仅返回所需的紧凑结果(是响应白名单:结果仅包含您列出的分组)。预检使用免费的:
execute({ code })await callTool(name, params)// user query: ...// model query: ...r.okfieldsaccount_creditsjs
// model query: preflight - Crustdata reachable + credit balance
const r = await callTool("account_credits", {});
return r.ok ? r.data : { error: r.message };Phase 1 - account brief (per account)
阶段1 - 客户简报(每个客户)
company_identifyconfidence_scorecompany_enrichcrustdata_company_idsexact_match: truefields: ["basic_info", "headcount", "funding", "competitors", "people", "news", "hiring", "followers", "taxonomy"]peoplejob_searchlimit: 0group_byjob_details.categorylimit: 15metadata.date_addedsocial_post_list_livecompany_domainlimitCheck whether the account still exists as an independent company. Acquisitions change who
holds budget and which brand people list. A recent deal belongs in the brief and in the alias
list. In testing, Confluent turned out to be an IBM company mid-run, which changed the entire
buying process.
Write a 3-4 sentence : what they do, their scale, what is changing, why now. Ground
every number in the payload you just pulled.
briefTake the logo while you are here. comes back from the free
call (and from the enrich above) at no extra credit cost. Download it,
base64 it, and write it to as a URI - the
media CDN serves these as , so a remote renders blank. The
workspace shows it in the header and the account switcher; without it you get a monogram.
basic_info.logo_permalinkcompany_identifyaccount.logo_urldata:image/jpeg;base64,...binary/octet-stream<img src>使用(免费)解析公司——它支持模糊匹配,一个标识符可能匹配多个公司,因此选择最高的匹配项——然后通过调用一次,设置和(分组包含决策者和CXO快照;列出您需要读取的所有分组)。然后调用两次——第一次并按进行聚合,获取汇总信息;第二次并按降序排序,获取重要职位。然后对公司调用(使用;每条帖子消耗1个积分,因此需谨慎设置——约10条足以用于简报)。
company_identifyconfidence_scorecrustdata_company_idscompany_enrichexact_match: truefields: ["basic_info", "headcount", "funding", "competitors", "people", "news", "hiring", "followers", "taxonomy"]peoplejob_searchlimit: 0job_details.categorygroup_bylimit: 15metadata.date_addedsocial_post_list_livecompany_domainlimit检查客户是否仍为独立公司。收购会改变预算持有人和人们列出的品牌。最近的交易应包含在简报和别名列表中。在测试中,Confluent在运行过程中被IBM收购,这完全改变了采购流程。
撰写3-4句话的:他们的业务、规模、正在发生的变化、为何是现在。所有数据都要基于您刚获取的 payload。
brief同时获取Logo。免费的调用(以及上述的)会返回,无需额外消耗积分。下载该Logo,转换为base64格式,并将其写入,格式为 URI——媒体CDN会将这些文件作为提供,因此远程会显示空白。工作区会在页眉和客户切换器中显示Logo;如果没有Logo,则会显示首字母缩写。
company_identifycompany_enrichbasic_info.logo_permalinkaccount.logo_urldata:image/jpeg;base64,...binary/octet-stream<img src>Phase 2 - buying group
阶段2 - 采购组
Seed with contacts the user named plus the group from Phase 1, then discover with
filtered on and senior
, biased to the function you sell
into. Resolve enum values with first - a wrong enum silently returns
zero rows (the seniority vocabulary is a closed set: , , ,
, , ...).
peopleperson_searchexperience.employment_details.current.company_idexperience.employment_details.current.seniority_levelperson_autocompleteCXOVice PresidentDirectorExperienced ManagerStrategicThen run a second pass on stack ownership, not title. Seniority is a proxy for authority;
owning the budget and the tools is the real thing. Search for people whose title or headline
says they own the relevant systems (ops, platform, systems, enablement, tooling, "GTM
systems", "talent operations"). In testing the single best-fit buyer at one account was a
Senior Manager who owned 18 tools and a $5M budget, and a director-and-above sweep missed
him entirely.
Trim to 6-8 people. Assign a provisional and (1-5). Set when
someone sits in an acquired sub-brand rather than the parent - that is what lets a connection
at that sub-brand route straight to them.
deal_roleinfluenceentityAcquisitions are where the warm paths hide. People at acquired companies often still list
the original brand, so a connection at "Red Hat" never matches a search for "IBM". Web-search
the acquisition history and write the full alias list to :
aliases.jsonjson
{"IBM": ["ibm", "red hat", "hashicorp", "apptio", "nordcloud"]}Multi-word aliases match as phrases, single words as whole tokens, so fragments like "edge"
will not drag in unrelated firms. Watch for genuine collisions - "Observe.AI" is not the
"Observe, Inc." that Snowflake bought, and both will appear.
以用户指定的联系人以及阶段1中的分组为种子,然后使用进行发现,过滤条件为和高级别的,偏向您销售的职能领域。首先使用解析枚举值——错误的枚举会静默返回0行数据(职级词汇是封闭集合:, , , , , ...)。
peopleperson_searchexperience.employment_details.current.company_idexperience.employment_details.current.seniority_levelperson_autocompleteCXOVice PresidentDirectorExperienced ManagerStrategic然后针对技术栈所有权进行二次筛选,而非仅看头衔。职级是权力的代理;掌控预算和工具才是真正的权力。搜索头衔或简介中显示他们拥有相关系统(运维、平台、系统、赋能、工具、“GTM系统”、“人才运营”)的人员。在测试中,某客户的最佳买家是一位高级经理,他负责18个工具和500万美元的预算,而仅筛选总监及以上级别的操作完全漏掉了他。
筛选至6-8人。分配临时的和(1-5分)。当某人隶属于被收购的子品牌而非母公司时,设置——这让子品牌的联系人可以直接对接他们。
deal_roleinfluenceentity收购是暖路径隐藏的地方。被收购公司的员工通常仍会列出原品牌,因此“Red Hat”的联系人永远不会匹配“IBM”的搜索。通过网络搜索收购历史,并将完整的别名列表写入:
aliases.jsonjson
{"IBM": ["ibm", "red hat", "hashicorp", "apptio", "nordcloud"]}多词别名按短语匹配,单字别名按完整词匹配,因此像“edge”这样的片段不会引入无关公司。注意真正的冲突——"Observe.AI"不是Snowflake收购的"Observe, Inc.",两者都会出现。
Phase 3 - stakeholder deep dives
阶段3 - 利益相关者深度分析
Spawn one sub-agent per stakeholder, batched in a single message, using
. Keep raw post dumps out of the main context. Assemble into
following .
references/stakeholder-agent.md$WORK/<slug>/dossier.jsonreferences/dossier-schema.mdEach person's photo () is already inside the
group the sub-agent requests - free. Base64 it into on the
stakeholder, same rule as the logo. Cards and drawers look like a real
buying group instead of a wall of initials.
basic_profile.profile_picture_permalinkbasic_profilephoto_urlbinary/octet-stream为每个利益相关者生成一个子代理,批量发送到单个消息中,使用。将原始帖子转储排除在主上下文之外。按照将内容组装到中。
references/stakeholder-agent.mdreferences/dossier-schema.md$WORK/<slug>/dossier.json每个人的照片()已包含在子代理请求的分组中——免费。将其转换为base64格式并写入利益相关者的,遵循与Logo相同的规则。卡片和抽屉看起来像真实的采购组,而不是一堆首字母缩写。
basic_profile.profile_picture_permalinkbasic_profilephoto_urlbinary/octet-streamPhase 4 - connections, bench, and verification
阶段4 - 联系人、候选池与验证
bash
python3 scripts/parse_connections.py --out "$WORK/connections.json" \
--input "/path/Connections.csv" \
--input "/path/Basic_LinkedInDataExport_2026.zip" # append ':Name' to override the ownerReport per-owner totals back to the user. Then verify the bench before presenting it as
live routes. Exports carry the employer as of export day and go stale silently - in testing
one bench member had already left the account. Spot-check the matched rows with
() and drop or flag anyone who has
moved on.
person_enrichfields: ["basic_profile", "experience"]Two blind spots are structural, cheap to state, and worth stating rather than shipping a map
that merely looks complete:
- connections with a blank company field match no alias and are invisible
- ex-employees are invisible - the export carries current employer only, so someone who spent a decade at the target and just left will never appear despite being an ideal broker
bash
python3 scripts/parse_connections.py --out "$WORK/connections.json" \
--input "/path/Connections.csv" \
--input "/path/Basic_LinkedInDataExport_2026.zip" # 追加 ':Name' 以覆盖所有者向用户报告每个所有者的联系人总数。然后在将候选池展示为实时路径之前进行验证。导出文件中的雇主信息是导出当日的,会静默过期——在测试中,某候选池成员已离开该客户。使用()抽查匹配的行,并删除或标记已离职的人员。
person_enrichfields: ["basic_profile", "experience"]有两个结构性盲点,成本低且值得说明,而非交付一个看似完整的图谱:
- 公司字段为空的联系人无法匹配任何别名,因此不可见
- 前员工不可见——导出文件仅包含当前雇主,因此在目标客户处工作了十年但刚离职的人员永远不会出现,尽管他们是理想的中间人
Phase 5 - route resolution
阶段5 - 路径解析
Read for the model and the honesty constraints. Three kinds of
route exist, best first, and the builder detects the first two automatically:
references/chain-scoring.md- Zero hop - the connection is a member of the buying group. Nothing beats this and it is easy to miss, because the bench and the buying group are built by different phases. The builder matches on LinkedIn URL then name; you get it for free.
- Date-verified shared history - the connection and a stakeholder worked at the same
company at overlapping times. This is the strongest evidenced bridge available, but only if
the dates actually overlap: of 13 apparent "we both worked at X" ties in testing, only 3
survived the date check - the rest joined after the target had left. To enable it, enrich
the bench members' work history and write :
careers.jsonKeyed by LinkedIn URL or lowercase name. The builder does the date arithmetic and records non-overlapping pairs as documented dead ends so nobody rediscovers them.json{"https://www.linkedin.com/in/someone": [{"company": "Red Hat", "start": "2021-03", "end": "2023-08"}]} - Org-layer bridge - everyone else. Resolve the senior leader of each function present in
the bench, one per (account, function) rather than per connection, and write
person_search:intermediaries.jsonAlways filljson{"Acme": {"Engineering": [{"name": "...", "title": "VP, Platform Engineering", "linkedin_url": "...", "basis": "most senior Engineering leader at Acme (person_search, seniority=VP)"}]}}with how you found them and why they qualify. Reporting lines are not in the data, so never phrase a basis as a confirmed manager relationship.basis
阅读了解模型和诚信约束。存在三种路径,按优先级排序,构建器会自动检测前两种:
references/chain-scoring.md- 零跳——联系人本身就是采购组成员。这是最佳路径,且容易被忽略,因为候选池和采购组是在不同阶段构建的。构建器会通过LinkedIn URL和姓名进行匹配;您可以自动获得此路径。
- 日期验证的共同经历——联系人和利益相关者曾在同一家公司重叠任职。这是可验证的最强桥梁,但前提是日期确实重叠:在测试的13个看似“我们都在X公司工作过”的关联中,只有3个通过了日期检查——其余的都是在目标人员离开后加入的。要启用此功能,需丰富候选池成员的工作经历并写入:
careers.json以LinkedIn URL或小写姓名为键。构建器会进行日期计算,并将不重叠的配对记录为已记录的死胡同,避免重复发现。json{"https://www.linkedin.com/in/someone": [{"company": "Red Hat", "start": "2021-03", "end": "2023-08"}]} - 组织层桥梁——所有其他情况。解析候选池中每个职能的高级领导者,针对每个(客户,职能)调用一次,并写入
person_search:intermediaries.json务必填写json{"Acme": {"Engineering": [{"name": "...", "title": "VP, Platform Engineering", "linkedin_url": "...", "basis": "most senior Engineering leader at Acme (person_search, seniority=VP)"}]}}字段说明您如何找到他们以及他们符合条件的原因。数据中不包含汇报线,因此永远不要将依据表述为已确认的经理关系。basis
Phase 6 - signals and plays
阶段6 - 信号与行动方案
Assemble from the hiring surge, the buying signals the sub-agents surfaced, job
changes, funding and recent news, newest first with a severity. Then write 3-6
naming the connection, the intermediary and the decision maker, citing the signal that makes
now the moment. "Reach out to the team" is not a play.
signals[]plays[]从招聘激增、子代理发现的采购信号、职位变动、融资和近期新闻中组装,按时间倒序排列并标注严重程度。然后撰写3-6个,指定联系人、中间人和决策者,引用为何现在是最佳时机的信号。“联系团队”不是有效的行动方案。
signals[]plays[]Phase 7 - build and publish
阶段7 - 构建与发布
bash
python3 scripts/build_workspace.py \
--dossier "Acme=$WORK/acme/dossier.json" \
--dossier "Globex=$WORK/globex/dossier.json" \
--connections "$WORK/connections.json" \
--aliases "$WORK/aliases.json" \
--intermediaries "$WORK/intermediaries.json" \
--careers "$WORK/careers.json" \
--template assets/workspace-template.html \
--title "Acme + Globex Deal Workspaces" \
--out "$WORK/workspace.html"The builder does all the deterministic work: matching connections to accounts, detecting
zero-hop and shared-history routes, scoring and ranking every chain, wiring in intermediaries,
recording dead ends, and injecting the data. Check its printed summary - warm counts, strong
counts, zero-hop, verified ex-colleague, named org layers - before publishing.
Then publish it. Load the skill (required before the first
call), then call with = , a stable title, a
one-sentence description and a favicon. The artifact is the deliverable; a workspace left on
disk helps nobody. Re-publishing the same file path redeploys to the same URL, which is what
makes iteration cheap.
artifact-designArtifactArtifactfile_path$WORK/workspace.htmlReport the headline numbers: stakeholders mapped, posts analysed, warm chains and how many are
strong, zero-hop routes, signals, plays.
bash
python3 scripts/build_workspace.py \
--dossier "Acme=$WORK/acme/dossier.json" \
--dossier "Globex=$WORK/globex/dossier.json" \
--connections "$WORK/connections.json" \
--aliases "$WORK/aliases.json" \
--intermediaries "$WORK/intermediaries.json" \
--careers "$WORK/careers.json" \
--template assets/workspace-template.html \
--title "Acme + Globex Deal Workspaces" \
--out "$WORK/workspace.html"构建器会完成所有确定性工作:将联系人与客户匹配、检测零跳和共同经历路径、为每条链路打分和排名、接入中间人、记录死胡同、注入数据。在发布前检查其打印的摘要——暖路径数量、强路径数量、零跳路径、已验证的前同事、指定组织层。
然后发布它。加载技能(首次调用前必填),然后调用,设置 = 、稳定的标题、一句话描述和图标。工件是交付成果;留在磁盘上的工作区对任何人都没有帮助。重新发布相同的文件路径会重新部署到同一URL,这让迭代变得低成本。
artifact-designArtifactArtifactfile_path$WORK/workspace.html报告关键数据:已映射的利益相关者数量、已分析的帖子数量、暖链路数量及其中强链路数量、零跳路径数量、信号数量、行动方案数量。
Phase 8 - iterate
阶段8 - 迭代
Common follow-ups: add a teammate's export and rebuild, add or re-run a stakeholder, change a
deal role, widen the buying group. Each edits the inputs and re-runs Phase 7 to the same URL.
常见的后续操作:添加团队成员的导出文件并重新构建、添加或重新运行某利益相关者分析、更改交易角色、扩大采购组范围。每次操作都会编辑输入项并重新运行阶段7,发布到同一URL。
Guardrails worth holding
值得坚守的准则
Never fabricate, and make the artifact prove it. Every claim carries evidence citing the
payload it came from; unevidenced claims go in . The evidence dropdowns are why anyone
trusts the page, and one confident invention undoes them all.
gaps"No strong chains" is a success, not a failure. If the team's network does not reach the
buying function, say so plainly and call the account warm-assisted outbound. Dressing up
four weak chains as a way in wastes real social capital. In testing both an unaided run and a
skill run reached that verdict independently on the same account, which is the system working.
Watch for name collisions. Company names are not unique and people share names. Verify a
match is the right entity before it reaches the bench, and drop procurement "strategic
sourcing" roles when you are looking for talent sourcing.
House style for anything sendable. Openers and talking points get pasted into real emails:
no em dashes or en dashes, and no legal-entity suffixes in company names.
Adapt the layout to the content - never let it hide anything. The brand system below is
fixed; the layout is not. If real content does not fit - a long company or person name, a
12-word title, 40 stakeholders, more chains than the graph can plot - change the layout, not
the content: let the card grow, wrap instead of truncating, drop to one column, widen the
column, raise the cap, or put the wide thing in its own scroll container. Never solve a fit
problem by clipping a card, ellipsis-ing a name, or silently dropping rows. Where a cap really
is unavoidable, say so in the UI ("showing the 18 strongest of 34 routes") so the reader knows
what they are not seeing. Look at the rendered page (Phase 7's self-review) and fix what is cut
off before you hand it over.
Crustdata branding on rendered artifacts. The bundled workspace template carries the real
Crustdata brand system - keep it, and never strip it when editing the template:
- Wordmark: the official pair ships in this skill's -
assets/(dark text, for light backgrounds) andcrustdata-logo-light.png(white text, for dark), the same files app.crustdata.com's header renders. Base64-inline the theme-appropriate variant at ~17px tall, linking to crustdata.com; the template shows both and switches them in CSS. Never hotlink a logo - rendered artifacts cannot fetch remote images.crustdata-logo-dark.png - Color: brand purple (the product's primary) as the accent;
#5547E2(the product's own lightened purple) as the dark-theme accent.#8387FF - Type: Geist, the product font, embedded as a data-URI with the system stack as fallback.
@font-face - Icons: Lucide, the dashboard's icon set, inlined as SVG with a stroke (the template's
currentColorhelper holds the path data). No emojis in artifact UI.licon()
Any OTHER page or document this skill renders (a one-off summary page, an exported report)
carries the same system: base64-inline the wordmark pair from behind a "Powered by"
eyebrow, and copy the , the accent variables, and the icon helper from
. This is conditional: chat output and
data files stay unbranded, and nothing gets rendered as an artifact just to carry the mark.
assets/@font-facelicon()assets/workspace-template.html绝不编造,让工件自行证明。每项结论都附带引用其来源payload的证据;无证据的结论放入。证据下拉框是人们信任此页面的原因,一次自信的编造会毁掉所有可信度。
gaps“无强链路”是成功,而非失败。如果团队的网络无法触及采购职能,要明确说明,并将该客户归类为暖辅助外呼。将四个弱链路伪装成有效路径会浪费真实的社交资本。在测试中,手动运行和技能运行针对同一客户都得出了此结论,这表明系统运行正常。
注意名称冲突。公司名称不唯一,人名也会重复。在候选池确认匹配正确实体之前进行验证,当您寻找人才采购角色时,剔除采购部门的“战略采购”职位。
任何可发送内容的统一格式。开场白和沟通要点会被粘贴到真实邮件中:不要使用长破折号或短破折号,公司名称中不要包含法律实体后缀。
根据内容调整布局——绝不隐藏任何内容。以下品牌系统是固定的;布局则不是。如果真实内容无法适配——过长的公司或人名、12字的头衔、40名利益相关者、图谱无法容纳的过多链路——请更改布局,而非内容:让卡片扩大、换行而非截断、改为单列、加宽列、提高上限,或将宽内容放入独立的滚动容器。绝不要通过裁剪卡片、省略人名或静默删除行来解决适配问题。当确实需要设置上限时,要在UI中说明(“显示34条路径中最强的18条”),让读者知道他们看不到的内容。查看渲染后的页面(阶段7的自我检查),在交付前修复被截断的内容。
渲染工件上的Crustdata品牌。捆绑的工作区模板带有正式的Crustdata品牌系统——请保留,编辑模板时绝不要移除:
- 标志:正式的标志对包含在本技能的中——
assets/(深色文字,用于浅色背景)和crustdata-logo-light.png(白色文字,用于深色背景),与app.crustdata.com页眉显示的文件相同。将适合主题的变体转换为base64内联,高度约17px,链接到crustdata.com;模板包含两种变体,并通过CSS切换。绝不要热链接Logo——渲染的工件无法获取远程图片。crustdata-logo-dark.png - 颜色:品牌紫色(产品主色)作为强调色;
#5547E2(产品自身的浅紫色)作为深色主题强调色。#8387FF - 字体:Geist,产品字体,作为data-URI 嵌入,系统字体栈作为备选。
@font-face - 图标:Lucide,仪表板的图标集,作为SVG内联,使用描边(模板的
currentColor助手包含路径数据)。工件UI中不要使用表情符号。licon()
本技能渲染的任何其他页面或文档(一次性摘要页、导出报告)都应使用相同的系统:从中获取标志对,以base64内联在“Powered by”标题下方,并从复制、强调色变量和图标助手。此规则有条件:聊天输出和数据文件保持无品牌,不要仅为添加标志而将内容渲染为工件。
assets/assets/workspace-template.html@font-facelicon()Tool dependencies
工具依赖
- Crustdata MCP server (install.crustdata.com/mcp): a
single Code Mode MCP exposing ,
list_tools, andget_schema. All Crustdata data tools are reached inside anexecuteplain-JavaScript script viaexecute({ code })— author against the typed surface fromawait callTool(name, params), but write zero type annotations in the body. Tools used here:get_schema,company_identify,company_enrich,person_search,person_autocomplete,person_enrich,person_contact_enrich,job_search,social_post_list_live(alias research),web_search_liveaccount_credits - Python 3 for and
scripts/parse_connections.py(pure local processing, no network calls)scripts/build_workspace.py - Artifact tool for publishing the workspace HTML
- Crustdata MCP服务器(install.crustdata.com/mcp):一个Code Mode MCP,暴露,
list_tools, 和get_schema。所有Crustdata数据工具都通过execute纯JavaScript脚本中的execute({ code })调用——根据await callTool(name, params)的类型化接口编写,但在脚本主体中不要添加任何类型注解。此处使用的工具:get_schema,company_identify,company_enrich,person_search,person_autocomplete,person_enrich,person_contact_enrich,job_search,social_post_list_live(别名调研),web_search_liveaccount_credits - Python 3:用于和
scripts/parse_connections.py(纯本地处理,无网络调用)scripts/build_workspace.py - Artifact工具:用于发布工作区HTML
Bundled resources
捆绑资源
- - normalises LinkedIn exports, auto-detects owner from Profile.csv
scripts/parse_connections.py - - bench matching, zero-hop and shared-history detection, chain scoring, HTML injection
scripts/build_workspace.py - - the self-contained multi-account workspace renderer
assets/workspace-template.html - - the per-account dossier contract; read before writing one
references/dossier-schema.md - - the deep-dive sub-agent prompt; read before Phase 3
references/stakeholder-agent.md - - how routes are scored and resolved honestly; read before Phase 5
references/chain-scoring.md
- - 标准化LinkedIn导出文件,从Profile.csv自动检测所有者
scripts/parse_connections.py - - 候选池匹配、零跳和共同经历检测、链路打分、HTML注入
scripts/build_workspace.py - - 独立的多客户工作区渲染器
assets/workspace-template.html - - 单客户档案契约;撰写前请阅读
references/dossier-schema.md - - 深度分析子代理提示;阶段3前请阅读
references/stakeholder-agent.md - - 路径如何被诚实打分和解析;阶段5前请阅读
references/chain-scoring.md