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.
A portable, framework-agnostic discipline for the write path of any React or React Native app using a query/cache layer.
$ npx skills add sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sickn33/agentic-awesome-skills frontend-optimistic-mutations --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/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/frontend-optimistic-mutations .claude/skills/frontend-optimistic-mutations && 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 "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .claude/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutationsType 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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sickn33/agentic-awesome-skills frontend-optimistic-mutations --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/frontend-optimistic-mutations .agents/skills/frontend-optimistic-mutations && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .agents/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sickn33/agentic-awesome-skills frontend-optimistic-mutations --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/frontend-optimistic-mutations .cursor/skills/frontend-optimistic-mutations && 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 "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .cursor/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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/sickn33/agentic-awesome-skills.git --path skills/frontend-optimistic-mutations--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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sickn33/agentic-awesome-skills frontend-optimistic-mutations --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/frontend-optimistic-mutations .gemini/skills/frontend-optimistic-mutations && 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 "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .gemini/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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 sickn33/agentic-awesome-skills frontend-optimistic-mutationsInstalls 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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/frontend-optimistic-mutations .github/skills/frontend-optimistic-mutations && 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 "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .github/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sickn33/agentic-awesome-skills frontend-optimistic-mutations --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/frontend-optimistic-mutations .opencode/skills/frontend-optimistic-mutations && 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 "frontend-optimistic-mutations" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/frontend-optimistic-mutations into .opencode/skills/frontend-optimistic-mutations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-optimistic-mutations", 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.
frontend-optimistic-mutationsA portable, framework-agnostic discipline for the write path of any React or React Native app using a query/cache layer.
Frontend Optimistic Mutations is an agent skill from 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.
Its SKILL.md is about 3.6k 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. It works with React and React Native. The repository describes itself as: AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400+ agentic skills. Includes… The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 680176d. 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:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, 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.
Frontend Optimistic Mutations loads about 3.6k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 1,241 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 sickn33/agentic-awesome-skills at commit 680176d, republished under its MIT licence (© sickn33). 1,241 words, ~3,555 tokens.
.claude/skills/frontend-optimistic-mutations/SKILL.md (or your agent's skills folder).Use this skill when you need a portable, framework-agnostic discipline for the write path of any React or React Native app using a query/cache layer. Codifies the optimistic-update lifecycle (cancel in-flight queries → snapshot every affected cache → patch instantly → roll back verbatim on error → invalidate on...
Portable skill — readable by Claude Code, OpenCode, Codex, Cursor, Windsurf, and others. This skill describes the discipline of the write path — optimistic updates, rollback, idempotency, cache coherence — not a UI library or a styling system. It builds directly on the frontend-data-contracts skill (writes go through the typed client) and the frontend-architecture skill (mutations live in
modules/{feature}/hooks/, keyed by a factory).
The goal: a write feels instant (the UI reflects it before the server confirms), is safe (a failure restores the exact prior state, and a retry never double-charges), and leaves the cache coherent (the detail view and every list page agree). All three at once — that's the craft.
| Situation | Strategy |
|---|---|
| High-confidence, low-conflict write (toggle status, like, mark-paid, reorder) | Optimistic — patch immediately, roll back on error. |
| Create that returns a server-generated id/number/total | Pending state, then setQueryData from the server response. A temporary optimistic row is optional; reconcile on success. |
| Destructive or hard-to-reverse write (delete with cascade, send money) | Confirm first, then optimistic or pending — never silent-optimistic. |
| Write whose result the user can't see yet (background job) | Pending + toast, invalidate when done. No optimistic patch. |
Optimism is a UX tool for writes you're confident will succeed. If failure is common or expensive to undo, prefer a pending state.
The canonical shape. Each beat has a job; skipping one breaks correctness.
// modules/invoice/hooks/useInvoiceMutations.ts
interface MarkPaidContext {
previousInvoice: Invoice | undefined; // detail snapshot
previousLists: Array<[readonly unknown[], InvoiceListResponse]>; // every list page snapshot
}
export function useMarkInvoicePaid() {
const queryClient = useQueryClient();
const notifyError = useApiErrorToast();
return useMutation<Invoice, ApiError, { id: InvoiceId }, MarkPaidContext>({
mutationFn: ({ id }) => apiClient.post<Invoice>(INVOICE_API.markPaid(id)),
// 1 + 2 + 3: cancel in-flight reads, snapshot, patch
onMutate: async ({ id }) => {
await queryClient.cancelQueries({ queryKey: invoiceKeys.all }); // (1) no late refetch clobber
const detailKey = invoiceKeys.detail(id);
const previousInvoice = queryClient.getQueryData<Invoice>(detailKey); // (2) snapshot detail
if (previousInvoice) {
queryClient.setQueryData<Invoice>(detailKey, {
// (3) patch detail
...previousInvoice,
status: InvoiceStatus.Paid,
});
}
const previousLists: MarkPaidContext["previousLists"] = [];
for (const [key, list] of queryClient.getQueriesData<InvoiceListResponse>(
{
queryKey: invoiceKeys.lists(),
},
)) {
if (!list) continue;
previousLists.push([key, list]); // (2) snapshot each page
if (!list.invoices.some((i) => i.id === id)) continue;
queryClient.setQueryData<InvoiceListResponse>(key, {
// (3) patch matching row
...list,
invoices: list.invoices.map((i) =>
i.id === id ? { ...i, status: InvoiceStatus.Paid } : i,
),
});
}
return { previousInvoice, previousLists };
},
// 4: roll back verbatim
onError: (error, { id }, ctx) => {
if (ctx?.previousInvoice)
queryClient.setQueryData(invoiceKeys.detail(id), ctx.previousInvoice);
for (const [key, list] of ctx?.previousLists ?? [])
queryClient.setQueryData(key, list);
notifyError(error);
},
// 5: invalidate so authoritative server state (paidAt, aggregates) refetches
onSettled: (_d, _e, { id }) => {
void queryClient.invalidateQueries({ queryKey: invoiceKeys.detail(id) });
void queryClient.invalidateQueries({ queryKey: invoiceKeys.lists() });
},
});
}Why each beat:
ApiError.A create that returns an id/number/total can't be fully optimistic. Run it as a pending mutation and seed the cache from the response.
export function useCreateInvoice() {
const queryClient = useQueryClient();
return useMutation<Invoice, ApiError, CreateInvoiceInput>({
mutationFn: ({ document, idempotencyKey }) =>
apiClient.post<Invoice>("/invoices", document, { idempotencyKey }),
onSuccess: (invoice) => {
queryClient.setQueryData(invoiceKeys.detail(invoice.id), invoice); // seed detail
void queryClient.invalidateQueries({ queryKey: invoiceKeys.lists() }); // refresh lists
},
onError: (error) => notifyError(error),
});
}A single entity appears in many caches: its detail, and every filtered/paginated list page. An optimistic patch must touch all of them or surfaces disagree. Use a hierarchical key factory (from frontend-architecture §4.3) so you can target precisely.
export const invoiceKeys = {
all: ["invoices"] as const,
lists: () => [...invoiceKeys.all, "list"] as const,
list: (p: IListParams) => [...invoiceKeys.lists(), p] as const,
detail: (id: InvoiceId) => [...invoiceKeys.all, "detail", id] as const,
} as const;getQueriesData({ queryKey: invoiceKeys.lists() }) enumerates every cached list page so you can patch each.invalidateQueries({ queryKey: invoiceKeys.lists() }) refreshes them all on settle.detail(id) targets exactly one entity.Snapshot each page you touch (keyed by its exact query key) so rollback restores every page verbatim, not just the one currently on screen.
A retried POST must not perform the action twice. Generate the key once, at form init (or first user intent), carry it through retries, and let the client send it as a header. The server replays the original response for a repeated key within its window.
// at form initialisation — stable for the lifetime of this attempt
const idempotencyKey = useMemo(() => crypto.randomUUID(), []);
// mutation forwards it; the typed client puts it on the header
apiClient.post<Invoice>("/invoices", document, { idempotencyKey });Hard rules:
mutationFn (which re-runs per retry → defeats the purpose).useMutation({
retry: (count, error: ApiError) => error.isNetworkError && count < 2, // network-only, bounded
});The five-beat lifecycle is the same; the hooks differ.
| Library | Optimistic mechanism |
|---|---|
| TanStack Query | onMutate (cancel + snapshot + patch) → onError (rollback) → onSettled (invalidate). The reference shape above. |
| RTK Query | onQueryStarted: updateQueryData returns a patchResult; await queryFulfilled and call patchResult.undo() in catch. invalidatesTags on settle. |
| SWR | mutate(key, optimisticData, { rollbackOnError: true, populateCache, revalidate: true }) — optimistic data + automatic rollback + revalidate. |
For React Native, all three libraries work unchanged; the cache is the source of truth on native too. Keep mutation hooks DOM-free so they're shareable across web and native.
onMutate cancels in-flight queries before patching.onSettled invalidates so server-computed fields are refetched (on success and error).Adding an optimistic mutation: decide it's safe to be optimistic (§1). Write the five beats (§2). Identify every cache the entity lives in and patch/snapshot all of them (§4).
Making a write safe to retry: generate an idempotency key at form init, thread it through the mutation, confirm the client sends it (§5), and set a network-only bounded retry (§6).
Debugging a flicker / wrong-state-after-write: check that onMutate cancels queries (late
refetch clobber) and that onSettled invalidates (stale server-computed fields). Check that all
list pages were patched, not just the visible one.
Reviewing the write path: run the checklist in §8. The highest-value catches are missing
cancelQueries (race clobber), partial cache patches (detail/list disagreement), and idempotency
keys generated inside mutationFn (no longer protect retries).
This skill follows the Anthropic SKILL.md format and is portable across agents.
skills/frontend-optimistic-mutations/SKILL.md in a public GitHub repo.name and high-signal description — discovery indexes match against it.npx skills add <org>/<repo> --skill "frontend-optimistic-mutations".SKILL.md agents can be pointed here from AGENTS.md / CLAUDE.md; Kiro can mirror it as a steering file.© sickn33, 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 skills/frontend-optimistic-mutations of sickn33/agentic-awesome-skills.
Open the folder on GitHubat commit 680176d
We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sickn33/agentic-awesome-skills, which our catalogue first saw on October 7, 2026.
Frontend Optimistic Mutations 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 |
|---|---|---|---|---|---|---|
| Frontend Optimistic Mutations this skillsickn33/agentic-awesome-skills | 47k | 1 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Add Featureecency/vision-mobile | 262 | — | ~1.9k | Automated safety check: Pass | MIT | |
| ThemingCode-with-Beto/skills | 140 | — | ~2.5k | Automated safety check: Pass | None | |
| React Native Experttech-leads-club/agent-skills | 7k | — | ~3.2k | Automated safety check: Pass | CC-BY-4.0 | |
| React Devtoolssanity-io/sanity | 6.4k | 3 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 243 | — | ~7.2k | Automated safety check: Pass | MIT |
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.
Code-with-Beto/skills
Scaffold a unified, cross-platform color theme system into an Expo Router app.
tech-leads-club/agent-skills
Guides React Native and Expo work for cross-platform apps: Expo Router navigation, fast lists, Reanimated animation, platform-specific code and project structure.
sanity-io/sanity
React DevTools CLI for AI agents. An agent skill from sanity-io/sanity.
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
kingstinct/react-native-healthkit
Software Mansion's best practices for gestures in React Native apps using React Native Gesture Handler.
sickn33/agentic-awesome-skills
Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.
sickn33/agentic-awesome-skills
Saves a user's project decisions, rules and preferences into a project-local mdbase so later sessions and other agents can recover the intent.
sickn33/agentic-awesome-skills
Keeps project decisions, research and verified results available across coding-agent sessions through LWC memory, a document Wiki graph and a CodeGraph code index.
sickn33/agentic-awesome-skills
Guides an agent through assessing its own owner for cofounder fit, publishing an approved profile, and ranking complementary profiles other agents published for their owners.
sickn33/agentic-awesome-skills
Integracao com WhatsApp Business Cloud API (Meta). An agent skill from sickn33/agentic-awesome-skills.
sickn33/agentic-awesome-skills
Acts as a proxy for the Cline CLI, dispatching coding tasks one at a time, monitoring runs by hard evidence, relaying decisions to you and learning per-project preferences.
Works with
Categories
A portable, framework-agnostic discipline for the write path of any React or React Native app using a query/cache layer. Frontend Optimistic Mutations is an agent skill from 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.
Frontend Optimistic Mutations fits situations like: tasks that involve Cross-platform mobile apps.
Run `npx skills add sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a claude-code`. Or copy the skill folder (skills/frontend-optimistic-mutations in sickn33/agentic-awesome-skills) into .claude/skills/frontend-optimistic-mutations in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a codex`. Or copy the skill folder (skills/frontend-optimistic-mutations in sickn33/agentic-awesome-skills) into .agents/skills/frontend-optimistic-mutations 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 sickn33/agentic-awesome-skills --skill frontend-optimistic-mutations -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontend-optimistic-mutations, .gemini/skills/frontend-optimistic-mutations, .github/skills/frontend-optimistic-mutations and .opencode/skills/frontend-optimistic-mutations in your project.
Going by SKILL.md and its folder, Frontend Optimistic Mutations needs the command-line tools its instructions call (npx).
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. 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.
Frontend Optimistic Mutations is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k 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 Frontend Optimistic Mutations: Add Feature (ecency/vision-mobile, 262 stars), Theming (Code-with-Beto/skills, 140 stars), React Native Expert (tech-leads-club/agent-skills, 7k stars) and React Devtools (sanity-io/sanity, 6.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sickn33 (a GitHub user) maintains it in sickn33/agentic-awesome-skills, which has 47,379 GitHub stars. The repository holds 1,493 skills in this directory. The repository was last updated on October 9, 2026.
Source: sickn33/agentic-awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.