Agent skill

Add Feature

by ecency in 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.

MITAuto-check passedMobile

Install Add Feature

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

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

GitHub CLI
$ gh skill install ecency/vision-mobile add-feature --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/add-feature .claude/skills/add-feature && 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
add-feature
GitHub stars
262
Token cost
~1.9k tokens
SKILL.md length
714 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 8 steps: screen rooted in SafeAreaView → both barrels → route name → …
  • Adding a new screen
  • SKILL.md covers Step 1: screen rooted in…, Step 2: both barrels, Step 3: route name and Step 4: params contract (skip…, plus 5 more sections
  • Calls yarn

What it does

Add Feature is an agent skill from ecency/vision-mobile. Use 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.

Its SKILL.md is about 1.9k 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 Internationalization. It works with React Native and React. 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

  • Adding a new screen
  • User-facing feature to the Ecency mobile React Native app
  • Covering navigator registration
  • I18n strings and styling

Example prompts

  • “/add-feature”

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. screen rooted in SafeAreaView
  2. both barrels
  3. route name
  4. params contract (skip it and typecheck fails)
  5. register in the navigator
  6. navigating
  7. strings
  8. data

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

Add Feature loads about 1.9k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 714 words of instructions outside code blocks.

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

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). 714 words, ~1,874 tokens.

Download SKILL.mdSave it as .claude/skills/add-feature/SKILL.md (or your agent's skills folder).
name
add-feature
description
Use 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.
argument-hint
feature-name

Add Feature

Ordered procedure for adding a screen. CLAUDE.md covers Redux, TanStack Query, @ecency/sdk, sheets and lint rules in more depth. Easiest to miss: the safe-area root (Step 1) and the params contract (Step 4). Each one breaks something.

New screens are functional. A few older screens under src/screens/ are still classes, plus application/children/errorBoundary.tsx, which React requires to be a class. An overlay with no route of its own, shown with SheetManager.show, is a bottom sheet instead: src/navigation/sheets.tsx, see CLAUDE.md.

text
src/screens/<feature>/
  index.ts                     # local barrel, re-exported from src/screens/index.ts
  screen/<feature>Screen.tsx
  screen/<feature>Styles.ts    # or <feature>.styles.ts
  children/  hooks/            # optional

Step 1: screen rooted in SafeAreaView

Use SafeAreaView from react-native-safe-area-context as the root; that is where screens generally import it from. src/screens/dappBrowser/screen/dappBrowser.tsx still takes it from react-native, which is the pattern this rule exists to replace. Do not pass edges: it replaces the defaults rather than extending them, so edges={['bottom']} drops the top inset and the header runs under the status bar. That shipped on the Email digests screen; the fix was removing edges={['bottom']}.

Skeleton for screen/<feature>Screen.tsx (a template, not a quote of any one file):

tsx
import React from 'react';
import { useIntl } from 'react-intl';
import { SafeAreaView } from 'react-native-safe-area-context';

import { BasicHeader } from '../../../components';
import { useAppSelector } from '../../../hooks';
import { selectCurrentAccount } from '../../../redux/selectors';
import styles from './myFeatureStyles';

const MyFeatureScreen = () => {
  const intl = useIntl();
  const currentAccount = useAppSelector(selectCurrentAccount);

  return (
    <SafeAreaView style={styles.container}>
      <BasicHeader title={intl.formatMessage({ id: 'myfeature.title' })} />
      {/* content */}
    </SafeAreaView>
  );
};

export default MyFeatureScreen;

useAppSelector(selectCurrentAccount) reads the account; useAuth() from src/hooks when you only need { username, code }. Reusable UI is exported from the src/components/index.tsx barrel (BasicHeader, MainButton, TextInput, UserAvatar, Icon).

The styles file default-exports EStyleSheet.create({ container: { flex: 1, backgroundColor: '$primaryBackgroundColor' } }). Variables are defined in src/themes/lightTheme.ts and darkTheme.ts: $primaryBlack text, $primaryDarkGray secondary text, $primaryBlue accent, $primaryLightBackground cards, $iconColor, $primaryRed destructive. Hex literals do not follow the theme.

Step 2: both barrels

src/screens/<feature>/index.ts does import MyFeature from './screen/myFeatureScreen'; then export { MyFeature }; export default MyFeature;. Add the import plus the name to the export block in src/screens/index.ts. stackNavigator.tsx imports its screens from that barrel. src/screens/waves shows the cost of skipping this: it never reached the barrel, so botomTabNavigator.tsx reaches it by path.

Step 3: route name

In src/constants/routeNames.ts. Entries are template literals over the shared suffix consts. The object ends as const, which is what makes the route names a literal union:

ts
    MY_FEATURE: `MyFeature${SCREEN_SUFFIX}`,

Step 4: params contract (skip it and typecheck fails)

src/navigation/types.ts derives RouteName from ROUTES, then asserts every route has an entry:

ts
export type _MissingRouteContracts = AssertNever<Exclude<RouteName, keyof AppParamList>>;

A ROUTES entry with no AppParamList entry breaks that assertion: the route name does not satisfy the constraint never. yarn typecheck runs against an empty baseline, so this fails CI. Add:

ts
  [ROUTES.SCREENS.MY_FEATURE]: { username?: string } | undefined;

Append | undefined only if the screen renders with no params. Leaving it off makes params required at the call sites, which is what you want for a screen that cannot render empty (WEB_BROWSER, VOTERS, ASSET_DETAILS, CHAT_THREAD, PROFILE_EDIT).

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

Step 5: register in the navigator

src/navigation/stackNavigator.tsx defines MainStackNavigator and the root StackNavigator. MainStackNavigator registers the drawer as its first screen (ROUTES.DRAWER.MAIN), so an ordinary screen added to it is a sibling of the drawer that pushes over it. The root StackNavigator holds MainStackNavigator itself plus pre-auth and full-screen routes (Login, Register, Welcome, PinCode, WebBrowser). Most new screens go in the main one:

tsx
<MainStack.Screen name={ROUTES.SCREENS.MY_FEATURE} component={MyFeature} />

Put it in the <MainStack.Group screenOptions={{ animation: 'slide_from_bottom' }}> block to slide up, add options={{ presentation: 'modal' }} for a true modal. The as any casts on existing rows are legacy prop debt; a new screen needs none.

Step 6: navigating

types.ts declares ReactNavigation.RootParamList extends AppParamList, so the untyped hook is already checked against Step 4. Omitting params for a route that requires them is a compile error, not a blank screen.

tsx
const navigation = useNavigation();
navigation.navigate(ROUTES.SCREENS.MY_FEATURE, { username });

Reading the params back is not settled house style. Most screens destructure a route prop, usually typed any; useRoute is rare. Prefer keying off Step 4 instead:

tsx
import { RouteProp, useRoute } from '@react-navigation/native';
import { AppParamList } from '../../../navigation/types';

const route = useRoute<RouteProp<AppParamList, typeof ROUTES.SCREENS.MY_FEATURE>>();

Outside a component (deep links, redux actions) use the equally typed object form, RootNavigation.navigate({ name, params }) from src/navigation/rootNavigation.tsx.

Step 7: strings

src/config/locales/en-US.json is the catalog you edit; Crowdin owns the translations. It is nested: top-level keys are objects, not dotted ids. src/utils/flattenMessages.ts joins the levels with dots at load, so a nested block is read with a dotted id.

json
{ "myfeature": { "title": "My Feature", "empty": "Nothing here yet" } }
tsx
intl.formatMessage({ id: 'myfeature.title' });

Step 8: data

Server data uses @ecency/sdk query options with TanStack Query; mutations use a wrapper in src/providers/sdk/mutations/. See the SDK Migration section of CLAUDE.md. Keep Redux for auth, settings, UI state and the optimistic cache reducer. Older reducers (postsReducer, walletReducer) still hold server data; do not extend them for a new screen.

Checklist

  • Root is SafeAreaView from react-native-safe-area-context, no edges override
  • src/screens/<feature>/index.ts re-exported from src/screens/index.ts
  • Route in routeNames.ts and a params entry in AppParamList (src/navigation/types.ts)
  • Registered in src/navigation/stackNavigator.tsx
  • Nested strings in en-US.json only
  • Theme variables, no hex literals
  • yarn lint and yarn typecheck clean

© 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/add-feature of ecency/vision-mobile.

Open the folder on GitHubat commit feef7d1

Compare with similar skills

Add Feature 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.

Add Feature compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Feature this skillecency/vision-mobile262—~1.9kAutomated safety check: PassMIT
React GeneralLedgerHQ/ledger-live621—~738Automated safety check: PassMIT
ThemingCode-with-Beto/skills141—~2.5kAutomated safety check: PassNone
Frontend Optimistic Mutationssickn33/agentic-awesome-skills47k1 repos~3.6kAutomated safety check: PassMIT
Frontend Architecturesickn33/agentic-awesome-skills47k1 repos~5.6kAutomated safety check: PassMIT
Cometchat I18ncometchat/cometchat-skills129—~1.9kAutomated safety check: PassMIT

Similar skills

  • React General

    LedgerHQ/ledger-live

    General React and React Native engineering rules for Ledger Live.

    621 GitHub stars~738 tokensUpdated today
    Frontend & DesignAuto-check passed
  • 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
  • Frontend Optimistic Mutations

    sickn33/agentic-awesome-skills

    A portable, framework-agnostic discipline for the write path of any React or React Native app using a query/cache layer.

    47k GitHub starsUsed in 1 repo~3.6k tokens
    MobileAuto-check passed
  • Frontend Architecture

    sickn33/agentic-awesome-skills

    A portable, framework-agnostic architecture style for any React or React Native frontend.

    47k GitHub starsUsed in 1 repo~5.6k tokens
    MobileAuto-check passed
  • Cometchat I18n

    cometchat/cometchat-skills

    Localize a CometChat integration — set the UI Kit language, register custom/overridden translations, handle RTL, and never leak a raw localization key into the UI.

    129 GitHub stars~1.9k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Local TanStack Form documentation reference (latest, v1.33.5).

    103 GitHub stars~1.1k tokensUpdated today
    MobileAuto-check passed

More from ecency/vision-mobile

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

    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…

    262 GitHub stars~2k 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

Questions about Add Feature

What does Add Feature do?

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. Add Feature is an agent skill from ecency/vision-mobile. Use 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.

When should I use Add Feature?

Add Feature fits situations like: adding a new screen; user-facing feature to the Ecency mobile React Native app; covering navigator registration; I18n strings and styling.

How do I install Add Feature in Claude Code?

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

How do I install Add Feature in Codex?

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

Can I use Add Feature 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 add-feature -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-feature, .gemini/skills/add-feature, .github/skills/add-feature and .opencode/skills/add-feature in your project.

What does Add Feature need to run?

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

Does Add Feature 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 Add Feature 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 Add Feature use?

Add Feature 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 Add Feature use?

About 1.9k tokens (SKILL.md is roughly 7.5k 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 Add Feature?

Skills that share tags, products or a category with Add Feature: React General (LedgerHQ/ledger-live, 621 stars), Theming (Code-with-Beto/skills, 141 stars), Frontend Optimistic Mutations (sickn33/agentic-awesome-skills, 47k stars) and Frontend Architecture (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Feature?

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.