CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/sub-agent-delegation

Meta-skill: how to pass skills/context to Claude sub-agents that start with fresh context, with documented SDK gotchas.

94

1.50x
Quality

94%

Does it follow best practices?

Impact

96%

1.50x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "Tests whether the agent knows plugin-specific gotchas: skills must be inlined explicitly in the Task tool prompt (no filesystem auto-discovery), the echo-skills validation handshake with specific JSON protocol, failing loudly on mismatch, and AskUserQuestion unavailability.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Skill inlined in prompt",
      "description": "The Task tool prompt string contains the full skill content embedded inline — not a file path reference or assumption that the skill file will be auto-discovered from .claude/skills/",
      "max_score": 18
    },
    {
      "name": "No filesystem discovery reliance",
      "description": "The code does NOT rely on .claude/skills/ filesystem discovery as the mechanism for passing skills to the sub-agent — skills are explicitly included in the prompt",
      "max_score": 12
    },
    {
      "name": "Echo preamble present",
      "description": "The Task tool prompt includes a preamble that instructs the sub-agent to echo back its skill names as the very first action (echo-skills validation handshake)",
      "max_score": 16
    },
    {
      "name": "SKILLS_ECHO JSON format",
      "description": "Sub-agent's first output uses the specific skills_echo protocol — a JSON line with key 'skills_echo' listing the received skills, e.g. {\"skills_echo\": [\"review_clause\", \"flag_risk\"]}",
      "max_score": 12
    },
    {
      "name": "Fail loudly on mismatch",
      "description": "When skills are missing, the sub-agent signals 'MISSING SKILLS' and stops — by raising RuntimeError('MISSING SKILLS') or printing a 'MISSING SKILLS' message and aborting rather than continuing silently",
      "max_score": 14
    },
    {
      "name": "Orchestrator parses echo",
      "description": "After the Task tool returns, the orchestrator code parses the skills_echo JSON from the sub-agent's first message and verifies the skill set",
      "max_score": 12
    },
    {
      "name": "Skills not implicitly assumed",
      "description": "No comment or code assumes that skills are available to the sub-agent by any means other than explicit inline inclusion in the prompt",
      "max_score": 8
    },
    {
      "name": "No AskUserQuestion in sub-agent",
      "description": "Sub-agent prompt does NOT instruct or allow the sub-agent to ask clarifying questions — AskUserQuestion is unavailable in sub-agents (GH #34592)",
      "max_score": 8
    }
  ]
}

README.md

tile.json