@yawlabs/ctxlint 0.9.8 → 0.9.9

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
- - 23 lint rules organized into 8 categories with defined severities
19
+ - 43 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
 
@@ -24,6 +24,21 @@ The specification includes:
24
24
 
25
25
  ---
26
26
 
27
+ ## Related specifications
28
+
29
+ This spec is part of a family of open specifications maintained by Yaw Labs for MCP tooling:
30
+
31
+ | Spec | Scope | Input |
32
+ |---|---|---|
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 |
35
+
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
+
38
+ Both specs target MCP spec version `2025-11-25` and ship machine-readable rule catalogs with stable rule IDs.
39
+
40
+ ---
41
+
27
42
  ## Table of contents
28
43
 
29
44
  - [1. MCP Config Landscape Reference](#1-mcp-config-landscape-reference)
@@ -184,7 +199,7 @@ Without this wrapper, the subprocess fails to spawn. This is the most common Win
184
199
 
185
200
  ## 2. Lint Rules
186
201
 
187
- 23 rules organized into 8 categories. Each rule has a unique ID, severity level, trigger condition, and message template.
202
+ 43 rules organized into 8 categories. Each rule has a unique ID, severity level, trigger condition, and message template.
188
203
 
189
204
  Severity levels:
190
205
  - **error** — the config is broken or has a security issue. Should fail CI.
package/README.md CHANGED
@@ -171,7 +171,7 @@ Summary: 3 errors, 2 warnings, 1 info
171
171
 
172
172
  The full specification for MCP config linting rules, the cross-client config landscape, and a machine-readable rule catalog are published as open specifications:
173
173
 
174
- - **[`MCP_CONFIG_LINT_SPEC.md`](./MCP_CONFIG_LINT_SPEC.md)** — 23 lint rules across 8 categories, the complete client/format reference, and implementation guidance. Tool-agnostic — any linter can implement it.
174
+ - **[`MCP_CONFIG_LINT_SPEC.md`](./MCP_CONFIG_LINT_SPEC.md)** — 43 lint rules across 8 categories, the complete client/format reference, and implementation guidance. Tool-agnostic — any linter can implement it.
175
175
  - **[`mcp-config-lint-rules.json`](./mcp-config-lint-rules.json)** — Machine-readable rule catalog for programmatic consumption by AI agents, CI systems, and other tools.
176
176
 
177
177
  ## Session Linting
@@ -488,7 +488,7 @@ ctxlint is the reference implementation of three open specifications for linting
488
488
  | Spec | What it covers |
489
489
  | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
490
490
  | **[AI Context File Linting Spec](./CONTEXT_LINT_SPEC.md)** | 19 rules for validating context files (CLAUDE.md, .cursorrules, AGENTS.md, etc.) across 17 clients. Covers file formats, frontmatter schemas, path/command validation, staleness, token budgets, redundancy, and contradictions. |
491
- | **[MCP Config Linting Spec](./MCP_CONFIG_LINT_SPEC.md)** | 23 rules for validating MCP server configs (.mcp.json, .cursor/mcp.json, .vscode/mcp.json, etc.) across 8 clients. Covers schema validation, hardcoded secrets, env var syntax, deprecated transports, and cross-file consistency. |
491
+ | **[MCP Config Linting Spec](./MCP_CONFIG_LINT_SPEC.md)** | 43 rules for validating MCP server configs (.mcp.json, .cursor/mcp.json, .vscode/mcp.json, etc.) across 8 clients. Covers schema validation, hardcoded secrets, env var syntax, deprecated transports, and cross-file consistency. |
492
492
  | **[Agent Session Linting Spec](./AGENT_SESSION_LINT_SPEC.md)** | 7 rules for auditing agent session data (history, memory) across 8 agents. Covers cross-project secret consistency, config drift, stale memory, and loop detection. |
493
493
 
494
494
  All specs include machine-readable rule catalogs for programmatic consumption:
package/dist/index.js CHANGED
@@ -43842,7 +43842,7 @@ import { readFileSync as readFileSync4 } from "node:fs";
43842
43842
  import { resolve as resolve8, dirname as dirname3 } from "node:path";
43843
43843
  import { fileURLToPath } from "node:url";
43844
43844
  function loadVersion() {
43845
- if (true) return "0.9.8";
43845
+ if (true) return "0.9.9";
43846
43846
  const __dir = dirname3(fileURLToPath(import.meta.url));
43847
43847
  const pkgPath = resolve8(__dir, "../package.json");
43848
43848
  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.8",
3
+ "version": "0.9.9",
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"