Android API Diff
gkd-kit/gkd
Looks up Android framework Java and AIDL APIs across versions with the android-api-diff CLI: signatures, availability, source files and hidden-API access code.
Complete reference for all Morphe utility libraries — BytecodeUtils, ResourceUtils, FreeRegisterProvider, Settings, UI, Extensions.
$ npx skills add Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Paresh-Maheshwari/morphe-ai morphe-library-reference --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/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.kiro/skills/morphe-library .claude/skills/morphe-library-reference && 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 "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .claude/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-libraryType 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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Paresh-Maheshwari/morphe-ai morphe-library-reference --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.kiro/skills/morphe-library .agents/skills/morphe-library-reference && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .agents/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Paresh-Maheshwari/morphe-ai morphe-library-reference --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.kiro/skills/morphe-library .cursor/skills/morphe-library-reference && 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 "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .cursor/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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/Paresh-Maheshwari/morphe-ai.git --path .kiro/skills/morphe-library--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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Paresh-Maheshwari/morphe-ai morphe-library-reference --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.kiro/skills/morphe-library .gemini/skills/morphe-library-reference && 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 "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .gemini/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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 Paresh-Maheshwari/morphe-ai morphe-library-referenceInstalls 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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/.kiro/skills/morphe-library .github/skills/morphe-library-reference && 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 "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .github/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Paresh-Maheshwari/morphe-ai morphe-library-reference --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Paresh-Maheshwari/morphe-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.kiro/skills/morphe-library .opencode/skills/morphe-library-reference && 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 "morphe-library-reference" agent skill from https://github.com/Paresh-Maheshwari/morphe-ai/tree/main/.kiro/skills/morphe-library into .opencode/skills/morphe-library-reference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morphe-library-reference", 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.
morphe-library-referenceComplete reference for all Morphe utility libraries — BytecodeUtils, ResourceUtils, FreeRegisterProvider, Settings, UI, Extensions.
Morphe Library Reference is an agent skill from Paresh-Maheshwari/morphe-ai. Complete reference for all Morphe utility libraries — BytecodeUtils, ResourceUtils, FreeRegisterProvider, Settings, UI, Extensions. Use when writing patches that need utility functions, settings, extensions, or advanced bytecode operations.
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. It works with Java. The repository describes itself as: Morphe's AI-powered Android APK patching workspace — multi-agent pipeline for APK analysis, target hunting, patch writing & deployment. The licence is GPL-3.0.
Read from SKILL.md and the folder at commit 2d7fde2. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are kotlin).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Morphe Library Reference loads about 1.9k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 272 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 Paresh-Maheshwari/morphe-ai at commit 2d7fde2, republished under its GPL-3.0 licence (© Paresh-Maheshwari). 272 words, ~1,929 tokens.
.claude/skills/morphe-library-reference/SKILL.md (or your agent's skills folder).When to use: Writing patches that need more than basic addInstructions. This covers all utility code copied from morphe-patches-library into our repo.
⚠️ Pinned source: morphe-patcher
6f189f9, patches-library6501aee. Official docs may lag the source — the pinned source wins if anything contradicts this file.
app.morphe.util.*)Return overrides (simplest patching):
import app.morphe.util.returnEarly
import app.morphe.util.returnLate
method.returnEarly() // return-void
method.returnEarly(true) // return true at start, skip all code
method.returnEarly(false) // return false
method.returnEarly(0) // return int 0
method.returnEarly("text") // return string
method.returnEarly(null) // return null object
method.returnLate(true) // override ALL return statements to true
method.returnLate(false) // override ALL return statements to falseaddInstructions deprecation note: Always supply the index argument:
method.addInstructions(0, "...") // ✅ correct
method.addInstructions("...") // ❌ deprecated — will be deletedInstruction search:
import app.morphe.util.indexOfFirstInstruction
import app.morphe.util.indexOfFirstInstructionOrThrow
import app.morphe.util.indexOfFirstStringInstruction
import app.morphe.util.findInstructionIndicesReversedOrThrow
// By opcode
method.indexOfFirstInstruction(Opcode.INVOKE_VIRTUAL)
method.indexOfFirstInstructionOrThrow(Opcode.RETURN)
method.indexOfFirstInstructionOrThrow(startIndex, Opcode.IF_EQZ)
// By predicate
method.indexOfFirstInstruction { getReference<MethodReference>()?.name == "isPremium" }
// By string
method.indexOfFirstStringInstructionOrThrow("premium")
// Reversed (from end — safe for modification)
method.indexOfFirstInstructionReversedOrThrow(Opcode.RETURN)
method.findInstructionIndicesReversedOrThrow(Opcode.RETURN) // all indices
method.findInstructionIndicesReversedOrThrow(stringFilter) // all filter matches
// By literal value
method.indexOfFirstLiteralInstructionOrThrow(1337L)
method.containsLiteralInstruction(1337L)Literal overrides:
import app.morphe.util.insertLiteralOverride
method.insertLiteralOverride(1337L, "Lext;->check(I)I") // call extension
method.insertLiteralOverride(1337L, false) // constant overrideControl flow:
import app.morphe.util.addInstructionsAtControlFlowLabel
method.addInstructionsAtControlFlowLabel(index, "const/4 v0, 0x1")View hiding:
import app.morphe.util.injectHideViewCall
method.injectHideViewCall(insertIndex, viewRegister, "Lext;", "hideView")toString() discovery:
import app.morphe.util.findFieldFromToString
import app.morphe.util.findMethodFromToString
val field = method.findFieldFromToString("fieldName=")
val targetMethod = method.findMethodFromToString("fieldName=")Class utilities:
import app.morphe.util.traverseClassHierarchy
import app.morphe.util.toPublicAccessFlags
traverseClassHierarchy(mutableClass) { /* each class in hierarchy */ }
val flags = accessFlags.toPublicAccessFlags()
field.removeFlags(AccessFlags.FINAL)
mutableClass.constructor()
mutableClass.fieldByName("name")
classDef.toStringMethod()Method cloning:
import app.morphe.util.cloneParameters
val cloned = method.cloneParameters()Helpers:
method.addInstructionsToEnd("invoke-static {}, Lext;->hook()V")
method.p0Register // actual register number of p0
method.numberOfParameterRegisters
// Read all registers used by an instruction
val usedRegs: List<Int> = instruction.registersUsed
true.toHexString() // "0x1"Find unused registers in a method for temporary use without increasing register count.
Memory-efficient DEX operations.
XML/resource manipulation for ResourcePatch contexts.
Generates patches-list.json during build.
app.morphe.patches.all.misc.*)import app.morphe.patches.all.misc.string.replaceStringPatch
// Replace string globally across all classes
val myPatch = replaceStringPatch(from = "old text", to = "new text")Maps resource IDs for use in bytecode patches.
import app.morphe.patches.all.misc.resources.getResourceId
import app.morphe.patches.all.misc.resources.ResourceType
val id = getResourceId(ResourceType.ID, "resource_name")
val index = method.indexOfFirstResourceIdOrThrow("resource_name")Hex-level binary patching for native libraries.
Transform method calls across entire classes.
app.morphe.extension.shared.*)Runtime code that runs inside the patched app. Use with extendWith("name.mpe") in patches.
| Class | Purpose |
|---|---|
Utils.java | Context access, toast, reboot, network checks |
Logger.java | Logging with tag support |
ResourceType.java | Android resource type enum |
ResourceUtils.java | Runtime resource access |
StringRef.java | Lazy string reference |
| Class | Purpose |
|---|---|
TrieSearch.java | Base trie search |
StringTrieSearch.java | String pattern matching |
ByteTrieSearch.java | Byte pattern matching |
| Class | Purpose |
|---|---|
Setting.java | Base setting class |
BooleanSetting.java | Boolean toggle |
IntegerSetting.java | Integer value |
LongSetting.java | Long value |
FloatSetting.java | Float value |
StringSetting.java | String value |
EnumSetting.java | Enum selection |
BaseSettings.java | Common settings |
AppLanguage.java | Language setting |
SharedPrefCategory.java | SharedPreferences wrapper |
| Class | Purpose |
|---|---|
CustomDialog.java | Custom dialog builder |
SheetBottomDialog.java | Bottom sheet dialog |
ColorDot.java | Color indicator view |
ColorPickerPreference.java | Color picker setting |
ColorPickerView.java | Color picker widget |
Dim.java | Dimension utilities |
${PATCHES_DIR}/patches/src/main/kotlin/
├── app/morphe/util/ # Kotlin utilities
│ ├── BytecodeUtils.kt # ★ Most used
│ ├── FreeRegisterProvider.kt
│ ├── MemoryUtils.kt
│ ├── ResourceUtils.kt
│ └── PatchListGenerator.kt
├── app/morphe/patches/all/misc/ # Reusable patch templates
│ ├── string/ReplaceStringPatch.kt
│ ├── resources/ResourceMappingPatch.kt
│ ├── hex/HexPatchBuilder.kt
│ └── transformation/
│ ├── MethodCall.kt
│ └── TransformInstructionsPatch.kt
└── <group>/patches/<app>/ # Your patches (discover group from build.gradle.kts)
${PATCHES_DIR}/extensions/extension/src/main/java/
└── app/morphe/extension/shared/ # Java runtime code
├── Utils.java, Logger.java, etc.
├── settings/ # Settings framework
└── ui/ # UI components${PATCHES_DIR} = ${MORPHE_PATCHES_DIR:-morphe-patches}
© Paresh-Maheshwari, GPL-3.0. 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 .kiro/skills/morphe-library of Paresh-Maheshwari/morphe-ai.
Open the folder on GitHubat commit 2d7fde2
Morphe Library Reference 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 |
|---|---|---|---|---|---|---|
| Morphe Library Reference this skillParesh-Maheshwari/morphe-ai | 178 | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Android API Diffgkd-kit/gkd | 43k | — | ~796 | Automated safety check: Pass | GPL-3.0 | |
| Build Teaql Appteaql/teaql-agent-kit | 2.8k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Find Untested Sourcesmicrosoft/testfx | 1k | 2 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Fory Version Bumpapache/fory | 4.6k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Fory Performance Optimizationapache/fory | 4.6k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 |
gkd-kit/gkd
Looks up Android framework Java and AIDL APIs across versions with the android-api-diff CLI: signatures, availability, source files and hidden-API access code.
teaql/teaql-agent-kit
Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.
microsoft/testfx
MANDATORY for static source-to-test pairing: find or list source files/modules without corresponding tests, or suggest test locations from repository structure.
apache/fory
Bump Apache Fory release or post-release development versions across Java, Kotlin, Scala, Python, Rust, Go, C++, C, Dart, JavaScript, Swift, integration tests, examples, and source docs.
apache/fory
Run profile-driven bottleneck optimization across Apache Fory implementations (Java, C++, Python/Cython, Go, Rust, Swift, C, JavaScript/TypeScript, Dart, Kotlin, Scala).
fzyzcjy/flutter_rust_bridge
A skill your agent uses when preparing, installing, diagnosing, or explaining the host Android Emulator environment for flutterrustbridge local runtime validation, including Android SDK command-line…
Paresh-Maheshwari/morphe-ai
Build, test, deploy, and troubleshoot Morphe patches — gradle commands, CLI usage, git workflow, common errors and fixes.
Paresh-Maheshwari/morphe-ai
Complete Morphe development environment setup — prerequisites, cloning repos, gradle auth, IDE config, build commands.
Paresh-Maheshwari/morphe-ai
Complete guide to Morphe fingerprinting — how to identify obfuscated methods using stable characteristics.
Paresh-Maheshwari/morphe-ai
Morphe CLI v1.17.0 (morphe-desktop) complete command reference — patch, list-patches, list-versions, options-create, utility install/uninstall.
Paresh-Maheshwari/morphe-ai
Morphe FAQ, current pinned official app targets, and app-specific notes.
Paresh-Maheshwari/morphe-ai
How to write Morphe patches — bytecodePatch DSL, compatibility, extensions, options, finalization.
Works with
Categories
Complete reference for all Morphe utility libraries — BytecodeUtils, ResourceUtils, FreeRegisterProvider, Settings, UI, Extensions. Morphe Library Reference is an agent skill from Paresh-Maheshwari/morphe-ai. Complete reference for all Morphe utility libraries — BytecodeUtils, ResourceUtils, FreeRegisterProvider, Settings, UI, Extensions.
Morphe Library Reference fits situations like: writing patches that need utility functions; advanced bytecode operations.
Run `npx skills add Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a claude-code`. Or copy the skill folder (.kiro/skills/morphe-library in Paresh-Maheshwari/morphe-ai) into .claude/skills/morphe-library-reference in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a codex`. Or copy the skill folder (.kiro/skills/morphe-library in Paresh-Maheshwari/morphe-ai) into .agents/skills/morphe-library-reference 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 Paresh-Maheshwari/morphe-ai --skill morphe-library-reference -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/morphe-library-reference, .gemini/skills/morphe-library-reference, .github/skills/morphe-library-reference and .opencode/skills/morphe-library-reference in your project.
SKILL.md names no scripts, command-line tools or credentials: Morphe Library Reference is instructions for the agent only.
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.
Morphe Library Reference is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k 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 Morphe Library Reference: Android API Diff (gkd-kit/gkd, 43k stars), Build Teaql App (teaql/teaql-agent-kit, 2.8k stars), Find Untested Sources (microsoft/testfx, 1k stars) and Fory Version Bump (apache/fory, 4.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Paresh-Maheshwari (a GitHub user) maintains it in Paresh-Maheshwari/morphe-ai, which has 178 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 29, 2026.
Source: Paresh-Maheshwari/morphe-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.