handoff-protocol — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited handoff-protocol (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The unified canonical artifact for all consequential agent exchanges. Every handoff, consultation, escalation, review, or capability request produces an Interaction Record.
Rule: Peer messages that don't produce a record are ephemeral and cannot be relied upon for decisions. If two agents agree on something that affects the system, it MUST be written into an Interaction Record before the change is committed.
Use the same template regardless of transport (Agent Teams or orchestrator-mediated).
## Interaction Record
| Task ID | [DEPT-NNN, e.g., ENG-042] |
| Type | [consultation \| handoff \| review \| escalation \| capability-request] |
| From | [sender agent name] |
| To | [receiver agent name or orchestrator] |
| Transport | [agent-teams \| orchestrator-mediated] |
| Risk Class | [low \| medium \| high] |
| Timestamp | [ISO 8601] |
### Context
[What's been done, relevant files, current state. Be specific — the receiver cold-reads this.]
### Request
[Specific ask — what the sender needs from the receiver. One sentence if possible.]
### Constraints
[Timeline, technical limits, dependencies, files that must not be touched.]
### Evidence Bundle
[Risk-class-appropriate evidence — see Evidence Bundles section below.]
### Decision
[Filled by the receiver: what was decided, rationale, next steps. Left blank when sending.]handoff — transfer of work between agentsUse when work is being passed forward. Include complete context, deliverable request, and acceptance criteria in the Context and Request sections.
consultation — peer asking for input without transferring ownershipUse when an agent wants a peer's opinion on an approach, API contract, or design choice. Ownership stays with the sender. Peer may propose, not commit.
## Interaction Record
| Task ID | ENG-042 |
| Type | consultation |
| From | backend-engineer |
| To | security-engineer |
| Transport | agent-teams |
### Context
Implementing OAuth2 PKCE flow for the /auth endpoint. JWT session currently in place.
### Request
Is the code_verifier length of 43 chars sufficient, or should I use the 128-char max?
### My Proposal
43 chars (minimum per RFC 7636) — keeps URL shorter, still entropic.review — formal review of completed workUse when submitting work for QA or reality-check. Must include Evidence Bundle matching the risk class.
escalation — agent stuck, needs rerouteUse when the agent has hit a wall. Must classify the failure type:
| Failure Type | Meaning | Orchestrator Action |
|---|---|---|
wrong-capability | Agent needed different expertise | Reroute to matching capability |
task-too-large | Scope expanded beyond assignment | Decompose into subtasks |
conflicting-requirements | Spec contradicts code or other spec | Escalate to product/PM for clarity |
environment-issue | Infra/tooling broken, not task logic | Route to devops/sre |
insufficient-context | Agent needs info only another agent has | Route to knowledge holder |
unknown | Can't classify — describe symptoms | Orchestrator investigates |
## Interaction Record
| Task ID | ENG-042 |
| Type | escalation |
| From | backend-engineer |
| To | enterprise-orchestrator |
### Context
Attempted OAuth2 PKCE implementation. Blocked on Supabase JWT signing key rotation strategy.
### Request
Failure Type: wrong-capability
Need: security-engineer with auth+oauth2+supabase qualifiers
### Evidence Bundle
- Files attempted: src/auth/middleware.ts, src/auth/oauth.ts
- Error: "JWT signature verification failed after key rotation"
- What I tried: (1) single static key — works but rotates fail (2) kid-based lookup — key not found in JWKScapability-request — agent needs a peer with specific expertiseUse when the agent doesn't need escalation but does need a specific capability. Lighter weight than an escalation — typically same-priority routing.
## Interaction Record
| Task ID | ENG-042 |
| Type | capability-request |
| From | backend-engineer |
| To | enterprise-orchestrator |
### Request
Capability needed: design-system + [tokens, dark-theme]
Reason: Need hex values for error state background in dark mode to render in email templates.
Urgency: non-blockingEvidence requirements are conjunctive (AND, not OR). Each risk class lists the minimum items that MUST be present. "Or" is not allowed — every listed item is required.
Triggers: docs, comments, config tweaks, typo fixes, small internal refactors. No reviewer required — orchestrator accepts on evidence completeness alone.
Required evidence (ALL of):
Triggers: new features, refactors, API changes, schema additions. Reviewer: qa-engineer by default. If qa-engineer authored the work, use reality-checker. If both unavailable, orchestrator reviews directly.
Required evidence (ALL of):
Triggers: security changes, auth/session code, payments, data mutations at scale, database migrations, RLS policy changes, external API credentials, env var changes. Reviewer: reality-checker by default. Backup: security-engineer (if reality-checker authored the work or is unavailable). Cannot be auto-approved — if no reviewer available, task blocks and orchestrator reports to user. Waiver only by explicit user instruction ("ship it without review").
Required evidence (ALL of):
Risk is classified at dispatch AND re-evaluated on completion.
Upgrade LOW → MEDIUM if:
Upgrade MEDIUM → HIGH if:
If reclassified:
Decision sectionEvery task receives a file scope from the orchestrator at dispatch:
## Task Assignment
| Task ID | ENG-042 |
| Assigned to | backend-engineer |
| Expected file scope | [src/auth/middleware.ts, src/auth/oauth.ts, tests/auth/*.test.ts] |
| Risk Class | medium |Rules:
Scope expansion record:
## Interaction Record
| Task ID | ENG-042 |
| Type | consultation |
| From | backend-engineer |
| To | enterprise-orchestrator |
### Request
Scope expansion: need to also modify src/middleware/cors.ts because OAuth redirect URI changed.
This is a 3-line config update, not logic.When CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 is enabled and peers can message each other directly via SendMessage:
"I've decided the API contract is X" requires orchestrator confirmation.
on something that affects the system, the agreement MUST be written into an Interaction Record before any code changes.
share evidence. Only the orchestrator (or a designated reviewer) can mark work as accepted.
architecture, the orchestrator must be notified via an Interaction Record before the change is committed.
When the orchestrator routes a task to an agent, it produces an auditable Routing Decision:
## Routing Decision
| Task ID | ENG-042 |
| Requested capability | auth: [oauth2, pkce] |
| Matched agents | security-engineer (auth: [oauth2, saml]), backend-engineer (auth: [jwt, session]) |
| Selected | security-engineer |
| Reason | Qualifier match: oauth2 is in security-engineer's qualifiers; backend-engineer only has jwt/session |
| Rejected | backend-engineer — qualifier mismatch |
| Tie-break rule applied | qualifier-match (highest priority) |Tie-breaking rules (in priority order, all deterministic from current task context):
Load-balancing tie-breaks (e.g., "fewer current assignments") are intentionally excluded: there is no durable assignment ledger, so any such rule would be non-auditable across sessions.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.