Skip to content

feat(skills): single-source skill system with markdown SKILL.md + inc…#559

Open
tusharmagar wants to merge 1 commit into
devfrom
feat/skill-system-v2
Open

feat(skills): single-source skill system with markdown SKILL.md + inc…#559
tusharmagar wants to merge 1 commit into
devfrom
feat/skill-system-v2

Conversation

@tusharmagar

Copy link
Copy Markdown
Contributor

…lude directive

Skills move out of packages/core/src/application/assistant/skills/*/skill.ts (TS string constants) into apps/skills//SKILL.md (Agent Skills spec format — YAML frontmatter + markdown body). One directory, one loader, one place to look at every skill the agent can load.

Key change vs the old dev system: a {{include:<skill-id>}} directive lets one skill transclude another. This removes the parallel TS constant for the knowledge-note style guide — it now lives at apps/skills/knowledge-note-style/ (hidden from catalog) and is pulled into doc-collab + the live-note and background-task agents via the resolver instead of via a TS import.

Infrastructure:

  • packages/core/src/skills/ — types, skill-md-parser, FS-backed official repo, SkillResolver with recursive {{include:}} expansion + cycle detection
  • packages/shared/src/skill.ts — SkillFrontmatter, SkillCatalogEntry, ResolvedSkill schemas
  • DI: officialSkillsRepo + skillResolver registered; registerSkillsDir helper wires the path before any consumer resolves
  • IPC: skills:list / skills:get (read-only) for the Settings UI
  • Main: resolveSkillsDir picks Resources/skills (packaged) or repo apps/skills (dev). forge.config.cjs ships apps/skills/ as extraResource.

Consumer refactor:

  • buildCopilotInstructions: catalog markdown built from resolver.getCatalog()
  • builtin-tools: loadSkill uses resolver, new listSkills tool
  • background-tasks/agent + live-note/agent: now async builders that load the knowledge-note-style skill content via resolver
  • runtime.loadAgent: awaits the now-async builders
  • Deleted: assistant/skills/ directory, knowledge-note-style.ts

UI:

  • New SkillsSettings component (read-only list + detail view) wired into Settings dialog as the "Skills" tab.

…lude directive

Skills move out of packages/core/src/application/assistant/skills/*/skill.ts
(TS string constants) into apps/skills/<id>/SKILL.md (Agent Skills spec format
— YAML frontmatter + markdown body). One directory, one loader, one place to
look at every skill the agent can load.

Key change vs the old dev system: a `{{include:<skill-id>}}` directive lets one
skill transclude another. This removes the parallel TS constant for the
knowledge-note style guide — it now lives at apps/skills/knowledge-note-style/
(hidden from catalog) and is pulled into doc-collab + the live-note and
background-task agents via the resolver instead of via a TS import.

Infrastructure:
- packages/core/src/skills/ — types, skill-md-parser, FS-backed official repo,
  SkillResolver with recursive {{include:<id>}} expansion + cycle detection
- packages/shared/src/skill.ts — SkillFrontmatter, SkillCatalogEntry,
  ResolvedSkill schemas
- DI: officialSkillsRepo + skillResolver registered; registerSkillsDir helper
  wires the path before any consumer resolves
- IPC: skills:list / skills:get (read-only) for the Settings UI
- Main: resolveSkillsDir picks Resources/skills (packaged) or repo apps/skills
  (dev). forge.config.cjs ships apps/skills/ as extraResource.

Consumer refactor:
- buildCopilotInstructions: catalog markdown built from resolver.getCatalog()
- builtin-tools: loadSkill uses resolver, new listSkills tool
- background-tasks/agent + live-note/agent: now async builders that load
  the knowledge-note-style skill content via resolver
- runtime.loadAgent: awaits the now-async builders
- Deleted: assistant/skills/ directory, knowledge-note-style.ts

UI:
- New SkillsSettings component (read-only list + detail view) wired into
  Settings dialog as the "Skills" tab.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant