Come usare
- Copia il comando e controlla il pacchetto prima di installarlo nel tuo ambiente agente.
- Controlla strumenti, credenziali e ambienti richiesti nel documento originale.
- Descrivi input e risultato desiderato; confronta l’output con le fonti.
npx skills add https://github.com/sshvarzman-salesforce/claude-skills --skill sf-agent-api-citationsPrima di iniziare
- L’installazione non include abbonamenti, quote API o accesso ai file.
- Stelle e installazioni indicano attività, non un test indipendente di qualità o sicurezza.
Contenuto dal repository con titoli, esempi, codice, tabelle, link e immagini preservati.
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



