사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
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



