Expensify/App is the source code for New Expensify, a financial collaboration application organized around chat. It is used by contributors building and testing the web, iOS, and Android versions of the application. Catalogue add-ons support development workflows such as mobile testing and agent-assisted work on the codebase.
Borrowing it
Nothing to install: this file belongs to Expensify/App. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Expensify/App/main/.claude/skills/app-coding-standards/SKILL.mdgit clone --depth 1 https://github.com/Expensify/AppWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/expensify/app/app-coding-standards)<a href="https://agentmods.dev/skills/expensify/app/app-coding-standards"><img src="https://agentmods.dev/badge/skills/expensify/app/app-coding-standards/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/expensify/app/app-coding-standards"><img src="https://agentmods.dev/badge/skills/expensify/app/app-coding-standards.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00044 | $0.01993 |
| Opus 5.5 | $0.00018 | $0.00797 |
| Sonnet 5.5 | $0.00009 | $0.00399 |
| Haiku 4.5 | $0.00004 | $0.00199 |
Grade A, and why
app-coding-standards scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 92 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Expensify App Coding Standards
Coding standards for the Expensify App. Each standard is a standalone file in rules/ with reasoning, examples, and applicability conditions.
How to Use
This index lists rule titles only. Before writing or editing code, read the full rule file for every category that applies to the files you touch: each file holds the rule's conditions, exceptions, and the fix it expects.
Before committing, stage everything with git add -A. Then start a general-purpose subagent that follows .claude/agents/code-inline-reviewer.md and reviews git diff --cached $(git merge-base origin/main HEAD). CI runs the same check.
Categories
| Category | Prefix | Focus |
|---|---|---|
| Performance | PERF-* |
Render optimization, memo patterns, useEffect hygiene, data selection |
| Consistency | CONSISTENCY-* |
Platform checks, magic values, unused props, ESLint discipline, localization, file naming, JSDoc |
| Clean React Patterns | CLEAN-REACT-PATTERNS-* |
Composition, component ownership, state structure, prop typing, function components |
| UI | UI-* |
Loading indicators, scrollable pages, styling conventions |
Quick Reference
Performance
- PERF-1 — No spread in renderItem
- PERF-2 — Return early before expensive work
- PERF-3 — Shared data in list rows comes from OnyxListItemProvider
- PERF-5 — Shallow over deep comparisons
- PERF-6 — Derive state from props
- PERF-7 — Reset via key prop
- PERF-8 — Handle events in handlers
- PERF-9 — No useEffect chains
- PERF-10 — No useEffect parent communication
- PERF-11 — Optimize data selection
- PERF-12 — Prevent memory leaks
- PERF-13 — Hoist iterator-independent calls
- PERF-14 — Use useSyncExternalStore
- PERF-15 — Clean up async Effects
- PERF-16 — Guard double initialization
- PERF-17 — Pass raw source, index on demand (no pre-built digest)
- PERF-18 — Use usePreMountDestination for RHP pre-mounting
- PERF-19 — Collection selectors return only what the consumer uses
- PERF-20 — Defer heavy work to happen after visual transitions
- PERF-21 — List rows read their own Onyx data
- PERF-22 — List rows subscribe to single collection members
What ships with it
56 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- rules/clean-react-1-composition-over-config.md 23 KB
- rules/clean-react-2-own-behavior.md 4.7 KB
- rules/clean-react-3-context-free-contracts.md 4.9 KB
- rules/clean-react-4-no-side-effect-spaghetti.md 10 KB
- rules/clean-react-5-narrow-state.md 5.0 KB
- rules/clean-react-6-no-componentprops.md 1.4 KB
- rules/clean-react-7-no-inline-prop-types.md 1.6 KB
- rules/clean-react-8-no-class-components.md 1.3 KB
- rules/clean-react-9-no-proptypes.md 1.4 KB
- rules/consistency-1-no-platform-checks.md 1.4 KB
- rules/consistency-10-jsdoc.md 5.5 KB
- rules/consistency-11-no-todo-comments.md 1.3 KB
- rules/consistency-12-callback-named-for-action.md 2.1 KB
- rules/consistency-13-new-file-header.md 1.8 KB
- rules/consistency-14-comment-why.md 1.1 KB
- rules/consistency-15-plain-comment-style.md 1.7 KB
- rules/consistency-16-no-ai-jargon.md 1.8 KB
- rules/consistency-17-plural-form.md 7.3 KB
- rules/consistency-18-comment-non-obvious-code.md 2.4 KB
- rules/consistency-19-copy-grammar-and-case.md 2.5 KB
- rules/consistency-2-no-magic-values.md 1.3 KB
- rules/consistency-20-function-names.md 1.7 KB
- rules/consistency-3-no-code-duplication.md 1.9 KB
- rules/consistency-4-no-unused-props.md 1.6 KB
- rules/consistency-5-justify-eslint-disable.md 2.0 KB
- rules/consistency-6-proper-error-handling.md 1.5 KB
- rules/consistency-7-localize-copy.md 2.0 KB
- rules/consistency-8-localize-numbers-dates.md 2.1 KB
- rules/consistency-9-file-naming.md 2.9 KB
- rules/onyx-1-no-render-reachable-onyx-read.md 14 KB
- rules/perf-1-no-spread-in-renderitem.md 1.2 KB
- rules/perf-10-no-useeffect-parent-comm.md 1.6 KB
- rules/perf-11-optimize-data-selection.md 7.7 KB
- rules/perf-12-prevent-memory-leaks.md 1.6 KB
- rules/perf-13-hoist-iterator-calls.md 2.4 KB
- rules/perf-14-use-sync-external-store.md 3.1 KB
- rules/perf-15-cleanup-async-effects.md 2.7 KB
- rules/perf-16-guard-double-init.md 2.7 KB
- rules/perf-17-pass-raw-index-on-demand.md 3.8 KB
- rules/perf-18-use-pre-mount-destination.md 8.2 KB
- rules/perf-19-scalar-collection-selectors.md 6.7 KB
- rules/perf-2-early-return.md 1.2 KB
- rules/perf-20-no-ad-hoc-deferral.md 12 KB
- rules/perf-21-rows-read-own-data.md 2.5 KB
- rules/perf-22-row-single-member-subscriptions.md 2.1 KB
- rules/perf-3-onyx-list-item-provider.md 2.2 KB
- rules/perf-5-shallow-comparison.md 1.3 KB
- rules/perf-6-derive-state-from-props.md 1.3 KB
- rules/perf-7-reset-via-key-prop.md 1.5 KB
- rules/perf-8-events-in-handlers.md 1.4 KB
- rules/perf-9-no-useeffect-chains.md 2.4 KB
- rules/ui-1-correct-loading-indicator.md 3.4 KB
- rules/ui-2-new-page-scrollview.md 2.2 KB
- rules/ui-3-no-inline-styles.md 1.5 KB
- rules/ui-4-layout-spacing-tokens.md 2.1 KB
- rules/ui-5-reuse-existing-styles.md 2.2 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · -1 lines 115842416e9e
- 3d ago Changed · +2 lines 94b1820d6982
- 7d ago Changed · +2 lines ef1cd88b0609
- 9d ago Changed · +1 lines 9ea000d885ec
- 21d ago Changed · +4 lines 073fcc01310e
- 22d ago Changed · +1 lines 692de6620cce
- 1mo ago First seen · 83 lines · 44 tokens per session scan A 91bf26267811
app-coding-standards is a skill published in the GitHub repository Expensify/App (5,081 stars, last pushed today), licensed MIT. It adds 44 tokens to every session and 1,993 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-12.
Other skills, from other repositories
expo-native-ui
Build beautiful, native-feeling Expo screens. Covers Apple HIG styling, semantic colors, native controls, SF Symbols, media, visual effects, gradients, storage, and responsive layout. For routing and navigation, use the expo-router skill; for motion and animation, use the expo-animation skill.
expo-brownfield
Integrate Expo and React Native into an existing native iOS or Android app. Use for brownfield, embedding a React Native screen in SwiftUI/UIKit or Kotlin, or AAR/XCFramework packaging. Covers isolated and integrated approaches. For building or distributing a purely native app with EAS, use eas-app-stores.
truesheet-usage
Consumer-side guide for integrating @lodev09/react-native-true-sheet into a React Native app. Use this skill whenever the user wants to add, configure, control, or debug a bottom sheet using TrueSheet — including ref-based sheets, named global sheets, web support with TrueSheetProvider/useTrueSheet, React Navigation…
react-native-testing
Write tests using React Native Testing Library (RNTL) v13 and v14 (@testing-library/react-native). Use when writing, reviewing, or fixing React Native component tests. Covers: render, screen, queries (getBy/getAllBy/queryBy/findBy), Jest matchers, userEvent, fireEvent, waitFor, and async patterns. Supports v13 (React…
taro-ui-guide
Guides installation, Taro config, styling, and usage of taro-ui (At components) for WeChat/Alipay/H5/RN. Use when building Taro apps with taro-ui, picking components, theming, i18n, or modifying packages/taro-ui source.
vercel-react-native-skills
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.