diff --git a/COPY.md b/COPY.md
index f8e77708..898b59c8 100644
--- a/COPY.md
+++ b/COPY.md
@@ -28,13 +28,13 @@ These exact strings. Do not paraphrase them per page.
| Promo label | Teach your agent skilld | guidance only: the last item of the homepage claims line. It opens a popover with `npx skilld install skilld --global` |
| Promo panel note | No terminal? Paste this into your agent. | guidance only: the promo popover, under the install command and over the setup prompt |
| Setup prompt | Read https://skilld.dev/agent.md and follow it to set up skilld for me. | guidance only: `agentSetupPrompt()` in `shared/agent-setup.ts` builds it for the promo popover and the homepage Agents section. `/agent.md` serves the steps it points at |
-| Hero Agent logos | The seven `AGENT_LOGOS` icons, then `+12` | guidance only: the quiet row under the homepage claims line. Links `#agents`. Its label names each Agent. 12 is `AGENT_TARGETS` minus `AGENT_LOGOS` |
+| Hero Agent logos | The seven `AGENT_LOGOS` icons, then `+66` | guidance only: the quiet row under the homepage claims line. Links `#agents`. Its label names each Agent. 66 is `AGENT_TARGETS` minus `AGENT_LOGOS` |
| Step 1: find | Find Skills · Curated, plus what devs talk about. | guidance only: the first step of the homepage lifecycle band. The step name comes first, then one line. Links `/skills` |
| Step 2: run | Run, Fork or Install · Run leaves nothing on disk. Fork or install to keep it. | guidance only: a homepage lifecycle step. Links `/cli#run`. It carries the band's one rose dot, because run is the default |
| Step 3: update | Keep up to date · Watch repos and get a digest when Skills change. | guidance only: a homepage lifecycle step. Links `/cli#update` |
| Pitch lines | Stay hyped. · No more skill bloat. · Keep updated. · Built to be built on. | guidance only: approved pitch lines for find, run, update and build on. The DESIGN.md motifs pair with them |
| Home section: trending | Trending skills this week. | guidance only: the homepage trending section heading |
-| Home section: agents | Works with your agent. · The CLI installs into 19 Agents. ChatGPT, Claude, and other MCP apps search the registry from the chat. | guidance only: the homepage Agents section heading and line. 19 is `AGENT_TARGETS.length` |
+| Home section: agents | Works with your agent. · The CLI installs into 73 Agents. ChatGPT, Claude, and other MCP apps search the registry from the chat. | guidance only: the homepage Agents section heading and line. 73 is `AGENT_TARGETS.length` |
| Agents way: prompt | Paste into any agent · Your agent reads the setup steps and picks the path that fits it. | guidance only: the first way in the homepage Agents section, over the setup prompt |
| Agents way: terminal | From a terminal · Teaches your agent to search and run Skills in every project. | guidance only: the second way, over `npx skilld install skilld --global` |
| Agents way: MCP | In ChatGPT, Claude, and other MCP apps · Add the server once. Then ask the chat to find a Skill. | guidance only: the third way, over the MCP server URL. Its link, "Setup steps for each app", opens `/developers?setup=mcp` |
@@ -67,7 +67,7 @@ These exact strings. Do not paraphrase them per page.
| CLI H1 | The skilld CLI | guidance only: the `/cli` H1 and its OG title |
| CLI line | Search, run, install, and keep Skills current. | guidance only: the `/cli` line under the H1. It is the CLI's own `--help` line, so change it in the CLI first |
| CLI intro | Give your Agent Skills that real maintainers write. A run reads the current source every time, and one command updates the Skills you install. Install the skilld Skill once, and your Agent searches and loads Skills on its own. | guidance only: the `/cli` intro under the line |
-| CLI claims line | Open-source CLI · No telemetry · 19 Agent targets | guidance only: the `/cli` claims line. The page counts the `--agent` values of `skilld install --help` |
+| CLI claims line | Open-source CLI · No telemetry · 73 Agent targets | guidance only: the `/cli` claims line. The page counts the `--agent` values of `skilld install --help` |
| CLI install label | Install the CLI | guidance only: the label beside the CLI install chip on `/cli`. A switch above the chip picks `macOS / Linux`, `Windows`, or `npm`, and `macOS / Linux` is preselected |
| CLI install consequence | One native binary. It upgrades itself from signed releases. · Needs Node.js. npm handles upgrades. | guidance only: the line under the CLI install chip on `/cli`. The first is for `macOS / Linux` and `Windows`, the second for `npm`. `crates/skilld-command/src/upgrade.rs` in the CLI decides both. If it changes, change these strings |
| Claim: open source | open source | guidance only: the CLI and the site. `skilld-dev/skilld` and `skilld-dev/skilld.dev` are both public under MIT, checked 2026-10-07. If either repository goes private, narrow the claim to the one a reader can clone. "No telemetry" still names the CLI only |
diff --git a/app/components/AgentTargets.vue b/app/components/AgentTargets.vue
index a127d2f8..931802c7 100644
--- a/app/components/AgentTargets.vue
+++ b/app/components/AgentTargets.vue
@@ -1,9 +1,18 @@
@@ -24,19 +33,41 @@ const listId = useId()
aria-hidden="true"
/>
-
-
-
- {{ agent.label }}
-
-
- {{ agent.verify }}
-
-
-
+
+
+
+ {{ agent.label }}
+
+
+ {{ agent.verify }}
+
+
+
+
+
+ For the other Agents, check that the Skill landed in its folder:
+
+
+
+ Where each other Agent's Skills land in your project
+
+
+
+
+ {{ agent.label }}
+
+
+ {{ agent.projectDir }}
+
+
+
+
+
+
diff --git a/app/utils/agents.ts b/app/utils/agents.ts
index c950034d..7de5e884 100644
--- a/app/utils/agents.ts
+++ b/app/utils/agents.ts
@@ -2,7 +2,7 @@
* The coding agents skilld can install into.
*
* Mirrored by hand from the CLI's agent registry at
- * `crates/skilld-core/src/target.rs`, in the same order, as of skilld 3.6.0.
+ * `crates/skilld-core/src/target.rs`, in the same order, as of skilld 3.6.4.
* 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.
@@ -10,110 +10,458 @@
* 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
* CLI prints tells a user how to confirm the install landed in their editor.
+ * The 54 targets 3.6.4 added have no checked step yet, so they carry `null`
+ * and the site shows their project folder instead. Add a step only after
+ * checking it in that Agent's own docs.
*/
export interface AgentTarget {
id: string
/** Display name, matching the CLI's `displayName`. */
label: string
- /** What to do after installing, so the user can confirm it worked. */
- verify: string
+ /** Where a project install lands, matching the CLI's `project_skills_dir`. */
+ projectDir: string
+ /** What to do after installing, so the user can confirm it worked. Null until someone checks it. */
+ verify: string | null
}
export const AGENT_TARGETS: readonly AgentTarget[] = [
{
id: 'claude-code',
label: 'Claude Code',
+ projectDir: '.claude/skills',
verify: 'Start a new Claude Code session. Skills load automatically.',
},
{
id: 'cursor',
label: 'Cursor',
+ projectDir: '.cursor/skills',
verify: 'Restart Cursor. Skills appear under Settings, Cursor Rules.',
},
{
id: 'windsurf',
label: 'Windsurf',
+ projectDir: '.windsurf/skills',
verify: 'Restart Windsurf. Skills invoke when their description matches.',
},
{
id: 'cline',
label: 'Cline',
+ projectDir: '.cline/skills',
verify: 'Restart your editor. Cline reads skill descriptions at startup.',
},
{
id: 'codex',
label: 'Codex',
+ projectDir: '.agents/skills',
verify: 'Start a new Codex session. Skills are discovered at startup.',
},
{
id: 'github-copilot',
label: 'GitHub Copilot',
+ projectDir: '.github/skills',
verify: 'Restart your editor. Copilot reads .github/skills at startup.',
},
{
id: 'gemini-cli',
label: 'Gemini CLI',
+ projectDir: '.gemini/skills',
verify: 'Start a new Gemini CLI session. Verify with /skills list.',
},
{
id: 'goose',
label: 'Goose',
+ projectDir: '.goose/skills',
verify: 'Start a new Goose session. Skills are discovered at startup.',
},
{
id: 'amp',
label: 'Amp',
+ projectDir: '.agents/skills',
verify: 'Start a new Amp session. Skill descriptions load at startup.',
},
{
id: 'opencode',
label: 'OpenCode',
+ projectDir: '.opencode/skills',
verify: 'Start a new OpenCode session. Skills are discovered at startup.',
},
{
id: 'roo',
label: 'Roo Code',
+ projectDir: '.roo/skills',
verify: 'Restart your editor. Roo reads skill descriptions at startup.',
},
{
id: 'antigravity',
label: 'Antigravity',
+ projectDir: '.agent/skills',
verify: 'Restart Antigravity. Skills are discovered at startup.',
},
{
id: 'openclaw',
label: 'OpenClaw',
+ projectDir: 'skills',
verify: 'Start a new OpenClaw session. Verify with openclaw skills list.',
},
{
id: 'hermes',
label: 'Hermes Agent',
+ projectDir: '.hermes/skills',
verify: 'Start a new Hermes session. Verify with /skills. Project Skills load after hermes skills trust.',
},
{
id: 'kiro',
label: 'Kiro CLI',
+ projectDir: '.kiro/skills',
verify: 'Start a new Kiro CLI session. Type / to see Skills as slash commands.',
},
{
id: 'kilo',
label: 'Kilo Code',
+ projectDir: '.kilo/skills',
verify: 'Run /reload in Kilo Code, or start a new session. Then ask which Skills it has.',
},
{
id: 'droid',
label: 'Droid',
+ projectDir: '.factory/skills',
verify: 'Start a new Droid session. Verify with /skills.',
},
{
id: 'trae',
label: 'Trae',
+ projectDir: '.trae/skills',
verify: 'Open Trae. Skills appear under Settings, Skills & Commands.',
},
{
id: 'zed',
label: 'Zed',
+ projectDir: '.agents/skills',
verify: 'No restart needed. Type / in the Zed message editor to pick a Skill.',
},
+ {
+ id: 'aider-desk',
+ label: 'AiderDesk',
+ projectDir: '.aider-desk/skills',
+ verify: null,
+ },
+ {
+ id: 'antigravity-cli',
+ label: 'Antigravity CLI',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'astrbot',
+ label: 'AstrBot',
+ projectDir: 'data/skills',
+ verify: null,
+ },
+ {
+ id: 'augment',
+ label: 'Augment',
+ projectDir: '.augment/skills',
+ verify: null,
+ },
+ {
+ id: 'bob',
+ label: 'IBM Bob',
+ projectDir: '.bob/skills',
+ verify: null,
+ },
+ {
+ id: 'codearts-agent',
+ label: 'CodeArts Agent',
+ projectDir: '.codeartsdoer/skills',
+ verify: null,
+ },
+ {
+ id: 'codebuddy',
+ label: 'CodeBuddy',
+ projectDir: '.codebuddy/skills',
+ verify: null,
+ },
+ {
+ id: 'codemaker',
+ label: 'Codemaker',
+ projectDir: '.codemaker/skills',
+ verify: null,
+ },
+ {
+ id: 'codestudio',
+ label: 'Code Studio',
+ projectDir: '.codestudio/skills',
+ verify: null,
+ },
+ {
+ id: 'command-code',
+ label: 'Command Code',
+ projectDir: '.commandcode/skills',
+ verify: null,
+ },
+ {
+ id: 'continue',
+ label: 'Continue',
+ projectDir: '.continue/skills',
+ verify: null,
+ },
+ {
+ id: 'cortex',
+ label: 'Cortex Code',
+ projectDir: '.cortex/skills',
+ verify: null,
+ },
+ {
+ id: 'crush',
+ label: 'Crush',
+ projectDir: '.crush/skills',
+ verify: null,
+ },
+ {
+ id: 'deepagents',
+ label: 'Deep Agents',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'devin',
+ label: 'Devin for Terminal',
+ projectDir: '.devin/skills',
+ verify: null,
+ },
+ {
+ id: 'dexto',
+ label: 'Dexto',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'firebender',
+ label: 'Firebender',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'forgecode',
+ label: 'ForgeCode',
+ projectDir: '.forge/skills',
+ verify: null,
+ },
+ {
+ id: 'fx',
+ label: 'fx',
+ projectDir: '.fx/skills',
+ verify: null,
+ },
+ {
+ id: 'inference-sh',
+ label: 'inference.sh',
+ projectDir: '.inferencesh/skills',
+ verify: null,
+ },
+ {
+ id: 'jazz',
+ label: 'Jazz',
+ projectDir: '.jazz/skills',
+ verify: null,
+ },
+ {
+ id: 'junie',
+ label: 'Junie',
+ projectDir: '.junie/skills',
+ verify: null,
+ },
+ {
+ id: 'iflow-cli',
+ label: 'iFlow CLI',
+ projectDir: '.iflow/skills',
+ verify: null,
+ },
+ {
+ id: 'kimchi',
+ label: 'Kimchi',
+ projectDir: '.kimchi/skills',
+ verify: null,
+ },
+ {
+ id: 'kimi-code-cli',
+ label: 'Kimi Code CLI',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'kode',
+ label: 'Kode',
+ projectDir: '.kode/skills',
+ verify: null,
+ },
+ {
+ id: 'lingma',
+ label: 'Lingma',
+ projectDir: '.lingma/skills',
+ verify: null,
+ },
+ {
+ id: 'loaf',
+ label: 'Loaf',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'mcpjam',
+ label: 'MCPJam',
+ projectDir: '.mcpjam/skills',
+ verify: null,
+ },
+ {
+ id: 'minimax-code',
+ label: 'MiniMax Code',
+ projectDir: '.minimax/skills',
+ verify: null,
+ },
+ {
+ id: 'moxby',
+ label: 'Moxby',
+ projectDir: '.moxby/skills',
+ verify: null,
+ },
+ {
+ id: 'mux',
+ label: 'Mux',
+ projectDir: '.mux/skills',
+ verify: null,
+ },
+ {
+ id: 'openhands',
+ label: 'OpenHands',
+ projectDir: '.openhands/skills',
+ verify: null,
+ },
+ {
+ id: 'ona',
+ label: 'Ona',
+ projectDir: '.ona/skills',
+ verify: null,
+ },
+ {
+ id: 'pi',
+ label: 'Pi',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'posit-assistant',
+ label: 'Posit Assistant',
+ projectDir: '.posit/assistant/skills',
+ verify: null,
+ },
+ {
+ id: 'qoder',
+ label: 'Qoder',
+ projectDir: '.qoder/skills',
+ verify: null,
+ },
+ {
+ id: 'qoder-cn',
+ label: 'Qoder CN',
+ projectDir: '.qoder/skills',
+ verify: null,
+ },
+ {
+ id: 'qwen-code',
+ label: 'Qwen Code',
+ projectDir: '.qwen/skills',
+ verify: null,
+ },
+ {
+ id: 'replit',
+ label: 'Replit',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'reasonix',
+ label: 'Reasonix',
+ projectDir: '.reasonix/skills',
+ verify: null,
+ },
+ {
+ id: 'rovodev',
+ label: 'Rovo Dev',
+ projectDir: '.rovodev/skills',
+ verify: null,
+ },
+ {
+ id: 'sarvam-code',
+ label: 'Sarvam Code',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'tabnine-cli',
+ label: 'Tabnine CLI',
+ projectDir: '.tabnine/agent/skills',
+ verify: null,
+ },
+ {
+ id: 'terramind',
+ label: 'Terramind',
+ projectDir: '.terramind/skills',
+ verify: null,
+ },
+ {
+ id: 'tinycloud',
+ label: 'Tinycloud',
+ projectDir: '.tinycloud/skills',
+ verify: null,
+ },
+ {
+ id: 'trae-cn',
+ label: 'Trae CN',
+ projectDir: '.trae/skills',
+ verify: null,
+ },
+ {
+ id: 'warp',
+ label: 'Warp',
+ projectDir: '.agents/skills',
+ verify: null,
+ },
+ {
+ id: 'zcode',
+ label: 'ZCode',
+ projectDir: '.zcode/skills',
+ verify: null,
+ },
+ {
+ id: 'zencoder',
+ label: 'Zencoder',
+ projectDir: '.zencoder/skills',
+ verify: null,
+ },
+ {
+ id: 'zenflow',
+ label: 'Zenflow',
+ projectDir: '.zencoder/skills',
+ verify: null,
+ },
+ {
+ id: 'neovate',
+ label: 'Neovate',
+ projectDir: '.neovate/skills',
+ verify: null,
+ },
+ {
+ id: 'pochi',
+ label: 'Pochi',
+ projectDir: '.pochi/skills',
+ verify: null,
+ },
+ {
+ id: 'adal',
+ label: 'AdaL',
+ projectDir: '.adal/skills',
+ verify: null,
+ },
] as const
diff --git a/layers/marketing/app/pages/cli/index.vue b/layers/marketing/app/pages/cli/index.vue
index e9c60b9b..9ba66821 100644
--- a/layers/marketing/app/pages/cli/index.vue
+++ b/layers/marketing/app/pages/cli/index.vue
@@ -30,6 +30,16 @@ import { pageRobots } from '../../utils/page-admissions'
/** Every `--agent` value of `skilld install --help`, mirrored in `AGENT_TARGETS`. */
const targetCount = AGENT_TARGETS.length
+/**
+ * Values shown before the rest fold away. Seventy-three chips made a wall
+ * twelve rows tall, so the list leads with the CLI's first targets, which are
+ * the Agents most devs run, and the rest wait behind one button.
+ */
+const LEADING_AGENT_VALUES = 12
+const showAllAgentValues = ref(false)
+const agentValues = computed(() => showAllAgentValues.value ? AGENT_TARGETS : AGENT_TARGETS.slice(0, LEADING_AGENT_VALUES))
+const hiddenAgentValues = AGENT_TARGETS.length - LEADING_AGENT_VALUES
+
/** The README's example Skill. Its installed name is the last segment. */
const EXAMPLE = { owner: 'antfu', repo: 'skills', skill: 'vue' } as const
@@ -284,14 +294,25 @@ const codeClass = 'font-mono text-xs text-default'
skilld install detects the Agents you use and writes the same Skill to each. Name one with --agent:
-
+
{{ agent.id }}
+
+
+
diff --git a/test/a11y.nuxt.spec.ts b/test/a11y.nuxt.spec.ts
index 943af1d8..78f846bb 100644
--- a/test/a11y.nuxt.spec.ts
+++ b/test/a11y.nuxt.spec.ts
@@ -114,7 +114,7 @@ describe('accessibility: components', () => {
wrapper.unmount()
})
- it('agentTargets has no violations', async () => {
+ it('agentTargets has no violations, and lists the folder of a target without a checked step', async () => {
const container = createIsolatedContainer()
const wrapper = await mountSuspended(
await loadComponent('AgentTargets'),
@@ -122,6 +122,14 @@ describe('accessibility: components', () => {
)
const results = await runAxe(container)
expect(results.violations, formatViolations(results)).toHaveLength(0)
+
+ const entry = (label: string) => [...container.querySelectorAll('dt, th')]
+ .find(term => term.textContent?.trim() === label)
+ ?.nextElementSibling
+ ?.textContent
+ ?.trim()
+ expect(entry('Claude Code')).toBe('Start a new Claude Code session. Skills load automatically.')
+ expect(entry('Continue')).toBe('.continue/skills')
wrapper.unmount()
})