fix(skills): pass interactive flag to runSkillsCli in add command#405
Merged
Conversation
When -y/--yes is supplied the action computed interactive=false but did not forward it to runSkillsCli, which defaulted to interactive=true. In interactive mode the close handler calls process.stderr.write on the buffered stderr, which raises EPIPE when the parent process has a piped stderr (e.g. integration test spawnSync). The uncaught write error caused Node to exit with code 1 instead of propagating the real upstream exit code. Fix: pass interactive to runSkillsCli so non-interactive runs use piped stdio and avoid the write. Also forward result.stderr explicitly in non-interactive failure paths so egress-blocked and other markers are still visible to the caller's stderr stream. Generated with AI Co-Authored-By: codemie-ai <codemie.ai@gmail.com>
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.
Summary
When
-y/--yesis supplied, theskills addaction computedinteractive=falsebut did not forward it torunSkillsCli, which defaulted tointeractive=true. In interactive mode the close handler callsprocess.stderr.writeon the buffered stderr. When the parent process has a piped stderr (e.g. integration testspawnSync), this raises EPIPE — an uncaught write error that causes Node to exit with code1instead of propagating the real upstream exit code.Changes
interactivetorunSkillsCliinskills addso non-interactive runs (-y) use piped stdio and avoid the EPIPEresult.stderrtoprocess.stderrin non-interactive failure paths so egress-blocked and other markers remain visible to the callerTesting
classifies CODEMIE_SKILL_EGRESS_BLOCKED stderr as egress_blocked exit codenow passes (wasexpected 1 to be 7)propagates non-zero exit code from upstream spawncontinues to passChecklist
main