(skill: Skill)
| 367 | } |
| 368 | |
| 369 | private autoInstallIfNeeded(skill: Skill): void { |
| 370 | if (skill.status !== "active") return; |
| 371 | |
| 372 | const explicitAutoInstall = this.ctx.config.skillEvolution?.autoInstall ?? DEFAULTS.skillAutoInstall; |
| 373 | if (!explicitAutoInstall) { |
| 374 | this.ctx.log.debug(`SkillEvolver: skipping auto-install for "${skill.name}" (autoInstall=false)`); |
| 375 | return; |
| 376 | } |
| 377 | |
| 378 | this.installer.install(skill.id); |
| 379 | this.ctx.log.info(`SkillEvolver: auto-installed "${skill.name}" (autoInstall=true)`); |
| 380 | } |
| 381 | |
| 382 | private readSkillContent(skill: Skill): string | null { |
| 383 | const filePath = path.join(skill.dirPath, "SKILL.md"); |
no test coverage detected