@yawlabs/ctxlint 0.9.9 → 0.9.10
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/MCP_CONFIG_LINT_SPEC.md +3 -3
- package/dist/index.js +5 -2
- package/package.json +1 -1
package/MCP_CONFIG_LINT_SPEC.md
CHANGED
|
@@ -16,7 +16,7 @@ This specification defines a standard set of lint rules for validating MCP serve
|
|
|
16
16
|
|
|
17
17
|
The specification includes:
|
|
18
18
|
- A complete reference of MCP config file locations, formats, and client-specific behaviors
|
|
19
|
-
-
|
|
19
|
+
- 27 lint rules organized into 8 categories with defined severities
|
|
20
20
|
- A machine-readable rule catalog ([`mcp-config-lint-rules.json`](./mcp-config-lint-rules.json))
|
|
21
21
|
- Auto-fix definitions for rules that support automated correction
|
|
22
22
|
|
|
@@ -31,7 +31,7 @@ This spec is part of a family of open specifications maintained by Yaw Labs for
|
|
|
31
31
|
| Spec | Scope | Input |
|
|
32
32
|
|---|---|---|
|
|
33
33
|
| **mcp-config-lint** (this spec) | Static analysis of MCP client config files | `.cursor/mcp.json`, `.vscode/mcp.json`, `.mcp.json`, etc. |
|
|
34
|
-
| [**mcp-compliance**](https://github.com/YawLabs/mcp-compliance/blob/
|
|
34
|
+
| [**mcp-compliance**](https://github.com/YawLabs/mcp-compliance/blob/master/MCP_COMPLIANCE_SPEC.md) | Runtime testing of live MCP servers | A live server URL + transport |
|
|
35
35
|
|
|
36
36
|
The two are **complementary, not overlapping**. `mcp-config-lint` catches problems before deploy by reading JSON on disk; `mcp-compliance` catches problems after deploy by speaking the protocol to a running server. A production setup typically runs both.
|
|
37
37
|
|
|
@@ -199,7 +199,7 @@ Without this wrapper, the subprocess fails to spawn. This is the most common Win
|
|
|
199
199
|
|
|
200
200
|
## 2. Lint Rules
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
27 rules organized into 8 categories. Each rule has a unique ID, severity level, trigger condition, and message template.
|
|
203
203
|
|
|
204
204
|
Severity levels:
|
|
205
205
|
- **error** — the config is broken or has a security issue. Should fail CI.
|
package/dist/index.js
CHANGED
|
@@ -40512,7 +40512,10 @@ async function getCommitsSinceBatch(projectRoot, paths, since) {
|
|
|
40512
40512
|
"log",
|
|
40513
40513
|
`--since=${since.toISOString()}`,
|
|
40514
40514
|
"--name-only",
|
|
40515
|
-
|
|
40515
|
+
// %n emits a newline; prefixing with a valid format placeholder is
|
|
40516
|
+
// what keeps git from rejecting the sentinel as an invalid --pretty
|
|
40517
|
+
// format ("fatal: invalid --pretty format: ___CTXLINT_COMMIT___").
|
|
40518
|
+
`--format=%n${SENTINEL}`
|
|
40516
40519
|
]);
|
|
40517
40520
|
const normalize3 = (p2) => p2.replace(/\\/g, "/");
|
|
40518
40521
|
const requested = new Set(paths.map(normalize3));
|
|
@@ -43842,7 +43845,7 @@ import { readFileSync as readFileSync4 } from "node:fs";
|
|
|
43842
43845
|
import { resolve as resolve8, dirname as dirname3 } from "node:path";
|
|
43843
43846
|
import { fileURLToPath } from "node:url";
|
|
43844
43847
|
function loadVersion() {
|
|
43845
|
-
if (true) return "0.9.
|
|
43848
|
+
if (true) return "0.9.10";
|
|
43846
43849
|
const __dir = dirname3(fileURLToPath(import.meta.url));
|
|
43847
43850
|
const pkgPath = resolve8(__dir, "../package.json");
|
|
43848
43851
|
const pkg = JSON.parse(readFileSync4(pkgPath, "utf-8"));
|