Agent skill

Upgrade Rn Version

by brandingbrand in brandingbrand/flagship

Adopt a new stable React Native minor into Flagship Code. An agent skill from brandingbrand/flagship.

MITAuto-check passedMobile

Install Upgrade Rn Version

skills CLI
$ npx skills add brandingbrand/flagship --skill upgrade-rn-version -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install brandingbrand/flagship upgrade-rn-version --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/brandingbrand/flagship.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/upgrade-rn-version .claude/skills/upgrade-rn-version && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
upgrade-rn-version
GitHub stars
165
Token cost
~3.7k tokens
SKILL.md length
2,073 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Adopt a new stable React Native minor into Flagship Code. An agent skill from brandingbrand/flagship.

  • Works in 9 steps: Premise check. Run yarn install before… → Harvest. Run ./scripts/add-rn-version… → Fill the profile. Spread the previous… → …
  • Tasks that involve Cross-platform mobile apps
  • SKILL.md covers How to follow this skill, When to use this, Ground truth at build time and Adopting one minor (one PR per…, plus 2 more sections
  • Calls yarn, npm and xcodebuild

What it does

Upgrade Rn Version is an agent skill from brandingbrand/flagship. Adopt a new stable React Native minor into Flagship Code. One version per pull request, each proven by a real native build of the example app before the next.

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering Cross-platform mobile apps and Pull requests. It works with React Native, React, TypeScript and Android. The repository describes itself as: 🚢 A React Native Configuration as Code Toolkit. The licence is MIT.

When your agent uses it

  • Tasks that involve Cross-platform mobile apps
  • Tasks that involve Pull requests

Example prompts

  • “/upgrade-rn-version”

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Premise check. Run yarn install before anything else. The harvest script's codemods run through tsx, so against an uninstalled workspace…
  2. Harvest. Run ./scripts/add-rn-version 0.XX. This pulls the upstream @react-native-community/template (android and ios only) into…
  3. Fill the profile. Spread the previous minor's profile, then reconcile every template-derived entry against this minor's own template. Do…
  4. Align the workspace. The example and the repository root both carry React pins and they must agree. A root react range that admits a patch…
  5. Compile the example on both platforms. The iOS build runs pod install through prebuild; the Android build needs a JDK and the Android SDK…
  6. Ecosystem-native pin breaks. If the example's compile fails because a non-profile-tracked dependency (screens, gesture-handler…
  7. Full local gate. Every command below, green, run in this order
  8. Changeset. One file, message add support for react-native 0.XX, minor bump on the packages an adoption touches…
  9. PR. Draft from the first commit against develop. Mark ready once every item in the definition of done is satisfied, and request review…

What it can do on your machine

Read from SKILL.md and the folder at commit 0c2231b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • yarn
    • npm
    • xcodebuild

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • brandingbrand.github.io
    • npmjs.com
    • react-native-community.github.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Upgrade Rn Version loads about 3.7k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 2,073 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from brandingbrand/flagship at commit 0c2231b, republished under its MIT licence (© brandingbrand). 2,073 words, ~3,715 tokens.

Download SKILL.mdSave it as .claude/skills/upgrade-rn-version/SKILL.md (or your agent's skills folder).
name
upgrade-rn-version
description
Adopt a new stable React Native minor into Flagship Code. One version per pull request, each proven by a real native build of the example app before the next.

Upgrade RN Version

Flagship Code supports a React Native minor by carrying three things together: a native template, a dependency profile, and CLI registration. This skill covers adopting a new minor.

How to follow this skill

Every command below is written to run verbatim from the repository root. Run them as written.

  • When this skill names a source of truth, read it. Do not infer a value from a neighbouring file, a previous version, or a sibling profile.
  • Do not conclude that a step would pass. Run it and read the output.
  • Do not substitute an equivalent command, a different directory, or one platform for another.
  • If a step cannot be run, stop and report which step and why. A step you cannot run is a blocker, not a judgement call.

When to use this

A pending React Native minor needs adopting: a stable release above the newest version in packages/templates/react-native/. There is usually an open rn-adoption tracking issue for it.

Derive the target rather than accepting it. Compute the pending set as described in Ground truth at build time, take the lowest, and adopt that one. A version named in a request, an issue title, or a ticket is a check on your own derivation, not an instruction. If it is not the lowest pending minor, stop and report which one is. There may be a tracking issue open for every pending minor at once, so the presence of one for a later version is not permission to start there. Adopting out of order leaves the repository advertising support for a version whose predecessors were never adopted, which is the outcome this procedure exists to prevent.

Ground truth at build time

Do not trust cached version numbers in this doc. Re-derive at build time:

  • Pending minors are stable React Native releases (npm view react-native versions --json, filtered to X.Y.0, never dist-tags) above the highest directory name in packages/templates/react-native/. Exclude anything npm marks deprecated (the guard against the accidental react-native@1000.0.0 publish, which otherwise looks like the newest pending minor).
  • The currently-adopted minors are that directory listing itself. It is the support manifest; there is no separate manifest file.
  • Latest patch per minor and its pairings (React, TypeScript, community CLI) come from that patch's own upstream package.json. Read it, do not assume.

Adopting one minor (one PR per minor, ascending)

Never adopt more than one version in a PR, never stack one adoption on another's unmerged branch, and never start the next version until the current one has merged.

  1. Premise check. Run yarn install before anything else. The harvest script's codemods run through tsx, so against an uninstalled workspace they fail with Cannot find module 'typescript'; that is a missing install, not a broken script, and it is not a premise failure. Then confirm ./scripts/add-rn-version and the PR Compile and PR Test workflows already exist and work (throwaway-branch dry run). If tooling is genuinely missing or broken, that is a blocker on the tooling itself. Stop and report it; do not build or repair tooling as part of an adoption.

  2. Harvest. Run ./scripts/add-rn-version 0.XX. This pulls the upstream @react-native-community/template (android and ios only) into packages/templates/react-native/0.XX/ and codemods: CLI registration (packages/cli-kit/src/@types/config.ts, packages/cli/src/ui/constants/messaging.ts), a shell dependency profile (packages/plugin-verify-dependencies/src/profile/0.XX.ts plus registration in index.ts), and the root package.json react-native pin. It does not touch the root react pin. Step 4 covers that; the script having run is not evidence the root is aligned.

  3. Fill the profile. Spread the previous minor's profile, then reconcile every template-derived entry against this minor's own template. Do not assume an inherited value is still correct.

    • Source of truth: this minor's @react-native-community/template package.json (npm pack @react-native-community/template@<patch>). Diff it against the previous minor's, or read the same diff in the upgrade helper, to see what moved.
    • What to write: copy the template's version string verbatim, range operator included. An exact pin upstream ("A.B.C") means an exact pin in the profile ('A.B.C'); a range ("^A.B.C") stays that range. The operator is part of the pairing: React Native is tested against one patch of its react, and widening it lets a consumer resolve a react this minor was never built against.
    • One exception: react-native, and every @react-native/* entry the previous profile tracks, are written ^0.XX.0: the minor floor rather than the harvested patch. Take that set from the previous profile rather than from a list, because which scoped packages the template ships changes between minors. The profile-version test requires that literal form, because a profile must accept any patch of its own minor.
    • A tracked key that disagrees with the template is a bug, regardless of which minor introduced it. Inheritance carries stale pins forward silently, and some predate the minor you are adopting. Fix it in your minor and note it in the PR, or file it; do not propagate it.
    • Do not add tracking for packages prior profiles did not track (ecosystem-native libs like screens, gesture-handler, reanimated are not profile-tracked yet; see step 6). This applies to packages the template itself introduces: a scoped @react-native/* package appearing in the template for the first time is still an addition, and additions are not part of an adoption.
    • A tracked key with no counterpart in this minor's template carries forward untouched. Not every inherited entry is template-derived, and one that is not has nothing to reconcile against, so reconciling it is guesswork. Changing such a pin is separate work.
    • Earlier profiles are not the spec. The template is.
  4. Align the workspace. The example and the repository root both carry React pins and they must agree. A root react range that admits a patch other than the example's exact pin resolves to two copies of React, and the example then fails at runtime rather than at build time.

    sh
    yarn workspace @brandingbrand/code-example flagship-code align-deps --profile 0.XX --fix
    yarn install

    Then set the existing react and react-native entries in the root package.json to the same strings this minor's profile carries, and run yarn install again. Edit the entries already declared there; do not add a new dependency block for them. Never hand-edit the example's pins; the profile drives those.

    Prove there is exactly one React before going further:

    sh
    yarn why react

    More than one resolved version is a failure. Fix the disagreeing pin and re-run. Do not continue with two.

  5. Compile the example on both platforms. The iOS build runs pod install through prebuild; the Android build needs a JDK and the Android SDK. Your local toolchain has to match what .github/workflows/pr-compile.yml provisions: read its setup-node, setup-ruby, and setup-java steps and match the versions declared there rather than any version named in this document. A missing toolchain, or one on a different major version, is an environment blocker to report. It is not an adoption failure, and it is not something to install your way around.

    Run all four commands. These are the commands CI runs, so a failure here is a failure there.

    sh
    yarn workspace @brandingbrand/code-example prebuild --build internal --env prod --platform android --verbose
    cd apps/example/android && ./gradlew assembleDebug && cd ../../..
    yarn workspace @brandingbrand/code-example prebuild --build internal --env prod --platform ios --verbose
    cd apps/example/ios && xcodebuild -workspace app.xcworkspace -scheme app -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build && cd ../../..

    A passing test suite is not evidence that these pass, and no other step in the gate substitutes for them. A version is not adopted until it has compiled as a real app on both platforms.

  6. Ecosystem-native pin breaks. If the example's compile fails because a non-profile-tracked dependency (screens, gesture-handler, reanimated, safe-area-context, async-storage, webview, community CLI) is incompatible with the new version, bump that one dependency's pin in the example (not the profile mechanism) and record why. The compile is what surfaces such a break instead of shipping a stale pin. Automating these pairings is separate, larger work, out of scope for an adoption PR.

  7. Full local gate. Every command below, green, run in this order:

    sh
    yarn install
    yarn build
    yarn lint
    FLAGSHIP_CODE_TEST_RN_VERSION=0.XX yarn test --force

    Plain yarn test runs the plugin suites against the default 0.72 template; the environment variable points them at the version you are adding. Two things let that command pass without testing your version, so a green run here is not the proof:

    • If packages/templates/react-native/0.XX/ does not exist, the test environment resolves down to the nearest lower minor and passes against that one instead. Nothing reports the substitution.
    • test is a cached task and the variable is not part of its cache key, so a run following a plain yarn test can replay the earlier result. --force is what prevents that.

    The proof is the test-templates (0.XX) job on the pull request, which cannot exist unless the template directory does. The two native builds in step 5 are part of this gate and are not implied by these four commands.

  8. Changeset. One file, message add support for react-native 0.XX, minor bump on the packages an adoption touches: code-plugin-verify-dependencies, code-templates, code-cli-kit, code-cli. Read the previous minor's changeset rather than this list if the two disagree. Declare another package only if this adoption actually modified it; do not declare one because it seems related.

  9. PR. Draft from the first commit against develop. Mark ready once every item in the definition of done is satisfied, and request review from the repository's code owners. Carry the gate evidence in the PR description: the commands run, their results, and a link to the PR Compile run.

Show full SKILL.md (574 more words)Show less
Out of bounds, and when to stop

An adoption adds a version and aligns pins to it. It never changes the machinery that consumes them. These are not edited during an adoption:

  • scripts/, the adoption tooling itself
  • packages/jest-config/, the test harness, including how it resolves a template version
  • .github/workflows/
  • Plugin source and plugin tests. The dependency profiles under plugin-verify-dependencies are version data and are in scope; the plugin's own code and tests are not.
  • Changesets configuration, publishing, release workflows
  • Harvested template content under packages/templates/react-native/

Stop the adoption and report it if you hit one of the following three, and only these three:

  1. prebuild warns cannot find keyword ... in file path ....
  2. The version appears to need its own directory under packages/templates/supporting-files/. That tree is version-partitioned and resolves down to the nearest lower version, so a missing directory does not error; it silently supplies older files.
  3. The version appears to need new transform sets in plugin-transform-template.

Each of those means the native template has moved beyond what the current tooling handles. That is a tooling change, which an adoption does not make. Anything else that fails is covered by the two-attempt rule in If a gate will not go green, not by stopping here.

Stopping means: leave the pull request as a draft, record the step and the exact output in its description, and change no files beyond the ones this skill names. It does not mean repairing the tooling, editing harvested content, or working around the failure.

Definition of done, per adoption PR
  • Template at packages/templates/react-native/0.XX/, byte-identical to the upstream harvest. No local edits to harvested content.
  • Profile 0.XX registered; the profile-version assertion passes (a profile's react-native pin must match its own version. An unfilled shell profile otherwise passes every other check while pinning nothing real).
  • The test-templates (0.XX) job exists on this pull request and is green. It appears only once packages/templates/react-native/0.XX/ exists, because PR Test derives its matrix from that directory listing. A local run with FLAGSHIP_CODE_TEST_RN_VERSION set does not substitute for it.
  • apps/example and the root package.json agree on react and react-native, and yarn why react reports one resolved version.
  • The PR Compile workflow has run on this PR and both its android and ios jobs are green. Link the run in the PR description. A local build does not substitute for it, and neither does an expectation that it would pass.
  • Changeset present, correct packages and bump type.
  • No placeholder implementations, no commented-out assertions, no partially-filled dependency profile.
Anti-fake-test rules
  • Never weaken or delete an assertion to make a gate pass.
  • Assert real outcomes (file contents, exit codes, a successful native build), not that an internal function was called.
  • A shell profile compiling is not evidence of correctness; that is exactly what the profile-version assertion exists to catch.
If a gate will not go green

Two focused attempts, then stop. Do not weaken the gate, skip the test, or merge around it. Record what was tried and the exact failure in the PR (kept as a draft) rather than forcing it through.

Writing rules

Commit messages, PR titles, and PR bodies are professional open-source contributions: what changed, why, and how it was verified. Conventional Commits, one logical change per commit. No AI attribution of any kind. The PR body carries the gate evidence.

Reference

© brandingbrand, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/upgrade-rn-version of brandingbrand/flagship.

Open the folder on GitHubat commit 0c2231b

Compare with similar skills

Upgrade Rn Version next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Upgrade Rn Version compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Upgrade Rn Version this skillbrandingbrand/flagship165—~3.7kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap244—~7.2kAutomated safety check: PassMIT
Simulator Audio E2Ehyochan/react-native-nitro-sound961—~1.1kAutomated safety check: PassMIT
Code Review React Nativetalsec/Free-RASP-ReactNative176—~3.7kAutomated safety check: PassMIT
Community Migrationjingjing2222/react-native-nitro-geolocation115—~3.5kAutomated safety check: PassMIT
Diagnosing Stacktrace SymbolicationPostHog/posthog40k—~2.2kAutomated safety check: PassCustom licence

Similar skills

  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    244 GitHub stars~7.2k tokensUpdated 6 days ago
    MobileAuto-check passed
  • Simulator Audio E2E

    hyochan/react-native-nitro-sound

    Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…

    961 GitHub stars~1.1k tokensUpdated 11 days ago
    MobileAuto-check passed
  • Code Review React Native

    talsec/Free-RASP-ReactNative

    Performs strict code reviews on React Native plugin projects covering TypeScript, the Kotlin (Android) and Swift (iOS) native bridges, and the Expo config plugin.

    176 GitHub stars~3.7k tokensUpdated 6 days ago
    MobileAuto-check passed
  • Community Migration

    jingjing2222/react-native-nitro-geolocation

    Migrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation.

    115 GitHub stars~3.5k tokensUpdated 28 days ago
    MobileAuto-check passed
  • Official

    Help users debug PostHog Error Tracking stack-trace symbolication for any supported platform — JavaScript/TypeScript web, React Native (Hermes), Android (Proguard / R8), or iOS / macOS (dSYM).

    40k GitHub stars~2.2k tokensUpdated today
    MobileAuto-check passed
  • Service Migration

    jingjing2222/react-native-nitro-geolocation

    Migrate React Native apps directly from react-native-geolocation-service to react-native-nitro-geolocation without using /compat.

    115 GitHub stars~2.3k tokensUpdated 28 days ago
    MobileAuto-check passed

Categories

Questions about Upgrade Rn Version

What does Upgrade Rn Version do?

Adopt a new stable React Native minor into Flagship Code. An agent skill from brandingbrand/flagship. Upgrade Rn Version is an agent skill from brandingbrand/flagship. Adopt a new stable React Native minor into Flagship Code.

When should I use Upgrade Rn Version?

Upgrade Rn Version fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve Pull requests.

How do I install Upgrade Rn Version in Claude Code?

Run `npx skills add brandingbrand/flagship --skill upgrade-rn-version -a claude-code`. Or copy the skill folder (.agents/skills/upgrade-rn-version in brandingbrand/flagship) into .claude/skills/upgrade-rn-version in your project. Claude Code loads it when a task matches its description.

How do I install Upgrade Rn Version in Codex?

Run `npx skills add brandingbrand/flagship --skill upgrade-rn-version -a codex`. Or copy the skill folder (.agents/skills/upgrade-rn-version in brandingbrand/flagship) into .agents/skills/upgrade-rn-version in your project. Codex loads it when a task matches its description.

Can I use Upgrade Rn Version in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brandingbrand/flagship --skill upgrade-rn-version -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upgrade-rn-version, .gemini/skills/upgrade-rn-version, .github/skills/upgrade-rn-version and .opencode/skills/upgrade-rn-version in your project.

What does Upgrade Rn Version need to run?

Going by SKILL.md and its folder, Upgrade Rn Version needs the command-line tools its instructions call (yarn, npm and xcodebuild).

Does Upgrade Rn Version access the network?

SKILL.md names 4 domains. As links in the text: github.com, brandingbrand.github.io, npmjs.com and react-native-community.github.io. This is read from the text; nothing was executed.

Is Upgrade Rn Version safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Upgrade Rn Version use?

Upgrade Rn Version is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Upgrade Rn Version use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Upgrade Rn Version?

Skills that share tags, products or a category with Upgrade Rn Version: Screenmap (aleqsio/screenmap, 244 stars), Simulator Audio E2E (hyochan/react-native-nitro-sound, 961 stars), Code Review React Native (talsec/Free-RASP-ReactNative, 176 stars) and Community Migration (jingjing2222/react-native-nitro-geolocation, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Upgrade Rn Version?

brandingbrand (a GitHub organization) maintains it in brandingbrand/flagship, which has 165 GitHub stars. The repository was last updated on October 1, 2026.

Source: brandingbrand/flagship on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.