@skillkit/agents
Advanced tools
+2
-2
| { | ||
| "name": "@skillkit/agents", | ||
| "version": "1.3.1", | ||
| "version": "1.4.0", | ||
| "description": "Agent adapters for SkillKit - supports 17+ AI coding agents", | ||
@@ -18,3 +18,3 @@ "type": "module", | ||
| "dependencies": { | ||
| "@skillkit/core": "1.3.1" | ||
| "@skillkit/core": "1.4.0" | ||
| }, | ||
@@ -21,0 +21,0 @@ "devDependencies": { |
+177
-24
| # @skillkit/agents | ||
| Agent adapters for SkillKit - supports 17+ AI coding agents. | ||
| [](https://www.npmjs.com/package/@skillkit/agents) | ||
| [](https://opensource.org/licenses/Apache-2.0) | ||
| **Agent adapters for SkillKit** - configuration and detection for 17 AI coding agents. | ||
| ## Installation | ||
@@ -11,38 +14,188 @@ | ||
| ## Supported Agents | ||
| ## Supported Agents (17) | ||
| | Agent | Config Format | Skills Directory | | ||
| |-------|--------------|------------------| | ||
| | Claude Code | SKILL.md | `.claude/skills/` | | ||
| | Cursor | .cursorrules, .mdc | `.cursor/skills/` | | ||
| | Codex | SKILL.md | `.codex/skills/` | | ||
| | Gemini CLI | SKILL.md | `.gemini/skills/` | | ||
| | Windsurf | .windsurfrules | `.windsurf/skills/` | | ||
| | GitHub Copilot | Markdown | `.github/copilot-instructions.md` | | ||
| | OpenCode | SKILL.md | `.opencode/skills/` | | ||
| | Antigravity | SKILL.md | `.antigravity/skills/` | | ||
| | Amp | SKILL.md | `.amp/skills/` | | ||
| | Goose | SKILL.md | `.goose/skills/` | | ||
| | Kilo | SKILL.md | `.kilocode/skills/` | | ||
| | Roo | SKILL.md | `.roo/skills/` | | ||
| | Trae | SKILL.md | `.trae/skills/` | | ||
| | And more... | | | | ||
| | Agent | Config Format | Project Skills | Global Skills | | ||
| |-------|--------------|----------------|---------------| | ||
| | Claude Code | SKILL.md | `.claude/skills/` | `~/.claude/skills/` | | ||
| | Cursor | MDC (.mdc) | `.cursor/skills/` | `~/.cursor/skills/` | | ||
| | Codex | SKILL.md | `.codex/skills/` | `~/.codex/skills/` | | ||
| | Gemini CLI | SKILL.md | `.gemini/skills/` | `~/.gemini/skills/` | | ||
| | OpenCode | SKILL.md | `.opencode/skills/` | `~/.config/opencode/skills/` | | ||
| | Antigravity | SKILL.md | `.antigravity/skills/` | `~/.gemini/antigravity/skills/` | | ||
| | Amp | SKILL.md | `.agents/skills/` | `~/.config/agents/skills/` | | ||
| | Clawdbot | SKILL.md | `skills/` | `~/.clawdbot/skills/` | | ||
| | Droid (Factory) | SKILL.md | `.factory/skills/` | `~/.factory/skills/` | | ||
| | GitHub Copilot | Markdown | `.github/skills/` | `~/.copilot/skills/` | | ||
| | Goose | SKILL.md | `.goose/skills/` | `~/.config/goose/skills/` | | ||
| | Kilo Code | SKILL.md | `.kilocode/skills/` | `~/.kilocode/skills/` | | ||
| | Kiro CLI | SKILL.md | `.kiro/skills/` | `~/.kiro/skills/` | | ||
| | Roo Code | SKILL.md | `.roo/skills/` | `~/.roo/skills/` | | ||
| | Trae | SKILL.md | `.trae/skills/` | `~/.trae/skills/` | | ||
| | Windsurf | Markdown | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` | | ||
| | Universal | SKILL.md | `skills/` | `~/.agent/skills/` | | ||
| ## Usage | ||
| ### Get Agent Adapter | ||
| ```typescript | ||
| import { getAdapter, detectAgent, listAdapters } from '@skillkit/agents'; | ||
| import { getAdapter, AgentType } from '@skillkit/agents'; | ||
| // Get adapter for specific agent | ||
| const adapter = getAdapter('claude-code'); | ||
| console.log(adapter.skillsDir); // .claude/skills/ | ||
| // Detect installed agents | ||
| const detected = detectAgent(); | ||
| console.log(detected); // ['claude-code', 'cursor'] | ||
| console.log(adapter.name); // 'claude-code' | ||
| console.log(adapter.skillsDir); // '.claude/skills/' | ||
| console.log(adapter.globalSkillsDir); // '~/.claude/skills/' | ||
| console.log(adapter.configFile); // 'AGENTS.md' | ||
| console.log(adapter.format); // 'skill-md' | ||
| ``` | ||
| // List all available adapters | ||
| ### Detect Installed Agents | ||
| ```typescript | ||
| import { detectAgent, detectAllAgents } from '@skillkit/agents'; | ||
| // Detect primary agent in current directory | ||
| const primary = await detectAgent(); | ||
| console.log(primary); // 'claude-code' | ||
| // Detect all installed agents | ||
| const all = await detectAllAgents(); | ||
| console.log(all); // ['claude-code', 'cursor', 'windsurf'] | ||
| // Detect in specific directory | ||
| const agents = await detectAllAgents('./my-project'); | ||
| ``` | ||
| ### List All Adapters | ||
| ```typescript | ||
| import { listAdapters, getAdapterNames } from '@skillkit/agents'; | ||
| // Get all adapter configurations | ||
| const adapters = listAdapters(); | ||
| adapters.forEach(adapter => { | ||
| console.log(`${adapter.name}: ${adapter.skillsDir}`); | ||
| }); | ||
| // Get just the names | ||
| const names = getAdapterNames(); | ||
| console.log(names); // ['claude-code', 'cursor', 'codex', ...] | ||
| ``` | ||
| ### Generate Agent Config | ||
| ```typescript | ||
| import { getAdapter } from '@skillkit/agents'; | ||
| import { findAllSkills } from '@skillkit/core'; | ||
| const adapter = getAdapter('cursor'); | ||
| const skills = findAllSkills([adapter.skillsDir]); | ||
| // Generate config file content | ||
| const config = adapter.generateConfig(skills); | ||
| console.log(config); | ||
| ``` | ||
| ### Get Skills Directory | ||
| ```typescript | ||
| import { getAdapter } from '@skillkit/agents'; | ||
| import { homedir } from 'os'; | ||
| const adapter = getAdapter('claude-code'); | ||
| // Project-local skills directory | ||
| const projectDir = adapter.skillsDir; // '.claude/skills/' | ||
| // Global skills directory | ||
| const globalDir = adapter.globalSkillsDir.replace('~', homedir()); | ||
| // '/Users/you/.claude/skills/' | ||
| ``` | ||
| ## Adapter Interface | ||
| ```typescript | ||
| interface AgentAdapter { | ||
| // Agent identifier | ||
| name: AgentType; | ||
| // Display name | ||
| displayName: string; | ||
| // Skill file format | ||
| format: 'skill-md' | 'mdc' | 'markdown'; | ||
| // Project skills directory (relative) | ||
| skillsDir: string; | ||
| // Global skills directory (with ~) | ||
| globalSkillsDir: string; | ||
| // Config file name | ||
| configFile: string; | ||
| // Generate config from skills | ||
| generateConfig(skills: Skill[]): string; | ||
| // Parse existing config | ||
| parseConfig(content: string): Skill[]; | ||
| } | ||
| ``` | ||
| ## Agent Types | ||
| ```typescript | ||
| type AgentType = | ||
| | 'claude-code' | ||
| | 'cursor' | ||
| | 'codex' | ||
| | 'gemini-cli' | ||
| | 'opencode' | ||
| | 'antigravity' | ||
| | 'amp' | ||
| | 'clawdbot' | ||
| | 'droid' | ||
| | 'github-copilot' | ||
| | 'goose' | ||
| | 'kilo' | ||
| | 'kiro-cli' | ||
| | 'roo' | ||
| | 'trae' | ||
| | 'windsurf' | ||
| | 'universal'; | ||
| ``` | ||
| ## Format Details | ||
| ### SKILL.md Format | ||
| Used by most agents. YAML frontmatter + Markdown content: | ||
| ```markdown | ||
| --- | ||
| name: my-skill | ||
| description: What this skill does | ||
| --- | ||
| # My Skill | ||
| Instructions... | ||
| ``` | ||
| ### MDC Format (Cursor) | ||
| Cursor-specific format with globs and alwaysApply: | ||
| ``` | ||
| --- | ||
| description: What this skill does | ||
| globs: ["**/*.tsx"] | ||
| alwaysApply: false | ||
| --- | ||
| Instructions... | ||
| ``` | ||
| ### Markdown Format | ||
| Plain markdown used by Windsurf and Copilot: | ||
| ```markdown | ||
| # Skill Name | ||
| Instructions for the agent... | ||
| ``` | ||
| ## Documentation | ||
@@ -49,0 +202,0 @@ |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
118178
3.3%207
283.33%+ Added
- Removed
Updated