A Single Config Syncs AI Rules, Skills, and MCP Servers Across Five IDEs
AI-assisted coding is fragmenting across a half-dozen editors, each with its own conventions directory. Without tooling, a team's shared coding standards and MCP tool definitions drift immediately. A single-config sync tool turns those conventions into version-controlled infrastructure, the way `.editorconfig` or `prettier` did for formatting.
A growing team mixing five different AI IDEs ran into the obvious problem: each IDE stores its rules, skills, and MCP server configs in a different directory. Copying files by hand and nagging the group chat to re-sync broke down immediately. xingwu-ai-kit replaces that with a single `xingwu-ai-kit.config.ts` and a `sync` command that writes symlinks into every supported IDE directory.
Under the hood, the CLI uses IDE adapters to map the declarative config onto each tool's expected layout. Rules and skills land as symlinks pointing at shared templates, so a template update in the npm package reaches every developer on the next install without overwriting local project-specific files. MCP server definitions are written as JSON merges that preserve user-added servers.
Three implementation details stand out. A `safeLink` routine prevents symlink nesting and respects an override strategy when a real file already exists. JSDoc type annotations on the config file remove the runtime import, letting the config work under `npx`, global installs, or project-local installs with zero dependencies. And a custom `defu` merger overrides arrays instead of concatenating them, avoiding a silent bug where the IDE list doubled itself.
The fragmentation of AI IDE conventions directories is creating the same kind of coordination tax that `.editorconfig` and `prettier` solved for code style. A symlink-based sync tool is the natural next piece of shared infrastructure.
Making the config file zero-dependency via JSDoc annotations is a small change with outsized practical impact: it removes the most common reason a CLI tool fails when used casually via `npx` or a global install.
`defu`'s array-concatenation default is a sharp edge that will bite any CLI author who uses `c12` with array-shaped config fields. The fix is trivial once you know it, but the symptom (duplicated work) points in the wrong direction during debugging.