Agent skill

Add Mutation

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

MITAuto-check passedMobile

Install Add Mutation

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

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

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

At a glance

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)

  • Works in 3 steps: Create the wrapper → Export from the barrel → Call it (from the barrel)
  • Calling an @ecency/sdk mutation hook in the mobile app (Hive broadcasts like transfer
  • SKILL.md covers 1. Create the wrapper, 2. Export from the barrel, 3. Call it (from the barrel) and No SDK hook for the operation?, plus 1 more section
  • Calls yarn

What it does

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

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

  • Calling an @ecency/sdk mutation hook in the mobile app (Hive broadcasts like transfer

Example prompts

  • “/add-mutation”

Workflow steps

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

  1. Create the wrapper
  2. Export from the barrel
  3. Call it (from the barrel)

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 Mutation loads about 1.9k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 754 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
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). 754 words, ~1,943 tokens.

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

Add Mutation

Wrap an @ecency/sdk mutation hook in src/providers/sdk/mutations/. CLAUDE.md ("SDK Migration") covers the adapter; this file is the procedure plus the Hive authority rules a wrapper must respect.

1. Create the wrapper

src/providers/sdk/mutations/use<Operation>Mutation.ts. Most wrappers there are exactly this shape, so copy it verbatim:

typescript
import { useTransfer } from '@ecency/sdk';
import { useMutationAuth } from './common';

export function useTransferMutation() {
  const { username, authContext } = useMutationAuth();
  return useTransfer(username, authContext, 'async');
}
  • 'async' is the broadcast mode, passed as the last positional arg after authContext. Its index varies by hook, so read the signature rather than assuming a position. Pass it unless the hook has no such parameter. useBroadcastMutation takes it as { broadcastMode: 'async' } inside the options object instead.
  • useMutationAuth() from ./common.ts (most wrappers import it) returns { username, authContext }: currentAccount?.name off selectCurrentAccount, plus useAuthContext() (src/providers/sdk/useAuthContext.ts) building { adapter: createMobilePlatformAdapter({...}), enableFallback: true }. There is no mobilePlatformAdapter object to import, use the factory.
  • Most wrappers take no arguments. useSetCommunityRoleMutation(community) plus useUpdateCommunityMutation(community) take the community because the SDK bakes it into the mutation key. useAccountRelationsUpdateMutation(target, onSuccess, onError) takes the target plus both callbacks because the SDK bakes them into the mutation options.
  • A few files are not broadcasts, so they skip useMutationAuth, despite CLAUDE.md still saying all mutation wrappers use it. useGenerateImageMutation plus the digest hooks in useNewsletterDigestMutations.ts (useSubscribeDigestMutation, useLeaveDigestMutation, useUnsubscribeAllDigestsMutation) bind the HiveSigner code from useAuth() (src/hooks/useAuth.ts): useGenerateImage(username, code). useClaimPointsMutation instead derives the access token itself, decrypting currentAccount.local.accessToken with getDigitPinCode(pin) plus decryptKey.

2. Export from the barrel

One line in src/providers/sdk/mutations/index.ts, under the matching domain comment:

typescript
export { useTransferMutation } from './useTransferMutation';

3. Call it (from the barrel)

typescript
import { useFollowMutation } from '../providers/sdk/mutations';
const followMutation = useFollowMutation();
await followMutation.mutateAsync({ following: data.following });

No SDK hook for the operation?

There is no packages/sdk here. @ecency/sdk is an npm dependency, so there is no local build step. Use the generic useBroadcastMutation, as useIgnoreUserMutation.ts does. The positional args:

typescript
return useBroadcastMutation(
  ['hive', 'ignore-user'],                     // 1 mutation key
  username,                                    // 2 username
  ({ following }: { following: string }) => [  // 3 ops builder
    buildIgnoreOp(username!, following),
  ],
  undefined,                                   // 4 onSuccess or undefined
  authContext,                                 // 5 auth context
  'posting',                                   // 6 authority
  { broadcastMode: 'async' },                  // 7 options
);

Pass authority as a plain lowercase string. The parameter is typed AuthorityLevel from @ecency/sdk ('posting' | 'active' | 'owner' | 'memo'); mobile wrappers use 'posting' or 'active'. Do not import the same-named type from src/screens/dappBrowser/bridges/bridgeTypes.ts, an unrelated dapp browser union.

  • 'posting': vote, comment, reblog, follow, ignore, community roles
  • 'active': transfer, delegate, power up/down, savings, limit orders, proposal vote, witness proxy

The SDK's exported OPERATION_AUTHORITY_MAP is the reference list. It maps both account_update plus account_update2 to 'active' flatly, which is right for the common cases but wrong at both ends, so do not copy it for either one.

Both account update operations have payload-dependent authority (custom_json is the third payload-dependent case, below):

OperationPayload setsAuthority Hive requires
bothowner'owner'
account_update2only posting_json_metadata (profile edit, pinned post)'posting'
bothanything else'active'

The owner row covers BOTH versions.

src/utils/hiveOperationAuthority.ts implements the posting row plus the active row for account_update2 only. It does NOT implement the owner row for either version: the function is typed (operation: Operation) => 'posting' | 'active', so its owner branch returns 'active', account_update has no branch at all, plus hiveOperationAuthority.test.ts has no owner case. Its doc comment calling v1 "correctly resolves to active" is wrong whenever the payload sets owner. That resolver serves the hive-uri path (src/providers/hive/hive.ts and src/hooks/useLinkProcessor.tsx), where the operations arrive from an external link. Treat an owner change as unsupported and reject it rather than routing it to 'active'.

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

custom_json is the third payload-dependent case. required_auths alone means active, required_posting_auths alone means posting.

A payload populating BOTH is the case this app does not handle. resolveTxRequiredAuthority collapses a whole transaction to a single 'posting' | 'active', which src/providers/hive/hive.ts then turns into one decrypted key, posting or active. So treat a mixed payload as unsupported by this client and say so, rather than calling it malformed or picking one authority for it.

Neither implementation detects the case today. hiveOperationAuthority.ts never reads required_posting_auths at all. The SDK's getCustomJsonAuthority returns 'active' as soon as required_auths is non-empty, without checking the other list. Both therefore sign with one key.

useBroadcastMutation takes authority as its sixth positional parameter, fixed when the hook is created, while operations is (payload: T) => Operation[] and only runs at mutate time. The mutation reads the closed-over value, so a wrapper cannot choose an authority from its payload. If both shapes are possible, write two hooks with fixed authorities and pick at the call site:

typescript
// posting: profile edit, pinned post, anything touching only posting_json_metadata
export const useUpdateProfileMetadataMutation = () => { /* ..., 'posting' */ };
// active: json_metadata or a key or authority change other than owner (an owner
// change is unsupported, reject it)
export const useUpdateAccountKeysMutation = () => { /* ..., 'active' */ };

useBroadcastMutation's authority parameter defaults to 'posting', so pass the right value explicitly.

Prefer an SDK build<Operation>Op helper (buildTransferOp, buildVoteOp) over a hand written op tuple.

Gotchas

  1. Auth is not your job: the adapter routes PIN key decryption, HiveSigner hive-uri WebView signing, HiveAuth signing, plus the active key upgrade sheet.
  2. No toasts or navigation in the wrapper. Do that at the call site or in hook callbacks.
  3. Check the hook exists in the installed @ecency/sdk first, then run yarn lint plus yarn typecheck; the baseline is empty, so any error fails 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/add-mutation of ecency/vision-mobile.

Open the folder on GitHubat commit feef7d1

Compare with similar skills

Add Mutation 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 Mutation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Mutation this skillecency/vision-mobile262—~1.9kAutomated safety check: PassMIT
React Native Best Practicesvercel-labs/openreview1.7k17 repos~1.1kAutomated safety check: PassMIT
Swiftui Protwostraws/SwiftUI-Agent-Skill5k2 repos~1kAutomated safety check: PassMIT
Ip As LogoKartikLabhshetwar/better-shot2.4k1 repos~4.3kAutomated safety check: PassMIT
Compose Multiplatform Patternsmonta-app/ocpp-emulator1795 repos~2kAutomated safety check: PassApache-2.0
Aso Appstore Screenshotsadamlyttleapps/claude-skill-aso-appstore-screenshots1.8k1 repos~9.6kAutomated safety check: PassMIT

Similar skills

  • React Native Best Practices

    vercel-labs/openreview

    Official

    A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.

    1.7k GitHub starsUsed in 17 repos~1.1k tokens
    MobileAuto-check passed
  • Swiftui Pro

    twostraws/SwiftUI-Agent-Skill

    Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.

    5k GitHub starsUsed in 2 repos~1k tokens
    MobileAuto-check passed
  • Ip As Logo

    KartikLabhshetwar/better-shot

    Generate extremely simple, cute, personified square character images with rounded heavy forms, two purposeful character colors, one solid background color, and a dominant lower-corner composition.

    2.4k GitHub starsUsed in 1 repo~4.3k tokens
    MobileAuto-check passed
  • Compose Multiplatform Patterns

    monta-app/ocpp-emulator

    Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.

    179 GitHub starsUsed in 5 repos~2k tokens
    MobileAuto-check passed
  • Aso Appstore Screenshots

    adamlyttleapps/claude-skill-aso-appstore-screenshots

    Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.

    1.8k GitHub starsUsed in 1 repo~9.6k tokens
    MobileAuto-check passed
  • Swiftui UI Patterns

    AFK-surf/OpenBridge

    Best practices and example-driven guidance for building SwiftUI views and components.

    430 GitHub starsUsed in 4 repos~887 tokens
    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 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

Categories

Questions about Add Mutation

What does Add Mutation do?

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

When should I use Add Mutation?

Add Mutation fits situations like: calling an @ecency/sdk mutation hook in the mobile app (Hive broadcasts like transfer.

How do I install Add Mutation in Claude Code?

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

How do I install Add Mutation in Codex?

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

Can I use Add Mutation 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-mutation -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-mutation, .gemini/skills/add-mutation, .github/skills/add-mutation and .opencode/skills/add-mutation in your project.

What does Add Mutation need to run?

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

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

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

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

Skills that share tags, products or a category with Add Mutation: React Native Best Practices (vercel-labs/openreview, 1.7k stars), Swiftui Pro (twostraws/SwiftUI-Agent-Skill, 5k stars), Ip As Logo (KartikLabhshetwar/better-shot, 2.4k stars) and Compose Multiplatform Patterns (monta-app/ocpp-emulator, 179 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Mutation?

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.