ワンクリックで
stable-agent-identity
Use stable agent identity fields for metadata joins and reserve instance ids for runtime bookkeeping.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use stable agent identity fields for metadata joins and reserve instance ids for runtime bookkeeping.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
{what this skill teaches agents}
Validate Squad avatar regressions with alias-resolution probes and source assertions around reset paths.
Render live sub-agent badges from resolved identity, current model, and active work state.
Protect persisted voice selections when async voice lists reload or the active TTS engine changes.
Replay extension state only after the webview page declares its own ready flag.
Keep avatar window chrome and topmost behavior driven by one explicit rule.
| name | stable-agent-identity |
| description | Use stable agent identity fields for metadata joins and reserve instance ids for runtime bookkeeping. |
| domain | extension-architecture |
| confidence | high |
| source | observed |
This applies when an event-driven extension has to merge runtime agent events with roster or config metadata. The runtime payload often carries both a stable identity and a per-run instance id; mixing them creates brittle joins.
agentName, agentDisplayName, or roster-derived ids.tester or backend-dev resolve to cast identities without touching runtime instance ids.?? alone is not safe.General Purpose Agent as missing when richer roster or casting metadata is available.task, runSubagent, agent) carries a better cast hint in tool.execution_start.arguments, cache that {name, description} by toolCallId, bind it to the concrete runtime agentId on subagent.started, and feed it into Squad lookup before trusting generic runtime labels.subagent.selected before subagent.started, treat that selection payload as a short-lived identity hint only. Bind it to the concrete runtime agentId once subagent.started arrives, then reuse the bound hint for later updates or reconnect sync.agentId and use stable identity only to enrich name/role/description metadata.addSubagent — or the helper is just dead code.stableIdentityKey is absent, derive a fallback only from labels that already passed the low-confidence filters; never promote a runtime agentId into a stable identity key.agentsByKey/team metadata on the hidden context and let metadata lookup key off lookup presence rather than active..github/extensions/copilot-avatar/lib/squad-context.mjs builds a roster lookup keyed by stable agent aliases..github/extensions/copilot-avatar/lib/squad-context.mjs enriches that lookup with .squad/casting/registry.json assignment snapshots so tester can resolve to Howard the Duck..github/extensions/copilot-avatar/main.mjs tracks live avatar state by event.agentId, which is appropriate for runtime instance ownership..github/extensions/copilot-avatar/main.mjs reuses that per-agent runtime state to push consistent displayName, model, and activityLabel data through started/completed/failed/tool events..github/extensions/copilot-avatar/main.mjs can gate root Squad chrome through getVisibleSquadContext() while still resolving sub-agent metadata from resolvedSquadContext via a dedicated helper..github/extensions/copilot-avatar/main.mjs can return an active: false visible context that still carries agentsByKey, teamName, and coordinatorName, so root chrome stays hidden while Copilot-owned cards still resolve cast names..github/extensions/copilot-avatar/main.mjs can derive a stableIdentityKey from Squad metadata / stable runtime labels, then collapse visible duplicates before calling addSubagent..github/extensions/copilot-avatar/main.mjs can preserve cached metadata during syncKnownSubagents() and rerun duplicate collapse there, so reconnects do not revive a generic third card..github/extensions/copilot-avatar/main.mjs can also keep every live Copilot-owned runtime agentId visible while still resolving each card's display name and role from Squad roster or casting metadata..github/extensions/copilot-avatar/content/main.js can derive a fallback identity key from resolveAvatarDisplayName() and call collapseAvatarIdentityDuplicates() inside window.addSubagent, so the page-side surface matches the extension's duplicate policy..github/extensions/copilot-avatar/main.mjs can cache a recent subagent.selected payload for Scribe, then attach that metadata to the first low-confidence subagent.started instance so the rendered card shows Scribe without letting selection events mint cards..github/extensions/copilot-avatar/main.mjs can cache task spawn metadata like name: "howard-the-duck" or description: "Howard the Duck: Run validation" from tool.execution_start, then let resolveSubagentDisplayData() prefer that hint over a later General Purpose Agent payload..github/extensions/copilot-avatar/main.mjs can keep two Peter Parker runtime instances visible when both still have live tool activity, but fold a stale/no-tool duplicate back into one owner once only one instance is actually working..github/extensions/copilot-avatar/main.mjs can merge a stale sibling's richer displayName / role / description into the surviving runtime owner so fresh-but-blank events do not wipe the visible card label.General Purpose Agent should not outrank roster names such as Howard the Duck.session-events.d.ts documents agentId as a sub-agent instance identifier and agentName / agentDisplayName as identity-bearing fields.agentId to join against roster metadata.subagent.selected create or suppress cards instead of treating it as metadata-only enrichment for a later subagent.started.name / description arguments and assuming subagent.started will always carry the final cast identity.agentId when multiple live instances can resolve to the same cast identity."" short-circuit naming fallback and force the UI onto internal ids.