{"slug": "treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands", "title": "Treat prompts like code: skills, evals, and ship-gate CI for Cursor slash commands", "summary": "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.", "body_md": "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.\n\nI wanted the opposite: slash commands that behave like a small product. Each `/command`\n\nis 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.\n\n`/gauntlet-loop`\n\nTake `/gauntlet-loop`\n\n. The idea is simple and mean: stop saying \"make it better.\" Beat a real example.\n\n**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.\n\n**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.\n\n**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.\n\n**Fixtures in CI.** `eval/fixtures.yaml`\n\nlists `skill_required`\n\nphrases that must appear verbatim in `SKILL.md`\n\n. Delete \"Do not let builders evaluate their own work\" and `run-eval-fixtures.py --strict`\n\nturns red. That is the point: negative knowledge is locked, not tribal.\n\nWhen 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.\n\nInstall: [https://github.com/emaraschio/cursor-commands](https://github.com/emaraschio/cursor-commands) via Customize → Plugins. Not an official Cursor product. MIT.\n\nIf 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.", "url": "https://wpnews.pro/news/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands", "canonical_source": "https://dev.to/emaraschio/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands-1o03", "published_at": "2026-08-02 21:22:36+00:00", "updated_at": "2026-08-02 22:16:01.156616+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["Cursor", "GitHub", "emaraschio"], "alternates": {"html": "https://wpnews.pro/news/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands", "markdown": "https://wpnews.pro/news/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands.md", "text": "https://wpnews.pro/news/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands.txt", "jsonld": "https://wpnews.pro/news/treat-prompts-like-code-skills-evals-and-ship-gate-ci-for-cursor-slash-commands.jsonld"}}