Why it is separate from CreateSkill
Discovery is read-only; creation mutates. Keeping the two apart is the permission boundary that makes "never auto-create" real rather than a promise in prose: this skill cannot write a skill even if asked.
Discover WHICH new skills you should create, from your own work history plus your satisfaction/frustration signals.
The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.
Discovery is read-only; creation mutates. Keeping the two apart is the permission boundary that makes "never auto-create" real rather than a promise in prose: this skill cannot write a skill even if asked.
Example 1: routine gap scan
User: "What skills should I build based on my recent work?"
→ Invokes Scan workflow
→ Runs Tools/CollectSignals.ts over the last 45 days
→ Clusters sessions + low ratings, dedups against existing skills/workflows
→ Returns a ranked shortlist with evidence per proposal; nothing is created
Example 2: frustration-led scan
User: "I keep hitting the same wall — am I missing a skill?"
→ Invokes Scan workflow with the frustration store as the lead signal
→ Surfaces discipline gaps hiding under topics that look covered
→ User accepts one proposal → handed to CreateSkill as a separate step
Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.
Workflows/Scan.md what skills should I build, skill gap, suggest skills, am I missing a skill
Deterministic executables the workflows call — the code that does the real work, not prompt scaffolding.
CollectSignals.tsSay any of these to your DA and LifeOS activates the SuggestSkills skill automatically:
Or invoke explicitly:
Skill("SuggestSkills") Install LifeOS on your machine — your DA gets the SuggestSkills skill plus 55 others, all hooked into one Life OS.