Skip to content

Audit

Check a skill before you trust it

aisle audit is a free, open-source scanner. It reads a skill folder as text and reports risky patterns. It never runs, imports or installs anything from the skill.

Automated checks found no known risky patterns. This is not a guarantee of safety.

Aisle 01

Where it runs

The same rules everywhere.

  • On your machine: aisle audit <target> for any local folder, registry skill or GitHub repo.
  • Before every install: aisle add audits the files it is about to install. A critical finding blocks the install; it needs --force and typing the skill's name to go on.
  • On every submission: each community skill is audited at its pinned commit when it is submitted, and the result is shown on its page.

In this registry, 26 skills audited

  • AuditA14
  • AuditB12
  • AuditC0
  • AuditD0
  • AuditF0

Aisle 02

Grades

Findings are counted by severity.

GradeMeaning
AuditANo findings above low.
AuditBMedium findings only.
AuditCOne or two high findings.
AuditDThree or more high findings.
AuditFAny critical finding.

A grade is a summary, not a verdict. Read the findings: a skill about security can legitimately quote the phrases the scanner looks for.

Aisle 03

What it checks

Rule IDs start with AA. Every rule has a malicious and a benign test fixture.

Structure

AA-S01HighNo SKILL.md, or frontmatter missing or invalid
AA-S02MediumName does not match the folder or spec format; description missing or too long
AA-S03CriticalSymlink in the skill, or a path escaping the folder
AA-S04HighExecutable binaries or compiled files
AA-S05MediumMinified or obfuscated scripts
AA-S06LowSKILL.md over 500 lines, or references nested more than one level
AA-S07LowHidden files or folders
AA-S08MediumInvalid .aisleaudit.yaml, or an attempt to suppress a critical finding
AA-S09InfoOversized media file skipped in a local folder

Permissions

AA-P01HighUnrestricted Bash in allowed-tools
AA-P02MediumBroad write plus shell without disable-model-invocation
AA-P03HighHooks that run commands automatically on agent events
AA-P04HighCommands that run when the skill loads
AA-P05MediumUnrestricted web fetching combined with file reading
AA-P06InfoInventory of tools, scripts and URLs

Prompt injection

AA-I01HighOverride language such as "ignore previous instructions"
AA-I02HighConcealment from the user
AA-I03CriticalInstructions to weaken agent safety settings
AA-I04MediumInstructions hidden in comments, collapsed sections or alt text
AA-I05MediumLong base64 or hex blobs in instruction files
AA-I06HighInstructions to fetch and follow remote instructions

Exfiltration

AA-X01CriticalReading credential stores
AA-X02CriticalEnvironment variables or .env contents sent over the network
AA-X03HighUploads to paste, webhook or tunnel services
AA-X04HighInstructions to send code, files or conversation to an external URL
AA-X05MediumDNS-based exfiltration patterns

Dangerous execution

AA-E01CriticalDownload and run
AA-E02CriticalDecode and run
AA-E03HighDestructive commands
AA-E04HighPersistence (shell rc files, cron, launch agents, services)
AA-E05HighPrivilege escalation
AA-E06MediumInstalling unpinned or remote packages in scripts
AA-E07MediumDynamic code execution in scripts

Network

AA-N01LowPlain http:// URL
AA-N02MediumURL shortener or raw IP address
AA-N03InfoInventory of referenced domains

Secrets

AA-K01HighHardcoded secret

Hidden characters

AA-U01CriticalUnicode tag characters (invisible instructions)
AA-U02HighBidirectional controls in scripts (Trojan Source)
AA-U03MediumBidirectional controls in instruction files outside Arabic or Hebrew text
AA-U04MediumZero-width characters inside Latin words, or clustered

The rules are open source (MIT): read them on GitHub.

Aisle 04

Suppressions

Authors can explain a pattern that is intentional.

An author puts a .aisleaudit.yaml file in the skill. Each entry needs a reason of at least 15 characters. Suppressed findings do not count towards the grade, but they are always listed, with the reason. Critical findings cannot be suppressed by the author.

ignore:
  - rule: AA-N01
    path: references/legacy-api.md
    reason: Documents an old HTTP-only endpoint; no requests are made.

Aisle 05

Run it yourself

aisle audit ./my-skill
aisle audit some-skill@1.2.0
aisle audit owner/repo/path/to/skill@main
aisle audit . --format sarif --output audit.sarif
aisle audit . --format markdown --fail-on medium
  • --format: pretty (default), json, sarif (for GitHub's Security tab) or markdown.
  • --fail-on: critical, high (default), medium, low or none. Sets the exit code: 0 clean, 1 findings at or above that level, 2 the audit could not run.
  • --output <file> writes the report to a file; --quiet prints one summary line.

Aisle 06

Badge and GitHub Action

For skill authors.

Every skill page shows a README badge for its grade. It is a shields.io endpoint badge that reads /badges/<name>.json:

[![aisle audit](https://img.shields.io/endpoint?url=https%3A%2F%2F<site>%2Fbadges%2F<name>.json)](https://<site>/skills/<name>)

To audit your own skill repository on every push and see the findings in GitHub's Security tab, use the Agent Aisle audit Action. It runs aisle audit . --format sarif and uploads the result:

name: Aisle audit
on: [push, pull_request]
permissions:
  contents: read
  security-events: write
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: HazemSalah29/aisle-audit-action@v1
        with:
          fail-on: high

Aisle 07

What an audit cannot do

An audit reduces risk; it cannot prove a skill safe. It finds patterns it knows about. A determined author can write something it misses, and a clean report says nothing about what the skill's instructions will make an agent do in your project. Read the files of any skill that runs scripts, and install community skills pinned to a version.