E2E
wp-media/wp-rocket
Run a basic E2E behavioral probe — one primary scenario smoke test for the grooming step.
Spin up a live local Omnigent server and exercise the Cursor SDK harness end-to-end — build cursor agents, run real turns, smoke-test, and bug-bash.
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-dev --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .claude/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .claude/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-devType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .agents/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .agents/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .cursor/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .cursor/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/omnigent-ai/omnigent.git --path .claude/skills/cursor-sdk-e2e-dev--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .gemini/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .gemini/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-devInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .github/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .github/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install omnigent-ai/omnigent cursor-sdk-e2e-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/omnigent-ai/omnigent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/cursor-sdk-e2e-dev .opencode/skills/cursor-sdk-e2e-dev && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cursor-sdk-e2e-dev" agent skill from https://github.com/omnigent-ai/omnigent/tree/main/.claude/skills/cursor-sdk-e2e-dev into .opencode/skills/cursor-sdk-e2e-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-sdk-e2e-dev", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cursor-sdk-e2e-devSpin up a live local Omnigent server and exercise the Cursor SDK harness end-to-end — build cursor agents, run real turns, smoke-test, and bug-bash.
Cursor SDK E2E Dev is an agent skill from omnigent-ai/omnigent. Spin up a live local Omnigent server and exercise the Cursor SDK harness end-to-end — build cursor agents, run real turns, smoke-test, and bug-bash. Load when developing, testing, or debugging the cursor harness (omnigent/inner/cursorexecutor.py, cursorharness.py, cursorauth.py) or its auth / model / tool-bridge behavior.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering End-to-end testing and QA and bug reports. It works with Bash. The repository describes itself as: Omnigent is an open-source AI agent framework and meta-harness: orchestrate Claude Code, Codex, Cursor, Pi, and custom agents — swap harnesses without rewriting, enforce policies… The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fa1dbe6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonuvgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CURSOR_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cursor SDK E2E Dev loads about 2.2k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 887 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from omnigent-ai/omnigent at commit fa1dbe6, republished under its Apache-2.0 licence (© omnigent-ai). 887 words, ~2,174 tokens.
.claude/skills/cursor-sdk-e2e-dev/SKILL.md (or your agent's skills folder).The cursor harness drives the Cursor Python SDK (cursor_sdk, an
AsyncAgent over a local bridge) and bridges Omnigent's sys_* tools into
Cursor as SDK custom_tools. This skill is the proven recipe for running it
for real against a live local server — not just the unit tests.
The harness runs as a local runner from your current checkout, so
omni run <bundle> --server <url>exercises exactly the code you're on.
main (#203/#204). Test on main unless validating a specific branch.crsr_…); there is no cursor-agent login path. Verify (booleans only —
never print the key):.venv/bin/python -c "from omnigent.onboarding.cursor_auth import cursor_api_key_configured; import os; print('config:', cursor_api_key_configured(), 'env:', bool(os.environ.get('CURSOR_API_KEY')))"False, run omni setup and register a Cursor key, or
export CURSOR_API_KEY=crsr_….cursor-sdk is installed (a baseline dependency):
.venv/bin/python -c "import cursor_sdk; print(cursor_sdk.__file__)".cd /path/to/omnigent
.venv/bin/omni server --background # spawns a detached server on a free loopback port
.venv/bin/omni server status # prints the URL, e.g. http://127.0.0.1:6767Use the printed URL below as $SERVER. (You can also run a foreground
server on a fixed port with omnigent server --port 7777 --no-open.)
A spec with spec_version must be a directory containing config.yaml —
not a single .yaml file. Minimal cursor agent:
mkdir -p /tmp/cursor-dev
cat > /tmp/cursor-dev/config.yaml <<'YAML'
spec_version: 1
name: cursor-dev
description: Cursor SDK dev/test agent.
executor:
type: omnigent
config:
harness: cursor
# model: gpt-5 # optional; omit for cursor "auto"
prompt: |
You are a terse test agent. Answer in as few words as possible.
YAMLFor sub-agents, tools, guardrails/policies, copy the field shapes from
examples/polly/config.yaml and examples/debby/config.yaml.
SERVER=http://127.0.0.1:6767 # the URL from `omni server status`
timeout 280 .venv/bin/omni run /tmp/cursor-dev \
-p "Reply with exactly the single word: PONG" \
--server "$SERVER" 2>&1A healthy run prints connection lines then the assistant reply (PONG). If
that works, the full stack is good: key, egress, bridge, harness.
--tools coding.--model gpt-5 (or composer-1, auto,
databricks-claude-opus-4-8, …).| Goal | How |
|---|---|
| Native tools (shell/edit/read) | --tools coding, prompt to create→read→edit a file and run a shell command; confirm it actually touches disk |
Bridged sys_* / sub-agent dispatch | declare a sub-agent (tools.agents/spawn), prompt the cursor agent to delegate — exercises the custom_tools daemon-thread bridge (run_coroutine_threadsafe) |
| Model routing | run the same bundle with several --model values; note which actually runs |
| Policy / guardrail | add a guardrail that denies a keyword; confirm PHASE_LLM_REQUEST/PHASE_LLM_RESPONSE blocks it |
| Concurrency / leaks | fire several omni run … & at once; then `pgrep -af "cursor-sdk-bridge |
config.yaml's server: defaults to a remote server (e.g. a
Databricks Apps URL). Omitting --server sends your turn to that remote
deploy — which may be stale and reject the cursor harness with
executor.config.harness: must be one of […], got 'cursor'. Always pass
--server http://127.0.0.1:<port> for local testing. (That allowlist is
omnigent/spec/_omnigent_compat.py; if a local server rejects cursor,
it's running stale code — restart it from your checkout.)spec_version must be a directory + config.yaml, never a
single .yaml file.crsr_ API key (no CLI login). Resolution precedence:
spec executor.auth (api_key) > stored cursor: config block (omni setup) > ambient CURSOR_API_KEY.databricks-* model is silently resolved to cursor auto — it will not
route through the AI Gateway like claude-sdk/codex/pi.gpt-5 is not valid;
the SDK rejects unknown ids. Valid examples seen live: default,
composer-2.5, claude-opus-4-8, gpt-5.5. Run with --model and read the
SDK's Available models: list to discover the live set.timeout 280.omni run <bundle> --server <url> runs the
harness from your current checkout; the server only holds state. The
managed omni server --background server runs from whatever venv launched it.omnigent/inner/cursor_executor.pyomnigent/inner/cursor_harness.pyomnigent/onboarding/cursor_auth.py_build_cursor_spawn_env in omnigent/runtime/workflow.py# Unit tests (use --frozen; the cwsandbox extra is unsatisfiable on public PyPI here)
uv run --frozen --group test python -m pytest \
tests/inner/test_cursor_executor.py \
tests/runtime/test_cursor_spawn_env.py \
tests/onboarding/test_cursor_auth.py -q
# Gated end-to-end harness test
uv run --frozen --group test python -m pytest tests/e2e/omnigent/test_per_harness_cursor.py -qTo stress the harness, run several scenario probes in parallel — each builds a
bundle and runs real turns against the same $SERVER, then reports what broke.
Highest-value targets: the custom_tools bridge (hangs / lost tool results /
errors reported as success), model routing, policy enforcement, streamed-output
rendering, and orphaned bridge processes after teardown.
Live-observed cursor-harness behaviors to watch for while testing (some may be fixed by the time you read this — verify):
--model (or any
bridge start error) makes omni run -p exit 0 with empty output, while
the server records a failed session + a RuntimeError item the user never
sees. If a turn returns nothing, check the session status / items
(GET /v1/sessions/{id}/items) — don't assume success. (claude-sdk surfaces
such errors; cursor doesn't yet.)on:[tool_call] policies. Cursor's native
shell/file tools (--tools coding) don't emit tool_call events, so
on:[tool_call] guardrails (e.g. blast_radius) never see them — a built-in
shell can run git push --force even under a DENY policy. Bridged sys_*
tools are gated correctly. Don't rely on on:[tool_call] guardrails for
cursor built-in tools.aclose fix works), but a SIGKILL/hard-exit leaves an orphaned
cursor-sdk-bridge. After hard kills, sweep pgrep -af cursor-sdk-bridge..venv/bin/omni server stop # stop the managed background server
rm -rf /tmp/cursor-dev # remove scratch bundles
pgrep -af "cursor-sdk-bridge" # confirm no orphaned bridge subprocesses linger© omnigent-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/cursor-sdk-e2e-dev of omnigent-ai/omnigent.
Open the folder on GitHubat commit fa1dbe6
Cursor SDK E2E Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Cursor SDK E2E Dev this skillomnigent-ai/omnigent | 11k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| E2Ewp-media/wp-rocket | 767 | — | ~1.2k | Automated safety check: Pass | GPL-2.0 | |
| CodexBar Live QAsteipete/CodexBar | 22k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Acceptance Evidence for Deliverieslobehub/lobehub | 83k | — | ~9.7k | Automated safety check: Pass | Apache-2.0 | |
| E2Ekortix-ai/suna | 20k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| Senior QAnicepkg/auto-company | 192 | 3 repos | ~1.1k | Automated safety check: Notes | None |
wp-media/wp-rocket
Run a basic E2E behavioral probe — one primary scenario smoke test for the grooming step.
steipete/CodexBar
Runs live QA for the CodexBar app: provider usage matrix checks through its packaged CLI, config validation and menu checks, with 1Password-backed credentials handled safely.
lobehub/lobehub
Verifies a delivery end to end by driving the real product on a CLI, web, desktop or iOS Simulator surface, capturing evidence and publishing a round with the lh CLI.
kortix-ai/suna
Agentic end-to-end tests with e2e, the e2e runner. An agent skill from kortix-ai/suna.
nicepkg/auto-company
Comprehensive QA and testing skill for quality assurance, test automation, and testing strategies for ReactJS, NextJS, NodeJS applications.
code-yeongyu/senpi
Checks changes to the senpi coding agent by driving the real CLI from source in an isolated sandbox, over RPC, terminal UI, mock model and CLI smoke channels.
omnigent-ai/omnigent
Brings up the Omnigent server and Postgres as a Docker compose stack on any Docker host, and covers the Dockerfile's runtime and host build targets for extending it to a new platform.
omnigent-ai/omnigent
Scans Python agent code for framework imports and recommends the matching Omnigent executor type, or says when the framework is not natively supported yet.
omnigent-ai/omnigent
Runs the Omnigent load test with real hosts and multi-turn sessions against a mocked LLM, then explains the latency results from summary.md.
omnigent-ai/omnigent
Spins up an isolated Omnigent server, runner and mock model to prove a user-facing behavior or bug fix with recorded evidence instead of reasoning from code.
omnigent-ai/omnigent
Spins up a local Omnigent server and exercises the Antigravity (Gemini) SDK harness end to end: building agents, running real turns, smoke tests and bug-bashing.
omnigent-ai/omnigent
Gives patterns for generating a minimal, valid Omnigent agent directory: the config.yaml fields, the right executor type, and the files each agent needs.
Works with
Categories
Spin up a live local Omnigent server and exercise the Cursor SDK harness end-to-end — build cursor agents, run real turns, smoke-test, and bug-bash. Cursor SDK E2E Dev is an agent skill from omnigent-ai/omnigent. Spin up a live local Omnigent server and exercise the Cursor SDK harness end-to-end — build cursor agents, run real turns, smoke-test, and bug-bash.
Cursor SDK E2E Dev fits situations like: tasks that involve End-to-end testing; tasks that involve QA and bug reports.
Run `npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a claude-code`. Or copy the skill folder (.claude/skills/cursor-sdk-e2e-dev in omnigent-ai/omnigent) into .claude/skills/cursor-sdk-e2e-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a codex`. Or copy the skill folder (.claude/skills/cursor-sdk-e2e-dev in omnigent-ai/omnigent) into .agents/skills/cursor-sdk-e2e-dev in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add omnigent-ai/omnigent --skill cursor-sdk-e2e-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cursor-sdk-e2e-dev, .gemini/skills/cursor-sdk-e2e-dev, .github/skills/cursor-sdk-e2e-dev and .opencode/skills/cursor-sdk-e2e-dev in your project.
Going by SKILL.md and its folder, Cursor SDK E2E Dev needs the command-line tools its instructions call (python, uv and git) and credentials named CURSOR_API_KEY. Our summary lists: Python 3; A credential in CURSOR_API_KEY.
SKILL.md contains no URLs. Its commands use uv and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Cursor SDK E2E Dev is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Cursor SDK E2E Dev: E2E (wp-media/wp-rocket, 767 stars), CodexBar Live QA (steipete/CodexBar, 22k stars), Acceptance Evidence for Deliveries (lobehub/lobehub, 83k stars) and E2E (kortix-ai/suna, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
omnigent-ai (a GitHub organization) maintains it in omnigent-ai/omnigent, which has 10,633 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 7, 2026.
Source: omnigent-ai/omnigent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.