Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 63 additions & 26 deletions app/utils/agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
* The coding agents skilld can install into.
*
* Mirrored by hand from the CLI's agent registry at
* `crates/skilld-core/src/target.rs`. The site and the CLI share no code, so
* this table drifts if a target is added there without being added here.
* `crates/skilld-core/src/target.rs`, in the same order, as of skilld 3.6.0.
* The site and the CLI share no code, so this table drifts if a target is
* added there without being added here. `/cli` lists these ids as the
* `--agent` values and counts them.
*
* The site never builds a per-agent command. The CLI detects the agent and
* reports where it installed. Only `verify` survives here, because nothing the
Expand All @@ -24,59 +26,94 @@ export const AGENT_TARGETS: readonly AgentTarget[] = [
label: 'Claude Code',
verify: 'Start a new Claude Code session. Skills load automatically.',
},
{
id: 'cursor',
label: 'Cursor',
verify: 'Restart Cursor. Skills appear under Settings, Cursor Rules.',
},
{
id: 'windsurf',
label: 'Windsurf',
verify: 'Restart Windsurf. Skills invoke when their description matches.',
},
{
id: 'cline',
label: 'Cline',
verify: 'Restart your editor. Cline reads skill descriptions at startup.',
},
{
id: 'codex',
label: 'Codex',
verify: 'Start a new Codex session. Skills are discovered at startup.',
},
{
id: 'gemini-cli',
label: 'Gemini CLI',
verify: 'Start a new Gemini CLI session. Verify with /skills list.',
},
{
id: 'github-copilot',
label: 'GitHub Copilot',
verify: 'Restart your editor. Copilot reads .github/skills at startup.',
},
{
id: 'cursor',
label: 'Cursor',
verify: 'Restart Cursor. Skills appear under Settings, Cursor Rules.',
},
{
id: 'windsurf',
label: 'Windsurf',
verify: 'Restart Windsurf. Skills invoke when their description matches.',
id: 'gemini-cli',
label: 'Gemini CLI',
verify: 'Start a new Gemini CLI session. Verify with /skills list.',
},
{
id: 'opencode',
label: 'OpenCode',
verify: 'Start a new OpenCode session. Skills are discovered at startup.',
id: 'goose',
label: 'Goose',
verify: 'Start a new Goose session. Skills are discovered at startup.',
},
{
id: 'amp',
label: 'Amp',
verify: 'Start a new Amp session. Skill descriptions load at startup.',
},
{
id: 'cline',
label: 'Cline',
verify: 'Restart your editor. Cline reads skill descriptions at startup.',
id: 'opencode',
label: 'OpenCode',
verify: 'Start a new OpenCode session. Skills are discovered at startup.',
},
{
id: 'roo',
label: 'Roo Code',
verify: 'Restart your editor. Roo reads skill descriptions at startup.',
},
{
id: 'goose',
label: 'Goose',
verify: 'Start a new Goose session. Skills are discovered at startup.',
},
{
id: 'antigravity',
label: 'Antigravity',
verify: 'Restart Antigravity. Skills are discovered at startup.',
},
{
id: 'openclaw',
label: 'OpenClaw',
verify: 'Start a new OpenClaw session. Verify with openclaw skills list.',
},
{
id: 'hermes',
label: 'Hermes Agent',
verify: 'Start a new Hermes session. Verify with /skills. Project Skills load after hermes skills trust.',
},
{
id: 'kiro',
label: 'Kiro CLI',
verify: 'Start a new Kiro CLI session. Type / to see Skills as slash commands.',
},
{
id: 'kilo',
label: 'Kilo Code',
verify: 'Run /reload in Kilo Code, or start a new session. Then ask which Skills it has.',
},
{
id: 'droid',
label: 'Droid',
verify: 'Start a new Droid session. Verify with /skills.',
},
{
id: 'trae',
label: 'Trae',
verify: 'Open Trae. Skills appear under Settings, Skills & Commands.',
},
{
id: 'zed',
label: 'Zed',
verify: 'No restart needed. Type / in the Zed message editor to pick a Skill.',
},
] as const
36 changes: 5 additions & 31 deletions layers/marketing/app/pages/cli/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,34 +28,8 @@ import SetupSnippet from '../../components/_SetupSnippet.vue'
import { setupSnippets } from '../../utils/developer-setup'
import { pageRobots } from '../../utils/page-admissions'

/**
* Every `--agent` value, copied from `skilld install --help` in skilld 3.6.0.
* The CLI defines them in `crates/skilld-core/src/target.rs`. The site's
* `AGENT_TARGETS` carries a confirm step for only some of them, so the count
* comes from this list.
*/
const CLI_AGENT_TARGETS = [
'claude-code',
'cursor',
'windsurf',
'cline',
'codex',
'github-copilot',
'gemini-cli',
'goose',
'amp',
'opencode',
'roo',
'antigravity',
'openclaw',
'hermes',
'kiro',
'kilo',
'droid',
'trae',
'zed',
] as const
const targetCount = CLI_AGENT_TARGETS.length
/** Every `--agent` value of `skilld install --help`, mirrored in `AGENT_TARGETS`. */
const targetCount = AGENT_TARGETS.length

/** The README's example Skill. Its installed name is the last segment. */
const EXAMPLE = { owner: 'antfu', repo: 'skills', skill: 'vue' } as const
Expand Down Expand Up @@ -320,11 +294,11 @@ const codeClass = 'font-mono text-xs text-default'
</p>
<ul class="mt-3 flex list-none flex-wrap gap-1.5 p-0" aria-label="Agent target values">
<li
v-for="agent in CLI_AGENT_TARGETS"
:key="agent"
v-for="agent in AGENT_TARGETS"
:key="agent.id"
class="rounded-sm border border-default px-1.5 py-0.5 font-mono text-xs text-toned"
>
{{ agent }}
{{ agent.id }}
</li>
</ul>
<AgentTargets class="mt-4" />
Expand Down