diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..a8e7ef68 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "semi": true, + "tabWidth": 2, + "printWidth": 200, + "arrowParens": "avoid" +} diff --git a/scripts/hooks/doc-file-warning.js b/scripts/hooks/doc-file-warning.js index 497d024a..f45edc30 100644 --- a/scripts/hooks/doc-file-warning.js +++ b/scripts/hooks/doc-file-warning.js @@ -5,20 +5,24 @@ */ let data = ''; -process.stdin.on('data', c => data += c); +process.stdin.on('data', c => (data += c)); process.stdin.on('end', () => { try { const input = JSON.parse(data); const filePath = input.tool_input?.file_path || ''; - if (/\.(md|txt)$/.test(filePath) && - !/(README|CLAUDE|AGENTS|CONTRIBUTING|CHANGELOG|LICENSE|SKILL)\.md$/i.test(filePath) && - !/\.claude[\/\\]plans[\/\\]/.test(filePath) && - !/(^|[\/\\])(docs|skills|\.history)[\/\\]/.test(filePath)) { + if ( + /\.(md|txt)$/.test(filePath) && + !/(README|CLAUDE|AGENTS|CONTRIBUTING|CHANGELOG|LICENSE|SKILL)\.md$/i.test(filePath) && + !/\.claude[/\\]plans[/\\]/.test(filePath) && + !/(^|[/\\])(docs|skills|\.history)[/\\]/.test(filePath) + ) { console.error('[Hook] WARNING: Non-standard documentation file detected'); console.error('[Hook] File: ' + filePath); console.error('[Hook] Consider consolidating into README.md or docs/ directory'); } - } catch { /* ignore parse errors */ } + } catch { + /* ignore parse errors */ + } console.log(data); }); diff --git a/scripts/lib/project-detect.js b/scripts/lib/project-detect.js index 9b9bb5b1..cac0f060 100644 --- a/scripts/lib/project-detect.js +++ b/scripts/lib/project-detect.js @@ -165,10 +165,7 @@ function getPackageJsonDeps(projectDir) { const pkgPath = path.join(projectDir, 'package.json'); if (!fs.existsSync(pkgPath)) return []; const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); - return [ - ...Object.keys(pkg.dependencies || {}), - ...Object.keys(pkg.devDependencies || {}) - ]; + return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})]; } catch { return []; } @@ -190,12 +187,17 @@ function getPythonDeps(projectDir) { content.split('\n').forEach(line => { const trimmed = line.trim(); if (trimmed && !trimmed.startsWith('#') && !trimmed.startsWith('-')) { - const name = trimmed.split(/[>== { - const name = m.replace(/"/g, '').split(/[>== 0) { let depList = []; switch (rule.language) { - case 'python': depList = pyDeps; break; + case 'python': + depList = pyDeps; + break; case 'typescript': - case 'javascript': depList = npmDeps; break; - case 'golang': depList = goDeps; break; - case 'rust': depList = rustDeps; break; - case 'php': depList = composerDeps; break; - case 'elixir': depList = elixirDeps; break; + case 'javascript': + depList = npmDeps; + break; + case 'golang': + depList = goDeps; + break; + case 'rust': + depList = rustDeps; + break; + case 'php': + depList = composerDeps; + break; + case 'elixir': + depList = elixirDeps; + break; } - hasDep = rule.packageKeys.some(key => - depList.some(dep => dep.toLowerCase().includes(key.toLowerCase())) - ); + hasDep = rule.packageKeys.some(key => depList.some(dep => dep.toLowerCase().includes(key.toLowerCase()))); } if (hasMarker || hasDep) {