| … | … | @@ -145,11 +145,19 @@ for (const repo of repos) { |
| 145 | 145 | |
| 146 | 146 | techStack[repo.name].runtime = detectedRuntime; |
| 147 | 147 | |
| 148 | | // Create skills.md |
| 149 | | const skillsContent = generateSkillsMarkdown(repo, packageJson, readme, repoMetadata); |
| 150 | | fs.writeFileSync(path.join(repoDir, 'skills.md'), skillsContent); |
| 151 | | |
| 152 | | console.log(` ✓ Created skills.md`); |
| 148 | // Create skills.md — but NEVER overwrite a Phase-1B-enriched file. This |
| 149 | // Phase-1A generator only writes the placeholder API section; an enriched |
| 150 | // skills.md (no placeholder marker) holds real API docs we must preserve. |
| 151 | const skillsPath = path.join(repoDir, 'skills.md'); |
| 152 | const enriched = fs.existsSync(skillsPath) && |
| 153 | !fs.readFileSync(skillsPath, 'utf8').includes('To be enriched in Phase 1B'); |
| 154 | if (enriched) { |
| 155 | console.log(` ↩ Preserved enriched skills.md`); |
| 156 | } else { |
| 157 | const skillsContent = generateSkillsMarkdown(repo, packageJson, readme, repoMetadata); |
| 158 | fs.writeFileSync(skillsPath, skillsContent); |
| 159 | console.log(` ✓ Created skills.md`); |
| 160 | } |
| 153 | 161 | |
| 154 | 162 | // Rate limiting: sleep briefly every 10 repos |
| 155 | 163 | if (processedCount % 10 === 0) { |