mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-06-12 19:55:19 +02:00
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.
20 lines
854 B
TypeScript
20 lines
854 B
TypeScript
import { PrefixLogger } from './prefix-logger.js';
|
|
|
|
export * as ipc from './ipc.js';
|
|
export * as models from './models.js';
|
|
export * as workspace from './workspace.js';
|
|
export * as mcp from './mcp.js';
|
|
export * as agentSchedule from './agent-schedule.js';
|
|
export * as agentScheduleState from './agent-schedule-state.js';
|
|
export * as serviceEvents from './service-events.js'
|
|
export * as inlineTask from './inline-task.js';
|
|
export * as blocks from './blocks.js';
|
|
export * as liveNote from './live-note.js';
|
|
export * as events from './events.js';
|
|
export * as backgroundTask from './background-task.js';
|
|
export * as promptBlock from './prompt-block.js';
|
|
export * as frontmatter from './frontmatter.js';
|
|
export * as bases from './bases.js';
|
|
export * as browserControl from './browser-control.js';
|
|
export * as skill from './skill.js';
|
|
export { PrefixLogger };
|