From bb14bcb3bc50660b1c0602983ca052cf9ad24cfe Mon Sep 17 00:00:00 2001 From: Acbox Date: Tue, 31 Mar 2026 15:35:57 +0800 Subject: [PATCH] refactor: move skills directory from .skills to skills and enrich prompt - Change skills storage path from `/data/.skills` to `/data/skills` - Add usage instructions and directory location to the Skills section in the system prompt --- internal/agent/prompt.go | 10 +++++++--- internal/handlers/skills.go | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/agent/prompt.go b/internal/agent/prompt.go index 6ff8d0a2..df3463c2 100644 --- a/internal/agent/prompt.go +++ b/internal/agent/prompt.go @@ -200,11 +200,15 @@ func buildSkillsSection(skills []SkillEntry) string { return strings.Compare(a.Name, b.Name) }) var sb strings.Builder - sb.WriteString("## Skills\n") + sb.WriteString("## Skills\n\n") + sb.WriteString("Skills are stored in `{{home}}/skills/`. ") + sb.WriteString("Each skill is a `SKILL.md` file inside a named subdirectory.\n\n") + sb.WriteString("Call `use_skill` with the skill name to load its full instructions before following them. ") + sb.WriteString("Only activate a skill when it is relevant to the current task.\n\n") sb.WriteString(strconv.Itoa(len(sorted))) - sb.WriteString(" skills available via `use_skill`:\n") + sb.WriteString(" skill(s) available:\n") for _, s := range sorted { - sb.WriteString("- " + s.Name + ": " + s.Description + "\n") + sb.WriteString("- **" + s.Name + "**: " + s.Description + "\n") } return sb.String() } diff --git a/internal/handlers/skills.go b/internal/handlers/skills.go index 2c598ed9..f7dfa626 100644 --- a/internal/handlers/skills.go +++ b/internal/handlers/skills.go @@ -14,7 +14,7 @@ import ( "github.com/memohai/memoh/internal/workspace/bridge" ) -const skillsDirPath = config.DefaultDataMount + "/.skills" +const skillsDirPath = config.DefaultDataMount + "/skills" type SkillItem struct { Name string `json:"name"`