From 0e1597f524880c554a0e22f001f45f5fc20dfaa4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 05:14:44 +0000 Subject: [PATCH 1/6] chore: add Cursor Cloud Agents environment configuration - Add .cursor/environment.json with install and start scripts - Add sourcebot-local-development skill documenting cloud agent workflow - Update AGENTS.md with cloud agent E2E testing guidelines - Add gitignore entries for auto-generated Next.js agent files Co-authored-by: Michael Sukkarieh --- .../sourcebot-local-development/SKILL.md | 129 ++++++++++++++++++ .cursor/environment.json | 6 + .gitignore | 4 + AGENTS.md | 11 ++ 4 files changed, 150 insertions(+) create mode 100644 .agents/skills/sourcebot-local-development/SKILL.md create mode 100644 .cursor/environment.json diff --git a/.agents/skills/sourcebot-local-development/SKILL.md b/.agents/skills/sourcebot-local-development/SKILL.md new file mode 100644 index 000000000..dd3e80f2f --- /dev/null +++ b/.agents/skills/sourcebot-local-development/SKILL.md @@ -0,0 +1,129 @@ +# Sourcebot Local Development for Cursor Cloud Agents + +## Overview + +This skill documents the workflow for Cursor Cloud Agents working on Sourcebot. Cloud agents own the full E2E testing workflow, including visible UI testing, on the cloud VM. + +## Environment + +Sourcebot runs as a Yarn 4 monorepo with: + +- **Web (Next.js)**: Port 3000 - Main application UI +- **Backend worker**: Port 3060 - Express + BullMQ job processor +- **Zoekt WebServer**: Port 6070 - Code search engine +- **PostgreSQL**: Port 5432 - Database +- **Redis**: Port 6379 - Job queue + +## Key Commands + +```bash +# Start all services (after install) +yarn dev + +# Run database migrations +yarn dev:prisma:migrate:dev + +# Build shared packages +yarn build:deps + +# Run linting +yarn workspace @sourcebot/web lint + +# Run tests +yarn test +``` + +## Testing Workflow + +### Cloud Agents Own E2E Testing + +Cursor Cloud Agents are responsible for: + +1. **Visible UI E2E testing** on the cloud VM using the computerUse subagent +2. **Automated tests** via `yarn test` +3. **Manual verification** of UI changes via screenshots/recordings + +The coordinator (or Grok Bot) should **NOT re-run UI E2E tests** on a separate computer once the cloud agent has proven them working. + +### First Run Onboarding + +On a fresh database, the app redirects to `/onboard` where you: +1. Create an owner account (email/password) +2. Set up the organization +3. Configure repository connections + +### Testing Checklist + +- [ ] App boots successfully (`yarn dev`) +- [ ] HTTP 200 on `http://localhost:3000` (may redirect to `/onboard`) +- [ ] Onboarding flow completes (if fresh DB) +- [ ] Repositories page loads +- [ ] Code search works (after indexing completes) + +## Merge Policy + +**Important**: Sourcebot differs from Bain: + +- **Never auto-merge PRs** +- Wait for Michael's **explicit approval** before merging any PR +- Never manual-deploy via Vercel; merge to `origin/main` only after approval for Git-connected deploy + +## Runtime Secrets + +The following secrets may be needed (configured in Cursor Dashboard > Cloud Agents > Secrets): + +| Secret Name | Purpose | Required for Boot? | +|-------------|---------|-------------------| +| `ANTHROPIC_API_KEY` | AI Q&A features (Anthropic Claude) | No (optional AI features) | +| `OPENAI_API_KEY` | AI Q&A features (OpenAI) | No (optional AI features) | +| `FALLBACK_GITHUB_CLOUD_TOKEN` | GitHub API access for private repos | No (public repos work without) | +| `POSTHOG_PAPIK` | Telemetry (if `SOURCEBOT_TELEMETRY_DISABLED=false`) | No | + +Most environment variables have sensible defaults in `.env.development`. Create `.env.development.local` for overrides. + +## Config File + +The `config.json` at repo root (referenced by `CONFIG_PATH`) configures which repos to index: + +```json +{ + "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json", + "connections": { + "github-public": { + "type": "github", + "repos": ["sourcebot-dev/sourcebot"] + } + } +} +``` + +For AI features, add a `models` section with appropriate API keys. + +## Troubleshooting + +### Docker Issues + +If Docker fails to start: +```bash +# Start Docker daemon manually +sudo dockerd > /tmp/dockerd.log 2>&1 & +sleep 3 +sudo chmod 666 /var/run/docker.sock +``` + +### Database Connection Issues + +Ensure PostgreSQL container is running: +```bash +docker compose -f docker-compose-dev.yml up -d +docker ps # Should show sourcebot-postgres and sourcebot-redis +``` + +### Zoekt Binaries Missing + +Rebuild from vendor: +```bash +git submodule update --init --recursive +mkdir -p bin +go build -C vendor/zoekt -o $(pwd)/bin ./cmd/... +``` diff --git a/.cursor/environment.json b/.cursor/environment.json new file mode 100644 index 000000000..61b954f71 --- /dev/null +++ b/.cursor/environment.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://cursor.com/schemas/environment.json", + "install": "#!/bin/bash\nset -e\n\n# Install Docker\nif ! command -v docker &> /dev/null; then\n curl -fsSL https://get.docker.com | sudo sh\n sudo usermod -aG docker ubuntu\nfi\n\n# Start Docker daemon if not running\nif ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\nfi\n\n# Initialize git submodules\ngit submodule update --init --recursive\n\n# Enable corepack for Yarn\ncorepack enable\n\n# Build Zoekt binaries\nmkdir -p bin\ngo build -C vendor/zoekt -o $(pwd)/bin ./cmd/...\n\n# Install dependencies and build shared packages\nyarn install\nyarn build:deps\n\n# Start PostgreSQL and Redis containers\ndocker compose -f docker-compose-dev.yml up -d\nsleep 3\n\n# Run database migrations\nyarn dev:prisma:migrate:dev\n\n# Create minimal config.json with public repos for E2E testing\ncat > config.json << 'CONFIGEOF'\n{\n \"$schema\": \"https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json\",\n \"connections\": {\n \"github-public\": {\n \"type\": \"github\",\n \"repos\": [\"sourcebot-dev/sourcebot\"]\n }\n }\n}\nCONFIGEOF\n\necho \"[env-setup] Install completed successfully\"", + "start": "#!/bin/bash\nset -e\n\n# Ensure Docker daemon is running\nif ! docker info &> /dev/null 2>&1; then\n if [ -f /var/run/docker.sock ]; then\n sudo chmod 666 /var/run/docker.sock 2>/dev/null || true\n fi\n if ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\n fi\nfi\n\n# Ensure containers are running\ndocker compose -f docker-compose-dev.yml up -d\nsleep 2\n\n# Start development server\ncd /workspace\nyarn dev &\n\n# Wait for port 3000 to be ready\necho \"[start] Waiting for http://localhost:3000...\"\nfor i in {1..60}; do\n if curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/ 2>/dev/null | grep -qE '^(200|307)$'; then\n echo \"[start] Server ready on port 3000\"\n break\n fi\n sleep 2\ndone\n\n# Keep container alive\nwait", + "ports": [3000] +} diff --git a/.gitignore b/.gitignore index 58b2dbc15..695635376 100644 --- a/.gitignore +++ b/.gitignore @@ -172,3 +172,7 @@ __pycache__/ oss-licenses.json oss-license-summary.json license-audit-result.json + +# Auto-generated Next.js agent files +packages/web/AGENTS.md +packages/web/CLAUDE.md diff --git a/AGENTS.md b/AGENTS.md index 69e435ef4..3bc76a058 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -46,6 +46,17 @@ Standard dev commands are documented in `CONTRIBUTING.md` and `package.json`. Ke - **Environment variables:** `.env.development` has sensible defaults for local dev. Create `.env.development.local` for overrides (it's gitignored). - The backend worker does not expose a health-check endpoint. Verify it's running by checking its logs or that BullMQ jobs are processing. +### Cloud Agent E2E Testing + +Cursor Cloud Agents own the full E2E testing workflow on the cloud VM: + +- **Visible UI E2E testing**: Cloud agents perform UI testing using the computerUse subagent +- **No coordinator re-testing**: Once a cloud agent has proven E2E tests working, the coordinator should NOT re-run UI E2E on a Grok Bot computer +- **Merge policy**: Never auto-merge; wait for Michael's explicit approval before merging any Sourcebot PR +- **No manual Vercel deploys**: Merge to `origin/main` only after approval for Git-connected deploy + +See `.agents/skills/sourcebot-local-development/SKILL.md` for detailed testing workflow. + ### Pull Request Workflow - **CHANGELOG entry required:** Every PR must include a follow-up commit adding an entry to `CHANGELOG.md` under `[Unreleased]`. The entry must be a single sentence describing the change, followed by a link to the PR in the format `[#](https://github.com/sourcebot-dev/sourcebot/pull/)`. Place new entries at the bottom of the appropriate section (`Added`, `Changed`, `Fixed`, etc.). See `CLAUDE.md` and existing entries in `CHANGELOG.md` for the exact conventions. From e09425805eb3c17d99756541b2f28ba495619e77 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 05:15:29 +0000 Subject: [PATCH 2/6] docs: add CHANGELOG entry for PR #1671 Co-authored-by: Michael Sukkarieh --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d67263859..9a2cf9ad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added +- Added Cursor Cloud Agents environment configuration with install/start scripts and cloud agent development skill. [#1671](https://github.com/sourcebot-dev/sourcebot/pull/1671) + ## [5.1.14] - 2026-09-17 ### Added From 10e903320cb8c4e88a5f4408a5d1056dce54162a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 05:21:06 +0000 Subject: [PATCH 3/6] fix: move Docker container operations to start phase Docker containers cannot be created during environment builds due to nested container limitations. Move Docker compose up and database migrations to the start phase which runs after the VM boots. Co-authored-by: Michael Sukkarieh --- .cursor/environment.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cursor/environment.json b/.cursor/environment.json index 61b954f71..320791de4 100644 --- a/.cursor/environment.json +++ b/.cursor/environment.json @@ -1,6 +1,6 @@ { "$schema": "https://cursor.com/schemas/environment.json", - "install": "#!/bin/bash\nset -e\n\n# Install Docker\nif ! command -v docker &> /dev/null; then\n curl -fsSL https://get.docker.com | sudo sh\n sudo usermod -aG docker ubuntu\nfi\n\n# Start Docker daemon if not running\nif ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\nfi\n\n# Initialize git submodules\ngit submodule update --init --recursive\n\n# Enable corepack for Yarn\ncorepack enable\n\n# Build Zoekt binaries\nmkdir -p bin\ngo build -C vendor/zoekt -o $(pwd)/bin ./cmd/...\n\n# Install dependencies and build shared packages\nyarn install\nyarn build:deps\n\n# Start PostgreSQL and Redis containers\ndocker compose -f docker-compose-dev.yml up -d\nsleep 3\n\n# Run database migrations\nyarn dev:prisma:migrate:dev\n\n# Create minimal config.json with public repos for E2E testing\ncat > config.json << 'CONFIGEOF'\n{\n \"$schema\": \"https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json\",\n \"connections\": {\n \"github-public\": {\n \"type\": \"github\",\n \"repos\": [\"sourcebot-dev/sourcebot\"]\n }\n }\n}\nCONFIGEOF\n\necho \"[env-setup] Install completed successfully\"", - "start": "#!/bin/bash\nset -e\n\n# Ensure Docker daemon is running\nif ! docker info &> /dev/null 2>&1; then\n if [ -f /var/run/docker.sock ]; then\n sudo chmod 666 /var/run/docker.sock 2>/dev/null || true\n fi\n if ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\n fi\nfi\n\n# Ensure containers are running\ndocker compose -f docker-compose-dev.yml up -d\nsleep 2\n\n# Start development server\ncd /workspace\nyarn dev &\n\n# Wait for port 3000 to be ready\necho \"[start] Waiting for http://localhost:3000...\"\nfor i in {1..60}; do\n if curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/ 2>/dev/null | grep -qE '^(200|307)$'; then\n echo \"[start] Server ready on port 3000\"\n break\n fi\n sleep 2\ndone\n\n# Keep container alive\nwait", + "install": "#!/bin/bash\nset -e\n\n# Install Docker (needed for runtime, not for build)\nif ! command -v docker &> /dev/null; then\n curl -fsSL https://get.docker.com | sudo sh\n sudo usermod -aG docker ubuntu\nfi\n\n# Initialize git submodules\ngit submodule update --init --recursive\n\n# Enable corepack for Yarn\ncorepack enable\n\n# Build Zoekt binaries\nmkdir -p bin\ngo build -C vendor/zoekt -o $(pwd)/bin ./cmd/...\n\n# Install dependencies and build shared packages\nyarn install\nyarn build:deps\n\n# Create minimal config.json with public repos for E2E testing\ncat > config.json << 'CONFIGEOF'\n{\n \"$schema\": \"https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json\",\n \"connections\": {\n \"github-public\": {\n \"type\": \"github\",\n \"repos\": [\"sourcebot-dev/sourcebot\"]\n }\n }\n}\nCONFIGEOF\n\necho \"[env-setup] Install completed successfully\"", + "start": "#!/bin/bash\nset -e\n\n# Start Docker daemon\nif ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\n # Wait for Docker to be ready\n for i in {1..30}; do\n if docker info &> /dev/null 2>&1; then\n echo \"[start] Docker daemon ready\"\n break\n fi\n sleep 1\n done\nfi\n\n# Start PostgreSQL and Redis containers\ncd /workspace\ndocker compose -f docker-compose-dev.yml up -d\nsleep 5\n\n# Run database migrations\nyarn dev:prisma:migrate:dev\n\n# Start development server\nyarn dev &\n\n# Wait for port 3000 to be ready\necho \"[start] Waiting for http://localhost:3000...\"\nfor i in {1..90}; do\n if curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/ 2>/dev/null | grep -qE '^(200|307)$'; then\n echo \"[start] Server ready on port 3000\"\n break\n fi\n sleep 2\ndone\n\n# Keep container alive\nwait", "ports": [3000] } From 9188a57b8d8da83d56cc818e0681accc5c3115b5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 16:06:18 +0000 Subject: [PATCH 4/6] chore: simplify environment setup PR per feedback - Remove duplicate skill file (content overlaps AGENTS.md) - Fix ports format in environment.json to use objects per schema - Remove from environment.json (current schema rejects it) - Revert CHANGELOG.md (not needed for env-config-only PR) - Revert .gitignore additions - Simplify AGENTS.md cloud agent section Co-authored-by: Michael Sukkarieh --- .../sourcebot-local-development/SKILL.md | 129 ------------------ .cursor/environment.json | 3 +- .gitignore | 4 - AGENTS.md | 3 - CHANGELOG.md | 3 - 5 files changed, 1 insertion(+), 141 deletions(-) delete mode 100644 .agents/skills/sourcebot-local-development/SKILL.md diff --git a/.agents/skills/sourcebot-local-development/SKILL.md b/.agents/skills/sourcebot-local-development/SKILL.md deleted file mode 100644 index dd3e80f2f..000000000 --- a/.agents/skills/sourcebot-local-development/SKILL.md +++ /dev/null @@ -1,129 +0,0 @@ -# Sourcebot Local Development for Cursor Cloud Agents - -## Overview - -This skill documents the workflow for Cursor Cloud Agents working on Sourcebot. Cloud agents own the full E2E testing workflow, including visible UI testing, on the cloud VM. - -## Environment - -Sourcebot runs as a Yarn 4 monorepo with: - -- **Web (Next.js)**: Port 3000 - Main application UI -- **Backend worker**: Port 3060 - Express + BullMQ job processor -- **Zoekt WebServer**: Port 6070 - Code search engine -- **PostgreSQL**: Port 5432 - Database -- **Redis**: Port 6379 - Job queue - -## Key Commands - -```bash -# Start all services (after install) -yarn dev - -# Run database migrations -yarn dev:prisma:migrate:dev - -# Build shared packages -yarn build:deps - -# Run linting -yarn workspace @sourcebot/web lint - -# Run tests -yarn test -``` - -## Testing Workflow - -### Cloud Agents Own E2E Testing - -Cursor Cloud Agents are responsible for: - -1. **Visible UI E2E testing** on the cloud VM using the computerUse subagent -2. **Automated tests** via `yarn test` -3. **Manual verification** of UI changes via screenshots/recordings - -The coordinator (or Grok Bot) should **NOT re-run UI E2E tests** on a separate computer once the cloud agent has proven them working. - -### First Run Onboarding - -On a fresh database, the app redirects to `/onboard` where you: -1. Create an owner account (email/password) -2. Set up the organization -3. Configure repository connections - -### Testing Checklist - -- [ ] App boots successfully (`yarn dev`) -- [ ] HTTP 200 on `http://localhost:3000` (may redirect to `/onboard`) -- [ ] Onboarding flow completes (if fresh DB) -- [ ] Repositories page loads -- [ ] Code search works (after indexing completes) - -## Merge Policy - -**Important**: Sourcebot differs from Bain: - -- **Never auto-merge PRs** -- Wait for Michael's **explicit approval** before merging any PR -- Never manual-deploy via Vercel; merge to `origin/main` only after approval for Git-connected deploy - -## Runtime Secrets - -The following secrets may be needed (configured in Cursor Dashboard > Cloud Agents > Secrets): - -| Secret Name | Purpose | Required for Boot? | -|-------------|---------|-------------------| -| `ANTHROPIC_API_KEY` | AI Q&A features (Anthropic Claude) | No (optional AI features) | -| `OPENAI_API_KEY` | AI Q&A features (OpenAI) | No (optional AI features) | -| `FALLBACK_GITHUB_CLOUD_TOKEN` | GitHub API access for private repos | No (public repos work without) | -| `POSTHOG_PAPIK` | Telemetry (if `SOURCEBOT_TELEMETRY_DISABLED=false`) | No | - -Most environment variables have sensible defaults in `.env.development`. Create `.env.development.local` for overrides. - -## Config File - -The `config.json` at repo root (referenced by `CONFIG_PATH`) configures which repos to index: - -```json -{ - "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json", - "connections": { - "github-public": { - "type": "github", - "repos": ["sourcebot-dev/sourcebot"] - } - } -} -``` - -For AI features, add a `models` section with appropriate API keys. - -## Troubleshooting - -### Docker Issues - -If Docker fails to start: -```bash -# Start Docker daemon manually -sudo dockerd > /tmp/dockerd.log 2>&1 & -sleep 3 -sudo chmod 666 /var/run/docker.sock -``` - -### Database Connection Issues - -Ensure PostgreSQL container is running: -```bash -docker compose -f docker-compose-dev.yml up -d -docker ps # Should show sourcebot-postgres and sourcebot-redis -``` - -### Zoekt Binaries Missing - -Rebuild from vendor: -```bash -git submodule update --init --recursive -mkdir -p bin -go build -C vendor/zoekt -o $(pwd)/bin ./cmd/... -``` diff --git a/.cursor/environment.json b/.cursor/environment.json index 320791de4..f804d82e8 100644 --- a/.cursor/environment.json +++ b/.cursor/environment.json @@ -1,6 +1,5 @@ { - "$schema": "https://cursor.com/schemas/environment.json", "install": "#!/bin/bash\nset -e\n\n# Install Docker (needed for runtime, not for build)\nif ! command -v docker &> /dev/null; then\n curl -fsSL https://get.docker.com | sudo sh\n sudo usermod -aG docker ubuntu\nfi\n\n# Initialize git submodules\ngit submodule update --init --recursive\n\n# Enable corepack for Yarn\ncorepack enable\n\n# Build Zoekt binaries\nmkdir -p bin\ngo build -C vendor/zoekt -o $(pwd)/bin ./cmd/...\n\n# Install dependencies and build shared packages\nyarn install\nyarn build:deps\n\n# Create minimal config.json with public repos for E2E testing\ncat > config.json << 'CONFIGEOF'\n{\n \"$schema\": \"https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json\",\n \"connections\": {\n \"github-public\": {\n \"type\": \"github\",\n \"repos\": [\"sourcebot-dev/sourcebot\"]\n }\n }\n}\nCONFIGEOF\n\necho \"[env-setup] Install completed successfully\"", "start": "#!/bin/bash\nset -e\n\n# Start Docker daemon\nif ! docker info &> /dev/null 2>&1; then\n sudo dockerd > /tmp/dockerd.log 2>&1 &\n sleep 3\n sudo chmod 666 /var/run/docker.sock || true\n # Wait for Docker to be ready\n for i in {1..30}; do\n if docker info &> /dev/null 2>&1; then\n echo \"[start] Docker daemon ready\"\n break\n fi\n sleep 1\n done\nfi\n\n# Start PostgreSQL and Redis containers\ncd /workspace\ndocker compose -f docker-compose-dev.yml up -d\nsleep 5\n\n# Run database migrations\nyarn dev:prisma:migrate:dev\n\n# Start development server\nyarn dev &\n\n# Wait for port 3000 to be ready\necho \"[start] Waiting for http://localhost:3000...\"\nfor i in {1..90}; do\n if curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/ 2>/dev/null | grep -qE '^(200|307)$'; then\n echo \"[start] Server ready on port 3000\"\n break\n fi\n sleep 2\ndone\n\n# Keep container alive\nwait", - "ports": [3000] + "ports": [{"name": "web", "port": 3000}] } diff --git a/.gitignore b/.gitignore index 695635376..58b2dbc15 100644 --- a/.gitignore +++ b/.gitignore @@ -172,7 +172,3 @@ __pycache__/ oss-licenses.json oss-license-summary.json license-audit-result.json - -# Auto-generated Next.js agent files -packages/web/AGENTS.md -packages/web/CLAUDE.md diff --git a/AGENTS.md b/AGENTS.md index 3bc76a058..308f199c1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -51,12 +51,9 @@ Standard dev commands are documented in `CONTRIBUTING.md` and `package.json`. Ke Cursor Cloud Agents own the full E2E testing workflow on the cloud VM: - **Visible UI E2E testing**: Cloud agents perform UI testing using the computerUse subagent -- **No coordinator re-testing**: Once a cloud agent has proven E2E tests working, the coordinator should NOT re-run UI E2E on a Grok Bot computer - **Merge policy**: Never auto-merge; wait for Michael's explicit approval before merging any Sourcebot PR - **No manual Vercel deploys**: Merge to `origin/main` only after approval for Git-connected deploy -See `.agents/skills/sourcebot-local-development/SKILL.md` for detailed testing workflow. - ### Pull Request Workflow - **CHANGELOG entry required:** Every PR must include a follow-up commit adding an entry to `CHANGELOG.md` under `[Unreleased]`. The entry must be a single sentence describing the change, followed by a link to the PR in the format `[#](https://github.com/sourcebot-dev/sourcebot/pull/)`. Place new entries at the bottom of the appropriate section (`Added`, `Changed`, `Fixed`, etc.). See `CLAUDE.md` and existing entries in `CHANGELOG.md` for the exact conventions. diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a2cf9ad9..d67263859 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Added -- Added Cursor Cloud Agents environment configuration with install/start scripts and cloud agent development skill. [#1671](https://github.com/sourcebot-dev/sourcebot/pull/1671) - ## [5.1.14] - 2026-09-17 ### Added From 8c003143bfd9f03fde06f2c78bbc28c360e11e0f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 16:13:23 +0000 Subject: [PATCH 5/6] chore: remove personal names from merge policy Co-authored-by: Michael Sukkarieh --- AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 308f199c1..d4e0879ef 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -51,7 +51,7 @@ Standard dev commands are documented in `CONTRIBUTING.md` and `package.json`. Ke Cursor Cloud Agents own the full E2E testing workflow on the cloud VM: - **Visible UI E2E testing**: Cloud agents perform UI testing using the computerUse subagent -- **Merge policy**: Never auto-merge; wait for Michael's explicit approval before merging any Sourcebot PR +- **Merge policy**: Never auto-merge; wait for explicit maintainer approval before merging any Sourcebot PR - **No manual Vercel deploys**: Merge to `origin/main` only after approval for Git-connected deploy ### Pull Request Workflow From b86ee3ca301c4016cd2799ebb61a96f9de6d2fef Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 16:31:25 +0000 Subject: [PATCH 6/6] chore: revert AGENTS.md to origin/main Per maintainer decision: PR should contain only .cursor/environment.json Co-authored-by: Michael Sukkarieh --- AGENTS.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index d4e0879ef..69e435ef4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -46,14 +46,6 @@ Standard dev commands are documented in `CONTRIBUTING.md` and `package.json`. Ke - **Environment variables:** `.env.development` has sensible defaults for local dev. Create `.env.development.local` for overrides (it's gitignored). - The backend worker does not expose a health-check endpoint. Verify it's running by checking its logs or that BullMQ jobs are processing. -### Cloud Agent E2E Testing - -Cursor Cloud Agents own the full E2E testing workflow on the cloud VM: - -- **Visible UI E2E testing**: Cloud agents perform UI testing using the computerUse subagent -- **Merge policy**: Never auto-merge; wait for explicit maintainer approval before merging any Sourcebot PR -- **No manual Vercel deploys**: Merge to `origin/main` only after approval for Git-connected deploy - ### Pull Request Workflow - **CHANGELOG entry required:** Every PR must include a follow-up commit adding an entry to `CHANGELOG.md` under `[Unreleased]`. The entry must be a single sentence describing the change, followed by a link to the PR in the format `[#](https://github.com/sourcebot-dev/sourcebot/pull/)`. Place new entries at the bottom of the appropriate section (`Added`, `Changed`, `Fixed`, etc.). See `CLAUDE.md` and existing entries in `CHANGELOG.md` for the exact conventions.