open source is social v-it.org
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: non-interactive npx for skills install (postinstall + learn)

Both postinstall.js (npm install hook) and cmd/learn.js (vit learn)
spawn `npx skills add` via spawnSync. The trailing -y goes to the
skills CLI, not to npx, so on a fresh machine without cached
skills@X.Y.Z, npx halts with an interactive "Ok to proceed?" —
blocking npm install and any coding-agent-driven skill learn.

Pass --yes to npx directly (suppresses the prompt) and set CI=true in
env as belt-and-suspenders against any other TTY-gated checks in the
npm lifecycle. Matches the pattern applied in solstone Makefile.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+4 -2
+2 -1
src/cmd/learn.js
··· 54 54 } 55 55 } 56 56 57 - const addArgs = ['skills', 'add', tempDir, '-a', 'claude-code', '-y']; 57 + const addArgs = ['--yes', 'skills', 'add', tempDir, '-a', 'claude-code', '-y']; 58 58 if (isGlobal) addArgs.push('-g'); 59 59 const addResult = spawnSync('npx', addArgs, { 60 60 encoding: 'utf-8', 61 61 stdio: ['pipe', 'pipe', 'pipe'], 62 + env: { ...process.env, CI: 'true' }, 62 63 }); 63 64 if (addResult.status !== 0) { 64 65 const errText = (addResult.stderr || addResult.stdout || '').trim();
+2 -1
src/postinstall.js
··· 11 11 const skillDir = join(currentDir, '..', 'skills', 'vit'); 12 12 const result = spawnSync( 13 13 'npx', 14 - ['skills', 'add', skillDir, '-g', '-a', 'claude-code', '-y'], 14 + ['--yes', 'skills', 'add', skillDir, '-g', '-a', 'claude-code', '-y'], 15 15 { 16 16 encoding: 'utf-8', 17 17 stdio: ['pipe', 'pipe', 'pipe'], 18 + env: { ...process.env, CI: 'true' }, 18 19 } 19 20 ); 20 21