Mode d’emploi
- Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
- Consultez le document original pour les outils, identifiants et environnements requis.
- Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/sshvarzman-salesforce/claude-skills --skill sf-agent-api-citationsAvant de commencer
- L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
- Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.
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



