From e522091f7400bd43e6b2365d2ac5640a30c6c30d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 22 Apr 2026 08:31:37 +0200 Subject: [PATCH] chore(skills): pin team-mode teammates to Sonnet 4.6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sprint 37 observed Opus 4.7 teammates in team mode ignoring scope rules ("don't modify files outside your team"), leaving tasks half-done, and failing to report back via SendMessage. Closest public issues are anthropics/claude-code#47598 (4.6 subagent delegation regression) and claude-agent-sdk-python#577 (SendMessage delivery in team mode). No 4.7-specific team-mode issue published yet but symptoms are real. Fix: every Task spawn with a team_name argument now passes model: "sonnet". The team lead (the session running the skill) stays on whatever model the user selected — typically Opus. Inline Agent spawns without team_name (one-shot reviewers in /pr-review, research subagents, general-purpose one-offs) are exempt — they keep their default model. The pin targets long-running coordination specifically, not every Agent call. Affected skills: - sprint-start: step 8d Task template adds model: "sonnet" and documents the rule with the 4.7 regression context - workshop-start: step 5 spawn list adds the model pin with a one-line reason --- .claude/skills/sprint-start/SKILL.md | 14 ++++++++++++++ .claude/skills/workshop-start/SKILL.md | 1 + 2 files changed, 15 insertions(+) diff --git a/.claude/skills/sprint-start/SKILL.md b/.claude/skills/sprint-start/SKILL.md index 29f501407..05da9aad8 100644 --- a/.claude/skills/sprint-start/SKILL.md +++ b/.claude/skills/sprint-start/SKILL.md @@ -365,11 +365,25 @@ using `TaskUpdate` with `addBlockedBy`. For each agent from the `**Agents:**` line, spawn a teammate in the background. Spawn all agents in parallel (one message, multiple Task calls): +**Model pin (MANDATORY for team members):** every team-mode spawn — +i.e. any `Task` with a `team_name` argument — must pass `model: "sonnet"`. +Sprint 37 observed Opus 4.7 teammates ignoring scope rules, leaving +tasks half-done, and failing to report back via SendMessage. Sonnet 4.6 +follows literal rules block discipline better. The **team lead** +(this session, running `/sprint-start`) stays on whatever model the +user has selected — typically Opus. + +**Inline (non-team) Agent spawns are exempt.** One-shot reviewers +(`/pr-review`), research subagents, and other `Task` calls without a +`team_name` keep their default model. The pin applies to the +long-running team-coordination path specifically, not every Agent call. + ``` Task( subagent_type: "{name_lowercase}", team_name: "sprint-{N}-{team}", name: "{name_lowercase}", + model: "sonnet", prompt: "You are on the {team} team for Sprint {N}. Branch: `sprint-{N}/{team}` diff --git a/.claude/skills/workshop-start/SKILL.md b/.claude/skills/workshop-start/SKILL.md index bed632c1a..082f7c1b0 100644 --- a/.claude/skills/workshop-start/SKILL.md +++ b/.claude/skills/workshop-start/SKILL.md @@ -61,6 +61,7 @@ Use the Task tool to spawn each agent as a teammate. Each call should: - Set `team_name` to the workshop team name - Set `name` to the agent name (e.g., "gestalt") - Set `subagent_type` to the matching agent type (same as name — see reference table) +- **Set `model: "sonnet"`** — team-mode participants pin to Sonnet 4.6 for literal-rule-following discipline. Opus 4.7 was observed ignoring scope rules and failing to report back in team mode (Sprint 37). The *team lead* (this session) stays on whatever model the user has selected. - Provide a prompt telling the agent to check TaskList for their assigned task Spawn all agents in parallel (one Task call per agent in a single message). Agents will appear as teammates in the Claude Code UI and pick up their tasks from the shared task list.