使用方法
- 复制安装命令,在自己的智能体环境安装前先检查源码包。
- 从原始文档核对所需工具、凭据和支持的宿主。
- 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/sshvarzman-salesforce/claude-skills --skill sf-agent-api-citations开始前需了解
- 安装不包含模型订阅、API 额度或访问文件的权限。
- 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。
Agent API Citations
Use This Skill When
- Parsing the
citedReferencesarray from anInformmessage. - Rendering cited sources as a source list or as inline citations.
- Mapping cited
recordId/valueback to Salesforce records or knowledge articles.
Concept
Some responses include cited sources in the citedReferences array of an Inform message. Citations appear in two ways:
- Source list — references shown at the bottom of the response.
- Inline citations — tied to a specific location in the response text via the
inlineMetadataobject.
CitedReference Shape
{
"type": "link",
"value": "https://myorgdomain.salesforce.com/ka0RZ000002DzSmYAK",
"recordId": "ka0RZ000002DzSmYAK",
"label": null,
"inlineMetadata": [
{
"claim": "The 2024 Acura ZDX is Acura's first-ever all-electric vehicle, featuring: ...",
"location": 236
}
]
}| Field | Meaning |
|---|---|
type | Reference type (for example link) |
value | URL to the cited source |
recordId | Salesforce record ID of the source (for example a Knowledge article) |
label | Optional display label |
inlineMetadata[] | Inline anchors: claim (the supported text span) and location (character offset in message) |
Rendering Strategy
Source list (simplest)
Render every citedReference as a footnote/link block beneath the answer. Use label when present, else derive a title from recordId/value.
Inline citations
- Read the
Informmessagetext. - For each reference, for each
inlineMetadataentry, uselocation(character offset) to place a citation marker in the rendered text. - Sort markers by
locationbefore inserting so offsets don't shift incorrectly (insert from the end backwards, or account for inserted marker length). - Link each marker to
value(URL) or navigate torecordIdin-app.
function buildInlineCitations(informMessage) {
const text = informMessage.message;
const anchors = [];
(informMessage.citedReferences || []).forEach((ref, refIdx) => {
(ref.inlineMetadata || []).forEach((im) => {
anchors.push({ location: im.location, refIdx: refIdx + 1, ref });
});
});
anchors.sort((a, b) => b.location - a.location); // insert from end
let out = text;
for (const a of anchors) {
const marker = `[${a.refIdx}](${a.ref.value})`;
out = out.slice(0, a.location) + marker + out.slice(a.location);
}
return out;
}Guardrails
citedReferencesmay be empty ([]) — always guard before iterating.inlineMetadatamay be absent; fall back to a source list when there are no inline anchors.- Treat
valueURLs as untrusted; validate the host/scheme before rendering as a clickable link. - When inserting inline markers by
location, insert from the highest offset backward so earlier offsets stay valid. - Prefer in-app navigation via
recordIdfor internal records rather than exposing raw org URLs externally.
Deliverables
- A citation parser that normalizes
citedReferencesinto source-list and inline forms. - A rendering component contract (marker style, link vs navigate, empty-state handling).
Additional Resources
- Where citations arrive in the response:
sf-agent-api-messaging - Official docs: Agent API Examples — Handle Citations



