Skip to main content

typescript-hook-writer

Provides expert guidance for developing TypeScript hooks for Claude Code, ensuring type safety and efficient testing.

Install this skill

or
0/100

Security score

The typescript-hook-writer skill was audited on Feb 27, 2026 and we found 32 security issues across 3 threat categories, including 3 high-severity. Review the findings below before installing.

Categories Tested

Security Issues

high line 403

Direct command execution function call

SourceSKILL.md
403execSync(`command -v ${command}`, { stdio: 'ignore' });
high line 427

Direct command execution function call

SourceSKILL.md
427execSync(`(${fullCommand} &)`, {
high line 434

Direct command execution function call

SourceSKILL.md
434execSync(fullCommand, {
medium line 179

Template literal with variable interpolation in command context

SourceSKILL.md
179console.error(`Hooks directory not found: ${HOOKS_DIR}`);
medium line 235

Template literal with variable interpolation in command context

SourceSKILL.md
235console.log(`✓ Built ${hook.name}`);
medium line 241

Template literal with variable interpolation in command context

SourceSKILL.md
241console.error(`✗ Failed to build ${hook.name}:`, error);
medium line 259

Template literal with variable interpolation in command context

SourceSKILL.md
259console.log(`Found ${hooks.length} hooks:\n`);
medium line 264

Template literal with variable interpolation in command context

SourceSKILL.md
264console.log(`\n✓ Built ${hooks.length} hooks successfully`);
medium line 403

Template literal with variable interpolation in command context

SourceSKILL.md
403execSync(`command -v ${command}`, { stdio: 'ignore' });
medium line 423

Template literal with variable interpolation in command context

SourceSKILL.md
423const fullCommand = `${command} ${args.map(arg => `"${arg}"`).join(' ')}`;
medium line 427

Template literal with variable interpolation in command context

SourceSKILL.md
427execSync(`(${fullCommand} &)`, {
medium line 453

Template literal with variable interpolation in command context

SourceSKILL.md
453if (new RegExp(`^${regexPattern}$`).test(filePath)) {
medium line 571

Template literal with variable interpolation in command context

SourceSKILL.md
571logError(`Failed to format ${filePath}: ${error}`);
medium line 690

Template literal with variable interpolation in command context

SourceSKILL.md
690logWarning(`Found ${outdatedDeps.length} outdated dependencies`);
medium line 744

Template literal with variable interpolation in command context

SourceSKILL.md
744throw new Error(`EXIT_${code}`);
medium line 1212

Template literal with variable interpolation in command context

SourceSKILL.md
1212logError(`⛔ Blocked: Cannot modify sensitive file '${filePath}'`);
medium line 1213

Template literal with variable interpolation in command context

SourceSKILL.md
1213logError(` Pattern: ${match.pattern}`);
medium line 1230

Template literal with variable interpolation in command context

SourceSKILL.md
1230const logLine = `[${getTimestamp()}] ${command}`;
medium line 1252

Template literal with variable interpolation in command context

SourceSKILL.md
1252logWarning(`⚠️ Warning: Potential credential detected in ${filePath}`);
medium line 1253

Template literal with variable interpolation in command context

SourceSKILL.md
1253logWarning(` Pattern matched: ${pattern}`);
medium line 1303

Template literal with variable interpolation in command context

SourceSKILL.md
1303logError(`[DEBUG] Processing file: ${filePath}`);
medium line 1304

Template literal with variable interpolation in command context

SourceSKILL.md
1304logError(`[DEBUG] Extensions: ${JSON.stringify(supportedExtensions)}`);
low line 355

Node child_process module reference

SourceSKILL.md
355import { execSync } from 'child_process';
low line 430

Access to .env file

SourceSKILL.md
430env: { ...process.env, ...options.env },
low line 437

Access to .env file

SourceSKILL.md
437env: { ...process.env, ...options.env },
low line 1208

Access to .env file

SourceSKILL.md
1208const blockedPatterns = ['.env', '.env.*', '*.pem', '*.key', '*credentials*'];
low line 1436

Access to .env file

SourceSKILL.md
1436matchesPattern(path, ['*.env']) // Glob matching
low line 1448

External URL reference

SourceSKILL.md
1448- [Claude Code Hooks Docs](https://code.claude.com/docs/en/hooks)
low line 1449

External URL reference

SourceSKILL.md
1449- [TypeScript Handbook](https://www.typescriptlang.org/docs/)
low line 1450

External URL reference

SourceSKILL.md
1450- [esbuild Documentation](https://esbuild.github.io/)
low line 1451

External URL reference

SourceSKILL.md
1451- [Vitest Documentation](https://vitest.dev/)
low line 1452

External URL reference

SourceSKILL.md
1452- [PRPM Publishing Guide](https://prpm.dev/docs/publishing)
Scanned on Feb 27, 2026
View Security Dashboard
Installation guide →