diff --git a/README.md b/README.md index d8c490ed1..b6192e6a5 100644 --- a/README.md +++ b/README.md @@ -293,7 +293,7 @@ Skills can be installed to any of these agents: | IBM Bob | `bob` | `.bob/skills/` | `~/.bob/skills/` | | Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` | | OpenClaw | `openclaw` | `skills/` | `~/.openclaw/skills/` | -| Cline, Codex, Dexto, Kimi Code CLI, Loaf, Pi, Sarvam Code, Warp, Zed | `cline`, `codex`, `dexto`, `kimi-code-cli`, `loaf`, `pi`, `sarvam-code`, `warp`, `zed` | `.agents/skills/` | `~/.agents/skills/` | +| Cline, Codex, Dexto, fx, Kimi Code CLI, Loaf, Pi, Sarvam Code, Warp, Zed | `cline`, `codex`, `dexto`, `fx`, `kimi-code-cli`, `loaf`, `pi`, `sarvam-code`, `warp`, `zed` | `.agents/skills/` | `~/.agents/skills/` | | CodeArts Agent | `codearts-agent` | `.codeartsdoer/skills/` | `~/.codeartsdoer/skills/` | | CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` | | Codemaker | `codemaker` | `.codemaker/skills/` | `~/.codemaker/skills/` | @@ -309,7 +309,6 @@ Skills can be installed to any of these agents: | Eve | `eve` | `agent/skills/` | N/A (project-only) | | Firebender | `firebender` | `.agents/skills/` | `~/.firebender/skills/` | | ForgeCode | `forgecode` | `.forge/skills/` | `~/.forge/skills/` | -| fx | `fx` | `.fx/skills/` | `~/.fx/skills/` | | Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` | | GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` | | Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` | @@ -445,7 +444,6 @@ discover `SKILL.md` files outside these container directories (e.g. under - `.devin/skills/` - `agent/skills/` - `.forge/skills/` -- `.fx/skills/` - `.goose/skills/` - `.grok/skills/` - `.hermes/skills/` diff --git a/src/agents.ts b/src/agents.ts index f3e08665c..c4af0e54d 100644 --- a/src/agents.ts +++ b/src/agents.ts @@ -351,8 +351,9 @@ export const agents: Record = { fx: { name: 'fx', displayName: 'fx', - skillsDir: '.fx/skills', - globalSkillsDir: join(home, '.fx/skills'), + // fx discovers these shared roots natively alongside its own .fx/skills roots. + skillsDir: '.agents/skills', + globalSkillsDir: join(home, '.agents/skills'), detectInstalled: async () => { return existsSync(join(home, '.fx')); }, diff --git a/tests/fx-agent.test.ts b/tests/fx-agent.test.ts new file mode 100644 index 000000000..7406830f5 --- /dev/null +++ b/tests/fx-agent.test.ts @@ -0,0 +1,23 @@ +import { homedir } from 'os'; +import { join } from 'path'; +import { describe, expect, it } from 'vitest'; +import { + agents, + getNonUniversalAgents, + getUniversalAgents, + getVisibleUniversalAgents, +} from '../src/agents.ts'; + +describe('fx agent support', () => { + it('uses the shared project and global roots that fx discovers natively', () => { + // https://fx.sh/docs/capabilities/skills#discovery-roots + expect(agents.fx.skillsDir).toBe('.agents/skills'); + expect(agents.fx.globalSkillsDir).toBe(join(homedir(), '.agents/skills')); + }); + + it('shows fx in the main locked install section instead of the other agents list', () => { + expect(getUniversalAgents()).toContain('fx'); + expect(getVisibleUniversalAgents()).toContain('fx'); + expect(getNonUniversalAgents()).not.toContain('fx'); + }); +});