# Agent Skill Linter (`ai_builders_lab/agent-skill-linter`) Actor

Deterministic linter for AI-agent SKILL.md files. Paste a skill document and get a structured JSON report: frontmatter, naming, selection triggers, workflow and output sections, unresolved placeholders, private paths, and risky claims. No AI calls, no URL fetching, submitted source is not logged.

- **URL**: https://apify.com/ai\_builders\_lab/agent-skill-linter.md
- **Developed by:** [ai\_builders\_lab](https://apify.com/ai_builders_lab) (community)
- **Categories:** Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 skill lint reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Agent Skill Linter

Run deterministic checks on one AI-agent `SKILL.md` document and receive a structured JSON report in the default dataset and `OUTPUT` record.

### What it checks

- required YAML frontmatter, name, and description
- registry-friendly naming and explicit selection triggers
- workflow and output sections
- unresolved placeholders and private machine paths
- risky absolute claims and unusually large core instructions

The Actor does not call an AI model, fetch URLs, persist the submitted source in logs, or claim to replace a security review.

### Input

Provide `skillContent` containing the full document. An optional non-sensitive `sourceLabel` can identify the result. Input is capped at 128 KiB.

### Output

The result contains a score, critical/warning/pass counts, a ruleset version, and individual findings. One dataset item is emitted per run.

### Pricing

One `skill-lint` pay-per-event charge per report: USD 0.05 per report. Platform usage costs are included, so the report price is the whole cost of a run.

### Limits

These are deterministic heuristics. They do not execute the submitted skill, verify every platform convention, or prove that a workflow is safe.

# Actor input Schema

## `skillContent` (type: `string`):

Paste the complete SKILL.md text. Maximum size: 128 KiB.

## `sourceLabel` (type: `string`):

Optional non-sensitive label for identifying the report.

## Actor input object example

```json
{
  "skillContent": "---\nname: example-skill\ndescription: Checks an example workflow. Use when a workflow needs a structural review.\n---\n\n# Example\n\n## Instructions\n1. Review the input.\n\n## Output format\n- Verdict\n"
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "skillContent": `---
name: example-skill
description: Checks an example workflow. Use when a workflow needs a structural review.
---

# Example

## Instructions
1. Review the input.

## Output format
- Verdict`
};

// Run the Actor and wait for it to finish
const run = await client.actor("ai_builders_lab/agent-skill-linter").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "skillContent": """---
name: example-skill
description: Checks an example workflow. Use when a workflow needs a structural review.
---

# Example

## Instructions
1. Review the input.

## Output format
- Verdict
""" }

# Run the Actor and wait for it to finish
run = client.actor("ai_builders_lab/agent-skill-linter").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "skillContent": "---\\nname: example-skill\\ndescription: Checks an example workflow. Use when a workflow needs a structural review.\\n---\\n\\n# Example\\n\\n## Instructions\\n1. Review the input.\\n\\n## Output format\\n- Verdict\\n"
}' |
apify call ai_builders_lab/agent-skill-linter --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ai_builders_lab/agent-skill-linter",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Pk7lZJ4CGkAmAWN83/builds/g4S20dqr5y2zjz0rZ/openapi.json
