Skip to content

refactor(skill): effectify SkillService as scoped service#17810

Closed
kitlangton wants to merge 1 commit intoeffectify-filefrom
effectify-skill
Closed

refactor(skill): effectify SkillService as scoped service#17810
kitlangton wants to merge 1 commit intoeffectify-filefrom
effectify-skill

Conversation

@kitlangton
Copy link
Contributor

@kitlangton kitlangton commented Mar 16, 2026

Summary

  • Convert Skill namespace to SkillService class extending ServiceMap.Service with Effect.fn methods
  • Lazy init via ensureScanned() promise memoization — scan runs on first get/all/dirs/available call, not in layer constructor
  • Dynamic import("@/session") in error handler to break circular dep (instances.tsskill.ts@/session@/tool)
  • Legacy promise facade preserved via runPromiseInstance
  • Pure function fmt() stays on the Skill namespace (no state needed)

Test plan

  • All 11 skill discovery tests pass
  • Full suite passes (1340 pass, 0 fail)
  • Typecheck clean

Stack

Base: dev

Merged

  1. #17845 effectify-file

Current / Remaining
2. #17810 effectify-skill - current

Convert Skill namespace to SkillService class with Effect.fn methods.
Scanning runs eagerly in layer constructor — needs lazy init to avoid
breaking unrelated tests (same pattern as FileService).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant