Blog

How review works: what we approve and what we bounce

Every submission runs lint, license and prompt-injection checks and an AI safety scan before a human reads it. The most common rejection reasons, with examples.

reviewsafety

Publishing on emdly is a pipeline, not a form. Here is what happens between "Submit for review" and a skill going live, and what gets a submission sent back.

The automated pass

Three checks run the moment you submit:

  • Markdown lint — the file has a title, a body, balanced code fences and a sane size. This is not a style linter; it catches empty and broken files.
  • License — a license: line, a License section, or an SPDX identifier anywhere in the text. MIT is the default we suggest; Apache-2.0, BSD and CC variants are fine too. No license, no publication — an agent skill is code other people run.
  • Prompt-injection scan — hidden HTML comments carrying instructions, base64 blobs that decode to a second set of rules, "ignore previous instructions" phrasing, and instructions to send conversation data to an external URL.

A failed check rejects the version immediately with the reason on My skills. Nothing reaches a reviewer until all three pass.

The AI safety scan

The scan reads the whole file for intent, not just patterns. It returns clean, review or blocked, with findings that point to a section and a line.

  • Blocked is automatic rejection: hidden instruction blocks, exfiltration, overriding the visible rules.
  • Review means a human must read it: persuasion patterns, instructions to withhold options from a user, destructive commands without a confirmation guard.
  • Clean is what you want, and what earns the Security checked badge once a reviewer approves.

What humans look for

Reviewers read the file the way an agent will. The questions are simple: does it do one job well, is the output contract explicit, does it avoid inventing facts it cannot verify, and would we be comfortable running it on our own data.

The most common bounces

  1. No license — by far the leader. Add ## License and MIT.
  2. Urgency and pressure tactics in outreach skills — "the offer expires today" regardless of policy.
  3. A skill that is really a prompt — one paragraph, no structure, no output format.
  4. Copy-pasted tool output in the body instead of instructions.

Fix, resubmit, and the new version runs the same pipeline. Approved skills publish immediately with a fresh version number.