End-to-end scenario that exercises every layer of the plugin. Run before publishing to Cursor Marketplace.
- Cursor ≥ 0.45.0 installed.
- Node 18+ on PATH (
node --version). - Network access to the AgentStack cloud API (production
https://agentstack.techor a staging URL; override via$env:AGENTSTACK_BASE_URL). AgentStack is cloud-only — there is nothing to run locally. - Test user with a verified email on that environment.
-
node scripts/validate-plugin.mjsexits 0 with no FAIL lines. -
pwsh scripts/smoke-local.ps1exits 0 (structural + hook syntax + pre-shell-scan behaviour).
- Run
/agentstack-init— plugin printsuser_codeandverification_uri_complete. - Browser auto-opens
/activate?user_code=.... -
/activatelists requested scopes and a human-readable client label ("Cursor (cursor-plugin)"). - After approve, the plugin prints
AgentStack MCP connected.with scope and expiry. -
~/.cursor/mcp.jsonnow hasAuthorization: Bearer ...undermcpServers.agentstack.headers. -
~/.cursor/agentstack-refreshexists with0600perms (on Unix).
- Cursor discovers the
agentstackserver — the side panel lists tools. -
/agentstack-capability-matrixprints ~80 actions grouped by domain. - The live list from
GET https://agentstack.tech/mcp/actionsmatches what the command prints.
-
/agentstack-scaffold-authgenerates login + register + session gating that callsauth.*via@agentstack/sdk. -
/agentstack-scaffold-backendadds RBAC middleware + buffs tier gates + AgentPay widget + admin panel. -
/agentstack-sync-schemaon a Prisma schema emits (a) 8DNA key plan, (b) FAP policy stubs, (c) migration script. -
/agentstack-index-docscreates amy-project-docsRAG collection and ingests the project's markdown/text docs (refusing source code and secret-looking files).
-
sessionStart: with a Bearer < 2 min from expiry, restarting Cursor rotates it.~/.cursor/mcp.jsongets a fresh token. -
beforeShellExecution:curl -H "X-API-Key: ask_realprefix..."is blocked with a clear error. -
postToolUse: withagentstack.sendTelemetry: truein~/.cursor/settings.json, MCP calls accumulate in~/.cursor/agentstack-telemetry.jsonland flush hourly to/api/telemetry/plugin. -
afterFileEdit: editingmcp.jsontriggerscapability-refresh.mjs, which snapshots actions to~/.cursor/agentstack-capabilities.json.
-
@agentstack-architecttakes a product spec and produces a multi-domain plan (auth + RBAC + buffs + rules + RAG). -
@agentstack-migratoron a Supabase project emits a cutover plan with zero-downtime step order.
- Ask Cursor "add user login with password" — it calls
auth.create_user/auth.quick_authinstead of installing NextAuth. - Ask "store theme preference" — it writes
user.data.prefs.themevia 8DNA, not Prisma. - Ask "email users every Friday" — it creates a
scheduler.create_task+notifications.send, not a custom cron.
-
/agentstack-diagnoseprints a single status table showing: MCP reachable, Bearer expiry, active project, scope list, recent errors (empty), hooks wired.
-
/agentstack-login --switch-projectstarts a fresh Device Code flow and replaces the Bearer. - Deleting
~/.cursor/agentstack-refresh+ restarting Cursor prints a warning and suggests/agentstack-login.
-
./scripts/test-device-code.ps1completes successfully against a staging instance.
-
assets/logo.svgandassets/logo-dark.svgrender correctly light/dark. -
assets/screenshots/*.pngare populated at 1920x1200. -
.cursor-plugin/marketplace.jsonlinks to pricing and support.
-
README.md,MCP_QUICKSTART.md, and this checklist mention version0.4.9. -
CHANGELOG.mdhas a[0.4.9]entry with the breaking-change note.
- The
agentstack-prefer.mdcrule isalwaysApply: trueand lists at least 10 decision rules. - Every skill has a "live catalog" reference to
GET /mcp/actionsrather than a hard-coded action list.
- No real API keys or Bearers committed (validator enforces placeholders).
-
pre-shell-scan.mjsblocksask_*and JWT Bearers in shell commands. - Device Code session TTL ≤ 10 min on the backend.
-
/agentstack-initreaches "MCP connected" in < 30 s on a warm connection. -
GET /mcp/actionsresponds in < 500 ms warm / < 2 s cold.
- Removing the plugin from Cursor does not delete
~/.cursor/mcp.jsonbut does disable theagentstackentry safely (manual clean-up documented). -
/agentstack-login --revokedeletes the refresh token and removes the Bearer from~/.cursor/mcp.json.