You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(publish): add RFC 8615 well-known skills support (#36)
* feat(agents): add skill-to-subagent converter command
Add `skillkit agent from-skill` command to convert SkillKit skills into
Claude Code native subagent format (.md files in .claude/agents/).
Features:
- Reference mode (default): generates subagent with `skills: [skill-name]`
- Inline mode (--inline): embeds full skill content in system prompt
- Options: --model, --permission, --global, --output, --dry-run
New files:
- packages/core/src/agents/skill-converter.ts
- packages/core/src/agents/__tests__/skill-converter.test.ts (23 tests)
Closes#22
* feat(publish): add RFC 8615 well-known skills support
Redesign publish workflow to align with industry standard:
- Add WellKnownProvider for auto-discovery from any domain
- skillkit add https://example.com discovers skills via /.well-known/skills/
- skillkit publish generates well-known hosting structure
- skillkit publish submit opens GitHub issue (legacy workflow)
Provider discovers skills from:
- /.well-known/skills/index.json (manifest)
- /.well-known/skills/{skill-name}/SKILL.md (skill files)
Includes 16 tests for WellKnownProvider and structure generation.
* fix(wellknown): correct baseSkillsUrl calculation for skills.json fallback
When using the /.well-known/skills.json fallback URL, the previous
logic produced a malformed URL with duplicated .well-known path segment:
- Before: https://example.com/.well-known/.well-known/skills
- After: https://example.com/.well-known/skills
Extract calculateBaseSkillsUrl helper function for better testability
and add 4 new unit tests covering both URL formats.
* docs: update publish command documentation for well-known skills
- README.md: Add self-hosting section with well-known URI structure
- commands.mdx: Add Publishing Commands section
- marketplace.mdx: Expand publish section with self-hosting instructions
- skills.mdx: Add self-hosting workflow documentation
Documents the new `skillkit publish` workflow that generates RFC 8615
well-known URI structures for decentralized skill hosting.
* fix(security): address path traversal and CRLF vulnerabilities
- agent.ts: Sanitize skill.name when building default filename
- publish.ts: Add sanitizeSkillName() to validate skill names before
using in file paths, verify resolved paths stay within target dir
- skill-converter.ts: Normalize CRLF to LF before extracting body
content to handle Windows-style line endings
- wellknown.ts: Add sanitizeSkillName() to validate remote skill names,
verify resolved paths stay within temp dir, encode URL components
* fix(agents): improve YAML string escaping logic
Only escape strings that actually need it for valid YAML parsing:
- Strings containing newlines or colons
- Strings starting with special YAML characters (-, *, &, !, {, [, >, |, @, `)
- Strings starting with quotes
This fixes unnecessary escaping of strings like "code-quality" where
hyphens in the middle don't need escaping.
* fix(wellknown): address security review feedback
- Use path.sep instead of hardcoded '/' for cross-platform compatibility
- Add sanitization and path containment check in generateWellKnownStructure
- Remove unused 'vi' import in wellknown.test.ts
0 commit comments