( pattern: Pattern, tool: Tool, targetDir: string, templatesRoot: string, dryRun: boolean, )
| 169 | } |
| 170 | |
| 171 | async function copyL2Templates( |
| 172 | pattern: Pattern, |
| 173 | tool: Tool, |
| 174 | targetDir: string, |
| 175 | templatesRoot: string, |
| 176 | dryRun: boolean, |
| 177 | ) { |
| 178 | if (!PATTERNS_NEEDING_FIX.has(pattern) && !L2_PATTERNS.has(pattern)) return; |
| 179 | |
| 180 | await copyTemplateSkill(templatesRoot, 'SKILL.md.minimal-fix', targetDir, tool, 'minimal-fix', dryRun); |
| 181 | |
| 182 | if (L2_PATTERNS.has(pattern) || pattern === 'dependency-sweeper') { |
| 183 | await copyTemplateVerifier(templatesRoot, targetDir, tool, dryRun); |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | function formatTokenCap(n: number): string { |
| 188 | if (n >= 1_000_000) return `${n / 1_000_000}M`; |
no test coverage detected