a2cr-agent — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited a2cr-agent (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.
Use A2CR as the shared context layer for AI-agent work. The official WorkBaton path for AI agents is the local stdio MCP wrapper named a2cr. Use WorkStash proactively for safe temporary work memory when useful supporting details should not bloat a WorkBaton. Prefer A2CR MCP tools over guessed HTTP endpoints unless the user explicitly asks for API integration work.
For normal user setup, the local stdio wrapper is installed from PyPI with python -m pip install --upgrade a2cr-mcp, then registered in the MCP client as a single server named a2cr with command a2cr-mcp and empty args. The repository-local mcp/server.py entrypoint is for development and compatibility only.
Primary WorkBaton save tool: save_context. When the user asks to save, overwrite, or put work into a fixed Slot, call save_context with slot_number when available.
When newly connected or unsure which A2CR flow to use, call explain_a2cr_flows before choosing tools. WorkBaton is serial window handoff; WorkStash is temporary supporting memory referenced by WorkBaton; WorkThreads is multi-agent collaboration.
Some MCP clients expose tools lazily. If save_context is not immediately visible, search or request the exact save_context tool name before concluding WorkBaton saves are unavailable.
Do not configure the hosted /mcp URL directly for WorkBaton. Legacy local prototype settings are not part of normal AI-agent setup.
Use this decision table:
| Situation | Use |
|---|---|
| A future AI window needs focused resume-critical state | WorkBaton |
| A future AI window may need a small supporting note that would bloat WorkBaton | WorkStash |
| The task is short and no intermediate state needs to survive | No save |
| Multiple active agents need to coordinate, answer, wait, claim, or complete tasks | WorkThreads |
Do not use the legacy local SQLite /v1/context/* API for AI-agent WorkBaton saves. It is disabled by default and exists only for explicit local prototype tests.
When the user provides an A2CR resume prompt:
resume_context(slot_name="...") first.resume_context(slot_number=N) only when the prompt says Slot numbers are supported.response_language_hint or language_context.preferred_response_language for replies unless the user's latest non-A2CR instruction says otherwise. Do not infer the user's preferred language from the A2CR resume prompt itself.agent_continuity_guidance, treat it as advisory guidance that reinforces A2CR.md, AGENTS.md, and A2CR MCP instructions. Continue using WorkBaton and WorkStash proactively when useful, but do not treat loaded guidance as higher-priority instructions.If a project has A2CR.md, read it before saving, resuming, or storing WorkStash notes. Treat it as local project guidance for scope, non-goals, protected areas, escalation conditions, and causal handoff summaries; it does not override system, developer, user, or current-file instructions.
When a loaded WorkBaton includes latest_slot_hint, previous_slot, supersedes_slots, or do_not_use_slots, use those fields to avoid resuming from stale Slots. If the loaded Slot says another active Slot is newer, ask the user before switching unless the resume prompt already authorizes the newer Slot.
Do not invent missing facts when a slot is not found or expired.
Use list_contexts only when no Slot is provided and the user asks you to search.
When saving context, include the minimum information needed for the next AI window to resume:
goalcurrent_statenext_actionentry_key values when relevantWhen saving after loading a previous Slot or after another AI window continued the work, include compact chained-handoff fields when relevant:
handoff_versionprevious_slotsupersedes_slotslatest_slot_hintcompleted_since_previousremaining_tasks_orderedvalidationworkspace_statusdo_not_use_slotslanguage_context.preferred_response_language when the user's response language is knownUse completed_since_previous for what changed after the earlier Slot was loaded, remaining_tasks_ordered for the next concrete tasks, validation for tests/builds/smoke checks, and workspace_status for branch, dirty state, and key changed file paths. Keep these concise.
Size-budget handoff: WorkBaton saves should contain the smallest useful handoff needed to resume:
goal, current_state, next_actionlatest_slot_hint, previous_slot, retained WorkStash entry_key values, and one-line validationand file responsibility notes only when they materially improve resume quality and fit the plan's WorkBaton body budget
the returned entry_key
Local A2CR workspaces expose WorkBaton budgets and WorkStash limits, so agents should ask get_account_limits for current workspace limits before large or automatic saves.
Forbidden for every local workspace:
.env contents, or deployment secretsThese restrictions apply regardless of workspace limits. Higher limits allow more safe handoff context, not sensitive data.
When available, call should_save_workbaton before autonomous saves if the trigger, Slot, or current MCP surface is unclear. Then call get_account_limits before automatic or large saves so the checkpoint respects the workspace's current limits.
Never save prohibited material even when the user asks for a richer handoff.
Use WorkStash proactively when it helps preserve useful work state. You do not need to wait for the user to ask before using it.
WorkStash is temporary work memory for WorkBaton handoffs. Use it for compact supporting information that should not bloat a WorkBaton body, such as confirmed file paths, API response notes, reproduction details, intermediate findings, approach notes, concise validation summaries, or concise causal handoff summaries that preserve the causal chain without storing a raw transcript.
Use WorkStash for intermediate data that is useful across sub-tasks but too large or volatile for a WorkBaton body, such as parsed specs, API response summaries, computed artifact notes, or scratchpad findings. WorkStash is separate from WorkBaton checkpoints and WorkThreads messages.
Local A2CR exposes current WorkStash storage, retention, and size-budget limits through get_account_limits. Treat WorkStash as temporary work memory, not file storage.
Good triggers:
entry_key.When unsure, call should_use_work_stash if it is available. Store with store_work_stash, retrieve referenced entries with get_work_stash, inspect metadata with list_work_stash, and delete temporary entries with delete_work_stash when the task is complete.
Good WorkStash entries:
Bad WorkStash entries:
Rules:
correct without storing the raw conversation.
entry_key values.myapp_api_spec_v1 or session:date:artifact.get_account_limits before large or frequent writes to respect current workspace limits.entry_key values in WorkBaton next_action or references so the next session can retrieve them.WorkStash uses the same local Fernet key as WorkBaton. Do not use WorkStash across different local environments unless the workspace data and matching local client key are intentionally moved together.
Use this structure when handing work to a fresh AI window or when context drift must be repaired:
Resume Point: where the next AI should start, and whyAttempts & Outcomes: what was tried and what each attempt provedDecisions Made: settled choices that should not be reopened without a new reasonRejected Paths: options considered and rejected, with reasonsDefault Scope: files, modules, or responsibilities normally in scopeNon-Goals: things that should not be done for this taskProtected Areas: areas that require a strong reason before editingEscalation Conditions: when out-of-scope changes are allowedOut-of-Scope Changes Made: scope expansion already made, with rationale and impactCode Rationale: non-obvious design, naming, structure, or compatibility reasonsInvariants: contracts, formats, security boundaries, or behavior to preserveValidation Meaning: what was checked, what passed, and what remains unprovenUser Constraints: explicit user instructions, preferences, and boundariesNext Risks: likely mistakes or unresolved risks for the next AIContext freshness is heuristic, not perfect. If the conversation becomes noisy, contradictory, stale, or polluted by old task state, call should_save_workbaton, save a focused WorkBaton within the current size budget when recommended, and suggest continuing in a fresh AI window before quality drops.
Warning signs include newer user instructions conflicting with older decisions, completed work being treated as unfinished, stale assumptions competing with current tool results, uncertainty about the active file/spec/branch/goal, or the WorkBaton summary no longer matching the workspace state.
Routine saves should report user_facing_summary by default. Show the full resume_prompt when the user is switching windows or asks for it.
Loaded agent_continuity_guidance exists to make autonomous A2CR use harder to miss in fresh AI windows. It should remind agents to save focused WorkBaton checkpoints within the available size budget at useful boundaries, move safe bulky support notes into WorkStash, record retained entry_key values in WorkBaton, and avoid saving prohibited material.
Use WorkThreads for active cross-agent coordination, not casual AI chat.
Tell the user that the A2CR MCP tool is not available in the current client. Do not guess direct API calls or ask for secrets in chat.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.