Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Lightweight session execution skill. Resumes existing team-coordinate sessions for pure execution via team-worker agents. No analysis, no role generation -- only loads and executes. Session path required. Triggers on "Team Executor".
.claude/skills/catlog22-team-executor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 357% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 195% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 15% | 0% |
Lightweight session execution skill: load session -> reconcile state -> spawn team-worker agents -> execute -> deliver. No analysis, no role generation -- only executes existing team-coordinate sessions.
+---------------------------------------------------+
| Skill(skill="team-executor") |
| args="--session=<path>" [REQUIRED] |
+-------------------+-------------------------------+
| Session Validation
+---- --session valid? ----+
| NO | YES
v v
Error immediately Orchestration Mode
(no session) -> executor
|
+-------+-------+-------+
v v v v
[team-worker agents loaded from session role-specs]CRITICAL: Session validation MUST occur before any execution.
Extract from $ARGUMENTS:
--session=<path>: Path to team-coordinate session folder (REQUIRED)--session provided:team-session.json exists and valid JSONtask-analysis.json exists and valid JSONrole-specs/ directory has at least one .md fileteam-session.json#roles has corresponding .md file in role-specs/This skill is executor-only. Workers do NOT invoke this skill -- they are spawned as team-worker agents directly.
| Scenario | Action | |----------|--------| | No --session | ERROR immediately | | --session invalid | ERROR with specific reason | | Valid session | Orchestration Mode -> executor |
Invocation: Skill(skill="team-executor", args="--session=<session-folder>")
Lifecycle:
Validate session
-> executor Phase 0: Reconcile state (reset interrupted, detect orphans)
-> executor Phase 1: Spawn first batch team-worker agents (background) -> STOP
-> Worker executes -> callback -> executor advances next step
-> Loop until pipeline complete -> Phase 2 report + completion actionUser Commands (wake paused executor):
| Command | Action | |---------|--------| | check / status | Output execution status graph, no advancement | | resume / continue | Check worker states, advance next step |
| Role | File | Type | |------|------|------| | executor | roles/executor/role.md | built-in orchestrator | | (dynamic) | <session>/role-specs/<role-name>.md | loaded from session |
When executor spawns workers, use team-worker agent with role-spec path:
spawn_agent({
agent_type: "team_worker",
task_name: "<task-id>",
fork_turns: "none",
message: `## Role Assignment
role: <role>
role_spec: <session-folder>/role-specs/<role>.md
session: <session-folder>
session_id: <session-id>
requirement: <task-description>
inner_loop: <true|false>
Read role_spec file to load Phase 2-4 domain instructions.
## Task Context
task_id: <task-id>
title: <task-title>
description: <task-description>
pipeline_phase: <pipeline-phase>
## Upstream Context
<prev_context>`
})After spawning, use wait_agent({ timeout_ms: 1800000 }) to collect results. If result.timed_out, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use close_agent({ target: <name> }) each worker.
team-executor loads roles dynamically from session role-specs. Use reasoning_effort based on the role type defined in the session:
reasoning_effort: "high"reasoning_effort: "medium"reasoning_effort: "high"On resume, executor reconciles session state with actual running agents:
const running = list_agents({})
// Compare with session's task-analysis.json active tasks
// Reset orphaned tasks (in_progress but agent gone) to pendingsend_message({ target: "<task-id>", message: "..." }) -- queue supplementary contextfollowup_task({ target: "<task-id>", message: "..." }) -- assign new work to inner_loop workerclose_agent({ target: "<task-id>" }) -- cleanup completed workerWhen pipeline completes (all tasks done), executor presents an interactive choice:
functions.request_user_input({
questions: [{
question: "Team pipeline complete. What would you like to do?",
header: "Completion",
multiSelect: false,
options: [
{ label: "Archive & Clean (Recommended)", description: "Archive session, clean up team" },
{ label: "Keep Active", description: "Keep session for follow-up work" },
{ label: "Export Results", description: "Export deliverables to target directory, then clean" }
]
}]
})| Choice | Steps | |--------|-------| | Archive & Clean | Update session status="completed" -> output final summary with artifact paths | | Keep Active | Update session status="paused" -> output: "Resume with: Skill(skill='team-executor', args='--session=<path>')" | | Export Results | functions.request_user_input(target path) -> copy artifacts to target -> Archive & Clean |
| Scenario | Skill | |----------|-------| | New task, no session | team-coordinate | | Existing session, resume execution | team-executor | | Session needs new roles | team-coordinate (with resume) | | Pure execution, no analysis | team-executor |
| Scenario | Resolution | |----------|------------| | No --session provided | ERROR immediately with usage message | | Session directory not found | ERROR with path, suggest checking path | | team-session.json missing | ERROR, session incomplete, suggest re-run team-coordinate | | task-analysis.json missing | ERROR, session incomplete, suggest re-run team-coordinate | | No role-specs in session | ERROR, session incomplete, suggest re-run team-coordinate | | Role-spec file not found | ERROR with expected path | | capability_gap reported | Warn only, cannot generate new role-specs | | Fast-advance spawns wrong task | Executor reconciles on next callback | | Completion action fails | Default to Keep Active, log warning |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,148 | 6,438 | -37% | 1 | 1 | 0% | 1,754 | 2,132 | +22% | 0 | 0 | — |
case-02 | fail→fail | 4,991 | 8,127 | +63% | 1 | 1 | 0% | 307 | 2,121 | +591% | 0 | 0 | — |
case-03 | fail→fail | 5,705 | 8,391 | +47% | 1 | 1 | 0% | 853 | 2,832 | +232% | 0 | 0 | — |
case-04 | fail→fail | 13,639 | 5,491 | -60% | 1 | 1 | 0% | 2,256 | 2,086 | -8% | 0 | 0 | — |
case-05 | fail→pass | 9,492 | 14,493 | +53% | 1 | 1 | 0% | 637 | 2,911 | +357% | 0 | 0 | — |
case-06 | pass→pass | 7,022 | 8,565 | +22% | 1 | 1 | 0% | 1,234 | 2,563 | +108% | 0 | 0 | — |
case-07 | pass→pass | 4,800 | 3,854 | -20% | 1 | 1 | 0% | 845 | 2,351 | +178% | 0 | 0 | — |
case-08 | fail→pass | 14,439 | 12,803 | -11% | 1 | 1 | 0% | 1,357 | 2,675 | +97% | 0 | 0 | — |
case-09 | fail→pass | 4,740 | 4,696 | -1% | 1 | 1 | 0% | 908 | 2,675 | +195% | 0 | 0 | — |
case-19 | fail→fail | 5,375 | 10,804 | +101% | 1 | 1 | 0% | 882 | 2,172 | +146% | 0 | 0 | — |
case-10 | fail→pass | 11,369 | 2,511 | -78% | 1 | 1 | 0% | 1,944 | 2,205 | +13% | 0 | 0 | — |
case-11 | pass→pass | 11,508 | 1,853 | -84% | 1 | 1 | 0% | 1,994 | 2,048 | +3% | 0 | 0 | — |
case-12 | fail→pass | 10,623 | 1,889 | -82% | 1 | 1 | 0% | 1,743 | 2,011 | +15% | 0 | 0 | — |
case-13 | pass→fail | 4,878 | 6,047 | +24% | 1 | 1 | 0% | 809 | 2,042 | +152% | 0 | 0 | — |
case-14 | fail→pass | 8,548 | 7,502 | -12% | 1 | 1 | 0% | 1,591 | 3,173 | +99% | 0 | 0 | — |
case-15 | fail→pass | 6,631 | 2,829 | -57% | 1 | 1 | 0% | 1,016 | 2,177 | +114% | 0 | 0 | — |
case-16 | fail→pass | 6,077 | 3,613 | -41% | 1 | 1 | 0% | 1,063 | 2,331 | +119% | 0 | 0 | — |
case-17 | fail→pass | 9,862 | 4,227 | -57% | 1 | 1 | 0% | 1,495 | 2,482 | +66% | 0 | 0 | — |
case-18 | fail→pass | 17,615 | 3,042 | -83% | 1 | 1 | 0% | 1,966 | 2,257 | +15% | 0 | 0 | — |
case-20 | fail→pass | 4,851 | 3,512 | -28% | 1 | 1 | 0% | 185 | 2,347 | +1169% | 0 | 0 | — |
case-21 | fail→pass | 4,586 | 6,692 | +46% | 1 | 1 | 0% | 240 | 3,042 | +1168% | 0 | 0 | — |
case-22 | fail→fail | 11,401 | 24,072 | +111% | 1 | 1 | 0% | 1,410 | 3,902 | +177% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 13 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.