Agent skill

Review Changes

by gemwalletcom in gemwalletcom/core

Review and fix local git changes against Gem Wallet Core coding standards and patterns

MITAuto-check: notesDevelopment

Install Review Changes

skills CLI
$ npx skills add gemwalletcom/core --skill review-changes -a claude-code

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

GitHub CLI
$ gh skill install gemwalletcom/core review-changes --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/gemwalletcom/core.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/review-changes .claude/skills/review-changes && 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
review-changes
GitHub stars
149
Token cost
~2.4k tokens
SKILL.md length
1,066 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Review and fix local git changes against Gem Wallet Core coding standards and patterns

  • Works in 10 steps: Import Patterns → Naming Conventions → Error Handling → …
  • Tasks that involve Code quality
  • SKILL.md covers Arguments, Mode Selection, Context and Review Checklist, plus 2 more sections
  • Calls git and cargo

What it does

Review Changes is an agent skill from gemwalletcom/core. Review and fix local git changes against Gem Wallet Core coding standards and patterns

Its SKILL.md is about 2.4k 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 Development, covering Code quality. It works with Git and Rust. The repository describes itself as: Gem Wallet Core library in Rust. Migrated to https://github.com/gemwalletcom/wallet. The licence is MIT.

When your agent uses it

  • Tasks that involve Code quality

Example prompts

  • “/review-changes”

Requirements

  • Pre-approved tools (allowed-tools): Read, Edit, Write, Glob, Grep, Bash, Task

Workflow steps

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

  1. Import Patterns
  2. Naming Conventions
  3. Error Handling
  4. Code Style
  5. Code Organization
  6. Async Patterns
  7. Database Patterns
  8. Blockchain/RPC Patterns
  9. Testing
  10. Security

What it can do on your machine

Read from SKILL.md and the folder at commit 8a173f8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Edit
    • Write
    • Glob
    • Grep
    • Bash
    • Task

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, 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

Review Changes loads about 2.4k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 1,066 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~25
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Edit, Write, Glob, Grep, Bash, Task

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 gemwalletcom/core at commit 8a173f8, republished under its MIT licence (© gemwalletcom). 1,066 words, ~2,354 tokens.

Download SKILL.mdSave it as .claude/skills/review-changes/SKILL.md (or your agent's skills folder).
name
review-changes
description
Review and fix local git changes against Gem Wallet Core coding standards and patterns
allowed-tools
Read, Edit, Write, Glob, Grep, Bash, Task
argument-hint
[--subagent]
disable-model-invocation
true

Review and Fix Local Changes

Review uncommitted changes against the coding standards and patterns defined in this repository, then fix any issues found.

Arguments

  • --subagent: Run in a subagent (isolates context, runs in background)

Mode Selection

Check if --subagent is in the arguments:

  • If --subagent is present: Use the Task tool with subagent_type: "general-purpose" to run this review in a subagent, passing all other arguments
  • If --subagent is NOT present: Run directly in current context (default)

Context

Current git diff to review: !git diff --no-color

Changed files: !git diff --name-only

Review Checklist

Analyze the diff above and check for the following issues:

1. Import Patterns
  • No inline imports: All imports must be at the top of the file, never inside functions
  • No full paths inline: Never use storage::DatabaseClient::new() inline; import types first
  • Import order: Standard library first, then external crates, then local crates, then pub use re-exports
2. Naming Conventions
  • Files/modules: snake_case (e.g., asset_id.rs)
  • Functions/variables: snake_case
  • Structs/enums: PascalCase
  • Constants: SCREAMING_SNAKE_CASE
  • No generic names: Avoid util, utils, normalize, or similar vague names
  • Concise helper names: Within a module, use scope-reliant names (prefer is_spot_swap over is_hypercore_spot_swap)
  • No type suffixes: Avoid _str, _int, _vec suffixes; Rust's type system makes them redundant
3. Error Handling
  • Prefer plain Error: Use plain Error types, not thiserror macros
  • Implement From traits: For error conversion between types
  • Propagate with ?: Prefer ? operator over manual map_err where possible
  • Consistent Result<T, Error>: Use consistent return types
  • Constructor methods on errors: Use ErrorType::constructor(msg) instead of verbose ErrorType::Variant("redundant context".into())
3b. JSON Parameter Extraction
  • Use primitives::ValueAccess: For serde_json::Value access, use composable trait methods (get_value(key), at(index), string()) instead of manual .get().ok_or() chains. Chain for compound access: params.get_value("key")?.at(0)?.string()?
  • Accessor methods on parent types: Add accessor methods (e.g., TransactionLoadInput::get_data_extra()) to avoid pattern-matching boilerplate at call sites
4. Code Style
  • Line length: Maximum 180 characters
  • Avoid matches!: Don't use matches! for pattern matching; it's easy to miss cases later
  • No over-engineering: Only make changes directly requested or clearly necessary
  • No docstrings/comments/annotations: Don't add docstrings, comments, or /// docs unless explicitly asked; remove any that were added (including in mod.rs files)
  • No #[allow(dead_code)]: Remove dead code instead of suppressing warnings; if code is needed, use it
  • No unused fields: Remove unused fields from structs/models; don't keep fields "for future use"
  • Constants for magic numbers: Extract magic numbers into named constants with clear meaning
  • Minimum interface: Don't expose unnecessary functions; if client only needs one function, don't add multiple variants
  • Use uniffi::remote: For UniFFI wrapper types around external models, use #[uniffi::remote] instead of creating duplicate structs with From implementations:
    rust
    // Record example
    use primitives::AuthNonce;
    pub type GemAuthNonce = AuthNonce;
    #[uniffi::remote(Record)]
    pub struct GemAuthNonce { pub nonce: String, pub timestamp: u32 }
    
    // Enum example
    use primitives::SwapperMode;
    pub type GemSwapperMode = SwapperMode;
    #[uniffi::remote(Enum)]
    pub enum GemSwapperMode { ExactIn, ExactOut }
  • Simple solutions: Three similar lines is better than a premature abstraction
  • Avoid mut: Prefer immutable bindings; use mut only when truly necessary
  • Prefer one-liners: Inline single-use variables; avoid creating variables used only once
  • Avoid #[serde(default)]: Only use when the field is genuinely optional in the API response; if the field is always present, omit it
  • Use accessor methods for enum variants: Instead of destructuring enum variants with match, use typed accessor methods (e.g., metadata.get_sequence()? instead of match &metadata { Cosmos { sequence, .. } => ... })
5. Code Organization
  • Modular structure: Break down files into smaller, focused modules; separate models from clients/logic (e.g., models.rs + client.rs, not everything in one file)
  • Folder modules for complexity: When a module has multiple concerns (models, client, mappers), use a folder with mod.rs instead of a single file
  • Avoid duplication: Search for existing implementations before writing new code; reuse existing code or crates
  • Shared crates: Reusable logic belongs in shared crates (e.g., gem_solana, gem_evm), not in utility binaries; move shared code to appropriate crates
  • Bird's eye view: Step back and identify opportunities to simplify and consolidate
6. Async Patterns
  • Tokio runtime: Use tokio for async operations
  • Shared state: Use Arc<tokio::sync::Mutex<T>> for shared async state
  • Async client structs: Should return Result<T, Error>
Show full SKILL.md (448 more words)Show less
7. Database Patterns
  • Separate models: Database models should be separate from domain primitives
  • Use as_primitive(): For conversion from database models
  • Repository pattern: Access via DatabaseClient methods
8. Blockchain/RPC Patterns
  • Use gem_jsonrpc::JsonRpcClient: For blockchain RPC interactions
  • Use primitives::hex: For hex encoding/decoding (not alloy_primitives::hex)
  • U256 conversions: Use u256_to_biguint and biguint_to_u256 from gem_evm/src/u256.rs
  • Provider pattern: Fetch raw data via RPC, then use mapper functions for conversion
  • Mapper files: Place mapper functions in separate *_mapper.rs files
9. Testing
  • #[tokio::test]: Use for async tests
  • Test naming: Prefix with test_ descriptively
  • Error handling: Use Result<(), Box<dyn std::error::Error + Send + Sync>>
  • Test data: For long JSON (>20 lines), store in testdata/ and use include_str!()
  • .unwrap() not .expect(): Never use .expect() in tests; use .unwrap() for brevity
  • No assert! with contains: Use assert_eq! with concrete values; assert!(x.contains(...)) gives useless failure messages
  • No fallback, fail fast: Don't silently return defaults on errors (e.g., unwrap_or(0)). Propagate errors with ? or return Result. Fail rather than mask issues with fallbacks.
  • Methods over free functions: Helper functions should be methods on the relevant struct, not top-level free functions
  • Mock methods in testkit: Use Type::mock() constructors in testkit/ modules instead of inline struct construction in tests
  • PartialEq + assert_eq!: Derive PartialEq on test-relevant enums and use direct assert_eq! with constructed expected values instead of destructuring with let ... else { panic! } or match ... { _ => panic! }
  • Test helpers: Create concise constructor functions (e.g., fn object(json: &str) -> EnumType, fn sign_message(chain, sign_type, data) -> Action) for frequently constructed enum variants in test modules
10. Security
  • No hardcoded secrets: Check for API keys, passwords, credentials
  • Input validation: Validate at system boundaries (user input, external APIs)
  • OWASP top 10: Watch for command injection, XSS, SQL injection vulnerabilities

Workflow

Iterate at least 2-3 times to ensure all issues are caught and fixed:

Each Iteration:
  1. Analyze: Review the diff against the checklist
  2. Read: Read the full content of each changed file to understand context
  3. Fix: Apply fixes directly using the Edit tool for each issue found
  4. Format: Run rustfmt --edition 2024 <files> on modified files
  5. Verify: Run cargo clippy -p <crate> -- -D warnings on affected crates
  6. Check: Review the changes again - new issues may have been introduced or revealed
Stop when:
  • No more issues are found after a full review pass
  • Clippy passes with no warnings
  • Code is properly formatted

Output Format

After fixing issues, provide a summary:

  1. Issues Fixed: List each fix made with:
    • File and line reference
    • Category (from checklist above)
    • What was changed
  2. Manual Review Needed: Issues that require human decision (if any)
  3. Verification: Clippy/format results

Severity levels for reporting:

  • CRITICAL: Security issues or bugs - fix immediately
  • WARNING: Coding standard violations - fix automatically
  • SUGGESTION: Minor improvements - fix if straightforward, otherwise note for user

© gemwalletcom, 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/review-changes of gemwalletcom/core.

Open the folder on GitHubat commit 8a173f8

Compare with similar skills

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

Review Changes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review Changes this skillgemwalletcom/core149—~2.4kAutomated safety check: NotesMIT
Worktrunk CLI Output Rulesmax-sixty/worktrunk8.9k—~12kAutomated safety check: PassCustom licence
Refactortermide/termide171—~2.8kAutomated safety check: PassMIT
Worktrunk Tend CI Guidancemax-sixty/worktrunk8.9k—~6.4kAutomated safety check: PassCustom licence
Qt C++ Code Reviewx-tools-author/x-tools1.1k2 repos~4.3kAutomated safety check: PassBSD-3-Clause
Skill Doctorwarpdotdev/common-skills6062 repos~2.6kAutomated safety check: PassMIT

Similar skills

  • Worktrunk CLI Output Rules

    max-sixty/worktrunk

    CLI output standards for worktrunk: message functions, ANSI color nesting and the shell integration that changes directory after the wt command exits.

    8.9k GitHub stars~12k tokensUpdated today
    DevelopmentAuto-check passed
  • Refactor

    termide/termide

    Full-workspace code quality analysis and refactoring with validation

    171 GitHub stars~2.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Worktrunk Tend CI Guidance

    max-sixty/worktrunk

    Adds Worktrunk-specific rules to the tend CI workflows: Codecov polling, Rust test commands, labels and review criteria for pull requests handled in CI.

    8.9k GitHub stars~6.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Qt C++ Code Review

    x-tools-author/x-tools

    Read-only review of Qt6 C++ code that combines a deterministic lint script with six parallel analysis agents and reports only high-confidence issues.

    1.1k GitHub starsUsed in 2 repos~4.3k tokens
    DevelopmentAuto-check passed
  • Skill Doctor

    warpdotdev/common-skills

    Grades agent skills by scoring agent conversations for efficiency, code quality, procedure compliance, and verbosity, then drafts concrete skill edits and a shareable report.

    606 GitHub starsUsed in 2 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Worktrunk Release Workflow

    max-sixty/worktrunk

    Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.

    8.9k GitHub stars~6.9k tokensUpdated today
    DevelopmentAuto-check passed

Works with

Categories

Questions about Review Changes

What does Review Changes do?

Review and fix local git changes against Gem Wallet Core coding standards and patterns. Review Changes is an agent skill from gemwalletcom/core.

When should I use Review Changes?

Review Changes fits situations like: tasks that involve Code quality.

How do I install Review Changes in Claude Code?

Run `npx skills add gemwalletcom/core --skill review-changes -a claude-code`. Or copy the skill folder (.claude/skills/review-changes in gemwalletcom/core) into .claude/skills/review-changes in your project. Claude Code loads it when a task matches its description.

How do I install Review Changes in Codex?

Run `npx skills add gemwalletcom/core --skill review-changes -a codex`. Or copy the skill folder (.claude/skills/review-changes in gemwalletcom/core) into .agents/skills/review-changes in your project. Codex loads it when a task matches its description.

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

What does Review Changes need to run?

Going by SKILL.md and its folder, Review Changes needs the command-line tools its instructions call (git and cargo). Its frontmatter pre-approves these tools: Read, Edit, Write, Glob, Grep, Bash, Task.

Does Review Changes access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Review Changes safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Review Changes use?

Review Changes 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 Review Changes use?

About 2.4k tokens (SKILL.md is roughly 9.4k 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 Review Changes?

Skills that share tags, products or a category with Review Changes: Worktrunk CLI Output Rules (max-sixty/worktrunk, 8.9k stars), Refactor (termide/termide, 171 stars), Worktrunk Tend CI Guidance (max-sixty/worktrunk, 8.9k stars) and Qt C++ Code Review (x-tools-author/x-tools, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review Changes?

gemwalletcom (a GitHub organization) maintains it in gemwalletcom/core, which has 149 GitHub stars. The repository was last updated on May 29, 2026.

Source: gemwalletcom/core on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.