# SKILL.md Lint (remote · mcp.moltlinestudio.com)

Lint a SKILL.md for frontmatter, structure, secrets and size. All 6 tools free.

- Trust score: 87/100 (high trust)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- remote · `mcp.moltlinestudio.com`: 87/100 (this document), [markdown](https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint.md), [page](https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint)

## Channel facts

- Endpoint: `https://mcp.moltlinestudio.com/skillmd-lint`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1593 tokens (~265/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the SKILL.md Lint MCP server?

SKILL.md Lint is a hosted endpoint at https://mcp.moltlinestudio.com/skillmd-lint, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-moltlinestudio-skillmd-lint 'https://mcp.moltlinestudio.com/skillmd-lint'
```

### Cursor

```json
{
  "mcpServers": {
    "com-moltlinestudio-skillmd-lint": {
      "url": "https://mcp.moltlinestudio.com/skillmd-lint"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-moltlinestudio-skillmd-lint": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/skillmd-lint"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-moltlinestudio-skillmd-lint]
url = "https://mcp.moltlinestudio.com/skillmd-lint"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-moltlinestudio-skillmd-lint": {
      "type": "remote",
      "url": "https://mcp.moltlinestudio.com/skillmd-lint",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-moltlinestudio-skillmd-lint --url 'https://mcp.moltlinestudio.com/skillmd-lint' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-moltlinestudio-skillmd-lint:
    url: "https://mcp.moltlinestudio.com/skillmd-lint"
```

### Netclaw

```json
{
  "McpServers": {
    "com-moltlinestudio-skillmd-lint": {
      "Transport": "http",
      "Url": "https://mcp.moltlinestudio.com/skillmd-lint"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-moltlinestudio-skillmd-lint -t streamable-http -u 'https://mcp.moltlinestudio.com/skillmd-lint'
```

### Other

```json
{
  "mcpServers": {
    "com-moltlinestudio-skillmd-lint": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/skillmd-lint"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-16 (score 87, 0)

- [security] Stability: 0.97 → pass

### 2026-09-15 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 86, 0)

- [security] Tool “regex_test” rewrote its description, which is the text the model reads

### 2026-09-13 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-11 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-09 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-07 (score 83, +10)

- [security improvement] Authorization: unverified → partial
- [security improvement] HSTS header: unverified → pass

### 2026-09-06 (score 73, −9)

- [security regression] Authorization: partial → unverified
- [security regression] HSTS header: pass → unverified

## MCP tools (6)

### `lint_skill` (~252 tokens)

Lint Skill

Lint one SKILL.md file the way marketplaces and agents parse it. FREE.

Checks YAML frontmatter presence and required fields (name,
description), description quality, body structure (procedure steps,
rules, degradation), secret/credential leakage, injection-style
phrasing, and size budget. Typical input {"content": "<full SKILL.md
text>"} returns {"verdict": "pass" | "pass-with-warnings" | "fail",
"errors": ["..."], "warnings": ["..."], "stats": {"body_words": N,
"has_frontmatter": bool}}.

Use on the full text of one SKILL.md. Not for the surrounding archive
layout (packaging_check). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "content is empty — pass the full SKILL.md text including frontmatter"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `content` (string, required): The complete SKILL.md file text, frontmatter included; must be non-empty.

### `packaging_check` (~283 tokens)

Packaging Check

Validate a zip layout plan for a skill marketplace before packaging. FREE.

Checks SKILL.md placement rules and flags junk files. Typical input
{"file_paths": ["my-skill/SKILL.md", "my-skill/examples.md"],
"marketplace": "agensi"} returns {"verdict": "pass" | "fail",
"issues": ["..."], "skill_files_found": ["my-skill/SKILL.md"]}.

Use on a planned file layout, before zipping. Not for the content of a
skill file (lint_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "file_paths is empty — list every file that will be inside the zip"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `file_paths` (array, required): Every file path that will be inside the zip, relative to the zip root, e.g. ["my-skill/SKILL.md"]; at least 1 entry.
- `marketplace` (string): Rule set to apply: "agensi" (SKILL.md at root or one folder deep) or "generic" (junk-file checks only). Default "agensi".

### `regex_test` (~285 tokens)

Regex Test

Test a regular expression against sample strings. FREE.

Typical input {"pattern": "v(\\d+)", "samples": ["v12", "beta"]}
returns {"pattern": ..., "results": [{"sample": "v12", "match": true,
"matched_text": "v12", "groups": ["12"]}, {"sample": "beta", "match":
false, ...}], "match_count": 1}.

Use to confirm a pattern matches what you expect before shipping it. Not
for validating JSON (json_validate). The pattern is compiled and run in a
short-lived, CPU-capped child process, so a pattern that backtracks
catastrophically is stopped instead of stalling the server. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "a sample is too long (max 10000 characters); shorten it and retry"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `pattern` (string, required): A Python-flavor regular expression as a string, e.g. "v(\\d+)".
- `samples` (array, required): Strings to test the pattern against; only the first 50 are evaluated.

### `json_validate` (~213 tokens)

Json Validate

Validate JSON text and summarize its structure. FREE.

Typical input {"text": "{\"a\": [1, 2]}"} returns {"valid": true,
"structure": {"a": ["array[2]", "int"]}}; invalid JSON returns
{"valid": false, "error": "<parser message>", "line": N, "column": N}
instead.

Use when JSON may be malformed or its shape is unknown. Reports structure,
not conformance to a schema. Not for testing a pattern (regex_test). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "text is empty — pass the JSON document as a raw string"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `text` (string, required): The JSON document to validate, as a raw string; must be non-empty.

### `diff_texts` (~263 tokens)

Diff Texts

Produce a unified diff between two texts. FREE.

Useful for comparing two SKILL.md versions. Typical input {"a": "<old
text>", "b": "<new text>"} returns {"changed_lines": N, "diff":
"--- \n+++ \n@@ ... @@\n-old line\n+new line"}; identical inputs
return {"changed_lines": 0, "diff": "(identical)"}. The diff is capped
at 400 lines.

Use to show exactly what changed between two versions of a text. Not for
judging the risk of a code change - the codereview server's review_diff
does that. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "each text must be at most 500000 characters"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `a` (string, required): The original text (left side of the diff); at most 500000 characters.
- `b` (string, required): The revised text (right side of the diff); at most 500000 characters.

### `cron_explain` (~252 tokens)

Cron Explain

Explain a 5-field cron expression in plain English and flag mistakes. FREE.

Typical input {"expression": "0 9 * * 1-5"} returns {"expression":
"0 9 * * 1-5", "meaning": "at minute 0; at hour 9; every day of month;
every month; day of week 1-5", "issues": ["none"]}; out-of-range fields
are listed in "issues".

Use to read a schedule back in plain English before trusting it. Assumes
5-field cron; not for 6-field or seconds-precision variants. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "expected 5 fields, got <value>"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input parameters:

- `expression` (string, required): A standard 5-field cron string (minute hour day-of-month month day-of-week), e.g. "0 9 * * 1-5"; must be non-empty.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint#diagnostics

## Score history

- 2026-09-21: 87
- 2026-09-20: 87
- 2026-09-19: 87
- 2026-09-18: 87
- 2026-09-17: 87
- 2026-09-16: 87
- 2026-09-15: 87
- 2026-09-14: 86
- 2026-09-13: 86
- 2026-09-12: 85
- 2026-09-11: 85
- 2026-09-10: 84
- 2026-09-09: 84
- 2026-09-08: 83
- 2026-09-07: 83
- 2026-09-06: 73
- 2026-09-05: 82
- 2026-09-04: 81
- 2026-09-03: 81
- 2026-09-02: 81
- 2026-09-01: 80
- 2026-08-31: 80
- 2026-08-30: 79
- 2026-08-29: 79
- 2026-08-28: 78
- 2026-08-27: 78
- 2026-08-26: 77
- 2026-08-25: 75
- 2026-08-24: 75
- 2026-08-23: 74

## Common questions

### What is the SKILL.md Lint MCP server?

SKILL.md Lint is an MCP server listed in the public MCP registry as com.moltlinestudio/skillmd-lint. Lint a SKILL.md for frontmatter, structure, secrets and size. All 6 tools free. This page covers its hosted endpoint (https://mcp.moltlinestudio.com/skillmd-lint).

### Is the SKILL.md Lint MCP server safe to use?

SKILL.md Lint scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SKILL.md Lint MCP server expose?

SKILL.md Lint exposes 6 tools: lint_skill, packaging_check, regex_test, json_validate, diff_texts, cron_explain. Their descriptions and schemas cost roughly 1,548 tokens of context every time the server is loaded.

### Does the SKILL.md Lint MCP server require authentication?

No. We connected to SKILL.md Lint without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the SKILL.md Lint MCP server still maintained?

SKILL.md Lint is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.moltlinestudio.com/skillmd-lint
- Repository: https://github.com/GarphenGate/moltline-mcp
- Website: https://moltlinestudio.com/servers.html#skillmd-lint
- Changelog RSS feed: https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint.json
- HTML version of this page: https://verifymcp.io/servers/com-moltlinestudio-skillmd-lint/skillmd-lint
