[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2023":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":27,"discoverSource":28},2023,"app-explorer","RevylAI\u002Fapp-explorer","RevylAI","Map every screen and user path in a mobile app — interactive navigation maps with screenshots",null,"TypeScript",201,11,136,0,2,4,31,6,3.24,false,"main",true,[],"2026-06-12 02:00:36","# App Explorer\n\nMap every screen and user path in a mobile app. Boots a cloud device, systematically explores the app, and generates an interactive navigation map with screenshots.\n\nBuilt for use with [Claude Code](https:\u002F\u002Fclaude.ai\u002Fcode) + [Revyl CLI](https:\u002F\u002Fgithub.com\u002FRevylAI\u002Frevyl-cli).\n\n## How It Works\n\n1. _(iOS only)_ Optionally extract a **static screen skeleton** from the binary first — gives the agent a target list of every screen the app contains, before BFS even starts\n2. Claude Code uploads your app build and starts a cloud device via Revyl CLI\n3. It systematically explores every screen using BFS — tapping buttons, following links, navigating tabs\n4. Each screen is captured with a screenshot and its interactive elements are cataloged\n5. An interactive report is generated with a navigation graph, screenshots, user paths, and a step-through journey navigator\n\nThe `app-explorer` CLI handles data tracking, report generation, and binary skeleton extraction. Claude Code (guided by `CLAUDE.md`) handles the exploration intelligence. The `frontend\u002F` template provides an interactive viewer for the results.\n\n## Setup\n\n### Prerequisites\n\n- [Revyl CLI](https:\u002F\u002Fgithub.com\u002FRevylAI\u002Frevyl-cli) installed and authenticated (`revyl auth login`)\n- Python 3.11+\n- Node.js 20+ (for the interactive viewer)\n- An APK (Android) or APP\u002FIPA bundle (iOS)\n- **macOS with Xcode command line tools** if you want to use `app-explorer skeleton ios` (relies on `nm`, `otool`, `xcrun swift-demangle`). The exploration flow itself runs anywhere.\n\n### Install\n\n```bash\ncd app-explorer\npip install -e .\n```\n\n### (Optional, iOS only) Extract a Static Screen Skeleton First\n\n> **Status:** iOS works today. Android (`.apk`\u002F`.aab`) is on the roadmap — `app-explorer skeleton android` currently prints a \"coming soon\" message.\n\nReal apps have hundreds of screens. The BFS agent can typically reach ~50 of them before its context fills up. The skeleton command reads the compiled iOS binary directly to enumerate every screen the app contains, giving the agent a target list before exploration even starts.\n\n```bash\napp-explorer skeleton ios path\u002Fto\u002FApp.ipa     # or path\u002Fto\u002FApp.app\n```\n\nOutputs:\n- `workspace\u002Fskeleton.json` — full machine-readable skeleton (consumed by the agent)\n- `reports\u002Fskeleton.md` — human\u002Fagent-readable summary, grouped by module\n\n**Supports:**\n- Native UIKit + Swift apps (parses Mach-O `__objc_classlist` + `__swift5_types` sections)\n- React Native apps (auto-detects and parses Hermes JS bundle string table)\n- Hybrid apps (extracts both)\n\n**Coverage in practice:**\n- ~70-90% of UIKit\u002FStoryboard screens\n- ~30-50% of pure SwiftUI screens (some `@ViewBuilder` children vanish at compile time)\n- ~50-70% of React Native screens (Hermes string-table artifacts produce noise that's filtered to \"low confidence\")\n\n**What it gives you:**\n- Node list — every candidate screen with confidence rating (`high`\u002F`medium`\u002F`low`)\n- Module grouping — features clustered by parent module (e.g. `DDChat`, `PaymentModule`)\n- Deep-link entry points — URL schemes that launch the app into specific flows\n\n**What it doesn't give you:**\n- **Edges** — the skeleton tells you what screens exist, not how they connect. The runtime BFS still has to discover the navigation graph.\n- Auth-gated, feature-flagged, or server-driven screens — those are invisible to static analysis.\n\nWhen `CLAUDE.md` Step 0 sees a skeleton in the workspace, the agent uses it as a checklist and to assign stable screen IDs at runtime.\n\n### Explore\n\nOpen Claude Code in the `app-explorer\u002F` directory and ask it to explore your app:\n\n```\nExplore the app at .\u002Fmy-app.apk and map all screens\n```\n\nClaude will read `CLAUDE.md`, initialize the workspace, start a device, and begin the exploration. If you provided an iOS app and ran `skeleton ios` first, the agent will reference the skeleton throughout.\n\n### View the Report\n\nAfter exploration, view the interactive report:\n\n```bash\n# Copy results into the viewer\ncp workspace\u002Fscreen-map.json frontend\u002Fpublic\u002Fdata\u002F\ncp reports\u002Fscreenshots\u002F*.png frontend\u002Fpublic\u002Fdata\u002F\n\n# Start the viewer\ncd frontend\nnpm install\nnpm run dev\n```\n\nOpen `http:\u002F\u002Flocalhost:4321` to see the interactive map with:\n- **Map tab** — interactive graph with screen nodes, transitions, and start\u002Fend markers\n- **Screens tab** — screenshot gallery of all discovered screens\n- **Report tab** — summary stats, screen inventory, user paths, and edge cases\n\nFeatures:\n- Journey navigator — step through each user path with prev\u002Fnext\n- Path highlighting — select a journey to dim unrelated screens on the map\n- Screen details panel — click any screen to see its elements and connections\n- Dark\u002Flight mode toggle\n\n## CLI Reference\n\n```bash\n# Extract a static screen skeleton from an iOS binary (recommended first step)\napp-explorer skeleton ios path\u002Fto\u002FApp.ipa\napp-explorer skeleton ios path\u002Fto\u002FApp.app\napp-explorer skeleton android   # not yet supported — prints coming-soon notice\n\n# Initialize workspace\napp-explorer init --app-name \"MyApp\" --platform android\n\n# Track a discovered screen\napp-explorer screen add --id \"home\" --title \"Home Screen\" --screenshot screenshots\u002Fhome.png\n\n# List all screens\napp-explorer screen list\napp-explorer screen list --unexplored\n\n# Record a navigation transition\napp-explorer transition --from \"home\" --to \"shop\" --action \"tap 'Shop tab'\"\n\n# Generate markdown report\napp-explorer report\n\n# Start over\napp-explorer reset --yes\n```\n\nAll commands support `--json` for machine-readable output.\n\n## Project Structure\n\n```\napp-explorer\u002F\n├── CLAUDE.md                  # AI exploration instructions\n├── app_explorer\u002F              # Python CLI\n│   ├── cli.py                 # Typer commands\n│   ├── models.py              # Pydantic data models\n│   ├── store.py               # JSON persistence\n│   ├── report.py              # Markdown report generator\n│   └── skeleton\u002F              # Static screen-skeleton extraction\n│       ├── ios.py             # iOS .ipa\u002F.app extractor (Mach-O sections)\n│       └── react_native.py    # Hermes JS bundle extractor\n├── frontend\u002F                  # Interactive viewer (Astro + React)\n│   ├── src\u002F\n│   │   ├── report.astro       # Main page template\n│   │   └── components\u002F        # React components (graph, panels, nodes)\n│   └── public\u002Fdata\u002F           # Place screen-map.json + screenshots here\n├── workspace\u002F                 # CLI working directory (skeleton.json, screen-map.json)\n└── reports\u002F                   # CLI output (skeleton.md, exploration-report.md)\n```\n\n## Built With\n\n- [Revyl CLI](https:\u002F\u002Fgithub.com\u002FRevylAI\u002Frevyl-cli) — Cloud device provisioning and AI-grounded app interaction\n- [Claude Code](https:\u002F\u002Fclaude.ai\u002Fcode) — AI agent for exploration orchestration\n- [React Flow](https:\u002F\u002Freactflow.dev) — Interactive graph visualization\n","App Explorer 是一个用于绘制移动应用内所有屏幕和用户路径的工具，生成包含截图的交互式导航地图。它通过在云端启动设备并系统地探索应用程序来工作，使用广度优先搜索算法遍历每个屏幕，并记录下屏幕截图及可交互元素。该工具基于 TypeScript 开发，依赖于 Claude Code 和 Revyl CLI 来实现智能探索与控制。特别适合需要深入了解复杂移动应用结构、优化用户体验或进行竞品分析的场景。对于 iOS 应用，还支持预先提取静态屏幕骨架以提高探索效率。","2026-06-11 02:47:39","CREATED_QUERY"]