@chimix/agentscan 1.0.0 → 1.3.0
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/CHANGELOG.md +234 -0
- package/README.md +207 -68
- package/dist/cli.js +9102 -6630
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,240 @@ read-only in every version below.
|
|
|
7
7
|
GitHub already has release pages for [v0.1.0](https://github.com/SimaAlexandru99/agentscan/releases/tag/v0.1.0)
|
|
8
8
|
and [v0.4.0](https://github.com/SimaAlexandru99/agentscan/releases/tag/v0.4.0).
|
|
9
9
|
0.9.0 was planned as a separate train and shipped inside 1.0.0.
|
|
10
|
+
1.0.1 is the shared-MCP hotfix; it is documented below and ships inside 1.1.0
|
|
11
|
+
(the published package version). A separate 1.0.1 npm tag would need an
|
|
12
|
+
intermediate commit that this train does not cut.
|
|
13
|
+
|
|
14
|
+
## 1.3.0 — 2026-08-31
|
|
15
|
+
|
|
16
|
+
Native Windsurf / Cascade coverage against 2026-08-31 official docs.
|
|
17
|
+
**99 checks**, **457 tests**.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- Spec captures `docs/spec/windsurf-rules.md`, `windsurf-agents-md.md`,
|
|
22
|
+
`windsurf-mcp.md`.
|
|
23
|
+
- Workspace rules: `.devin/rules/*.md` (preferred), `.windsurf/rules/*.md`
|
|
24
|
+
(fallback), subdirectory-scoped trees, legacy `.windsurfrules`.
|
|
25
|
+
`.devin` is a scan-root signal.
|
|
26
|
+
- Character budgets: `windsurf.rule.too-large` (12,000) and
|
|
27
|
+
`windsurf.rule.global-too-large` (6,000). Never `cursor.rule.too-large`.
|
|
28
|
+
- `windsurf.rule.missing-trigger` on workspace `.devin` / `.windsurf` rules
|
|
29
|
+
that omit frontmatter `trigger`. Not on `.windsurfrules`,
|
|
30
|
+
`global_rules.md`, or `AGENTS.md`.
|
|
31
|
+
- Portable lowercase `agents.md` (same `sourceProvider: unknown` as
|
|
32
|
+
`AGENTS.md`).
|
|
33
|
+
- `--global` Cascade MCP at `~/.codeium/windsurf/mcp_config.json`
|
|
34
|
+
(`windsurf-json`). Launch is `command` or `serverUrl` or `url`.
|
|
35
|
+
`windsurf.mcp.no-launch` when none are set. Never
|
|
36
|
+
`claude.mcp.url-without-type`.
|
|
37
|
+
- `--global` `~/.codeium/windsurf/memories/global_rules.md` only. Other
|
|
38
|
+
files in that memories directory stay unread.
|
|
39
|
+
|
|
40
|
+
### Unread (intentional)
|
|
41
|
+
|
|
42
|
+
- Devin Local CLI MCP (no published path).
|
|
43
|
+
- Auto-generated memories other than `global_rules.md`.
|
|
44
|
+
- System / enterprise rule directories.
|
|
45
|
+
- Project MCP (none quoted).
|
|
46
|
+
- Marketplace, admin allowlists, OAuth stores.
|
|
47
|
+
|
|
48
|
+
## 1.2.1 — 2026-08-31
|
|
49
|
+
|
|
50
|
+
Codex user MCP under `--global`. **95 checks**, **441 tests**.
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- `$CODEX_HOME/config.toml` (default `~/.codex/config.toml`) is opened only
|
|
55
|
+
with `--global`. Same `codex-toml` shape as project `.codex/config.toml`.
|
|
56
|
+
- Same-name user and project servers both stay in the inventory. The
|
|
57
|
+
published page does not quote a replace-entirely rule, so this scanner
|
|
58
|
+
does not invent `codexEffective`.
|
|
59
|
+
- Spec recapture `docs/spec/codex-mcp.md` (user path, `CODEX_HOME`, unread
|
|
60
|
+
system / managed / requirements / profiles / plugins / trust / `auth.json`).
|
|
61
|
+
|
|
62
|
+
### Unread (intentional)
|
|
63
|
+
|
|
64
|
+
- System `/etc/codex/config.toml`, managed preferences, `requirements.toml`,
|
|
65
|
+
profile files, plugin MCP, `trust_level`.
|
|
66
|
+
- User-file `project_doc_*` knobs.
|
|
67
|
+
- Claude global settings; Command Code `projects/{slug}/mcp.json`.
|
|
68
|
+
|
|
69
|
+
## 1.2.0 — 2026-08-31
|
|
70
|
+
|
|
71
|
+
Native Grok Build provider against 2026-08-31 official docs. **95 checks**,
|
|
72
|
+
**435 tests**. Compatibility with Claude or Cursor is not schema identity.
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- Spec captures `docs/spec/grok-mcp.md`, `grok-hooks.md`, `grok-skills.md`,
|
|
77
|
+
`grok-rules.md`, `grok-agents.md`.
|
|
78
|
+
- Profiles: `grok-toml` MCP, `grok` hook and skill schemas.
|
|
79
|
+
`inferHookSchemaProfile("grok")` is `"grok"`, not `"claude"`.
|
|
80
|
+
- Project `.grok/config.toml` walk-up (cwd → scan boundary). User
|
|
81
|
+
`$GROK_HOME/config.toml` or `~/.grok/config.toml` under `--global`.
|
|
82
|
+
Same-name project replaces user; closer project file wins.
|
|
83
|
+
`grok.mcp.no-launch` when neither `command` nor `url` is set. Never
|
|
84
|
+
`claude.mcp.url-without-type` on `grok-toml`.
|
|
85
|
+
- `.grok/hooks/*.json` and user hooks under `--global`. Fourteen events;
|
|
86
|
+
handlers `command` / `http`. Copilot `version: 1` remap is not applied.
|
|
87
|
+
- `.grok/skills` (and user skills under `--global`). Frontmatter required;
|
|
88
|
+
`name` / `description` optional. Agent Skills directory-match and Claude
|
|
89
|
+
listing-budget checks do not run.
|
|
90
|
+
- `.grok/rules/*.md` with no size cap. `Agents.md` and `AGENT.md` as Grok
|
|
91
|
+
instruction files beside `AGENTS.md`.
|
|
92
|
+
- Conformance fixture `tests/fixtures/conformance/grok-toml/`.
|
|
93
|
+
- `spec:check` drifts Grok hook event names against the live hooks page.
|
|
94
|
+
|
|
95
|
+
### Unread (intentional)
|
|
96
|
+
|
|
97
|
+
- Managed / requirements TOML, plugins, marketplaces, personas, LSP,
|
|
98
|
+
`sandbox.toml`, `pager.toml`.
|
|
99
|
+
- `[skills] paths` (no quoted resolution base).
|
|
100
|
+
- `.grok/agents/` (directory named, no filename pattern).
|
|
101
|
+
- Claude / Cursor / `.mcp.json` as Grok-consumed.
|
|
102
|
+
- `.gitignore` skip for instruction files.
|
|
103
|
+
- Credential files (`auth.json`, `mcp_credentials.json`).
|
|
104
|
+
|
|
105
|
+
## 1.1.0 — 2026-08-31
|
|
106
|
+
|
|
107
|
+
Native Command Code provider, then a correctness pass over every registered
|
|
108
|
+
check against 2026-08-31 official docs. Includes 1.0.1. **87 checks**, **420
|
|
109
|
+
tests**.
|
|
110
|
+
|
|
111
|
+
### Added
|
|
112
|
+
|
|
113
|
+
- Hook schema profiles: `claude` | `vscode-native` | `copilot-cli` |
|
|
114
|
+
`commandcode`. `.github/hooks` with `version: 1` is Copilot CLI.
|
|
115
|
+
- Claude hook schema: required `type` (not inferred from `command`/`url`);
|
|
116
|
+
`mcp_tool` needs `server` + `tool`; `prompt`/`agent` need `prompt`;
|
|
117
|
+
documented event/handler compatibility; nested matcher groups only.
|
|
118
|
+
- Copilot CLI: camelCase events mapped onto VS Code names; `bash` /
|
|
119
|
+
`powershell` / `command`; `cwd`; `timeoutSec` then `timeout`. Prompt
|
|
120
|
+
hooks only on `sessionStart`. User `~/.copilot/hooks` under `--global`.
|
|
121
|
+
- Agent Skills optional constrained fields: `compatibility` 1..500,
|
|
122
|
+
`metadata` map<string,string>, `allowed-tools` string. Info for
|
|
123
|
+
`SKILL.md` >500 lines. File references resolve from the skill root only.
|
|
124
|
+
- Claude skill listing budget: 1% context window, 8000-character fallback,
|
|
125
|
+
per-entry cap 1536, listing text is description (or first markdown
|
|
126
|
+
paragraph) plus `when_to_use`. First paragraph satisfies missing
|
|
127
|
+
description.
|
|
128
|
+
- OpenCode V2: local `command` must be an argv array
|
|
129
|
+
(`opencode.mcp.command-not-array`).
|
|
130
|
+
- Continue standalone YAML blocks require `name` / `version` / `schema`
|
|
131
|
+
(`continue.mcp.missing-block-metadata`). Copied JSON is not checked.
|
|
132
|
+
- Gemini underscore alias warning (`gemini.mcp.underscore-alias`).
|
|
133
|
+
- Claude reserved MCP names including `workspace`
|
|
134
|
+
(`claude.mcp.reserved-name`).
|
|
135
|
+
- Codex chain knobs: `AGENTS.override.md` > `AGENTS.md` >
|
|
136
|
+
`project_doc_fallback_filenames`; one file per directory; root→cwd;
|
|
137
|
+
`project_doc_max_bytes`; `project_root_markers`.
|
|
138
|
+
- Coverage matrix uses five dimensions (project discovery, global
|
|
139
|
+
discovery, schema, precedence, conformance) instead of `full` /
|
|
140
|
+
`partial`.
|
|
141
|
+
- Conformance fixture `tests/fixtures/conformance/copilot-hooks/`.
|
|
142
|
+
- Spec capture `docs/spec/copilot-hooks.md`. Alias
|
|
143
|
+
`claude.hook.mcp-tool-without-name` →
|
|
144
|
+
`claude.hook.mcp-tool-without-server-or-tool`.
|
|
145
|
+
|
|
146
|
+
### Changed
|
|
147
|
+
|
|
148
|
+
- Nested `<dir>/.commandcode/AGENTS.md` is Command Code memory when that
|
|
149
|
+
directory has no `AGENTS.md` (official memory table).
|
|
150
|
+
- Native VS Code remains command-only with its documented eight events.
|
|
151
|
+
`vscode.hook.http-without-url` and `vscode.hook.mcp-tool-without-name`
|
|
152
|
+
are removed.
|
|
153
|
+
- Claude agent names: lowercase letters and hyphens (no digits); filename
|
|
154
|
+
is not compared to `name`.
|
|
155
|
+
- `skill.description-budget` provenance is vendor-recommendation, not a
|
|
156
|
+
16000-byte heuristic.
|
|
157
|
+
|
|
158
|
+
### Added (Command Code provider)
|
|
159
|
+
|
|
160
|
+
- Provider `commandcode` from official pages under `docs/spec/commandcode-*.md`
|
|
161
|
+
(read 2026-08-31). Unknown stays skip: no invented local-project MCP slug,
|
|
162
|
+
no bundled-skill scan, no `--skill` flags, no model-id list, no mods
|
|
163
|
+
execution.
|
|
164
|
+
- Skills: `.commandcode/skills` only at the Command Code project root
|
|
165
|
+
(Agent Skills contract), `.agents/skills` walk-up (max 10 hops from cwd,
|
|
166
|
+
stopping at home), extra dirs from the highest-precedence settings
|
|
167
|
+
`skills` array (replace, not merge; relative paths resolve against the git
|
|
168
|
+
root). User `~/.commandcode/skills` and `~/.agents/skills` under
|
|
169
|
+
`--global`.
|
|
170
|
+
- Memory: per directory, first existing of `AGENTS.md` or
|
|
171
|
+
`.commandcode/AGENTS.md` (project and nested). User
|
|
172
|
+
`~/.commandcode/AGENTS.md` under `--global`. Unresolved `@path` is not a
|
|
173
|
+
hard error. Codex's instruction chain excludes `.commandcode/AGENTS.md`.
|
|
174
|
+
- Agents: `<project>/.commandcode/agents/*.md` at the Command Code project
|
|
175
|
+
root only (git root, or cwd outside a git repo); filename supplies
|
|
176
|
+
`name`; no `claude.agent.*` on these files. Checks:
|
|
177
|
+
`commandcode.agent.reserved-name` (`explore` / `plan` / `review` /
|
|
178
|
+
`general`), `invalid-permission-mode`, `invalid-field-type` covering every
|
|
179
|
+
documented custom-agent typed field (`reasoningEffort` is not one of them).
|
|
180
|
+
`maxTurns` must be a positive integer.
|
|
181
|
+
- Hooks: four events (`PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`);
|
|
182
|
+
nested `hooks` array required; `type` must be the string `"command"`;
|
|
183
|
+
`command` must be a string (not an argv array); `matcher` must be a string
|
|
184
|
+
when present. Timeout 0–600. A matcher on `Stop` / `SessionStart` is
|
|
185
|
+
runtime-dead, not a schema error. Project and user hooks for the same event
|
|
186
|
+
coexist; only an exact duplicate command string is deduplicated (project
|
|
187
|
+
wins). `settings.local.json` follows settings merge (an event array
|
|
188
|
+
replaces the project array for that event). `COMMANDCODE_PROJECT_DIR` and
|
|
189
|
+
`COMMANDCODE_CWD` expand against the Command Code project root.
|
|
190
|
+
- Settings: Command Code project root is the git root (a child `.cursor`
|
|
191
|
+
does not hide `<git-root>/.commandcode/`). `model` inventoried, not
|
|
192
|
+
validated. Inline `mcp.servers` (array or object map; unnamed array items
|
|
193
|
+
are inventory-only). User `~/.commandcode/mcp.json` under `--global`.
|
|
194
|
+
Spec/runtime checks skip shadowed lower-precedence definitions; security
|
|
195
|
+
checks still inspect every readable MCP file.
|
|
196
|
+
- Slash commands: inventory `.commandcode/commands` at the project root and
|
|
197
|
+
the user dir — no required-field checks.
|
|
198
|
+
- Mods: inventory `mods.paths` — never execute or import TypeScript.
|
|
199
|
+
- Conformance fixture `tests/fixtures/conformance/commandcode/`.
|
|
200
|
+
- `spec:check` tracks captured surfaces and diffs Claude, VS Code, Copilot
|
|
201
|
+
CLI, and Command Code hook events against live pages.
|
|
202
|
+
|
|
203
|
+
### Also changed
|
|
204
|
+
|
|
205
|
+
- Default `skillPaths` includes `.commandcode/skills`.
|
|
206
|
+
- `--global` / `includeGlobal` also scans `~/.commandcode/skills`,
|
|
207
|
+
`~/.agents/skills`, user Command Code agents, MCP, memory, Copilot user
|
|
208
|
+
hooks, and Codex global AGENTS files.
|
|
209
|
+
- Shared `.mcp.json` is `mcp-json`, not Claude-only.
|
|
210
|
+
|
|
211
|
+
## 1.0.1 — 2026-08-31
|
|
212
|
+
|
|
213
|
+
Shared `.mcp.json` is not Claude-only. Command Code writes it for `--scope
|
|
214
|
+
project` with `transport` (and `type` as an alias). A Claude-keyed
|
|
215
|
+
`url`-without-`type` check on that path is a false positive on valid
|
|
216
|
+
Command Code HTTP config.
|
|
217
|
+
|
|
218
|
+
### Fixed
|
|
219
|
+
|
|
220
|
+
- `.mcp.json` uses schema profile `mcp-json`, `consumedBy: ["claude",
|
|
221
|
+
"commandcode"]`, `sourceProvider: "unknown"`. `.claude/mcp.json` and
|
|
222
|
+
project `mcp.json` stay `claude-json`.
|
|
223
|
+
- Parse `transport` first; `type` is an alias. Store which field was
|
|
224
|
+
present.
|
|
225
|
+
- `claude.mcp.url-without-type` on `mcp-json` fires only when `url` is set
|
|
226
|
+
and transport is unset. On `claude-json` it still fires when the field is
|
|
227
|
+
`transport` or missing. `{ "transport": "http", "url": "…" }` does not
|
|
228
|
+
emit this.
|
|
229
|
+
- Command Code transport defects on `mcp-json` and `commandcode-json`:
|
|
230
|
+
`commandcode.mcp.invalid-transport`, `http-without-url`,
|
|
231
|
+
`stdio-without-command`. Valid transports are `http` and `stdio`. Claude
|
|
232
|
+
`sse` / `ws` on shared `.mcp.json` is not a Command Code invalid-transport.
|
|
233
|
+
- Empty launch on `mcp-json` still emits `claude.mcp.no-launch` (both
|
|
234
|
+
consumers need a launch field). `commandcode-json` empty launch emits
|
|
235
|
+
`commandcode.mcp.no-launch`.
|
|
236
|
+
- `looksLikeServerEntry` recognises `transport`. Absolute MCP paths under
|
|
237
|
+
`--global` are not joined as relative.
|
|
238
|
+
|
|
239
|
+
### Security
|
|
240
|
+
|
|
241
|
+
- Never open `~/.commandcode/auth.json` or `mcp-tokens.json`.
|
|
242
|
+
- Local `~/.commandcode/projects/{project}/mcp.json` is unread: the slug
|
|
243
|
+
encoding is unpublished. Prefer skip over inventing it.
|
|
10
244
|
|
|
11
245
|
## 1.0.0 — 2026-08-30
|
|
12
246
|
|