Back to Mattermost

Cursor Cloud Agent Instructions

.cursor/cursor.md

11.8.04.2 KB
Original Source

Cursor Cloud Agent Instructions

These instructions apply to Cursor Cloud Agents after .cursor/scripts/cloud-agent-start.sh materializes this file as .cursor/AGENTS.md.

Environment

  • Docker must be available. If docker info fails, inspect /tmp/docker-service-start.log and /tmp/dockerd.log; do not assume a snapshot will provide Docker.
  • The image includes Go, Node/npm, Docker Compose, AWS CLI v2, and agent-browser.
  • Cursor should provide mattermost/enterprise through the multi-repo environment. The expected layout is sibling repositories, such as /agent/repos/mattermost and /agent/repos/enterprise; this matches server/Makefile's default ../../enterprise path.

Running Mattermost

  1. Start dependencies:

    bash
    cd server
    make start-docker
    
  2. Start the server:

    bash
    cd server
    make run-server
    
  3. Start the web app in another terminal when UI work needs live verification:

    bash
    cd webapp
    make run
    

The Mattermost server is expected at http://localhost:8065. The webapp dev server commonly uses http://localhost:9005.

Known-good Cloud flow

  • In this multi-repo Cloud environment, mattermost and enterprise are expected to start from master, so sibling checkout skew should not need extra handling.

  • server/Makefile's run target only reaches run-client if the server is backgrounded. In Cloud, the reliable combined startup is:

    bash
    cd server
    ENABLED_DOCKER_SERVICES='postgres redis' RUN_SERVER_IN_BACKGROUND=true make run
    
  • If you want split terminals instead, use:

    bash
    cd server
    ENABLED_DOCKER_SERVICES='postgres redis' make run-server
    

    and then:

    bash
    cd webapp
    make run
    
  • When the server starts and MM_LICENSE is present in the environment, the server applies that license automatically. If MM_LICENSE is not set, starting the server automatically applies an Entry license, which provides nearly all functionality needed for development.

  • ENABLED_DOCKER_SERVICES='postgres redis' avoids optional local-dev services such as Prometheus, Grafana, Loki, Minio, Azurite, and OpenLDAP. This is useful in Cloud when Docker Hub rate limits block the default make start-docker dependency set.

  • If the first-user signup UI is flaky but the server is already healthy, seed local state with mmctl and then log in through the browser:

    bash
    cd server
    ./bin/mmctl --local user create --email [email protected] --username cursoradmin --password Password123! --system-admin --email-verified --disable-welcome-email
    ./bin/mmctl --local team create --name cursorteam --display-name "Cursor Team" --email [email protected]
    
  • A healthy server responds at:

    bash
    curl http://127.0.0.1:8065/api/v4/system/ping
    

Tests And Setup

  • Backend workspace setup is handled by cd server && make setup-go-work; never run go mod tidy directly.
  • Webapp dependencies are installed with cd webapp && make node_modules.
  • Playwright dependencies are installed with cd e2e-tests/playwright && npm ci.
  • For full Playwright compose flows, use the existing e2e-tests Makefile and scripts. Docker Compose is available in the Cloud Agent image.

Browser Screenshots

Use agent-browser for browser automation and screenshots. If the CLI is missing or browsers are unavailable, run:

bash
npm install -g [email protected]
agent-browser install
  • Chrome is available in the Cloud image, and agent-browser skills get core --full is a quick check that the CLI and bundled skills are working. Prefer verifying UI changes against the running local Mattermost instance before opening or updating a PR.

AWS And PR Artifacts

AWS CLI v2 is installed for uploading screenshots or reports. Cloud Agents should receive AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_S3_BUCKET_NAME as environment variables.

Before uploading, verify credentials with:

bash
aws sts get-caller-identity
  • If the configured S3 bucket is public, upload with aws s3 cp and share the plain object URL https://$AWS_S3_BUCKET_NAME.s3.amazonaws.com/<key> instead of generating a presigned URL. Do not hardcode AWS credentials or bucket secrets in the repository.