Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces an Agent Skills subsystem (progressive disclosure) and integrates it end-to-end: skill discovery + loading for agents, a user-facing
/skillschat command, and safer interactive CLI prompts with Escape cancellation.What changed
Skill runtime + DI
SkillServiceimplementation atsrc/core/skills/skill-service.ts.SkillsLive.layerintosrc/app-layer.tsso skills are available whereverToolRequirements/chat/agent runner are used.~/.jazzwith a cache file at~/.jazz/global-skills-index.json.process.cwd()).name.SKILL.mdfrontmatter (name,description) usinggray-matter.fast-globto locate**/SKILL.mdwithnode_modules/.gitignored.loadSkillSection(...)with path normalization and directory-escape protection.Agent prompt + execution context
AgentPromptOptionsandAgentRunContextto includeknownSkillsmetadata.<available_skills>XML to the system prompt when skills exist (src/core/agent/agent-prompt.ts,src/core/agent/prompts/shared.ts).AgentRunnernow:load_skillandload_skill_sectionin the tool allowlist (even if the agent config omits them).Tools: Skill system tools
src/core/agent/tools/skill-tools.tsimplementing:load_skill(skill_name)load_skill_section(skill_name, section_name)Skillstool category (SKILLS_CATEGORY) insrc/core/agent/tools/register-tools.ts.Chat command:
/skills/skills(src/services/chat/commands/parser.ts,src/services/chat/commands/handler.ts).formatMarkdown(...)for terminal-friendly display.CLI prompt cancellation / UX hardening
rejecttoPromptStateand Escape handling viauseInputin the Ink prompt component (src/cli/ui/types.ts,src/cli/ui/Prompt.tsx).TerminalService.selectandTerminalService.searchto returnT | undefinedon cancellation (src/core/interfaces/terminal.ts) and implemented it insrc/services/terminal.ts.undefined(src/cli/commands/create-agent.ts,src/cli/commands/edit-agent.ts).Dependencies
@openrouter/ai-sdk-providerto^2.0.0.fast-glob,gray-matter,fs-extra(and@types/fs-extra) to support skill discovery/parsing.User-facing behavior
/skillslets users browse and view available skills (global + local).Test plan
skills/example/SKILL.mdwithname/descriptionfrontmatter).jazz agent chat <name>and execute/skills; verify skills are listed and selecting one prints formatted content.jazz agent create/jazz agent edit, press Escape during provider/model/type selections and confirm the flow cancels cleanly.bun test.