{"owner":"software-mansion","repo":"react-native-reanimated","hasSkills":true,"totalSkillsCount":158,"totalTokensCount":68641,"categories":["anthropic-skill","root-instruction","plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":[".agents/skills/reanimated-cherry-pick/SKILL.md",".agents/skills/worklets-cherry-pick/SKILL.md",".agents/skills/reanimated-release/SKILL.md","AGENTS.md","packages/eslint-plugin-reanimated/.oxlintrc.json","packages/react-native-reanimated/.oxlintrc.json","packages/react-native-reanimated/CHANGELOG.md","packages/eslint-plugin-reanimated/tsconfig.json","packages/react-native-reanimated/README.md","packages/eslint-plugin-reanimated/package.json",".agents/skills/worklets-release/SKILL.md","packages/react-native-reanimated/RELEASE.md","packages/react-native-reanimated/compatibility.json","packages/react-native-reanimated/knip.json","packages/react-native-reanimated/package.json","packages/react-native-reanimated/tsconfig.json","packages/react-native-reanimated/tsconfig.native.json","packages/react-native-reanimated/tsconfig.web.json","packages/react-native-reanimated/tsdoc.json","packages/react-native-worklets/.oxlintrc.json","packages/react-native-worklets/CHANGELOG.md","packages/react-native-worklets/README.md","packages/react-native-worklets/compatibility.json","packages/react-native-worklets/knip.json","packages/react-native-worklets/package.json","packages/react-native-worklets/tsconfig.json","packages/react-native-worklets/tsconfig.native.json","packages/react-native-worklets/tsconfig.web.json","packages/react-native-worklets/tsdoc.json","scripts/llvm-tools/README.md","packages/eslint-plugin-reanimated/__tests__/tsconfig.json","packages/react-native-reanimated/__tests__/tsconfig.json","packages/react-native-reanimated/__typetests__/tsconfig.json","packages/react-native-reanimated/__typetests__/tsconfig.web.json","packages/react-native-reanimated/android/README.md","packages/react-native-reanimated/changelog/README.md","packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md","packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md","packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md","packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md","packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md","packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md","packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md","packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md","packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md","packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md","packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md","packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md","packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md","packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md","packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md","packages/react-native-reanimated/changelog/animated-text.feature.md","packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md","packages/react-native-reanimated/changelog/bgimg-css.feature.md","packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md","packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md","packages/react-native-reanimated/changelog/css-none-empty-list.fix.md","packages/react-native-reanimated/changelog/css-platform-color.fix.md","packages/react-native-reanimated/changelog/deprecations-as-errors.other.md","packages/react-native-reanimated/changelog/entering-stale-frame.fix.md","packages/react-native-reanimated/changelog/exiting-state-completed.other.md","packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md","packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md","packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md","packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md","packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md","packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md","packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md","packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md","packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md","packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md","packages/react-native-reanimated/changelog/la-decision-pending-states.other.md","packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md","packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md","packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md","packages/react-native-reanimated/changelog/library-extension-dsl.other.md","packages/react-native-reanimated/changelog/mock-derived-value.fix.md","packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md","packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md","packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md","packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md","packages/react-native-reanimated/changelog/oxlint-migration.other.md","packages/react-native-reanimated/changelog/processors-own-keys.fix.md","packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md","packages/react-native-reanimated/changelog/props-map-dynamic.other.md","packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md","packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md","packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md","packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md","packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md","packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md","packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md","packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md","packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md","packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md","packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md","packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md","packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md","packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md","packages/react-native-reanimated/changelog/sensor-value-map.other.md","packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md","packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md","packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md","packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md","packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md","packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md","packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md","packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md","packages/react-native-reanimated/changelog/test-web-sensor-path.other.md","packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md","packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md","packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md","packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md","packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md","packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md","packages/react-native-reanimated/changelog/web-use-handler-context.other.md","packages/react-native-reanimated/changelog/web-worklets-version-check.other.md","packages/react-native-reanimated/metro-config/tsconfig.json","packages/react-native-worklets/.worklets/dummy.md","packages/react-native-worklets/__tests__/tsconfig.json","packages/react-native-worklets/__typetests__/tsconfig.json","packages/react-native-worklets/changelog/README.md","packages/react-native-worklets/changelog/addclonemappingfix.fix.md","packages/react-native-worklets/changelog/assign-captured-variable.fix.md","packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md","packages/react-native-worklets/changelog/createserializableapi.feature.md","packages/react-native-worklets/changelog/deprecations-as-errors.other.md","packages/react-native-worklets/changelog/dev-flag-in-js.fix.md","packages/react-native-worklets/changelog/docs-fix-broken-links.other.md","packages/react-native-worklets/changelog/gstring-ndk-version.fix.md","packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md","packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md","packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md","packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md","packages/react-native-worklets/changelog/library-extension-dsl.other.md","packages/react-native-worklets/changelog/oxc-name.other.md","packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md","packages/react-native-worklets/changelog/oxlint-migration.other.md","packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md","packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md","packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md","packages/react-native-worklets/changelog/react-native-0-88-stable.other.md","packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md","packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md","packages/react-native-worklets/changelog/runonrnsync.feature.md","packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md","packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md","packages/react-native-worklets/plugin-oxc/package.json","packages/react-native-worklets/plugin-oxc/tsconfig.json","packages/react-native-worklets/plugin/.oxlintrc.json","packages/react-native-worklets/plugin/package.json","packages/react-native-worklets/plugin/tsconfig.json","packages/react-native-reanimated/src/featureFlags/staticFlags.json","packages/react-native-worklets/bundleMode/patches/README.md","packages/react-native-worklets/bundleMode/polyfills/tsconfig.json","packages/react-native-worklets/src/featureFlags/staticFlags.json","packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json","packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json"],"skills":{".agents/skills/reanimated-cherry-pick/SKILL.md":"---\nname: reanimated-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Reanimated release branch (e.g. 4.3-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `<X.Y>-stable`\n  branch, or when preparing a Reanimated patch release.\n---\n\n# Cherry-pick PRs onto a Reanimated release branch\n\nBackports merged upstream PRs onto a release branch using one worktree per PR so the cherry-picks don't fight over the same\nworking tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional), and the tracking issue for\nthe release is updated with links.\n\nPreferably use PR stack from GitHub.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `4.3-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Reanimated X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Reanimated] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rnr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Reanimated): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rnr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rnr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Reanimated part\n\nIf the upstream PR also changes Worklets, leave the Worklets part out of the cherry-pick: restore `packages/react-native-worklets/` from the\nrelease branch. This also removes the Worklets changelog fragment. A Reanimated release branch does not release Worklets.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-worklets\n```\n\n### 3b. Keep the changelog fragment\n\nOn `4.7-stable` and newer, the upstream changelog fragment in `packages/react-native-reanimated/changelog/` comes with the\ncherry-pick. Keep it: `changelog:squash` reads it at release time. On older branches, see the changelog item of the\n\"Cross-cutting change checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nResolve conflicts.\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rnr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n",".agents/skills/worklets-cherry-pick/SKILL.md":"---\nname: worklets-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Worklets release branch (e.g. worklets-0.13-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a\n  `worklets-<X.Y>-stable` branch, or when preparing a Worklets patch release.\n---\n\n# Cherry-pick PRs onto a Worklets release branch\n\nBackports merged upstream PRs onto a release branch (e.g. `worklets-0.13-stable`) using one worktree per PR so the cherry-picks\ndon't fight over the same working tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional),\nand the tracking issue for the release is updated with links.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `worklets-0.13-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Worklets X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Worklets] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rwr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Worklets): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rwr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rwr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Worklets part\n\nIf the upstream PR also changes Reanimated, leave the Reanimated part out of the cherry-pick: restore `packages/react-native-reanimated/` from the\nrelease branch. This also removes the Reanimated changelog fragment. A Worklets release branch does not release Reanimated.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-reanimated\n```\n\n### 3b. Keep the changelog entry\n\nOn stable branches newer than `worklets-0.13-stable`, the upstream changelog fragment in\n`packages/react-native-worklets/changelog/` comes with the cherry-pick. Keep it. On `worklets-0.13-stable` and older, the\nbranch uses the old layout: delete the fragment and add a bullet under `## Unpublished` in\n`packages/react-native-worklets/CHANGELOG.md` with the PR and author links. See the changelog item of the \"Cross-cutting\nchange checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nCommon one on 0.9-stable: `scripts/patches/resolutions.patch` doesn't exist on the release branch (it was introduced by \"enable\nBundle Mode by default\" which never landed on 0.9). Drop the hunk:\n\n```bash\ngit rm scripts/patches/resolutions.patch\n```\n\nGeneral rule: files/hunks that reference infrastructure absent from the release branch should be dropped, not force-merged. When\nin doubt, check `git log --all -- <path>` to see if the file was ever on the release branch.\n\n**Not every conflict is a drop.** Stable branches often retain code that `main` has since refactored away (an inlined visitor,\nan extra pass field, an import that moved), so a backport can conflict _additively_ — the incoming hunk and the branch's own\ncode both belong. Resolve those by keeping **both** sides, not by dropping either. Seen backporting #10032 onto\n0.10/0.11-stable: the `globals.ts` import block and a `WorkletsPluginPass` field each conflicted additively (the branch still\nhad `autoworkletizationPlugin` + `@babel/*` type imports that `main` had moved out).\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rwr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n",".agents/skills/reanimated-release/SKILL.md":"---\nname: reanimated-release\ndescription: Prepare a Reanimated patch release from a <X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Reanimated X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Reanimated patch release\n\nCuts a release of `react-native-reanimated` from a stable branch (e.g. `4.3-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Reanimated): X.Y.Z` PR, and a dry-run of the `npm reanimated publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10797 (`release(Reanimated): 4.7.1`, with the changelog squash) and PR #10427 (`release(Reanimated): 4.5.5`, before the changelog fragments).\n\n## Inputs\n\n- **Version** — e.g. `4.7.2`. Infer the branch from it: `4.7-stable`.\n- **Release branch** — `<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Reanimated X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rnr-release-<version>` (sibling of the repo; `rnr` because it's a Reanimated release) |\n| Branch | `@<you>/reanimated/release-<version>` |\n| Commit + PR title | `release(Reanimated): <version>` |\n| PR body | `## Summary` / `Releasing Reanimated <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10797, #10427) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-reanimated/package.json` (version)\n- `packages/react-native-reanimated/src/platform-specific/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNReanimated pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-reanimated/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-reanimated/changelog/` on `4.7-stable` and newer.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/reanimated/release-<version>' \\\n  ../rnr-release-<version> origin/<release-branch>\ncd ../rnr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-reanimated set-version --version <version>\n```\n\nUpdates `package.json` and `src/platform-specific/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn `4.7-stable` and newer, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-reanimated changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\nBranches older than `4.7-stable` have no fragments. `4.5-stable` and older have no `CHANGELOG.md`, so skip this step there. On\n`4.6-stable`, move the `## Unpublished` entries in `packages/react-native-reanimated/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Reanimated and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Reanimated minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNReanimated (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Reanimated): <version>'\ngit push -u origin '@<you>/reanimated/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10797 / #10427 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/reanimated/release-<version>' \\\n  --title 'release(Reanimated): <version>' \\\n  --body '## Summary\n\nReleasing Reanimated <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm reanimated publish' --ref '@<you>/reanimated/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm reanimated publish' \\\n  --branch '@<you>/reanimated/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._REANIMATED_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/reanimated/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm reanimated publish' --ref <X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-reanimated@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Reanimated - X.Y.Z`, git tag `X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin <X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create <version> --draft --target \"$sha\" \\\n  --title 'Reanimated - <version>' \\\n  --generate-notes --notes-start-tag <previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag <previous-version>` reproduces the `## What's Changed` list plus the `<previous-version>...<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Reanimated - 4.5.5` is not the latest release).\n- Created with `--draft`; the `<version>` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-reanimated@<version>            # downloads the published .tgz\ngh release upload <version> react-native-reanimated-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rnr-release-<version>\ngit branch -D '@<you>/reanimated/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref <X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `<X.Y>-stable` branch.\n","AGENTS.md":"# Agent guide for the react-native-reanimated monorepo\n\nFacts that are true on `main` and that agents otherwise re-discover in every session. Verify against the code when in doubt. Fix this file in the same PR that makes it stale.\n\n## Tooling\n\n- Yarn 4 workspaces, single root lockfile, exact versions only (`scripts/disallow-non-exact.js`). Use `yarn`, `yarn dlx`, `yarn workspace <name> <script>`. Never `npm`, `npx` or `pnpm`.\n- Node from `.nvmrc`, Ruby from `.ruby-version`, CocoaPods through bundler: `bundle exec pod install`. CI rejects a `Podfile.lock` written by a different CocoaPods version.\n- Husky refuses commits and pushes on `main`. Work on a branch.\n- Formatters: oxfmt (JS/TS), remark (`yarn format:md`, CI fails on any diff), clang-format (C++/ObjC), cmake-format, spotless (Kotlin/Java). Prettier is not used.\n- Oxlint lints JS/TS with type-aware rules, so tsconfigs must not use `baseUrl`. Nested `.oxlintrc.json` files must `extends` the root one.\n- Use the existing scripts (root `scripts/`, per-package `scripts/`, `scripts` in each `package.json`). Do not invent ad-hoc build or test scripts.\n\n## Layout\n\n- `packages/react-native-reanimated` - animations library. Depends on worklets.\n- `packages/react-native-worklets` - worklet runtimes, serialization, run loops. Nested workspaces: `plugin/` (Babel plugin, workspace `babel-plugin-worklets`) and `plugin-oxc/` (Rust/napi port, workspace `worklets-oxc-plugin`).\n- `packages/eslint-plugin-reanimated` - internal lint rules used by both packages.\n- `apps/common-app` - all example screens (`src/apps/{reanimated,worklets,css,macos,runtime-tests}`) and the on-device test suites (`runtime-tests/`, a sibling of `src/`). Not runnable on its own.\n- `apps/fabric-example` - primary iOS/Android app and the runtime-tests host. No local `node_modules`, everything hoists to the root.\n- `apps/macos-example`, `apps/tvos-example` - own `node_modules` (`hoistingLimits: workspaces`). macOS cannot run Bundle Mode, so its `build` script runs `toggle-bundle-mode --off`.\n- `apps/web-example` (Expo web, Playwright), `apps/next-example` (Next.js, Cypress).\n- `docs/docs-reanimated`, `docs/docs-worklets` - Docusaurus. Worklets docs are nested into the Reanimated build on publish.\n\nBoth packages share one internal layout:\n\n- `src/` TS public API. Platform variants: `x.native.ts`, `x.ts` (web), `xCommon.ts`.\n- `Common/cpp/<pkg>/` portable C++ used by iOS and Android.\n- `apple/<pkg>/apple/` Objective-C++.\n- `android/src/main/cpp/<pkg>/android/` fbjni glue, `android/src/main/java/com/swmansion/<pkg>/` Kotlin.\n- `__tests__/` Jest, `__typetests__/` tstyche. `src/mock.ts` must mirror the exports of `src/index.ts` (`yarn validate-mock`).\n\nCommitted build artifacts, rebuild them and never hand-edit: `packages/react-native-worklets/plugin/index.js`, `plugin/index.d.ts`, `packages/eslint-plugin-reanimated/index.js`, `packages/eslint-plugin-reanimated/types/`. The pre-commit hook rebuilds and stages the worklets plugin.\n\n## How the pieces link\n\n- `node_modules/react-native-reanimated` and `node_modules/react-native-worklets` are symlinks to `packages/*`. Reanimated always compiles against in-repo worklets headers.\n- Package entry points: `react-native` and `source` point at `src/index` (apps, Metro, Jest). `main`, `module` and `types` point at `lib/` (npm consumers, `type:check`, madge, tree-shake checks). A stale `lib/` breaks checks but never the app.\n- Reanimated and worklets are pinned three times: exact `peerDependencies` version, `compatibility.json` (checked by `yarn validate-peers` and by Android `preBuild`), and a C++ `static_assert` of `WORKLETS_STABLE_API_VERSION` (`packages/react-native-worklets/Common/cpp/worklets/Compat/StableApi.h`) against `EXPECTED_WORKLETS_STABLE_API_VERSION` (`packages/react-native-reanimated/Common/cpp/reanimated/Compat/WorkletsApi.h`). Change one, change the other.\n- Reanimated native code may include exactly one worklets header, `<worklets/Compat/StableApi.h>`. `packages/react-native-reanimated/scripts/validate-worklets-includes.sh` enforces this.\n- `packages/react-native-reanimated/plugin` re-exports `react-native-worklets/plugin`.\n- Static feature flags: `src/featureFlags/staticFlags.json` merged with the app's `package.json` field `reanimated.staticFeatureFlags` or `worklets.staticFeatureFlags`. iOS injects them through `scripts/*_utils.rb` into the podspec `OTHER_CFLAGS`, Android through `build.gradle.kts` into CMake arguments. The flags become compiler defines, so re-run `pod install` after changing them.\n- The `@/` alias to `apps/common-app/src` is declared in `apps/common-app/tsconfig.native.json` and in `module-resolver` in `apps/fabric-example/babel.config.js`, `apps/macos-example/babel.config.js` and `apps/web-example/babel.config.js`. Keep them in sync.\n\n## Where to look: worklets\n\n- JS to C++ surface: not the TurboModule spec. `src/specs/NativeWorkletsModule.ts` has three methods. Everything else is `globalThis.__workletsModuleProxy`, installed in `JSIWorkletsModuleProxy::toOptimizedObject` and mirrored in `src/WorkletsModule/workletsModuleProxy.ts`, `NativeWorklets.native.ts` and `src/privateGlobals.d.ts`. Adding a native method needs no codegen change.\n- Platform seam: `RuntimeBindings` (`Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h`), a struct of `std::function`s built by each platform module. A complete example of core plus both backends is `requestAnimationFrame`: `Common/cpp/worklets/AnimationFrameQueue/`, `apple/worklets/apple/AnimationFrameQueue.mm`, Kotlin `runloop/AnimationFrameQueue.kt`.\n- Runtimes: `RuntimeKind` 1 = React Native, 2 = UI, 3 = Worker (`src/runtimeKind.ts`). The UI runtime runs on the platform main thread (`AsyncQueueUI` over `UIScheduler`). Each worker runtime owns a thread (`Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp`). `runOnUISync` and `runOnRuntimeSync` run inline on the caller.\n- Scheduling order: `scheduleOnUI` batches inside `queueMicrotask` (`src/threads.native.ts`). `runOnUISync`, `Synchronizable.getBlocking`/`setBlocking`, native `getViewProp` and worker-runtime writes bypass that batch. Most ordering bugs come from this.\n- Serialization: `Common/cpp/worklets/SharedItems/` and `src/memory/`. `Serializable::undefined()` is a shared singleton.\n- Runtime setup: `Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp` creates the runtimes, decorators in `Common/cpp/worklets/WorkletRuntime/` install the globals.\n- Bundle Mode: Babel plugin option `bundleMode`, Metro helper `react-native-worklets/bundleMode`, Metro patches in `packages/react-native-worklets/bundleMode/patches/` (not published). `fabric-example` runs Bundle Mode by default. `yarn toggle-bundle-mode` (repo root) patches tracked files in `apps/` and `package.json`, so it pollutes the diff. Generated chunks live in `packages/react-native-worklets/.worklets/`. Keep `.worklets/dummy.md`.\n\n## Where to look: reanimated\n\n- JS to C++ surface: same pattern as worklets. `src/specs/NativeReanimatedModule.ts` has one method, `installTurboModule`. The real API is `globalThis.__reanimatedModuleProxy`, installed in `ReanimatedModuleProxy::toOptimizedObject` (`Common/cpp/reanimated/NativeModules/`) and typed in `src/ReanimatedModule/reanimatedModuleProxy.ts`. `src/ReanimatedModule/NativeReanimated.ts` wraps it on native, `js-reanimated/JSReanimated.ts` is the web implementation.\n- Platform seam: `Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h`, filled by `apple/reanimated/apple/ReanimatedModule.mm` and `android/src/main/cpp/reanimated/android/NativeProxy.cpp`. Frame ticks and event dispatch come from `REANodesManager.mm` (CADisplayLink) and `NodesManager.kt` (ReactChoreographer).\n- UI runtime globals used by JS worklets (`_updateProps`, `_measure`, `_dispatchCommand`, `_obtainProp`, `_notifyAboutProgress`, `_setGestureState` and others) are installed in `Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp`. The React Native runtime side is `RNRuntimeDecorator.cpp`.\n- Style update path: `useAnimatedStyle` and `useAnimatedProps` (`src/hook/`) write through `src/updateProps/updateProps.native.ts`, which calls `_updateProps` on the UI runtime. Native stores the values in `Fabric/updates/AnimatedPropsRegistry` and `UpdatesRegistryManager`, and `Fabric/ReanimatedCommitHook` applies them to the shadow tree with `cloneShadowTreeWithNewProps` (`Fabric/ShadowTreeCloner`) on every commit. `Fabric/ReanimatedMountHook` runs after mount.\n- Animated components: `src/createAnimatedComponent/` (`AnimatedComponent.native.tsx`, `JSPropsUpdater`, `InlinePropManager`, `NativeEventsManager`, `PropsFilter`). Shared values live in `src/mutables.native.ts` and `src/mutablesCommon.ts`.\n- Events: `src/WorkletEventHandler.native.ts` registers through `registerEventHandler`, native side in `Common/cpp/reanimated/Events/UIEventHandlerRegistry`.\n- Layout animations: JS in `src/layoutReanimation/` and `src/UpdateLayoutAnimations.native.ts` (`configureLayoutAnimationBatch`). Native in `Common/cpp/reanimated/LayoutAnimations/`: `LayoutAnimationsManager` holds configs, `LayoutAnimationsProxy` (default) and `LayoutAnimationsProxy_Legacy` (`USE_LEGACY_LAYOUT_ANIMATIONS_PROXY`) are `MountingOverrideDelegate`s chosen at install time through `LayoutAnimationsProxyRegistry`. Shared element transitions are in `SharedTransitions.cpp` and the `REASharedTransitionBoundary` Fabric component in `Common/NativeView/`.\n- CSS animations and transitions: JS in `src/css/` (`platform.native.ts` picks `css/native`, `platform.ts` picks `css/web`). Native in `Common/cpp/reanimated/CSS/` with `registries/` (keyframes, animations, transitions), `core/`, `interpolation/`, `easing/`, driven by `Fabric/updates/OperationsLoop`. Platform pieces in `apple/reanimated/apple/CSS` and `android/src/main/cpp/reanimated/android/CSS`.\n- Other native features: `AnimatedSensor/`, `PseudoStyles/`, keyboard in `apple/reanimated/apple/keyboardObserver` and `android/src/main/java/com/swmansion/reanimated/keyboard`.\n\n## Commands\n\n```sh\nyarn                                   # install (needed in every new worktree)\nyarn build-packages                    # builds worklets then reanimated (bob), rebuilds the Babel plugin and the Oxc plugin, fills lib/\nyarn workspace react-native-worklets build\nyarn workspace <pkg> type:check        # native + web + common-app + type tests\nyarn workspace <pkg> lint              # lint:js + lint:android + lint:apple + lint:clang-tidy (+ lint:plugin)\nyarn workspace <pkg> test              # Jest (root binary); `yarn workspace <pkg> jest <pattern>` for one file\nyarn workspace <pkg> format\nyarn lint && yarn format && yarn format:md   # repo-wide\nyarn test:scripts                      # tests for root scripts/\nyarn build-apps                        # regenerates apps/*/ios/Podfile.lock; macos-example may fail, that is known\n```\n\niOS (`apps/fabric-example/ios`): workspace `FabricExample.xcworkspace`, schemes `Debug FabricExample` and `Release FabricExample`, configurations `DebugRuntimeTests` and `ReleaseRuntimeTests`. Pod-only schemes `RNWorklets` and `RNReanimated` compile native code without the app. `RCT_USE_PREBUILT_RNCORE=0 RCT_USE_RN_DEP=0` builds React Native from source (needed for sanitizers). Re-run `pod install` after switching branches when native files were added or removed, because the podspecs glob sources.\n\nAndroid: `yarn workspace fabric-example android` (`--active-arch-only`). Worklets/Reanimated cannot be built without an app project and the React Native Gradle Plugin. Gradle does not track worklets package files for `createBundleReleaseJsAndAssets`, so pass `--rerun` after editing JS.\n\nFast C++ syntax check without a native build. Run from `packages/react-native-worklets` after `pod install` in fabric-example:\n\n```sh\nRN=../../node_modules/react-native\nHERMES=../../apps/fabric-example/ios/Pods/hermes-engine/destroot/include\nclang++ -std=c++20 -fsyntax-only -I Common/cpp -I $RN/ReactCommon/jsi -I $RN/ReactCommon \\\n  -I $RN/ReactCommon/callinvoker -I $RN/ReactCommon/react/nativemodule/core -I $HERMES <file.cpp>\n```\n\n`compile_commands.json` (for clangd and `lint:clang-tidy`) exists only after a real build. clangd errors in a fresh checkout are include-path noise.\n\n## Tests\n\n- Jest: per-package configs. Reanimated has the projects `native`, `ios`, `android` and `web`. `packages/react-native-reanimated/jest/resolver.js` forces web variants for the modules listed in `WEB_ONLY_IN_JEST` (`useAnimatedStyle`, `mutables` and others), so a green `native` project does not prove that a `.native.ts` file ran.\n- Type tests: `__typetests__/*.tst.ts` through `scripts/test-ts.sh` (tstyche).\n- Runtime tests (ReJest, on device): suites in `apps/common-app/runtime-tests/{reanimated,worklets,self-tests}`, harness in `apps/common-app/runtime-tests/ReJest`, entry points `apps/fabric-example/index.runtimeTests.*.js`. Driver:\n\n```sh\nyarn workspace fabric-example runtime-tests --library worklets --platform ios --udid <udid>\n```\n\n- `--library` takes `reanimated`, `worklets` or `self-tests`. `--platform` takes `ios` or `android`, with the device given by `--udid`, `--serial` or `--avd`. `--configuration` takes `DebugRuntimeTests` or `ReleaseRuntimeTests`. Other flags: `--only suiteA,suiteB`, `--skip-build`, `--metro-port N`, `--port N`.\n- The reporting port defaults to the Metro port plus one (8082 for Release, which embeds the bundle and runs no Metro). `--skip-build` installs whatever is already built for that configuration. `--help` lists everything. Approximate durations: self-tests under a minute, worklets about 1 minute, reanimated about 2 minutes.\n- ReJest semantics: `mockAnimationTimer()` advances 16 ms per real frame, `wait()` is real time, `waitForNotification` is the idiom for \"animation finished\", `toThrow` matches substrings, `toMatchNativeSnapshots` compares against pixel-grid-rounded native metrics with a 0.5 dp tolerance. Suites are `__DEV__`-gated inconsistently, so a `__DEV__`-only assertion can fail only in the Release nightly. Android emulators need GPU acceleration (`hw.gpu.mode=host`) or mocked-clock tests time out.\n- CI: `*-static-checks.yml`, `runtime-tests-{ios,android,nightly,sanitizers-nightly}.yml`, `{android,apple}-validation.yml`, `changelog-check.yml`, `yarn-validation.yml`, example build checks, docs build and publish, `npm-*-publish*.yml`.\n\n## Cross-cutting change checklist\n\n- New native binding: `Common/cpp`, then `android/src/main/cpp`, Kotlin (if exposed), `apple/`, then `src/` TS (`workletsModuleProxy.ts`, `privateGlobals.d.ts`, `mock.ts`).\n- Worklets public API change: grep `packages/react-native-reanimated/src`, the largest consumer.\n- Babel plugin change: run `plugin/__tests__`, rebuild `plugin/index.js`, rebuild both packages.\n- Any package change needs a new changelog fragment `packages/<pkg>/changelog/<slug>.<breaking|feature|fix|other>.md` that holds one sentence. Write the file directly, or run `yarn workspace <react-native-reanimated|react-native-worklets> changelog:add --type <type> --message '<One sentence>'`. Use single quotes, because the shell runs backticks inside double quotes. Do not write the PR link or the author (the optional lines `pr: <number>` and `by: @user1, @user2` exist for the cases that the release script cannot resolve), and do not edit `CHANGELOG.md`: `yarn changelog:squash` fills it at release. On Reanimated stable branches older than `4.7-stable`, `changelog-check` uses the old layout and is always red. Ignore it there. Worklets stable branches up to and including `worklets-0.13-stable` also use the old layout. There, add a bullet under `## Unpublished` in `packages/react-native-worklets/CHANGELOG.md` with the PR and author links instead of a fragment, and leave out changes to other packages, because `changelog-check` requires a `CHANGELOG.md` entry for each changed package. On newer stable branches, a red check means that the cherry-pick lost its fragment.\n- Docs-visible API change: update `docs/docs-reanimated` and/or `docs/docs-worklets`.\n- Do not commit changes to the playground files `apps/common-app/src/apps/reanimated/examples/EmptyExample.tsx` and `apps/common-app/src/apps/css/examples/animations/screens/testExamples/Playground.tsx`.\n- PR template: `.github/PULL_REQUEST_TEMPLATE.md` (Summary, Test plan).\n\n## Fresh checkout or worktree\n\n1. `yarn` - a new worktree has no `node_modules`.\n1. `yarn build-packages` - fills `lib/` and rebuilds both plugins. `type:check` and `circular-dependency-check` fail without it.\n1. After merging across a version bump: `rm packages/react-native-worklets/.worklets/*.js` (keep `dummy.md`) and `yarn jest --clearCache`. Stale chunks trip the plugin version check.\n1. `cd apps/fabric-example/ios && bundle exec pod install` when native files changed.\n1. Metro `--reset-cache` after toggling Bundle Mode.\n\n## Release facts\n\n- The release procedure lives in `packages/react-native-reanimated/RELEASE.md`. Agent skills for releases and cherry-picks live in `.agents/skills/` (`.claude/skills` links to it): `reanimated-release`, `worklets-release`, `reanimated-cherry-pick` and `worklets-cherry-pick`. Worklets follows the same flow from `worklets-<X.Y>-stable` branches, and its version file is `src/debug/jsVersion.ts`.\n- When the worklets stable API changes, bump `WORKLETS_STABLE_API_VERSION` in `StableApi.h` and `EXPECTED_WORKLETS_STABLE_API_VERSION` in `WorkletsApi.h` together, also on backports.\n","packages/eslint-plugin-reanimated/.oxlintrc.json":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"types/**\"],\n  \"rules\": {\n    \"no-bitwise\": \"error\"\n  }\n}\n","packages/react-native-reanimated/.oxlintrc.json":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"jsPlugins\": [\"eslint-plugin-reanimated\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"**/lib/**\", \"**/android/**\", \"**/apple/**\"],\n  \"rules\": {\n    \"reanimated/use-reanimated-error\": \"error\",\n    \"reanimated/use-logger\": \"error\",\n    \"reanimated/no-logger-message-prefix\": \"error\",\n    \"reanimated/use-global-this\": \"error\",\n    \"no-unused-expressions\": \"error\"\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"**/*.ts\", \"**/*.tsx\"],\n      \"rules\": {\n        \"no-empty-function\": \"error\",\n        \"typescript/no-explicit-any\": \"error\",\n        \"n/no-unpublished-import\": [\n          \"error\",\n          {\n            \"ignoreTypeImport\": true,\n            \"ignorePrivate\": true\n          }\n        ]\n      }\n    },\n    {\n      \"files\": [\"**/*.test.ts\", \"**/*.test.tsx\"],\n      \"rules\": {\n        \"typescript/unbound-method\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"src/**/*.ts\", \"src/**/*.tsx\"],\n      \"rules\": {\n        \"eslint-core/strict\": [\"error\", \"global\"]\n      }\n    }\n  ]\n}\n","packages/react-native-reanimated/CHANGELOG.md":"# Changelog\n\n## 4.7.0 — 2026-09-18\n\n### 🛠 Breaking changes\n\n- `AnimatedRefOnUI` is now a `ShareableHost<ShadowNodeWrapper | null>` read with `.value` instead of a callable, and `AnimatedRefOnJS` was renamed to `AnimatedRefOnRN`. `measure` on an unmounted ref now returns `null` and warns instead of calling into `_measure`. ([#10413](https://github.com/software-mansion/react-native-reanimated/pull/10413) by [@tjzel](https://github.com/tjzel))\n- Remove the `USE_SYNCHRONIZABLE_FOR_MUTABLES` feature flag. Mutables always use Synchronizable state now. ([#10298](https://github.com/software-mansion/react-native-reanimated/pull/10298) by [@tjzel](https://github.com/tjzel))\n- Make the light-tree layout animations proxy the default. Enable the new `USE_LEGACY_LAYOUT_ANIMATIONS_PROXY` feature flag to roll back to the previous implementation. The legacy proxy does not support Shared Element Transitions, so `ENABLE_SHARED_ELEMENT_TRANSITIONS` must be off when you enable it. ([#10423](https://github.com/software-mansion/react-native-reanimated/pull/10423) by [@pawicao](https://github.com/pawicao))\n\n### 🎉 New features\n\n- Run `shadowColor` CSS transitions on the Android platform animation path on Android 9 and newer. ([#10547](https://github.com/software-mansion/react-native-reanimated/pull/10547) by [@MatiPl01](https://github.com/MatiPl01))\n- Run CSS transitions for `backgroundColor`, `borderColor`, and numeric `borderRadius` on the Android platform animation path. ([#10310](https://github.com/software-mansion/react-native-reanimated/pull/10310) by [@MatiPl01](https://github.com/MatiPl01))\n- Add `backgroundImage` support to animated styles. Linear and radial gradients are accepted as objects or CSS strings and processed on the UI thread. ([#10486](https://github.com/software-mansion/react-native-reanimated/pull/10486) by [@tshmieldev](https://github.com/tshmieldev))\n- Add iOS Swift Package Manager support via `Package.swift` and SPM integration metadata in `react-native.config.js`, with a dependency on `RNWorklets`. ([#10472](https://github.com/software-mansion/react-native-reanimated/pull/10472) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Add an optional `onLog` callback as a second argument to `configureReanimatedLogger`, invoked for every warning and error that passes the `level` and `strict` filters, in addition to the default console output. On native, logs raised on the UI runtime are delivered asynchronously on the React Native Runtime. ([#10482](https://github.com/software-mansion/react-native-reanimated/pull/10482) by [@douglowder](https://github.com/douglowder))\n\n### 🐛 Bug fixes\n\n- Fix a property removed from `transitionProperty` while it transitions to or from `undefined` (its style key was just removed or added) finishing the transition instead of snapping to the committed value. ([#10613](https://github.com/software-mansion/react-native-reanimated/pull/10613) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix a property removed from `transitionProperty` mid-transition reverting to the interpolator default (for example `borderRadius: 0`) instead of the committed style on Android. ([#10614](https://github.com/software-mansion/react-native-reanimated/pull/10614) by [@MatiPl01](https://github.com/MatiPl01))\n- Reject a `backgroundImage` gradient given as an object when a transition hint is not placed between two color stops, and reject gradients with fewer than two color stops in both the object and the string form; React Native crashes on iOS or Android when such values reach the renderer. ([#10589](https://github.com/software-mansion/react-native-reanimated/pull/10589) by [@matipl01](https://github.com/matipl01))\n- Fix a crash in the light tree based Layout Animations proxy when a view is flattened while one of its children is removed in the same commit. ([#10628](https://github.com/software-mansion/react-native-reanimated/pull/10628) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Remove `zIndex` from the synchronous props. No platform applies `zIndex` to a mounted view, so with `IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS` on, an animated style with only `zIndex` and `elevation` never reached the shadow tree commit and the views did not reorder until a later React render. ([#10602](https://github.com/software-mansion/react-native-reanimated/pull/10602) by [@pawicao](https://github.com/pawicao))\n- Stop passing `forwardedRef` and `nativeID` to the wrapped component on web, which React Strict DOM reported as invalid props. ([#10605](https://github.com/software-mansion/react-native-reanimated/pull/10605) by [@tjzel](https://github.com/tjzel))\n- Preserve Android color and other prop updates when hiding and restoring shared transition views. ([#10601](https://github.com/software-mansion/react-native-reanimated/pull/10601) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Prevent Shared Transition Boundaries from intercepting touches intended for sibling views while keeping their children interactive. ([#10600](https://github.com/software-mansion/react-native-reanimated/pull/10600) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Skip exiting animations in the light tree based Layout Animations proxy when a surface is stopped, so the empty-root transaction removes the views at once instead of starting animations on a dead surface and leaving their component views registered on iOS. ([#10586](https://github.com/software-mansion/react-native-reanimated/pull/10586) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Resolve a percent translate of a shared view or of its ancestor with the size of the view that owns it in shared element transitions, so the transition copy no longer starts at a wrong position and `translateX: '50%'` no longer animates as 50 points. ([#10617](https://github.com/software-mansion/react-native-reanimated/pull/10617) by [@pawicao](https://github.com/pawicao))\n- Start a shared element transition from the frame of a running layout animation on the source view. ([#10556](https://github.com/software-mansion/react-native-reanimated/pull/10556) by [@pawicao](https://github.com/pawicao))\n- Track synchronous prop updates in the layout animations bookkeeping behind the `TRACK_SYNCHRONOUS_PROPS_IN_LAYOUT_ANIMATIONS` dynamic feature flag, so shared element transitions and layout animations start from the current props of a view that moved through the synchronous path; warn in development when a transition or layout animation starts on such a view with the flag off. A queued or running layout animation always receives the synchronous props, so a prop changed during the animation no longer blinks back on the next frame. The synchronous-update feature flags now work together with `ENABLE_SHARED_ELEMENT_TRANSITIONS`. ([#10522](https://github.com/software-mansion/react-native-reanimated/pull/10522) by [@pawicao](https://github.com/pawicao))\n- Carry a view's current registry values in the Reanimated commits that change its layout props, so iOS no longer writes a stale transform back to a view that moved through the synchronous path. ([#10416](https://github.com/software-mansion/react-native-reanimated/pull/10416) by [@pawicao](https://github.com/pawicao))\n- Warn only once per caller when dependencies are passed to native hooks. ([#10562](https://github.com/software-mansion/react-native-reanimated/pull/10562) by [@tshmieldev](https://github.com/tshmieldev))\n- Release the shadow tree of a stopped surface; the last mounted root of every surface was kept forever, so apps that start a surface per screen leaked the whole tree of every closed screen. ([#10579](https://github.com/software-mansion/react-native-reanimated/pull/10579) by [@MatiPl01](https://github.com/MatiPl01))\n- Keep `borderWidth` CSS transitions on the animation loop on iOS, so the children move with the border and no stray black border is drawn. ([#10569](https://github.com/software-mansion/react-native-reanimated/pull/10569) by [@MatiPl01](https://github.com/MatiPl01))\n- Resume a `shadowOffset` CSS transition from its in-flight value when it moves from Core Animation to the C++ loop, instead of restarting from the previously committed offset. ([#10564](https://github.com/software-mansion/react-native-reanimated/pull/10564) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix CSS platform transitions ignoring slow animations: on iOS they snapped to the end state under the Simulator's Slow Animations, and on Android they played at full speed under the dev-menu toggle. ([#10548](https://github.com/software-mansion/react-native-reanimated/pull/10548) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix the Release Android build failing on an unused variable in `SharedTransitions.cpp`, and the `backgroundImage` style types failing to compile with React Native 0.85, 0.86 and nightly. ([#10558](https://github.com/software-mansion/react-native-reanimated/pull/10558) by [@tjzel](https://github.com/tjzel))\n- Keep a delayed CSS transition at its start value when it is interrupted or reversed before its delay ends; the platform path used to evaluate the easing at progress 0, which is the end value for `step-start`. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Restore the underlying native style when a running CSS animation is removed or its `animationName` becomes `none`. ([#10528](https://github.com/software-mansion/react-native-reanimated/pull/10528) by [@MatiPl01](https://github.com/MatiPl01))\n- Fixed a crash after animations settled when `backgroundImage` was animated with `useAnimatedStyle`. The settled props sync now converts the native gradient format back before passing it to React. ([#10542](https://github.com/software-mansion/react-native-reanimated/pull/10542) by [@tshmieldev](https://github.com/tshmieldev))\n- Include the React Native version macros through `<React/Utils.h>` when it is available, so `cxxreact/ReactNativeVersion.h` deprecated on React Native `main` no longer breaks the build. ([#10536](https://github.com/software-mansion/react-native-reanimated/pull/10536) by [@tshmieldev](https://github.com/tshmieldev))\n- Fix a short `animationDelay` list on web applying no delay to the animations past its end instead of repeating, the way CSS does and the native path already did. ([#10442](https://github.com/software-mansion/react-native-reanimated/pull/10442) by [@dennytosp](https://github.com/dennytosp))\n- Fix padded string style values throwing, retaining their padding or parsing incorrectly, including SVG gradient stop offsets such as `'50% '`. ([#10422](https://github.com/software-mansion/react-native-reanimated/pull/10422) by [@matipl01](https://github.com/matipl01))\n- Fix `filter` strings using the CSS `hue-rotate()` and `drop-shadow()` spellings being discarded together with every other filter in the same declaration. ([#10383](https://github.com/software-mansion/react-native-reanimated/pull/10383) by [@dennytosp](https://github.com/dennytosp))\n- Fix single-argument `translate()` and `skew()` in transform strings repeating the argument on the Y axis instead of leaving it at zero, so `translate(100px)` no longer also moves the element down. ([#10385](https://github.com/software-mansion/react-native-reanimated/pull/10385) by [@dennytosp](https://github.com/dennytosp))\n- Fix the Metro configuration type import to use the public package export. ([#10454](https://github.com/software-mansion/react-native-reanimated/pull/10454) by [@sneakykiwi](https://github.com/sneakykiwi))\n- Skip the Android mounted-tag correction in Layout Animations when React Native's `enableMountingCoordinatorPullModelAndroid` feature flag is on, since the pull model already guarantees that updates can't outrun a view's first mount. ([#10481](https://github.com/software-mansion/react-native-reanimated/pull/10481) by [@piaskowyk](https://github.com/piaskowyk))\n- Fix `Keyframe` easings on web being dropped or applied to the wrong keyframe when the definitions use the `from`/`to` aliases or fractional offsets. ([#10386](https://github.com/software-mansion/react-native-reanimated/pull/10386) by [@dennytosp](https://github.com/dennytosp))\n- Fix `getViewProp` and the runtime-tests prop snapshotting crashing (segfault on style props, unhandled error on layout props) when the view is no longer mounted. ([#10443](https://github.com/software-mansion/react-native-reanimated/pull/10443) by [@tjzel](https://github.com/tjzel))\n- Ship the Jest resolver (`react-native-reanimated/jest/resolver`) in the npm package, so consumer projects can run Jest against Reanimated: the modules that require a real native module are resolved to their web implementations. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Fix mounting an animated component with attached event handlers (e.g. `useAnimatedScrollHandler`) under Jest crashing with `[Reanimated] registerEventHandler is not available in JSReanimated.` - `WorkletEventHandler` now resolves to its web variant in Jest. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Reset `IN_STYLE_UPDATER` even when an initial style updater throws, so a single updater error no longer leaves all animations returning raw values until reload. ([#10445](https://github.com/software-mansion/react-native-reanimated/pull/10445) by [@alexey-khatskelevich](https://github.com/alexey-khatskelevich))\n- Fix `./gradlew app:build` failing on `:lintAnalyzeDebug` with a K2 UAST crash on `.gradle.kts` build scripts - all lint tasks are now skipped, not only `lintVital*`. ([#10448](https://github.com/software-mansion/react-native-reanimated/pull/10448) by [@tshmieldev](https://github.com/tshmieldev))\n- Treat `animationName: []` as no animation, so the view is detached instead of running its previous animation forever. ([#10432](https://github.com/software-mansion/react-native-reanimated/pull/10432) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix `SequencedTransition` on web scaling the wrong axis in its midpoint keyframe, so the axis that has already finished no longer collapses while the other one waits. ([#10384](https://github.com/software-mansion/react-native-reanimated/pull/10384) by [@dennytosp](https://github.com/dennytosp))\n- Fix native gestures (e.g. scrolling) not working inside `SharedTransitionBoundary` on Android by growing the boundary's zero-sized frame to cover its children. ([#10430](https://github.com/software-mansion/react-native-reanimated/pull/10430) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix `normalizeColor` resolving `Object.prototype` members such as `'constructor'` and `'toString'` as color names and returning a function instead of `null`. ([#10387](https://github.com/software-mansion/react-native-reanimated/pull/10387) by [@dennytosp](https://github.com/dennytosp))\n- Fix `transform` and `transformOrigin` strings padded with whitespace throwing instead of parsing. ([#10388](https://github.com/software-mansion/react-native-reanimated/pull/10388) by [@dennytosp](https://github.com/dennytosp))\n- Fix `linear()` easing not clamping an out-of-order input progress value on its first or last control point, which left the control points non-monotonic and the resulting curve wrong. ([#10380](https://github.com/software-mansion/react-native-reanimated/pull/10380) by [@dennytosp](https://github.com/dennytosp))\n- Fix fractional millisecond CSS time values, which were truncated (`16.67ms` became `16`) or read as `NaN` when written without a leading zero (`.5ms`). ([#10381](https://github.com/software-mansion/react-native-reanimated/pull/10381) by [@dennytosp](https://github.com/dennytosp))\n- Fix animated styles on sticky headers throwing an immutable-object mutation error in development. ([#10389](https://github.com/software-mansion/react-native-reanimated/pull/10389) by [@ngocdevv](https://github.com/ngocdevv))\n- Fix shared element transitions never running on Android for npm installs by publishing `react-native.config.js`, which registers the Shared Transition Boundary component descriptor for autolinking. ([#10375](https://github.com/software-mansion/react-native-reanimated/pull/10375) by [@dennytosp](https://github.com/dennytosp))\n- Keep exiting views at their position in the host tree, so they no longer draw above later siblings. ([#10392](https://github.com/software-mansion/react-native-reanimated/pull/10392) by [@pawicao](https://github.com/pawicao))\n- Apply Layout Animation config batches consistently at the mounting pull boundary. ([#10373](https://github.com/software-mansion/react-native-reanimated/pull/10373) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Retarget running and pending Layout Animations when their config changes and finish them at the mounted frame, so reordered list items no longer disappear or stick to a stale position. Preserve props-only updates, including during reordering, without restarting transitions. ([#10537](https://github.com/software-mansion/react-native-reanimated/pull/10537) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep running Layout Animations attached to views that move between parents by converting their frames through the light tree. ([#10538](https://github.com/software-mansion/react-native-reanimated/pull/10538) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Experimental Layout Animations cleanup ordering on Android. ([#10372](https://github.com/software-mansion/react-native-reanimated/pull/10372) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix interactive Shared Transitions cancellation and progress lifecycle ordering. ([#10371](https://github.com/software-mansion/react-native-reanimated/pull/10371) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Shared Transitions cleanup, restoration, and positioning in native-stack screens and modals. ([#10370](https://github.com/software-mansion/react-native-reanimated/pull/10370) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations replacement and completion ordering by centralizing native lifecycle operations. ([#10369](https://github.com/software-mansion/react-native-reanimated/pull/10369) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations state leaking between Fabric surfaces by using one proxy per surface. ([#10368](https://github.com/software-mansion/react-native-reanimated/pull/10368) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep views hidden for the whole shared element transition, so a React update in the same commit no longer shows them again mid-transition. ([#10425](https://github.com/software-mansion/react-native-reanimated/pull/10425) by [@pawicao](https://github.com/pawicao))\n\n### 💡 Others\n\n- Patch `react-native-svg` in the example apps so its podspec targets iOS and tvOS 15.1, which Xcode 27 requires. ([#10607](https://github.com/software-mansion/react-native-reanimated/pull/10607) by [@tjzel](https://github.com/tjzel))\n- Added support for React Native 0.88. ([#10582](https://github.com/software-mansion/react-native-reanimated/pull/10582) by [@pawicao](https://github.com/pawicao))\n- Merge the accumulated Android raw props of a view in the layout animations light tree only when an animation, a shared element transition or a synchronous update reads that view, instead of on every commit. ([#10570](https://github.com/software-mansion/react-native-reanimated/pull/10570) by [@pawicao](https://github.com/pawicao))\n- Reduce Android layout animation overhead by skipping the raw props merge and props clone in the light tree when an Update reuses the same props pointer, and by moving the merged raw props instead of copying them. ([#10566](https://github.com/software-mansion/react-native-reanimated/pull/10566) by [@pawicao](https://github.com/pawicao))\n- Deduplicate the native CSS transition state machine across Android and iOS. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Move the `IOS_CSS_CORE_ANIMATION` and `ANDROID_CSS_PLATFORM_TRANSITIONS` checks out of the shared C++ code: each platform now supplies its native CSS transition backend under its own flag. No behavior change. ([#10546](https://github.com/software-mansion/react-native-reanimated/pull/10546) by [@MatiPl01](https://github.com/MatiPl01))\n- Added Jest and runtime tests for the settled props unprocessors (colors, `boxShadow`, `backgroundImage`). `unprocessProps` is now exported. ([#10545](https://github.com/software-mansion/react-native-reanimated/pull/10545) by [@tshmieldev](https://github.com/tshmieldev))\n- Remove three duplicated implementations: `CSSBoxShadow` and `CSSDropShadow` share their field validation, `PropertyInterpolator` provides the common `getStyleValue`, and the nodes manager and keyboard observer create their display links through one `REAMakeDisplayLink` helper. ([#10357](https://github.com/software-mansion/react-native-reanimated/pull/10357) by [@MatiPl01](https://github.com/MatiPl01))\n- Throw a descriptive error on iOS when the native module cannot be installed because React Native has no active surface during a reload race, instead of silently installing a dummy module proxy. The `WorkletsModule` registry check that guarded the same path is removed. ([#10508](https://github.com/software-mansion/react-native-reanimated/pull/10508) by [@tjzel](https://github.com/tjzel))\n- Validate the iOS Swift Package Manager integration in CI: the nightly compatibility check now builds the app via SPM on React Native >= 0.87. ([#10511](https://github.com/software-mansion/react-native-reanimated/pull/10511) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Support worklets without closure metadata in handler dependency comparisons and Jest helpers. ([#10517](https://github.com/software-mansion/react-native-reanimated/pull/10517) by [@tshmieldev](https://github.com/tshmieldev))\n- Update hooks for array-based worklet closures and use explicit control points for web Bezier easings instead of inspecting closures. ([#10506](https://github.com/software-mansion/react-native-reanimated/pull/10506) by [@tshmieldev](https://github.com/tshmieldev))\n- Initialize the Layout Animations manager lazily to avoid serializing its worklets during startup. ([#10466](https://github.com/software-mansion/react-native-reanimated/pull/10466) by [@tshmieldev](https://github.com/tshmieldev))\n- Add `fontVariationSettings` to the style properties config, so the package type-checks against React Native 0.88 ([#10239](https://github.com/software-mansion/react-native-reanimated/pull/10239) by [@tjzel](https://github.com/tjzel))\n- Add `backgroundPosition`, `backgroundRepeat` and `backgroundSize` to the style properties config, so the package type-checks against React Native 0.88. ([#10354](https://github.com/software-mansion/react-native-reanimated/pull/10354) by [@tjzel](https://github.com/tjzel))\n- Migrate Mutable's dirty flag to Fixed Synchronizable for better performance. ([#10272](https://github.com/software-mansion/react-native-reanimated/pull/10272) by [@tjzel](https://github.com/tjzel))\n","packages/eslint-plugin-reanimated/tsconfig.json":"{\n  \"compilerOptions\": {\n    \"preserveSymlinks\": true,\n    \"jsx\": \"react-native\",\n    \"skipLibCheck\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"moduleResolution\": \"bundler\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"outDir\": \"public\",\n    \"rootDir\": \"src\",\n    \"declaration\": true,\n    \"declarationDir\": \"types\"\n  },\n  \"include\": [\"src\"]\n}\n","packages/react-native-reanimated/README.md":"<img src=\"https://user-images.githubusercontent.com/16062886/117443145-ff868480-af37-11eb-8680-648bccf0d0ce.png\" alt=\"React Native Reanimated by Software Mansion\" width=\"100%\">\n\n### Create smooth animations with an excellent developer experience.\n\n> Reanimated 4 is here! Check out our [documentation page](https://docs.swmansion.com/react-native-reanimated/) for more information\n\n### Nightly CI state\n\n[![NPM Reanimated publish nightly](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml)\n[![Reanimated compatibility check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml)\n[![Use frameworks Reanimated build check \\[Nightly\\]](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml)\n[![React Native nightly Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml)\n[![Expo DevClient build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml)\n[![Reanimated TypeScript compatibility test](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml)\n[![Windows hosted app Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml)\n[![URL validation](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml)\n\n## Installation\n\nCheck out the [installation](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation) section of our docs for the detailed installation instructions.\n\n## Compatibility\n\nReact Native Reanimated 4.x supports only the [New React Native architecture](https://reactnative.dev/architecture/landing-page) and three latest React Native versions.\n\nIf your app still runs on the old architecture, please consider adopting the New Architecture or stay with latest 3.x release.\n\n## Documentation\n\nCheck out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-reanimated/](https://docs.swmansion.com/react-native-reanimated/)\n\n## License\n\nReanimated library is licensed under [The MIT License](LICENSE).\n\n## Community Discord\n\n[Join the Software Mansion Community Discord](https://discord.swmansion.com) to chat about Reanimated or other Software Mansion libraries.\n\n## Reanimated is created by Software Mansion\n\nSince 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – [Hire us](https://swmansion.com/contact/projects?utm_source=reanimated\\&utm_medium=readme).\n","packages/eslint-plugin-reanimated/package.json":"{\n  \"name\": \"eslint-plugin-reanimated\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"types\": \"types/index.d.ts\",\n  \"scripts\": {\n    \"test\": \"yarn run --top-level jest\",\n    \"bundle\": \"yarn esbuild ./public/index.js --external:espree --external:@typescript-eslint --platform=node --bundle --outfile=./index.js\",\n    \"build\": \"yarn tsc && yarn bundle && rm -rf ./public/* && yarn format\",\n    \"lint\": \"yarn run --top-level oxlint --max-warnings=0 src --ignore-pattern 'types/**'\",\n    \"format\": \"yarn run --top-level oxfmt .\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"24.0.14\",\n    \"@typescript-eslint/parser\": \"8.62.1\",\n    \"@typescript-eslint/rule-tester\": \"8.62.1\",\n    \"@typescript-eslint/utils\": \"8.62.1\",\n    \"esbuild\": \"0.25.10\",\n    \"eslint\": \"9.37.0\",\n    \"ts-jest\": \"29.4.12\",\n    \"typescript\": \"5.9.3\"\n  }\n}\n",".agents/skills/worklets-release/SKILL.md":"---\nname: worklets-release\ndescription: Prepare a Worklets patch release from a worklets-<X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Worklets X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Worklets patch release\n\nCuts a release of `react-native-worklets` from a stable branch (e.g. `worklets-0.13-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Worklets): X.Y.Z` PR, and a dry-run of the `npm worklets publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10598 (`release(Worklets): 0.13.0`) and PR #10469 (`release(Worklets): 0.12.2`).\n\n## Inputs\n\n- **Version** — e.g. `0.13.1`. Infer the branch from it: `worklets-0.13-stable`.\n- **Release branch** — `worklets-<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Worklets X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rwr-release-<version>` (sibling of the repo; `rwr` because it's a Worklets release) |\n| Branch | `@<you>/worklets/release-<version>` |\n| Commit + PR title | `release(Worklets): <version>` |\n| PR body | `## Summary` / `Releasing Worklets <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10598, #10469) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-worklets/package.json` (version)\n- `packages/react-native-worklets/src/debug/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNWorklets pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-worklets/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-worklets/changelog/` on stable branches newer than `worklets-0.13-stable`.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/worklets/release-<version>' \\\n  ../rwr-release-<version> origin/<release-branch>\ncd ../rwr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-worklets set-version --version <version>\n```\n\nUpdates `package.json` and `src/debug/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn stable branches newer than `worklets-0.13-stable`, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-worklets changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\n`worklets-0.13-stable` and older have no fragments. There, move the `## Unpublished` entries in `packages/react-native-worklets/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Worklets and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Worklets minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNWorklets (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Worklets): <version>'\ngit push -u origin '@<you>/worklets/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10598 / #10469 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/worklets/release-<version>' \\\n  --title 'release(Worklets): <version>' \\\n  --body '## Summary\n\nReleasing Worklets <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm worklets publish' --ref '@<you>/worklets/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm worklets publish' \\\n  --branch '@<you>/worklets/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._WORKLETS_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/worklets/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm worklets publish' --ref worklets-<X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-worklets@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Worklets - X.Y.Z`, git tag `worklets-X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin worklets-<X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/worklets-<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create worklets-<version> --draft --target \"$sha\" \\\n  --title 'Worklets - <version>' \\\n  --generate-notes --notes-start-tag worklets-<previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag worklets-<prev>` reproduces the `## What's Changed` list plus the `worklets-<prev>...worklets-<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Worklets - 0.12.2` is not the latest release).\n- Created with `--draft`; the `worklets-X.Y.Z` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-worklets@<version>            # downloads the published .tgz\ngh release upload worklets-<version> react-native-worklets-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rwr-release-<version>\ngit branch -D '@<you>/worklets/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref worklets-<X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `worklets-<X.Y>-stable` branch.\n","packages/react-native-reanimated/RELEASE.md":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/RELEASE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/RELEASE.md)","packages/react-native-reanimated/compatibility.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/compatibility.json)","packages/react-native-reanimated/knip.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/knip.json)","packages/react-native-reanimated/package.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/package.json)","packages/react-native-reanimated/tsconfig.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.json)","packages/react-native-reanimated/tsconfig.native.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.native.json)","packages/react-native-reanimated/tsconfig.web.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.web.json)","packages/react-native-reanimated/tsdoc.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsdoc.json)","packages/react-native-worklets/.oxlintrc.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.oxlintrc.json)","packages/react-native-worklets/CHANGELOG.md":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/CHANGELOG.md)","packages/react-native-worklets/README.md":"# react-native-worklets Documentation\n\nPath: `packages/react-native-worklets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/README.md)","packages/react-native-worklets/compatibility.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/compatibility.json)","packages/react-native-worklets/knip.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/knip.json)","packages/react-native-worklets/package.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/package.json)","packages/react-native-worklets/tsconfig.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.json)","packages/react-native-worklets/tsconfig.native.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.native.json)","packages/react-native-worklets/tsconfig.web.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.web.json)","packages/react-native-worklets/tsdoc.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsdoc.json)","scripts/llvm-tools/README.md":"# llvm-tools Documentation\n\nPath: `scripts/llvm-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/scripts/llvm-tools/README.md)","packages/eslint-plugin-reanimated/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/eslint-plugin-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/__tests__/tsconfig.json)","packages/react-native-reanimated/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/react-native-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__tests__/tsconfig.json)","packages/react-native-reanimated/__typetests__/tsconfig.json":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.json)","packages/react-native-reanimated/__typetests__/tsconfig.web.json":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.web.json)","packages/react-native-reanimated/android/README.md":"# android Documentation\n\nPath: `packages/react-native-reanimated/android/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/android/README.md)","packages/react-native-reanimated/changelog/README.md":"# changelog Documentation\n\nPath: `packages/react-native-reanimated/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/README.md)","packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md)","packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md)","packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md)","packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md)","packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md)","packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md)","packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md)","packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md)","packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md)","packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md)","packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md)","packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md)","packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md)","packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md)","packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md)","packages/react-native-reanimated/changelog/animated-text.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text.feature.md)","packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md)","packages/react-native-reanimated/changelog/bgimg-css.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bgimg-css.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bgimg-css.feature.md)","packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md)","packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md)","packages/react-native-reanimated/changelog/css-none-empty-list.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-none-empty-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-none-empty-list.fix.md)","packages/react-native-reanimated/changelog/css-platform-color.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-platform-color.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-platform-color.fix.md)","packages/react-native-reanimated/changelog/deprecations-as-errors.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/deprecations-as-errors.other.md)","packages/react-native-reanimated/changelog/entering-stale-frame.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/entering-stale-frame.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/entering-stale-frame.fix.md)","packages/react-native-reanimated/changelog/exiting-state-completed.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/exiting-state-completed.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/exiting-state-completed.other.md)","packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md)","packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md)","packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md)","packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md)","packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md)","packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md)","packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md)","packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md)","packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md)","packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md)","packages/react-native-reanimated/changelog/la-decision-pending-states.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-decision-pending-states.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-decision-pending-states.other.md)","packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md)","packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md)","packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md)","packages/react-native-reanimated/changelog/library-extension-dsl.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/library-extension-dsl.other.md)","packages/react-native-reanimated/changelog/mock-derived-value.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mock-derived-value.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mock-derived-value.fix.md)","packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md)","packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md)","packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md)","packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md)","packages/react-native-reanimated/changelog/oxlint-migration.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/oxlint-migration.other.md)","packages/react-native-reanimated/changelog/processors-own-keys.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/processors-own-keys.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/processors-own-keys.fix.md)","packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md)","packages/react-native-reanimated/changelog/props-map-dynamic.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-map-dynamic.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-map-dynamic.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md)","packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md)","packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md)","packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md)","packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md)","packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md)","packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md)","packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md)","packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md)","packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md)","packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md)","packages/react-native-reanimated/changelog/sensor-value-map.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-value-map.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-value-map.other.md)","packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md)","packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md)","packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md)","packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md)","packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md)","packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md)","packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md)","packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md)","packages/react-native-reanimated/changelog/test-web-sensor-path.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/test-web-sensor-path.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/test-web-sensor-path.other.md)","packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md)","packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md)","packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md)","packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md)","packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md)","packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md)","packages/react-native-reanimated/changelog/web-use-handler-context.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-handler-context.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-handler-context.other.md)","packages/react-native-reanimated/changelog/web-worklets-version-check.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-worklets-version-check.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-worklets-version-check.other.md)","packages/react-native-reanimated/metro-config/tsconfig.json":"# Metro-config Skill\n\nPath: `packages/react-native-reanimated/metro-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/metro-config/tsconfig.json)","packages/react-native-worklets/.worklets/dummy.md":"# .worklets Skill\n\nPath: `packages/react-native-worklets/.worklets/dummy.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.worklets/dummy.md)","packages/react-native-worklets/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/react-native-worklets/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__tests__/tsconfig.json)","packages/react-native-worklets/__typetests__/tsconfig.json":"# __typetests__ Skill\n\nPath: `packages/react-native-worklets/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__typetests__/tsconfig.json)","packages/react-native-worklets/changelog/README.md":"# changelog Documentation\n\nPath: `packages/react-native-worklets/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/README.md)","packages/react-native-worklets/changelog/addclonemappingfix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/addclonemappingfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/addclonemappingfix.fix.md)","packages/react-native-worklets/changelog/assign-captured-variable.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/assign-captured-variable.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/assign-captured-variable.fix.md)","packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md)","packages/react-native-worklets/changelog/createserializableapi.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/createserializableapi.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/createserializableapi.feature.md)","packages/react-native-worklets/changelog/deprecations-as-errors.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/deprecations-as-errors.other.md)","packages/react-native-worklets/changelog/dev-flag-in-js.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/dev-flag-in-js.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/dev-flag-in-js.fix.md)","packages/react-native-worklets/changelog/docs-fix-broken-links.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/docs-fix-broken-links.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/docs-fix-broken-links.other.md)","packages/react-native-worklets/changelog/gstring-ndk-version.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/gstring-ndk-version.fix.md)","packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md)","packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md)","packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md)","packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md)","packages/react-native-worklets/changelog/library-extension-dsl.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/library-extension-dsl.other.md)","packages/react-native-worklets/changelog/oxc-name.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-name.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-name.other.md)","packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md)","packages/react-native-worklets/changelog/oxlint-migration.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxlint-migration.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md)","packages/react-native-worklets/changelog/react-native-0-88-stable.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-stable.other.md)","packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md)","packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md)","packages/react-native-worklets/changelog/runonrnsync.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync.feature.md)","packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md)","packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md)","packages/react-native-worklets/plugin-oxc/package.json":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/package.json)","packages/react-native-worklets/plugin-oxc/tsconfig.json":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/tsconfig.json)","packages/react-native-worklets/plugin/.oxlintrc.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/.oxlintrc.json)","packages/react-native-worklets/plugin/package.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/package.json)","packages/react-native-worklets/plugin/tsconfig.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/tsconfig.json)","packages/react-native-reanimated/src/featureFlags/staticFlags.json":"# FeatureFlags Skill\n\nPath: `packages/react-native-reanimated/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/src/featureFlags/staticFlags.json)","packages/react-native-worklets/bundleMode/patches/README.md":"# patches Documentation\n\nPath: `packages/react-native-worklets/bundleMode/patches/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/README.md)","packages/react-native-worklets/bundleMode/polyfills/tsconfig.json":"# Polyfills Skill\n\nPath: `packages/react-native-worklets/bundleMode/polyfills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/polyfills/tsconfig.json)","packages/react-native-worklets/src/featureFlags/staticFlags.json":"# FeatureFlags Skill\n\nPath: `packages/react-native-worklets/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/src/featureFlags/staticFlags.json)","packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json":"# Npm Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json)","packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json":"# YarnModern Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json)"},"files":{".agents/skills/reanimated-cherry-pick/SKILL.md":"---\nname: reanimated-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Reanimated release branch (e.g. 4.3-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `<X.Y>-stable`\n  branch, or when preparing a Reanimated patch release.\n---\n\n# Cherry-pick PRs onto a Reanimated release branch\n\nBackports merged upstream PRs onto a release branch using one worktree per PR so the cherry-picks don't fight over the same\nworking tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional), and the tracking issue for\nthe release is updated with links.\n\nPreferably use PR stack from GitHub.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `4.3-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Reanimated X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Reanimated] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rnr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Reanimated): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rnr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rnr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Reanimated part\n\nIf the upstream PR also changes Worklets, leave the Worklets part out of the cherry-pick: restore `packages/react-native-worklets/` from the\nrelease branch. This also removes the Worklets changelog fragment. A Reanimated release branch does not release Worklets.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-worklets\n```\n\n### 3b. Keep the changelog fragment\n\nOn `4.7-stable` and newer, the upstream changelog fragment in `packages/react-native-reanimated/changelog/` comes with the\ncherry-pick. Keep it: `changelog:squash` reads it at release time. On older branches, see the changelog item of the\n\"Cross-cutting change checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nResolve conflicts.\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rnr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n",".agents/skills/worklets-cherry-pick/SKILL.md":"---\nname: worklets-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Worklets release branch (e.g. worklets-0.13-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a\n  `worklets-<X.Y>-stable` branch, or when preparing a Worklets patch release.\n---\n\n# Cherry-pick PRs onto a Worklets release branch\n\nBackports merged upstream PRs onto a release branch (e.g. `worklets-0.13-stable`) using one worktree per PR so the cherry-picks\ndon't fight over the same working tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional),\nand the tracking issue for the release is updated with links.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `worklets-0.13-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Worklets X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Worklets] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rwr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Worklets): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rwr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rwr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Worklets part\n\nIf the upstream PR also changes Reanimated, leave the Reanimated part out of the cherry-pick: restore `packages/react-native-reanimated/` from the\nrelease branch. This also removes the Reanimated changelog fragment. A Worklets release branch does not release Reanimated.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-reanimated\n```\n\n### 3b. Keep the changelog entry\n\nOn stable branches newer than `worklets-0.13-stable`, the upstream changelog fragment in\n`packages/react-native-worklets/changelog/` comes with the cherry-pick. Keep it. On `worklets-0.13-stable` and older, the\nbranch uses the old layout: delete the fragment and add a bullet under `## Unpublished` in\n`packages/react-native-worklets/CHANGELOG.md` with the PR and author links. See the changelog item of the \"Cross-cutting\nchange checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nCommon one on 0.9-stable: `scripts/patches/resolutions.patch` doesn't exist on the release branch (it was introduced by \"enable\nBundle Mode by default\" which never landed on 0.9). Drop the hunk:\n\n```bash\ngit rm scripts/patches/resolutions.patch\n```\n\nGeneral rule: files/hunks that reference infrastructure absent from the release branch should be dropped, not force-merged. When\nin doubt, check `git log --all -- <path>` to see if the file was ever on the release branch.\n\n**Not every conflict is a drop.** Stable branches often retain code that `main` has since refactored away (an inlined visitor,\nan extra pass field, an import that moved), so a backport can conflict _additively_ — the incoming hunk and the branch's own\ncode both belong. Resolve those by keeping **both** sides, not by dropping either. Seen backporting #10032 onto\n0.10/0.11-stable: the `globals.ts` import block and a `WorkletsPluginPass` field each conflicted additively (the branch still\nhad `autoworkletizationPlugin` + `@babel/*` type imports that `main` had moved out).\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rwr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n",".agents/skills/reanimated-release/SKILL.md":"---\nname: reanimated-release\ndescription: Prepare a Reanimated patch release from a <X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Reanimated X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Reanimated patch release\n\nCuts a release of `react-native-reanimated` from a stable branch (e.g. `4.3-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Reanimated): X.Y.Z` PR, and a dry-run of the `npm reanimated publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10797 (`release(Reanimated): 4.7.1`, with the changelog squash) and PR #10427 (`release(Reanimated): 4.5.5`, before the changelog fragments).\n\n## Inputs\n\n- **Version** — e.g. `4.7.2`. Infer the branch from it: `4.7-stable`.\n- **Release branch** — `<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Reanimated X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rnr-release-<version>` (sibling of the repo; `rnr` because it's a Reanimated release) |\n| Branch | `@<you>/reanimated/release-<version>` |\n| Commit + PR title | `release(Reanimated): <version>` |\n| PR body | `## Summary` / `Releasing Reanimated <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10797, #10427) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-reanimated/package.json` (version)\n- `packages/react-native-reanimated/src/platform-specific/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNReanimated pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-reanimated/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-reanimated/changelog/` on `4.7-stable` and newer.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/reanimated/release-<version>' \\\n  ../rnr-release-<version> origin/<release-branch>\ncd ../rnr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-reanimated set-version --version <version>\n```\n\nUpdates `package.json` and `src/platform-specific/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn `4.7-stable` and newer, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-reanimated changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\nBranches older than `4.7-stable` have no fragments. `4.5-stable` and older have no `CHANGELOG.md`, so skip this step there. On\n`4.6-stable`, move the `## Unpublished` entries in `packages/react-native-reanimated/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Reanimated and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Reanimated minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNReanimated (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Reanimated): <version>'\ngit push -u origin '@<you>/reanimated/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10797 / #10427 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/reanimated/release-<version>' \\\n  --title 'release(Reanimated): <version>' \\\n  --body '## Summary\n\nReleasing Reanimated <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm reanimated publish' --ref '@<you>/reanimated/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm reanimated publish' \\\n  --branch '@<you>/reanimated/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._REANIMATED_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/reanimated/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm reanimated publish' --ref <X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-reanimated@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Reanimated - X.Y.Z`, git tag `X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin <X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create <version> --draft --target \"$sha\" \\\n  --title 'Reanimated - <version>' \\\n  --generate-notes --notes-start-tag <previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag <previous-version>` reproduces the `## What's Changed` list plus the `<previous-version>...<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Reanimated - 4.5.5` is not the latest release).\n- Created with `--draft`; the `<version>` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-reanimated@<version>            # downloads the published .tgz\ngh release upload <version> react-native-reanimated-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rnr-release-<version>\ngit branch -D '@<you>/reanimated/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref <X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `<X.Y>-stable` branch.\n","AGENTS.md":"# Agent guide for the react-native-reanimated monorepo\n\nFacts that are true on `main` and that agents otherwise re-discover in every session. Verify against the code when in doubt. Fix this file in the same PR that makes it stale.\n\n## Tooling\n\n- Yarn 4 workspaces, single root lockfile, exact versions only (`scripts/disallow-non-exact.js`). Use `yarn`, `yarn dlx`, `yarn workspace <name> <script>`. Never `npm`, `npx` or `pnpm`.\n- Node from `.nvmrc`, Ruby from `.ruby-version`, CocoaPods through bundler: `bundle exec pod install`. CI rejects a `Podfile.lock` written by a different CocoaPods version.\n- Husky refuses commits and pushes on `main`. Work on a branch.\n- Formatters: oxfmt (JS/TS), remark (`yarn format:md`, CI fails on any diff), clang-format (C++/ObjC), cmake-format, spotless (Kotlin/Java). Prettier is not used.\n- Oxlint lints JS/TS with type-aware rules, so tsconfigs must not use `baseUrl`. Nested `.oxlintrc.json` files must `extends` the root one.\n- Use the existing scripts (root `scripts/`, per-package `scripts/`, `scripts` in each `package.json`). Do not invent ad-hoc build or test scripts.\n\n## Layout\n\n- `packages/react-native-reanimated` - animations library. Depends on worklets.\n- `packages/react-native-worklets` - worklet runtimes, serialization, run loops. Nested workspaces: `plugin/` (Babel plugin, workspace `babel-plugin-worklets`) and `plugin-oxc/` (Rust/napi port, workspace `worklets-oxc-plugin`).\n- `packages/eslint-plugin-reanimated` - internal lint rules used by both packages.\n- `apps/common-app` - all example screens (`src/apps/{reanimated,worklets,css,macos,runtime-tests}`) and the on-device test suites (`runtime-tests/`, a sibling of `src/`). Not runnable on its own.\n- `apps/fabric-example` - primary iOS/Android app and the runtime-tests host. No local `node_modules`, everything hoists to the root.\n- `apps/macos-example`, `apps/tvos-example` - own `node_modules` (`hoistingLimits: workspaces`). macOS cannot run Bundle Mode, so its `build` script runs `toggle-bundle-mode --off`.\n- `apps/web-example` (Expo web, Playwright), `apps/next-example` (Next.js, Cypress).\n- `docs/docs-reanimated`, `docs/docs-worklets` - Docusaurus. Worklets docs are nested into the Reanimated build on publish.\n\nBoth packages share one internal layout:\n\n- `src/` TS public API. Platform variants: `x.native.ts`, `x.ts` (web), `xCommon.ts`.\n- `Common/cpp/<pkg>/` portable C++ used by iOS and Android.\n- `apple/<pkg>/apple/` Objective-C++.\n- `android/src/main/cpp/<pkg>/android/` fbjni glue, `android/src/main/java/com/swmansion/<pkg>/` Kotlin.\n- `__tests__/` Jest, `__typetests__/` tstyche. `src/mock.ts` must mirror the exports of `src/index.ts` (`yarn validate-mock`).\n\nCommitted build artifacts, rebuild them and never hand-edit: `packages/react-native-worklets/plugin/index.js`, `plugin/index.d.ts`, `packages/eslint-plugin-reanimated/index.js`, `packages/eslint-plugin-reanimated/types/`. The pre-commit hook rebuilds and stages the worklets plugin.\n\n## How the pieces link\n\n- `node_modules/react-native-reanimated` and `node_modules/react-native-worklets` are symlinks to `packages/*`. Reanimated always compiles against in-repo worklets headers.\n- Package entry points: `react-native` and `source` point at `src/index` (apps, Metro, Jest). `main`, `module` and `types` point at `lib/` (npm consumers, `type:check`, madge, tree-shake checks). A stale `lib/` breaks checks but never the app.\n- Reanimated and worklets are pinned three times: exact `peerDependencies` version, `compatibility.json` (checked by `yarn validate-peers` and by Android `preBuild`), and a C++ `static_assert` of `WORKLETS_STABLE_API_VERSION` (`packages/react-native-worklets/Common/cpp/worklets/Compat/StableApi.h`) against `EXPECTED_WORKLETS_STABLE_API_VERSION` (`packages/react-native-reanimated/Common/cpp/reanimated/Compat/WorkletsApi.h`). Change one, change the other.\n- Reanimated native code may include exactly one worklets header, `<worklets/Compat/StableApi.h>`. `packages/react-native-reanimated/scripts/validate-worklets-includes.sh` enforces this.\n- `packages/react-native-reanimated/plugin` re-exports `react-native-worklets/plugin`.\n- Static feature flags: `src/featureFlags/staticFlags.json` merged with the app's `package.json` field `reanimated.staticFeatureFlags` or `worklets.staticFeatureFlags`. iOS injects them through `scripts/*_utils.rb` into the podspec `OTHER_CFLAGS`, Android through `build.gradle.kts` into CMake arguments. The flags become compiler defines, so re-run `pod install` after changing them.\n- The `@/` alias to `apps/common-app/src` is declared in `apps/common-app/tsconfig.native.json` and in `module-resolver` in `apps/fabric-example/babel.config.js`, `apps/macos-example/babel.config.js` and `apps/web-example/babel.config.js`. Keep them in sync.\n\n## Where to look: worklets\n\n- JS to C++ surface: not the TurboModule spec. `src/specs/NativeWorkletsModule.ts` has three methods. Everything else is `globalThis.__workletsModuleProxy`, installed in `JSIWorkletsModuleProxy::toOptimizedObject` and mirrored in `src/WorkletsModule/workletsModuleProxy.ts`, `NativeWorklets.native.ts` and `src/privateGlobals.d.ts`. Adding a native method needs no codegen change.\n- Platform seam: `RuntimeBindings` (`Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h`), a struct of `std::function`s built by each platform module. A complete example of core plus both backends is `requestAnimationFrame`: `Common/cpp/worklets/AnimationFrameQueue/`, `apple/worklets/apple/AnimationFrameQueue.mm`, Kotlin `runloop/AnimationFrameQueue.kt`.\n- Runtimes: `RuntimeKind` 1 = React Native, 2 = UI, 3 = Worker (`src/runtimeKind.ts`). The UI runtime runs on the platform main thread (`AsyncQueueUI` over `UIScheduler`). Each worker runtime owns a thread (`Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp`). `runOnUISync` and `runOnRuntimeSync` run inline on the caller.\n- Scheduling order: `scheduleOnUI` batches inside `queueMicrotask` (`src/threads.native.ts`). `runOnUISync`, `Synchronizable.getBlocking`/`setBlocking`, native `getViewProp` and worker-runtime writes bypass that batch. Most ordering bugs come from this.\n- Serialization: `Common/cpp/worklets/SharedItems/` and `src/memory/`. `Serializable::undefined()` is a shared singleton.\n- Runtime setup: `Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp` creates the runtimes, decorators in `Common/cpp/worklets/WorkletRuntime/` install the globals.\n- Bundle Mode: Babel plugin option `bundleMode`, Metro helper `react-native-worklets/bundleMode`, Metro patches in `packages/react-native-worklets/bundleMode/patches/` (not published). `fabric-example` runs Bundle Mode by default. `yarn toggle-bundle-mode` (repo root) patches tracked files in `apps/` and `package.json`, so it pollutes the diff. Generated chunks live in `packages/react-native-worklets/.worklets/`. Keep `.worklets/dummy.md`.\n\n## Where to look: reanimated\n\n- JS to C++ surface: same pattern as worklets. `src/specs/NativeReanimatedModule.ts` has one method, `installTurboModule`. The real API is `globalThis.__reanimatedModuleProxy`, installed in `ReanimatedModuleProxy::toOptimizedObject` (`Common/cpp/reanimated/NativeModules/`) and typed in `src/ReanimatedModule/reanimatedModuleProxy.ts`. `src/ReanimatedModule/NativeReanimated.ts` wraps it on native, `js-reanimated/JSReanimated.ts` is the web implementation.\n- Platform seam: `Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h`, filled by `apple/reanimated/apple/ReanimatedModule.mm` and `android/src/main/cpp/reanimated/android/NativeProxy.cpp`. Frame ticks and event dispatch come from `REANodesManager.mm` (CADisplayLink) and `NodesManager.kt` (ReactChoreographer).\n- UI runtime globals used by JS worklets (`_updateProps`, `_measure`, `_dispatchCommand`, `_obtainProp`, `_notifyAboutProgress`, `_setGestureState` and others) are installed in `Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp`. The React Native runtime side is `RNRuntimeDecorator.cpp`.\n- Style update path: `useAnimatedStyle` and `useAnimatedProps` (`src/hook/`) write through `src/updateProps/updateProps.native.ts`, which calls `_updateProps` on the UI runtime. Native stores the values in `Fabric/updates/AnimatedPropsRegistry` and `UpdatesRegistryManager`, and `Fabric/ReanimatedCommitHook` applies them to the shadow tree with `cloneShadowTreeWithNewProps` (`Fabric/ShadowTreeCloner`) on every commit. `Fabric/ReanimatedMountHook` runs after mount.\n- Animated components: `src/createAnimatedComponent/` (`AnimatedComponent.native.tsx`, `JSPropsUpdater`, `InlinePropManager`, `NativeEventsManager`, `PropsFilter`). Shared values live in `src/mutables.native.ts` and `src/mutablesCommon.ts`.\n- Events: `src/WorkletEventHandler.native.ts` registers through `registerEventHandler`, native side in `Common/cpp/reanimated/Events/UIEventHandlerRegistry`.\n- Layout animations: JS in `src/layoutReanimation/` and `src/UpdateLayoutAnimations.native.ts` (`configureLayoutAnimationBatch`). Native in `Common/cpp/reanimated/LayoutAnimations/`: `LayoutAnimationsManager` holds configs, `LayoutAnimationsProxy` (default) and `LayoutAnimationsProxy_Legacy` (`USE_LEGACY_LAYOUT_ANIMATIONS_PROXY`) are `MountingOverrideDelegate`s chosen at install time through `LayoutAnimationsProxyRegistry`. Shared element transitions are in `SharedTransitions.cpp` and the `REASharedTransitionBoundary` Fabric component in `Common/NativeView/`.\n- CSS animations and transitions: JS in `src/css/` (`platform.native.ts` picks `css/native`, `platform.ts` picks `css/web`). Native in `Common/cpp/reanimated/CSS/` with `registries/` (keyframes, animations, transitions), `core/`, `interpolation/`, `easing/`, driven by `Fabric/updates/OperationsLoop`. Platform pieces in `apple/reanimated/apple/CSS` and `android/src/main/cpp/reanimated/android/CSS`.\n- Other native features: `AnimatedSensor/`, `PseudoStyles/`, keyboard in `apple/reanimated/apple/keyboardObserver` and `android/src/main/java/com/swmansion/reanimated/keyboard`.\n\n## Commands\n\n```sh\nyarn                                   # install (needed in every new worktree)\nyarn build-packages                    # builds worklets then reanimated (bob), rebuilds the Babel plugin and the Oxc plugin, fills lib/\nyarn workspace react-native-worklets build\nyarn workspace <pkg> type:check        # native + web + common-app + type tests\nyarn workspace <pkg> lint              # lint:js + lint:android + lint:apple + lint:clang-tidy (+ lint:plugin)\nyarn workspace <pkg> test              # Jest (root binary); `yarn workspace <pkg> jest <pattern>` for one file\nyarn workspace <pkg> format\nyarn lint && yarn format && yarn format:md   # repo-wide\nyarn test:scripts                      # tests for root scripts/\nyarn build-apps                        # regenerates apps/*/ios/Podfile.lock; macos-example may fail, that is known\n```\n\niOS (`apps/fabric-example/ios`): workspace `FabricExample.xcworkspace`, schemes `Debug FabricExample` and `Release FabricExample`, configurations `DebugRuntimeTests` and `ReleaseRuntimeTests`. Pod-only schemes `RNWorklets` and `RNReanimated` compile native code without the app. `RCT_USE_PREBUILT_RNCORE=0 RCT_USE_RN_DEP=0` builds React Native from source (needed for sanitizers). Re-run `pod install` after switching branches when native files were added or removed, because the podspecs glob sources.\n\nAndroid: `yarn workspace fabric-example android` (`--active-arch-only`). Worklets/Reanimated cannot be built without an app project and the React Native Gradle Plugin. Gradle does not track worklets package files for `createBundleReleaseJsAndAssets`, so pass `--rerun` after editing JS.\n\nFast C++ syntax check without a native build. Run from `packages/react-native-worklets` after `pod install` in fabric-example:\n\n```sh\nRN=../../node_modules/react-native\nHERMES=../../apps/fabric-example/ios/Pods/hermes-engine/destroot/include\nclang++ -std=c++20 -fsyntax-only -I Common/cpp -I $RN/ReactCommon/jsi -I $RN/ReactCommon \\\n  -I $RN/ReactCommon/callinvoker -I $RN/ReactCommon/react/nativemodule/core -I $HERMES <file.cpp>\n```\n\n`compile_commands.json` (for clangd and `lint:clang-tidy`) exists only after a real build. clangd errors in a fresh checkout are include-path noise.\n\n## Tests\n\n- Jest: per-package configs. Reanimated has the projects `native`, `ios`, `android` and `web`. `packages/react-native-reanimated/jest/resolver.js` forces web variants for the modules listed in `WEB_ONLY_IN_JEST` (`useAnimatedStyle`, `mutables` and others), so a green `native` project does not prove that a `.native.ts` file ran.\n- Type tests: `__typetests__/*.tst.ts` through `scripts/test-ts.sh` (tstyche).\n- Runtime tests (ReJest, on device): suites in `apps/common-app/runtime-tests/{reanimated,worklets,self-tests}`, harness in `apps/common-app/runtime-tests/ReJest`, entry points `apps/fabric-example/index.runtimeTests.*.js`. Driver:\n\n```sh\nyarn workspace fabric-example runtime-tests --library worklets --platform ios --udid <udid>\n```\n\n- `--library` takes `reanimated`, `worklets` or `self-tests`. `--platform` takes `ios` or `android`, with the device given by `--udid`, `--serial` or `--avd`. `--configuration` takes `DebugRuntimeTests` or `ReleaseRuntimeTests`. Other flags: `--only suiteA,suiteB`, `--skip-build`, `--metro-port N`, `--port N`.\n- The reporting port defaults to the Metro port plus one (8082 for Release, which embeds the bundle and runs no Metro). `--skip-build` installs whatever is already built for that configuration. `--help` lists everything. Approximate durations: self-tests under a minute, worklets about 1 minute, reanimated about 2 minutes.\n- ReJest semantics: `mockAnimationTimer()` advances 16 ms per real frame, `wait()` is real time, `waitForNotification` is the idiom for \"animation finished\", `toThrow` matches substrings, `toMatchNativeSnapshots` compares against pixel-grid-rounded native metrics with a 0.5 dp tolerance. Suites are `__DEV__`-gated inconsistently, so a `__DEV__`-only assertion can fail only in the Release nightly. Android emulators need GPU acceleration (`hw.gpu.mode=host`) or mocked-clock tests time out.\n- CI: `*-static-checks.yml`, `runtime-tests-{ios,android,nightly,sanitizers-nightly}.yml`, `{android,apple}-validation.yml`, `changelog-check.yml`, `yarn-validation.yml`, example build checks, docs build and publish, `npm-*-publish*.yml`.\n\n## Cross-cutting change checklist\n\n- New native binding: `Common/cpp`, then `android/src/main/cpp`, Kotlin (if exposed), `apple/`, then `src/` TS (`workletsModuleProxy.ts`, `privateGlobals.d.ts`, `mock.ts`).\n- Worklets public API change: grep `packages/react-native-reanimated/src`, the largest consumer.\n- Babel plugin change: run `plugin/__tests__`, rebuild `plugin/index.js`, rebuild both packages.\n- Any package change needs a new changelog fragment `packages/<pkg>/changelog/<slug>.<breaking|feature|fix|other>.md` that holds one sentence. Write the file directly, or run `yarn workspace <react-native-reanimated|react-native-worklets> changelog:add --type <type> --message '<One sentence>'`. Use single quotes, because the shell runs backticks inside double quotes. Do not write the PR link or the author (the optional lines `pr: <number>` and `by: @user1, @user2` exist for the cases that the release script cannot resolve), and do not edit `CHANGELOG.md`: `yarn changelog:squash` fills it at release. On Reanimated stable branches older than `4.7-stable`, `changelog-check` uses the old layout and is always red. Ignore it there. Worklets stable branches up to and including `worklets-0.13-stable` also use the old layout. There, add a bullet under `## Unpublished` in `packages/react-native-worklets/CHANGELOG.md` with the PR and author links instead of a fragment, and leave out changes to other packages, because `changelog-check` requires a `CHANGELOG.md` entry for each changed package. On newer stable branches, a red check means that the cherry-pick lost its fragment.\n- Docs-visible API change: update `docs/docs-reanimated` and/or `docs/docs-worklets`.\n- Do not commit changes to the playground files `apps/common-app/src/apps/reanimated/examples/EmptyExample.tsx` and `apps/common-app/src/apps/css/examples/animations/screens/testExamples/Playground.tsx`.\n- PR template: `.github/PULL_REQUEST_TEMPLATE.md` (Summary, Test plan).\n\n## Fresh checkout or worktree\n\n1. `yarn` - a new worktree has no `node_modules`.\n1. `yarn build-packages` - fills `lib/` and rebuilds both plugins. `type:check` and `circular-dependency-check` fail without it.\n1. After merging across a version bump: `rm packages/react-native-worklets/.worklets/*.js` (keep `dummy.md`) and `yarn jest --clearCache`. Stale chunks trip the plugin version check.\n1. `cd apps/fabric-example/ios && bundle exec pod install` when native files changed.\n1. Metro `--reset-cache` after toggling Bundle Mode.\n\n## Release facts\n\n- The release procedure lives in `packages/react-native-reanimated/RELEASE.md`. Agent skills for releases and cherry-picks live in `.agents/skills/` (`.claude/skills` links to it): `reanimated-release`, `worklets-release`, `reanimated-cherry-pick` and `worklets-cherry-pick`. Worklets follows the same flow from `worklets-<X.Y>-stable` branches, and its version file is `src/debug/jsVersion.ts`.\n- When the worklets stable API changes, bump `WORKLETS_STABLE_API_VERSION` in `StableApi.h` and `EXPECTED_WORKLETS_STABLE_API_VERSION` in `WorkletsApi.h` together, also on backports.\n","packages/eslint-plugin-reanimated/.oxlintrc.json":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"types/**\"],\n  \"rules\": {\n    \"no-bitwise\": \"error\"\n  }\n}\n","packages/react-native-reanimated/.oxlintrc.json":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"jsPlugins\": [\"eslint-plugin-reanimated\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"**/lib/**\", \"**/android/**\", \"**/apple/**\"],\n  \"rules\": {\n    \"reanimated/use-reanimated-error\": \"error\",\n    \"reanimated/use-logger\": \"error\",\n    \"reanimated/no-logger-message-prefix\": \"error\",\n    \"reanimated/use-global-this\": \"error\",\n    \"no-unused-expressions\": \"error\"\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"**/*.ts\", \"**/*.tsx\"],\n      \"rules\": {\n        \"no-empty-function\": \"error\",\n        \"typescript/no-explicit-any\": \"error\",\n        \"n/no-unpublished-import\": [\n          \"error\",\n          {\n            \"ignoreTypeImport\": true,\n            \"ignorePrivate\": true\n          }\n        ]\n      }\n    },\n    {\n      \"files\": [\"**/*.test.ts\", \"**/*.test.tsx\"],\n      \"rules\": {\n        \"typescript/unbound-method\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"src/**/*.ts\", \"src/**/*.tsx\"],\n      \"rules\": {\n        \"eslint-core/strict\": [\"error\", \"global\"]\n      }\n    }\n  ]\n}\n","packages/react-native-reanimated/CHANGELOG.md":"# Changelog\n\n## 4.7.0 — 2026-09-18\n\n### 🛠 Breaking changes\n\n- `AnimatedRefOnUI` is now a `ShareableHost<ShadowNodeWrapper | null>` read with `.value` instead of a callable, and `AnimatedRefOnJS` was renamed to `AnimatedRefOnRN`. `measure` on an unmounted ref now returns `null` and warns instead of calling into `_measure`. ([#10413](https://github.com/software-mansion/react-native-reanimated/pull/10413) by [@tjzel](https://github.com/tjzel))\n- Remove the `USE_SYNCHRONIZABLE_FOR_MUTABLES` feature flag. Mutables always use Synchronizable state now. ([#10298](https://github.com/software-mansion/react-native-reanimated/pull/10298) by [@tjzel](https://github.com/tjzel))\n- Make the light-tree layout animations proxy the default. Enable the new `USE_LEGACY_LAYOUT_ANIMATIONS_PROXY` feature flag to roll back to the previous implementation. The legacy proxy does not support Shared Element Transitions, so `ENABLE_SHARED_ELEMENT_TRANSITIONS` must be off when you enable it. ([#10423](https://github.com/software-mansion/react-native-reanimated/pull/10423) by [@pawicao](https://github.com/pawicao))\n\n### 🎉 New features\n\n- Run `shadowColor` CSS transitions on the Android platform animation path on Android 9 and newer. ([#10547](https://github.com/software-mansion/react-native-reanimated/pull/10547) by [@MatiPl01](https://github.com/MatiPl01))\n- Run CSS transitions for `backgroundColor`, `borderColor`, and numeric `borderRadius` on the Android platform animation path. ([#10310](https://github.com/software-mansion/react-native-reanimated/pull/10310) by [@MatiPl01](https://github.com/MatiPl01))\n- Add `backgroundImage` support to animated styles. Linear and radial gradients are accepted as objects or CSS strings and processed on the UI thread. ([#10486](https://github.com/software-mansion/react-native-reanimated/pull/10486) by [@tshmieldev](https://github.com/tshmieldev))\n- Add iOS Swift Package Manager support via `Package.swift` and SPM integration metadata in `react-native.config.js`, with a dependency on `RNWorklets`. ([#10472](https://github.com/software-mansion/react-native-reanimated/pull/10472) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Add an optional `onLog` callback as a second argument to `configureReanimatedLogger`, invoked for every warning and error that passes the `level` and `strict` filters, in addition to the default console output. On native, logs raised on the UI runtime are delivered asynchronously on the React Native Runtime. ([#10482](https://github.com/software-mansion/react-native-reanimated/pull/10482) by [@douglowder](https://github.com/douglowder))\n\n### 🐛 Bug fixes\n\n- Fix a property removed from `transitionProperty` while it transitions to or from `undefined` (its style key was just removed or added) finishing the transition instead of snapping to the committed value. ([#10613](https://github.com/software-mansion/react-native-reanimated/pull/10613) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix a property removed from `transitionProperty` mid-transition reverting to the interpolator default (for example `borderRadius: 0`) instead of the committed style on Android. ([#10614](https://github.com/software-mansion/react-native-reanimated/pull/10614) by [@MatiPl01](https://github.com/MatiPl01))\n- Reject a `backgroundImage` gradient given as an object when a transition hint is not placed between two color stops, and reject gradients with fewer than two color stops in both the object and the string form; React Native crashes on iOS or Android when such values reach the renderer. ([#10589](https://github.com/software-mansion/react-native-reanimated/pull/10589) by [@matipl01](https://github.com/matipl01))\n- Fix a crash in the light tree based Layout Animations proxy when a view is flattened while one of its children is removed in the same commit. ([#10628](https://github.com/software-mansion/react-native-reanimated/pull/10628) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Remove `zIndex` from the synchronous props. No platform applies `zIndex` to a mounted view, so with `IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS` on, an animated style with only `zIndex` and `elevation` never reached the shadow tree commit and the views did not reorder until a later React render. ([#10602](https://github.com/software-mansion/react-native-reanimated/pull/10602) by [@pawicao](https://github.com/pawicao))\n- Stop passing `forwardedRef` and `nativeID` to the wrapped component on web, which React Strict DOM reported as invalid props. ([#10605](https://github.com/software-mansion/react-native-reanimated/pull/10605) by [@tjzel](https://github.com/tjzel))\n- Preserve Android color and other prop updates when hiding and restoring shared transition views. ([#10601](https://github.com/software-mansion/react-native-reanimated/pull/10601) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Prevent Shared Transition Boundaries from intercepting touches intended for sibling views while keeping their children interactive. ([#10600](https://github.com/software-mansion/react-native-reanimated/pull/10600) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Skip exiting animations in the light tree based Layout Animations proxy when a surface is stopped, so the empty-root transaction removes the views at once instead of starting animations on a dead surface and leaving their component views registered on iOS. ([#10586](https://github.com/software-mansion/react-native-reanimated/pull/10586) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Resolve a percent translate of a shared view or of its ancestor with the size of the view that owns it in shared element transitions, so the transition copy no longer starts at a wrong position and `translateX: '50%'` no longer animates as 50 points. ([#10617](https://github.com/software-mansion/react-native-reanimated/pull/10617) by [@pawicao](https://github.com/pawicao))\n- Start a shared element transition from the frame of a running layout animation on the source view. ([#10556](https://github.com/software-mansion/react-native-reanimated/pull/10556) by [@pawicao](https://github.com/pawicao))\n- Track synchronous prop updates in the layout animations bookkeeping behind the `TRACK_SYNCHRONOUS_PROPS_IN_LAYOUT_ANIMATIONS` dynamic feature flag, so shared element transitions and layout animations start from the current props of a view that moved through the synchronous path; warn in development when a transition or layout animation starts on such a view with the flag off. A queued or running layout animation always receives the synchronous props, so a prop changed during the animation no longer blinks back on the next frame. The synchronous-update feature flags now work together with `ENABLE_SHARED_ELEMENT_TRANSITIONS`. ([#10522](https://github.com/software-mansion/react-native-reanimated/pull/10522) by [@pawicao](https://github.com/pawicao))\n- Carry a view's current registry values in the Reanimated commits that change its layout props, so iOS no longer writes a stale transform back to a view that moved through the synchronous path. ([#10416](https://github.com/software-mansion/react-native-reanimated/pull/10416) by [@pawicao](https://github.com/pawicao))\n- Warn only once per caller when dependencies are passed to native hooks. ([#10562](https://github.com/software-mansion/react-native-reanimated/pull/10562) by [@tshmieldev](https://github.com/tshmieldev))\n- Release the shadow tree of a stopped surface; the last mounted root of every surface was kept forever, so apps that start a surface per screen leaked the whole tree of every closed screen. ([#10579](https://github.com/software-mansion/react-native-reanimated/pull/10579) by [@MatiPl01](https://github.com/MatiPl01))\n- Keep `borderWidth` CSS transitions on the animation loop on iOS, so the children move with the border and no stray black border is drawn. ([#10569](https://github.com/software-mansion/react-native-reanimated/pull/10569) by [@MatiPl01](https://github.com/MatiPl01))\n- Resume a `shadowOffset` CSS transition from its in-flight value when it moves from Core Animation to the C++ loop, instead of restarting from the previously committed offset. ([#10564](https://github.com/software-mansion/react-native-reanimated/pull/10564) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix CSS platform transitions ignoring slow animations: on iOS they snapped to the end state under the Simulator's Slow Animations, and on Android they played at full speed under the dev-menu toggle. ([#10548](https://github.com/software-mansion/react-native-reanimated/pull/10548) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix the Release Android build failing on an unused variable in `SharedTransitions.cpp`, and the `backgroundImage` style types failing to compile with React Native 0.85, 0.86 and nightly. ([#10558](https://github.com/software-mansion/react-native-reanimated/pull/10558) by [@tjzel](https://github.com/tjzel))\n- Keep a delayed CSS transition at its start value when it is interrupted or reversed before its delay ends; the platform path used to evaluate the easing at progress 0, which is the end value for `step-start`. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Restore the underlying native style when a running CSS animation is removed or its `animationName` becomes `none`. ([#10528](https://github.com/software-mansion/react-native-reanimated/pull/10528) by [@MatiPl01](https://github.com/MatiPl01))\n- Fixed a crash after animations settled when `backgroundImage` was animated with `useAnimatedStyle`. The settled props sync now converts the native gradient format back before passing it to React. ([#10542](https://github.com/software-mansion/react-native-reanimated/pull/10542) by [@tshmieldev](https://github.com/tshmieldev))\n- Include the React Native version macros through `<React/Utils.h>` when it is available, so `cxxreact/ReactNativeVersion.h` deprecated on React Native `main` no longer breaks the build. ([#10536](https://github.com/software-mansion/react-native-reanimated/pull/10536) by [@tshmieldev](https://github.com/tshmieldev))\n- Fix a short `animationDelay` list on web applying no delay to the animations past its end instead of repeating, the way CSS does and the native path already did. ([#10442](https://github.com/software-mansion/react-native-reanimated/pull/10442) by [@dennytosp](https://github.com/dennytosp))\n- Fix padded string style values throwing, retaining their padding or parsing incorrectly, including SVG gradient stop offsets such as `'50% '`. ([#10422](https://github.com/software-mansion/react-native-reanimated/pull/10422) by [@matipl01](https://github.com/matipl01))\n- Fix `filter` strings using the CSS `hue-rotate()` and `drop-shadow()` spellings being discarded together with every other filter in the same declaration. ([#10383](https://github.com/software-mansion/react-native-reanimated/pull/10383) by [@dennytosp](https://github.com/dennytosp))\n- Fix single-argument `translate()` and `skew()` in transform strings repeating the argument on the Y axis instead of leaving it at zero, so `translate(100px)` no longer also moves the element down. ([#10385](https://github.com/software-mansion/react-native-reanimated/pull/10385) by [@dennytosp](https://github.com/dennytosp))\n- Fix the Metro configuration type import to use the public package export. ([#10454](https://github.com/software-mansion/react-native-reanimated/pull/10454) by [@sneakykiwi](https://github.com/sneakykiwi))\n- Skip the Android mounted-tag correction in Layout Animations when React Native's `enableMountingCoordinatorPullModelAndroid` feature flag is on, since the pull model already guarantees that updates can't outrun a view's first mount. ([#10481](https://github.com/software-mansion/react-native-reanimated/pull/10481) by [@piaskowyk](https://github.com/piaskowyk))\n- Fix `Keyframe` easings on web being dropped or applied to the wrong keyframe when the definitions use the `from`/`to` aliases or fractional offsets. ([#10386](https://github.com/software-mansion/react-native-reanimated/pull/10386) by [@dennytosp](https://github.com/dennytosp))\n- Fix `getViewProp` and the runtime-tests prop snapshotting crashing (segfault on style props, unhandled error on layout props) when the view is no longer mounted. ([#10443](https://github.com/software-mansion/react-native-reanimated/pull/10443) by [@tjzel](https://github.com/tjzel))\n- Ship the Jest resolver (`react-native-reanimated/jest/resolver`) in the npm package, so consumer projects can run Jest against Reanimated: the modules that require a real native module are resolved to their web implementations. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Fix mounting an animated component with attached event handlers (e.g. `useAnimatedScrollHandler`) under Jest crashing with `[Reanimated] registerEventHandler is not available in JSReanimated.` - `WorkletEventHandler` now resolves to its web variant in Jest. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Reset `IN_STYLE_UPDATER` even when an initial style updater throws, so a single updater error no longer leaves all animations returning raw values until reload. ([#10445](https://github.com/software-mansion/react-native-reanimated/pull/10445) by [@alexey-khatskelevich](https://github.com/alexey-khatskelevich))\n- Fix `./gradlew app:build` failing on `:lintAnalyzeDebug` with a K2 UAST crash on `.gradle.kts` build scripts - all lint tasks are now skipped, not only `lintVital*`. ([#10448](https://github.com/software-mansion/react-native-reanimated/pull/10448) by [@tshmieldev](https://github.com/tshmieldev))\n- Treat `animationName: []` as no animation, so the view is detached instead of running its previous animation forever. ([#10432](https://github.com/software-mansion/react-native-reanimated/pull/10432) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix `SequencedTransition` on web scaling the wrong axis in its midpoint keyframe, so the axis that has already finished no longer collapses while the other one waits. ([#10384](https://github.com/software-mansion/react-native-reanimated/pull/10384) by [@dennytosp](https://github.com/dennytosp))\n- Fix native gestures (e.g. scrolling) not working inside `SharedTransitionBoundary` on Android by growing the boundary's zero-sized frame to cover its children. ([#10430](https://github.com/software-mansion/react-native-reanimated/pull/10430) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix `normalizeColor` resolving `Object.prototype` members such as `'constructor'` and `'toString'` as color names and returning a function instead of `null`. ([#10387](https://github.com/software-mansion/react-native-reanimated/pull/10387) by [@dennytosp](https://github.com/dennytosp))\n- Fix `transform` and `transformOrigin` strings padded with whitespace throwing instead of parsing. ([#10388](https://github.com/software-mansion/react-native-reanimated/pull/10388) by [@dennytosp](https://github.com/dennytosp))\n- Fix `linear()` easing not clamping an out-of-order input progress value on its first or last control point, which left the control points non-monotonic and the resulting curve wrong. ([#10380](https://github.com/software-mansion/react-native-reanimated/pull/10380) by [@dennytosp](https://github.com/dennytosp))\n- Fix fractional millisecond CSS time values, which were truncated (`16.67ms` became `16`) or read as `NaN` when written without a leading zero (`.5ms`). ([#10381](https://github.com/software-mansion/react-native-reanimated/pull/10381) by [@dennytosp](https://github.com/dennytosp))\n- Fix animated styles on sticky headers throwing an immutable-object mutation error in development. ([#10389](https://github.com/software-mansion/react-native-reanimated/pull/10389) by [@ngocdevv](https://github.com/ngocdevv))\n- Fix shared element transitions never running on Android for npm installs by publishing `react-native.config.js`, which registers the Shared Transition Boundary component descriptor for autolinking. ([#10375](https://github.com/software-mansion/react-native-reanimated/pull/10375) by [@dennytosp](https://github.com/dennytosp))\n- Keep exiting views at their position in the host tree, so they no longer draw above later siblings. ([#10392](https://github.com/software-mansion/react-native-reanimated/pull/10392) by [@pawicao](https://github.com/pawicao))\n- Apply Layout Animation config batches consistently at the mounting pull boundary. ([#10373](https://github.com/software-mansion/react-native-reanimated/pull/10373) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Retarget running and pending Layout Animations when their config changes and finish them at the mounted frame, so reordered list items no longer disappear or stick to a stale position. Preserve props-only updates, including during reordering, without restarting transitions. ([#10537](https://github.com/software-mansion/react-native-reanimated/pull/10537) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep running Layout Animations attached to views that move between parents by converting their frames through the light tree. ([#10538](https://github.com/software-mansion/react-native-reanimated/pull/10538) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Experimental Layout Animations cleanup ordering on Android. ([#10372](https://github.com/software-mansion/react-native-reanimated/pull/10372) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix interactive Shared Transitions cancellation and progress lifecycle ordering. ([#10371](https://github.com/software-mansion/react-native-reanimated/pull/10371) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Shared Transitions cleanup, restoration, and positioning in native-stack screens and modals. ([#10370](https://github.com/software-mansion/react-native-reanimated/pull/10370) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations replacement and completion ordering by centralizing native lifecycle operations. ([#10369](https://github.com/software-mansion/react-native-reanimated/pull/10369) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations state leaking between Fabric surfaces by using one proxy per surface. ([#10368](https://github.com/software-mansion/react-native-reanimated/pull/10368) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep views hidden for the whole shared element transition, so a React update in the same commit no longer shows them again mid-transition. ([#10425](https://github.com/software-mansion/react-native-reanimated/pull/10425) by [@pawicao](https://github.com/pawicao))\n\n### 💡 Others\n\n- Patch `react-native-svg` in the example apps so its podspec targets iOS and tvOS 15.1, which Xcode 27 requires. ([#10607](https://github.com/software-mansion/react-native-reanimated/pull/10607) by [@tjzel](https://github.com/tjzel))\n- Added support for React Native 0.88. ([#10582](https://github.com/software-mansion/react-native-reanimated/pull/10582) by [@pawicao](https://github.com/pawicao))\n- Merge the accumulated Android raw props of a view in the layout animations light tree only when an animation, a shared element transition or a synchronous update reads that view, instead of on every commit. ([#10570](https://github.com/software-mansion/react-native-reanimated/pull/10570) by [@pawicao](https://github.com/pawicao))\n- Reduce Android layout animation overhead by skipping the raw props merge and props clone in the light tree when an Update reuses the same props pointer, and by moving the merged raw props instead of copying them. ([#10566](https://github.com/software-mansion/react-native-reanimated/pull/10566) by [@pawicao](https://github.com/pawicao))\n- Deduplicate the native CSS transition state machine across Android and iOS. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Move the `IOS_CSS_CORE_ANIMATION` and `ANDROID_CSS_PLATFORM_TRANSITIONS` checks out of the shared C++ code: each platform now supplies its native CSS transition backend under its own flag. No behavior change. ([#10546](https://github.com/software-mansion/react-native-reanimated/pull/10546) by [@MatiPl01](https://github.com/MatiPl01))\n- Added Jest and runtime tests for the settled props unprocessors (colors, `boxShadow`, `backgroundImage`). `unprocessProps` is now exported. ([#10545](https://github.com/software-mansion/react-native-reanimated/pull/10545) by [@tshmieldev](https://github.com/tshmieldev))\n- Remove three duplicated implementations: `CSSBoxShadow` and `CSSDropShadow` share their field validation, `PropertyInterpolator` provides the common `getStyleValue`, and the nodes manager and keyboard observer create their display links through one `REAMakeDisplayLink` helper. ([#10357](https://github.com/software-mansion/react-native-reanimated/pull/10357) by [@MatiPl01](https://github.com/MatiPl01))\n- Throw a descriptive error on iOS when the native module cannot be installed because React Native has no active surface during a reload race, instead of silently installing a dummy module proxy. The `WorkletsModule` registry check that guarded the same path is removed. ([#10508](https://github.com/software-mansion/react-native-reanimated/pull/10508) by [@tjzel](https://github.com/tjzel))\n- Validate the iOS Swift Package Manager integration in CI: the nightly compatibility check now builds the app via SPM on React Native >= 0.87. ([#10511](https://github.com/software-mansion/react-native-reanimated/pull/10511) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Support worklets without closure metadata in handler dependency comparisons and Jest helpers. ([#10517](https://github.com/software-mansion/react-native-reanimated/pull/10517) by [@tshmieldev](https://github.com/tshmieldev))\n- Update hooks for array-based worklet closures and use explicit control points for web Bezier easings instead of inspecting closures. ([#10506](https://github.com/software-mansion/react-native-reanimated/pull/10506) by [@tshmieldev](https://github.com/tshmieldev))\n- Initialize the Layout Animations manager lazily to avoid serializing its worklets during startup. ([#10466](https://github.com/software-mansion/react-native-reanimated/pull/10466) by [@tshmieldev](https://github.com/tshmieldev))\n- Add `fontVariationSettings` to the style properties config, so the package type-checks against React Native 0.88 ([#10239](https://github.com/software-mansion/react-native-reanimated/pull/10239) by [@tjzel](https://github.com/tjzel))\n- Add `backgroundPosition`, `backgroundRepeat` and `backgroundSize` to the style properties config, so the package type-checks against React Native 0.88. ([#10354](https://github.com/software-mansion/react-native-reanimated/pull/10354) by [@tjzel](https://github.com/tjzel))\n- Migrate Mutable's dirty flag to Fixed Synchronizable for better performance. ([#10272](https://github.com/software-mansion/react-native-reanimated/pull/10272) by [@tjzel](https://github.com/tjzel))\n","packages/eslint-plugin-reanimated/tsconfig.json":"{\n  \"compilerOptions\": {\n    \"preserveSymlinks\": true,\n    \"jsx\": \"react-native\",\n    \"skipLibCheck\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"moduleResolution\": \"bundler\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"outDir\": \"public\",\n    \"rootDir\": \"src\",\n    \"declaration\": true,\n    \"declarationDir\": \"types\"\n  },\n  \"include\": [\"src\"]\n}\n","packages/react-native-reanimated/README.md":"<img src=\"https://user-images.githubusercontent.com/16062886/117443145-ff868480-af37-11eb-8680-648bccf0d0ce.png\" alt=\"React Native Reanimated by Software Mansion\" width=\"100%\">\n\n### Create smooth animations with an excellent developer experience.\n\n> Reanimated 4 is here! Check out our [documentation page](https://docs.swmansion.com/react-native-reanimated/) for more information\n\n### Nightly CI state\n\n[![NPM Reanimated publish nightly](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml)\n[![Reanimated compatibility check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml)\n[![Use frameworks Reanimated build check \\[Nightly\\]](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml)\n[![React Native nightly Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml)\n[![Expo DevClient build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml)\n[![Reanimated TypeScript compatibility test](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml)\n[![Windows hosted app Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml)\n[![URL validation](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml)\n\n## Installation\n\nCheck out the [installation](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation) section of our docs for the detailed installation instructions.\n\n## Compatibility\n\nReact Native Reanimated 4.x supports only the [New React Native architecture](https://reactnative.dev/architecture/landing-page) and three latest React Native versions.\n\nIf your app still runs on the old architecture, please consider adopting the New Architecture or stay with latest 3.x release.\n\n## Documentation\n\nCheck out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-reanimated/](https://docs.swmansion.com/react-native-reanimated/)\n\n## License\n\nReanimated library is licensed under [The MIT License](LICENSE).\n\n## Community Discord\n\n[Join the Software Mansion Community Discord](https://discord.swmansion.com) to chat about Reanimated or other Software Mansion libraries.\n\n## Reanimated is created by Software Mansion\n\nSince 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – [Hire us](https://swmansion.com/contact/projects?utm_source=reanimated\\&utm_medium=readme).\n","packages/eslint-plugin-reanimated/package.json":"{\n  \"name\": \"eslint-plugin-reanimated\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"types\": \"types/index.d.ts\",\n  \"scripts\": {\n    \"test\": \"yarn run --top-level jest\",\n    \"bundle\": \"yarn esbuild ./public/index.js --external:espree --external:@typescript-eslint --platform=node --bundle --outfile=./index.js\",\n    \"build\": \"yarn tsc && yarn bundle && rm -rf ./public/* && yarn format\",\n    \"lint\": \"yarn run --top-level oxlint --max-warnings=0 src --ignore-pattern 'types/**'\",\n    \"format\": \"yarn run --top-level oxfmt .\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"24.0.14\",\n    \"@typescript-eslint/parser\": \"8.62.1\",\n    \"@typescript-eslint/rule-tester\": \"8.62.1\",\n    \"@typescript-eslint/utils\": \"8.62.1\",\n    \"esbuild\": \"0.25.10\",\n    \"eslint\": \"9.37.0\",\n    \"ts-jest\": \"29.4.12\",\n    \"typescript\": \"5.9.3\"\n  }\n}\n",".agents/skills/worklets-release/SKILL.md":"---\nname: worklets-release\ndescription: Prepare a Worklets patch release from a worklets-<X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Worklets X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Worklets patch release\n\nCuts a release of `react-native-worklets` from a stable branch (e.g. `worklets-0.13-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Worklets): X.Y.Z` PR, and a dry-run of the `npm worklets publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10598 (`release(Worklets): 0.13.0`) and PR #10469 (`release(Worklets): 0.12.2`).\n\n## Inputs\n\n- **Version** — e.g. `0.13.1`. Infer the branch from it: `worklets-0.13-stable`.\n- **Release branch** — `worklets-<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Worklets X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rwr-release-<version>` (sibling of the repo; `rwr` because it's a Worklets release) |\n| Branch | `@<you>/worklets/release-<version>` |\n| Commit + PR title | `release(Worklets): <version>` |\n| PR body | `## Summary` / `Releasing Worklets <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10598, #10469) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-worklets/package.json` (version)\n- `packages/react-native-worklets/src/debug/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNWorklets pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-worklets/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-worklets/changelog/` on stable branches newer than `worklets-0.13-stable`.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/worklets/release-<version>' \\\n  ../rwr-release-<version> origin/<release-branch>\ncd ../rwr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-worklets set-version --version <version>\n```\n\nUpdates `package.json` and `src/debug/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn stable branches newer than `worklets-0.13-stable`, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-worklets changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\n`worklets-0.13-stable` and older have no fragments. There, move the `## Unpublished` entries in `packages/react-native-worklets/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Worklets and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Worklets minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNWorklets (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Worklets): <version>'\ngit push -u origin '@<you>/worklets/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10598 / #10469 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/worklets/release-<version>' \\\n  --title 'release(Worklets): <version>' \\\n  --body '## Summary\n\nReleasing Worklets <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm worklets publish' --ref '@<you>/worklets/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm worklets publish' \\\n  --branch '@<you>/worklets/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._WORKLETS_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/worklets/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm worklets publish' --ref worklets-<X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-worklets@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Worklets - X.Y.Z`, git tag `worklets-X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin worklets-<X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/worklets-<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create worklets-<version> --draft --target \"$sha\" \\\n  --title 'Worklets - <version>' \\\n  --generate-notes --notes-start-tag worklets-<previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag worklets-<prev>` reproduces the `## What's Changed` list plus the `worklets-<prev>...worklets-<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Worklets - 0.12.2` is not the latest release).\n- Created with `--draft`; the `worklets-X.Y.Z` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-worklets@<version>            # downloads the published .tgz\ngh release upload worklets-<version> react-native-worklets-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rwr-release-<version>\ngit branch -D '@<you>/worklets/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref worklets-<X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `worklets-<X.Y>-stable` branch.\n","packages/react-native-reanimated/RELEASE.md":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/RELEASE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/RELEASE.md)","packages/react-native-reanimated/compatibility.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/compatibility.json)","packages/react-native-reanimated/knip.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/knip.json)","packages/react-native-reanimated/package.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/package.json)","packages/react-native-reanimated/tsconfig.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.json)","packages/react-native-reanimated/tsconfig.native.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.native.json)","packages/react-native-reanimated/tsconfig.web.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.web.json)","packages/react-native-reanimated/tsdoc.json":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsdoc.json)","packages/react-native-worklets/.oxlintrc.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.oxlintrc.json)","packages/react-native-worklets/CHANGELOG.md":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/CHANGELOG.md)","packages/react-native-worklets/README.md":"# react-native-worklets Documentation\n\nPath: `packages/react-native-worklets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/README.md)","packages/react-native-worklets/compatibility.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/compatibility.json)","packages/react-native-worklets/knip.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/knip.json)","packages/react-native-worklets/package.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/package.json)","packages/react-native-worklets/tsconfig.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.json)","packages/react-native-worklets/tsconfig.native.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.native.json)","packages/react-native-worklets/tsconfig.web.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.web.json)","packages/react-native-worklets/tsdoc.json":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsdoc.json)","scripts/llvm-tools/README.md":"# llvm-tools Documentation\n\nPath: `scripts/llvm-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/scripts/llvm-tools/README.md)","packages/eslint-plugin-reanimated/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/eslint-plugin-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/__tests__/tsconfig.json)","packages/react-native-reanimated/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/react-native-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__tests__/tsconfig.json)","packages/react-native-reanimated/__typetests__/tsconfig.json":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.json)","packages/react-native-reanimated/__typetests__/tsconfig.web.json":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.web.json)","packages/react-native-reanimated/android/README.md":"# android Documentation\n\nPath: `packages/react-native-reanimated/android/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/android/README.md)","packages/react-native-reanimated/changelog/README.md":"# changelog Documentation\n\nPath: `packages/react-native-reanimated/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/README.md)","packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md)","packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md)","packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md)","packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md)","packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md)","packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md)","packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md)","packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md)","packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md)","packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md)","packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md)","packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md)","packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md)","packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md)","packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md)","packages/react-native-reanimated/changelog/animated-text.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text.feature.md)","packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md)","packages/react-native-reanimated/changelog/bgimg-css.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bgimg-css.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bgimg-css.feature.md)","packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md)","packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md)","packages/react-native-reanimated/changelog/css-none-empty-list.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-none-empty-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-none-empty-list.fix.md)","packages/react-native-reanimated/changelog/css-platform-color.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-platform-color.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-platform-color.fix.md)","packages/react-native-reanimated/changelog/deprecations-as-errors.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/deprecations-as-errors.other.md)","packages/react-native-reanimated/changelog/entering-stale-frame.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/entering-stale-frame.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/entering-stale-frame.fix.md)","packages/react-native-reanimated/changelog/exiting-state-completed.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/exiting-state-completed.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/exiting-state-completed.other.md)","packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md)","packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md)","packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md)","packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md)","packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md)","packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md)","packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md)","packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md)","packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md)","packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md)","packages/react-native-reanimated/changelog/la-decision-pending-states.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-decision-pending-states.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-decision-pending-states.other.md)","packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md)","packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md)","packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md)","packages/react-native-reanimated/changelog/library-extension-dsl.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/library-extension-dsl.other.md)","packages/react-native-reanimated/changelog/mock-derived-value.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mock-derived-value.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mock-derived-value.fix.md)","packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md)","packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md)","packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md)","packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md)","packages/react-native-reanimated/changelog/oxlint-migration.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/oxlint-migration.other.md)","packages/react-native-reanimated/changelog/processors-own-keys.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/processors-own-keys.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/processors-own-keys.fix.md)","packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md)","packages/react-native-reanimated/changelog/props-map-dynamic.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-map-dynamic.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-map-dynamic.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md)","packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md)","packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md)","packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md)","packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md)","packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md)","packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md)","packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md)","packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md)","packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md)","packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md)","packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md)","packages/react-native-reanimated/changelog/sensor-value-map.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-value-map.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-value-map.other.md)","packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md)","packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md)","packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md)","packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md)","packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md)","packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md)","packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md)","packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md)","packages/react-native-reanimated/changelog/test-web-sensor-path.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/test-web-sensor-path.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/test-web-sensor-path.other.md)","packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md)","packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md)","packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md)","packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md)","packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md)","packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md)","packages/react-native-reanimated/changelog/web-use-handler-context.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-handler-context.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-handler-context.other.md)","packages/react-native-reanimated/changelog/web-worklets-version-check.other.md":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-worklets-version-check.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-worklets-version-check.other.md)","packages/react-native-reanimated/metro-config/tsconfig.json":"# Metro-config Skill\n\nPath: `packages/react-native-reanimated/metro-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/metro-config/tsconfig.json)","packages/react-native-worklets/.worklets/dummy.md":"# .worklets Skill\n\nPath: `packages/react-native-worklets/.worklets/dummy.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.worklets/dummy.md)","packages/react-native-worklets/__tests__/tsconfig.json":"# __tests__ Skill\n\nPath: `packages/react-native-worklets/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__tests__/tsconfig.json)","packages/react-native-worklets/__typetests__/tsconfig.json":"# __typetests__ Skill\n\nPath: `packages/react-native-worklets/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__typetests__/tsconfig.json)","packages/react-native-worklets/changelog/README.md":"# changelog Documentation\n\nPath: `packages/react-native-worklets/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/README.md)","packages/react-native-worklets/changelog/addclonemappingfix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/addclonemappingfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/addclonemappingfix.fix.md)","packages/react-native-worklets/changelog/assign-captured-variable.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/assign-captured-variable.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/assign-captured-variable.fix.md)","packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md)","packages/react-native-worklets/changelog/createserializableapi.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/createserializableapi.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/createserializableapi.feature.md)","packages/react-native-worklets/changelog/deprecations-as-errors.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/deprecations-as-errors.other.md)","packages/react-native-worklets/changelog/dev-flag-in-js.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/dev-flag-in-js.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/dev-flag-in-js.fix.md)","packages/react-native-worklets/changelog/docs-fix-broken-links.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/docs-fix-broken-links.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/docs-fix-broken-links.other.md)","packages/react-native-worklets/changelog/gstring-ndk-version.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/gstring-ndk-version.fix.md)","packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md)","packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md)","packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md)","packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md)","packages/react-native-worklets/changelog/library-extension-dsl.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/library-extension-dsl.other.md)","packages/react-native-worklets/changelog/oxc-name.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-name.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-name.other.md)","packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md)","packages/react-native-worklets/changelog/oxlint-migration.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxlint-migration.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md)","packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md)","packages/react-native-worklets/changelog/react-native-0-88-stable.other.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-stable.other.md)","packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md)","packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md)","packages/react-native-worklets/changelog/runonrnsync.feature.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync.feature.md)","packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md)","packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md)","packages/react-native-worklets/plugin-oxc/package.json":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/package.json)","packages/react-native-worklets/plugin-oxc/tsconfig.json":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/tsconfig.json)","packages/react-native-worklets/plugin/.oxlintrc.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/.oxlintrc.json)","packages/react-native-worklets/plugin/package.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/package.json)","packages/react-native-worklets/plugin/tsconfig.json":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/tsconfig.json)","packages/react-native-reanimated/src/featureFlags/staticFlags.json":"# FeatureFlags Skill\n\nPath: `packages/react-native-reanimated/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/src/featureFlags/staticFlags.json)","packages/react-native-worklets/bundleMode/patches/README.md":"# patches Documentation\n\nPath: `packages/react-native-worklets/bundleMode/patches/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/README.md)","packages/react-native-worklets/bundleMode/polyfills/tsconfig.json":"# Polyfills Skill\n\nPath: `packages/react-native-worklets/bundleMode/polyfills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/polyfills/tsconfig.json)","packages/react-native-worklets/src/featureFlags/staticFlags.json":"# FeatureFlags Skill\n\nPath: `packages/react-native-worklets/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/src/featureFlags/staticFlags.json)","packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json":"# Npm Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json)","packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json":"# YarnModern Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Agent guide for the react-native-reanimated monorepo\n\nFacts that are true on `main` and that agents otherwise re-discover in every session. Verify against the code when in doubt. Fix this file in the same PR that makes it stale.\n\n## Tooling\n\n- Yarn 4 workspaces, single root lockfile, exact versions only (`scripts/disallow-non-exact.js`). Use `yarn`, `yarn dlx`, `yarn workspace <name> <script>`. Never `npm`, `npx` or `pnpm`.\n- Node from `.nvmrc`, Ruby from `.ruby-version`, CocoaPods through bundler: `bundle exec pod install`. CI rejects a `Podfile.lock` written by a different CocoaPods version.\n- Husky refuses commits and pushes on `main`. Work on a branch.\n- Formatters: oxfmt (JS/TS), remark (`yarn format:md`, CI fails on any diff), clang-format (C++/ObjC), cmake-format, spotless (Kotlin/Java). Prettier is not used.\n- Oxlint lints JS/TS with type-aware rules, so tsconfigs must not use `baseUrl`. Nested `.oxlintrc.json` files must `extends` the root one.\n- Use the existing scripts (root `scripts/`, per-package `scripts/`, `scripts` in each `package.json`). Do not invent ad-hoc build or test scripts.\n\n## Layout\n\n- `packages/react-native-reanimated` - animations library. Depends on worklets.\n- `packages/react-native-worklets` - worklet runtimes, serialization, run loops. Nested workspaces: `plugin/` (Babel plugin, workspace `babel-plugin-worklets`) and `plugin-oxc/` (Rust/napi port, workspace `worklets-oxc-plugin`).\n- `packages/eslint-plugin-reanimated` - internal lint rules used by both packages.\n- `apps/common-app` - all example screens (`src/apps/{reanimated,worklets,css,macos,runtime-tests}`) and the on-device test suites (`runtime-tests/`, a sibling of `src/`). Not runnable on its own.\n- `apps/fabric-example` - primary iOS/Android app and the runtime-tests host. No local `node_modules`, everything hoists to the root.\n- `apps/macos-example`, `apps/tvos-example` - own `node_modules` (`hoistingLimits: workspaces`). macOS cannot run Bundle Mode, so its `build` script runs `toggle-bundle-mode --off`.\n- `apps/web-example` (Expo web, Playwright), `apps/next-example` (Next.js, Cypress).\n- `docs/docs-reanimated`, `docs/docs-worklets` - Docusaurus. Worklets docs are nested into the Reanimated build on publish.\n\nBoth packages share one internal layout:\n\n- `src/` TS public API. Platform variants: `x.native.ts`, `x.ts` (web), `xCommon.ts`.\n- `Common/cpp/<pkg>/` portable C++ used by iOS and Android.\n- `apple/<pkg>/apple/` Objective-C++.\n- `android/src/main/cpp/<pkg>/android/` fbjni glue, `android/src/main/java/com/swmansion/<pkg>/` Kotlin.\n- `__tests__/` Jest, `__typetests__/` tstyche. `src/mock.ts` must mirror the exports of `src/index.ts` (`yarn validate-mock`).\n\nCommitted build artifacts, rebuild them and never hand-edit: `packages/react-native-worklets/plugin/index.js`, `plugin/index.d.ts`, `packages/eslint-plugin-reanimated/index.js`, `packages/eslint-plugin-reanimated/types/`. The pre-commit hook rebuilds and stages the worklets plugin.\n\n## How the pieces link\n\n- `node_modules/react-native-reanimated` and `node_modules/react-native-worklets` are symlinks to `packages/*`. Reanimated always compiles against in-repo worklets headers.\n- Package entry points: `react-native` and `source` point at `src/index` (apps, Metro, Jest). `main`, `module` and `types` point at `lib/` (npm consumers, `type:check`, madge, tree-shake checks). A stale `lib/` breaks checks but never the app.\n- Reanimated and worklets are pinned three times: exact `peerDependencies` version, `compatibility.json` (checked by `yarn validate-peers` and by Android `preBuild`), and a C++ `static_assert` of `WORKLETS_STABLE_API_VERSION` (`packages/react-native-worklets/Common/cpp/worklets/Compat/StableApi.h`) against `EXPECTED_WORKLETS_STABLE_API_VERSION` (`packages/react-native-reanimated/Common/cpp/reanimated/Compat/WorkletsApi.h`). Change one, change the other.\n- Reanimated native code may include exactly one worklets header, `<worklets/Compat/StableApi.h>`. `packages/react-native-reanimated/scripts/validate-worklets-includes.sh` enforces this.\n- `packages/react-native-reanimated/plugin` re-exports `react-native-worklets/plugin`.\n- Static feature flags: `src/featureFlags/staticFlags.json` merged with the app's `package.json` field `reanimated.staticFeatureFlags` or `worklets.staticFeatureFlags`. iOS injects them through `scripts/*_utils.rb` into the podspec `OTHER_CFLAGS`, Android through `build.gradle.kts` into CMake arguments. The flags become compiler defines, so re-run `pod install` after changing them.\n- The `@/` alias to `apps/common-app/src` is declared in `apps/common-app/tsconfig.native.json` and in `module-resolver` in `apps/fabric-example/babel.config.js`, `apps/macos-example/babel.config.js` and `apps/web-example/babel.config.js`. Keep them in sync.\n\n## Where to look: worklets\n\n- JS to C++ surface: not the TurboModule spec. `src/specs/NativeWorkletsModule.ts` has three methods. Everything else is `globalThis.__workletsModuleProxy`, installed in `JSIWorkletsModuleProxy::toOptimizedObject` and mirrored in `src/WorkletsModule/workletsModuleProxy.ts`, `NativeWorklets.native.ts` and `src/privateGlobals.d.ts`. Adding a native method needs no codegen change.\n- Platform seam: `RuntimeBindings` (`Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h`), a struct of `std::function`s built by each platform module. A complete example of core plus both backends is `requestAnimationFrame`: `Common/cpp/worklets/AnimationFrameQueue/`, `apple/worklets/apple/AnimationFrameQueue.mm`, Kotlin `runloop/AnimationFrameQueue.kt`.\n- Runtimes: `RuntimeKind` 1 = React Native, 2 = UI, 3 = Worker (`src/runtimeKind.ts`). The UI runtime runs on the platform main thread (`AsyncQueueUI` over `UIScheduler`). Each worker runtime owns a thread (`Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp`). `runOnUISync` and `runOnRuntimeSync` run inline on the caller.\n- Scheduling order: `scheduleOnUI` batches inside `queueMicrotask` (`src/threads.native.ts`). `runOnUISync`, `Synchronizable.getBlocking`/`setBlocking`, native `getViewProp` and worker-runtime writes bypass that batch. Most ordering bugs come from this.\n- Serialization: `Common/cpp/worklets/SharedItems/` and `src/memory/`. `Serializable::undefined()` is a shared singleton.\n- Runtime setup: `Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp` creates the runtimes, decorators in `Common/cpp/worklets/WorkletRuntime/` install the globals.\n- Bundle Mode: Babel plugin option `bundleMode`, Metro helper `react-native-worklets/bundleMode`, Metro patches in `packages/react-native-worklets/bundleMode/patches/` (not published). `fabric-example` runs Bundle Mode by default. `yarn toggle-bundle-mode` (repo root) patches tracked files in `apps/` and `package.json`, so it pollutes the diff. Generated chunks live in `packages/react-native-worklets/.worklets/`. Keep `.worklets/dummy.md`.\n\n## Where to look: reanimated\n\n- JS to C++ surface: same pattern as worklets. `src/specs/NativeReanimatedModule.ts` has one method, `installTurboModule`. The real API is `globalThis.__reanimatedModuleProxy`, installed in `ReanimatedModuleProxy::toOptimizedObject` (`Common/cpp/reanimated/NativeModules/`) and typed in `src/ReanimatedModule/reanimatedModuleProxy.ts`. `src/ReanimatedModule/NativeReanimated.ts` wraps it on native, `js-reanimated/JSReanimated.ts` is the web implementation.\n- Platform seam: `Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h`, filled by `apple/reanimated/apple/ReanimatedModule.mm` and `android/src/main/cpp/reanimated/android/NativeProxy.cpp`. Frame ticks and event dispatch come from `REANodesManager.mm` (CADisplayLink) and `NodesManager.kt` (ReactChoreographer).\n- UI runtime globals used by JS worklets (`_updateProps`, `_measure`, `_dispatchCommand`, `_obtainProp`, `_notifyAboutProgress`, `_setGestureState` and others) are installed in `Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp`. The React Native runtime side is `RNRuntimeDecorator.cpp`.\n- Style update path: `useAnimatedStyle` and `useAnimatedProps` (`src/hook/`) write through `src/updateProps/updateProps.native.ts`, which calls `_updateProps` on the UI runtime. Native stores the values in `Fabric/updates/AnimatedPropsRegistry` and `UpdatesRegistryManager`, and `Fabric/ReanimatedCommitHook` applies them to the shadow tree with `cloneShadowTreeWithNewProps` (`Fabric/ShadowTreeCloner`) on every commit. `Fabric/ReanimatedMountHook` runs after mount.\n- Animated components: `src/createAnimatedComponent/` (`AnimatedComponent.native.tsx`, `JSPropsUpdater`, `InlinePropManager`, `NativeEventsManager`, `PropsFilter`). Shared values live in `src/mutables.native.ts` and `src/mutablesCommon.ts`.\n- Events: `src/WorkletEventHandler.native.ts` registers through `registerEventHandler`, native side in `Common/cpp/reanimated/Events/UIEventHandlerRegistry`.\n- Layout animations: JS in `src/layoutReanimation/` and `src/UpdateLayoutAnimations.native.ts` (`configureLayoutAnimationBatch`). Native in `Common/cpp/reanimated/LayoutAnimations/`: `LayoutAnimationsManager` holds configs, `LayoutAnimationsProxy` (default) and `LayoutAnimationsProxy_Legacy` (`USE_LEGACY_LAYOUT_ANIMATIONS_PROXY`) are `MountingOverrideDelegate`s chosen at install time through `LayoutAnimationsProxyRegistry`. Shared element transitions are in `SharedTransitions.cpp` and the `REASharedTransitionBoundary` Fabric component in `Common/NativeView/`.\n- CSS animations and transitions: JS in `src/css/` (`platform.native.ts` picks `css/native`, `platform.ts` picks `css/web`). Native in `Common/cpp/reanimated/CSS/` with `registries/` (keyframes, animations, transitions), `core/`, `interpolation/`, `easing/`, driven by `Fabric/updates/OperationsLoop`. Platform pieces in `apple/reanimated/apple/CSS` and `android/src/main/cpp/reanimated/android/CSS`.\n- Other native features: `AnimatedSensor/`, `PseudoStyles/`, keyboard in `apple/reanimated/apple/keyboardObserver` and `android/src/main/java/com/swmansion/reanimated/keyboard`.\n\n## Commands\n\n```sh\nyarn                                   # install (needed in every new worktree)\nyarn build-packages                    # builds worklets then reanimated (bob), rebuilds the Babel plugin and the Oxc plugin, fills lib/\nyarn workspace react-native-worklets build\nyarn workspace <pkg> type:check        # native + web + common-app + type tests\nyarn workspace <pkg> lint              # lint:js + lint:android + lint:apple + lint:clang-tidy (+ lint:plugin)\nyarn workspace <pkg> test              # Jest (root binary); `yarn workspace <pkg> jest <pattern>` for one file\nyarn workspace <pkg> format\nyarn lint && yarn format && yarn format:md   # repo-wide\nyarn test:scripts                      # tests for root scripts/\nyarn build-apps                        # regenerates apps/*/ios/Podfile.lock; macos-example may fail, that is known\n```\n\niOS (`apps/fabric-example/ios`): workspace `FabricExample.xcworkspace`, schemes `Debug FabricExample` and `Release FabricExample`, configurations `DebugRuntimeTests` and `ReleaseRuntimeTests`. Pod-only schemes `RNWorklets` and `RNReanimated` compile native code without the app. `RCT_USE_PREBUILT_RNCORE=0 RCT_USE_RN_DEP=0` builds React Native from source (needed for sanitizers). Re-run `pod install` after switching branches when native files were added or removed, because the podspecs glob sources.\n\nAndroid: `yarn workspace fabric-example android` (`--active-arch-only`). Worklets/Reanimated cannot be built without an app project and the React Native Gradle Plugin. Gradle does not track worklets package files for `createBundleReleaseJsAndAssets`, so pass `--rerun` after editing JS.\n\nFast C++ syntax check without a native build. Run from `packages/react-native-worklets` after `pod install` in fabric-example:\n\n```sh\nRN=../../node_modules/react-native\nHERMES=../../apps/fabric-example/ios/Pods/hermes-engine/destroot/include\nclang++ -std=c++20 -fsyntax-only -I Common/cpp -I $RN/ReactCommon/jsi -I $RN/ReactCommon \\\n  -I $RN/ReactCommon/callinvoker -I $RN/ReactCommon/react/nativemodule/core -I $HERMES <file.cpp>\n```\n\n`compile_commands.json` (for clangd and `lint:clang-tidy`) exists only after a real build. clangd errors in a fresh checkout are include-path noise.\n\n## Tests\n\n- Jest: per-package configs. Reanimated has the projects `native`, `ios`, `android` and `web`. `packages/react-native-reanimated/jest/resolver.js` forces web variants for the modules listed in `WEB_ONLY_IN_JEST` (`useAnimatedStyle`, `mutables` and others), so a green `native` project does not prove that a `.native.ts` file ran.\n- Type tests: `__typetests__/*.tst.ts` through `scripts/test-ts.sh` (tstyche).\n- Runtime tests (ReJest, on device): suites in `apps/common-app/runtime-tests/{reanimated,worklets,self-tests}`, harness in `apps/common-app/runtime-tests/ReJest`, entry points `apps/fabric-example/index.runtimeTests.*.js`. Driver:\n\n```sh\nyarn workspace fabric-example runtime-tests --library worklets --platform ios --udid <udid>\n```\n\n- `--library` takes `reanimated`, `worklets` or `self-tests`. `--platform` takes `ios` or `android`, with the device given by `--udid`, `--serial` or `--avd`. `--configuration` takes `DebugRuntimeTests` or `ReleaseRuntimeTests`. Other flags: `--only suiteA,suiteB`, `--skip-build`, `--metro-port N`, `--port N`.\n- The reporting port defaults to the Metro port plus one (8082 for Release, which embeds the bundle and runs no Metro). `--skip-build` installs whatever is already built for that configuration. `--help` lists everything. Approximate durations: self-tests under a minute, worklets about 1 minute, reanimated about 2 minutes.\n- ReJest semantics: `mockAnimationTimer()` advances 16 ms per real frame, `wait()` is real time, `waitForNotification` is the idiom for \"animation finished\", `toThrow` matches substrings, `toMatchNativeSnapshots` compares against pixel-grid-rounded native metrics with a 0.5 dp tolerance. Suites are `__DEV__`-gated inconsistently, so a `__DEV__`-only assertion can fail only in the Release nightly. Android emulators need GPU acceleration (`hw.gpu.mode=host`) or mocked-clock tests time out.\n- CI: `*-static-checks.yml`, `runtime-tests-{ios,android,nightly,sanitizers-nightly}.yml`, `{android,apple}-validation.yml`, `changelog-check.yml`, `yarn-validation.yml`, example build checks, docs build and publish, `npm-*-publish*.yml`.\n\n## Cross-cutting change checklist\n\n- New native binding: `Common/cpp`, then `android/src/main/cpp`, Kotlin (if exposed), `apple/`, then `src/` TS (`workletsModuleProxy.ts`, `privateGlobals.d.ts`, `mock.ts`).\n- Worklets public API change: grep `packages/react-native-reanimated/src`, the largest consumer.\n- Babel plugin change: run `plugin/__tests__`, rebuild `plugin/index.js`, rebuild both packages.\n- Any package change needs a new changelog fragment `packages/<pkg>/changelog/<slug>.<breaking|feature|fix|other>.md` that holds one sentence. Write the file directly, or run `yarn workspace <react-native-reanimated|react-native-worklets> changelog:add --type <type> --message '<One sentence>'`. Use single quotes, because the shell runs backticks inside double quotes. Do not write the PR link or the author (the optional lines `pr: <number>` and `by: @user1, @user2` exist for the cases that the release script cannot resolve), and do not edit `CHANGELOG.md`: `yarn changelog:squash` fills it at release. On Reanimated stable branches older than `4.7-stable`, `changelog-check` uses the old layout and is always red. Ignore it there. Worklets stable branches up to and including `worklets-0.13-stable` also use the old layout. There, add a bullet under `## Unpublished` in `packages/react-native-worklets/CHANGELOG.md` with the PR and author links instead of a fragment, and leave out changes to other packages, because `changelog-check` requires a `CHANGELOG.md` entry for each changed package. On newer stable branches, a red check means that the cherry-pick lost its fragment.\n- Docs-visible API change: update `docs/docs-reanimated` and/or `docs/docs-worklets`.\n- Do not commit changes to the playground files `apps/common-app/src/apps/reanimated/examples/EmptyExample.tsx` and `apps/common-app/src/apps/css/examples/animations/screens/testExamples/Playground.tsx`.\n- PR template: `.github/PULL_REQUEST_TEMPLATE.md` (Summary, Test plan).\n\n## Fresh checkout or worktree\n\n1. `yarn` - a new worktree has no `node_modules`.\n1. `yarn build-packages` - fills `lib/` and rebuilds both plugins. `type:check` and `circular-dependency-check` fail without it.\n1. After merging across a version bump: `rm packages/react-native-worklets/.worklets/*.js` (keep `dummy.md`) and `yarn jest --clearCache`. Stale chunks trip the plugin version check.\n1. `cd apps/fabric-example/ios && bundle exec pod install` when native files changed.\n1. Metro `--reset-cache` after toggling Bundle Mode.\n\n## Release facts\n\n- The release procedure lives in `packages/react-native-reanimated/RELEASE.md`. Agent skills for releases and cherry-picks live in `.agents/skills/` (`.claude/skills` links to it): `reanimated-release`, `worklets-release`, `reanimated-cherry-pick` and `worklets-cherry-pick`. Worklets follows the same flow from `worklets-<X.Y>-stable` branches, and its version file is `src/debug/jsVersion.ts`.\n- When the worklets stable API changes, bump `WORKLETS_STABLE_API_VERSION` in `StableApi.h` and `EXPECTED_WORKLETS_STABLE_API_VERSION` in `WorkletsApi.h` together, also on backports.\n","isInternal":false,"tokens":4368,"sizeBytes":17438},{"name":"SKILL.md","path":".agents/skills/reanimated-cherry-pick/SKILL.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/.agents/skills/reanimated-cherry-pick/SKILL.md","title":"reanimated-cherry-pick","category":"anthropic-skill","format":"markdown","content":"---\nname: reanimated-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Reanimated release branch (e.g. 4.3-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `<X.Y>-stable`\n  branch, or when preparing a Reanimated patch release.\n---\n\n# Cherry-pick PRs onto a Reanimated release branch\n\nBackports merged upstream PRs onto a release branch using one worktree per PR so the cherry-picks don't fight over the same\nworking tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional), and the tracking issue for\nthe release is updated with links.\n\nPreferably use PR stack from GitHub.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `4.3-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Reanimated X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Reanimated] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rnr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Reanimated): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rnr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rnr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Reanimated part\n\nIf the upstream PR also changes Worklets, leave the Worklets part out of the cherry-pick: restore `packages/react-native-worklets/` from the\nrelease branch. This also removes the Worklets changelog fragment. A Reanimated release branch does not release Worklets.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-worklets\n```\n\n### 3b. Keep the changelog fragment\n\nOn `4.7-stable` and newer, the upstream changelog fragment in `packages/react-native-reanimated/changelog/` comes with the\ncherry-pick. Keep it: `changelog:squash` reads it at release time. On older branches, see the changelog item of the\n\"Cross-cutting change checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nResolve conflicts.\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rnr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n","frontmatter":{"name":"reanimated-cherry-pick","description":"Cherry-pick merged PRs from main onto a Reanimated release branch (e.g. 4.3-stable) in isolated worktrees, then open corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `<X.Y>-stable` branch, or when preparing a Reanimated patch release."},"isInternal":false,"tokens":2716,"sizeBytes":10536},{"name":"SKILL.md","path":".agents/skills/reanimated-release/SKILL.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/.agents/skills/reanimated-release/SKILL.md","title":"reanimated-release","category":"anthropic-skill","format":"markdown","content":"---\nname: reanimated-release\ndescription: Prepare a Reanimated patch release from a <X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Reanimated X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Reanimated patch release\n\nCuts a release of `react-native-reanimated` from a stable branch (e.g. `4.3-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Reanimated): X.Y.Z` PR, and a dry-run of the `npm reanimated publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10797 (`release(Reanimated): 4.7.1`, with the changelog squash) and PR #10427 (`release(Reanimated): 4.5.5`, before the changelog fragments).\n\n## Inputs\n\n- **Version** — e.g. `4.7.2`. Infer the branch from it: `4.7-stable`.\n- **Release branch** — `<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Reanimated X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rnr-release-<version>` (sibling of the repo; `rnr` because it's a Reanimated release) |\n| Branch | `@<you>/reanimated/release-<version>` |\n| Commit + PR title | `release(Reanimated): <version>` |\n| PR body | `## Summary` / `Releasing Reanimated <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10797, #10427) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-reanimated/package.json` (version)\n- `packages/react-native-reanimated/src/platform-specific/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNReanimated pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-reanimated/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-reanimated/changelog/` on `4.7-stable` and newer.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/reanimated/release-<version>' \\\n  ../rnr-release-<version> origin/<release-branch>\ncd ../rnr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-reanimated set-version --version <version>\n```\n\nUpdates `package.json` and `src/platform-specific/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn `4.7-stable` and newer, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-reanimated changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\nBranches older than `4.7-stable` have no fragments. `4.5-stable` and older have no `CHANGELOG.md`, so skip this step there. On\n`4.6-stable`, move the `## Unpublished` entries in `packages/react-native-reanimated/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Reanimated and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Reanimated minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNReanimated (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Reanimated): <version>'\ngit push -u origin '@<you>/reanimated/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10797 / #10427 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/reanimated/release-<version>' \\\n  --title 'release(Reanimated): <version>' \\\n  --body '## Summary\n\nReleasing Reanimated <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm reanimated publish' --ref '@<you>/reanimated/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm reanimated publish' \\\n  --branch '@<you>/reanimated/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._REANIMATED_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/reanimated/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm reanimated publish' --ref <X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-reanimated@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Reanimated - X.Y.Z`, git tag `X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin <X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create <version> --draft --target \"$sha\" \\\n  --title 'Reanimated - <version>' \\\n  --generate-notes --notes-start-tag <previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag <previous-version>` reproduces the `## What's Changed` list plus the `<previous-version>...<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Reanimated - 4.5.5` is not the latest release).\n- Created with `--draft`; the `<version>` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-reanimated@<version>            # downloads the published .tgz\ngh release upload <version> react-native-reanimated-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rnr-release-<version>\ngit branch -D '@<you>/reanimated/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref <X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `<X.Y>-stable` branch.\n","frontmatter":{"name":"reanimated-release","description":"Prepare a Reanimated patch release from a <X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Reanimated X.Y.Z, or after a cherry-pick thread is fully merged."},"isInternal":false,"tokens":3456,"sizeBytes":13580},{"name":"SKILL.md","path":".agents/skills/worklets-cherry-pick/SKILL.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/.agents/skills/worklets-cherry-pick/SKILL.md","title":"worklets-cherry-pick","category":"anthropic-skill","format":"markdown","content":"---\nname: worklets-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Worklets release branch (e.g. worklets-0.13-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a\n  `worklets-<X.Y>-stable` branch, or when preparing a Worklets patch release.\n---\n\n# Cherry-pick PRs onto a Worklets release branch\n\nBackports merged upstream PRs onto a release branch (e.g. `worklets-0.13-stable`) using one worktree per PR so the cherry-picks\ndon't fight over the same working tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional),\nand the tracking issue for the release is updated with links.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `worklets-0.13-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Worklets X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Worklets] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rwr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Worklets): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rwr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rwr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Worklets part\n\nIf the upstream PR also changes Reanimated, leave the Reanimated part out of the cherry-pick: restore `packages/react-native-reanimated/` from the\nrelease branch. This also removes the Reanimated changelog fragment. A Worklets release branch does not release Reanimated.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-reanimated\n```\n\n### 3b. Keep the changelog entry\n\nOn stable branches newer than `worklets-0.13-stable`, the upstream changelog fragment in\n`packages/react-native-worklets/changelog/` comes with the cherry-pick. Keep it. On `worklets-0.13-stable` and older, the\nbranch uses the old layout: delete the fragment and add a bullet under `## Unpublished` in\n`packages/react-native-worklets/CHANGELOG.md` with the PR and author links. See the changelog item of the \"Cross-cutting\nchange checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nCommon one on 0.9-stable: `scripts/patches/resolutions.patch` doesn't exist on the release branch (it was introduced by \"enable\nBundle Mode by default\" which never landed on 0.9). Drop the hunk:\n\n```bash\ngit rm scripts/patches/resolutions.patch\n```\n\nGeneral rule: files/hunks that reference infrastructure absent from the release branch should be dropped, not force-merged. When\nin doubt, check `git log --all -- <path>` to see if the file was ever on the release branch.\n\n**Not every conflict is a drop.** Stable branches often retain code that `main` has since refactored away (an inlined visitor,\nan extra pass field, an import that moved), so a backport can conflict _additively_ — the incoming hunk and the branch's own\ncode both belong. Resolve those by keeping **both** sides, not by dropping either. Seen backporting #10032 onto\n0.10/0.11-stable: the `globals.ts` import block and a `WorkletsPluginPass` field each conflicted additively (the branch still\nhad `autoworkletizationPlugin` + `@babel/*` type imports that `main` had moved out).\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rwr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n","frontmatter":{"name":"worklets-cherry-pick","description":"Cherry-pick merged PRs from main onto a Worklets release branch (e.g. worklets-0.13-stable) in isolated worktrees, then open corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `worklets-<X.Y>-stable` branch, or when preparing a Worklets patch release."},"isInternal":false,"tokens":3035,"sizeBytes":11748},{"name":"SKILL.md","path":".agents/skills/worklets-release/SKILL.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/.agents/skills/worklets-release/SKILL.md","title":"worklets-release","category":"anthropic-skill","format":"markdown","content":"---\nname: worklets-release\ndescription: Prepare a Worklets patch release from a worklets-<X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Worklets X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Worklets patch release\n\nCuts a release of `react-native-worklets` from a stable branch (e.g. `worklets-0.13-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Worklets): X.Y.Z` PR, and a dry-run of the `npm worklets publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10598 (`release(Worklets): 0.13.0`) and PR #10469 (`release(Worklets): 0.12.2`).\n\n## Inputs\n\n- **Version** — e.g. `0.13.1`. Infer the branch from it: `worklets-0.13-stable`.\n- **Release branch** — `worklets-<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Worklets X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rwr-release-<version>` (sibling of the repo; `rwr` because it's a Worklets release) |\n| Branch | `@<you>/worklets/release-<version>` |\n| Commit + PR title | `release(Worklets): <version>` |\n| PR body | `## Summary` / `Releasing Worklets <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10598, #10469) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-worklets/package.json` (version)\n- `packages/react-native-worklets/src/debug/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNWorklets pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-worklets/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-worklets/changelog/` on stable branches newer than `worklets-0.13-stable`.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/worklets/release-<version>' \\\n  ../rwr-release-<version> origin/<release-branch>\ncd ../rwr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-worklets set-version --version <version>\n```\n\nUpdates `package.json` and `src/debug/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn stable branches newer than `worklets-0.13-stable`, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-worklets changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\n`worklets-0.13-stable` and older have no fragments. There, move the `## Unpublished` entries in `packages/react-native-worklets/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Worklets and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Worklets minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNWorklets (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Worklets): <version>'\ngit push -u origin '@<you>/worklets/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10598 / #10469 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/worklets/release-<version>' \\\n  --title 'release(Worklets): <version>' \\\n  --body '## Summary\n\nReleasing Worklets <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm worklets publish' --ref '@<you>/worklets/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm worklets publish' \\\n  --branch '@<you>/worklets/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._WORKLETS_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/worklets/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm worklets publish' --ref worklets-<X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-worklets@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Worklets - X.Y.Z`, git tag `worklets-X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin worklets-<X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/worklets-<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create worklets-<version> --draft --target \"$sha\" \\\n  --title 'Worklets - <version>' \\\n  --generate-notes --notes-start-tag worklets-<previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag worklets-<prev>` reproduces the `## What's Changed` list plus the `worklets-<prev>...worklets-<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Worklets - 0.12.2` is not the latest release).\n- Created with `--draft`; the `worklets-X.Y.Z` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-worklets@<version>            # downloads the published .tgz\ngh release upload worklets-<version> react-native-worklets-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rwr-release-<version>\ngit branch -D '@<you>/worklets/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref worklets-<X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `worklets-<X.Y>-stable` branch.\n","frontmatter":{"name":"worklets-release","description":"Prepare a Worklets patch release from a worklets-<X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Worklets X.Y.Z, or after a cherry-pick thread is fully merged."},"isInternal":false,"tokens":3474,"sizeBytes":13510},{"name":"tsconfig.json","path":"packages/eslint-plugin-reanimated/__tests__/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/__tests__/tsconfig.json","title":"__tests__ Skill","category":"anthropic-skill","format":"json","content":"# __tests__ Skill\n\nPath: `packages/eslint-plugin-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/__tests__/tsconfig.json)","tokens":300,"sizeBytes":253},{"name":".oxlintrc.json","path":"packages/eslint-plugin-reanimated/.oxlintrc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/.oxlintrc.json","title":"Eslint-plugin-reanimated Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"types/**\"],\n  \"rules\": {\n    \"no-bitwise\": \"error\"\n  }\n}\n","frontmatter":{"$schema":"../../node_modules/oxlint/configuration_schema.json","extends":["../../.oxlintrc.json"],"env":{"builtin":true,"es2026":true,"node":true,"commonjs":true,"jest":true},"ignorePatterns":["types/**"],"rules":{"no-bitwise":"error"}},"isInternal":false,"tokens":94,"sizeBytes":302},{"name":"package.json","path":"packages/eslint-plugin-reanimated/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/package.json","title":"eslint-plugin-reanimated","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"eslint-plugin-reanimated\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"types\": \"types/index.d.ts\",\n  \"scripts\": {\n    \"test\": \"yarn run --top-level jest\",\n    \"bundle\": \"yarn esbuild ./public/index.js --external:espree --external:@typescript-eslint --platform=node --bundle --outfile=./index.js\",\n    \"build\": \"yarn tsc && yarn bundle && rm -rf ./public/* && yarn format\",\n    \"lint\": \"yarn run --top-level oxlint --max-warnings=0 src --ignore-pattern 'types/**'\",\n    \"format\": \"yarn run --top-level oxfmt .\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"24.0.14\",\n    \"@typescript-eslint/parser\": \"8.62.1\",\n    \"@typescript-eslint/rule-tester\": \"8.62.1\",\n    \"@typescript-eslint/utils\": \"8.62.1\",\n    \"esbuild\": \"0.25.10\",\n    \"eslint\": \"9.37.0\",\n    \"ts-jest\": \"29.4.12\",\n    \"typescript\": \"5.9.3\"\n  }\n}\n","frontmatter":{"name":"eslint-plugin-reanimated","version":"0.0.0","private":true,"license":"MIT","types":"types/index.d.ts","scripts":{"test":"yarn run --top-level jest","bundle":"yarn esbuild ./public/index.js --external:espree --external:@typescript-eslint --platform=node --bundle --outfile=./index.js","build":"yarn tsc && yarn bundle && rm -rf ./public/* && yarn format","lint":"yarn run --top-level oxlint --max-warnings=0 src --ignore-pattern 'types/**'","format":"yarn run --top-level oxfmt ."},"devDependencies":{"@types/node":"24.0.14","@typescript-eslint/parser":"8.62.1","@typescript-eslint/rule-tester":"8.62.1","@typescript-eslint/utils":"8.62.1","esbuild":"0.25.10","eslint":"9.37.0","ts-jest":"29.4.12","typescript":"5.9.3"}},"isInternal":false,"tokens":275,"sizeBytes":842},{"name":"tsconfig.json","path":"packages/eslint-plugin-reanimated/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/tsconfig.json","title":"Eslint-plugin-reanimated Skill","category":"anthropic-skill","format":"json","content":"{\n  \"compilerOptions\": {\n    \"preserveSymlinks\": true,\n    \"jsx\": \"react-native\",\n    \"skipLibCheck\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"moduleResolution\": \"bundler\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"outDir\": \"public\",\n    \"rootDir\": \"src\",\n    \"declaration\": true,\n    \"declarationDir\": \"types\"\n  },\n  \"include\": [\"src\"]\n}\n","frontmatter":{"compilerOptions":{"preserveSymlinks":true,"jsx":"react-native","skipLibCheck":true,"allowSyntheticDefaultImports":true,"moduleResolution":"bundler","module":"esnext","strict":true,"forceConsistentCasingInFileNames":true,"resolveJsonModule":true,"outDir":"public","rootDir":"src","declaration":true,"declarationDir":"types"},"include":["src"]},"isInternal":false,"tokens":126,"sizeBytes":435},{"name":"tsconfig.json","path":"packages/react-native-reanimated/__tests__/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__tests__/tsconfig.json","title":"__tests__ Skill","category":"anthropic-skill","format":"json","content":"# __tests__ Skill\n\nPath: `packages/react-native-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__tests__/tsconfig.json)","tokens":300,"sizeBytes":251},{"name":"tsconfig.json","path":"packages/react-native-reanimated/__typetests__/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.json","title":"__typetests__ Skill","category":"anthropic-skill","format":"json","content":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.json)","tokens":300,"sizeBytes":263},{"name":"tsconfig.web.json","path":"packages/react-native-reanimated/__typetests__/tsconfig.web.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.web.json","title":"__typetests__ Skill","category":"anthropic-skill","format":"json","content":"# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.web.json)","tokens":300,"sizeBytes":271},{"name":".oxlintrc.json","path":"packages/react-native-reanimated/.oxlintrc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/.oxlintrc.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"jsPlugins\": [\"eslint-plugin-reanimated\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"**/lib/**\", \"**/android/**\", \"**/apple/**\"],\n  \"rules\": {\n    \"reanimated/use-reanimated-error\": \"error\",\n    \"reanimated/use-logger\": \"error\",\n    \"reanimated/no-logger-message-prefix\": \"error\",\n    \"reanimated/use-global-this\": \"error\",\n    \"no-unused-expressions\": \"error\"\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"**/*.ts\", \"**/*.tsx\"],\n      \"rules\": {\n        \"no-empty-function\": \"error\",\n        \"typescript/no-explicit-any\": \"error\",\n        \"n/no-unpublished-import\": [\n          \"error\",\n          {\n            \"ignoreTypeImport\": true,\n            \"ignorePrivate\": true\n          }\n        ]\n      }\n    },\n    {\n      \"files\": [\"**/*.test.ts\", \"**/*.test.tsx\"],\n      \"rules\": {\n        \"typescript/unbound-method\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"src/**/*.ts\", \"src/**/*.tsx\"],\n      \"rules\": {\n        \"eslint-core/strict\": [\"error\", \"global\"]\n      }\n    }\n  ]\n}\n","frontmatter":{"$schema":"../../node_modules/oxlint/configuration_schema.json","extends":["../../.oxlintrc.json"],"jsPlugins":["eslint-plugin-reanimated"],"env":{"builtin":true,"es2026":true,"node":true,"commonjs":true,"jest":true},"ignorePatterns":["**/lib/**","**/android/**","**/apple/**"],"rules":{"reanimated/use-reanimated-error":"error","reanimated/use-logger":"error","reanimated/no-logger-message-prefix":"error","reanimated/use-global-this":"error","no-unused-expressions":"error"},"overrides":[{"files":["**/*.ts","**/*.tsx"],"rules":{"no-empty-function":"error","typescript/no-explicit-any":"error","n/no-unpublished-import":["error",{"ignoreTypeImport":true,"ignorePrivate":true}]}},{"files":["**/*.test.ts","**/*.test.tsx"],"rules":{"typescript/unbound-method":"off"}},{"files":["src/**/*.ts","src/**/*.tsx"],"rules":{"eslint-core/strict":["error","global"]}}]},"isInternal":false,"tokens":325,"sizeBytes":1185},{"name":"CHANGELOG.md","path":"packages/react-native-reanimated/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/CHANGELOG.md","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog\n\n## 4.7.0 — 2026-09-18\n\n### 🛠 Breaking changes\n\n- `AnimatedRefOnUI` is now a `ShareableHost<ShadowNodeWrapper | null>` read with `.value` instead of a callable, and `AnimatedRefOnJS` was renamed to `AnimatedRefOnRN`. `measure` on an unmounted ref now returns `null` and warns instead of calling into `_measure`. ([#10413](https://github.com/software-mansion/react-native-reanimated/pull/10413) by [@tjzel](https://github.com/tjzel))\n- Remove the `USE_SYNCHRONIZABLE_FOR_MUTABLES` feature flag. Mutables always use Synchronizable state now. ([#10298](https://github.com/software-mansion/react-native-reanimated/pull/10298) by [@tjzel](https://github.com/tjzel))\n- Make the light-tree layout animations proxy the default. Enable the new `USE_LEGACY_LAYOUT_ANIMATIONS_PROXY` feature flag to roll back to the previous implementation. The legacy proxy does not support Shared Element Transitions, so `ENABLE_SHARED_ELEMENT_TRANSITIONS` must be off when you enable it. ([#10423](https://github.com/software-mansion/react-native-reanimated/pull/10423) by [@pawicao](https://github.com/pawicao))\n\n### 🎉 New features\n\n- Run `shadowColor` CSS transitions on the Android platform animation path on Android 9 and newer. ([#10547](https://github.com/software-mansion/react-native-reanimated/pull/10547) by [@MatiPl01](https://github.com/MatiPl01))\n- Run CSS transitions for `backgroundColor`, `borderColor`, and numeric `borderRadius` on the Android platform animation path. ([#10310](https://github.com/software-mansion/react-native-reanimated/pull/10310) by [@MatiPl01](https://github.com/MatiPl01))\n- Add `backgroundImage` support to animated styles. Linear and radial gradients are accepted as objects or CSS strings and processed on the UI thread. ([#10486](https://github.com/software-mansion/react-native-reanimated/pull/10486) by [@tshmieldev](https://github.com/tshmieldev))\n- Add iOS Swift Package Manager support via `Package.swift` and SPM integration metadata in `react-native.config.js`, with a dependency on `RNWorklets`. ([#10472](https://github.com/software-mansion/react-native-reanimated/pull/10472) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Add an optional `onLog` callback as a second argument to `configureReanimatedLogger`, invoked for every warning and error that passes the `level` and `strict` filters, in addition to the default console output. On native, logs raised on the UI runtime are delivered asynchronously on the React Native Runtime. ([#10482](https://github.com/software-mansion/react-native-reanimated/pull/10482) by [@douglowder](https://github.com/douglowder))\n\n### 🐛 Bug fixes\n\n- Fix a property removed from `transitionProperty` while it transitions to or from `undefined` (its style key was just removed or added) finishing the transition instead of snapping to the committed value. ([#10613](https://github.com/software-mansion/react-native-reanimated/pull/10613) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix a property removed from `transitionProperty` mid-transition reverting to the interpolator default (for example `borderRadius: 0`) instead of the committed style on Android. ([#10614](https://github.com/software-mansion/react-native-reanimated/pull/10614) by [@MatiPl01](https://github.com/MatiPl01))\n- Reject a `backgroundImage` gradient given as an object when a transition hint is not placed between two color stops, and reject gradients with fewer than two color stops in both the object and the string form; React Native crashes on iOS or Android when such values reach the renderer. ([#10589](https://github.com/software-mansion/react-native-reanimated/pull/10589) by [@matipl01](https://github.com/matipl01))\n- Fix a crash in the light tree based Layout Animations proxy when a view is flattened while one of its children is removed in the same commit. ([#10628](https://github.com/software-mansion/react-native-reanimated/pull/10628) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Remove `zIndex` from the synchronous props. No platform applies `zIndex` to a mounted view, so with `IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS` on, an animated style with only `zIndex` and `elevation` never reached the shadow tree commit and the views did not reorder until a later React render. ([#10602](https://github.com/software-mansion/react-native-reanimated/pull/10602) by [@pawicao](https://github.com/pawicao))\n- Stop passing `forwardedRef` and `nativeID` to the wrapped component on web, which React Strict DOM reported as invalid props. ([#10605](https://github.com/software-mansion/react-native-reanimated/pull/10605) by [@tjzel](https://github.com/tjzel))\n- Preserve Android color and other prop updates when hiding and restoring shared transition views. ([#10601](https://github.com/software-mansion/react-native-reanimated/pull/10601) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Prevent Shared Transition Boundaries from intercepting touches intended for sibling views while keeping their children interactive. ([#10600](https://github.com/software-mansion/react-native-reanimated/pull/10600) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Skip exiting animations in the light tree based Layout Animations proxy when a surface is stopped, so the empty-root transaction removes the views at once instead of starting animations on a dead surface and leaving their component views registered on iOS. ([#10586](https://github.com/software-mansion/react-native-reanimated/pull/10586) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Resolve a percent translate of a shared view or of its ancestor with the size of the view that owns it in shared element transitions, so the transition copy no longer starts at a wrong position and `translateX: '50%'` no longer animates as 50 points. ([#10617](https://github.com/software-mansion/react-native-reanimated/pull/10617) by [@pawicao](https://github.com/pawicao))\n- Start a shared element transition from the frame of a running layout animation on the source view. ([#10556](https://github.com/software-mansion/react-native-reanimated/pull/10556) by [@pawicao](https://github.com/pawicao))\n- Track synchronous prop updates in the layout animations bookkeeping behind the `TRACK_SYNCHRONOUS_PROPS_IN_LAYOUT_ANIMATIONS` dynamic feature flag, so shared element transitions and layout animations start from the current props of a view that moved through the synchronous path; warn in development when a transition or layout animation starts on such a view with the flag off. A queued or running layout animation always receives the synchronous props, so a prop changed during the animation no longer blinks back on the next frame. The synchronous-update feature flags now work together with `ENABLE_SHARED_ELEMENT_TRANSITIONS`. ([#10522](https://github.com/software-mansion/react-native-reanimated/pull/10522) by [@pawicao](https://github.com/pawicao))\n- Carry a view's current registry values in the Reanimated commits that change its layout props, so iOS no longer writes a stale transform back to a view that moved through the synchronous path. ([#10416](https://github.com/software-mansion/react-native-reanimated/pull/10416) by [@pawicao](https://github.com/pawicao))\n- Warn only once per caller when dependencies are passed to native hooks. ([#10562](https://github.com/software-mansion/react-native-reanimated/pull/10562) by [@tshmieldev](https://github.com/tshmieldev))\n- Release the shadow tree of a stopped surface; the last mounted root of every surface was kept forever, so apps that start a surface per screen leaked the whole tree of every closed screen. ([#10579](https://github.com/software-mansion/react-native-reanimated/pull/10579) by [@MatiPl01](https://github.com/MatiPl01))\n- Keep `borderWidth` CSS transitions on the animation loop on iOS, so the children move with the border and no stray black border is drawn. ([#10569](https://github.com/software-mansion/react-native-reanimated/pull/10569) by [@MatiPl01](https://github.com/MatiPl01))\n- Resume a `shadowOffset` CSS transition from its in-flight value when it moves from Core Animation to the C++ loop, instead of restarting from the previously committed offset. ([#10564](https://github.com/software-mansion/react-native-reanimated/pull/10564) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix CSS platform transitions ignoring slow animations: on iOS they snapped to the end state under the Simulator's Slow Animations, and on Android they played at full speed under the dev-menu toggle. ([#10548](https://github.com/software-mansion/react-native-reanimated/pull/10548) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix the Release Android build failing on an unused variable in `SharedTransitions.cpp`, and the `backgroundImage` style types failing to compile with React Native 0.85, 0.86 and nightly. ([#10558](https://github.com/software-mansion/react-native-reanimated/pull/10558) by [@tjzel](https://github.com/tjzel))\n- Keep a delayed CSS transition at its start value when it is interrupted or reversed before its delay ends; the platform path used to evaluate the easing at progress 0, which is the end value for `step-start`. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Restore the underlying native style when a running CSS animation is removed or its `animationName` becomes `none`. ([#10528](https://github.com/software-mansion/react-native-reanimated/pull/10528) by [@MatiPl01](https://github.com/MatiPl01))\n- Fixed a crash after animations settled when `backgroundImage` was animated with `useAnimatedStyle`. The settled props sync now converts the native gradient format back before passing it to React. ([#10542](https://github.com/software-mansion/react-native-reanimated/pull/10542) by [@tshmieldev](https://github.com/tshmieldev))\n- Include the React Native version macros through `<React/Utils.h>` when it is available, so `cxxreact/ReactNativeVersion.h` deprecated on React Native `main` no longer breaks the build. ([#10536](https://github.com/software-mansion/react-native-reanimated/pull/10536) by [@tshmieldev](https://github.com/tshmieldev))\n- Fix a short `animationDelay` list on web applying no delay to the animations past its end instead of repeating, the way CSS does and the native path already did. ([#10442](https://github.com/software-mansion/react-native-reanimated/pull/10442) by [@dennytosp](https://github.com/dennytosp))\n- Fix padded string style values throwing, retaining their padding or parsing incorrectly, including SVG gradient stop offsets such as `'50% '`. ([#10422](https://github.com/software-mansion/react-native-reanimated/pull/10422) by [@matipl01](https://github.com/matipl01))\n- Fix `filter` strings using the CSS `hue-rotate()` and `drop-shadow()` spellings being discarded together with every other filter in the same declaration. ([#10383](https://github.com/software-mansion/react-native-reanimated/pull/10383) by [@dennytosp](https://github.com/dennytosp))\n- Fix single-argument `translate()` and `skew()` in transform strings repeating the argument on the Y axis instead of leaving it at zero, so `translate(100px)` no longer also moves the element down. ([#10385](https://github.com/software-mansion/react-native-reanimated/pull/10385) by [@dennytosp](https://github.com/dennytosp))\n- Fix the Metro configuration type import to use the public package export. ([#10454](https://github.com/software-mansion/react-native-reanimated/pull/10454) by [@sneakykiwi](https://github.com/sneakykiwi))\n- Skip the Android mounted-tag correction in Layout Animations when React Native's `enableMountingCoordinatorPullModelAndroid` feature flag is on, since the pull model already guarantees that updates can't outrun a view's first mount. ([#10481](https://github.com/software-mansion/react-native-reanimated/pull/10481) by [@piaskowyk](https://github.com/piaskowyk))\n- Fix `Keyframe` easings on web being dropped or applied to the wrong keyframe when the definitions use the `from`/`to` aliases or fractional offsets. ([#10386](https://github.com/software-mansion/react-native-reanimated/pull/10386) by [@dennytosp](https://github.com/dennytosp))\n- Fix `getViewProp` and the runtime-tests prop snapshotting crashing (segfault on style props, unhandled error on layout props) when the view is no longer mounted. ([#10443](https://github.com/software-mansion/react-native-reanimated/pull/10443) by [@tjzel](https://github.com/tjzel))\n- Ship the Jest resolver (`react-native-reanimated/jest/resolver`) in the npm package, so consumer projects can run Jest against Reanimated: the modules that require a real native module are resolved to their web implementations. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Fix mounting an animated component with attached event handlers (e.g. `useAnimatedScrollHandler`) under Jest crashing with `[Reanimated] registerEventHandler is not available in JSReanimated.` - `WorkletEventHandler` now resolves to its web variant in Jest. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Reset `IN_STYLE_UPDATER` even when an initial style updater throws, so a single updater error no longer leaves all animations returning raw values until reload. ([#10445](https://github.com/software-mansion/react-native-reanimated/pull/10445) by [@alexey-khatskelevich](https://github.com/alexey-khatskelevich))\n- Fix `./gradlew app:build` failing on `:lintAnalyzeDebug` with a K2 UAST crash on `.gradle.kts` build scripts - all lint tasks are now skipped, not only `lintVital*`. ([#10448](https://github.com/software-mansion/react-native-reanimated/pull/10448) by [@tshmieldev](https://github.com/tshmieldev))\n- Treat `animationName: []` as no animation, so the view is detached instead of running its previous animation forever. ([#10432](https://github.com/software-mansion/react-native-reanimated/pull/10432) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix `SequencedTransition` on web scaling the wrong axis in its midpoint keyframe, so the axis that has already finished no longer collapses while the other one waits. ([#10384](https://github.com/software-mansion/react-native-reanimated/pull/10384) by [@dennytosp](https://github.com/dennytosp))\n- Fix native gestures (e.g. scrolling) not working inside `SharedTransitionBoundary` on Android by growing the boundary's zero-sized frame to cover its children. ([#10430](https://github.com/software-mansion/react-native-reanimated/pull/10430) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix `normalizeColor` resolving `Object.prototype` members such as `'constructor'` and `'toString'` as color names and returning a function instead of `null`. ([#10387](https://github.com/software-mansion/react-native-reanimated/pull/10387) by [@dennytosp](https://github.com/dennytosp))\n- Fix `transform` and `transformOrigin` strings padded with whitespace throwing instead of parsing. ([#10388](https://github.com/software-mansion/react-native-reanimated/pull/10388) by [@dennytosp](https://github.com/dennytosp))\n- Fix `linear()` easing not clamping an out-of-order input progress value on its first or last control point, which left the control points non-monotonic and the resulting curve wrong. ([#10380](https://github.com/software-mansion/react-native-reanimated/pull/10380) by [@dennytosp](https://github.com/dennytosp))\n- Fix fractional millisecond CSS time values, which were truncated (`16.67ms` became `16`) or read as `NaN` when written without a leading zero (`.5ms`). ([#10381](https://github.com/software-mansion/react-native-reanimated/pull/10381) by [@dennytosp](https://github.com/dennytosp))\n- Fix animated styles on sticky headers throwing an immutable-object mutation error in development. ([#10389](https://github.com/software-mansion/react-native-reanimated/pull/10389) by [@ngocdevv](https://github.com/ngocdevv))\n- Fix shared element transitions never running on Android for npm installs by publishing `react-native.config.js`, which registers the Shared Transition Boundary component descriptor for autolinking. ([#10375](https://github.com/software-mansion/react-native-reanimated/pull/10375) by [@dennytosp](https://github.com/dennytosp))\n- Keep exiting views at their position in the host tree, so they no longer draw above later siblings. ([#10392](https://github.com/software-mansion/react-native-reanimated/pull/10392) by [@pawicao](https://github.com/pawicao))\n- Apply Layout Animation config batches consistently at the mounting pull boundary. ([#10373](https://github.com/software-mansion/react-native-reanimated/pull/10373) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Retarget running and pending Layout Animations when their config changes and finish them at the mounted frame, so reordered list items no longer disappear or stick to a stale position. Preserve props-only updates, including during reordering, without restarting transitions. ([#10537](https://github.com/software-mansion/react-native-reanimated/pull/10537) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep running Layout Animations attached to views that move between parents by converting their frames through the light tree. ([#10538](https://github.com/software-mansion/react-native-reanimated/pull/10538) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Experimental Layout Animations cleanup ordering on Android. ([#10372](https://github.com/software-mansion/react-native-reanimated/pull/10372) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix interactive Shared Transitions cancellation and progress lifecycle ordering. ([#10371](https://github.com/software-mansion/react-native-reanimated/pull/10371) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Shared Transitions cleanup, restoration, and positioning in native-stack screens and modals. ([#10370](https://github.com/software-mansion/react-native-reanimated/pull/10370) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations replacement and completion ordering by centralizing native lifecycle operations. ([#10369](https://github.com/software-mansion/react-native-reanimated/pull/10369) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations state leaking between Fabric surfaces by using one proxy per surface. ([#10368](https://github.com/software-mansion/react-native-reanimated/pull/10368) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep views hidden for the whole shared element transition, so a React update in the same commit no longer shows them again mid-transition. ([#10425](https://github.com/software-mansion/react-native-reanimated/pull/10425) by [@pawicao](https://github.com/pawicao))\n\n### 💡 Others\n\n- Patch `react-native-svg` in the example apps so its podspec targets iOS and tvOS 15.1, which Xcode 27 requires. ([#10607](https://github.com/software-mansion/react-native-reanimated/pull/10607) by [@tjzel](https://github.com/tjzel))\n- Added support for React Native 0.88. ([#10582](https://github.com/software-mansion/react-native-reanimated/pull/10582) by [@pawicao](https://github.com/pawicao))\n- Merge the accumulated Android raw props of a view in the layout animations light tree only when an animation, a shared element transition or a synchronous update reads that view, instead of on every commit. ([#10570](https://github.com/software-mansion/react-native-reanimated/pull/10570) by [@pawicao](https://github.com/pawicao))\n- Reduce Android layout animation overhead by skipping the raw props merge and props clone in the light tree when an Update reuses the same props pointer, and by moving the merged raw props instead of copying them. ([#10566](https://github.com/software-mansion/react-native-reanimated/pull/10566) by [@pawicao](https://github.com/pawicao))\n- Deduplicate the native CSS transition state machine across Android and iOS. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Move the `IOS_CSS_CORE_ANIMATION` and `ANDROID_CSS_PLATFORM_TRANSITIONS` checks out of the shared C++ code: each platform now supplies its native CSS transition backend under its own flag. No behavior change. ([#10546](https://github.com/software-mansion/react-native-reanimated/pull/10546) by [@MatiPl01](https://github.com/MatiPl01))\n- Added Jest and runtime tests for the settled props unprocessors (colors, `boxShadow`, `backgroundImage`). `unprocessProps` is now exported. ([#10545](https://github.com/software-mansion/react-native-reanimated/pull/10545) by [@tshmieldev](https://github.com/tshmieldev))\n- Remove three duplicated implementations: `CSSBoxShadow` and `CSSDropShadow` share their field validation, `PropertyInterpolator` provides the common `getStyleValue`, and the nodes manager and keyboard observer create their display links through one `REAMakeDisplayLink` helper. ([#10357](https://github.com/software-mansion/react-native-reanimated/pull/10357) by [@MatiPl01](https://github.com/MatiPl01))\n- Throw a descriptive error on iOS when the native module cannot be installed because React Native has no active surface during a reload race, instead of silently installing a dummy module proxy. The `WorkletsModule` registry check that guarded the same path is removed. ([#10508](https://github.com/software-mansion/react-native-reanimated/pull/10508) by [@tjzel](https://github.com/tjzel))\n- Validate the iOS Swift Package Manager integration in CI: the nightly compatibility check now builds the app via SPM on React Native >= 0.87. ([#10511](https://github.com/software-mansion/react-native-reanimated/pull/10511) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Support worklets without closure metadata in handler dependency comparisons and Jest helpers. ([#10517](https://github.com/software-mansion/react-native-reanimated/pull/10517) by [@tshmieldev](https://github.com/tshmieldev))\n- Update hooks for array-based worklet closures and use explicit control points for web Bezier easings instead of inspecting closures. ([#10506](https://github.com/software-mansion/react-native-reanimated/pull/10506) by [@tshmieldev](https://github.com/tshmieldev))\n- Initialize the Layout Animations manager lazily to avoid serializing its worklets during startup. ([#10466](https://github.com/software-mansion/react-native-reanimated/pull/10466) by [@tshmieldev](https://github.com/tshmieldev))\n- Add `fontVariationSettings` to the style properties config, so the package type-checks against React Native 0.88 ([#10239](https://github.com/software-mansion/react-native-reanimated/pull/10239) by [@tjzel](https://github.com/tjzel))\n- Add `backgroundPosition`, `backgroundRepeat` and `backgroundSize` to the style properties config, so the package type-checks against React Native 0.88. ([#10354](https://github.com/software-mansion/react-native-reanimated/pull/10354) by [@tjzel](https://github.com/tjzel))\n- Migrate Mutable's dirty flag to Fixed Synchronizable for better performance. ([#10272](https://github.com/software-mansion/react-native-reanimated/pull/10272) by [@tjzel](https://github.com/tjzel))\n","isInternal":false,"tokens":5800,"sizeBytes":23466},{"name":"activity-entering-reactivation.fix.md","path":"packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md)","tokens":300,"sizeBytes":299},{"name":"android-box-shadow-blur-radius.fix.md","path":"packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md)","tokens":300,"sizeBytes":299},{"name":"android-entering-dropped-frame-opacity.fix.md","path":"packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md)","tokens":300,"sizeBytes":315},{"name":"android-entering-props-diff-opacity.fix.md","path":"packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md)","tokens":300,"sizeBytes":309},{"name":"android-hold-frames-until-batch-queued.fix.md","path":"packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md)","tokens":300,"sizeBytes":315},{"name":"android-nodes-manager-teardown-race.fix.md","path":"packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md)","tokens":300,"sizeBytes":309},{"name":"android-pull-model-legacy-dead-nodes.fix.md","path":"packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md)","tokens":300,"sizeBytes":311},{"name":"android-pull-model-structural-flush.fix.md","path":"packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md)","tokens":300,"sizeBytes":309},{"name":"android-recreated-withheld-view.fix.md","path":"packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md)","tokens":300,"sizeBytes":301},{"name":"android-sensor-mislabeled-event-crash.fix.md","path":"packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md)","tokens":300,"sizeBytes":313},{"name":"android-stale-synchronous-props.fix.md","path":"packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md)","tokens":300,"sizeBytes":301},{"name":"android-unparseable-animation-scale.fix.md","path":"packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md)","tokens":300,"sizeBytes":309},{"name":"android-update-before-exiting-removal.fix.md","path":"packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md)","tokens":300,"sizeBytes":313},{"name":"animated-props-registry-late-updates.fix.md","path":"packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md)","tokens":300,"sizeBytes":311},{"name":"animated-text-metrics-rounding.fix.md","path":"packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md)","tokens":300,"sizeBytes":299},{"name":"animated-text.feature.md","path":"packages/react-native-reanimated/changelog/animated-text.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text.feature.md)","tokens":300,"sizeBytes":273},{"name":"bezier-easing-closed-form-solver.fix.md","path":"packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bezier-easing-closed-form-solver.fix.md)","tokens":300,"sizeBytes":303},{"name":"bgimg-css.feature.md","path":"packages/react-native-reanimated/changelog/bgimg-css.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bgimg-css.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/bgimg-css.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/bgimg-css.feature.md)","tokens":300,"sizeBytes":265},{"name":"ci-fix-url-validation.other.md","path":"packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ci-fix-url-validation.other.md)","tokens":300,"sizeBytes":285},{"name":"css-array-reset-whole-list.fix.md","path":"packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-array-reset-whole-list.fix.md)","tokens":300,"sizeBytes":291},{"name":"css-none-empty-list.fix.md","path":"packages/react-native-reanimated/changelog/css-none-empty-list.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-none-empty-list.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-none-empty-list.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-none-empty-list.fix.md)","tokens":300,"sizeBytes":277},{"name":"css-platform-color.fix.md","path":"packages/react-native-reanimated/changelog/css-platform-color.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-platform-color.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/css-platform-color.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/css-platform-color.fix.md)","tokens":300,"sizeBytes":275},{"name":"deprecations-as-errors.other.md","path":"packages/react-native-reanimated/changelog/deprecations-as-errors.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/deprecations-as-errors.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/deprecations-as-errors.other.md)","tokens":300,"sizeBytes":287},{"name":"entering-stale-frame.fix.md","path":"packages/react-native-reanimated/changelog/entering-stale-frame.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/entering-stale-frame.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/entering-stale-frame.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/entering-stale-frame.fix.md)","tokens":300,"sizeBytes":279},{"name":"exiting-state-completed.other.md","path":"packages/react-native-reanimated/changelog/exiting-state-completed.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/exiting-state-completed.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/exiting-state-completed.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/exiting-state-completed.other.md)","tokens":300,"sizeBytes":289},{"name":"fix-settled-props-suspense-reveal.fix.md","path":"packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-settled-props-suspense-reveal.fix.md)","tokens":300,"sizeBytes":305},{"name":"fix-timing-negative-runtime.fix.md","path":"packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-timing-negative-runtime.fix.md)","tokens":300,"sizeBytes":293},{"name":"fix-ts-compat-rn-0-86-0-87.fix.md","path":"packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/fix-ts-compat-rn-0-86-0-87.fix.md)","tokens":300,"sizeBytes":291},{"name":"gstring-ndk-version.fix.md","path":"packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/gstring-ndk-version.fix.md)","tokens":300,"sizeBytes":277},{"name":"hidden-view-props-other-surface.fix.md","path":"packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/hidden-view-props-other-surface.fix.md)","tokens":300,"sizeBytes":301},{"name":"host-replacement-bindings.fix.md","path":"packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/host-replacement-bindings.fix.md)","tokens":300,"sizeBytes":289},{"name":"ios-css-transition-recycled-view.fix.md","path":"packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/ios-css-transition-recycled-view.fix.md)","tokens":300,"sizeBytes":303},{"name":"jest-resolver-pnpm.fix.md","path":"packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/jest-resolver-pnpm.fix.md)","tokens":300,"sizeBytes":275},{"name":"keyboard-observer-window.fix.md","path":"packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/keyboard-observer-window.fix.md)","tokens":300,"sizeBytes":287},{"name":"kotlin-shared-transition-boundary.other.md","path":"packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/kotlin-shared-transition-boundary.other.md)","tokens":300,"sizeBytes":309},{"name":"la-decision-pending-states.other.md","path":"packages/react-native-reanimated/changelog/la-decision-pending-states.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-decision-pending-states.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-decision-pending-states.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-decision-pending-states.other.md)","tokens":300,"sizeBytes":295},{"name":"la-withheld-subtree-removal.fix.md","path":"packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/la-withheld-subtree-removal.fix.md)","tokens":300,"sizeBytes":293},{"name":"layout-animation-recreated-live-view.fix.md","path":"packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animation-recreated-live-view.fix.md)","tokens":300,"sizeBytes":311},{"name":"layout-animations-removal-order.fix.md","path":"packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/layout-animations-removal-order.fix.md)","tokens":300,"sizeBytes":301},{"name":"library-extension-dsl.other.md","path":"packages/react-native-reanimated/changelog/library-extension-dsl.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/library-extension-dsl.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/library-extension-dsl.other.md)","tokens":300,"sizeBytes":285},{"name":"mock-derived-value.fix.md","path":"packages/react-native-reanimated/changelog/mock-derived-value.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mock-derived-value.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mock-derived-value.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mock-derived-value.fix.md)","tokens":300,"sizeBytes":275},{"name":"mount-hook-trait-race.fix.md","path":"packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/mount-hook-trait-race.fix.md)","tokens":300,"sizeBytes":281},{"name":"native-only-style-updater-flag.other.md","path":"packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/native-only-style-updater-flag.other.md)","tokens":300,"sizeBytes":303},{"name":"navigator-dom-globals.fix.md","path":"packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/navigator-dom-globals.fix.md)","tokens":300,"sizeBytes":281},{"name":"nested-text-entering-opacity.fix.md","path":"packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/nested-text-entering-opacity.fix.md)","tokens":300,"sizeBytes":295},{"name":"oxlint-migration.other.md","path":"packages/react-native-reanimated/changelog/oxlint-migration.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/oxlint-migration.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/oxlint-migration.other.md)","tokens":300,"sizeBytes":275},{"name":"processors-own-keys.fix.md","path":"packages/react-native-reanimated/changelog/processors-own-keys.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/processors-own-keys.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/processors-own-keys.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/processors-own-keys.fix.md)","tokens":300,"sizeBytes":277},{"name":"props-before-first-surface-mount.fix.md","path":"packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-before-first-surface-mount.fix.md)","tokens":300,"sizeBytes":303},{"name":"props-map-dynamic.other.md","path":"packages/react-native-reanimated/changelog/props-map-dynamic.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-map-dynamic.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/props-map-dynamic.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/props-map-dynamic.other.md)","tokens":300,"sizeBytes":277},{"name":"react-native-0-88-rc-2.other.md","path":"packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-2.other.md)","tokens":300,"sizeBytes":287},{"name":"react-native-0-88-rc-3.other.md","path":"packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-3.other.md)","tokens":300,"sizeBytes":287},{"name":"react-native-0-88-rc-4.other.md","path":"packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-rc-4.other.md)","tokens":300,"sizeBytes":287},{"name":"react-native-0-88-stable.other.md","path":"packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-native-0-88-stable.other.md)","tokens":300,"sizeBytes":291},{"name":"react-revision-merge-animated-props.fix.md","path":"packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/react-revision-merge-animated-props.fix.md)","tokens":300,"sizeBytes":309},{"name":"refresh-animatable-ref.fix.md","path":"packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/refresh-animatable-ref.fix.md)","tokens":300,"sizeBytes":283},{"name":"remove-deprecated-api-usage.other.md","path":"packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-deprecated-api-usage.other.md)","tokens":300,"sizeBytes":297},{"name":"remove-get-react-instance-manager.other.md","path":"packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/remove-get-react-instance-manager.other.md)","tokens":300,"sizeBytes":309},{"name":"restored-modal-shared-targets.fix.md","path":"packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/restored-modal-shared-targets.fix.md)","tokens":300,"sizeBytes":297},{"name":"rn-layout-animation-deleted-subtree.fix.md","path":"packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/rn-layout-animation-deleted-subtree.fix.md)","tokens":300,"sizeBytes":309},{"name":"runtime-tests-mounted-background-color.other.md","path":"packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-background-color.other.md)","tokens":300,"sizeBytes":319},{"name":"runtime-tests-mounted-view-props.other.md","path":"packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-mounted-view-props.other.md)","tokens":300,"sizeBytes":307},{"name":"runtime-tests-presented-view-props.other.md","path":"packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/runtime-tests-presented-view-props.other.md)","tokens":300,"sizeBytes":311},{"name":"sensor-availability-rerender.fix.md","path":"packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-availability-rerender.fix.md)","tokens":300,"sizeBytes":295},{"name":"sensor-value-map.other.md","path":"packages/react-native-reanimated/changelog/sensor-value-map.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-value-map.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sensor-value-map.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sensor-value-map.other.md)","tokens":300,"sizeBytes":275},{"name":"shared-transition-first-frame-end.fix.md","path":"packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-first-frame-end.fix.md)","tokens":300,"sizeBytes":305},{"name":"shared-transition-nested-text.fix.md","path":"packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-nested-text.fix.md)","tokens":300,"sizeBytes":297},{"name":"shared-transition-root-light-node.other.md","path":"packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-root-light-node.other.md)","tokens":300,"sizeBytes":309},{"name":"shared-transition-state-per-tag.fix.md","path":"packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-state-per-tag.fix.md)","tokens":300,"sizeBytes":301},{"name":"shared-transition-tag-update.fix.md","path":"packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/shared-transition-tag-update.fix.md)","tokens":300,"sizeBytes":295},{"name":"style-values-warn-instead-of-throw.fix.md","path":"packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/style-values-warn-instead-of-throw.fix.md)","tokens":300,"sizeBytes":307},{"name":"sync-props-after-react-mount.fix.md","path":"packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-after-react-mount.fix.md)","tokens":300,"sizeBytes":295},{"name":"sync-props-reset-on-reinsert.fix.md","path":"packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/sync-props-reset-on-reinsert.fix.md)","tokens":300,"sizeBytes":295},{"name":"test-web-sensor-path.other.md","path":"packages/react-native-reanimated/changelog/test-web-sensor-path.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/test-web-sensor-path.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/test-web-sensor-path.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/test-web-sensor-path.other.md)","tokens":300,"sizeBytes":283},{"name":"web-animatable-ref-dom-element.fix.md","path":"packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animatable-ref-dom-element.fix.md)","tokens":300,"sizeBytes":299},{"name":"web-animated-component-without-set.other.md","path":"packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animated-component-without-set.other.md)","tokens":300,"sizeBytes":311},{"name":"web-animation-timestamp-global.other.md","path":"packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-animation-timestamp-global.other.md)","tokens":300,"sizeBytes":303},{"name":"web-css-animation-rules-after-reuse.fix.md","path":"packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-animation-rules-after-reuse.fix.md)","tokens":300,"sizeBytes":309},{"name":"web-css-cancel-callbacks-on-unmount.fix.md","path":"packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-css-cancel-callbacks-on-unmount.fix.md)","tokens":300,"sizeBytes":309},{"name":"web-use-animated-style-state.other.md","path":"packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-animated-style-state.other.md)","tokens":300,"sizeBytes":299},{"name":"web-use-handler-context.other.md","path":"packages/react-native-reanimated/changelog/web-use-handler-context.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-handler-context.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-use-handler-context.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-use-handler-context.other.md)","tokens":300,"sizeBytes":289},{"name":"web-worklets-version-check.other.md","path":"packages/react-native-reanimated/changelog/web-worklets-version-check.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-worklets-version-check.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/web-worklets-version-check.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/web-worklets-version-check.other.md)","tokens":300,"sizeBytes":295},{"name":"compatibility.json","path":"packages/react-native-reanimated/compatibility.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/compatibility.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/compatibility.json)","tokens":300,"sizeBytes":255},{"name":"knip.json","path":"packages/react-native-reanimated/knip.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/knip.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/knip.json)","tokens":300,"sizeBytes":237},{"name":"tsconfig.json","path":"packages/react-native-reanimated/metro-config/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/metro-config/tsconfig.json","title":"Metro-config Skill","category":"anthropic-skill","format":"json","content":"# Metro-config Skill\n\nPath: `packages/react-native-reanimated/metro-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/metro-config/tsconfig.json)","tokens":300,"sizeBytes":260},{"name":"package.json","path":"packages/react-native-reanimated/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/package.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/package.json)","tokens":300,"sizeBytes":243},{"name":"RELEASE.md","path":"packages/react-native-reanimated/RELEASE.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/RELEASE.md","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"markdown","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/RELEASE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/RELEASE.md)","tokens":300,"sizeBytes":239},{"name":"staticFlags.json","path":"packages/react-native-reanimated/src/featureFlags/staticFlags.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/src/featureFlags/staticFlags.json","title":"FeatureFlags Skill","category":"anthropic-skill","format":"json","content":"# FeatureFlags Skill\n\nPath: `packages/react-native-reanimated/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/src/featureFlags/staticFlags.json)","tokens":300,"sizeBytes":274},{"name":"tsconfig.json","path":"packages/react-native-reanimated/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.json)","tokens":300,"sizeBytes":245},{"name":"tsconfig.native.json","path":"packages/react-native-reanimated/tsconfig.native.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.native.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.native.json)","tokens":300,"sizeBytes":259},{"name":"tsconfig.web.json","path":"packages/react-native-reanimated/tsconfig.web.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.web.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsconfig.web.json)","tokens":300,"sizeBytes":253},{"name":"tsdoc.json","path":"packages/react-native-reanimated/tsdoc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsdoc.json","title":"React-native-reanimated Skill","category":"anthropic-skill","format":"json","content":"# React-native-reanimated Skill\n\nPath: `packages/react-native-reanimated/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/tsdoc.json)","tokens":300,"sizeBytes":239},{"name":"tsconfig.json","path":"packages/react-native-worklets/__tests__/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__tests__/tsconfig.json","title":"__tests__ Skill","category":"anthropic-skill","format":"json","content":"# __tests__ Skill\n\nPath: `packages/react-native-worklets/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__tests__/tsconfig.json)","tokens":300,"sizeBytes":247},{"name":"tsconfig.json","path":"packages/react-native-worklets/__typetests__/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__typetests__/tsconfig.json","title":"__typetests__ Skill","category":"anthropic-skill","format":"json","content":"# __typetests__ Skill\n\nPath: `packages/react-native-worklets/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/__typetests__/tsconfig.json)","tokens":300,"sizeBytes":259},{"name":".oxlintrc.json","path":"packages/react-native-worklets/.oxlintrc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.oxlintrc.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.oxlintrc.json)","tokens":300,"sizeBytes":241},{"name":"dummy.md","path":"packages/react-native-worklets/.worklets/dummy.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.worklets/dummy.md","title":".worklets Skill","category":"anthropic-skill","format":"markdown","content":"# .worklets Skill\n\nPath: `packages/react-native-worklets/.worklets/dummy.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/.worklets/dummy.md)","tokens":300,"sizeBytes":237},{"name":"package.json","path":"packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json","title":"Npm Skill","category":"anthropic-skill","format":"json","content":"# Npm Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/npm/package.json)","tokens":300,"sizeBytes":289},{"name":"package.json","path":"packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json","title":"YarnModern Skill","category":"anthropic-skill","format":"json","content":"# YarnModern Skill\n\nPath: `packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/__testers__/yarnModern/package.json)","tokens":300,"sizeBytes":310},{"name":"tsconfig.json","path":"packages/react-native-worklets/bundleMode/polyfills/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/polyfills/tsconfig.json","title":"Polyfills Skill","category":"anthropic-skill","format":"json","content":"# Polyfills Skill\n\nPath: `packages/react-native-worklets/bundleMode/polyfills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/polyfills/tsconfig.json)","tokens":300,"sizeBytes":269},{"name":"CHANGELOG.md","path":"packages/react-native-worklets/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/CHANGELOG.md","title":"React-native-worklets Skill","category":"anthropic-skill","format":"markdown","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/CHANGELOG.md)","tokens":300,"sizeBytes":237},{"name":"addclonemappingfix.fix.md","path":"packages/react-native-worklets/changelog/addclonemappingfix.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/addclonemappingfix.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/addclonemappingfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/addclonemappingfix.fix.md)","tokens":300,"sizeBytes":271},{"name":"assign-captured-variable.fix.md","path":"packages/react-native-worklets/changelog/assign-captured-variable.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/assign-captured-variable.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/assign-captured-variable.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/assign-captured-variable.fix.md)","tokens":300,"sizeBytes":283},{"name":"bundle-mode-without-inline-requires.fix.md","path":"packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/bundle-mode-without-inline-requires.fix.md)","tokens":300,"sizeBytes":305},{"name":"createserializableapi.feature.md","path":"packages/react-native-worklets/changelog/createserializableapi.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/createserializableapi.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/createserializableapi.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/createserializableapi.feature.md)","tokens":300,"sizeBytes":285},{"name":"deprecations-as-errors.other.md","path":"packages/react-native-worklets/changelog/deprecations-as-errors.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/deprecations-as-errors.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/deprecations-as-errors.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/deprecations-as-errors.other.md)","tokens":300,"sizeBytes":283},{"name":"dev-flag-in-js.fix.md","path":"packages/react-native-worklets/changelog/dev-flag-in-js.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/dev-flag-in-js.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/dev-flag-in-js.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/dev-flag-in-js.fix.md)","tokens":300,"sizeBytes":263},{"name":"docs-fix-broken-links.other.md","path":"packages/react-native-worklets/changelog/docs-fix-broken-links.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/docs-fix-broken-links.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/docs-fix-broken-links.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/docs-fix-broken-links.other.md)","tokens":300,"sizeBytes":281},{"name":"gstring-ndk-version.fix.md","path":"packages/react-native-worklets/changelog/gstring-ndk-version.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/gstring-ndk-version.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/gstring-ndk-version.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/gstring-ndk-version.fix.md)","tokens":300,"sizeBytes":273},{"name":"initializererrorcrashfix.fix.md","path":"packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/initializererrorcrashfix.fix.md)","tokens":300,"sizeBytes":283},{"name":"ios-bundle-from-file.feature.md","path":"packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/ios-bundle-from-file.feature.md)","tokens":300,"sizeBytes":283},{"name":"jest-resolver-pnpm.fix.md","path":"packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/jest-resolver-pnpm.fix.md)","tokens":300,"sizeBytes":271},{"name":"lazy-bundles-on-worklet-runtimes.feature.md","path":"packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/lazy-bundles-on-worklet-runtimes.feature.md)","tokens":300,"sizeBytes":307},{"name":"library-extension-dsl.other.md","path":"packages/react-native-worklets/changelog/library-extension-dsl.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/library-extension-dsl.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/library-extension-dsl.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/library-extension-dsl.other.md)","tokens":300,"sizeBytes":281},{"name":"oxc-name.other.md","path":"packages/react-native-worklets/changelog/oxc-name.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-name.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-name.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-name.other.md)","tokens":300,"sizeBytes":255},{"name":"oxc-windows-library-prefix.fix.md","path":"packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxc-windows-library-prefix.fix.md)","tokens":300,"sizeBytes":287},{"name":"oxlint-migration.other.md","path":"packages/react-native-worklets/changelog/oxlint-migration.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxlint-migration.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/oxlint-migration.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/oxlint-migration.other.md)","tokens":300,"sizeBytes":271},{"name":"react-native-0-88-rc-2.other.md","path":"packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-2.other.md)","tokens":300,"sizeBytes":283},{"name":"react-native-0-88-rc-3.other.md","path":"packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-3.other.md)","tokens":300,"sizeBytes":283},{"name":"react-native-0-88-rc-4.other.md","path":"packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-rc-4.other.md)","tokens":300,"sizeBytes":283},{"name":"react-native-0-88-stable.other.md","path":"packages/react-native-worklets/changelog/react-native-0-88-stable.other.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-stable.other.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/react-native-0-88-stable.other.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/react-native-0-88-stable.other.md)","tokens":300,"sizeBytes":287},{"name":"rebase-relative-requires-in-worklets.fix.md","path":"packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/rebase-relative-requires-in-worklets.fix.md)","tokens":300,"sizeBytes":307},{"name":"runonrnsync-stack-traces.feature.md","path":"packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync-stack-traces.feature.md)","tokens":300,"sizeBytes":291},{"name":"runonrnsync.feature.md","path":"packages/react-native-worklets/changelog/runonrnsync.feature.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync.feature.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/runonrnsync.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/runonrnsync.feature.md)","tokens":300,"sizeBytes":265},{"name":"web-request-animation-frame-fallback.fix.md","path":"packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/web-request-animation-frame-fallback.fix.md)","tokens":300,"sizeBytes":307},{"name":"worklets-plugin-docs-links.fix.md","path":"packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md","title":"Changelog Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog Skill\n\nPath: `packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/worklets-plugin-docs-links.fix.md)","tokens":300,"sizeBytes":287},{"name":"compatibility.json","path":"packages/react-native-worklets/compatibility.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/compatibility.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/compatibility.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/compatibility.json)","tokens":300,"sizeBytes":249},{"name":"knip.json","path":"packages/react-native-worklets/knip.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/knip.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/knip.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/knip.json)","tokens":300,"sizeBytes":231},{"name":"package.json","path":"packages/react-native-worklets/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/package.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/package.json)","tokens":300,"sizeBytes":237},{"name":"package.json","path":"packages/react-native-worklets/plugin-oxc/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/package.json","title":"Plugin-oxc Skill","category":"anthropic-skill","format":"json","content":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/package.json)","tokens":300,"sizeBytes":248},{"name":"tsconfig.json","path":"packages/react-native-worklets/plugin-oxc/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/tsconfig.json","title":"Plugin-oxc Skill","category":"anthropic-skill","format":"json","content":"# Plugin-oxc Skill\n\nPath: `packages/react-native-worklets/plugin-oxc/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin-oxc/tsconfig.json)","tokens":300,"sizeBytes":250},{"name":".oxlintrc.json","path":"packages/react-native-worklets/plugin/.oxlintrc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/.oxlintrc.json","title":"Plugin Skill","category":"anthropic-skill","format":"json","content":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/.oxlintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/.oxlintrc.json)","tokens":300,"sizeBytes":240},{"name":"package.json","path":"packages/react-native-worklets/plugin/package.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/package.json","title":"Plugin Skill","category":"anthropic-skill","format":"json","content":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/package.json)","tokens":300,"sizeBytes":236},{"name":"tsconfig.json","path":"packages/react-native-worklets/plugin/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/tsconfig.json","title":"Plugin Skill","category":"anthropic-skill","format":"json","content":"# Plugin Skill\n\nPath: `packages/react-native-worklets/plugin/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/plugin/tsconfig.json)","tokens":300,"sizeBytes":238},{"name":"staticFlags.json","path":"packages/react-native-worklets/src/featureFlags/staticFlags.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/src/featureFlags/staticFlags.json","title":"FeatureFlags Skill","category":"anthropic-skill","format":"json","content":"# FeatureFlags Skill\n\nPath: `packages/react-native-worklets/src/featureFlags/staticFlags.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/src/featureFlags/staticFlags.json)","tokens":300,"sizeBytes":270},{"name":"tsconfig.json","path":"packages/react-native-worklets/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.json)","tokens":300,"sizeBytes":239},{"name":"tsconfig.native.json","path":"packages/react-native-worklets/tsconfig.native.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.native.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.native.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.native.json)","tokens":300,"sizeBytes":253},{"name":"tsconfig.web.json","path":"packages/react-native-worklets/tsconfig.web.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.web.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsconfig.web.json)","tokens":300,"sizeBytes":247},{"name":"tsdoc.json","path":"packages/react-native-worklets/tsdoc.json","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsdoc.json","title":"React-native-worklets Skill","category":"anthropic-skill","format":"json","content":"# React-native-worklets Skill\n\nPath: `packages/react-native-worklets/tsdoc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/tsdoc.json)","tokens":300,"sizeBytes":233},{"name":"README.md","path":"packages/react-native-reanimated/android/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/android/README.md","title":"android Documentation","category":"plugin-manifest","format":"markdown","content":"# android Documentation\n\nPath: `packages/react-native-reanimated/android/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/android/README.md)","tokens":300,"sizeBytes":245},{"name":"README.md","path":"packages/react-native-reanimated/changelog/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/README.md","title":"changelog Documentation","category":"plugin-manifest","format":"markdown","content":"# changelog Documentation\n\nPath: `packages/react-native-reanimated/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/README.md)","tokens":300,"sizeBytes":251},{"name":"README.md","path":"packages/react-native-reanimated/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/README.md","title":"react-native-reanimated Documentation","category":"plugin-manifest","format":"markdown","content":"<img src=\"https://user-images.githubusercontent.com/16062886/117443145-ff868480-af37-11eb-8680-648bccf0d0ce.png\" alt=\"React Native Reanimated by Software Mansion\" width=\"100%\">\n\n### Create smooth animations with an excellent developer experience.\n\n> Reanimated 4 is here! Check out our [documentation page](https://docs.swmansion.com/react-native-reanimated/) for more information\n\n### Nightly CI state\n\n[![NPM Reanimated publish nightly](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/npm-reanimated-publish.yml)\n[![Reanimated compatibility check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-compatibility-check-nightly.yml)\n[![Use frameworks Reanimated build check \\[Nightly\\]](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/use-frameworks-reanimated-build-check-nightly.yml)\n[![React Native nightly Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/react-native-nightly-reanimated-build-check-nightly.yml)\n[![Expo DevClient build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/expo-devclient-build-check-nightly.yml)\n[![Reanimated TypeScript compatibility test](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/reanimated-typescript-compatibility-test-nightly.yml)\n[![Windows hosted app Reanimated build check](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/windows-hosted-app-reanimated-build-check-nightly.yml)\n[![URL validation](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml/badge.svg)](https://github.com/software-mansion/react-native-reanimated/actions/workflows/url-validation-nightly.yml)\n\n## Installation\n\nCheck out the [installation](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#installation) section of our docs for the detailed installation instructions.\n\n## Compatibility\n\nReact Native Reanimated 4.x supports only the [New React Native architecture](https://reactnative.dev/architecture/landing-page) and three latest React Native versions.\n\nIf your app still runs on the old architecture, please consider adopting the New Architecture or stay with latest 3.x release.\n\n## Documentation\n\nCheck out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-reanimated/](https://docs.swmansion.com/react-native-reanimated/)\n\n## License\n\nReanimated library is licensed under [The MIT License](LICENSE).\n\n## Community Discord\n\n[Join the Software Mansion Community Discord](https://discord.swmansion.com) to chat about Reanimated or other Software Mansion libraries.\n\n## Reanimated is created by Software Mansion\n\nSince 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – [Hire us](https://swmansion.com/contact/projects?utm_source=reanimated\\&utm_medium=readme).\n","isInternal":false,"tokens":872,"sizeBytes":4168},{"name":"README.md","path":"packages/react-native-worklets/bundleMode/patches/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/README.md","title":"patches Documentation","category":"plugin-manifest","format":"markdown","content":"# patches Documentation\n\nPath: `packages/react-native-worklets/bundleMode/patches/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/bundleMode/patches/README.md)","tokens":300,"sizeBytes":263},{"name":"README.md","path":"packages/react-native-worklets/changelog/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/README.md","title":"changelog Documentation","category":"plugin-manifest","format":"markdown","content":"# changelog Documentation\n\nPath: `packages/react-native-worklets/changelog/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/changelog/README.md)","tokens":300,"sizeBytes":247},{"name":"README.md","path":"packages/react-native-worklets/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/README.md","title":"react-native-worklets Documentation","category":"plugin-manifest","format":"markdown","content":"# react-native-worklets Documentation\n\nPath: `packages/react-native-worklets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-worklets/README.md)","tokens":300,"sizeBytes":239},{"name":"README.md","path":"scripts/llvm-tools/README.md","rawUrl":"https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/scripts/llvm-tools/README.md","title":"llvm-tools Documentation","category":"plugin-manifest","format":"markdown","content":"# llvm-tools Documentation\n\nPath: `scripts/llvm-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/scripts/llvm-tools/README.md)","tokens":300,"sizeBytes":204}],"systemPromptSnippet":"<yakaai_skills repo=\"software-mansion/react-native-reanimated\">\n<!-- File: AGENTS.md (Tokens: ~4368 | Category: root-instruction) -->\n# Agent guide for the react-native-reanimated monorepo\n\nFacts that are true on `main` and that agents otherwise re-discover in every session. Verify against the code when in doubt. Fix this file in the same PR that makes it stale.\n\n## Tooling\n\n- Yarn 4 workspaces, single root lockfile, exact versions only (`scripts/disallow-non-exact.js`). Use `yarn`, `yarn dlx`, `yarn workspace <name> <script>`. Never `npm`, `npx` or `pnpm`.\n- Node from `.nvmrc`, Ruby from `.ruby-version`, CocoaPods through bundler: `bundle exec pod install`. CI rejects a `Podfile.lock` written by a different CocoaPods version.\n- Husky refuses commits and pushes on `main`. Work on a branch.\n- Formatters: oxfmt (JS/TS), remark (`yarn format:md`, CI fails on any diff), clang-format (C++/ObjC), cmake-format, spotless (Kotlin/Java). Prettier is not used.\n- Oxlint lints JS/TS with type-aware rules, so tsconfigs must not use `baseUrl`. Nested `.oxlintrc.json` files must `extends` the root one.\n- Use the existing scripts (root `scripts/`, per-package `scripts/`, `scripts` in each `package.json`). Do not invent ad-hoc build or test scripts.\n\n## Layout\n\n- `packages/react-native-reanimated` - animations library. Depends on worklets.\n- `packages/react-native-worklets` - worklet runtimes, serialization, run loops. Nested workspaces: `plugin/` (Babel plugin, workspace `babel-plugin-worklets`) and `plugin-oxc/` (Rust/napi port, workspace `worklets-oxc-plugin`).\n- `packages/eslint-plugin-reanimated` - internal lint rules used by both packages.\n- `apps/common-app` - all example screens (`src/apps/{reanimated,worklets,css,macos,runtime-tests}`) and the on-device test suites (`runtime-tests/`, a sibling of `src/`). Not runnable on its own.\n- `apps/fabric-example` - primary iOS/Android app and the runtime-tests host. No local `node_modules`, everything hoists to the root.\n- `apps/macos-example`, `apps/tvos-example` - own `node_modules` (`hoistingLimits: workspaces`). macOS cannot run Bundle Mode, so its `build` script runs `toggle-bundle-mode --off`.\n- `apps/web-example` (Expo web, Playwright), `apps/next-example` (Next.js, Cypress).\n- `docs/docs-reanimated`, `docs/docs-worklets` - Docusaurus. Worklets docs are nested into the Reanimated build on publish.\n\nBoth packages share one internal layout:\n\n- `src/` TS public API. Platform variants: `x.native.ts`, `x.ts` (web), `xCommon.ts`.\n- `Common/cpp/<pkg>/` portable C++ used by iOS and Android.\n- `apple/<pkg>/apple/` Objective-C++.\n- `android/src/main/cpp/<pkg>/android/` fbjni glue, `android/src/main/java/com/swmansion/<pkg>/` Kotlin.\n- `__tests__/` Jest, `__typetests__/` tstyche. `src/mock.ts` must mirror the exports of `src/index.ts` (`yarn validate-mock`).\n\nCommitted build artifacts, rebuild them and never hand-edit: `packages/react-native-worklets/plugin/index.js`, `plugin/index.d.ts`, `packages/eslint-plugin-reanimated/index.js`, `packages/eslint-plugin-reanimated/types/`. The pre-commit hook rebuilds and stages the worklets plugin.\n\n## How the pieces link\n\n- `node_modules/react-native-reanimated` and `node_modules/react-native-worklets` are symlinks to `packages/*`. Reanimated always compiles against in-repo worklets headers.\n- Package entry points: `react-native` and `source` point at `src/index` (apps, Metro, Jest). `main`, `module` and `types` point at `lib/` (npm consumers, `type:check`, madge, tree-shake checks). A stale `lib/` breaks checks but never the app.\n- Reanimated and worklets are pinned three times: exact `peerDependencies` version, `compatibility.json` (checked by `yarn validate-peers` and by Android `preBuild`), and a C++ `static_assert` of `WORKLETS_STABLE_API_VERSION` (`packages/react-native-worklets/Common/cpp/worklets/Compat/StableApi.h`) against `EXPECTED_WORKLETS_STABLE_API_VERSION` (`packages/react-native-reanimated/Common/cpp/reanimated/Compat/WorkletsApi.h`). Change one, change the other.\n- Reanimated native code may include exactly one worklets header, `<worklets/Compat/StableApi.h>`. `packages/react-native-reanimated/scripts/validate-worklets-includes.sh` enforces this.\n- `packages/react-native-reanimated/plugin` re-exports `react-native-worklets/plugin`.\n- Static feature flags: `src/featureFlags/staticFlags.json` merged with the app's `package.json` field `reanimated.staticFeatureFlags` or `worklets.staticFeatureFlags`. iOS injects them through `scripts/*_utils.rb` into the podspec `OTHER_CFLAGS`, Android through `build.gradle.kts` into CMake arguments. The flags become compiler defines, so re-run `pod install` after changing them.\n- The `@/` alias to `apps/common-app/src` is declared in `apps/common-app/tsconfig.native.json` and in `module-resolver` in `apps/fabric-example/babel.config.js`, `apps/macos-example/babel.config.js` and `apps/web-example/babel.config.js`. Keep them in sync.\n\n## Where to look: worklets\n\n- JS to C++ surface: not the TurboModule spec. `src/specs/NativeWorkletsModule.ts` has three methods. Everything else is `globalThis.__workletsModuleProxy`, installed in `JSIWorkletsModuleProxy::toOptimizedObject` and mirrored in `src/WorkletsModule/workletsModuleProxy.ts`, `NativeWorklets.native.ts` and `src/privateGlobals.d.ts`. Adding a native method needs no codegen change.\n- Platform seam: `RuntimeBindings` (`Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h`), a struct of `std::function`s built by each platform module. A complete example of core plus both backends is `requestAnimationFrame`: `Common/cpp/worklets/AnimationFrameQueue/`, `apple/worklets/apple/AnimationFrameQueue.mm`, Kotlin `runloop/AnimationFrameQueue.kt`.\n- Runtimes: `RuntimeKind` 1 = React Native, 2 = UI, 3 = Worker (`src/runtimeKind.ts`). The UI runtime runs on the platform main thread (`AsyncQueueUI` over `UIScheduler`). Each worker runtime owns a thread (`Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp`). `runOnUISync` and `runOnRuntimeSync` run inline on the caller.\n- Scheduling order: `scheduleOnUI` batches inside `queueMicrotask` (`src/threads.native.ts`). `runOnUISync`, `Synchronizable.getBlocking`/`setBlocking`, native `getViewProp` and worker-runtime writes bypass that batch. Most ordering bugs come from this.\n- Serialization: `Common/cpp/worklets/SharedItems/` and `src/memory/`. `Serializable::undefined()` is a shared singleton.\n- Runtime setup: `Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp` creates the runtimes, decorators in `Common/cpp/worklets/WorkletRuntime/` install the globals.\n- Bundle Mode: Babel plugin option `bundleMode`, Metro helper `react-native-worklets/bundleMode`, Metro patches in `packages/react-native-worklets/bundleMode/patches/` (not published). `fabric-example` runs Bundle Mode by default. `yarn toggle-bundle-mode` (repo root) patches tracked files in `apps/` and `package.json`, so it pollutes the diff. Generated chunks live in `packages/react-native-worklets/.worklets/`. Keep `.worklets/dummy.md`.\n\n## Where to look: reanimated\n\n- JS to C++ surface: same pattern as worklets. `src/specs/NativeReanimatedModule.ts` has one method, `installTurboModule`. The real API is `globalThis.__reanimatedModuleProxy`, installed in `ReanimatedModuleProxy::toOptimizedObject` (`Common/cpp/reanimated/NativeModules/`) and typed in `src/ReanimatedModule/reanimatedModuleProxy.ts`. `src/ReanimatedModule/NativeReanimated.ts` wraps it on native, `js-reanimated/JSReanimated.ts` is the web implementation.\n- Platform seam: `Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h`, filled by `apple/reanimated/apple/ReanimatedModule.mm` and `android/src/main/cpp/reanimated/android/NativeProxy.cpp`. Frame ticks and event dispatch come from `REANodesManager.mm` (CADisplayLink) and `NodesManager.kt` (ReactChoreographer).\n- UI runtime globals used by JS worklets (`_updateProps`, `_measure`, `_dispatchCommand`, `_obtainProp`, `_notifyAboutProgress`, `_setGestureState` and others) are installed in `Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp`. The React Native runtime side is `RNRuntimeDecorator.cpp`.\n- Style update path: `useAnimatedStyle` and `useAnimatedProps` (`src/hook/`) write through `src/updateProps/updateProps.native.ts`, which calls `_updateProps` on the UI runtime. Native stores the values in `Fabric/updates/AnimatedPropsRegistry` and `UpdatesRegistryManager`, and `Fabric/ReanimatedCommitHook` applies them to the shadow tree with `cloneShadowTreeWithNewProps` (`Fabric/ShadowTreeCloner`) on every commit. `Fabric/ReanimatedMountHook` runs after mount.\n- Animated components: `src/createAnimatedComponent/` (`AnimatedComponent.native.tsx`, `JSPropsUpdater`, `InlinePropManager`, `NativeEventsManager`, `PropsFilter`). Shared values live in `src/mutables.native.ts` and `src/mutablesCommon.ts`.\n- Events: `src/WorkletEventHandler.native.ts` registers through `registerEventHandler`, native side in `Common/cpp/reanimated/Events/UIEventHandlerRegistry`.\n- Layout animations: JS in `src/layoutReanimation/` and `src/UpdateLayoutAnimations.native.ts` (`configureLayoutAnimationBatch`). Native in `Common/cpp/reanimated/LayoutAnimations/`: `LayoutAnimationsManager` holds configs, `LayoutAnimationsProxy` (default) and `LayoutAnimationsProxy_Legacy` (`USE_LEGACY_LAYOUT_ANIMATIONS_PROXY`) are `MountingOverrideDelegate`s chosen at install time through `LayoutAnimationsProxyRegistry`. Shared element transitions are in `SharedTransitions.cpp` and the `REASharedTransitionBoundary` Fabric component in `Common/NativeView/`.\n- CSS animations and transitions: JS in `src/css/` (`platform.native.ts` picks `css/native`, `platform.ts` picks `css/web`). Native in `Common/cpp/reanimated/CSS/` with `registries/` (keyframes, animations, transitions), `core/`, `interpolation/`, `easing/`, driven by `Fabric/updates/OperationsLoop`. Platform pieces in `apple/reanimated/apple/CSS` and `android/src/main/cpp/reanimated/android/CSS`.\n- Other native features: `AnimatedSensor/`, `PseudoStyles/`, keyboard in `apple/reanimated/apple/keyboardObserver` and `android/src/main/java/com/swmansion/reanimated/keyboard`.\n\n## Commands\n\n```sh\nyarn                                   # install (needed in every new worktree)\nyarn build-packages                    # builds worklets then reanimated (bob), rebuilds the Babel plugin and the Oxc plugin, fills lib/\nyarn workspace react-native-worklets build\nyarn workspace <pkg> type:check        # native + web + common-app + type tests\nyarn workspace <pkg> lint              # lint:js + lint:android + lint:apple + lint:clang-tidy (+ lint:plugin)\nyarn workspace <pkg> test              # Jest (root binary); `yarn workspace <pkg> jest <pattern>` for one file\nyarn workspace <pkg> format\nyarn lint && yarn format && yarn format:md   # repo-wide\nyarn test:scripts                      # tests for root scripts/\nyarn build-apps                        # regenerates apps/*/ios/Podfile.lock; macos-example may fail, that is known\n```\n\niOS (`apps/fabric-example/ios`): workspace `FabricExample.xcworkspace`, schemes `Debug FabricExample` and `Release FabricExample`, configurations `DebugRuntimeTests` and `ReleaseRuntimeTests`. Pod-only schemes `RNWorklets` and `RNReanimated` compile native code without the app. `RCT_USE_PREBUILT_RNCORE=0 RCT_USE_RN_DEP=0` builds React Native from source (needed for sanitizers). Re-run `pod install` after switching branches when native files were added or removed, because the podspecs glob sources.\n\nAndroid: `yarn workspace fabric-example android` (`--active-arch-only`). Worklets/Reanimated cannot be built without an app project and the React Native Gradle Plugin. Gradle does not track worklets package files for `createBundleReleaseJsAndAssets`, so pass `--rerun` after editing JS.\n\nFast C++ syntax check without a native build. Run from `packages/react-native-worklets` after `pod install` in fabric-example:\n\n```sh\nRN=../../node_modules/react-native\nHERMES=../../apps/fabric-example/ios/Pods/hermes-engine/destroot/include\nclang++ -std=c++20 -fsyntax-only -I Common/cpp -I $RN/ReactCommon/jsi -I $RN/ReactCommon \\\n  -I $RN/ReactCommon/callinvoker -I $RN/ReactCommon/react/nativemodule/core -I $HERMES <file.cpp>\n```\n\n`compile_commands.json` (for clangd and `lint:clang-tidy`) exists only after a real build. clangd errors in a fresh checkout are include-path noise.\n\n## Tests\n\n- Jest: per-package configs. Reanimated has the projects `native`, `ios`, `android` and `web`. `packages/react-native-reanimated/jest/resolver.js` forces web variants for the modules listed in `WEB_ONLY_IN_JEST` (`useAnimatedStyle`, `mutables` and others), so a green `native` project does not prove that a `.native.ts` file ran.\n- Type tests: `__typetests__/*.tst.ts` through `scripts/test-ts.sh` (tstyche).\n- Runtime tests (ReJest, on device): suites in `apps/common-app/runtime-tests/{reanimated,worklets,self-tests}`, harness in `apps/common-app/runtime-tests/ReJest`, entry points `apps/fabric-example/index.runtimeTests.*.js`. Driver:\n\n```sh\nyarn workspace fabric-example runtime-tests --library worklets --platform ios --udid <udid>\n```\n\n- `--library` takes `reanimated`, `worklets` or `self-tests`. `--platform` takes `ios` or `android`, with the device given by `--udid`, `--serial` or `--avd`. `--configuration` takes `DebugRuntimeTests` or `ReleaseRuntimeTests`. Other flags: `--only suiteA,suiteB`, `--skip-build`, `--metro-port N`, `--port N`.\n- The reporting port defaults to the Metro port plus one (8082 for Release, which embeds the bundle and runs no Metro). `--skip-build` installs whatever is already built for that configuration. `--help` lists everything. Approximate durations: self-tests under a minute, worklets about 1 minute, reanimated about 2 minutes.\n- ReJest semantics: `mockAnimationTimer()` advances 16 ms per real frame, `wait()` is real time, `waitForNotification` is the idiom for \"animation finished\", `toThrow` matches substrings, `toMatchNativeSnapshots` compares against pixel-grid-rounded native metrics with a 0.5 dp tolerance. Suites are `__DEV__`-gated inconsistently, so a `__DEV__`-only assertion can fail only in the Release nightly. Android emulators need GPU acceleration (`hw.gpu.mode=host`) or mocked-clock tests time out.\n- CI: `*-static-checks.yml`, `runtime-tests-{ios,android,nightly,sanitizers-nightly}.yml`, `{android,apple}-validation.yml`, `changelog-check.yml`, `yarn-validation.yml`, example build checks, docs build and publish, `npm-*-publish*.yml`.\n\n## Cross-cutting change checklist\n\n- New native binding: `Common/cpp`, then `android/src/main/cpp`, Kotlin (if exposed), `apple/`, then `src/` TS (`workletsModuleProxy.ts`, `privateGlobals.d.ts`, `mock.ts`).\n- Worklets public API change: grep `packages/react-native-reanimated/src`, the largest consumer.\n- Babel plugin change: run `plugin/__tests__`, rebuild `plugin/index.js`, rebuild both packages.\n- Any package change needs a new changelog fragment `packages/<pkg>/changelog/<slug>.<breaking|feature|fix|other>.md` that holds one sentence. Write the file directly, or run `yarn workspace <react-native-reanimated|react-native-worklets> changelog:add --type <type> --message '<One sentence>'`. Use single quotes, because the shell runs backticks inside double quotes. Do not write the PR link or the author (the optional lines `pr: <number>` and `by: @user1, @user2` exist for the cases that the release script cannot resolve), and do not edit `CHANGELOG.md`: `yarn changelog:squash` fills it at release. On Reanimated stable branches older than `4.7-stable`, `changelog-check` uses the old layout and is always red. Ignore it there. Worklets stable branches up to and including `worklets-0.13-stable` also use the old layout. There, add a bullet under `## Unpublished` in `packages/react-native-worklets/CHANGELOG.md` with the PR and author links instead of a fragment, and leave out changes to other packages, because `changelog-check` requires a `CHANGELOG.md` entry for each changed package. On newer stable branches, a red check means that the cherry-pick lost its fragment.\n- Docs-visible API change: update `docs/docs-reanimated` and/or `docs/docs-worklets`.\n- Do not commit changes to the playground files `apps/common-app/src/apps/reanimated/examples/EmptyExample.tsx` and `apps/common-app/src/apps/css/examples/animations/screens/testExamples/Playground.tsx`.\n- PR template: `.github/PULL_REQUEST_TEMPLATE.md` (Summary, Test plan).\n\n## Fresh checkout or worktree\n\n1. `yarn` - a new worktree has no `node_modules`.\n1. `yarn build-packages` - fills `lib/` and rebuilds both plugins. `type:check` and `circular-dependency-check` fail without it.\n1. After merging across a version bump: `rm packages/react-native-worklets/.worklets/*.js` (keep `dummy.md`) and `yarn jest --clearCache`. Stale chunks trip the plugin version check.\n1. `cd apps/fabric-example/ios && bundle exec pod install` when native files changed.\n1. Metro `--reset-cache` after toggling Bundle Mode.\n\n## Release facts\n\n- The release procedure lives in `packages/react-native-reanimated/RELEASE.md`. Agent skills for releases and cherry-picks live in `.agents/skills/` (`.claude/skills` links to it): `reanimated-release`, `worklets-release`, `reanimated-cherry-pick` and `worklets-cherry-pick`. Worklets follows the same flow from `worklets-<X.Y>-stable` branches, and its version file is `src/debug/jsVersion.ts`.\n- When the worklets stable API changes, bump `WORKLETS_STABLE_API_VERSION` in `StableApi.h` and `EXPECTED_WORKLETS_STABLE_API_VERSION` in `WorkletsApi.h` together, also on backports.\n\n<!-- File: .agents/skills/reanimated-cherry-pick/SKILL.md (Tokens: ~2716 | Category: anthropic-skill) -->\n---\nname: reanimated-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Reanimated release branch (e.g. 4.3-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a `<X.Y>-stable`\n  branch, or when preparing a Reanimated patch release.\n---\n\n# Cherry-pick PRs onto a Reanimated release branch\n\nBackports merged upstream PRs onto a release branch using one worktree per PR so the cherry-picks don't fight over the same\nworking tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional), and the tracking issue for\nthe release is updated with links.\n\nPreferably use PR stack from GitHub.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `4.3-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Reanimated X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Reanimated] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rnr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Reanimated): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rnr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rnr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Reanimated part\n\nIf the upstream PR also changes Worklets, leave the Worklets part out of the cherry-pick: restore `packages/react-native-worklets/` from the\nrelease branch. This also removes the Worklets changelog fragment. A Reanimated release branch does not release Worklets.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-worklets\n```\n\n### 3b. Keep the changelog fragment\n\nOn `4.7-stable` and newer, the upstream changelog fragment in `packages/react-native-reanimated/changelog/` comes with the\ncherry-pick. Keep it: `changelog:squash` reads it at release time. On older branches, see the changelog item of the\n\"Cross-cutting change checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nResolve conflicts.\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rnr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n\n<!-- File: .agents/skills/reanimated-release/SKILL.md (Tokens: ~3456 | Category: anthropic-skill) -->\n---\nname: reanimated-release\ndescription: Prepare a Reanimated patch release from a <X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Reanimated X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Reanimated patch release\n\nCuts a release of `react-native-reanimated` from a stable branch (e.g. `4.3-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Reanimated): X.Y.Z` PR, and a dry-run of the `npm reanimated publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10797 (`release(Reanimated): 4.7.1`, with the changelog squash) and PR #10427 (`release(Reanimated): 4.5.5`, before the changelog fragments).\n\n## Inputs\n\n- **Version** — e.g. `4.7.2`. Infer the branch from it: `4.7-stable`.\n- **Release branch** — `<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Reanimated X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rnr-release-<version>` (sibling of the repo; `rnr` because it's a Reanimated release) |\n| Branch | `@<you>/reanimated/release-<version>` |\n| Commit + PR title | `release(Reanimated): <version>` |\n| PR body | `## Summary` / `Releasing Reanimated <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10797, #10427) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-reanimated/package.json` (version)\n- `packages/react-native-reanimated/src/platform-specific/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNReanimated pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-reanimated/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-reanimated/changelog/` on `4.7-stable` and newer.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/reanimated/release-<version>' \\\n  ../rnr-release-<version> origin/<release-branch>\ncd ../rnr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-reanimated set-version --version <version>\n```\n\nUpdates `package.json` and `src/platform-specific/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn `4.7-stable` and newer, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-reanimated changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\nBranches older than `4.7-stable` have no fragments. `4.5-stable` and older have no `CHANGELOG.md`, so skip this step there. On\n`4.6-stable`, move the `## Unpublished` entries in `packages/react-native-reanimated/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Reanimated and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Reanimated minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNReanimated (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Reanimated): <version>'\ngit push -u origin '@<you>/reanimated/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10797 / #10427 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/reanimated/release-<version>' \\\n  --title 'release(Reanimated): <version>' \\\n  --body '## Summary\n\nReleasing Reanimated <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm reanimated publish' --ref '@<you>/reanimated/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm reanimated publish' \\\n  --branch '@<you>/reanimated/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._REANIMATED_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/reanimated/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm reanimated publish' --ref <X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-reanimated@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Reanimated - X.Y.Z`, git tag `X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin <X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create <version> --draft --target \"$sha\" \\\n  --title 'Reanimated - <version>' \\\n  --generate-notes --notes-start-tag <previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag <previous-version>` reproduces the `## What's Changed` list plus the `<previous-version>...<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Reanimated - 4.5.5` is not the latest release).\n- Created with `--draft`; the `<version>` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-reanimated@<version>            # downloads the published .tgz\ngh release upload <version> react-native-reanimated-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rnr-release-<version>\ngit branch -D '@<you>/reanimated/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref <X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `<X.Y>-stable` branch.\n\n<!-- File: .agents/skills/worklets-cherry-pick/SKILL.md (Tokens: ~3035 | Category: anthropic-skill) -->\n---\nname: worklets-cherry-pick\ndescription:\n  Cherry-pick merged PRs from main onto a Worklets release branch (e.g. worklets-0.13-stable) in isolated worktrees, then open\n  corresponding PRs and update the tracking issue. Use when asked to cherry-pick, backport, or pick a PR onto a\n  `worklets-<X.Y>-stable` branch, or when preparing a Worklets patch release.\n---\n\n# Cherry-pick PRs onto a Worklets release branch\n\nBackports merged upstream PRs onto a release branch (e.g. `worklets-0.13-stable`) using one worktree per PR so the cherry-picks\ndon't fight over the same working tree. Each cherry-pick becomes its own PR (open it ready-for-review — drafting is optional),\nand the tracking issue for the release is updated with links.\n\n## Inputs\n\nAsk for or extract from the request:\n\n- **Release branch** — e.g. `worklets-0.13-stable`\n- **PR list** — one or more GitHub PR URLs / numbers in `software-mansion/react-native-reanimated`\n  Use only the PR number for `<PR>` and `$pr` in branch names, paths and commands.\n- **Tracking issue** — the \"Worklets X.Y.Z cherry-pick thread\" issue. Some titles use the form `[Worklets] [X.Y.Z] cherry-pick thread`.\n  Ask if not provided.\n\n## Naming conventions\n\n| Thing          | Pattern                                                                                                       |\n| -------------- | ------------------------------------------------------------------------------------------------------------- |\n| Local branch   | `@<you>/<release-branch>/cherry-pick-#<PR>` (contains `#` — quote it in shell)                                |\n| Worktree path  | `../rwr-cp-<PR>` (sibling of the repo, **not** inside it)                                            |\n| PR title       | `cherry-pick(<release-branch>): <upstream title with conv-commit prefix stripped> (#<PR>)`                    |\n| PR body        | `Cherry-picking #<PR>` — no AI preamble                                                                       |\n| Commit message | Upstream message + `(cherry picked from commit <sha>)` trailer (git writes this to `MERGE_MSG` automatically) |\n\n`<you>` is your GitHub login (`gh api user --jq .login`). `origin` must be `software-mansion/react-native-reanimated`, because\nthe branches are pushed to the upstream repository. Run the commands from the root of your main checkout, so `../` is\nits parent directory.\n\nExample strip: `fix(Worklets): Babel plugin not detecting production environment` →\n`Babel plugin not detecting production environment`.\n\n## Authorship\n\n- **Author** = original upstream PR author. Preserve their name and email.\n- **Committer** = the user running this skill (their git config).\n- If original author differs from user, add the user as `Co-authored-by:` trailer.\n- **Never** add `Co-Authored-By: Claude` or `🤖 Generated with Claude Code` anywhere — not in commits, not in PR bodies.\n\n## Procedure\n\n### 1. Gather PR metadata\n\nStep 2 creates the worktrees for all PRs. Then complete step 1 and steps 3 to 9 for one PR before you start the next PR,\nand set `sha`, `title` and `author` again in step 1 for each PR.\n\nFor each PR, capture merge commit SHA + upstream title + original author. Keep the upstream values in shell variables and\npass them quoted (`\"$author\"`, `\"$title\"`). Never type them into a command: a backtick or `$(...)` in a title runs as a\ncommand inside double quotes.\n\n```bash\ngit fetch origin main\nsha=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json mergeCommit --jq .mergeCommit.oid)\"\ngit cat-file -e \"$sha^{commit}\"\ntitle=\"$(gh pr view <PR> --repo software-mansion/react-native-reanimated --json title --jq .title | sed -E 's/^[a-z]+(\\([^)]*\\))?!?: //')\"\nauthor=\"$(git show -s --format='%an <%ae>' \"$sha\")\"\ngit show -s --format='%P%n%s' \"$sha\"\n```\n\n`git cat-file -e` fails when the commit is not in the clone. Then fetch again and check that the PR is merged.\n\nThe last command prints the parent SHAs on the first line and the subject on the second. This repo squash-merges PRs, so\ncontinue only when the first line has exactly one SHA and the subject ends with `(#<PR>)`. Otherwise the PR was merged in a\ndifferent way. Stop and ask the user.\n\n### 2. Create worktrees\n\n```bash\ngit fetch origin <release-branch>\nfor pr in <PR1> <PR2> …; do\n  git worktree add -b \"@<you>/<release-branch>/cherry-pick-#$pr\" \\\n    ../rwr-cp-$pr origin/<release-branch>\ndone\n```\n\n### 3. Cherry-pick with `--no-commit`\n\n```bash\ncd ../rwr-cp-<PR>\ngit cherry-pick --no-commit -x \"$sha\"\n```\n\nNote: `-x` does **nothing** when combined with `--no-commit` (the `(cherry picked from commit …)` trailer is only added when\ncherry-pick itself commits). Fortunately git writes the full upstream message + trailer to `MERGE_MSG` on `--no-commit`, so step\n5 recovers it.\n\n### 3a. Keep only the Worklets part\n\nIf the upstream PR also changes Reanimated, leave the Reanimated part out of the cherry-pick: restore `packages/react-native-reanimated/` from the\nrelease branch. This also removes the Reanimated changelog fragment. A Worklets release branch does not release Reanimated.\n\n```bash\ngit restore --source=origin/<release-branch> --staged --worktree -- packages/react-native-reanimated\n```\n\n### 3b. Keep the changelog entry\n\nOn stable branches newer than `worklets-0.13-stable`, the upstream changelog fragment in\n`packages/react-native-worklets/changelog/` comes with the cherry-pick. Keep it. On `worklets-0.13-stable` and older, the\nbranch uses the old layout: delete the fragment and add a bullet under `## Unpublished` in\n`packages/react-native-worklets/CHANGELOG.md` with the PR and author links. See the changelog item of the \"Cross-cutting\nchange checklist\" in `AGENTS.md`.\n\n### 4. Resolve conflicts\n\nCommon one on 0.9-stable: `scripts/patches/resolutions.patch` doesn't exist on the release branch (it was introduced by \"enable\nBundle Mode by default\" which never landed on 0.9). Drop the hunk:\n\n```bash\ngit rm scripts/patches/resolutions.patch\n```\n\nGeneral rule: files/hunks that reference infrastructure absent from the release branch should be dropped, not force-merged. When\nin doubt, check `git log --all -- <path>` to see if the file was ever on the release branch.\n\n**Not every conflict is a drop.** Stable branches often retain code that `main` has since refactored away (an inlined visitor,\nan extra pass field, an import that moved), so a backport can conflict _additively_ — the incoming hunk and the branch's own\ncode both belong. Resolve those by keeping **both** sides, not by dropping either. Seen backporting #10032 onto\n0.10/0.11-stable: the `globals.ts` import block and a `WorkletsPluginPass` field each conflicted additively (the branch still\nhad `autoworkletizationPlugin` + `@babel/*` type imports that `main` had moved out).\n\n### 5. Commit\n\n**Use the gitdir path — `.git` in a worktree is a file, not a directory. `git commit -F .git/MERGE_MSG` fails silently with\n`Not a directory`.**\n\nConflict-free apply — commit MERGE\\_MSG directly:\n\n```bash\ngit commit -F \"$(git rev-parse --git-dir)/MERGE_MSG\"\n```\n\n**If the cherry-pick conflicted**, git appends a trailing `# Conflicts:` comment block to MERGE\\_MSG. `git commit -F` uses\n`whitespace` cleanup, which keeps `#` lines, so that block ends up in the commit message. You **can't** fix it with\n`--cleanup=strip` — the upstream PR body legitimately contains `##`/`###` markdown headers that `strip` would delete along with\nit. Cut only the `# Conflicts:` block first, then commit the cleaned file:\n\n```bash\nmm=\"$(git rev-parse --git-dir)/MERGE_MSG\"\nawk '/^# Conflicts:/{exit} {print}' \"$mm\" > \"$mm.clean\"\ngit commit -F \"$mm.clean\"\n```\n\n### 6. Fix authorship (only when original author ≠ user)\n\nDecide this before you commit in step 5. If original author = user, skip this step.\n\nIf the upstream squash commit already has a `Co-authored-by: <you>` trailer (GitHub's squash-merge often adds it, and it\ncomes into MERGE\\_MSG), **don't add it twice**. Add `--author` to the step 5 commit command instead:\n\n```bash\ngit commit --author=\"$author\" -F \"<message-file>\"\n```\n\nOtherwise, commit as in step 5, then add the trailer and set the author with an amend:\n\n```bash\ngit log -1 --format=%B | \\\n  git interpret-trailers --trailer \"Co-authored-by: <User Name> <user@email>\" | \\\n  git commit --amend --author=\"$author\" -F -\n```\n\n### 7. Push\n\n```bash\ngit push -u origin \"@<you>/<release-branch>/cherry-pick-#<PR>\"\n```\n\nIf a previous failed attempt left an empty branch on remote, use `--force-with-lease`.\n\n### 8. Open the PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is just `Cherry-picking #<PR>` — no AI preamble.\n\n```bash\ngh pr create --repo software-mansion/react-native-reanimated \\\n  --base <release-branch> \\\n  --head \"@<you>/<release-branch>/cherry-pick-#<PR>\" \\\n  --title \"cherry-pick(<release-branch>): $title (#<PR>)\" \\\n  --body \"Cherry-picking #<PR>\"\n```\n\n### 9. Update tracking issue\n\nThe tracking issue lists the upstream PRs. Under each upstream PR, add the cherry-pick PR as a nested item:\n\n```\n- https://github.com/software-mansion/react-native-reanimated/pull/<PR>\n  - https://github.com/software-mansion/react-native-reanimated/pull/<cherry-pick PR>\n```\n\nIf the upstream PR is not in the list yet, add both lines. Read the body with `gh issue view <N> --repo software-mansion/react-native-reanimated --json body --jq .body > <file>`, and write it\nback with `gh api repos/software-mansion/react-native-reanimated/issues/<N> -X PATCH -F body=@<file>`. Keep the rest of the body unchanged.\n\n### 10. Cleanup (after PRs are merged)\n\n```bash\nfor pr in <PR1> <PR2> …; do\n  git worktree remove ../rwr-cp-$pr\n  git branch -D \"@<you>/<release-branch>/cherry-pick-#$pr\"\ndone\n```\n\nThe upstream repo has \"Automatically delete head branches\" enabled — remote branches disappear on merge. Verify with\n`git ls-remote origin \"<branch>\"` if unsure.\n\n## Confirmation checkpoints\n\nBefore executing steps that create externally visible artifacts, confirm scope with the user:\n\n- Before `gh pr create` — first run only, to verify title/body format is right.\n- Before `git push --force-with-lease` — force-push is fine on private cherry-pick branches but flag it.\n- Before amending a commit that changes authorship — surface the change.\n\nLocal worktree/branch operations don't need confirmation; they're reversible.\n\n## Gotchas checklist\n\n- [ ] `.git` in a worktree is a **file**. Use `$(git rev-parse --git-dir)/MERGE_MSG`, not `.git/MERGE_MSG`.\n- [ ] `-x` on `--no-commit` cherry-pick does nothing — recover the trailer from `MERGE_MSG`.\n- [ ] `--no-commit` with a conflict-free apply does **not** leave a cherry-pick in progress. `git cherry-pick --continue` will\n  error with \"no cherry-pick in progress\". Just commit.\n- [ ] Chained `git commit && git push` after a silent commit failure can push an empty branch (release-branch tip) to origin. If\n  it happens, force-push over it after committing correctly.\n- [ ] Branch names contain `#` — always quote in shell commands.\n- [ ] Conflicted cherry-pick → MERGE\\_MSG gets a trailing `# Conflicts:` block that `git commit -F` keeps (whitespace cleanup).\n  Strip only that block with `awk '/^# Conflicts:/{exit} {print}'`; don't use `--cleanup=strip` — it also deletes the body's\n  `##`/`###` markdown headers.\n- [ ] If the upstream squash commit already carries a `Co-authored-by: <you>` trailer (GitHub usually adds it), don't re-add it\n  — just commit with `--author=` directly.\n- [ ] Cherry-pick PRs may be opened ready-for-review (omit `--draft`); no AI preamble in the body.\n- [ ] The Claude Code auto-mode classifier may block commits mid-flow if the user earlier said \"don't commit\". Ask the user for\n  explicit re-authorization.\n\n<!-- File: .agents/skills/worklets-release/SKILL.md (Tokens: ~3474 | Category: anthropic-skill) -->\n---\nname: worklets-release\ndescription: Prepare a Worklets patch release from a worklets-<X.Y>-stable branch - bump the version, rebuild app pods, open a release PR, and run the npm publish workflow as a dry run. On explicit request also does the real npm publish and the GitHub release. Use when asked to prepare, cut, or release Worklets X.Y.Z, or after a cherry-pick thread is fully merged.\n---\n\n# Prepare a Worklets patch release\n\nCuts a release of `react-native-worklets` from a stable branch (e.g. `worklets-0.13-stable`) in an isolated worktree: version bump via package scripts, pod lockfile regeneration, a `release(Worklets): X.Y.Z` PR, and a dry-run of the `npm worklets publish` workflow linked from the PR description. On explicit request it also runs the real npm publish (step 13) and creates the GitHub release with the published tarball attached (step 14).\n\nReference examples: PR #10598 (`release(Worklets): 0.13.0`) and PR #10469 (`release(Worklets): 0.12.2`).\n\n## Inputs\n\n- **Version** — e.g. `0.13.1`. Infer the branch from it: `worklets-0.13-stable`.\n- **Release branch** — `worklets-<X.Y>-stable`.\n- Optionally the cherry-pick tracking issue (\"Worklets X.Y.Z cherry-pick thread\") — verify every cherry-pick PR in it is merged before starting.\n\n## Naming conventions\n\n| Thing | Pattern |\n|---|---|\n| `<you>` | your GitHub login (`gh api user --jq .login`) |\n| Worktree path | `../rwr-release-<version>` (sibling of the repo; `rwr` because it's a Worklets release) |\n| Branch | `@<you>/worklets/release-<version>` |\n| Commit + PR title | `release(Worklets): <version>` |\n| PR body | `## Summary` / `Releasing Worklets <version>` / `Dry run CI: <run URL>` (bare URL). **No AI preamble** — recent release PRs (#10598, #10469) don't carry one. |\n\n## Expected diff\n\nThese files, matching prior release commits:\n\n- `packages/react-native-worklets/package.json` (version)\n- `packages/react-native-worklets/src/debug/jsVersion.ts` (version)\n- `apps/fabric-example/ios/Podfile.lock` (RNWorklets pinned to new version)\n- `apps/tvos-example/ios/Podfile.lock` (same)\n- The changelog (step 3a): `packages/react-native-worklets/CHANGELOG.md`, plus the deleted fragments in `packages/react-native-worklets/changelog/` on stable branches newer than `worklets-0.13-stable`.\n\n`apps/macos-example/macos/Podfile.lock` is **not** part of a release commit — see gotchas.\n\n## Procedure\n\n### 1. Verify the branch tip\n\n```bash\ngit fetch origin <release-branch>\ngit log --oneline -5 origin/<release-branch>\n```\n\nConfirm all expected cherry-picks are present (cross-check the tracking issue).\n\n### 2. Worktree + install\n\n```bash\ngit worktree add -b '@<you>/worklets/release-<version>' \\\n  ../rwr-release-<version> origin/<release-branch>\ncd ../rwr-release-<version>\nyarn install\n```\n\n`yarn install` is mandatory in a fresh worktree — workspace scripts and the pre-commit hook fail without it (\"Couldn't find the node\\_modules state file\").\n\n### 3. Bump the version\n\n```bash\nyarn workspace react-native-worklets set-version --version <version>\n```\n\nUpdates `package.json` and `src/debug/jsVersion.ts`, prints the previous version. Never hand-edit these.\n\n### 3a. Update the changelog\n\nOn stable branches newer than `worklets-0.13-stable`, move the changelog fragments into `CHANGELOG.md`. The script needs `gh` to read the authors:\n\n```bash\nyarn workspace react-native-worklets changelog:squash <version>\n```\n\nIf a fragment has no `pr: N` line, it reads the PR number from the first `(#N)` in the subject of the commit that added it.\nIt fails when neither source gives a PR number. Then add a `pr: N` line to that fragment and run it again (see `packages/react-native-reanimated/RELEASE.md`).\n\n`worklets-0.13-stable` and older have no fragments. There, move the `## Unpublished` entries in `packages/react-native-worklets/CHANGELOG.md` under a new\n`## <version> — <YYYY-MM-DD>` heading by hand, and keep the empty `## Unpublished` section above it.\n\n### 4. Build the packages\n\n```bash\nyarn build   # in the worktree root\n```\n\nRuns `prepare-vscode` and `build-packages` (builds `react-native-reanimated`, which builds Worklets and its Babel plugin as dependencies). Do this before `build-apps`.\n\n### 5. Format and lint\n\n```bash\nyarn format\nyarn lint\n```\n\nBoth run across all workspaces (minutes — background them if needed). They must not change the working tree beyond the version bump — if `format` touches anything or `lint` fails, stop and investigate before committing.\n\n### 6. Rebuild app pods\n\n```bash\nyarn build-apps   # in the worktree root; takes minutes — run in background\n```\n\nThis runs `build` in `common-app` and every `*-example` workspace in parallel. **Expected partial failure**: on older stable branches `macos-example` fails the podspec compatibility assert (`worklets_assert_minimal_react_native_version`), because `compatibility.json` for the Worklets minor doesn't include the RN version `react-native-macos` pairs with. This failure predates the bump (the old version fails identically) and prior release commits ship without the macos lockfile — ignore it, but verify both iOS lockfiles did regenerate before the failure stopped the run:\n\n```bash\ngrep 'RNWorklets (' apps/fabric-example/ios/Podfile.lock apps/tvos-example/ios/Podfile.lock\n```\n\nIf they show the new version and `git status` shows only the expected files, proceed.\n\n### 7. Commit and push\n\n```bash\ngit add -A\ngit commit -m 'release(Worklets): <version>'\ngit push -u origin '@<you>/worklets/release-<version>'\n```\n\n### 8. Open the release PR\n\nOpen it ready-for-review (omit `--draft`); drafting is optional. The body is the minimal three lines below — **no AI preamble** (recent release PRs #10598 / #10469 don't carry one). The CI link is added in step 10.\n\n```bash\ngh pr create --base <release-branch> \\\n  --head '@<you>/worklets/release-<version>' \\\n  --title 'release(Worklets): <version>' \\\n  --body '## Summary\n\nReleasing Worklets <version>'\n```\n\n### 9. Dispatch the publish workflow as a dry run\n\n```bash\ngh workflow run 'npm worklets publish' --ref '@<you>/worklets/release-<version>' \\\n  -f publish=false -f release-type=stable -f version=<version>\n```\n\n`publish=false` (also the default) maps to `dry-run: true` in the shared `software-mansion/npm-package-publish` action — the run packs the tarball and uploads it as an artifact but cannot publish. Never pass `publish=true` without an explicit user request.\n\nGrab the run URL:\n\n```bash\ngh run list --workflow 'npm worklets publish' \\\n  --branch '@<you>/worklets/release-<version>' --limit 1 --json url,databaseId\n```\n\n### 10. Link the run in the PR description\n\n`gh pr edit` fails in this repo with a GraphQL \"Projects (classic)\" deprecation error. Patch via REST instead:\n\n```bash\ngh api repos/software-mansion/react-native-reanimated/pulls/<N> -X PATCH -f body='...'\n```\n\n### 11. Verify the dry run\n\nWait for the run to complete (Monitor/poll `gh run view <id>`), then confirm in the job log:\n\n- dispatch inputs show `publish: false` and the action received `dry-run: true`;\n- the publish line ends with `(dry-run)`: `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access (dry-run)`;\n- the tag is sane: `legacy` when releasing a patch for an older minor, `latest` for the current one (decided by `should-be-latest.js`).\n\n```bash\njobid=$(gh run view <run-id> --json jobs --jq '.jobs[0].databaseId')\ngh api \"repos/software-mansion/react-native-reanimated/actions/jobs/$jobid/logs\" | grep -e 'dry' -e 'Publishing to'\n```\n\nA dry run leaves no trace on the npm registry, so the workflow log is the authoritative evidence.\n\n### 12. Smoke-test fabric-example (when asked)\n\nVerify the release branch tip runs in development on both platforms, using argent (load `argent-react-native-app-workflow` first):\n\n- Start Metro from the release worktree: `yarn react-native start --port <port>` in `apps/fabric-example`. 8081/8082 are often taken by other sessions — check with `lsof -nP -i :<port>` and pick a free one; never kill an existing Metro, it may belong to another active session.\n- iOS: `yarn react-native run-ios --udid <udid> --port <port> --scheme \"Debug FabricExample\"`, then `xcrun simctl spawn <udid> defaults write org.reactjs.native.example.FabricExample RCT_jsLocation \"localhost:<port>\"` and relaunch. A \"React Native version mismatch\" redbox whose native version matches another branch means a stale install survived (happens when the CoreSimulator session breaks mid-install) — `reinstall-app` from `ios/Build/Products/Debug-iphonesimulator/FabricExample.app` and re-apply `RCT_jsLocation` (reinstall clears it).\n- Android: `yarn react-native run-android --deviceId <serial> --port <port> --active-arch-only` — `gradle.properties` pins all four ABIs, so always pass `--active-arch-only` for a single-emulator check. Then `adb -s <serial> reverse tcp:8081 tcp:<port>`.\n- Verify: the examples list renders, an animation example actually animates (e.g. \"Detach animated styles\" or \"Bokeh\"), and `globalThis._WORKLETS_VERSION_CPP` (via `debugger-evaluate`) equals the release version.\n\n### 13. Actual publish (separate, explicit step)\n\nOnly after the user reviews, merges the release PR, and explicitly asks: re-dispatch the workflow with `-f publish=true` (same `release-type` and `version`). **Dispatch against the merged stable branch, not the release worktree branch** — the release branch auto-deletes on merge, so `--ref '@<you>/worklets/release-<version>'` would fail with \"ref not found\":\n\n```bash\ngh workflow run 'npm worklets publish' --ref worklets-<X.Y>-stable \\\n  -f publish=true -f release-type=stable -f version=<version>\n```\n\nVerify the job log the same way as step 11, but the real-publish signature has **no** `(dry-run)` suffix:\n\n- `dry-run: false` in the dispatch inputs;\n- `npm notice Publishing to https://registry.npmjs.org/ with tag <tag> and default access` (no `(dry-run)`), followed by `+ react-native-worklets@<version>`.\n\nNever do this as part of preparing the release.\n\n### 14. GitHub release (after publish)\n\nThe publish workflow only pushes to npm — it does **not** create the git tag or the GitHub release. Do that manually once published. Convention: release title `Worklets - X.Y.Z`, git tag `worklets-X.Y.Z` (see prior releases via `gh release list`).\n\n```bash\ngit fetch origin worklets-<X.Y>-stable   # the merged release commit must be in the ref\nsha=$(git rev-parse origin/worklets-<X.Y>-stable)   # FULL 40-char SHA — see gotcha\ngh release create worklets-<version> --draft --target \"$sha\" \\\n  --title 'Worklets - <version>' \\\n  --generate-notes --notes-start-tag worklets-<previous-version>\n```\n\n- **`--target` must be the full 40-char SHA.** An abbreviated SHA returns `HTTP 422: target_commitish is invalid`.\n- `--generate-notes --notes-start-tag worklets-<prev>` reproduces the `## What's Changed` list plus the `worklets-<prev>...worklets-<version>` compare link, matching prior releases.\n- For a patch of an older minor, add `--latest=false`. Only a release of the newest minor is marked as the latest release\n  (for example, `Worklets - 0.12.2` is not the latest release).\n- Created with `--draft`; the `worklets-X.Y.Z` git tag is only created when the draft is published. Leave publishing the draft to the user unless they ask.\n\nAttach the published tarball to the release:\n\n```bash\nnpm pack react-native-worklets@<version>            # downloads the published .tgz\ngh release upload worklets-<version> react-native-worklets-<version>.tgz\n```\n\n### 15. Cleanup (after the PR is merged)\n\n```bash\nxcrun simctl spawn <udid> defaults delete org.reactjs.native.example.FabricExample RCT_jsLocation   # only if you ran step 12\ngit worktree remove ../rwr-release-<version>\ngit branch -D '@<you>/worklets/release-<version>'\n```\n\n## Confirmation checkpoints\n\n- Before `gh pr create` — confirm version and branch tip contents if anything looks off (e.g. unexpected commits on the stable branch).\n- Before any dispatch with `publish=true` — always; publishing is irreversible.\n\n## Gotchas checklist\n\n- [ ] Fresh worktree without `yarn install` breaks workspace scripts and the pre-commit hook.\n- [ ] `yarn build-apps` fails in `macos-example` on older stable branches — pre-existing compatibility gap, not caused by the bump; release commits ship without the macos lockfile.\n- [ ] The final diff must be exactly the files listed above; anything else means the branch or build did something unexpected.\n- [ ] `publish=false` is the workflow default, but pass it explicitly so the intent is visible in the run's inputs.\n- [ ] `gh pr edit` is broken by the projectCards GraphQL deprecation — use `gh api ... -X PATCH -f body=`.\n- [ ] Verify a dry run via the workflow log, not the npm registry.\n- [ ] Branch names contain `@` and the workflow name contains spaces — quote both in shell.\n- [ ] npm tag: `legacy` for old-minor patches is correct, not a bug.\n- [ ] Actual publish (step 13) must dispatch `--ref worklets-<X.Y>-stable`, not the release worktree branch — that branch auto-deletes on merge.\n- [ ] The publish workflow does NOT create git tags or GitHub releases — that's the manual step 14.\n- [ ] `gh release create --target` needs the FULL 40-char SHA; an abbreviated SHA returns HTTP 422 \"target\\_commitish is invalid\".\n- [ ] Patches often target more than one maintained minor (e.g. current + previous, when the older line is still supported) — run this skill once per minor, each from its own `worklets-<X.Y>-stable` branch.\n\n<!-- File: packages/eslint-plugin-reanimated/__tests__/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# __tests__ Skill\n\nPath: `packages/eslint-plugin-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/eslint-plugin-reanimated/__tests__/tsconfig.json)\n\n<!-- File: packages/eslint-plugin-reanimated/.oxlintrc.json (Tokens: ~94 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"types/**\"],\n  \"rules\": {\n    \"no-bitwise\": \"error\"\n  }\n}\n\n<!-- File: packages/eslint-plugin-reanimated/package.json (Tokens: ~275 | Category: anthropic-skill) -->\n{\n  \"name\": \"eslint-plugin-reanimated\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"types\": \"types/index.d.ts\",\n  \"scripts\": {\n    \"test\": \"yarn run --top-level jest\",\n    \"bundle\": \"yarn esbuild ./public/index.js --external:espree --external:@typescript-eslint --platform=node --bundle --outfile=./index.js\",\n    \"build\": \"yarn tsc && yarn bundle && rm -rf ./public/* && yarn format\",\n    \"lint\": \"yarn run --top-level oxlint --max-warnings=0 src --ignore-pattern 'types/**'\",\n    \"format\": \"yarn run --top-level oxfmt .\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"24.0.14\",\n    \"@typescript-eslint/parser\": \"8.62.1\",\n    \"@typescript-eslint/rule-tester\": \"8.62.1\",\n    \"@typescript-eslint/utils\": \"8.62.1\",\n    \"esbuild\": \"0.25.10\",\n    \"eslint\": \"9.37.0\",\n    \"ts-jest\": \"29.4.12\",\n    \"typescript\": \"5.9.3\"\n  }\n}\n\n<!-- File: packages/eslint-plugin-reanimated/tsconfig.json (Tokens: ~126 | Category: anthropic-skill) -->\n{\n  \"compilerOptions\": {\n    \"preserveSymlinks\": true,\n    \"jsx\": \"react-native\",\n    \"skipLibCheck\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"moduleResolution\": \"bundler\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"outDir\": \"public\",\n    \"rootDir\": \"src\",\n    \"declaration\": true,\n    \"declarationDir\": \"types\"\n  },\n  \"include\": [\"src\"]\n}\n\n<!-- File: packages/react-native-reanimated/__tests__/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# __tests__ Skill\n\nPath: `packages/react-native-reanimated/__tests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__tests__/tsconfig.json)\n\n<!-- File: packages/react-native-reanimated/__typetests__/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.json)\n\n<!-- File: packages/react-native-reanimated/__typetests__/tsconfig.web.json (Tokens: ~300 | Category: anthropic-skill) -->\n# __typetests__ Skill\n\nPath: `packages/react-native-reanimated/__typetests__/tsconfig.web.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/__typetests__/tsconfig.web.json)\n\n<!-- File: packages/react-native-reanimated/.oxlintrc.json (Tokens: ~325 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"../../node_modules/oxlint/configuration_schema.json\",\n  \"extends\": [\"../../.oxlintrc.json\"],\n  \"jsPlugins\": [\"eslint-plugin-reanimated\"],\n  \"env\": {\n    \"builtin\": true,\n    \"es2026\": true,\n    \"node\": true,\n    \"commonjs\": true,\n    \"jest\": true\n  },\n  \"ignorePatterns\": [\"**/lib/**\", \"**/android/**\", \"**/apple/**\"],\n  \"rules\": {\n    \"reanimated/use-reanimated-error\": \"error\",\n    \"reanimated/use-logger\": \"error\",\n    \"reanimated/no-logger-message-prefix\": \"error\",\n    \"reanimated/use-global-this\": \"error\",\n    \"no-unused-expressions\": \"error\"\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"**/*.ts\", \"**/*.tsx\"],\n      \"rules\": {\n        \"no-empty-function\": \"error\",\n        \"typescript/no-explicit-any\": \"error\",\n        \"n/no-unpublished-import\": [\n          \"error\",\n          {\n            \"ignoreTypeImport\": true,\n            \"ignorePrivate\": true\n          }\n        ]\n      }\n    },\n    {\n      \"files\": [\"**/*.test.ts\", \"**/*.test.tsx\"],\n      \"rules\": {\n        \"typescript/unbound-method\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"src/**/*.ts\", \"src/**/*.tsx\"],\n      \"rules\": {\n        \"eslint-core/strict\": [\"error\", \"global\"]\n      }\n    }\n  ]\n}\n\n<!-- File: packages/react-native-reanimated/CHANGELOG.md (Tokens: ~5800 | Category: anthropic-skill) -->\n# Changelog\n\n## 4.7.0 — 2026-09-18\n\n### 🛠 Breaking changes\n\n- `AnimatedRefOnUI` is now a `ShareableHost<ShadowNodeWrapper | null>` read with `.value` instead of a callable, and `AnimatedRefOnJS` was renamed to `AnimatedRefOnRN`. `measure` on an unmounted ref now returns `null` and warns instead of calling into `_measure`. ([#10413](https://github.com/software-mansion/react-native-reanimated/pull/10413) by [@tjzel](https://github.com/tjzel))\n- Remove the `USE_SYNCHRONIZABLE_FOR_MUTABLES` feature flag. Mutables always use Synchronizable state now. ([#10298](https://github.com/software-mansion/react-native-reanimated/pull/10298) by [@tjzel](https://github.com/tjzel))\n- Make the light-tree layout animations proxy the default. Enable the new `USE_LEGACY_LAYOUT_ANIMATIONS_PROXY` feature flag to roll back to the previous implementation. The legacy proxy does not support Shared Element Transitions, so `ENABLE_SHARED_ELEMENT_TRANSITIONS` must be off when you enable it. ([#10423](https://github.com/software-mansion/react-native-reanimated/pull/10423) by [@pawicao](https://github.com/pawicao))\n\n### 🎉 New features\n\n- Run `shadowColor` CSS transitions on the Android platform animation path on Android 9 and newer. ([#10547](https://github.com/software-mansion/react-native-reanimated/pull/10547) by [@MatiPl01](https://github.com/MatiPl01))\n- Run CSS transitions for `backgroundColor`, `borderColor`, and numeric `borderRadius` on the Android platform animation path. ([#10310](https://github.com/software-mansion/react-native-reanimated/pull/10310) by [@MatiPl01](https://github.com/MatiPl01))\n- Add `backgroundImage` support to animated styles. Linear and radial gradients are accepted as objects or CSS strings and processed on the UI thread. ([#10486](https://github.com/software-mansion/react-native-reanimated/pull/10486) by [@tshmieldev](https://github.com/tshmieldev))\n- Add iOS Swift Package Manager support via `Package.swift` and SPM integration metadata in `react-native.config.js`, with a dependency on `RNWorklets`. ([#10472](https://github.com/software-mansion/react-native-reanimated/pull/10472) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Add an optional `onLog` callback as a second argument to `configureReanimatedLogger`, invoked for every warning and error that passes the `level` and `strict` filters, in addition to the default console output. On native, logs raised on the UI runtime are delivered asynchronously on the React Native Runtime. ([#10482](https://github.com/software-mansion/react-native-reanimated/pull/10482) by [@douglowder](https://github.com/douglowder))\n\n### 🐛 Bug fixes\n\n- Fix a property removed from `transitionProperty` while it transitions to or from `undefined` (its style key was just removed or added) finishing the transition instead of snapping to the committed value. ([#10613](https://github.com/software-mansion/react-native-reanimated/pull/10613) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix a property removed from `transitionProperty` mid-transition reverting to the interpolator default (for example `borderRadius: 0`) instead of the committed style on Android. ([#10614](https://github.com/software-mansion/react-native-reanimated/pull/10614) by [@MatiPl01](https://github.com/MatiPl01))\n- Reject a `backgroundImage` gradient given as an object when a transition hint is not placed between two color stops, and reject gradients with fewer than two color stops in both the object and the string form; React Native crashes on iOS or Android when such values reach the renderer. ([#10589](https://github.com/software-mansion/react-native-reanimated/pull/10589) by [@matipl01](https://github.com/matipl01))\n- Fix a crash in the light tree based Layout Animations proxy when a view is flattened while one of its children is removed in the same commit. ([#10628](https://github.com/software-mansion/react-native-reanimated/pull/10628) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Remove `zIndex` from the synchronous props. No platform applies `zIndex` to a mounted view, so with `IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS` on, an animated style with only `zIndex` and `elevation` never reached the shadow tree commit and the views did not reorder until a later React render. ([#10602](https://github.com/software-mansion/react-native-reanimated/pull/10602) by [@pawicao](https://github.com/pawicao))\n- Stop passing `forwardedRef` and `nativeID` to the wrapped component on web, which React Strict DOM reported as invalid props. ([#10605](https://github.com/software-mansion/react-native-reanimated/pull/10605) by [@tjzel](https://github.com/tjzel))\n- Preserve Android color and other prop updates when hiding and restoring shared transition views. ([#10601](https://github.com/software-mansion/react-native-reanimated/pull/10601) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Prevent Shared Transition Boundaries from intercepting touches intended for sibling views while keeping their children interactive. ([#10600](https://github.com/software-mansion/react-native-reanimated/pull/10600) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Skip exiting animations in the light tree based Layout Animations proxy when a surface is stopped, so the empty-root transaction removes the views at once instead of starting animations on a dead surface and leaving their component views registered on iOS. ([#10586](https://github.com/software-mansion/react-native-reanimated/pull/10586) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Resolve a percent translate of a shared view or of its ancestor with the size of the view that owns it in shared element transitions, so the transition copy no longer starts at a wrong position and `translateX: '50%'` no longer animates as 50 points. ([#10617](https://github.com/software-mansion/react-native-reanimated/pull/10617) by [@pawicao](https://github.com/pawicao))\n- Start a shared element transition from the frame of a running layout animation on the source view. ([#10556](https://github.com/software-mansion/react-native-reanimated/pull/10556) by [@pawicao](https://github.com/pawicao))\n- Track synchronous prop updates in the layout animations bookkeeping behind the `TRACK_SYNCHRONOUS_PROPS_IN_LAYOUT_ANIMATIONS` dynamic feature flag, so shared element transitions and layout animations start from the current props of a view that moved through the synchronous path; warn in development when a transition or layout animation starts on such a view with the flag off. A queued or running layout animation always receives the synchronous props, so a prop changed during the animation no longer blinks back on the next frame. The synchronous-update feature flags now work together with `ENABLE_SHARED_ELEMENT_TRANSITIONS`. ([#10522](https://github.com/software-mansion/react-native-reanimated/pull/10522) by [@pawicao](https://github.com/pawicao))\n- Carry a view's current registry values in the Reanimated commits that change its layout props, so iOS no longer writes a stale transform back to a view that moved through the synchronous path. ([#10416](https://github.com/software-mansion/react-native-reanimated/pull/10416) by [@pawicao](https://github.com/pawicao))\n- Warn only once per caller when dependencies are passed to native hooks. ([#10562](https://github.com/software-mansion/react-native-reanimated/pull/10562) by [@tshmieldev](https://github.com/tshmieldev))\n- Release the shadow tree of a stopped surface; the last mounted root of every surface was kept forever, so apps that start a surface per screen leaked the whole tree of every closed screen. ([#10579](https://github.com/software-mansion/react-native-reanimated/pull/10579) by [@MatiPl01](https://github.com/MatiPl01))\n- Keep `borderWidth` CSS transitions on the animation loop on iOS, so the children move with the border and no stray black border is drawn. ([#10569](https://github.com/software-mansion/react-native-reanimated/pull/10569) by [@MatiPl01](https://github.com/MatiPl01))\n- Resume a `shadowOffset` CSS transition from its in-flight value when it moves from Core Animation to the C++ loop, instead of restarting from the previously committed offset. ([#10564](https://github.com/software-mansion/react-native-reanimated/pull/10564) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix CSS platform transitions ignoring slow animations: on iOS they snapped to the end state under the Simulator's Slow Animations, and on Android they played at full speed under the dev-menu toggle. ([#10548](https://github.com/software-mansion/react-native-reanimated/pull/10548) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix the Release Android build failing on an unused variable in `SharedTransitions.cpp`, and the `backgroundImage` style types failing to compile with React Native 0.85, 0.86 and nightly. ([#10558](https://github.com/software-mansion/react-native-reanimated/pull/10558) by [@tjzel](https://github.com/tjzel))\n- Keep a delayed CSS transition at its start value when it is interrupted or reversed before its delay ends; the platform path used to evaluate the easing at progress 0, which is the end value for `step-start`. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Restore the underlying native style when a running CSS animation is removed or its `animationName` becomes `none`. ([#10528](https://github.com/software-mansion/react-native-reanimated/pull/10528) by [@MatiPl01](https://github.com/MatiPl01))\n- Fixed a crash after animations settled when `backgroundImage` was animated with `useAnimatedStyle`. The settled props sync now converts the native gradient format back before passing it to React. ([#10542](https://github.com/software-mansion/react-native-reanimated/pull/10542) by [@tshmieldev](https://github.com/tshmieldev))\n- Include the React Native version macros through `<React/Utils.h>` when it is available, so `cxxreact/ReactNativeVersion.h` deprecated on React Native `main` no longer breaks the build. ([#10536](https://github.com/software-mansion/react-native-reanimated/pull/10536) by [@tshmieldev](https://github.com/tshmieldev))\n- Fix a short `animationDelay` list on web applying no delay to the animations past its end instead of repeating, the way CSS does and the native path already did. ([#10442](https://github.com/software-mansion/react-native-reanimated/pull/10442) by [@dennytosp](https://github.com/dennytosp))\n- Fix padded string style values throwing, retaining their padding or parsing incorrectly, including SVG gradient stop offsets such as `'50% '`. ([#10422](https://github.com/software-mansion/react-native-reanimated/pull/10422) by [@matipl01](https://github.com/matipl01))\n- Fix `filter` strings using the CSS `hue-rotate()` and `drop-shadow()` spellings being discarded together with every other filter in the same declaration. ([#10383](https://github.com/software-mansion/react-native-reanimated/pull/10383) by [@dennytosp](https://github.com/dennytosp))\n- Fix single-argument `translate()` and `skew()` in transform strings repeating the argument on the Y axis instead of leaving it at zero, so `translate(100px)` no longer also moves the element down. ([#10385](https://github.com/software-mansion/react-native-reanimated/pull/10385) by [@dennytosp](https://github.com/dennytosp))\n- Fix the Metro configuration type import to use the public package export. ([#10454](https://github.com/software-mansion/react-native-reanimated/pull/10454) by [@sneakykiwi](https://github.com/sneakykiwi))\n- Skip the Android mounted-tag correction in Layout Animations when React Native's `enableMountingCoordinatorPullModelAndroid` feature flag is on, since the pull model already guarantees that updates can't outrun a view's first mount. ([#10481](https://github.com/software-mansion/react-native-reanimated/pull/10481) by [@piaskowyk](https://github.com/piaskowyk))\n- Fix `Keyframe` easings on web being dropped or applied to the wrong keyframe when the definitions use the `from`/`to` aliases or fractional offsets. ([#10386](https://github.com/software-mansion/react-native-reanimated/pull/10386) by [@dennytosp](https://github.com/dennytosp))\n- Fix `getViewProp` and the runtime-tests prop snapshotting crashing (segfault on style props, unhandled error on layout props) when the view is no longer mounted. ([#10443](https://github.com/software-mansion/react-native-reanimated/pull/10443) by [@tjzel](https://github.com/tjzel))\n- Ship the Jest resolver (`react-native-reanimated/jest/resolver`) in the npm package, so consumer projects can run Jest against Reanimated: the modules that require a real native module are resolved to their web implementations. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Fix mounting an animated component with attached event handlers (e.g. `useAnimatedScrollHandler`) under Jest crashing with `[Reanimated] registerEventHandler is not available in JSReanimated.` - `WorkletEventHandler` now resolves to its web variant in Jest. ([#10377](https://github.com/software-mansion/react-native-reanimated/pull/10377) by [@huextrat](https://github.com/huextrat))\n- Reset `IN_STYLE_UPDATER` even when an initial style updater throws, so a single updater error no longer leaves all animations returning raw values until reload. ([#10445](https://github.com/software-mansion/react-native-reanimated/pull/10445) by [@alexey-khatskelevich](https://github.com/alexey-khatskelevich))\n- Fix `./gradlew app:build` failing on `:lintAnalyzeDebug` with a K2 UAST crash on `.gradle.kts` build scripts - all lint tasks are now skipped, not only `lintVital*`. ([#10448](https://github.com/software-mansion/react-native-reanimated/pull/10448) by [@tshmieldev](https://github.com/tshmieldev))\n- Treat `animationName: []` as no animation, so the view is detached instead of running its previous animation forever. ([#10432](https://github.com/software-mansion/react-native-reanimated/pull/10432) by [@MatiPl01](https://github.com/MatiPl01))\n- Fix `SequencedTransition` on web scaling the wrong axis in its midpoint keyframe, so the axis that has already finished no longer collapses while the other one waits. ([#10384](https://github.com/software-mansion/react-native-reanimated/pull/10384) by [@dennytosp](https://github.com/dennytosp))\n- Fix native gestures (e.g. scrolling) not working inside `SharedTransitionBoundary` on Android by growing the boundary's zero-sized frame to cover its children. ([#10430](https://github.com/software-mansion/react-native-reanimated/pull/10430) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix `normalizeColor` resolving `Object.prototype` members such as `'constructor'` and `'toString'` as color names and returning a function instead of `null`. ([#10387](https://github.com/software-mansion/react-native-reanimated/pull/10387) by [@dennytosp](https://github.com/dennytosp))\n- Fix `transform` and `transformOrigin` strings padded with whitespace throwing instead of parsing. ([#10388](https://github.com/software-mansion/react-native-reanimated/pull/10388) by [@dennytosp](https://github.com/dennytosp))\n- Fix `linear()` easing not clamping an out-of-order input progress value on its first or last control point, which left the control points non-monotonic and the resulting curve wrong. ([#10380](https://github.com/software-mansion/react-native-reanimated/pull/10380) by [@dennytosp](https://github.com/dennytosp))\n- Fix fractional millisecond CSS time values, which were truncated (`16.67ms` became `16`) or read as `NaN` when written without a leading zero (`.5ms`). ([#10381](https://github.com/software-mansion/react-native-reanimated/pull/10381) by [@dennytosp](https://github.com/dennytosp))\n- Fix animated styles on sticky headers throwing an immutable-object mutation error in development. ([#10389](https://github.com/software-mansion/react-native-reanimated/pull/10389) by [@ngocdevv](https://github.com/ngocdevv))\n- Fix shared element transitions never running on Android for npm installs by publishing `react-native.config.js`, which registers the Shared Transition Boundary component descriptor for autolinking. ([#10375](https://github.com/software-mansion/react-native-reanimated/pull/10375) by [@dennytosp](https://github.com/dennytosp))\n- Keep exiting views at their position in the host tree, so they no longer draw above later siblings. ([#10392](https://github.com/software-mansion/react-native-reanimated/pull/10392) by [@pawicao](https://github.com/pawicao))\n- Apply Layout Animation config batches consistently at the mounting pull boundary. ([#10373](https://github.com/software-mansion/react-native-reanimated/pull/10373) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Retarget running and pending Layout Animations when their config changes and finish them at the mounted frame, so reordered list items no longer disappear or stick to a stale position. Preserve props-only updates, including during reordering, without restarting transitions. ([#10537](https://github.com/software-mansion/react-native-reanimated/pull/10537) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep running Layout Animations attached to views that move between parents by converting their frames through the light tree. ([#10538](https://github.com/software-mansion/react-native-reanimated/pull/10538) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Experimental Layout Animations cleanup ordering on Android. ([#10372](https://github.com/software-mansion/react-native-reanimated/pull/10372) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix interactive Shared Transitions cancellation and progress lifecycle ordering. ([#10371](https://github.com/software-mansion/react-native-reanimated/pull/10371) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Shared Transitions cleanup, restoration, and positioning in native-stack screens and modals. ([#10370](https://github.com/software-mansion/react-native-reanimated/pull/10370) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations replacement and completion ordering by centralizing native lifecycle operations. ([#10369](https://github.com/software-mansion/react-native-reanimated/pull/10369) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Fix Layout Animations state leaking between Fabric surfaces by using one proxy per surface. ([#10368](https://github.com/software-mansion/react-native-reanimated/pull/10368) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz))\n- Keep views hidden for the whole shared element transition, so a React update in the same commit no longer shows them again mid-transition. ([#10425](https://github.com/software-mansion/react-native-reanimated/pull/10425) by [@pawicao](https://github.com/pawicao))\n\n### 💡 Others\n\n- Patch `react-native-svg` in the example apps so its podspec targets iOS and tvOS 15.1, which Xcode 27 requires. ([#10607](https://github.com/software-mansion/react-native-reanimated/pull/10607) by [@tjzel](https://github.com/tjzel))\n- Added support for React Native 0.88. ([#10582](https://github.com/software-mansion/react-native-reanimated/pull/10582) by [@pawicao](https://github.com/pawicao))\n- Merge the accumulated Android raw props of a view in the layout animations light tree only when an animation, a shared element transition or a synchronous update reads that view, instead of on every commit. ([#10570](https://github.com/software-mansion/react-native-reanimated/pull/10570) by [@pawicao](https://github.com/pawicao))\n- Reduce Android layout animation overhead by skipping the raw props merge and props clone in the light tree when an Update reuses the same props pointer, and by moving the merged raw props instead of copying them. ([#10566](https://github.com/software-mansion/react-native-reanimated/pull/10566) by [@pawicao](https://github.com/pawicao))\n- Deduplicate the native CSS transition state machine across Android and iOS. ([#10356](https://github.com/software-mansion/react-native-reanimated/pull/10356) by [@MatiPl01](https://github.com/MatiPl01))\n- Move the `IOS_CSS_CORE_ANIMATION` and `ANDROID_CSS_PLATFORM_TRANSITIONS` checks out of the shared C++ code: each platform now supplies its native CSS transition backend under its own flag. No behavior change. ([#10546](https://github.com/software-mansion/react-native-reanimated/pull/10546) by [@MatiPl01](https://github.com/MatiPl01))\n- Added Jest and runtime tests for the settled props unprocessors (colors, `boxShadow`, `backgroundImage`). `unprocessProps` is now exported. ([#10545](https://github.com/software-mansion/react-native-reanimated/pull/10545) by [@tshmieldev](https://github.com/tshmieldev))\n- Remove three duplicated implementations: `CSSBoxShadow` and `CSSDropShadow` share their field validation, `PropertyInterpolator` provides the common `getStyleValue`, and the nodes manager and keyboard observer create their display links through one `REAMakeDisplayLink` helper. ([#10357](https://github.com/software-mansion/react-native-reanimated/pull/10357) by [@MatiPl01](https://github.com/MatiPl01))\n- Throw a descriptive error on iOS when the native module cannot be installed because React Native has no active surface during a reload race, instead of silently installing a dummy module proxy. The `WorkletsModule` registry check that guarded the same path is removed. ([#10508](https://github.com/software-mansion/react-native-reanimated/pull/10508) by [@tjzel](https://github.com/tjzel))\n- Validate the iOS Swift Package Manager integration in CI: the nightly compatibility check now builds the app via SPM on React Native >= 0.87. ([#10511](https://github.com/software-mansion/react-native-reanimated/pull/10511) by [@kacperzolkiewski](https://github.com/kacperzolkiewski))\n- Support worklets without closure metadata in handler dependency comparisons and Jest helpers. ([#10517](https://github.com/software-mansion/react-native-reanimated/pull/10517) by [@tshmieldev](https://github.com/tshmieldev))\n- Update hooks for array-based worklet closures and use explicit control points for web Bezier easings instead of inspecting closures. ([#10506](https://github.com/software-mansion/react-native-reanimated/pull/10506) by [@tshmieldev](https://github.com/tshmieldev))\n- Initialize the Layout Animations manager lazily to avoid serializing its worklets during startup. ([#10466](https://github.com/software-mansion/react-native-reanimated/pull/10466) by [@tshmieldev](https://github.com/tshmieldev))\n- Add `fontVariationSettings` to the style properties config, so the package type-checks against React Native 0.88 ([#10239](https://github.com/software-mansion/react-native-reanimated/pull/10239) by [@tjzel](https://github.com/tjzel))\n- Add `backgroundPosition`, `backgroundRepeat` and `backgroundSize` to the style properties config, so the package type-checks against React Native 0.88. ([#10354](https://github.com/software-mansion/react-native-reanimated/pull/10354) by [@tjzel](https://github.com/tjzel))\n- Migrate Mutable's dirty flag to Fixed Synchronizable for better performance. ([#10272](https://github.com/software-mansion/react-native-reanimated/pull/10272) by [@tjzel](https://github.com/tjzel))\n\n<!-- File: packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/activity-entering-reactivation.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-box-shadow-blur-radius.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-dropped-frame-opacity.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-entering-props-diff-opacity.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-hold-frames-until-batch-queued.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-nodes-manager-teardown-race.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-legacy-dead-nodes.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-pull-model-structural-flush.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-recreated-withheld-view.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-sensor-mislabeled-event-crash.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-stale-synchronous-props.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-unparseable-animation-scale.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/android-update-before-exiting-removal.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-props-registry-late-updates.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text-metrics-rounding.fix.md)\n\n<!-- File: packages/react-native-reanimated/changelog/animated-text.feature.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Changelog Skill\n\nPath: `packages/react-native-reanimated/changelog/animated-text.feature.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/software-mansion/react-native-reanimated/HEAD/packages/react-native-reanimated/changelog/animated-text.feature.md)\n\n<!-- ... +128 more modular skills available via /api/skills/software-mansion/react-native-reanimated?path={path} -->\n</yakaai_skills>"}