Back to skills
SkillHub ClubBuild MobileFull StackMobile

ios-stop-app

Imported from https://github.com/asnar00/miso.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
1
Hot score
77
Updated
March 19, 2026
Overall rating
C2.4
Composite score
2.4
Best-practice grade
A92.4

Install command

npx @skill-hub/cli install asnar00-miso-ios-stop-app

Repository

asnar00/miso

Skill path: .claude/skills/ios-stop-app

Imported from https://github.com/asnar00/miso.

Open repository

Best for

Primary workflow: Build Mobile.

Technical facets: Full Stack, Mobile.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: asnar00.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install ios-stop-app into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/asnar00/miso before adding ios-stop-app to shared team environments
  • Use ios-stop-app for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: ios-stop-app
description: Stop the iOS app running on connected iPhone. Cleanly terminates the app using SIGTERM. Use when stopping the app for debugging, testing, or cleanup.
---

# iOS Stop App

## Overview

Stops the iOS app running on a connected iPhone by sending SIGTERM signal to the app process. This cleanly terminates the app, allowing it to perform cleanup operations before exiting.

## When to Use

Invoke this skill when the user:
- Asks to "stop the app"
- Wants to "kill the app"
- Says "terminate the app on device"
- Mentions shutting down or closing the app
- Needs to stop before deploying new version

## Prerequisites

- iPhone connected via USB
- `pymobiledevice3` installed (`pip3 install pymobiledevice3`)
- Device trusted
- App must be running on the device

## Instructions

1. Navigate to the iOS app directory:
   ```bash
   cd path/to/ios/app
   ```

2. Run the stop script:
   ```bash
   ./stop-app.sh
   ```

3. The script will:
   - Auto-detect the connected iPhone
   - Find the app's process ID using `pymobiledevice3`
   - Send SIGTERM signal to terminate cleanly
   - Report success or if app wasn't running

4. Inform the user:
   - The app has been stopped
   - Safe to call even if app isn't running
   - Use SIGTERM (not SIGKILL) for clean shutdown

## Expected Output

When app is running:
```
🛑 Stopping NoobTest on device...
✅ App stopped
```

When app is not running:
```
🛑 Stopping NoobTest on device...
⚠️  NoobTest is not running
```

## How It Works

The script:
1. Uses `xcodebuild -showdestinations` to get device ID
2. Runs `pymobiledevice3 processes pgrep NoobTest` to find process ID
3. Extracts PID from output
4. Uses `xcrun devicectl device process signal` to send SIGTERM

## SIGTERM vs SIGKILL

The script uses **SIGTERM** (signal 15), not SIGKILL:
- SIGTERM allows the app to clean up (save state, close connections)
- SIGKILL would force immediate termination without cleanup
- SIGTERM is the proper way to stop an app during development

## Common Use Cases

**Before deploying new version**:
```bash
./stop-app.sh
./install-device.sh
```

**Pairing with restart**:
```bash
./stop-app.sh
# Make changes
./restart-app.sh
```

**Clean state testing**:
Stop the app, clear data/caches manually, then restart fresh.

## Common Issues

**pymobiledevice3 not found**:
- Install it: `pip3 install pymobiledevice3`
- Ensure Python bin directory is in PATH

**No device detected**:
- Check USB connection
- Ensure device is trusted
- Try disconnecting and reconnecting

**App not stopping**:
- Check app is actually running on device
- Try restarting the device if process is stuck

## Safety

This script is safe to call repeatedly:
- Won't error if app isn't running
- Uses clean shutdown signal
- Reports status clearly

## Bundle ID

The script is configured for the specific app's bundle ID (e.g., `com.miso.noobtest` for Firefly/NoobTest). Different apps have different bundle IDs.