Tell the agent a file path names an output, not a file - #214
Draft
AshishKumar4 wants to merge 1 commit into
Draft
Conversation
|
I've reviewed the change thoroughly. My assessment: Correctness verified:
Minor observations (non-blocking):
I found no actionable issues introduced by this change. LGTM! |
AshishKumar4
marked this pull request as draft
August 14, 2026 22:34
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.
What does this change?
An instruction that names a file path for its result has no defined behaviour, because there is no
path to write to.
writeFiletakes aworkpiece— every write goes inside one specific Gadget, as one of thatGadget's source files. There is no free-standing file path, and the system prompt never says so. When
a skill or a user says "save it to
notes.md", the agent is left to invent a destination: sometimesit answers in chat, sometimes it writes a
.mdinto a Gadget's source tree where it renders as coderather than as a document, sometimes it creates the right output. It varies between runs.
This is not hypothetical for skill libraries. In the one this deployment publishes, 93 of 97 skills
end by naming a file path for their deliverable.
The standard-formats section is where the mapping belongs: it already lists the deployment's formats
with their nouns and blueprint IDs immediately below, and it is already the place that tells the
agent to instantiate a format rather than build an equivalent.
Why is this obviously correct and trivially verifiable?
Four added lines of prompt text in one function, and no code path changes. The complete effect is the
sentence itself, read in place.
The wording names no particular path convention, so it does not encode any one library's habits — it
states the rule that follows from
writeFilerequiring a workpiece. It reuses the vocabulary alreadypresent in the surrounding prompt (
createGadget, "format", RPC methods), and defers to the formatlist rendered directly beneath it rather than hard-coding any blueprint ID or extension.
describeStandardFormats()has no test seam, and neither does any other prompt text in this file;adding one would mean extracting the method purely to assert prose, which would be a larger and
less obvious change than the patch itself. Verified with
pnpm lint(lint plus type-check) andpnpm test, both clean.Checklist
Checking every item does not guarantee acceptance. Maintainers determine whether
a pull request meets the contribution policy.