# RxJS Next migration Skill guide

`@rxjs/migrate` ships one authored Agent Skill at
`packages/migrate/skill`. Repository discovery copies are generated from that
source and carry a package version and SHA-256 digest. Do not edit a generated
copy; change the canonical package Skill and run the update command.

## Install and invoke

Install the package in the repository being migrated, then select the host:

```sh
npx rxjs-migrate-skill install --harness codex --project-root .
npx rxjs-migrate-skill install --harness claude --project-root .
npx rxjs-migrate-skill install --harness cursor --project-root .
```

| Host        | Generated discovery path                      | Explicit invocation    |
| ----------- | --------------------------------------------- | ---------------------- |
| Codex       | `.agents/skills/rxjs-next-migration/SKILL.md` | `$rxjs-next-migration` |
| Claude Code | `.claude/skills/rxjs-next-migration/SKILL.md` | `/rxjs-next-migration` |
| Cursor      | `.agents/skills/rxjs-next-migration/SKILL.md` | `/rxjs-next-migration` |

Codex and Cursor intentionally share the open `.agents/skills` placement and
the same generated bytes. Each host can also select the Skill implicitly from
a request such as “Migrate this RxJS 7 project to RxJS Next.” Explicit
invocation is preferable when validating discovery.

## Permissions

Start with repository read access. Add write access only for paths the
developer has placed in the migration batch, and allow only the repository's
declared package-manager, build, type, lint, and test commands. Network access
or package installation requires developer approval. The workflow does not
need production credentials, project MCP write access, destructive authority,
or publication authority.

Codex should use its normal workspace sandbox and approval policy. Claude Code
can begin in plan mode before edits are approved. Cursor can begin in Ask or
Plan mode. These settings constrain the host; they do not change the portable
workflow.

## Check, update, and remove

```sh
npx rxjs-migrate-skill check --harness codex --project-root .
npx rxjs-migrate-skill update --harness codex --project-root .
npx rxjs-migrate-skill remove --harness codex --project-root .
```

Replace the harness name as needed. `check` reports `absent`, `current`,
`stale`, or `modified` as versioned JSON. `update` replaces an unmodified stale
copy atomically. Update and removal refuse local modifications unless the
developer explicitly supplies `--force`. Installation uses regular files and
does not require symlink privileges.

## Discovery smoke scenario

For a minimal host smoke, install into a clean repository and invoke the Skill
with this read-only request:

> Do not edit files or run commands. Name the workflow stage that requires a
> green RxJS 7 baseline and state who must approve lifecycle selection.

Every host must reach the same canonical workflow and answer that the baseline
is established during **Stage 3: Establish the green RxJS 7 baseline**, while
the developer must approve lifecycle selection. It must not choose platform
sharing or producer-per-subscription behavior automatically.

The package acceptance suite installs clean Codex, Claude, and Cursor fixtures,
checks their discovery and invocation metadata, compares their canonical bytes
and digest, enforces the least-privilege guidance, and exercises stale,
modified, update, force, and removal behavior. P0.M5 owns live model outcome
qualification against representative repositories.

## Rechecked host references

Discovery and invocation behavior was rechecked on 2026-07-31 against the
official [Codex Skills documentation](https://learn.chatgpt.com/docs/build-skills),
[Claude Code Skills documentation](https://code.claude.com/docs/en/slash-commands),
[Cursor Agent Skills documentation](https://cursor.com/docs/skills), and the
[Agent Skills specification](https://agentskills.io/specification). The local
adapter smoke used Codex `0.146.0-alpha.3.1`, Claude Code `2.1.119`, and Cursor
`3.13.10`.
