Skip to content

fix: add shell() utility, fix execFileSync misuse across 12 tools#275

Open
TerminalGravity wants to merge 8 commits intomainfrom
fix/shell-exec-bug
Open

fix: add shell() utility, fix execFileSync misuse across 12 tools#275
TerminalGravity wants to merge 8 commits intomainfrom
fix/shell-exec-bug

Conversation

@TerminalGravity
Copy link
Collaborator

Problem

run() in lib/git.ts uses execFileSync('git', args) — always prepends git, no shell operators support.

12 tool files called run() with shell syntax (pipes, &&, ||, redirects) which would silently fail.

Fix

  • Added shell() using execSync for commands needing shell features
  • Migrated ~30 call sites across 12 files
  • Added 6 tests
  • TypeScript clean, all 49 tests pass

… 12 tools

run() uses execFileSync('git', args) which doesn't support shell operators
(pipes, &&, ||, redirects). Multiple tools were passing shell syntax to run()
which would silently fail or produce wrong results.

Added shell() utility using execSync for commands that need shell features.
Migrated all affected call sites in 12 tool files.
Added tests for shell() covering pipes, chaining, redirects, and timeouts.
Adds a ready-to-use CLAUDE.md template that makes Claude Code
automatically run preflight_check on prompts. Users can copy it
into their project to get preflight working without manual tool calls.

Referenced from Quick Start in README and examples/README.
- CLI now responds to --help/-h with usage info, profiles, and links
- CLI now responds to --version/-v with package version
- Previously, any flag just launched the interactive wizard
- Fixed README badge from Node 18+ to Node 20+ (matches engines field)
Adds well-commented example config.yml and triage.yml to examples/.preflight/
so users can copy them into their project root and customize. Every field is
documented inline with descriptions of valid values and defaults.
Export scorePrompt function and add comprehensive tests covering:
- All four scoring dimensions (specificity, scope, actionability, done condition)
- Grade boundaries (A+ for perfect, F for vague)
- Feedback generation
- Total calculation
Cover estimateTokens, extractText, extractToolNames, formatTokens,
formatCost, formatDuration, and CORRECTION_SIGNALS regex matching.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant