From c3095c69ca3aa4223cfeabbe830353d6779a41c0 Mon Sep 17 00:00:00 2001 From: EugeneTes Date: Sat, 10 Oct 2026 14:13:42 +0000 Subject: [PATCH] feat(core): per-workspace Agent Skills listed in the system prompt, /skills in Telegram Skills live in /.claude/skills//SKILL.md (frontmatter name + description). SkillCatalog re-reads them on every run and the prompt lists name, description and path; the model reads the full SKILL.md with the read tool when a task matches. --- CLAUDE.md | 7 +- README.md | 5 +- docs/docker.md | 2 +- docs/telegram-bot.md | 20 ++- .../Chats/ChatCommands.cs | 15 +++ .../Features/SystemPrompt/DefaultPrompts.cs | 9 ++ .../Features/SystemPrompt/SkillCatalog.cs | 126 ++++++++++++++++++ .../SystemPrompt/SystemPromptBuilder.cs | 6 +- .../SkillsChatTests.cs | 48 +++++++ .../Features/PromptAndCompactionTests.cs | 54 ++++++++ 10 files changed, 284 insertions(+), 8 deletions(-) create mode 100644 src/Volcanic.AgenticCore/Features/SystemPrompt/SkillCatalog.cs create mode 100644 tests/Volcanic.AgenticCore.Telegram.Tests/SkillsChatTests.cs diff --git a/CLAUDE.md b/CLAUDE.md index 8d9f329..6df8612 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -78,7 +78,10 @@ Read `docs/architecture.md` first. Key points: `~/.volcanic/agent/sessions//` (`VOLCANIC_AGENT_DIR` overrides the root). Compaction entries replace older messages when context is built. - **System prompt** pulls project context from the working directory: `AGENTS.md`, or `CLAUDE.md` if there is no - `AGENTS.md` (never both), plus `PERSONA.md` and `MEMORY.md`. File names match case-insensitively. + `AGENTS.md` (never both), plus `PERSONA.md` and `MEMORY.md`. File names match case-insensitively. `SkillCatalog` + lists the cwd's Agent Skills (`.claude/skills//SKILL.md`, frontmatter `name`/`description`) in a `` + section on every run; the model reads a SKILL.md with `read`. Only the cwd, so chats never see each other's skills. + The Claude Code provider keeps the CLI's own skills off (`--setting-sources ""`, `--disable-slash-commands`). - **Extension discovery**: host code, then `/.volcanic/settings.json` / `.volcanic/extensions/*.dll`, then the same under `~/.volcanic/agent`. Earlier sources win name collisions. Each assembly loads in its own `AssemblyLoadContext` and shares `Volcanic.AgenticCore.*`, `Microsoft.Extensions.*` and `System.*` with the host. @@ -167,7 +170,7 @@ Coolify API after pushing: `POST $COOLIFY_URL/api/v1/deploy?uuid=r8b5tgty5v5svat `test(...)`, `chore: ...`. - Design specs and implementation plans live in `docs/superpowers/specs/` and `docs/superpowers/plans/`. Update the relevant spec and the user docs in `docs/` when behaviour changes. -- By design, the port leaves out pi's terminal UI, themes, keybindings, skills/prompt templates, OAuth logins and +- By design, the port leaves out pi's terminal UI, themes, keybindings, prompt templates, OAuth logins and session-tree navigation commands.