Agent skill

Code Review

by ecency in ecency/vision-mobile

Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor…

MITAuto-check passedMobile

Install Code Review

skills CLI
$ npx skills add ecency/vision-mobile --skill code-review -a claude-code

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

GitHub CLI
$ gh skill install ecency/vision-mobile code-review --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/ecency/vision-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/code-review .claude/skills/code-review && 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
code-review
GitHub stars
262
Token cost
~2k tokens
SKILL.md length
866 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor…

  • Tasks that involve Cross-platform mobile apps
  • SKILL.md covers Action sheets, Caret on programmatic writes, Editor teardown order and Safe area, plus 3 more sections
  • Calls yarn
  • Tasks that involve Code review

What it does

Code Review is an agent skill from ecency/vision-mobile. Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor teardown order, notification routing copies, SDK mutation wrappers, EStyleSheet theming.

Its SKILL.md is about 2k 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, Code review and Theming and dark mode. It works with React Native. The repository describes itself as: Ecency Mobile - reimagined social blogging, contribute and get rewarded (for Android and iOS). The licence is MIT.

When your agent uses it

  • Tasks that involve Cross-platform mobile apps
  • Tasks that involve Code review
  • Tasks that involve Theming and dark mode

Example prompts

  • “/code-review”

What it can do on your machine

Read from SKILL.md and the folder at commit feef7d1. 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

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

  • Network

    No URLs in SKILL.md. Its commands use yarn, which can reach the network depending on how they are called.

    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

Code Review loads about 2k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 866 words of instructions outside code blocks.

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

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 ecency/vision-mobile at commit feef7d1, republished under its MIT licence (© ecency). 866 words, ~2,000 tokens.

Download SKILL.mdSave it as .claude/skills/code-review/SKILL.md (or your agent's skills folder).
name
code-review
description
Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor teardown order, notification routing copies, SDK mutation wrappers, EStyleSheet theming.
argument-hint
[file-or-branch]

Code Review

Architecture, commands, TypeScript and ESLint rules live in CLAUDE.md. This file holds the traps and repo conventions this review gates on. Confirm each finding against the code on disk before reporting it.

Action sheets

  • Resolve an object, gate on a named field. A repo convention, not something the library enforces today. Two different payloads are involved, so keep them apart when reviewing:

    • the SHOW payload, SheetManager.show(name, { payload }), which the provider hands to the registered component as a prop. Every sheet uses this.
    • <ActionSheet payload={...}>, ActionSheet's OWN prop. Nothing in src/ sets it, and forwarding the show payload into it is not the same thing.

    Only the second one feeds payloadRef, and the library resolves a close with data || payloadRef.current || data. Since no sheet sets that prop, payloadRef.current is undefined and a falsy result reaches the caller intact today. Keep the convention anyway: adding payload to one <ActionSheet> would silently turn every falsy cancel in that sheet into a confirm. A dismissal also resolves undefined, which truthiness cannot tell apart from a deliberate false. Sheets resolve { cancelled: true } or { field: value } instead. Sheets document their own contract, e.g. src/components/searchFiltersSheet/searchFiltersSheet.tsx. Callers test the field, abridged from src/screens/searchResult/screen/searchResultScreen.tsx:65-77:

    ts
    const result = await SheetManager.show(SheetNames.SEARCH_FILTERS, {
      payload: { filters, searchValue: clipSearchValue(searchInputValue) },
    });
    if (result && typeof result === 'object' && result.filters) { ... }
  • Sheets unmount on hide, so mount-time resets are enough and cleanups run on close (CLAUDE.md, Sheets). Reject "state persists between invocations".

  • A throw in a sheet render or cleanup is fatal: SheetProvider wraps <Application/> (src/index.tsx:39-43), outside ErrorBoundary (src/screens/application/index.tsx:17). Watch native objects in cleanups.

  • Payloads freeze at show time. A handler in a payload keeps the closure it had when the sheet opened, so route it through a ref (src/components/quickPostModal/quickPostModalContent.tsx:565-575).

  • Missing SheetDefinition? everySheetHasDefinition (src/navigation/sheets.tsx:358) fails typecheck and names it. Keys are plain string literals.

Caret on programmatic writes

  • setNativeProps({ text }) on its own moves the caret. Android keeps the caret's DISTANCE FROM THE END, so it lands inside the text just written and the next keystroke splits it. Pass selection whenever the caret position after the write matters: inserts and appends into existing text, plus full replacements of a focused field. A reset to text: '' does not need it. Call sites that pass it: src/components/quickPostModal/quickPostModalContent.tsx:559 and :604, plus src/components/markdownEditor/view/markdownEditorView.tsx:371.

Editor teardown order

  • Pending work drains before the save, not in a child cleanup. componentWillUnmount runs in the commit phase ahead of descendant effect cleanups, so the screen calls flushPendingEditorWork() then _saveDraftToDB() (src/screens/editor/screen/editorScreen.tsx:116-127). Register new deferred editor work via registerPendingFlush (src/components/uploadsGalleryModal/mediaInsertQueue.ts:33), not a local cleanup.

Safe area

  • edges REPLACES the defaults, it does not add to them. edges={['bottom']} removes the top inset. The top inset is generally the screen's job: a screen rendering BasicHeader wraps it in its own SafeAreaView (src/components/basicHeader/view/basicHeaderStyles.ts:13).

Notification routing

Notification type strings are matched in more than one place, whose spellings do NOT agree. A new type may need adding in several of them.

  • Tap routing: the switch at src/screens/application/hook/useInitApplication.tsx:222-302; its default does nothing.
  • Websocket to FCM bridge: the allowlist at src/screens/application/container/applicationContainer.tsx:891-901 admits mention, reply, transfer, delegations, scheduled_published, payouts, account_update and weekly_earnings. Each one also needs a case in the title/body switch at :914, whose default announces a bare @source.
  • Foreground banner: the allowlist at src/components/foregroundNotification/foregroundNotification.tsx:51-58 admits reply, mention, transfer, delegations and scheduled_published; anything else shows nothing. Its own _onPress (:127) routes transfer and delegations to the wallet, everything else to a post.

Mind the singular/plural split: tap routing matches favorite and has no payout case at all, the list rendering (src/utils/notificationImage.ts:12, src/components/notificationLine/view/notificationLineView.tsx:138) matches favorites and payouts, while the websocket allowlist has payouts but no favorites.

Show full SKILL.md (291 more words)Show less

SDK, queries, styling, i18n

  • Broadcast mutation wrappers are thin: useMutationAuth() from src/providers/sdk/mutations/common.ts, then the SDK hook. No key decryption, no HiveSigner/HiveAuth branching in one; the adapter owns that. The documented exceptions are not broadcasts, so do not report them: useGenerateImageMutation.ts and the digest hooks in useNewsletterDigestMutations.ts bind the HiveSigner code from useAuth(), while useClaimPointsMutation.ts decrypts currentAccount.local.accessToken into a REST access token. A new wrapper that reaches for keys without a non-broadcast reason is still a finding.
  • Optional query params need enabled: !!param.
  • Mobile-only keys come from QUERIES, the DEFAULT export of src/providers/queries/queryKeys.ts; SDK-owned data uses QueryKeys from @ecency/sdk.
  • DMCA lists are set once by ConfigManager.setDmcaLists in src/providers/queries/sdk-config.ts:69; a hand-rolled filter in a query is a finding.
  • vestsToHp(vests, hivePerMVests) takes TWO args and returns 0 when either is falsy (src/utils/conversions.ts), so a missing rate renders a silent 0.
  • Colors come from theme vars: '$primaryBackgroundColor' inside EStyleSheet.create or EStyleSheet.value('$primaryBlue') at runtime. A literal hex is a finding when it shadows a var, above all one that differs between src/themes/lightTheme.ts and src/themes/darkTheme.ts. Deliberately theme-independent chrome is not a finding, e.g. the black media backgrounds in src/screens/waves/styles/wavesReels.styles.ts, so flag literals on a surface that should follow the theme. $white is #1e2835 in the dark theme, $pureWhite stays white in both.
  • Text via intl.formatMessage({ id: 'section.key' }), key added to the NESTED src/config/locales/en-US.json; ids are dotted only because flattenMessages flattens the tree in src/index.tsx.
  • Redux reads use useAppSelector (src/hooks/index.ts:6, a TypedUseSelectorHook<RootState> alias) plus a memoized selector from src/redux/selectors. The finding is an inline lambda picking state apart, not the hook name. Handlers are _-prefixed.

Report

Group as inline (must fix), outside-diff (should fix), nitpick. Per finding: **[BUG|SECURITY|PERF|STYLE|NITPICK]** file:line, then what is wrong, why it matters and the fix. Gate on yarn lint, yarn typecheck and yarn test:ci.

© ecency, 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 .claude/skills/code-review of ecency/vision-mobile.

Open the folder on GitHubat commit feef7d1

Compare with similar skills

Code Review 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.

Code Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Code Review this skillecency/vision-mobile262—~2kAutomated safety check: PassMIT
ThemingCode-with-Beto/skills141—~2.5kAutomated safety check: PassNone
Uniwindpproenca/dot-skills214—~1.9kAutomated safety check: PassMIT
Olore Nativewind 4olorehq/olore103—~478Automated safety check: PassMIT
Cometchat React Native Customizationcometchat/cometchat-skills129—~2.5kAutomated safety check: PassMIT
Cometchat React Native Migrationcometchat/cometchat-skills129—~1.3kAutomated safety check: PassMIT

Similar skills

  • Theming

    Code-with-Beto/skills

    Scaffold a unified, cross-platform color theme system into an Expo Router app.

    141 GitHub stars~2.5k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Uniwind

    pproenca/dot-skills

    Uniwind best practices for React Native styling with Tailwind CSS.

    214 GitHub stars~1.9k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Olore Nativewind 4

    olorehq/olore

    Local NativeWind v4 documentation reference. An agent skill from olorehq/olore.

    103 GitHub stars~478 tokensUpdated yesterday
    MobileAuto-check passed
  • Cometchat React Native Customization

    cometchat/cometchat-skills

    Theme, restyle and extend the CometChat React Native UI Kit v5 — theme modes and color tokens, per-component style objects, view slots, and the DataSource decorator chain for custom message types.

    129 GitHub stars~2.5k tokensUpdated 2 days ago
    MobileAuto-check passed
  • Cometchat React Native Migration

    cometchat/cometchat-skills

    Migrate a React Native app from CometChat UI Kit v4 to v5 — the 16 removed components, what replaces each, the composite-to-modular rewrite, and the theming change from setter objects to a provider.

    129 GitHub stars~1.3k tokensUpdated 2 days ago
    MobileAuto-check passed
  • React Native Styling

    HoangNguyen0403/agent-skills-standard

    Style React Native apps with StyleSheet API, Flexbox, theming, and responsive design.

    570 GitHub stars~333 tokensUpdated yesterday
    MobileAuto-check passed

More from ecency/vision-mobile

  • Add Feature

    ecency/vision-mobile

    A skill your agent uses when adding a new screen, route, or user-facing feature to the Ecency mobile React Native app, covering navigator registration, route params, i18n strings and styling.

    262 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Add Mutation

    ecency/vision-mobile

    A skill your agent uses when adding, wrapping, or calling an @ecency/sdk mutation hook in the mobile app (Hive broadcasts like transfer, follow, vote, delegate, community, engine token, or points)

    262 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Add Query

    ecency/vision-mobile

    A skill your agent uses when reading server data in the mobile app - wiring an @ecency/sdk query option into a screen, adding or editing a hook under src/providers/queries/, paginating a feed or…

    262 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check passed
  • Add Sheet

    ecency/vision-mobile

    A skill your agent uses when adding, registering, or debugging a bottom sheet (action sheet) in the mobile app, including when a sheet's cancel or dismissal reaches the caller as the wrong result.

    262 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Debug

    ecency/vision-mobile

    Diagnose a bug in the Ecency mobile app when a broadcast or login fails, a wallet or transfer amount is wrong, a screen or deep link does not open, a bottom sheet misbehaves, dark mode colors are…

    262 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Code Review

What does Code Review do?

Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor…. Code Review is an agent skill from ecency/vision-mobile. Review a vision-mobile React Native change (diff, branch, PR or file) against this repo's own traps and conventions: action sheet return values, setNativeProps caret, safe-area edges, editor teardown order, notification routing copies, SDK mutation wrappers, EStyleSheet theming.

When should I use Code Review?

Code Review fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve Code review; tasks that involve Theming and dark mode.

How do I install Code Review in Claude Code?

Run `npx skills add ecency/vision-mobile --skill code-review -a claude-code`. Or copy the skill folder (.claude/skills/code-review in ecency/vision-mobile) into .claude/skills/code-review in your project. Claude Code loads it when a task matches its description.

How do I install Code Review in Codex?

Run `npx skills add ecency/vision-mobile --skill code-review -a codex`. Or copy the skill folder (.claude/skills/code-review in ecency/vision-mobile) into .agents/skills/code-review in your project. Codex loads it when a task matches its description.

Can I use Code Review 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 ecency/vision-mobile --skill code-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/code-review, .gemini/skills/code-review, .github/skills/code-review and .opencode/skills/code-review in your project.

What does Code Review need to run?

Going by SKILL.md and its folder, Code Review needs the command-line tools its instructions call (yarn).

Does Code Review access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Code Review 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 Code Review use?

Code Review 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 Code Review use?

About 2k tokens (SKILL.md is roughly 8k 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 Code Review?

Skills that share tags, products or a category with Code Review: Theming (Code-with-Beto/skills, 141 stars), Uniwind (pproenca/dot-skills, 214 stars), Olore Nativewind 4 (olorehq/olore, 103 stars) and Cometchat React Native Customization (cometchat/cometchat-skills, 129 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Code Review?

ecency (a GitHub organization) maintains it in ecency/vision-mobile, which has 262 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 5, 2026.

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