Agent skill

Debug

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

MITAuto-check passedFrontend & Design

Install Debug

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

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

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

At a glance

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…

  • Works in 7 steps: Auth / broadcast → Wallet / transfer → Navigation → …
  • Tasks that involve Theming and dark mode
  • SKILL.md covers 1. Auth / broadcast, 2. Wallet / transfer, 3. Navigation and 4. Bottom sheets, plus 4 more sections
  • Calls yarn and bash

What it does

Debug is an agent skill from 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 wrong, an SDK query returns stale data, or a Metro or native build breaks

Its SKILL.md is about 2.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 Frontend & Design, covering Theming and dark mode. 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 Theming and dark mode

Example prompts

  • “/debug”

Workflow steps

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

  1. Auth / broadcast
  2. Wallet / transfer
  3. Navigation
  4. Bottom sheets
  5. Theme
  6. SDK queries
  7. Build

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
    • bash

    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

Debug loads about 2.7k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 1,137 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~69
When it runs · the whole SKILL.md, loaded when a task matches
~2.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 ecency/vision-mobile at commit feef7d1, republished under its MIT licence (© ecency). 1,137 words, ~2,683 tokens.

Download SKILL.mdSave it as .claude/skills/debug/SKILL.md (or your agent's skills folder).
name
debug
description
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 wrong, an SDK query returns stale data, or a Metro or native build breaks
argument-hint
issue-description

Debug Guide

Triage procedure. Layout, commands, architecture and test setup are in CLAUDE.md; this file adds the per-area entry points plus the traps. Verify against the code before acting.

1. Auth / broadcast

authType is a string, not a number (src/constants/authType.ts): steemConnect, hiveAuth, masterKey, activeKey, memoKey, postingKey, ownerKey. mapAuthTypeToLoginType (src/utils/authMapper.ts) maps them to the SDK login type:

currentAccount.local.authTypelogin type
'steemConnect''hivesigner'
'hiveAuth''hiveauth'
the key types above'key'
anything else'key' plus an [AuthMapper] Unknown authType warning

(CLAUDE.md still describes AUTH_TYPE as numbers; the code uses the strings above.)

Routing is src/providers/sdk/mobilePlatformAdapter.ts. getLoginType(username, authority) can override the map: a key user with no postingKey but an accessToken goes to HiveSigner. A HiveSigner user asking for active returns null, so the SDK falls through to showAuthUpgradeUI.

Authority per operation: resolveOperationAuthority / resolveTxRequiredAuthority in src/utils/hiveOperationAuthority.ts. vote, comment, comment_options, delete_comment, claim_reward_balance are posting outright. The payload dependent ops are checked before that set: custom_json is posting unless it declares a non-empty required_auths; account_update2 is posting unless it sets a non-empty json_metadata or any of owner/active/posting/memo_key. Everything else is active.

resolveTxRequiredAuthority then collapses a whole transaction to a single authority, returning active when any one operation needs it, so the signer decrypts one key for the batch. That is fine for a uniform transaction. It is wrong for a mixed one, meaning a batch holding both a posting-only operation and an active operation. Hive's verify_authority checks the required posting authorities, then calls clear_approved() before checking the required active ones, so the two sets are satisfied independently and one active signature does not cover both. HF28 lifted the old ban on mixing them in a single transaction, so such a batch can now arrive from a deep link where it previously could not. Mobile signs with one key, so treat a mixed batch as unsupported by this client, the same as a mixed custom_json.

  • Active key gone right after upgrade: setTempActiveKey expires it on a timer while getActiveKey calls clearTempActiveKey() on read, so it is single use.
  • HiveSigner WebView not opening: broadcastWithHiveSigner calls RootNavigation.navigate({ name: ROUTES.MODALS.HIVE_SIGNER, ... }) (src/navigation/rootNavigation.tsx).
  • HiveAuth not responding: broadcastWithHiveAuth delegates to handleHiveAuthFallback in src/providers/hive/hive.ts. CLAUDE.md still points at src/providers/hive/dhive.ts; that file is gone and nothing imports hive/dhive. The fallback dedupes by `${name}:${operationName}`, so a concurrent call reuses the in-flight promise.
  • Auth upgrade sheet not showing: showAuthUpgradeUI loads SheetManager plus SheetNames via getSheetDeps(), a cached lazy require() deliberately used instead of import() (which Metro wraps in an async shim), to dodge a circular import. Check that first.
  • "@ecency.app doesn't have permission to broadcast": isMissingEcencyPostingAuthorityError lowercases the error text then matches the substring permission to broadcast, or unauthorized_client together with an ecency.app mention; an ecency.app mention on its own matches neither branch. A bare unauthorized_client is an expired token or wrong scope. shouldPromptPostingAuthority gates the grant sheet.

2. Wallet / transfer

Screens src/screens/transfer/screen/; hooks src/providers/queries/walletQueries/, which composes SDK options (getPortfolioQueryOptions, getPointsQueryOptions, get{Hive,Hbd,HivePower}AssetTransactionsQueryOptions, getOpenOrdersQueryOptions, getRecurrentTransfersQueryOptions, getSavingsWithdrawFromQueryOptions, getConversionRequestsQueryOptions, getCollateralizedConversionRequestsQueryOptions).

  • Delegations are getVestingDelegationsQueryOptions(username, limit) (delegateScreen.tsx, src/screens/assetDetails/children/delegationsModal.tsx). The SDK also exports getHivePowerDelegatingsQueryOptions, which mobile does not appear to use, so do not reach for it by name.
  • Shows 0 HP: vestsToHp(vests, hivePerMVests) (src/utils/conversions.ts) returns 0 when either argument is falsy and runs parseFloat(String(vests)), so a raw number and "1000000.000000 VESTS" both work. Zero almost always means hivePerMVests was missing.
  • Stale delegations: invalidate the exact getVestingDelegationsQueryOptions(name, limit).queryKey; a different limit is another key.
  • [object Object]: RPC rejections are often not Error instances, so String(error) collapses them. See src/components/upvotePopover/container/upvotePopover.tsx.

3. Navigation

src/navigation/: stackNavigator.tsx, drawerNavigator.tsx, botomTabNavigator.tsx (spelling is intentional), appNavigator.tsx, plus rootNavigation.tsx for non-React navigation.

  • Screen not found: the route must be in src/constants/routeNames.ts and registered in one of the navigators. stackNavigator.tsx holds both <MainStack.Screen> and <RootStack.Screen> entries: the root stack mounts the main stack (STACK.MAIN, which renders MainStackNavigator) and registers routes beside it (SCREENS.REGISTER, LOGIN, WELCOME, SCREENS.ACCOUNT_LIST, WEB_BROWSER, PINCODE, MODALS.POLL_WIZARD, MODALS.HIVE_SIGNER), so grepping only for MainStack wrongly declares login, pincode, web browser and the HiveSigner modal unregistered. Remaining routes are the <Tab.Screen> entries in botomTabNavigator.tsx and <Drawer.Screen name={ROUTES.SCREENS.FEED}> in drawerNavigator.tsx.
  • Deep link dead: src/hooks/useLinkProcessor.tsx returns handleLink, which dispatches to _handleEcencyAuthTransferDeeplink, _handleEcencyLoginDeeplink, _handleEcencyTransferDeeplink, _handleHiveUri (which defers to _handleHiveUriTransaction) or else _handleDeepLink. That last one runs deepLinkParser then navigates, falling back to ROUTES.SCREENS.WEB_BROWSER when nothing parses, so an unrecognised link looks like the in-app browser opening for no reason. Parsing is src/utils/deepLinkParser.ts, which has a co-located test to reproduce against.
Show full SKILL.md (422 more words)Show less

4. Bottom sheets

Registry src/navigation/sheets.tsx: the SheetNames enum and the registerSheet calls line up one-to-one.

  • Not opening: the component must be imported into sheets.tsx and registered. It need not come from the src/components/index.tsx barrel; some registered sheets are imported by direct path instead, for example SignConfirmSheet from src/screens/dappBrowser/components/.
  • Stale data: sheets unmount on hide (CLAUDE.md), so sheet state resets between shows. What a sheet renders is the payload captured when SheetManager.show ran, so re-show with fresh data.
  • Falsy result: a sheet resolves with what it passes to SheetManager.hide(sheetId, { payload: value }) (src/components/authUpgradeSheet/), so a falsy result does not mean confirmed. It also may not say why: SignConfirmSheet routes both its Cancel button and its onClose, which fires on a backdrop or gesture dismiss, through the same _close(false), so !ok lumps an explicit reject in with a dismissal. Bail out on falsy; resolve a named field when the caller has to tell the two apart: const ok = await SheetManager.show(SheetNames.SIGN_CONFIRM, { payload }); if (!ok) return;
  • A throw from a sheet render or cleanup is fatal: sheets sit outside the ErrorBoundary.

5. Theme

react-native-extended-stylesheet is built by EStyleSheet.build(isDarkTheme ? darkTheme : lightTheme) inside a useMemo keyed on [isDarkTheme] (src/screens/application/hook/useInitApplication.tsx), so it reruns when the theme toggles. Stylesheet values therefore re-resolve; a value read outside a stylesheet can stay stale. For those reads use EStyleSheet.value('$theme') === 'darkTheme'.

VariableLightDark
$primaryBackgroundColor#FFFFFF#1e2835
$primaryLightBackground#f6f6f6#2e3d51
$primaryBlack#3c4449#fcfcfc
$primaryDarkText#788187#fcfcfc
$iconColor#c1c5c7#788187

$primaryGray, $primaryLightGray, $primaryRed, $primaryGreen are identical in both themes, so switching to them fixes nothing. Bad dark mode colors usually mean a literal hex.

6. SDK queries

Config src/providers/queries/sdk-config.ts (initSdkConfig), client src/providers/queries/index.ts.

  • No fetch: check enabled; an undefined username usually disables the query.
  • Stale after a mutation: the adapter's invalidateQueries takes a raw key or { queryKey } and warns instead of throwing on failure, so a wrong key looks like success.
  • RPC errors: the node pool reaches the SDK through ConfigManager.setHiveNodes(...), which runs from more than one call site, so confirm which list won before blaming failover. Denied nodes are dropped by withoutBlockedServers / isBlockedServer (src/constants/options/api.ts), so check the pool too.

7. Build

bash
bash patch-gradle.sh                       # gradle patch, also runs on install
cd android && ./gradlew clean && cd .. && yarn android
cd ios && pod install && cd .. && yarn ios
yarn start --reset-cache                   # Metro cache only

yarn clear deletes node_modules and reinstalls, so never run it in a shared or worktree checkout. yarn typecheck runs scripts/typecheck.js, not bare tsc.

Triage order

  1. Reproduce, name the screen or component, find it under src/screens/ or src/components/.
  2. Reads: SDK query options to query hook to component.
  3. Writes: useMutationAuth() to mobilePlatformAdapter to HiveSigner / HiveAuth / key.
  4. User state: useAppSelector(selectCurrentAccount).
  5. Prefer a co-located Jest test over a manual repro; src/utils/ already has suites.

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

Open the folder on GitHubat commit feef7d1

Compare with similar skills

Debug 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.

Debug compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Debug this skillecency/vision-mobile262—~2.7kAutomated safety check: PassMIT
Material 3hamen/material-3-skill1.5k2 repos~7.8kAutomated safety check: PassMIT
STS Amethyst Launcher Design SystemModinMobileSTS/SlayTheAmethystModded400—~1.7kAutomated safety check: PassCustom licence
Maui Themingdotnet/skills5.6k1 repos~4.1kAutomated safety check: PassMIT
Monochromatic UIsickn33/agentic-awesome-skills47k1 repos~2.7kAutomated safety check: PassMIT
UniwindOhh-889/skyroc795—~1.4kAutomated safety check: PassMIT

Similar skills

  • Material 3

    hamen/material-3-skill

    Implement Google's Material Design 3 (Material You) UI system.

    1.5k GitHub starsUsed in 2 repos~7.8k tokens
    Frontend & DesignAuto-check passed
  • STS Amethyst Launcher Design System

    ModinMobileSTS/SlayTheAmethystModded

    Design system imported from the SlayTheAmethyst Android Jetpack Compose launcher: Material 3 surfaces, user-selected seed colors, light and dark themes and typography rules.

    400 GitHub stars~1.7k tokensUpdated 8 days ago
    Frontend & DesignAuto-check passed
  • Maui Theming

    dotnet/skills

    Official

    Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences.

    5.6k GitHub starsUsed in 1 repo~4.1k tokens
    Frontend & DesignAuto-check passed
  • Monochromatic UI

    sickn33/agentic-awesome-skills

    Web and App implementation guide for Monochromatic UI. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 1 repo~2.7k tokens
    Frontend & DesignAuto-check passed
  • Uniwind

    Ohh-889/skyroc

    Uniwind — Tailwind CSS v4 styling for React Native. An agent skill from Ohh-889/skyroc.

    795 GitHub stars~1.4k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • iOS Hig

    johnrogers/claude-swift-engineering

    A skill your agent uses when designing iOS interfaces, implementing accessibility (VoiceOver, Dynamic Type), handling dark mode, ensuring adequate touch targets, providing animation/haptic feedback…

    231 GitHub stars~705 tokensUpdated 8 mo ago
    Frontend & DesignAuto-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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed

Questions about Debug

What does Debug do?

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…. Debug is an agent skill from ecency/vision-mobile.

When should I use Debug?

Debug fits situations like: tasks that involve Theming and dark mode.

How do I install Debug in Claude Code?

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

How do I install Debug in Codex?

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

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

What does Debug need to run?

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

Does Debug 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 Debug 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 Debug use?

Debug 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 Debug use?

About 2.7k tokens (SKILL.md is roughly 11k 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 Debug?

Skills that share tags, products or a category with Debug: Material 3 (hamen/material-3-skill, 1.5k stars), STS Amethyst Launcher Design System (ModinMobileSTS/SlayTheAmethystModded, 400 stars), Maui Theming (dotnet/skills, 5.6k stars) and Monochromatic UI (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 Debug?

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.