cd /news/developer-tools/treat-prompts-like-code-skills-evals… · home topics developer-tools article
[ARTICLE · art-83994] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Treat prompts like code: skills, evals, and ship-gate CI for Cursor slash commands

A developer has released a GitHub repository, cursor-commands, that treats Cursor slash commands as code with paired skills, behavioral evals, and ship-gate CI fixtures. The project enforces structural anchors in skill text to lock in safety guards, failing the build if they are removed. The approach aims to make slash commands reliable and maintainable for teams.

read2 min views1 publishedAug 2, 2026

Most Cursor command packs are markdown snippets. You paste a prompt, hope the agent behaves, and when it regresses you shrug and rewrite the paragraph. That is fine for personal notes. It is a bad way to ship workflows other people install.

I wanted the opposite: slash commands that behave like a small product. Each /command

is a thin entry. The real contract lives in a paired skill. Behavioral evals score PASS / PARTIAL / FAIL. Ship-gate fixtures in CI fail the build if a safety guard disappears from the skill text. No LLM judge on every PR. Structural anchors only: cheap, boring, enforceable.

/gauntlet-loop

Take /gauntlet-loop

. The idea is simple and mean: stop saying "make it better." Beat a real example.

Command file. Thin YAML frontmatter plus Overview, Defaults, Steps, Anti-patterns, Examples. Step 1 always resolves the skill contract (workspace path, then user install fallback). Anti-patterns use a fixed shape: Trigger / Wrong / Correct / Reason. The Correct behavior must also exist as a positive guard in the skill.

Skill contract. Intake requires a GOAL and a REAL-WORLD EQUIVALENT, plus an inspectable reference pack (files, screenshots, clip, build, or repo path). A famous name alone is not a pack. The agent decomposes into independent parts, runs a per-part state machine (build → critique → pass | iterate | terminal), and never lets builders grade their own work. Critics use fresh context. Pass only if better than the reference; equal fails. After all parts pass, an integration critic grades the whole. Optional budget, taste-domain pride gate, and a gap ledger for resume.

Eval rubric. Cases cover missing reference, missing pack, equal-is-fail, skip-critic, fabricated blind, budget exhaustion, resume-without-retrying-stalled-gaps, and more. PARTIAL counts as fail on the ship gate.

Fixtures in CI. eval/fixtures.yaml

lists skill_required

phrases that must appear verbatim in SKILL.md

. Delete "Do not let builders evaluate their own work" and run-eval-fixtures.py --strict

turns red. That is the point: negative knowledge is locked, not tribal.

When you add the repo as a Cursor user plugin, you get the contracts and the CI story, not just a menu of vibes. The catalog stays portable (generic examples, no employer names). Plugin install syncs with your account across desktop, web, CLI, and mobile.

Install: [https://github.com/emaraschio/cursor-commands](https://github.com/emaraschio/cursor-commands) via Customize → Plugins. Not an official Cursor product. MIT.

If you maintain your own slash commands, the reusable idea is smaller than the whole catalog: pair every command with a skill, write a few ship-gate cases, and fail CI when the guard text disappears. That alone beats hoping the model remembers last month's prompt.
── more in #developer-tools 4 stories · sorted by recency
── more on @cursor 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/treat-prompts-like-c…] indexed:0 read:2min 2026-08-02 ·