# anubis-android-app-manager

A skill for building and configuring Anubis, an Android app manager that freezes app groups through Shizuku depending on VPN state.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 427 installs · ★ 88
- Author: reason-machines
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/anubis-android-app-manager/SKILL.md
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/skills/anubis-android-app-manager

## What it does

Anubis disables whole app groups with `pm disable-user` through Shizuku. A disabled app cannot run code, reach the network, or notice that a VPN is up. Sandboxing tools like Island and Shelter leave the app running, so this is a different approach.

Groups come in three policies. Local freezes while the VPN is active. VPN Only freezes when the VPN is down. Launch with VPN never freezes, but starting the app brings the VPN up. VPN state is tracked with a `ConnectivityManager` NetworkCallback, and groups live in a Room database.

You need Android 10+ (API 29), a running Shizuku instance, and at least one VPN client. Shizuku starts over ADB or wireless debugging; without it the shell commands never reach the system. Builds run through `./gradlew assembleDebug`, and a release build needs a `signing.properties` file with your keystore values. The skill walks through the Kotlin and Jetpack Compose layout and shows how `FreezeManager` binds to the Shizuku AIDL service.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill anubis-android-app-manager -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/anubis-android-app-manager/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/anubis-android-app-manager/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill anubis-android-app-manager -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/anubis-android-app-manager/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill anubis-android-app-manager -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/anubis-android-app-manager/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/trending-skills anubis-android-app-manager
```

2. **Manually: put the files in place**
- File: `.github/skills/anubis-android-app-manager/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill anubis-android-app-manager -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/reason-machines/trending-skills --path skills/anubis-android-app-manager
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/anubis-android-app-manager/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill anubis-android-app-manager -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/anubis-android-app-manager/SKILL.md

## When to use it
- freeze banking apps while the VPN is on
- keep work apps running only behind a VPN
- trigger the VPN when a chosen app launches
- build the Anubis APK from source
- debug an app group that will not unfreeze

## Example prompts
- set up Anubis so the Local group freezes whenever the VPN is active
- add my VPN client to Anubis and bind it to a VPN Only group
- show how FreezeManager calls pm disable-user through Shizuku

## Similar
- [clerk-android](https://affpapa.org/en/nevibecode/skills/clerk-android.md) — skill · 14400 installs
- [android-kotlin](https://affpapa.org/en/nevibecode/skills/android-kotlin.md) — skill · 3300 installs
- [android-native-dev](https://affpapa.org/en/nevibecode/skills/android-native-dev.md) — skill · 2700 installs
- [android-jetpack-compose](https://affpapa.org/en/nevibecode/skills/android-jetpack-compose.md) — skill · 2200 installs
- [android-design-guidelines](https://affpapa.org/en/nevibecode/skills/android-design-guidelines.md) — skill · 1700 installs
- [android-kotlin-development](https://affpapa.org/en/nevibecode/skills/android-kotlin-development.md) — skill · 1500 installs

From the same set: [reason-machines/trending-skills](https://affpapa.org/en/nevibecode/by/reason-machines/trending-skills.md) — 42 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
