Skip to content
Back to skills

Gj Tool

ASecurity

Build, run, test, and debug GrooveTech apps (Orchestrator, Pfizer, GMP, Media Server). Use gj commands - never construct xcodebuild commands manually.

  • 666 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 8, 2026
toolsgoswiftbashtestingdebugginggitdocumentation

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill gj-tool --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gj Tool?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gj Tool
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-gj-tool/badge)](https://www.skillsdirectory.com/skills/majiayu000-gj-tool)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gj-tool
description: Build, run, test, and debug GrooveTech apps (Orchestrator, Pfizer, GMP, Media Server). Use gj commands - never construct xcodebuild commands manually.
allowed-tools: Bash, Read, Grep, Glob
---

# gj Tool Skill

**This skill is for GrooveTech Xcode projects. Use `gj` for all build/run/test operations.**

## Quick Reference

```bash
# Build & Run
gj run <app>              # Build + run + stream logs
gj run --device <app>     # Build + run on physical AVP device
gj run --ext <app>        # Run with extension/AVPStreamKit logs
gj run --clean <app>      # Clean build then run
gj build <app>            # Build only (no launch)
gj launch <app>           # Launch only (skip build)

# Logs & Debugging
gj logs <app> "pattern"   # Search logs (use as assertions)
gj crash <app>            # View latest crash log (.ips) - first 80 lines
gj crash <app> --full     # Show complete crash log with full backtrace
gj crash <app> --list     # List all crash logs
gj crash <app> --open     # Open crash in Console.app
gj diagnose <app>         # **USE THIS FIRST** - diagnose ANY crash/termination
gj diagnose <app> <log>   # Diagnose specific log file

# UI Automation (Simulator only; NOT ms. Tap automation reliable on iOS simulator only.)
gj ui screenshot <app>    # Capture screenshot
gj ui describe <app>      # Dump accessibility tree
gj ui tap-button <app> "label"  # Tap by accessibility label (iOS simulator only)
gj ui tap <app> x y       # Tap at coordinates (iOS simulator only)
gj ui home <app>          # Press Digital Crown (visionOS)

# Testing
gj test P0                # E2E connection tests
gj test --list            # List available tests

# Management
gj stop <app>             # Stop log streaming
gj clear <app>            # Clear logs and screenshots
gj status                 # Show simulators, devices, streams
gj devices                # List connected AVP devices

# Utilities
gj tui [app]              # Interactive log viewer (TUI)
gj sessions [path]        # CASS TUI for agent history
```

**Apps:** `orchestrator` (o), `pfizer` (p), `gmp` (g), `ms` (s), `all` (a)

---

## ⚠️ Known Limitations

### visionOS Tap Automation is Broken

`gj ui tap` and `gj ui tap-button` **do not work** on visionOS apps (Pfizer, GMP). The visionOS simulator reports incorrect accessibility frames (all elements at position 0,0).

**Working on visionOS:**
- `gj ui screenshot <app>` ✓
- `gj ui home <app>` ✓
- `gj run <app>` ✓
- `gj logs <app>` ✓

**Not working on visionOS:**
- `gj ui tap <app> x y` ✗
- `gj ui tap-button <app> "label"` ✗

**Workaround:** Manual testing in Simulator.app, or rely on log assertions.

See: `gj-tool/KNOWN_ISSUES.md` for full details.

### macOS Media Server UI Automation (Not Supported)

`gj ui ... ms` is **not supported** (UI commands are simulator-only). To trigger CloudSync, use the Media Server UI manually, then verify with `gj logs ms "CloudSync"`.

### Device Logging: OSLog Not Captured

When running on **physical devices** via `gj run --device <app>`, only `print()` statements appear in device logs. **OSLog entries are NOT captured** (they go to the unified logging system, not stdout).

**Workaround:** Add `print()` alongside OSLog for device-visible diagnostics:
```swift
log.info("Download speed: \(speed)MB/s")
print("📊 Download speed: \(speed)MB/s")  // Visible via gj logs
```

**Simulator runs** capture both OSLog and print() normally.

---

## Testing Philosophy

**Prefer quick validation over full E2E tests during iteration.**

```
Need to verify something?
├── Quick check?      → gj logs <app> "pattern"
├── Visual check?     → gj ui screenshot <app>
├── Test interaction? → gj ui tap-button + gj logs (Orchestrator only)
├── Full validation?  → gj test P0
└── Pre-commit?       → gj test all
```

### Using Logs as Assertions

```bash
# ASSERT: Connection established (output should exist)
gj logs orchestrator "tcp_connection_established"

# ASSERT: No errors (output should be empty)
gj logs orchestrator "error"
```

### Debugging Crashes & Unexpected Terminations

**ALWAYS start with `gj diagnose`** - it queries system logs and identifies the crash type even when the app log ends abruptly.

```bash
# FIRST: Run diagnose to get crash evidence from system logs
gj diagnose <app>         # Diagnoses most recent log
gj diagnose <app> <log>   # Diagnose specific log file

# What diagnose shows:
# - CRASH CONFIRMED (AMFI/corpse evidence from system logs)
# - Crash type: fatal 309 = EXC_RESOURCE, EXC_BREAKPOINT, etc.
# - Rate-limit warnings (no .ips when too many crashes)
# - Errors before crash from app log
# - Related .ips crash reports

# If diagnose shows EXC_BREAKPOINT and there's an .ips file:
gj crash <app> --full     # Full backtrace from .ips

# Search runtime logs for errors
gj logs <app> "error"
gj logs <app> "fatal"
```

**Common crash types:**
- `EXC_BREAKPOINT` → Code assertion/trap, .ips file has backtrace
- `EXC_RESOURCE (fatal 309)` → System killed for resource limits, often rate-limited (no .ips)

---

## Full Documentation

| Doc | Location | Contents |
|-----|----------|----------|
| **Comprehensive agent guide** | `gj-tool/docs/AGENT-INSTRUCTIONS.md` | Testing philosophy, accessibility labels, workflows |
| **Quick reference** | `~/.agent-config/docs/gj-tool.md` | Command reference |
| **UI automation** | `~/.agent-config/docs/ui-automation.md` | AXe integration, finding labels |
| **Known issues** | `gj-tool/KNOWN_ISSUES.md` | visionOS limitations |

**For detailed accessibility labels and testing workflows, read `docs/AGENT-INSTRUCTIONS.md` in the gj-tool repo.**

---

## If gj Not Found

```bash
cd "/Users/dalecarman/Groove Jones Dropbox/Dale Carman/Projects/dev/gj-tool"
./install.sh
gj version  # Expected: 1.5.0
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.