@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.
@@ -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
- - 43 lint rules organized into 8 categories with defined severities
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/main/MCP_COMPLIANCE_SPEC.md) | Runtime testing of live MCP servers | A live server URL + transport |
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
- 43 rules organized into 8 categories. Each rule has a unique ID, severity level, trigger condition, and message template.
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
- `--format=${SENTINEL}`
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.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"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yawlabs/ctxlint",
3
- "version": "0.9.9",
3
+ "version": "0.9.10",
4
4
  "description": "Lint your AI agent context files, MCP server configs, and session data against your actual codebase",
5
5
  "bin": {
6
6
  "ctxlint": "dist/index.js"