Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
fdc7648
feat(cursor): update the agents, rule, hooks, and skills for Cursor 3.27
tmcfarlane Oct 25, 2026
1aace2f
docs(cursor): describe the edition for Cursor 3.27
tmcfarlane Oct 25, 2026
a34913d
feat(cursor): install the user scope as a local Cursor plugin
tmcfarlane Oct 25, 2026
1e4605d
fix(cursor): install every bundled skill
tmcfarlane Oct 25, 2026
dbdc1ba
fix(cursor): let a user-scope uninstall run offline
tmcfarlane Oct 25, 2026
ced3df4
feat(cursor): install the user scope as a local plugin from install.ps1
tmcfarlane Oct 25, 2026
a7ce877
docs(cursor): explain the backup folder and the installer fixes
tmcfarlane Oct 25, 2026
b8b1a65
fix(cursor): move only files an earlier installer wrote
tmcfarlane Oct 25, 2026
c06466d
fix(cursor): leave the bash hooks off on Windows
tmcfarlane Oct 25, 2026
ac5d416
test(cursor): run the Cursor edition suites on Linux in CI
tmcfarlane Oct 25, 2026
1b2af3c
fix(cursor): run the guard's sed in the C locale
tmcfarlane Oct 25, 2026
99528a2
docs(cursor): match the docs to Cursor's docs and the installers
tmcfarlane Oct 25, 2026
1847fd4
fix(cursor): stop telling users to delete ~/.agents/skills
tmcfarlane Oct 26, 2026
e4adea6
fix(cursor): pin Sokka and Iroh to claude-opus-5-5-high
tmcfarlane Oct 26, 2026
c3b1242
fix(cursor): block staging and committing in one command
tmcfarlane Oct 26, 2026
9681bfc
feat(cursor): warn when the Claude Code edition is installed too
tmcfarlane Oct 26, 2026
298aed9
fix(cursor): run the guard's git checks in the workspace root
tmcfarlane Oct 26, 2026
d1055b2
docs(cursor): record the live run on Cursor 3.27.12
tmcfarlane Oct 26, 2026
00ef1bc
fix(cursor): let Sokka write its plan files
tmcfarlane Oct 26, 2026
657816c
fix(cursor): compare a skill's whole description before moving it
tmcfarlane Oct 26, 2026
7ffdaca
fix(cursor): warn about an old hooks.json in a Windows project
tmcfarlane Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "team-avatar",
"version": "1.1.0",
"description": "Team Avatar for Cursor: eight Avatar characters as subagents, an orchestration rule that routes every task, slash commands, safety hooks, and bundled skills.",
"author": {
"name": "ZeroClickDev"
},
"homepage": "https://github.com/tmcfarlane/team-avatar",
"repository": "https://github.com/tmcfarlane/team-avatar",
"license": "MIT",
"keywords": ["subagents", "orchestration", "hooks", "skills", "team-avatar"],
"logo": "screenshots/teamavatar.png",
"agents": [
"./agents/aang.md",
"./agents/sokka.md",
"./agents/katara.md",
"./agents/zuko.md",
"./agents/toph.md",
"./agents/appa.md",
"./agents/momo.md",
"./agents/iroh.md"
],
"rules": "./rules/",
"commands": "./commands/",
"skills": "./skills/",
"hooks": "./hooks/hooks.json"
}
60 changes: 60 additions & 0 deletions .github/workflows/validate-cursor-edition.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: validate-cursor-edition

on:
push:
branches: [main]
paths:
- "agents/**"
- "commands/**"
- "hooks/**"
- "rules/**"
- "skills/**"
- ".cursor-plugin/**"
- "hooks.json"
- "permissions.json"
- "install.sh"
- "install.ps1"
- "scripts/test-cursor-hooks.sh"
- "scripts/test-install-sh.sh"
- "scripts/test-install-ps1.ps1"
- ".github/workflows/validate-cursor-edition.yml"
pull_request:
paths:
- "agents/**"
- "commands/**"
- "hooks/**"
- "rules/**"
- "skills/**"
- ".cursor-plugin/**"
- "hooks.json"
- "permissions.json"
- "install.sh"
- "install.ps1"
- "scripts/test-cursor-hooks.sh"
- "scripts/test-install-sh.sh"
- "scripts/test-install-ps1.ps1"
- ".github/workflows/validate-cursor-edition.yml"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
cursor-edition:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
# The installer suites build the old layout from the v0.4.2 tag.
fetch-depth: 0
- name: Hook replies match Cursor's schema
run: bash scripts/test-cursor-hooks.sh
- name: install.sh
run: bash scripts/test-install-sh.sh
- name: install.ps1
run: |
legacy="$RUNNER_TEMP/v0.4.2"
mkdir -p "$legacy"
git archive v0.4.2 | tar -x -C "$legacy"
TA_LEGACY_REPO="$legacy" pwsh -NoProfile -File scripts/test-install-ps1.ps1
52 changes: 51 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,60 @@
All notable changes to Team Avatar (formerly oh-my-cursor) are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/); this project uses [SemVer](https://semver.org/).

> **Validated against Cursor 3.9.8** (latest) — every release is verified on a real
> **Last validated against Cursor 3.9.8.** Every release is verified on a real
> Cursor build before tagging. See [`VALIDATION.md`](VALIDATION.md) for the per-version
> compatibility matrix and the 2-minute re-validation check.

## [Unreleased]

The Cursor edition moves to Cursor 3.27. These changes follow Cursor's docs and a partial live run
on Cursor 3.27.12, recorded in [`VALIDATION.md`](VALIDATION.md).

### Changed

- `install.sh` and `install.ps1` install the default user scope as a local Cursor plugin in
`~/.cursor/plugins/local/team-avatar/`. Cursor no longer reads user rules from files, so the old
copy in `~/.cursor/rules/` doesn't load the orchestration rule. Install and uninstall move the
old user-scope files into a backup folder, but only files that match what an earlier installer
wrote. `--project` still writes `.cursor/`.
- `install.ps1` leaves the bash hooks off on Windows, where Cursor runs hooks through PowerShell.
- The repository is a Cursor Plugin: `.cursor-plugin/plugin.json` and `hooks/hooks.json` are new,
and the unused root `plugin.json` is gone.
- Agent names are their file names (`aang`, `toph`, and so on). Cursor uses the name as the
agent's identifier and asks for lowercase letters and hyphens.
- Sokka and Iroh run `claude-opus-5-5-high` instead of the hidden Opus 4.8. Zuko runs
`gemini-4-argon`.
- `guard-shell.sh` prints only `permission`, `user_message`, and `agent_message`, and escapes its
messages. Cursor blocks a command when a permission hook prints invalid JSON or a reply that
doesn't match the hook's schema.
- `post-edit-lint.sh` lints from the workspace root that Cursor passes in `CURSOR_PROJECT_DIR`.
- Two vendored skills have names that match their folders.

### Added

- `scripts/test-cursor-hooks.sh` checks the shell guard's replies against Cursor's hook schema.
- `scripts/test-install-sh.sh` and `scripts/test-install-ps1.ps1` run each installer against
throwaway home folders.
- `.github/workflows/validate-cursor-edition.yml` runs the three suites on Linux when the Cursor
edition changes.
- The installers warn when the Claude Code edition of Team Avatar is installed too. Cursor loads it
as well, and its agents take over the shared names.

### Fixed

- Both installers install all 21 bundled skills. Their skill lists left out
`crafting-effective-readmes`.
- `install.ps1` uses a local checkout on Windows PowerShell 5.1. Its three-argument `Join-Path`
calls failed there, so it downloaded `main` instead.
- `guard-shell.sh` checks commits in the workspace root. A plugin hook starts in the plugin's
folder, and Cursor 3.27 sends an empty `cwd` when the shell call names no directory, so the
anti-pattern check looked at the wrong folder and let an `as any` commit through.
- `guard-shell.sh` blocks a command that stages files and commits in one go, because the
anti-pattern check reads only what is staged before the command runs.
- The installers no longer call `~/.agents/skills/` a legacy folder that is safe to delete. Cursor
and other tools load user skills from it, so the note now names the skills that share a bundled
name instead.

## [1.0.0] - 2026-10-24

Team Avatar becomes a universal agent orchestrator for Claude Code and Codex, and the repository is renamed from `oh-my-cursor` to `team-avatar`. The Cursor edition below still ships unchanged.
Expand Down
Loading
Loading