claude-skills/agent-launcher/assets/example-build-sheet.json
Claude 3e29c960fa
merge dev into agent-launcher branch: counters trued to 377/695/817/94, D1 sidecar move, models pinned to claude-opus-5, references topped up
- Conflict resolution takes dev's counter surfaces and re-applies the
  agent-launcher marketplace entry (description trimmed to 950 chars for the
  new <=1024 guard) and README domain row
- plugin.json source/attribution moved verbatim to authoring-notes.json per
  the post-#954 schema dev now enforces; version aligned to 2.11.2
- claude-opus-4-8 (retired, G7-blocking since #938) pinned to claude-opus-5
  across 5 scripts + example build sheet; all touched scripts re-smoke-tested
- 4 references topped up with external sources (7-8 each)
- DELIVERY-REPORT.md removed from the public tree (sprint artifact; content
  preserved in PR #961 body and git history) — SPEC.md stays as build target
- Gates green: derive_counters --check pass, plugin-json 94 OK + marketplace
  guard OK, frontmatter 0 errors, model freshness 0 findings, smoke 0 failed,
  hooks exit 0 with and without AGENT_LAUNCHER_SESSION

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bzm6Pafyxja6g4jUDPcei
2026-08-21 09:11:08 +00:00

62 lines
2.4 KiB
JSON

{
"agent_name": "support-triage",
"goal": "Every morning, read overnight support emails and label each urgent / question / bug / spam with a one-line reason.",
"primitives": {
"agent": {
"model": "claude-opus-5",
"system": "You triage overnight support email. For each message assign exactly one label (urgent | question | bug | spam) and a one-line reason grounded in the email text. Never invent facts not in the email.",
"tools": [{"type": "agent_toolset_20260401"}],
"mcp_servers": [],
"skills": []
},
"environment": {
"type": "cloud",
"networking": "unrestricted",
"packages": {}
},
"session": {
"resources": [],
"vault_ids": [],
"memory_stores": [
{"access": "read_only", "instructions": "Past label decisions for consistency."}
]
},
"outcome": {
"description": "Label every overnight support email with one category and a grounded one-line reason.",
"rubric": "- Every email has exactly one label\n- Each label is one of: urgent, question, bug, spam\n- Each reason quotes or paraphrases the email (no invented facts)\n- Urgent is reserved for outages / paying-customer blockers",
"max_iterations": 5
},
"deployment": {
"schedule": {
"expression": "0 9 * * *",
"timezone": "Europe/Berlin"
}
}
},
"deferrals": [
{
"version": "v1",
"item": "Real Gmail read via MCP",
"reason": "OAuth vault credential not yet registered",
"mechanism": "Register mcp_oauth cred for the Gmail MCP server; replace the mock label_email custom tool with the real MCP toolset (always_ask)."
},
{
"version": "v2",
"item": "Auto-draft replies to question-labeled emails",
"reason": "Out of v0 scope; needs send-safe review",
"mechanism": "Add a save_draft custom tool (always_ask); keep sending as a human step."
}
],
"eval_plan": {
"success_criteria": [
"100% of emails labeled",
"0 invented facts in reasons",
"Urgent precision >= 0.9 on held-back set"
],
"held_back_cases": [
{"id": "case-1", "input": "Angry paying customer: dashboard down since 3am", "expect_label": "urgent"},
{"id": "case-2", "input": "How do I export to CSV?", "expect_label": "question"},
{"id": "case-3", "input": "Buy cheap watches!!!", "expect_label": "spam"}
]
}
}