Local Validation
Establishes local validation patterns to ensure code quality and catch issues early in the development process.
Install this skill
Security score
The Local Validation skill was audited on Mar 1, 2026 and we found 90 security issues across 3 threat categories, including 6 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Direct command execution function call
| 284 | const output = execSync(command, { |
Direct command execution function call
| 460 | const output = execSync('git diff --cached --name-only', { encoding: 'utf8' }); |
Direct command execution function call
| 476 | execSync(command, { stdio: 'inherit' }); |
Direct command execution function call
| 597 | execSync(command, { stdio: 'inherit' }); |
Direct command execution function call
| 676 | const output = execSync(command, { |
Direct command execution function call
| 827 | const child = spawn(cmd, args, { |
Template literal with variable interpolation in command context
| 154 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 216 | colorLog(`š Location: ${configPath}`, 'cyan'); |
Template literal with variable interpolation in command context
| 276 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 281 | colorLog(`\nš Running: ${description}`, 'blue'); |
Template literal with variable interpolation in command context
| 282 | colorLog(`Command: ${command}`, 'cyan'); |
Template literal with variable interpolation in command context
| 290 | colorLog(`ā ${description} - PASSED`, 'green'); |
Template literal with variable interpolation in command context
| 293 | colorLog(`ā ${description} - FAILED`, 'red'); |
Template literal with variable interpolation in command context
| 295 | colorLog(`Error: ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 407 | colorLog(`ā Passed: ${passed}`, 'green'); |
Template literal with variable interpolation in command context
| 408 | colorLog(`ā Failed: ${failed}`, 'red'); |
Template literal with variable interpolation in command context
| 409 | colorLog(`āļø Skipped: ${skipped}`, 'yellow'); |
Template literal with variable interpolation in command context
| 413 | colorLog(`š Success Rate: ${successRate}%`, |
Template literal with variable interpolation in command context
| 455 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 475 | colorLog(`š Running: ${description}`, 'blue'); |
Template literal with variable interpolation in command context
| 477 | colorLog(`ā ${description} - PASSED`, 'green'); |
Template literal with variable interpolation in command context
| 480 | colorLog(`ā ${description} - FAILED`, 'red'); |
Template literal with variable interpolation in command context
| 496 | colorLog(`š Staged files: ${stagedFiles.length}`, 'cyan'); |
Template literal with variable interpolation in command context
| 497 | stagedFiles.forEach(file => colorLog(` ${file}`, 'cyan')); |
Template literal with variable interpolation in command context
| 591 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 596 | colorLog(`š Running: ${description}`, 'blue'); |
Template literal with variable interpolation in command context
| 598 | colorLog(`ā ${description} - PASSED`, 'green'); |
Template literal with variable interpolation in command context
| 601 | colorLog(`ā ${description} - FAILED`, 'red'); |
Template literal with variable interpolation in command context
| 670 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 675 | colorLog(`š Running: ${description}`, 'blue'); |
Template literal with variable interpolation in command context
| 680 | colorLog(`ā ${description} - PASSED`, 'green'); |
Template literal with variable interpolation in command context
| 683 | colorLog(`ā ${description} - FAILED`, 'red'); |
Template literal with variable interpolation in command context
| 685 | colorLog(`Error: ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 704 | colorLog(` Lines: ${summary.total.lines.pct}%`, 'cyan'); |
Template literal with variable interpolation in command context
| 705 | colorLog(` Functions: ${summary.total.functions.pct}%`, 'cyan'); |
Template literal with variable interpolation in command context
| 706 | colorLog(` Branches: ${summary.total.branches.pct}%`, 'cyan'); |
Template literal with variable interpolation in command context
| 707 | colorLog(` Statements: ${summary.total.statements.pct}%`, 'cyan'); |
Template literal with variable interpolation in command context
| 718 | colorLog(`ā ${metric}: ${coverage}% (required: ${threshold}%)`, 'red'); |
Template literal with variable interpolation in command context
| 721 | colorLog(`ā ${metric}: ${coverage}%`, 'green'); |
Template literal with variable interpolation in command context
| 821 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 834 | colorLog(`ā ${name} completed successfully`, color); |
Template literal with variable interpolation in command context
| 836 | colorLog(`ā ${name} failed with code ${code}`, 'red'); |
Node child_process module reference
| 261 | const { execSync } = require('child_process'); |
Node child_process module reference
| 439 | const { execSync } = require('child_process'); |
Node child_process module reference
| 577 | const { execSync } = require('child_process'); |
Node child_process module reference
| 655 | const { execSync } = require('child_process'); |
Node child_process module reference
| 806 | const { spawn } = require('child_process'); |
Access to .env file
| 776 | if (process.env.ANALYZE === 'true') { |
Hex-encoded characters
| 144 | reset: '\x1b[0m', |
Hex-encoded characters
| 145 | red: '\x1b[31m', |
Hex-encoded characters
| 146 | green: '\x1b[32m', |
Hex-encoded characters
| 147 | yellow: '\x1b[33m', |
Hex-encoded characters
| 148 | blue: '\x1b[34m', |
Hex-encoded characters
| 149 | cyan: '\x1b[36m', |
Hex-encoded characters
| 150 | magenta: '\x1b[35m', |
Hex-encoded characters
| 266 | reset: '\x1b[0m', |
Hex-encoded characters
| 267 | red: '\x1b[31m', |
Hex-encoded characters
| 268 | green: '\x1b[32m', |
Hex-encoded characters
| 269 | yellow: '\x1b[33m', |
Hex-encoded characters
| 270 | blue: '\x1b[34m', |
Hex-encoded characters
| 271 | cyan: '\x1b[36m', |
Hex-encoded characters
| 272 | magenta: '\x1b[35m', |
Hex-encoded characters
| 445 | reset: '\x1b[0m', |
Hex-encoded characters
| 446 | red: '\x1b[31m', |
Hex-encoded characters
| 447 | green: '\x1b[32m', |
Hex-encoded characters
| 448 | yellow: '\x1b[33m', |
Hex-encoded characters
| 449 | blue: '\x1b[34m', |
Hex-encoded characters
| 450 | cyan: '\x1b[36m', |
Hex-encoded characters
| 451 | magenta: '\x1b[35m', |
Hex-encoded characters
| 581 | reset: '\x1b[0m', |
Hex-encoded characters
| 582 | red: '\x1b[31m', |
Hex-encoded characters
| 583 | green: '\x1b[32m', |
Hex-encoded characters
| 584 | yellow: '\x1b[33m', |
Hex-encoded characters
| 585 | blue: '\x1b[34m', |
Hex-encoded characters
| 586 | cyan: '\x1b[36m', |
Hex-encoded characters
| 587 | magenta: '\x1b[35m', |
Hex-encoded characters
| 660 | reset: '\x1b[0m', |
Hex-encoded characters
| 661 | red: '\x1b[31m', |
Hex-encoded characters
| 662 | green: '\x1b[32m', |
Hex-encoded characters
| 663 | yellow: '\x1b[33m', |
Hex-encoded characters
| 664 | blue: '\x1b[34m', |
Hex-encoded characters
| 665 | cyan: '\x1b[36m', |
Hex-encoded characters
| 666 | magenta: '\x1b[35m', |
Hex-encoded characters
| 811 | reset: '\x1b[0m', |
Hex-encoded characters
| 812 | red: '\x1b[31m', |
Hex-encoded characters
| 813 | green: '\x1b[32m', |
Hex-encoded characters
| 814 | yellow: '\x1b[33m', |
Hex-encoded characters
| 815 | blue: '\x1b[34m', |
Hex-encoded characters
| 816 | cyan: '\x1b[36c', |
Hex-encoded characters
| 817 | magenta: '\x1b[35m', |