Material 3
hamen/material-3-skill
Implement Google's Material Design 3 (Material You) UI system.
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…
$ npx skills add ecency/vision-mobile --skill debug -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ecency/vision-mobile debug --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/ecency/vision-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/debug .claude/skills/debug && 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 "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .claude/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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/ecency/vision-mobile/tree/development/.claude/skills/debugType 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 ecency/vision-mobile --skill debug -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ecency/vision-mobile debug --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ecency/vision-mobile.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/debug .agents/skills/debug && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .agents/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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 ecency/vision-mobile --skill debug -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ecency/vision-mobile debug --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ecency/vision-mobile.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/debug .cursor/skills/debug && 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 "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .cursor/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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/ecency/vision-mobile.git --path .claude/skills/debug--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 ecency/vision-mobile --skill debug -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ecency/vision-mobile debug --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ecency/vision-mobile.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/debug .gemini/skills/debug && 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 "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .gemini/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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 ecency/vision-mobile debugInstalls 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 ecency/vision-mobile --skill debug -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ecency/vision-mobile.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/debug .github/skills/debug && 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 "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .github/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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 ecency/vision-mobile --skill debug -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ecency/vision-mobile debug --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ecency/vision-mobile.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/debug .opencode/skills/debug && 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 "debug" agent skill from https://github.com/ecency/vision-mobile/tree/development/.claude/skills/debug into .opencode/skills/debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "debug", 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.
debugDiagnose 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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit feef7d1. 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.
Shell commands in SKILL.md call:
yarnbashFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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); files beside SKILL.md are not scanned.
The full file from ecency/vision-mobile at commit feef7d1, republished under its MIT licence (© ecency). 1,137 words, ~2,683 tokens.
.claude/skills/debug/SKILL.md (or your agent's skills folder).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.
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.authType | login 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.
setTempActiveKey expires it on a timer while
getActiveKey calls clearTempActiveKey() on read, so it is single use.broadcastWithHiveSigner calls
RootNavigation.navigate({ name: ROUTES.MODALS.HIVE_SIGNER, ... })
(src/navigation/rootNavigation.tsx).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.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.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.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).
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.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.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.src/navigation/: stackNavigator.tsx, drawerNavigator.tsx, botomTabNavigator.tsx (spelling
is intentional), appNavigator.tsx, plus rootNavigation.tsx for non-React navigation.
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.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.Registry src/navigation/sheets.tsx: the SheetNames enum and the registerSheet calls line up
one-to-one.
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/.SheetManager.show ran, so re-show with fresh data.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;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'.
| Variable | Light | Dark |
|---|---|---|
$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.
Config src/providers/queries/sdk-config.ts (initSdkConfig), client
src/providers/queries/index.ts.
enabled; an undefined username usually disables the query.invalidateQueries takes a raw key or { queryKey }
and warns instead of throwing on failure, so a wrong key looks like success.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.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 onlyyarn 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.
src/screens/ or src/components/.useMutationAuth() to mobilePlatformAdapter to HiveSigner / HiveAuth / key.useAppSelector(selectCurrentAccount).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
Just SKILL.md in .claude/skills/debug of ecency/vision-mobile.
Open the folder on GitHubat commit feef7d1
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Debug this skillecency/vision-mobile | 262 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Material 3hamen/material-3-skill | 1.5k | 2 repos | ~7.8k | Automated safety check: Pass | MIT | |
| STS Amethyst Launcher Design SystemModinMobileSTS/SlayTheAmethystModded | 400 | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Maui Themingdotnet/skills | 5.6k | 1 repos | ~4.1k | Automated safety check: Pass | MIT | |
| Monochromatic UIsickn33/agentic-awesome-skills | 47k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| UniwindOhh-889/skyroc | 795 | — | ~1.4k | Automated safety check: Pass | MIT |
hamen/material-3-skill
Implement Google's Material Design 3 (Material You) UI 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.
dotnet/skills
Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences.
sickn33/agentic-awesome-skills
Web and App implementation guide for Monochromatic UI. An agent skill from sickn33/agentic-awesome-skills.
Ohh-889/skyroc
Uniwind — Tailwind CSS v4 styling for React Native. An agent skill from Ohh-889/skyroc.
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…
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.
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)
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…
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.
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…
Categories
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.
Debug fits situations like: tasks that involve Theming and dark mode.
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.
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.
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.
Going by SKILL.md and its folder, Debug needs the command-line tools its instructions call (yarn and bash).
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.
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.
Debug is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.