SKILL.md Lint

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
100%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,168Tokens (definiciones de herramientas)
~1.1 KBTamaño de respuesta típico
Impacto moderado en la atención (1.69% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

https://mcp.moltlinestudio.com/skillmd-lintstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (6)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢lint_skill(content)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "content": {
      "description": "The complete SKILL.md file text, frontmatter included; must be non-empty.",
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "content"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}
🟢packaging_check(file_paths, marketplace)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "file_paths": {
      "description": "Every file path that will be inside the zip, relative to the zip root, e.g. [\"my-skill/SKILL.md\"]; at least 1 entry.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "marketplace": {
      "default": "agensi",
      "description": "Rule set to apply: \"agensi\" (SKILL.md at root or one folder deep) or \"generic\" (junk-file checks only). Default \"agensi\".",
      "type": "string"
    }
  },
  "required": [
    "file_paths"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}
🟢regex_test(pattern, samples)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "pattern": {
      "description": "A Python-flavor regular expression as a string, e.g. \"v(\\\\d+)\".",
      "maxLength": 1000,
      "type": "string"
    },
    "samples": {
      "description": "Strings to test the pattern against; only the first 50 are evaluated.",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "type": "array"
    }
  },
  "required": [
    "pattern",
    "samples"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}
🟢json_validate(text)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "text": {
      "description": "The JSON document to validate, as a raw string; must be non-empty.",
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}
🟢diff_texts(a, b)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "a": {
      "description": "The original text (left side of the diff); at most 500000 characters.",
      "maxLength": 500000,
      "type": "string"
    },
    "b": {
      "description": "The revised text (right side of the diff); at most 500000 characters.",
      "maxLength": 500000,
      "type": "string"
    }
  },
  "required": [
    "a",
    "b"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}
🟢cron_explain(expression)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "expression": {
      "description": "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.",
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "expression"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "additionalProperties": true
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada6 herramientas
verificadoversión no registrada6 herramientas