Repository navigation
Conversation
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a focused Claude prompt-dispatch bug fix: existing skill invocations retain the full user request, with targeted coverage for normal sends, attachments, steering, and edge cases. No product defaults, schemas, infrastructure, or static-analysis settings are changed. You can add or adjust custom eligibility rules. Learn more. |
macroscopeapp
Bot
dismissed
their stale review
October 3, 2026 17:17
Dismissing prior approval to re-evaluate fbee41f
…hips Claude Code expands a skill from the last text block and moves the command ahead of earlier blocks, so "you will $implement fixes" reached the model as the command, then "you will", then the skill body. The earlier block now carries the whole request with mentions rewritten to /name, and the last block still holds the invocation and its arguments. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ScottN-PV
force-pushed
the
fix/13256-claude-skill-chips-v2
branch
from
October 11, 2026 06:53
fbee41f to
a6e8fb9
Compare
macroscopeapp
Bot
dismissed
their stale review
October 11, 2026 06:53
Dismissing prior approval to re-evaluate a6e8fb9
Contributor
Author
|
@coderabbitai review |
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A Claude skill chip that comes after other text splits the request.
you will $implement fixesgoes out as two text blocks,you willand/implement fixes. Claude Code expands the last block and puts the command ahead of the earlier text, so the model reads the command, thenyou willon its own, then the skill body. With Ultrathink selected,$implement fixessplits the same way and leavesUltrathink:on its own.The V2 rewrite kept the planner as it was, so this reproduces through
ClaudeAdapterV2on main at43bd6677.Change
When text comes before the dispatched chip, the earlier block now holds the whole request with chips written as
/name, for exampleyou will /implement fixes. The last block is unchanged:/nameplus the text after the chip, so the skill loads with the same arguments. Text after the chip, including attachment path notes, now appears in both blocks. A chip that opens the prompt, with no effort prefix, still sends one command block.The fix is in
planClaudeSkillDispatch.ClaudeAdapterV2calls it for sends and steering, with and without images, soClaudeAdapterV2.tschanges a comment only.Scope and approval
Closes #13256. Maintainer triage confirmed the bug and described this block layout: #13256 (comment)
This rebuilds #13299 on V2. Macroscope approved #13299 before it was closed because V2 removed
ClaudeAdapter.ts: #13299 (comment)Not in this PR: the setting requested in the issue thread to turn off typed
$skill mentions.Verification
An agent ran everything below on Linux (Node 24.21.0, Claude Code 2.1.286) from
apps/server. Nothing was checked by hand.bf725cb80don Oct 11. The three new adapter tests now build the adapter the way main's other adapter tests do (crypto,stopTask,McpProviderSessions); the checks below were rerun on the rebased head.vp test run src/provider/Drivers/ClaudeSkillDispatch.test.ts src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts: 242 passed.ClaudeSkillDispatch.tschange reverted: 11 failed, 231 passed. Eight are planner cases. Three are new adapter tests that start a turn with a discovered skill and assert the SDK message content: a plain send, a send with an image, and a steering message.vp run --filter t3 typecheckexited 0.vp lintandvp fmt --checkon the four changed files passed. Lint's one warning is in unchanged code.Native capture: a temporary harness ran the
ClaudeAdapterV2turn path through the Agent SDK query runner and the installed CLI, against a fake Messages API on localhost with a fixture skill. No inference ran. These are the user text blocks in the API request:you will $implement fixesyou will, skill bodyyou will /implement fixes, skill bodyplease $implement the fixes+ a second paragraphplease, skill body$implement fixeswith UltrathinkUltrathink:, skill bodyUltrathink:\n/implement fixes, skill body$implement fixesThe skill expanded with its arguments in every case.
Real inference: one turn on each side through a second temporary harness, with the live SDK runner and
claude-fable-5-1. The skill tells the model to replySKILL-RAN, then repeat the user's full request. Prompt:you will $echo-request fixes.SKILL-RAN//echo-request fixes. The reply leaves outyou will.SKILL-RAN/you will /echo-request fixes./echo-requestin the earlier block did not start the skill a second time.That is one run per side on one model.
Not checked: a turn started from a T3 client, images or steering in a native capture (the adapter tests cover both), and Windows or macOS.
Model: Claude Opus 5.5, Claude Fable 5.1 (review), GPT-6-Astra (review). Harness: Claude Code, Codex.