Code Guidelines
getsentry/sentry-react-native
Enforce Sentry React Native SDK code guidelines for implementation, refactoring, and review.
Migrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation.
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/community-migration .claude/skills/community-migration && rm -rf skills-srcUse ~/.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/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .claude/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/community-migration .agents/skills/community-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .agents/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/community-migration .cursor/skills/community-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .cursor/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jingjing2222/react-native-nitro-geolocation.git --path skills/community-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/community-migration .gemini/skills/community-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .gemini/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/community-migration .github/skills/community-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .github/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jingjing2222/react-native-nitro-geolocation community-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jingjing2222/react-native-nitro-geolocation.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/community-migration .opencode/skills/community-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "community-migration" agent skill from https://github.com/jingjing2222/react-native-nitro-geolocation/tree/main/skills/community-migration into .opencode/skills/community-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "community-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
community-migrationMigrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation.
Community Migration is an agent skill from jingjing2222/react-native-nitro-geolocation. Migrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation. Use when installing the Nitro packages, running the bundled compat bootstrap codemod, removing @react-native-community/geolocation, then refactoring community-compatible call sites to Promise functions, requestPermission, setConfiguration, useWatchPosition, watchPosition, and unwatch.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `agents/openai.yaml`).
It sits in Mobile, covering Cross-platform mobile apps, Refactoring and Code migrations. It works with React Native, React, Android and iOS. The repository describes itself as: A React Native Geolocation module Using Nitro. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 89704cf. It shows what the files ask for, not the result of running them.
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.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodecurlrgpnpmnpmbunyarnFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
react-native-nitro-geolocation.pages.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Community Migration loads about 3.5k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 1,406 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from jingjing2222/react-native-nitro-geolocation at commit 89704cf, republished under its MIT licence (© jingjing2222). 1,406 words, ~3,461 tokens.
.claude/skills/community-migration/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use a two-phase migration:
/compat so the app stops depending on
@react-native-community/geolocation./compat to the recommended API shape.Do not start by hand-converting every callback call site. First make the mechanical package/import migration small and reversible, verify it, then do the semantic API refactor.
scripts/migrate-to-compat.mjs relative to this SKILL.md.node <skill-dir>/scripts/migrate-to-compat.mjs --root <app-root> --dry-runnode <skill-dir>/scripts/migrate-to-compat.mjs --root <app-root>packageManager or lockfiles, installs missing
react-native-nitro-modules and react-native-nitro-geolocation, rewrites
@react-native-community/geolocation import sources to
react-native-nitro-geolocation/compat, removes
@react-native-community/geolocation, and prints package-manager-specific
validation commands that exist in the app's package.json.yarn, npm, pnpm,
or bun; use the detected package manager and only scripts that exist.curl -fsSL https://react-native-nitro-geolocation.pages.dev/llms.txt
curl -fsSL https://react-native-nitro-geolocation.pages.dev/llms-full.txtllms.txt first as the docs index. Use llms-full.txt only when you
need exact API names, option semantics, or examples for the API,
Compat API, quick start, or platform setup. If the app already pins an older
react-native-nitro-geolocation version, confirm an API exists in
node_modules/react-native-nitro-geolocation or the installed package types
before using docs-only APIs.rg "@react-native-community/geolocation|react-native-nitro-geolocation/compat|setRNConfiguration|requestAuthorization|watchPosition|clearWatch|stopObserving|navigator\\.geolocation"navigator.geolocation as a manual-review compatibility site, not as
the primary migration scope.react-native-nitro-geolocation. Remove Geolocation default-object usage
when the migrated file no longer needs it.async/await or explicit Promise
chains. Preserve existing loading, state, and error behavior.useWatchPosition only where React hook rules allow it.
Use watchPosition plus unwatch for non-component code, class components,
callbacks, conditionals, and services.agent-device when
available.Use these docs endpoints as the source of truth during the API refactor:
https://react-native-nitro-geolocation.pages.dev/llms.txt - concise index
of available docs pages.https://react-native-nitro-geolocation.pages.dev/llms-full.txt - complete
rendered docs content for agent consumption.Prefer llms.txt for navigation and llms-full.txt for exact API details. Do
not paste or load the full docs into the final answer; use them to check facts
before editing. If network is unavailable, fall back to local package docs,
README files, and TypeScript declarations in the installed package.
The final migration is not just "no type errors." Prefer this target state:
@react-native-community/geolocation,
navigator.geolocation, or react-native-nitro-geolocation/compat. Keep
/compat only in deliberate compatibility examples, tests, or migration
fallback code the user explicitly wants to preserve.setConfiguration(). Do not leave
setRNConfiguration() or skipPermissionRequests in migrated runtime code.checkPermission() only to read status
without prompting; call requestPermission() from a user-understandable app
moment before location work needs permission.getCurrentPosition() when the
app needs a fresh position, and getLastKnownPosition() only for cache-first
UI where stale data is acceptable.useWatchPosition({ enabled }); outside hook-safe code, use
watchPosition() with scoped unwatch(token) cleanup.accuracy presets instead of enableHighAccuracy. Preserve
existing timeout, distance, interval, and cache semantics unless the old code
was clearly relying on deprecated defaults.LocationErrorCodes for permission denied, timeout, settings-not-satisfied,
or provider/setup failures instead of parsing error messages.Apply these criteria at each call site, in this order:
Geolocation object through app code after refactoring.Use this API choice table:
| Legacy pattern | Target | Choose it when | Avoid it when |
|---|---|---|---|
getCurrentPosition(success, error, options) | await getCurrentPosition(options) | A user action or flow needs a fresh position. | The UI can start from cached location only; consider getLastKnownPosition(). |
Cached/stale startup read via maximumAge | await getLastKnownPosition(options) | Startup UI, stale-while-refresh, or cache-only flows can tolerate no fresh request. | The feature needs a fresh fix or should prompt provider/settings resolution. |
requestAuthorization(success, error) | await requestPermission() | The app is ready to show the native permission prompt. | You only need to display current status; use checkPermission(). |
setRNConfiguration(config) | setConfiguration(config) | App startup or native bootstrap code sets global location config once. | A screen-level call would repeatedly mutate global config. |
watchPosition in a function component | useWatchPosition({ enabled, ...options }) | Position drives React render state and the call can be at hook-safe top level. | The code is a class component, event callback, conditional branch, or service. |
watchPosition in services/classes/tasks | watchPosition(...) + unwatch(token) | A non-React lifecycle owns the subscription. | A React function component can express the lifecycle with enabled. |
clearWatch(id) | unwatch(token) | Stopping one known watch. | The old code intentionally stopped every watcher; review stopObserving(). |
enableHighAccuracy: true | accuracy: { android: "high", ios: "best" } | The feature needs precise location. | Low-power or approximate location is enough. |
| Android precise flow that can fail due to settings | getLocationAvailability() / requestLocationSettings() before location request | The UX can ask users to enable provider/settings for navigation or precise location. | Passive/background or approximate flows should not interrupt users. |
The bootstrap script handles this mechanical source rewrite:
import Geolocation from "@react-native-community/geolocation";to:
import Geolocation from "react-native-nitro-geolocation/compat";After verification, refactor compat imports to named imports:
import {
getCurrentPosition,
requestPermission,
setConfiguration,
useWatchPosition,
watchPosition,
unwatch
} from "react-native-nitro-geolocation";Import only the symbols each file needs.
navigator.geolocation usage is reported by the script but not rewritten. It
needs manual inspection because it is often a global shim or browser fallback.
Before:
Geolocation.getCurrentPosition(
(position) => setPosition(position),
(error) => setError(error),
{ enableHighAccuracy: true, timeout: 15000 }
);After:
try {
const position = await getCurrentPosition({
accuracy: { android: "high", ios: "best" },
timeout: 15000
});
setPosition(position);
} catch (error) {
setError(error);
}If the containing function cannot become async, keep the Promise chain:
getCurrentPosition(options).then(onSuccess).catch(onError);Replace requestAuthorization(success?, error?) with requestPermission().
Move success callback behavior after a granted result and move error callback
behavior into catch.
const status = await requestPermission();
if (status === "granted") {
onGranted();
}Replace setRNConfiguration with setConfiguration at app startup.
setConfiguration({
authorizationLevel: "whenInUse",
enableBackgroundLocationUpdates: false,
locationProvider: "auto"
});Do not migrate skipPermissionRequests; there is no equivalent because
permission requests must be explicit through requestPermission().
Use useWatchPosition in function components or custom hooks only. Preserve
the old start/stop condition through enabled.
Before:
useEffect(() => {
const watchId = Geolocation.watchPosition(onPosition, onError, {
enableHighAccuracy: true,
distanceFilter: 10
});
return () => Geolocation.clearWatch(watchId);
}, []);After:
const { position, error, isWatching } = useWatchPosition({
enabled: true,
accuracy: { android: "high", ios: "best" },
distanceFilter: 10
});Wire position, error, and isWatching into the component's existing state
or render path. If callbacks perform side effects, add a separate useEffect
that reacts to position or error.
Use the low-level watch function outside function component top level:
const token = watchPosition(onPosition, onError, {
accuracy: { android: "high", ios: "best" },
distanceFilter: 10
});
unwatch(token);Replace clearWatch(watchId) with unwatch(token). Keep stopObserving()
only when the old code intentionally stopped all geolocation subscriptions;
otherwise prefer targeted unwatch(token).
enableHighAccuracy: true with
accuracy: { android: "high", ios: "best" }.enableHighAccuracy: false, prefer omitting accuracy unless the old code
clearly required reduced precision. If reduced precision matters, choose an
explicit preset and note the semantic decision.timeout, maximumAge, distanceFilter, interval,
fastestInterval, and useSignificantChanges when present.granularity,
waitForAccurateLocation, activityType, and
pausesLocationUpdatesAutomatically only when the migrated code already has
an equivalent requirement.Flag these for the user instead of silently rewriting:
skipPermissionRequests.navigator.geolocation monkey patches.Use the target app's detected package manager and existing scripts. The
bootstrap script prints commands for available typecheck, lint, and test
scripts, for example pnpm typecheck, npm run lint, bun run test, or
yarn test.
Do not invent missing scripts. If a project has no standard validation scripts, run the nearest equivalent documented by that app. For device-sensitive behavior, verify at least one permission request, one current-position request, and one watch start/stop flow on iOS or Android.
© jingjing2222, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in skills/community-migration of jingjing2222/react-native-nitro-geolocation.
Open the folder on GitHubat commit 89704cf
Community Migration 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Community Migration this skilljingjing2222/react-native-nitro-geolocation | 115 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Code Guidelinesgetsentry/sentry-react-native | 1.8k | — | ~3.2k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 244 | — | ~7.2k | Automated safety check: Pass | MIT | |
| ThemingCode-with-Beto/skills | 140 | — | ~2.5k | Automated safety check: Pass | None | |
| Upgrade Rn Versionbrandingbrand/flagship | 165 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Upgrade React NativeShopify/flash-list | 7.2k | — | ~1.9k | Automated safety check: Pass | MIT |
getsentry/sentry-react-native
Enforce Sentry React Native SDK code guidelines for implementation, refactoring, and review.
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
Code-with-Beto/skills
Scaffold a unified, cross-platform color theme system into an Expo Router app.
brandingbrand/flagship
Adopt a new stable React Native minor into Flagship Code. An agent skill from brandingbrand/flagship.
Shopify/flash-list
Upgrade the React Native fixture app to a new version. An agent skill from Shopify/flash-list.
software-mansion-labs/skills
React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.
jingjing2222/react-native-nitro-geolocation
Migrate React Native apps directly from react-native-geolocation-service to react-native-nitro-geolocation without using /compat.
Works with
Categories
Migrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation. Community Migration is an agent skill from jingjing2222/react-native-nitro-geolocation. Migrate React Native apps from @react-native-community/geolocation to react-native-nitro-geolocation.
Community Migration fits situations like: installing the Nitro packages; running the bundled compat bootstrap codemod; removing @react-native-community/geolocation; then refactoring community-compatible call sites to Promise functions.
Run `npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a claude-code`. Or copy the skill folder (skills/community-migration in jingjing2222/react-native-nitro-geolocation) into .claude/skills/community-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a codex`. Or copy the skill folder (skills/community-migration in jingjing2222/react-native-nitro-geolocation) into .agents/skills/community-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jingjing2222/react-native-nitro-geolocation --skill community-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/community-migration, .gemini/skills/community-migration, .github/skills/community-migration and .opencode/skills/community-migration in your project.
Going by SKILL.md and its folder, Community Migration needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node, curl, rg, pnpm, npm and bun). Our summary lists: Node.js.
SKILL.md names 1 domain. In commands or code: react-native-nitro-geolocation.pages.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Community Migration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Community Migration: Code Guidelines (getsentry/sentry-react-native, 1.8k stars), Screenmap (aleqsio/screenmap, 244 stars), Theming (Code-with-Beto/skills, 140 stars) and Upgrade Rn Version (brandingbrand/flagship, 165 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jingjing2222 (a GitHub user) maintains it in jingjing2222/react-native-nitro-geolocation, which has 115 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 13, 2026.
Source: jingjing2222/react-native-nitro-geolocation on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.