Skip to content

Commit 549b082

Browse files
committed
feat: support Cursor 3.14 and harden spec monitoring
Add CUR-020 for ignored plain Markdown rules, align Cursor agents, hooks, environments, and MCP URL-only servers with current documentation, and harden canonical spec/release drift monitoring. Advance the reviewed Cursor, Gemini CLI, Kiro CLI, and MCP baselines.
1 parent fd46272 commit 549b082

41 files changed

Lines changed: 1395 additions & 316 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/spec-baselines.json

Lines changed: 137 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{
22
"$schema": "https://json-schema.org/draft/2020-12/schema",
3-
"description": "Baseline content hashes for spec-drift sentinel. Updated automatically by workflow.",
4-
"last_updated": "2026-07-31T10:14:31Z",
3+
"description": "Baseline hashes for canonical specification content. Human-facing URLs are kept separately from machine-readable content URLs.",
4+
"last_updated": "2026-08-01T00:00:00Z",
55
"sources": {
66
"s-tier": {
77
"agent-skills-spec": {
88
"url": "https://agentskills.io/specification",
9-
"hash": "5c5ca872a1c4ac8596b903b90c931847eaad8da5f7bd5916a1ee1f44a7a1eec5",
9+
"content_url": "https://raw.githubusercontent.com/agentskills/agentskills/main/docs/specification.mdx",
10+
"hash": "4e758a27be17f5bd9af8d6506890895a412f774a4c09f08ee1cc7565391d16ef",
1011
"rules": [
1112
"AS-001",
1213
"AS-002",
@@ -22,23 +23,101 @@
2223
]
2324
},
2425
"mcp-spec": {
25-
"url": "https://modelcontextprotocol.io/specification/2025-11-25",
26-
"hash": "596023030ef80f6769857c05b15946c157d3ef7024c26a5da2d28d5f7e8eaa7e",
27-
"github_repo": "modelcontextprotocol/specification",
26+
"url": "https://modelcontextprotocol.io/specification/2026-07-28",
27+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/index.md",
28+
"hash": "44e96c2715af9074905a5c47ff7c6c0bb77a50000eb577ed772242a077efd086",
29+
"github_repo": "modelcontextprotocol/modelcontextprotocol",
30+
"rules": [
31+
"MCP-001",
32+
"MCP-005",
33+
"MCP-007"
34+
]
35+
},
36+
"mcp-spec-schema": {
37+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/schema",
38+
"content_url": "https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/2026-07-28/schema/2026-07-28/schema.ts",
39+
"hash": "680f5b5ee98ed107a3b6638d7662bff22656056c5014452f87e4a4fc8f0db8e7",
2840
"rules": [
2941
"MCP-001",
42+
"MCP-002",
43+
"MCP-003",
44+
"MCP-007",
45+
"MCP-008",
46+
"MCP-013",
47+
"MCP-014",
48+
"MCP-015",
49+
"MCP-016",
50+
"MCP-020"
51+
]
52+
},
53+
"mcp-spec-tools": {
54+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/server/tools",
55+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/server/tools.md",
56+
"hash": "465e76457fe4ce0825efde208fc2ea4f00877fd72e0610a663a11a21812a484b",
57+
"rules": [
3058
"MCP-002",
3159
"MCP-003",
3260
"MCP-004",
3361
"MCP-005",
3462
"MCP-006",
35-
"MCP-007",
36-
"MCP-008"
63+
"MCP-013",
64+
"MCP-014"
65+
]
66+
},
67+
"mcp-spec-resources": {
68+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/server/resources",
69+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/server/resources.md",
70+
"hash": "026934f8e3bc46c705205555ab5f1d5cb9f7ffce1e51840e7cbb53b2500b389e",
71+
"rules": [
72+
"MCP-015"
73+
]
74+
},
75+
"mcp-spec-prompts": {
76+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/server/prompts",
77+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/server/prompts.md",
78+
"hash": "0719ebea71899029d37f56691308369d6cda170647376ead96b097e994c59da0",
79+
"rules": [
80+
"MCP-016"
81+
]
82+
},
83+
"mcp-spec-transports": {
84+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/transports",
85+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/transports.md",
86+
"hash": "89251827c733dabd578cb9a2bd225dcb76849a3496ac2d3aab1d969334ff789c",
87+
"rules": [
88+
"MCP-009",
89+
"MCP-010",
90+
"MCP-011",
91+
"MCP-012",
92+
"MCP-017",
93+
"MCP-022",
94+
"MCP-023",
95+
"MCP-024"
96+
]
97+
},
98+
"mcp-spec-security": {
99+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/security_best_practices",
100+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/security_best_practices.md",
101+
"hash": "bb9f423d0bb7189d06559c60a9e209b696da2eab5f15d225f6b2b09ed346688e",
102+
"rules": [
103+
"MCP-018",
104+
"MCP-019",
105+
"MCP-021"
106+
]
107+
},
108+
"mcp-spec-versioning": {
109+
"url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning",
110+
"content_url": "https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning.md",
111+
"hash": "83178defeda24c09389a964334c3806a73cec78a65c3c3a3b297085f3d73e6bd",
112+
"rules": [
113+
"MCP-008",
114+
"MCP-020"
37115
]
38116
},
39117
"claude-code-memory": {
40118
"url": "https://code.claude.com/docs/en/memory",
41-
"hash": "24530d887609888d1b5d8abec4e659dd9fc74fff1fb3d2cf0af383a5b7abeea4",
119+
"content_url": "https://code.claude.com/docs/en/memory.md",
120+
"hash": "eea3a7b7d4da9409c6a627e26142373f52171526fcfe901070ac77d20cf15513",
42121
"rules": [
43122
"CC-MEM-001",
44123
"CC-MEM-002",
@@ -48,7 +127,8 @@
48127
},
49128
"claude-code-hooks": {
50129
"url": "https://code.claude.com/docs/en/hooks",
51-
"hash": "f8673e2e6c30b9a3a08d30590020207af3221f714d129a4efd2eae1096e26998",
130+
"content_url": "https://code.claude.com/docs/en/hooks.md",
131+
"hash": "b318b60616297d4a5a8c83d628a2061bf2c65dc0d05a17b5579482b971165ebb",
52132
"rules": [
53133
"CC-HK-001",
54134
"CC-HK-002",
@@ -65,7 +145,8 @@
65145
},
66146
"claude-code-skills": {
67147
"url": "https://code.claude.com/docs/en/skills",
68-
"hash": "b4386cd9f7aa8da4e505afa37e0550b770fb259b6a4626339560dc4c98a1b7d6",
148+
"content_url": "https://code.claude.com/docs/en/skills.md",
149+
"hash": "1f08c689cea03dc2d12ff6646c33b740a3219ba0c2bec960ac05fcd7a4a4c308",
69150
"rules": [
70151
"CC-SK-001",
71152
"CC-SK-002",
@@ -75,7 +156,8 @@
75156
},
76157
"claude-code-plugins": {
77158
"url": "https://code.claude.com/docs/en/plugins-reference",
78-
"hash": "3cba97ea5d7d1055d223458387b9214d2c77bbbf46437c136be3d9afe0bd801d",
159+
"content_url": "https://code.claude.com/docs/en/plugins-reference.md",
160+
"hash": "a07104858eefd300ed179c1e8727d5d92d1611140f0e524e82f68ae010e13cf7",
79161
"rules": [
80162
"CC-PL-002",
81163
"CC-PL-003",
@@ -86,7 +168,8 @@
86168
},
87169
"claude-code-subagents": {
88170
"url": "https://code.claude.com/docs/en/sub-agents",
89-
"hash": "9326cd9931f2c31a3d04cd0d520e6f414e698f98671040efc45fc7a8035b7caf",
171+
"content_url": "https://code.claude.com/docs/en/sub-agents.md",
172+
"hash": "5b209909ee8304b3af61709d9a5fe7bacaf87feeec9b1dc8f8c48b3f4136d4cb",
90173
"rules": [
91174
"CC-AG-001",
92175
"CC-AG-002",
@@ -110,7 +193,8 @@
110193
},
111194
"codex-cli-agents-md": {
112195
"url": "https://learn.chatgpt.com/docs/agent-configuration/agents-md",
113-
"hash": "daa9ae6966e3c4125f5a84111fc85fa44b8ce763853b6781c0992aab38c16534",
196+
"content_url": "https://learn.chatgpt.com/docs/agent-configuration/agents-md.md",
197+
"hash": "9d1f87a2d1cb55b4782b95abe710692b35b9659789c2db31a22c7074a3383e8e",
114198
"rules": [
115199
"AGM-001",
116200
"AGM-002",
@@ -128,7 +212,8 @@
128212
},
129213
"opencode-rules": {
130214
"url": "https://opencode.ai/docs/rules/",
131-
"hash": "6301a2a1a80af127fb120d05943c412a3a3d3ddb2431b0746407472ae41cefc9",
215+
"content_url": "https://raw.githubusercontent.com/anomalyco/opencode/dev/packages/web/src/content/docs/rules.mdx",
216+
"hash": "9ec707ba349c3eb2c37f2085d40875247b59e135386217b7150ba98f7e293aa8",
132217
"rules": [
133218
"XP-001",
134219
"XP-002",
@@ -142,7 +227,8 @@
142227
"a-tier": {
143228
"cursor-rules": {
144229
"url": "https://cursor.com/docs/rules",
145-
"hash": "24529507938b37d3e3815e86b8c1c87cbaf78230c899854f0d74b2d5356c676a",
230+
"content_url": "https://cursor.com/docs/rules.md",
231+
"hash": "c861f9650a843824b496f0a3190ecd9671c121acae623e150b041d0eb9e84d70",
146232
"rules": [
147233
"CUR-001",
148234
"CUR-002",
@@ -152,37 +238,64 @@
152238
"CUR-006",
153239
"CUR-007",
154240
"CUR-008",
155-
"CUR-009"
241+
"CUR-009",
242+
"CUR-020"
156243
]
157244
},
158245
"cursor-hooks": {
159246
"url": "https://cursor.com/docs/hooks",
160-
"hash": "4f55df64b01fe7d2c55a9d544eafdda070e35d7f84045c021f4a5ea9fcdd05d8",
247+
"content_url": "https://cursor.com/docs/hooks.md",
248+
"hash": "952d09cb40387dcb70944ce73fffa446317b6cb4f107c9bc2a52d236bc887e3b",
161249
"rules": [
162250
"CUR-010",
163251
"CUR-011",
164252
"CUR-012",
165-
"CUR-013"
253+
"CUR-013",
254+
"CUR-017",
255+
"CUR-018",
256+
"CUR-019"
166257
]
167258
},
168259
"cursor-subagents": {
169260
"url": "https://cursor.com/docs/subagents",
170-
"hash": "f849221f0342190122e8411587e47f129c915902077da6995753f26c8a03cc9a",
261+
"content_url": "https://cursor.com/docs/subagents.md",
262+
"hash": "c9c01a48171c3a0bcaa37f9412654395c27fecbd5f50535bfa59363f49c8bd46",
171263
"rules": [
172264
"CUR-014",
173265
"CUR-015"
174266
]
175267
},
176268
"cursor-environment": {
177269
"url": "https://cursor.com/docs/cloud-agent/setup",
178-
"hash": "326a48176a4541dc5e1d94d7f1ef94c50a007dc4798b85e97e8ada5ec75e8a9e",
270+
"content_url": "https://cursor.com/docs/cloud-agent/setup.md",
271+
"hash": "058418e383b5bf20786c8a858f37856aa73719759774874b73bf7fb86f18fcd0",
179272
"rules": [
180273
"CUR-016"
181274
]
182275
},
276+
"cursor-mcp": {
277+
"url": "https://cursor.com/docs/mcp",
278+
"content_url": "https://cursor.com/docs/mcp.md",
279+
"hash": "0d85294f9c849ef4f69194ca97242599e4d8f1c6bc44b77cfaedcc2bfc56da98",
280+
"rules": [
281+
"MCP-009",
282+
"MCP-010",
283+
"MCP-011",
284+
"MCP-012",
285+
"MCP-017",
286+
"MCP-018",
287+
"MCP-019",
288+
"MCP-020",
289+
"MCP-021",
290+
"MCP-022",
291+
"MCP-023",
292+
"MCP-024"
293+
]
294+
},
183295
"github-copilot": {
184296
"url": "https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions",
185-
"hash": "668c75acb7948484e1334aeb040332961836fbe187561fa830219afcde8ae289",
297+
"content_url": "https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions.md",
298+
"hash": "4e5454048929b4aee6357c707cd28cd3ff86a2b3717bea094be98458b1c7bc98",
186299
"rules": [
187300
"COP-001",
188301
"COP-002",
@@ -214,7 +327,8 @@
214327
},
215328
"cline-rules": {
216329
"url": "https://docs.cline.bot/customization/cline-rules",
217-
"hash": "3a42acacd88e62655c440c04214bed9e622793007489f1d9ef68a2ea85360063",
330+
"content_url": "https://raw.githubusercontent.com/cline/cline/main/docs/customization/cline-rules.mdx",
331+
"hash": "b50f382a5626c0627cfb47b7fad2eab724be354fa21b445752f8c8abf5403e88",
218332
"rules": [
219333
"CL-SK-001",
220334
"CL-SK-002",

.github/tool-release-baselines.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"version": "1.1",
3-
"last_updated": "2026-07-30",
3+
"last_updated": "2026-08-01",
44
"description": "Tracks the latest release of every tool agnix validates (one entry per tool with a validator in crates/agnix-core/src/rules/). Used by .github/workflows/tool-release-watch.yml to open per-tool issues when a new release is published. Untracked tools include the precise publication URL in untracked_reason so a maintainer can monitor manually.\n\nOptional `changes_of_interest` per tool describes what agnix cares about: `config_surfaces` (files agnix validates), `relevant` (change-types that likely affect a validator), `irrelevant` (safe to skip). When set and GLM_API_KEY is available, the watcher runs scripts/glm-extract.js --mode=agnix-triage to produce a pre-filtered summary at the top of the issue body. Falls back gracefully to the full changelog on any LLM failure.",
55
"tools": {
66
"claude-code": {
@@ -136,7 +136,7 @@
136136
"html_url": "https://kiro.dev/changelog/cli/",
137137
"version_regex": "[0-9]+\\.[0-9]+\\.[0-9]+",
138138
"notes_extractor": "glm",
139-
"last_known_version": "2.15.0",
139+
"last_known_version": "2.16.0",
140140
"tracked": true,
141141
"notes": "Proprietary CLI; no GH releases. Tracked via HTML scrape of kiro.dev/changelog/cli/ - the first NN.NN.NN version on the page is the latest. Release-note body is upgraded via GLM (scripts/glm-extract.js). The CLI itself exposes `kiro-cli version --changelog`. IDE has a separate changelog at https://kiro.dev/changelog/ide/ (not tracked here; could be added as a separate kiro-ide entry if needed).",
142142
"changes_of_interest": {
@@ -239,20 +239,20 @@
239239
"github_repo": null,
240240
"html_url": "https://api2.cursor.sh/updates/api/update/darwin/cursor/0.0.1/stable",
241241
"version_regex": "[0-9]+\\.[0-9]+\\.[0-9]+",
242-
"last_known_version": "3.13.25",
242+
"last_known_version": "3.14.7",
243243
"tracked": true,
244244
"notes": "Tracked via Cursor's stable update endpoint (the same one the desktop app polls). Returns JSON like {\"url\":\"...\",\"name\":\"3.1.17\"}. Channel is hardcoded to 'stable' for darwin; the version is platform-agnostic (same release ships across darwin/linux/win32). Prose changelog at https://cursor.com/changelog (Next.js SPA - not scrapeable from raw HTML).",
245245
"changes_of_interest": {
246246
"config_surfaces": [
247-
".cursor/rules/**/*.{md,mdc}",
247+
".cursor/rules/**/*.mdc",
248248
".cursorrules (legacy)",
249249
".cursor/hooks.json",
250250
".cursor/agents/**/*.md",
251251
".cursor/environment.json",
252252
".cursor/mcp.json"
253253
],
254254
"relevant": [
255-
"Changes to .cursor/rules/**/*.{md,mdc} frontmatter (globs, description, alwaysApply)",
255+
"Changes to .cursor/rules/**/*.mdc extension requirements or frontmatter (globs, description, alwaysApply)",
256256
"New hook shapes in .cursor/hooks.json",
257257
"Agent frontmatter schema in .cursor/agents/**/*.md",
258258
"environment.json schema changes",
@@ -339,7 +339,7 @@
339339
"gemini_ignore"
340340
],
341341
"github_repo": "google-gemini/gemini-cli",
342-
"last_known_version": "v0.53.0",
342+
"last_known_version": "v0.53.1",
343343
"tracked": true,
344344
"changes_of_interest": {
345345
"config_surfaces": [

0 commit comments

Comments
 (0)