Skip to content

Project skills

Project skills are reusable, standards-compatible SKILL.md instruction modules that live in a project catalog. A project can acquire skills from its connected repository, another Git repository, or an upload, then assign each skill to the agents that should use it.

At run time, Agentweaver uses progressive disclosure: only the assigned skill's name, description, and materialized SKILL.md path are injected into the agent prompt. The full instructions and bundled text resources are written into the run worktree under .agentweaver/skills/ and read only when the agent decides the skill is relevant.

Project skills: Connected repo, Git import, or upload, Parse SKILL.md, Valid?, Upsert by content hash, Reject or mark malformed, Project catalog, Assign to agents, Run prompt metadata, Lazy SKILL.md materialization

Acquisition

Agentweaver recognizes one-skill-per-folder layouts under .github/skills, .copilot/skills, .claude/skills, and .agents/skills. Each skill folder must contain a SKILL.md file with YAML frontmatter for name and description, followed by an instruction body. Bundled text files in the same folder are kept as skill resources.

Acquisition is idempotent. The catalog stores a stable content hash over the name, description, instructions, and sorted resources, so re-syncing or re-importing unchanged content is a no-op. If a synced skill disappears from the connected repository, it is marked missing; if a previously valid same-source skill becomes malformed, it is marked malformed. Only active skills can be injected.

Git and raw imports pass through an SSRF guard before anything is cloned or fetched. The source parser accepts only the owner/repo shorthand, public https://github.com repo/tree/blob URLs, and raw https://raw.githubusercontent.com/.../SKILL.md URLs; every other host, scheme, non-default port, or embedded-credential form is rejected. Multi-skill sources return every discovered candidate from a preview pass so the caller selects which locations to import.

Assignment and prompt assembly

Assignments are project-scoped links between a skill and an agent name. Prompt assembly queries only active skills assigned to the current agent. Stale materialized skill folders are removed from reused worktrees, and .agentweaver/skills/ is added to git exclude so skill materialization does not appear in agent diffs.

Source

ConcernSource
REST routes for catalog, acquisition, upload, and assignmentapps/Agentweaver.Api/Endpoints/SkillEndpoints.cs:15
Catalog DTOs, idempotent upsert, missing/malformed handling, repository discoveryapps/Agentweaver.Api/Skills/SkillCatalogService.cs:16, apps/Agentweaver.Api/Skills/SkillCatalogService.cs:350
Import source allow-list / SSRF guard (github.com, raw.githubusercontent.com)apps/Agentweaver.Api/Skills/SkillCatalogService.cs:772
SKILL.md frontmatter, recognized directories, size limits, content hashapps/Agentweaver.Api/Skills/SkillParser.cs:33
Path safety for uploads, zip extraction, and resourcesapps/Agentweaver.Api/Skills/SkillPaths.cs:3
Progressive-disclosure prompt block and materializationapps/Agentweaver.Api/Skills/SkillPromptComposer.cs:8
Web catalog and assignment UIapps/web/src/pages/SkillsPage.tsx:108
MCP toolsapps/Agentweaver.Mcp/Tools/SkillTools.cs:10

See also