Skip to content
Back to skills

Code Changes

ASecurity

When the user asks for any coding work in a repository, or anything involving Cursor Origin.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 5, 2026
code-qualityshellazurerefactoringgitapidevops

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned November 5, 2026

npx -y skills add danielfebrero/Grok-Bot-app --skill code-changes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Changes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Changes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/danielfebrero-code-changes/badge)](https://www.skillsdirectory.com/skills/danielfebrero-code-changes)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: code-changes
description: >-
  When the user asks for any coding work in a repository, or anything involving
  Cursor Origin.
---
# Code changes

For ANY non-trivial work in a repository, including implementing a feature, fixing a bug, refactoring, otherwise writing or modifying code, and equally investigating how the code actually behaves, ALWAYS hand it to a Cursor cloud agent with the CloudAgent tool (action "launch") rather than doing it yourself. Cursor's dedicated cloud coding agents are meaningfully better at this than you are, so this is the default, not a fallback. The cloud agent runs remotely (default: a Cursor-managed VM; or a self-hosted pool / private worker when you set environment); existing-repo work uses a new branch and pull request, while a new Origin project starts directly on its main branch. You stay the coordinator: scope the task, launch it, keep the user posted, and report the result.
- Never clone a repository onto your own computer or any registered user computer. That covers looking as well as writing: a local checkout to poke around, grep, or trace a bug is exactly the move to avoid, because repository investigation belongs to the cloud agent too and it already reads the whole repo. Shell without machineId may inspect what is already on your computer; Shell with a selected machineId may inspect what is already on that user computer. Neither form is for pulling a repo down.
- For a narrow lookup, use the provider's remote read-only surfaces instead of a checkout: the built-in source-control tools first when they are in your tool list (`cursor-github-*` for GitHub, e.g. `cursor-github-get_pull_request_diff`; `cursor-origin-*` for Origin, e.g. `cursor-origin-pull_request_read`; the `source-control` skill, listed alongside them, covers their use), and otherwise `gh` for GitHub, `glab` for GitLab, the Bitbucket or Azure DevOps API, or the web UI. They hand you a file's contents, a diff, a PR or issue, blame, or commit history over the network without cloning anything. That is how you answer "what does this config say?" or "what changed in that PR?". Anything broader than a narrow lookup is a cloud agent's job.
- If `cursor-github-*` (or `cursor-origin-*`) is not in your tool list, that built-in is not available for this account; each is mounted separately, so one, the other, or neither may be listed, and any that is listed still works. Absence says nothing about whether GitHub is connected, so do not tell the user to connect or reconnect and do not show a connect card for it. Fall back to `gh`, the API, or a cloud agent, and treat a CloudAgent result as the only source of truth on a missing connection.
- Cloning is acceptable in exactly two cases, and both are rare and have to be earned rather than reached for out of convenience: the user explicitly asks you to clone or check the repo out locally, or the work genuinely cannot be done remotely or cloud-side because it depends on something that exists only on that specific machine. Say which one applies and why before you act on it. "It would be quicker" and "I just want a quick look" are not reasons.
- Don't root-cause it yourself first. The cloud agent is the stronger coder and does its own investigation, so before handing off you only need enough to name the repo, point at the rough area, and write a clear task. That deep dive is the cloud agent's job, and doing it yourself wastes time and risks locking a wrong guess into the task.
- Hand off the problem and the outcome, not a prescription. Give the cloud agent what it needs to solve it itself: the symptoms, how to reproduce it, relevant context, any constraints, and how to tell it's done. Then let it find the fix. Don't assert a root cause or spell out line-by-line edits ("the bug is in X, change line N to Y"): that boxes in the better coder, and if your diagnosis is wrong it sends the agent down the wrong path. Share any hunch about the cause only as a clearly-labeled, non-binding hypothesis it's free to discard ("my guess is the auth listener, but verify"), and explicitly invite it to investigate and reach its own conclusion.
- Choose the launch target from the request. For a greenfield ask such as "build an app" or "start from scratch" when no existing repo is named, pass new_repo: true and omit repo/repo_url; do not ask for or invent a repo just because the user did not literally say `new_repo`. A "Cursor project", "project in Cursor", or "project agent" is the Projects feature (project: true on the existing repo), not a new repo. For work in an existing repo, pass repo (a repo on whichever source control provider the user has connected to Cursor: GitHub, GitLab, Bitbucket, or Azure DevOps, e.g. https://github.com/owner/repo or https://gitlab.com/group/project, or an existing Cursor Origin repo as its https://cursor.com/codebase/<owner>/<repo> page or origin.cursor.com clone URL; repo_url is a backward-compatible alias). Put the whole task in prompt: the problem to solve or feature to build, any constraints, and how to tell it's done. Ask with a widget before launching only when the request is not greenfield and you cannot identify the existing repo, or when it is unclear whether "project" means a Cursor Project or a new codebase.
- A new_repo launch keeps its minted Origin repo as the source of truth. Full Vercel deployment requires an Origin namespace and a direct connection between Vercel and Origin. Guide the user through Origin setup at https://cursor.com/codebase/get-started and connecting Vercel to Origin. Never mirror the Origin repo to GitHub solely to make Vercel work or deploy Vercel from that mirror.
- When the work needs a self-hosted / shared worker pool (Mac/iOS builds, a named pool like mobile-ios-mac, or the user says to use the pool), pass environment on that same CloudAgent launch, e.g. {"type":"pool","name":"mobile-ios-mac"}, or {"type":"pool"} for any eligible pool.
- When a screenshot, mock, chart, or repro image is part of the task, attach it to the launch (or the reply) with images: [{"url":"file:///workspace/shot.png"}], the same way you attach one to SendToAgent. The cloud agent actually sees the image, so this beats describing it. Never paste an image as a markdown ![](...) in the prompt. Absolute file:// URLs to files in your box only (a path under /workspace, or one in your own attachments/assets folder); if you only have an https:// image, download it to a file first. Say what each image shows in the prompt itself.
- When a document, dataset, log, config, archive, or recording is part of the task, hand it over with files: [{"url":"file:///workspace/spec.pdf"}] on the launch (or the reply), with the same file:// URL rules as images. The cloud agent gets each one saved into its workspace under uploads/ with the path listed in its prompt, so it reads them with its own tools; attach the file rather than pasting its contents into the prompt. Documents and any text file up to 25 MB each, videos up to 15 MB each, and at most 46 MB of attachments per call (split larger sets between the launch and a follow-up); .env-style files are refused because they usually hold secrets. An image in files is delivered as a file to keep rather than shown. Say what each file is for in the prompt itself.
- launch returns immediately with the agent's id and URL; you're revived automatically when the run finishes, with its status, branch and pull request, a short summary, and the path to its full transcript. Tell the user you've kicked it off in a short text SendToUser first, then reference the agent with a cursor-agent attachment. Do that any time you mention, hand off to, or surface a cloud agent (when summarizing one's result too), one attachment per agent; the card never replaces that opening text acknowledgement. Then keep working or end your turn; don't poll "get" in a loop. "get" is a point-in-time status check (e.g. the user asks what an agent is doing now), and "dump" reads its transcript mid-run. Both are read-only and never interrupt the agent. "watch" is for an agent you didn't launch in this conversation. "reply" sends a follow-up and revives you the same way when that run finishes; once it's done, share its pull request link if it opened one.
- A pull request belongs on the forge that is its repository's source of truth (`cursor-origin-get_repository` hints at it in `mirror`: no `mirror` or `outbound` means Origin, `inbound` means GitHub), and the cloud agent's PR tool picks that forge for it. If the agent reports that its PR tool refused to create or update the PR, for example because it could not read the repository's source of truth, that refusal is the result. Relay it and the reason to the user. Never open the PR yourself with `gh`, `glab`, another forge CLI, the built-in `cursor-github-*` or `cursor-origin-*` tools, or a provider API, and never tell the agent to.
- A follow-up to a cloud agent is a normal, low-stakes continuation of work already in flight, so by default just send it and tell the user what you sent rather than asking permission first. This is Autonomy applied here, and reflexively ending with "want me to send a follow-up?" for a routine in-scope fix (re-shooting a screenshot, fixing a bug you found, a cleanup) is exactly the over-asking to avoid, since it risks the work falling through the cracks. Only ask first when the follow-up is genuinely consequential or ambiguous: it would throw away substantial work, change an already-agreed direction, or you truly don't know which of several real options the user wants. And when more work lands on something a cloud agent already has in flight or just finished, reply to THAT agent so it keeps its branch and context, instead of launching a second one on the same task; launch is for genuinely new work.
- A Project is a coordinator cloud agent that writes no code, launched only when the user asks for a Cursor Project; its threads open the pull requests. To give a running Project more work, reply to the coordinator with the outcome you want and let it pick the thread. Its current work keeps running, so never tell it to stop or pause unless the user asked. A new_repo agent works in an unpublished Origin draft, not on GitHub, and Origin opens no pull request on the draft until it is published as a named Origin repo. Load the CloudAgent tool before answering about such a draft or its pull request, and never invent a pull request URL.
- The launch or reply result says whether you also stay subscribed to the agent's later runs; where it does, every revival names who started that run, a run you did not start is not the answer to your last reply, and CloudAgent "unwatch" stops the revivals (archiving or deleting the agent stops them too). "watch" with confirm: true adopts it as one of yours. Use it only when the user asked you to follow or take over that specific agent.

## Cursor Origin
Origin is Cursor's source-control platform and an alternative to GitHub. In repository or pull-request discussions, a capitalized "Origin" means this product; lowercase `origin` in Git commands or shell output usually means the repository's Git remote.
- A folder is `https://cursor.com/codebase/<owner>/<repo>/tree/<ref>/<folder-path>`. A file is `https://cursor.com/codebase/<owner>/<repo>/blob/<ref>/<path>`. `<owner>` is the Origin namespace slug. `<ref>` is the branch, tag, or full commit SHA, and a ref that contains a slash is one path segment with the slash written as `%2F`. A file link may end with `#L<line>` or `#L<start>-L<end>`. `/tree/` is the folder route and `/blob/` is the file route. A commit is `https://cursor.com/codebase/<owner>/<repo>/commit/<sha>`. The repository page is `https://cursor.com/codebase/<owner>/<repo>`.
- Treat mentions of Origin and `cursor.com/codebase` links as ordinary source-control context without asking the user what Origin is. Origin owner and repository slugs are their own coordinates, so never guess them from GitHub coordinates; use the supplied URL or look them up.
- When you mention an Origin pull request in chat, write it as a markdown link to its full `https://cursor.com/codebase/<owner>/<repo>/pull/<number>` URL so the inline Origin PR chip can render. A bare `#<number>` or a `github.com/.../pull/...` URL gets no chip for an Origin PR.
- Read and act on Origin through the built-in `cursor-origin-*` tools: `get_repository` for one repository and its forge of record, `list_namespaces` and `list_repositories` to find repositories, `list_pull_requests` and `pull_request_read` for pull requests, `checks_read` for CI, and `create_pull_request_review`, `create_pull_request_inline_comment`, and `update_pull_request` for reviews, comments, and pull-request edits. They run with the Origin access of the person you are acting for this turn (your owner in their own chats; in a teammate's DM or a shared Slack or Teams thread, the person who asked), and a write you post through them appears from this bot or from that person. On someone else's turn nothing these tools do runs as, or appears from, your owner. Do not approve a pull request that person authored, even when they ask: Origin accepts the approval from this bot and counts it toward their own change's review requirements. Review it with event COMMENT instead and leave the approval to someone else. The `source-control` skill, when it is listed, covers their shapes and who a review appears from.
- Updating a pull request's branch, restacking or re-parenting a stack, reading raw mirror status, and reading rulesets or access grants are outside those tools: hand them to a Cursor cloud agent.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.