dxai-cli 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -38
- package/bin/cli.js +18 -18
- package/package.json +3 -2
- package/src/index.js +4 -4
- package/src/rollback.js +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
`dxai` is an interactive CLI that configures **MCP servers**, **agent skills**, **Cursor rules and commands**, **project instruction files** (`CLAUDE.md`, `GEMINI.md`, `AGENTS.md`), and **AI-friendly project scaffolding** across **Cursor, Claude Code, VS Code / Copilot, OpenAI Codex, Gemini CLI, Google Antigravity, and Devin Desktop (formerly Windsurf)** — simultaneously and in the right format for each.
|
|
10
10
|
|
|
11
|
-
📚 **Full documentation:** <https://
|
|
11
|
+
📚 **Full documentation:** <https://dxai.dev/>
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -24,51 +24,51 @@ npx dxai-cli --help # full usage
|
|
|
24
24
|
|
|
25
25
|
## Headline features
|
|
26
26
|
|
|
27
|
-
- **One config, every tool.** Pick an MCP server once and dxai writes the right format for every selected agent (JSON for Cursor / VS Code / Gemini / Antigravity / Devin, TOML for Codex, `claude mcp add` for Claude Code). The full per-agent map lives in [Supported Agents](https://
|
|
28
|
-
- **Profiles for teams.** `dxai save-profile --here` writes `./.dxai/profile.json`. Teammates run `dxai apply` to get the same setup.
|
|
29
|
-
- **Drift-aware introspection.** `dxai list` / `status` / `doctor` read a manifest of installs, so cleanup is precise and PR review can spot config drift.
|
|
27
|
+
- **One config, every tool.** Pick an MCP server once and dxai writes the right format for every selected agent (JSON for Cursor / VS Code / Gemini / Antigravity / Devin, TOML for Codex, `claude mcp add` for Claude Code). The full per-agent map lives in [Supported Agents](https://dxai.dev/reference/agents/).
|
|
28
|
+
- **Profiles for teams.** `dxai-cli save-profile --here` writes `./.dxai/profile.json`. Teammates run `dxai-cli apply` to get the same setup.
|
|
29
|
+
- **Drift-aware introspection.** `dxai-cli list` / `status` / `doctor` read a manifest of installs, so cleanup is precise and PR review can spot config drift.
|
|
30
30
|
- **CI-ready.** Set `CI=true` (or pass `--yes`) for unattended runs. JSON output mode pipes into the rest of your tooling.
|
|
31
|
-
- **Backed by the official MCP Registry.** Catalog entries link to their record on [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io); a weekly sync keeps the bundled catalog current and `dxai update` re-resolves live. Any registry server can be added by name: `dxai add io.github.owner/server`.
|
|
32
|
-
- **Bundled + remote registry.** `dxai update` refreshes the MCP / skill catalog from a remote URL; bundled JSON is the offline fallback. Override the source with `DXAI_REGISTRY_URL`. Network calls (registry refresh, skill downloads) use native `fetch` with per-attempt timeouts and retry/backoff — no `curl` dependency.
|
|
33
|
-
- **Reversible.** Every write is backed up as `<file>.bak.<ts>`; `dxai rollback` restores the most recent snapshot (and snapshots the current file first, so it's undoable).
|
|
31
|
+
- **Backed by the official MCP Registry.** Catalog entries link to their record on [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io); a weekly sync keeps the bundled catalog current and `dxai-cli update` re-resolves live. Any registry server can be added by name: `dxai-cli add io.github.owner/server`.
|
|
32
|
+
- **Bundled + remote registry.** `dxai-cli update` refreshes the MCP / skill catalog from a remote URL; bundled JSON is the offline fallback. Override the source with `DXAI_REGISTRY_URL`. Network calls (registry refresh, skill downloads) use native `fetch` with per-attempt timeouts and retry/backoff — no `curl` dependency.
|
|
33
|
+
- **Reversible.** Every write is backed up as `<file>.bak.<ts>`; `dxai-cli rollback` restores the most recent snapshot (and snapshots the current file first, so it's undoable).
|
|
34
34
|
|
|
35
35
|
## Commands
|
|
36
36
|
|
|
37
37
|
| Command | What it does |
|
|
38
38
|
|---|---|
|
|
39
|
-
| `dxai system` | Global IDE configs, MCP servers, agent skills |
|
|
40
|
-
| `dxai project` | Repo-local AI scaffolding (rules, CLAUDE.md, AGENTS.md, etc.) |
|
|
41
|
-
| `dxai both` | System + project setup in one go |
|
|
42
|
-
| `dxai init` | Alias for `dxai project` (first-time project setup) |
|
|
43
|
-
| `dxai add <mcp...>` | Add MCP server(s) to detected agents — fast path, no wizard |
|
|
44
|
-
| `dxai remove <mcp...>` (alias `rm`) | Remove MCP server(s) from detected agents |
|
|
45
|
-
| `dxai apply [name]` | Run setup using a saved profile |
|
|
46
|
-
| `dxai save-profile [name]` | Save selections as a reusable profile |
|
|
47
|
-
| `dxai profiles` | List discoverable profiles |
|
|
48
|
-
| `dxai list` | Show what dxai installed (from manifest) |
|
|
49
|
-
| `dxai status` | Compare manifest with live config (drift detection) |
|
|
50
|
-
| `dxai doctor` | Validate dxai installation |
|
|
51
|
-
| `dxai update` | Refresh registry cache from remote |
|
|
52
|
-
| `dxai rollback` | Restore dxai-managed files from their most recent `.bak.<ts>` backup |
|
|
53
|
-
| `dxai cleanup [scope]` (alias `reset`) | Remove dxai-managed configs and files (`system`/`project`/`both`; supports `-y`, `--json`, `--dry-run`, `--backups`) |
|
|
54
|
-
|
|
55
|
-
Per-command pages with full options tables: [Reference / Commands](https://
|
|
39
|
+
| `dxai-cli system` | Global IDE configs, MCP servers, agent skills |
|
|
40
|
+
| `dxai-cli project` | Repo-local AI scaffolding (rules, CLAUDE.md, AGENTS.md, etc.) |
|
|
41
|
+
| `dxai-cli both` | System + project setup in one go |
|
|
42
|
+
| `dxai-cli init` | Alias for `dxai-cli project` (first-time project setup) |
|
|
43
|
+
| `dxai-cli add <mcp...>` | Add MCP server(s) to detected agents — fast path, no wizard |
|
|
44
|
+
| `dxai-cli remove <mcp...>` (alias `rm`) | Remove MCP server(s) from detected agents |
|
|
45
|
+
| `dxai-cli apply [name]` | Run setup using a saved profile |
|
|
46
|
+
| `dxai-cli save-profile [name]` | Save selections as a reusable profile |
|
|
47
|
+
| `dxai-cli profiles` | List discoverable profiles |
|
|
48
|
+
| `dxai-cli list` | Show what dxai installed (from manifest) |
|
|
49
|
+
| `dxai-cli status` | Compare manifest with live config (drift detection) |
|
|
50
|
+
| `dxai-cli doctor` | Validate dxai installation |
|
|
51
|
+
| `dxai-cli update` | Refresh registry cache from remote |
|
|
52
|
+
| `dxai-cli rollback` | Restore dxai-managed files from their most recent `.bak.<ts>` backup |
|
|
53
|
+
| `dxai-cli cleanup [scope]` (alias `reset`) | Remove dxai-managed configs and files (`system`/`project`/`both`; supports `-y`, `--json`, `--dry-run`, `--backups`) |
|
|
54
|
+
|
|
55
|
+
Per-command pages with full options tables: [Reference / Commands](https://dxai.dev/reference/commands/).
|
|
56
56
|
|
|
57
57
|
## Non-interactive / CI
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
dxai system --yes \
|
|
60
|
+
npx dxai-cli system --yes \
|
|
61
61
|
--agents cursor,claude-code \
|
|
62
62
|
--mcp github,playwright,context7
|
|
63
63
|
|
|
64
|
-
dxai project --yes \
|
|
64
|
+
npx dxai-cli project --yes \
|
|
65
65
|
--stack react,node \
|
|
66
66
|
--features cursor-rules,agents-md,editorconfig
|
|
67
67
|
|
|
68
|
-
CI=true dxai system --agents cursor --dry-run --json | jq .
|
|
68
|
+
CI=true npx dxai-cli system --agents cursor --dry-run --json | jq .
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
Full flag table: [Reference / Flags](https://
|
|
71
|
+
Full flag table: [Reference / Flags](https://dxai.dev/reference/flags/).
|
|
72
72
|
|
|
73
73
|
## Requirements
|
|
74
74
|
|
|
@@ -95,7 +95,7 @@ CI matrix runs on every push and PR across **Ubuntu, macOS, Windows × Node 18,
|
|
|
95
95
|
|
|
96
96
|
1. `node --check` for every `.js` in `src/` and `bin/`
|
|
97
97
|
2. `npm test`
|
|
98
|
-
3. Smoke run of `dxai --version` and `dxai --help`
|
|
98
|
+
3. Smoke run of `dxai-cli --version` and `dxai-cli --help`
|
|
99
99
|
4. `npm run docs:check` (drift guard — fails if `bin/cli.js` flags or registry JSON change without regenerating docs)
|
|
100
100
|
|
|
101
101
|
## Documentation site
|
|
@@ -115,15 +115,15 @@ Auto-generated pages (regenerated by the generators in `scripts/docs/`):
|
|
|
115
115
|
|
|
116
116
|
| Page | Source |
|
|
117
117
|
|---|---|
|
|
118
|
-
| [Registry / MCP servers](https://
|
|
119
|
-
| [Registry / Skills](https://
|
|
120
|
-
| [Registry / Stacks](https://
|
|
121
|
-
| [Registry / Cursor commands](https://
|
|
122
|
-
| [Reference / Commands](https://
|
|
123
|
-
| [Reference / Flags](https://
|
|
124
|
-
| [Reference / Profile schema](https://
|
|
125
|
-
| [Reference / Manifest schema](https://
|
|
126
|
-
| [Changelog](https://
|
|
118
|
+
| [Registry / MCP servers](https://dxai.dev/registry/mcp-servers/) | `src/registry/data/mcp-servers.json` |
|
|
119
|
+
| [Registry / Skills](https://dxai.dev/registry/skills/) | `src/registry/data/skills.json` |
|
|
120
|
+
| [Registry / Stacks](https://dxai.dev/registry/stacks/) | `src/registry/stacks.js` (`TECH_STACKS`, `CURSOR_RULES`) |
|
|
121
|
+
| [Registry / Cursor commands](https://dxai.dev/registry/cursor-commands/) | `src/registry/stacks.js` (`CURSOR_COMMANDS`) |
|
|
122
|
+
| [Reference / Commands](https://dxai.dev/reference/commands/) | `bin/cli.js` (`buildProgram()`) |
|
|
123
|
+
| [Reference / Flags](https://dxai.dev/reference/flags/) | `bin/cli.js` (`buildProgram()`) |
|
|
124
|
+
| [Reference / Profile schema](https://dxai.dev/reference/profile-schema/) | `src/profile.js` (`PROFILE_KEYS`) |
|
|
125
|
+
| [Reference / Manifest schema](https://dxai.dev/reference/manifest-schema/) | `src/manifest.js` (`emptyManifest`) |
|
|
126
|
+
| [Changelog](https://dxai.dev/changelog/) | `git log` (conventional commits) |
|
|
127
127
|
|
|
128
128
|
The site also publishes `llms.txt` / `llms-full.txt` for AI-agent consumption (via `starlight-llms-txt`).
|
|
129
129
|
|
package/bin/cli.js
CHANGED
|
@@ -23,7 +23,7 @@ export function buildProgram() {
|
|
|
23
23
|
const program = new Command();
|
|
24
24
|
|
|
25
25
|
program
|
|
26
|
-
.name('dxai')
|
|
26
|
+
.name('dxai-cli')
|
|
27
27
|
.description('Interactive CLI to bootstrap your AI-powered dev environment.')
|
|
28
28
|
.version(pkg.version, '-v, --version', 'output the version number')
|
|
29
29
|
.showHelpAfterError('(run with --help for usage)');
|
|
@@ -213,23 +213,23 @@ export function buildProgram() {
|
|
|
213
213
|
'after',
|
|
214
214
|
`
|
|
215
215
|
Examples:
|
|
216
|
-
$ dxai
|
|
217
|
-
$ dxai system
|
|
218
|
-
$ dxai project --yes
|
|
219
|
-
$ dxai system -y --agents cursor,claude-code --mcp github,playwright
|
|
220
|
-
$ dxai project -y --stack react,node --features cursor-rules,agents-md
|
|
221
|
-
$ CI=true dxai system --agents cursor
|
|
222
|
-
$ dxai save-profile myteam --agents cursor --mcp github,playwright
|
|
223
|
-
$ dxai add github playwright
|
|
224
|
-
$ dxai add context7 --agents cursor,codex
|
|
225
|
-
$ dxai add io.github.upstash/context7
|
|
226
|
-
$ dxai remove github --dry-run
|
|
227
|
-
$ dxai apply myteam
|
|
228
|
-
$ dxai apply --dry-run
|
|
229
|
-
$ dxai profiles
|
|
230
|
-
$ dxai cleanup
|
|
231
|
-
$ dxai rollback --list
|
|
232
|
-
$ dxai rollback --dry-run
|
|
216
|
+
$ npx dxai-cli # interactive menu
|
|
217
|
+
$ npx dxai-cli system # interactive system setup
|
|
218
|
+
$ npx dxai-cli project --yes # accept defaults, no prompts
|
|
219
|
+
$ npx dxai-cli system -y --agents cursor,claude-code --mcp github,playwright
|
|
220
|
+
$ npx dxai-cli project -y --stack react,node --features cursor-rules,agents-md
|
|
221
|
+
$ CI=true npx dxai-cli system --agents cursor # non-interactive (CI mode)
|
|
222
|
+
$ npx dxai-cli save-profile myteam --agents cursor --mcp github,playwright
|
|
223
|
+
$ npx dxai-cli add github playwright # add MCP servers to detected agents
|
|
224
|
+
$ npx dxai-cli add context7 --agents cursor,codex # target specific agents
|
|
225
|
+
$ npx dxai-cli add io.github.upstash/context7 # any server from the official MCP Registry
|
|
226
|
+
$ npx dxai-cli remove github --dry-run # preview an MCP removal
|
|
227
|
+
$ npx dxai-cli apply myteam # run setup from a saved profile
|
|
228
|
+
$ npx dxai-cli apply --dry-run # auto-load ./.dxai/profile.json
|
|
229
|
+
$ npx dxai-cli profiles # list saved profiles
|
|
230
|
+
$ npx dxai-cli cleanup # remove dxai-managed configs
|
|
231
|
+
$ npx dxai-cli rollback --list # show restorable .bak backups
|
|
232
|
+
$ npx dxai-cli rollback --dry-run # preview a restore, write nothing
|
|
233
233
|
|
|
234
234
|
Profiles are auto-loaded from (in order):
|
|
235
235
|
./.dxai/profile.json (project-local)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dxai-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Interactive CLI to bootstrap your AI-powered dev environment — MCP servers, agent skills, cursor rules & more across Cursor, Claude Code, VS Code / Copilot, Codex, Gemini CLI, Windsurf, and Antigravity.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"bin": {
|
|
29
|
-
"dxai": "bin/cli.js"
|
|
29
|
+
"dxai": "bin/cli.js",
|
|
30
|
+
"dxai-cli": "bin/cli.js"
|
|
30
31
|
},
|
|
31
32
|
"main": "src/index.js",
|
|
32
33
|
"scripts": {
|
package/src/index.js
CHANGED
|
@@ -181,7 +181,7 @@ async function sharedSetup(runtime) {
|
|
|
181
181
|
|
|
182
182
|
if (!(await confirm('Continue with setup for selected tools?'))) {
|
|
183
183
|
console.log();
|
|
184
|
-
infoMsg('Run dxai again after installing your tools. Bye!');
|
|
184
|
+
infoMsg('Run npx dxai-cli again after installing your tools. Bye!');
|
|
185
185
|
process.exit(0);
|
|
186
186
|
}
|
|
187
187
|
}
|
|
@@ -335,7 +335,7 @@ async function runSystem(ctx, runtime) {
|
|
|
335
335
|
});
|
|
336
336
|
|
|
337
337
|
if (!runtime.nonInteractive && !(await confirm('Proceed with system setup?'))) {
|
|
338
|
-
infoMsg('Setup cancelled. Run dxai again anytime.');
|
|
338
|
+
infoMsg('Setup cancelled. Run npx dxai-cli again anytime.');
|
|
339
339
|
process.exit(0);
|
|
340
340
|
}
|
|
341
341
|
|
|
@@ -630,7 +630,7 @@ async function runProject(ctx, runtime, { handleSkills = false } = {}) {
|
|
|
630
630
|
});
|
|
631
631
|
|
|
632
632
|
if (!runtime.nonInteractive && !(await confirm('Proceed with project setup?'))) {
|
|
633
|
-
infoMsg('Setup cancelled. Run dxai again anytime.');
|
|
633
|
+
infoMsg('Setup cancelled. Run npx dxai-cli again anytime.');
|
|
634
634
|
process.exit(0);
|
|
635
635
|
}
|
|
636
636
|
|
|
@@ -929,7 +929,7 @@ export async function saveProfileCmd(nameOrPath, opts = {}) {
|
|
|
929
929
|
if (empty) {
|
|
930
930
|
throw new Error(
|
|
931
931
|
'No selections to save. Pass values via flags, e.g.:\n' +
|
|
932
|
-
' dxai save-profile myteam --agents cursor --mcp github,playwright --features cursor-rules,agents-md'
|
|
932
|
+
' npx dxai-cli save-profile myteam --agents cursor --mcp github,playwright --features cursor-rules,agents-md'
|
|
933
933
|
);
|
|
934
934
|
}
|
|
935
935
|
|
package/src/rollback.js
CHANGED
|
@@ -124,7 +124,7 @@ export async function rollbackCmd(opts = {}) {
|
|
|
124
124
|
console.log(` ${theme.dim(`↩ ${path.basename(r.backup)}`)}`);
|
|
125
125
|
}
|
|
126
126
|
console.log();
|
|
127
|
-
infoMsg('Run `dxai rollback` to restore, or `--dry-run` to preview.');
|
|
127
|
+
infoMsg('Run `dxai-cli rollback` to restore, or `--dry-run` to preview.');
|
|
128
128
|
console.log();
|
|
129
129
|
return;
|
|
130
130
|
}
|