@leejungkiin/awkit 1.7.0 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/awk.js +576 -84
- package/core/CLAUDE.md +1 -1
- package/core/GEMINI.md +148 -167
- package/core/GEMINI.md.bak +149 -116
- package/core/skill-runtime-manifest.json +3 -0
- package/docs/Claude Fable 5.md +3826 -0
- package/docs/android_kotlin_system_instruction.md +210 -0
- package/docs/brainstorm_ponytail_integration.md +146 -0
- package/docs/brainstorm_smart_setup.md +113 -0
- package/docs/deep-research-report (1).md +293 -0
- package/docs/history/GEMINI.v1.md +135 -0
- package/docs/history/brainstorm_antigravity_unified_architecture.v1.md +105 -0
- package/docs/history/implementation_plan.v1.md +58 -0
- package/package.json +4 -1
- package/scripts/artifact-storage.js +130 -0
- package/scripts/automation-gate.js +40 -7
- package/scripts/claude-plan.js +76 -0
- package/scripts/dependency-manager.js +210 -0
- package/scripts/exec-rtk.js +11 -5
- package/scripts/i18n-helper.js +381 -0
- package/scripts/multi-model-pipeline.js +144 -0
- package/skill-packs/mobile-ios/pack.json +4 -2
- package/skill-packs/reverse-engineering/pack.json +1 -0
- package/skills/CATALOG.md +20 -0
- package/skills/GEMINI.md +9 -1
- package/skills/TRIGGER_INDEX.md +10 -0
- package/skills/ai-music/SKILL.md +275 -0
- package/skills/android-re-analyzer/SKILL.md +238 -0
- package/skills/android-re-analyzer/references/api-extraction-patterns.md +119 -0
- package/skills/android-re-analyzer/references/call-flow-analysis.md +176 -0
- package/skills/android-re-analyzer/references/fernflower-usage.md +115 -0
- package/skills/android-re-analyzer/references/jadx-usage.md +116 -0
- package/skills/android-re-analyzer/references/setup-guide.md +221 -0
- package/skills/android-re-analyzer/scripts/check-deps.sh +129 -0
- package/skills/android-re-analyzer/scripts/decompile.sh +375 -0
- package/skills/android-re-analyzer/scripts/find-api-calls.sh +118 -0
- package/skills/android-re-analyzer/scripts/install-dep.sh +448 -0
- package/skills/animal-island-ui-style/SKILL.md +1450 -0
- package/skills/app-store-review-agent/SKILL.md +164 -0
- package/skills/app-store-review-agent/references/guidelines/README.md +154 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/ai_apps.md +37 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/all_apps.md +50 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/crypto_finance.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/games.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/health_fitness.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/kids.md +27 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/macos.md +38 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/social_ugc.md +32 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/subscription_iap.md +34 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/vpn.md +18 -0
- package/skills/app-store-review-agent/references/rules/design/minimum_functionality.md +96 -0
- package/skills/app-store-review-agent/references/rules/design/sign_in_with_apple.md +54 -0
- package/skills/app-store-review-agent/references/rules/entitlements/unused_entitlements.md +83 -0
- package/skills/app-store-review-agent/references/rules/metadata/accurate_metadata.md +54 -0
- package/skills/app-store-review-agent/references/rules/metadata/apple_trademark.md +99 -0
- package/skills/app-store-review-agent/references/rules/metadata/china_storefront.md +72 -0
- package/skills/app-store-review-agent/references/rules/metadata/competitor_terms.md +56 -0
- package/skills/app-store-review-agent/references/rules/metadata/subscription_metadata.md +81 -0
- package/skills/app-store-review-agent/references/rules/privacy/privacy_manifest.md +84 -0
- package/skills/app-store-review-agent/references/rules/privacy/unnecessary_data.md +60 -0
- package/skills/app-store-review-agent/references/rules/subscription/misleading_pricing.md +63 -0
- package/skills/app-store-review-agent/references/rules/subscription/missing_tos_pp.md +54 -0
- package/skills/awf-ponytail/SKILL.md +91 -0
- package/skills/awf-ponytail-review/SKILL.md +67 -0
- package/skills/awf-session-restore/SKILL.md +3 -3
- package/skills/brainstorm-agent/SKILL.md +11 -2
- package/skills/brainstorm-agent/templates/brief-template.md +8 -0
- package/skills/claude-planner/SKILL.md +47 -0
- package/skills/code-review/SKILL.md +87 -0
- package/skills/expo-game-development/SKILL.md +163 -0
- package/skills/flutter/LICENSE.txt +202 -0
- package/skills/flutter/SKILL.md +127 -0
- package/skills/flutter-project-creater/LICENSE.txt +202 -0
- package/skills/flutter-project-creater/SKILL.md +106 -0
- package/skills/game-developer/SKILL.md +163 -0
- package/skills/game-developer/references/ecs-patterns.md +501 -0
- package/skills/game-developer/references/multiplayer-networking.md +475 -0
- package/skills/game-developer/references/performance-optimization.md +422 -0
- package/skills/game-developer/references/unity-patterns.md +271 -0
- package/skills/game-developer/references/unreal-cpp.md +352 -0
- package/skills/generate-gui-assets/SKILL.md +305 -0
- package/skills/generate-gui-assets/agents/openai.yaml +4 -0
- package/skills/generate-gui-assets/references/catalog-schema.md +58 -0
- package/skills/generate-gui-assets/references/extraction-techniques.md +21 -0
- package/skills/generate-gui-assets/references/prompt-patterns.md +58 -0
- package/skills/generate-gui-assets/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/generate-gui-assets/scripts/build_gui_contact_sheet.py +51 -0
- package/skills/generate-gui-assets/scripts/clean_chroma_edges.py +262 -0
- package/skills/generate-gui-assets/scripts/copy_approved_icons.py +64 -0
- package/skills/generate-gui-assets/scripts/prepare_gui_asset_run.py +91 -0
- package/skills/generate-gui-assets/scripts/suggest_grid_options.py +63 -0
- package/skills/generate-gui-assets/scripts/validate_gui_catalog.py +50 -0
- package/skills/godot-game-development/SKILL.md +142 -0
- package/skills/hatch-pet/LICENSE.txt +201 -0
- package/skills/hatch-pet/SKILL.md +420 -0
- package/skills/hatch-pet/agents/openai.yaml +4 -0
- package/skills/hatch-pet/references/animation-rows.md +29 -0
- package/skills/hatch-pet/references/codex-pet-contract.md +35 -0
- package/skills/hatch-pet/references/qa-rubric.md +60 -0
- package/skills/hatch-pet/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/hatch-pet/scripts/clean_chroma_edges.py +262 -0
- package/skills/hatch-pet/scripts/compose_atlas.py +150 -0
- package/skills/hatch-pet/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/hatch-pet/scripts/extract_strip_frames.py +323 -0
- package/skills/hatch-pet/scripts/finalize_pet_run.py +382 -0
- package/skills/hatch-pet/scripts/generate_pet_images.py +287 -0
- package/skills/hatch-pet/scripts/inspect_frames.py +246 -0
- package/skills/hatch-pet/scripts/make_contact_sheet.py +96 -0
- package/skills/hatch-pet/scripts/package_custom_pet.py +108 -0
- package/skills/hatch-pet/scripts/pet_job_status.py +117 -0
- package/skills/hatch-pet/scripts/prepare_pet_run.py +673 -0
- package/skills/hatch-pet/scripts/queue_pet_repairs.py +172 -0
- package/skills/hatch-pet/scripts/record_imagegen_result.py +250 -0
- package/skills/hatch-pet/scripts/render_animation_videos.py +134 -0
- package/skills/hatch-pet/scripts/render_animation_videos.sh +5 -0
- package/skills/hatch-pet/scripts/validate_atlas.py +139 -0
- package/skills/i18n-orchestrator/SKILL.md +37 -0
- package/skills/ios-simulator-skill/SKILL.md +390 -0
- package/skills/ios-simulator-skill/scripts/accessibility_audit.py +300 -0
- package/skills/ios-simulator-skill/scripts/app_launcher.py +326 -0
- package/skills/ios-simulator-skill/scripts/app_state_capture.py +400 -0
- package/skills/ios-simulator-skill/scripts/appearance.py +385 -0
- package/skills/ios-simulator-skill/scripts/build_and_test.py +348 -0
- package/skills/ios-simulator-skill/scripts/clipboard.py +103 -0
- package/skills/ios-simulator-skill/scripts/common/__init__.py +61 -0
- package/skills/ios-simulator-skill/scripts/common/cache_utils.py +289 -0
- package/skills/ios-simulator-skill/scripts/common/device_utils.py +462 -0
- package/skills/ios-simulator-skill/scripts/common/env_config.py +35 -0
- package/skills/ios-simulator-skill/scripts/common/hang_pipeline.py +862 -0
- package/skills/ios-simulator-skill/scripts/common/hang_sessions.py +490 -0
- package/skills/ios-simulator-skill/scripts/common/idb_utils.py +180 -0
- package/skills/ios-simulator-skill/scripts/common/screenshot_utils.py +338 -0
- package/skills/ios-simulator-skill/scripts/container.py +668 -0
- package/skills/ios-simulator-skill/scripts/gesture.py +394 -0
- package/skills/ios-simulator-skill/scripts/hang_watcher.py +1533 -0
- package/skills/ios-simulator-skill/scripts/keyboard.py +391 -0
- package/skills/ios-simulator-skill/scripts/localization_audit.py +483 -0
- package/skills/ios-simulator-skill/scripts/location.py +467 -0
- package/skills/ios-simulator-skill/scripts/log_monitor.py +493 -0
- package/skills/ios-simulator-skill/scripts/model_inspector.py +645 -0
- package/skills/ios-simulator-skill/scripts/navigator.py +461 -0
- package/skills/ios-simulator-skill/scripts/privacy_manager.py +310 -0
- package/skills/ios-simulator-skill/scripts/push_notification.py +240 -0
- package/skills/ios-simulator-skill/scripts/screen_mapper.py +296 -0
- package/skills/ios-simulator-skill/scripts/sim_health_check.sh +245 -0
- package/skills/ios-simulator-skill/scripts/sim_list.py +299 -0
- package/skills/ios-simulator-skill/scripts/simctl_boot.py +312 -0
- package/skills/ios-simulator-skill/scripts/simctl_create.py +316 -0
- package/skills/ios-simulator-skill/scripts/simctl_delete.py +357 -0
- package/skills/ios-simulator-skill/scripts/simctl_erase.py +351 -0
- package/skills/ios-simulator-skill/scripts/simctl_shutdown.py +290 -0
- package/skills/ios-simulator-skill/scripts/simulator_selector.py +375 -0
- package/skills/ios-simulator-skill/scripts/status_bar.py +250 -0
- package/skills/ios-simulator-skill/scripts/test_recorder.py +323 -0
- package/skills/ios-simulator-skill/scripts/visual_diff.py +235 -0
- package/skills/ios-simulator-skill/scripts/xcode/__init__.py +13 -0
- package/skills/ios-simulator-skill/scripts/xcode/builder.py +397 -0
- package/skills/ios-simulator-skill/scripts/xcode/cache.py +204 -0
- package/skills/ios-simulator-skill/scripts/xcode/config.py +178 -0
- package/skills/ios-simulator-skill/scripts/xcode/reporter.py +343 -0
- package/skills/ios-simulator-skill/scripts/xcode/xcresult.py +451 -0
- package/skills/ios-visual-qa-strategist/SKILL.md +111 -0
- package/skills/ios-visual-qa-strategist/agents/openai.yaml +4 -0
- package/skills/ios-visual-qa-strategist/references/ios-tool-selection.md +61 -0
- package/skills/ios-visual-qa-strategist/references/minimal-capture-policy.md +56 -0
- package/skills/ios-visual-qa-strategist/references/visual-reasoning-heuristics.md +53 -0
- package/skills/orchestrator/SKILL.md +0 -20
- package/skills/persistent-storage/SKILL.md +55 -0
- package/skills/short-maker/SKILL.md +23 -0
- package/skills/short-maker/scripts/effects.js +56 -0
- package/skills/short-maker/scripts/shortmaker-bridge.js +332 -0
- package/skills/short-maker/scripts/videomix.js +601 -0
- package/skills/short-maker/templates/hyperframes/cinematic-character.template.html +172 -0
- package/skills/short-maker/templates/hyperframes/index.template.html +194 -0
- package/skills/smali-to-kotlin/SKILL.md +128 -0
- package/skills/smali-to-kotlin/examples/getting-started/tech-stack.md +58 -0
- package/skills/smali-to-kotlin/examples/pipeline/data-ui-parity.md +118 -0
- package/skills/smali-to-kotlin/examples/pipeline/scanner-and-bootstrap.md +106 -0
- package/skills/smali-to-kotlin/library-patterns.md +189 -0
- package/skills/smali-to-kotlin/phase-0-discovery.md +128 -0
- package/skills/smali-to-kotlin/phase-1-architecture.md +166 -0
- package/skills/smali-to-kotlin/phase-2-blueprint-ui.md +347 -0
- package/skills/smali-to-kotlin/phase-2-blueprint.md +228 -0
- package/skills/smali-to-kotlin/phase-3-build.md +248 -0
- package/skills/smali-to-kotlin/phase-3-logic-build.md +268 -0
- package/skills/smali-to-kotlin/smali-reading-guide.md +310 -0
- package/skills/smali-to-kotlin/templates/app-map.md +101 -0
- package/skills/smali-to-kotlin/templates/architecture.md +142 -0
- package/skills/smali-to-kotlin/templates/blueprint.md +145 -0
- package/skills/spec-gate/SKILL.md +6 -2
- package/skills/symphony-enforcer/SKILL.md +8 -0
- package/skills/symphony-enforcer/examples/mindful-stop.md +2 -0
- package/skills/symphony-enforcer/examples/three-phase.md +16 -0
- package/skills/symphony-enforcer/examples/trigger-points.md +7 -1
- package/skills/unity-game-development/SKILL.md +231 -0
- package/skills/verification-gate/SKILL.md +4 -2
- package/skills/video-edit/SKILL.md +36 -0
- package/skills/video-edit/scripts/video_edit.py +324 -0
- package/templates/setup-mapping.json +48 -0
- package/templates/specs/design-template.md +161 -71
- package/templates/specs/requirements-template.md +65 -133
- package/templates/specs/task-spec-template.xml +3 -0
- package/workflows/_uncategorized/critic.md +40 -0
- package/workflows/_uncategorized/git-rebase-flow.md +81 -0
- package/workflows/_uncategorized/image-gen.md +118 -0
- package/workflows/_uncategorized/multi-model-pipeline.md +60 -0
- package/workflows/_uncategorized/pixel-gen.md +86 -0
- package/workflows/_uncategorized/pixel-setup.md +90 -0
- package/workflows/_uncategorized/ponytail-review.md +59 -0
- package/workflows/_uncategorized/reverse-android-build.md +222 -0
- package/workflows/_uncategorized/reverse-android-design.md +139 -0
- package/workflows/_uncategorized/reverse-android-discover.md +150 -0
- package/workflows/_uncategorized/reverse-android-scan.md +158 -0
- package/workflows/_uncategorized/reverse-android.md +143 -0
- package/workflows/_uncategorized/reverse-ios-build.md +240 -0
- package/workflows/_uncategorized/reverse-ios-design.md +112 -0
- package/workflows/_uncategorized/reverse-ios-discover.md +120 -0
- package/workflows/_uncategorized/reverse-ios-scan.md +155 -0
- package/workflows/_uncategorized/reverse-ios.md +152 -0
- package/workflows/_uncategorized/safety-router.md +34 -0
- package/workflows/_uncategorized/teach.md +89 -0
- package/workflows/_uncategorized/verify-ui.md +53 -0
- package/workflows/_uncategorized/visualize-screenshots.md +34 -0
- package/workflows/ads/ads-analyst.md +201 -0
- package/workflows/ads/ads-audit.md +106 -0
- package/workflows/ads/ads-optimize.md +97 -0
- package/workflows/ads/ads-targeting.md +241 -0
- package/workflows/ads/adsExpert.md +160 -0
- package/workflows/ads/smali-ads-config.md +400 -0
- package/workflows/ads/smali-ads-flow.md +331 -0
- package/workflows/ads/smali-ads-interstitial.md +377 -0
- package/workflows/ads/smali-ads-native.md +382 -0
- package/workflows/context/teach.md +89 -0
- package/workflows/gitnexus.md +8 -8
- package/workflows/lifecycle/brainstorm.md +43 -0
- package/workflows/lifecycle/code.md +5 -0
- package/workflows/lifecycle/init.md +23 -5
- package/workflows/lifecycle/multi-model-pipeline.md +60 -0
- package/workflows/quality/ponytail-review.md +59 -0
- package/workflows/roles/critic.md +40 -0
- package/workflows/roles/safety-router.md +34 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-music
|
|
3
|
+
displayName: "AI Music"
|
|
4
|
+
allowed-tools: Bash(runcomfy *)
|
|
5
|
+
description: >
|
|
6
|
+
Generate AI music on RunComfy via the `runcomfy` CLI — a smart router
|
|
7
|
+
across the music-model catalog. Routes to ElevenLabs AI Music
|
|
8
|
+
Generation (premium 44.1 kHz stereo vocal tracks, 5 s–5 min, $0.0083/s)
|
|
9
|
+
and ACE Step / ACE Step 1.5 (StepFun-AI open-weights, tag-driven
|
|
10
|
+
composition, multilingual lyrics, $0.0002–0.0003/s, ~27× cheaper),
|
|
11
|
+
plus ACE Step audio-inpaint (regenerate a time range inside an
|
|
12
|
+
existing track) and ACE Step audio-outpaint (extend a track before
|
|
13
|
+
or after). Picks the right model for the user's actual intent —
|
|
14
|
+
premium vocal hook, cheap background music library, multilingual
|
|
15
|
+
pop song, repair a bad chorus, lengthen a 30 s draft into a 2 min
|
|
16
|
+
cut — and ships each model's documented prompting patterns plus the
|
|
17
|
+
minimal `runcomfy run` invoke. Triggers on "generate music",
|
|
18
|
+
"make a song", "AI music", "background music", "instrumental track",
|
|
19
|
+
"soundtrack", "jingle", "theme music", "royalty-free music",
|
|
20
|
+
"compose", "music with lyrics", "extend music", "fix this song",
|
|
21
|
+
"inpaint music", or any explicit ask to generate or edit music.
|
|
22
|
+
homepage: https://www.runcomfy.com
|
|
23
|
+
license: MIT
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# AI Music
|
|
27
|
+
|
|
28
|
+
Generate AI music on RunComfy through one CLI — vocal songs, instrumentals, jingles, game loops, multilingual covers. This skill picks the right model from the RunComfy catalog based on the user's actual intent and ships the documented prompting patterns + the exact `runcomfy run` invoke for each.
|
|
29
|
+
|
|
30
|
+
[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) · [Audio models](https://www.runcomfy.com/models?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) · [CLI docs](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music)
|
|
31
|
+
|
|
32
|
+
## Install this skill
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx skills add agentspace-so/runcomfy-agent-skills --skill ai-music -g
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Powered by the RunComfy CLI
|
|
39
|
+
|
|
40
|
+
**Step 1 — install** (one of, see the `runcomfy-cli` skill for details):
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm i -g @runcomfy/cli # global install
|
|
44
|
+
npx -y @runcomfy/cli --version # zero-install
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Step 2 — sign in** (or set `RUNCOMFY_TOKEN` env var in CI / containers):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
runcomfy login
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Step 3 — generate music**:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
runcomfy run <vendor>/<model>/<endpoint> \
|
|
57
|
+
--input '{"prompt": "...", ...}' \
|
|
58
|
+
--output-dir ./out
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) skill.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Pick the right model for the user's intent
|
|
66
|
+
|
|
67
|
+
### Text-to-music (generate from scratch) — newest first
|
|
68
|
+
|
|
69
|
+
**ACE Step 1.5** — `acestep-ai/ace-step-1.5/text-to-audio`
|
|
70
|
+
> Latest ACE Step generation. **50+ language vocal support**, refined structured-lyric handling, $0.0003/s. Open-weights (Apache 2.0).
|
|
71
|
+
> Pick for: multilingual launches, vocal songs in non-English, hero-quality ACE output.
|
|
72
|
+
> Avoid for: maximally polished commercial vocal hooks (try ElevenLabs Music) or cost-sensitive batches (try base ACE Step).
|
|
73
|
+
|
|
74
|
+
**ElevenLabs AI Music Generation** — `elevenlabs/elevenlabs/music-generation`
|
|
75
|
+
> Premium 44.1 kHz stereo, 5 s–5 min, section-level control (Intro/Verse/Chorus/Bridge), multilingual vocals, commercial-friendly. $0.0083/s (~27× ACE Step).
|
|
76
|
+
> Pick for: hero brand campaigns, polished vocal hooks, premium commercial cuts, ad music.
|
|
77
|
+
> Avoid for: high-volume drafts / background music libraries — cost dominates.
|
|
78
|
+
|
|
79
|
+
**ACE Step (base)** — `acestep-ai/ace-step/text-to-audio` *(default for cost-sensitive work)*
|
|
80
|
+
> Original ACE Step. Tag-driven composition, optional lyrics, 5–240 s stereo. **$0.0002/s** — cheapest CLI-reachable music model on RunComfy.
|
|
81
|
+
> Pick for: background music libraries, jingles, game loops, drafts, cost-sensitive iteration.
|
|
82
|
+
> Avoid for: premium vocal hooks — use **ElevenLabs Music** or **ACE Step 1.5**.
|
|
83
|
+
|
|
84
|
+
### Edit existing audio — ACE Step only (ElevenLabs has no edit endpoints)
|
|
85
|
+
|
|
86
|
+
**ACE Step audio-inpaint** — `acestep-ai/ace-step/audio-inpaint`
|
|
87
|
+
> Regenerate a **time range** (start_time / end_time, anchorable to track start or end) inside an existing track.
|
|
88
|
+
> Pick for: fix a bad chorus, swap the bridge, replace a 20 s section without re-rendering.
|
|
89
|
+
> Avoid for: edits not bounded by time (use the source-model text-to-music instead).
|
|
90
|
+
|
|
91
|
+
**ACE Step audio-outpaint** — `acestep-ai/ace-step/audio-outpaint`
|
|
92
|
+
> Extend an existing track **bidirectionally** — add intro before, outro after, or both (`extend_before_duration` / `extend_after_duration`).
|
|
93
|
+
> Pick for: lengthen a 30 s hook into a 2 min cut, add a fade-out, build longer arrangement around an existing hook.
|
|
94
|
+
> Avoid for: extending past 4 min total — chain calls instead.
|
|
95
|
+
|
|
96
|
+
The agent reads these tables, classifies user intent (premium vs cost-sensitive · multilingual · vocal vs instrumental · generate vs edit), and picks the matching subsection below.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Route 1: ElevenLabs AI Music Generation — premium
|
|
101
|
+
|
|
102
|
+
**Model**: `elevenlabs/elevenlabs/music-generation`
|
|
103
|
+
**Full schema + tips**: see the dedicated [`elevenlabs-music-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/elevenlabs-music-generation) skill.
|
|
104
|
+
|
|
105
|
+
### Quick invoke
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
runcomfy run elevenlabs/elevenlabs/music-generation \
|
|
109
|
+
--input '{
|
|
110
|
+
"prompt": "Upbeat indie-pop anthem, bright electric guitars, driving drums, 120 BPM, female lead vocal. [Intro 8 bars] instrumental build. [Verse] Chalk on the palms, laces double-knotted. [Chorus] We rise, we strike, we never fade out. [Outro] full band, fade.",
|
|
111
|
+
"music_length_ms": 60000
|
|
112
|
+
}' \
|
|
113
|
+
--output-dir ./out
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
ElevenLabs Music reads **one `prompt`** carrying both style brief and lyrics with section markers. `force_instrumental: true` for no vocals. $0.0083/s — draft short, finalize long.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Route 2: ACE Step / ACE Step 1.5 — cheap, open-weights
|
|
121
|
+
|
|
122
|
+
**Model**: `acestep-ai/ace-step/text-to-audio` (base) or `acestep-ai/ace-step-1.5/text-to-audio` (1.5)
|
|
123
|
+
**Full schema + tips**: see the dedicated [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ace-step) skill.
|
|
124
|
+
|
|
125
|
+
### Quick invoke
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
runcomfy run acestep-ai/ace-step-1.5/text-to-audio \
|
|
129
|
+
--input '{
|
|
130
|
+
"tags": "indie pop, anthemic, electric guitar, driving drums, female vocal, 120 BPM",
|
|
131
|
+
"lyrics": "[Verse]\nChalk on the palms\nMorning on the ridge\n[Chorus]\nWe rise, we strike, we never fade out",
|
|
132
|
+
"duration": 60
|
|
133
|
+
}' \
|
|
134
|
+
--output-dir ./out
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
ACE Step splits **style into `tags`** and **vocal content into `lyrics`** (with `[Verse]/[Chorus]/[Bridge]` markers, or `[inst]` for instrumental). 1.5 variant adds 50+ language vocal support.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Route 3: ACE Step audio-inpaint — repair a section
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
runcomfy run acestep-ai/ace-step/audio-inpaint \
|
|
145
|
+
--input '{
|
|
146
|
+
"audio": "https://your-cdn.example/song.mp3",
|
|
147
|
+
"tags": "indie pop, breakdown, piano only, soft, no drums",
|
|
148
|
+
"start_time": 20,
|
|
149
|
+
"end_time": 40,
|
|
150
|
+
"lyrics": "[inst]"
|
|
151
|
+
}' \
|
|
152
|
+
--output-dir ./out
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`start_time_relative_to` and `end_time_relative_to` default to `start`; set to `end` to anchor against the track's end (e.g. rewrite the last 15 s without computing exact timestamps). Full schema: [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ace-step) skill.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Route 4: ACE Step audio-outpaint — extend a track
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
runcomfy run acestep-ai/ace-step/audio-outpaint \
|
|
163
|
+
--input '{
|
|
164
|
+
"audio": "https://your-cdn.example/hook-30s.mp3",
|
|
165
|
+
"tags": "indie pop, build-up before chorus, fade outro",
|
|
166
|
+
"extend_before_duration": 30,
|
|
167
|
+
"extend_after_duration": 60,
|
|
168
|
+
"lyrics": "[inst]"
|
|
169
|
+
}' \
|
|
170
|
+
--output-dir ./out
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Bidirectional in one call — set both `extend_before_duration` and `extend_after_duration` to add intro + outro at once. Cap is 4 min total.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Common patterns
|
|
178
|
+
|
|
179
|
+
### Premium brand campaign jingle (5–15 s)
|
|
180
|
+
- **Route 1 (ElevenLabs Music)** — hero quality, polished mix. $0.05–0.12 per take.
|
|
181
|
+
|
|
182
|
+
### Background music library at scale (50+ tracks)
|
|
183
|
+
- **Route 2 (ACE Step base)** with varied tag combos. $0.012 / 60 s × 50 = $0.60 for 50 drafts.
|
|
184
|
+
|
|
185
|
+
### Multilingual launch (same song, 8 languages)
|
|
186
|
+
- **Route 2 (ACE Step 1.5)** — identical tags, swap `lyrics` per language. Or **Route 1 (ElevenLabs Music)** if premium quality matters more than cost.
|
|
187
|
+
|
|
188
|
+
### Game loop bed
|
|
189
|
+
- **Route 2 (ACE Step base)** with "seamless loop, consistent groove" in tags, 60–120 s.
|
|
190
|
+
|
|
191
|
+
### Theme song for a video
|
|
192
|
+
- **Route 1 (ElevenLabs Music)** with full brief + lyrics + section markers, `music_length_ms` matched to the video length.
|
|
193
|
+
|
|
194
|
+
### "I generated a 30 s hook but I need a 2 min track"
|
|
195
|
+
- **Route 4 (ACE Step audio-outpaint)** with the hook as `audio`, add 30 s intro + 60 s outro in one call.
|
|
196
|
+
|
|
197
|
+
### "My second chorus came out wrong"
|
|
198
|
+
- **Route 3 (ACE Step audio-inpaint)** with `start_time` / `end_time` around the bad chorus, tags matching the original song style.
|
|
199
|
+
|
|
200
|
+
### Cheap draft → premium polish
|
|
201
|
+
- Iterate tags on **Route 2 (ACE Step base)** for $0.01–0.02 per attempt → lock vibe → final render on **Route 1 (ElevenLabs Music)** for the polished commercial cut.
|
|
202
|
+
|
|
203
|
+
### Inpaint a section that doesn't fit ACE's time-range schema
|
|
204
|
+
- The CLI today doesn't expose a mask-based audio inpaint endpoint. Either reformulate as a time-range edit, or use **Route 2** to regenerate the full track with adjusted tags.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Decision flow (for the agent)
|
|
209
|
+
|
|
210
|
+
The agent should ask / infer:
|
|
211
|
+
|
|
212
|
+
1. **Generate from scratch or edit existing audio?**
|
|
213
|
+
- Edit → go to step 5
|
|
214
|
+
- Generate → step 2
|
|
215
|
+
2. **Premium polish required (brand / commercial)?**
|
|
216
|
+
- Yes → **Route 1 (ElevenLabs Music)**
|
|
217
|
+
- No → step 3
|
|
218
|
+
3. **Multilingual vocals needed?**
|
|
219
|
+
- Yes → **Route 2 (ACE Step 1.5)**
|
|
220
|
+
- No → step 4
|
|
221
|
+
4. **Cost-sensitive batch or single track?**
|
|
222
|
+
- Cost-sensitive / batch → **Route 2 (ACE Step base)**
|
|
223
|
+
- Single quality track → **Route 1 (ElevenLabs Music)** or **Route 2 (ACE Step 1.5)** — pick by budget
|
|
224
|
+
5. **Edit type?**
|
|
225
|
+
- Time-bounded section rewrite → **Route 3 (audio-inpaint)**
|
|
226
|
+
- Add before / after → **Route 4 (audio-outpaint)**
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Browse the full catalog
|
|
231
|
+
|
|
232
|
+
- [All RunComfy models](https://www.runcomfy.com/models?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) — image, video, and audio endpoints
|
|
233
|
+
- [ElevenLabs Music model page](https://www.runcomfy.com/models/elevenlabs/elevenlabs/music-generation?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) — full API tab
|
|
234
|
+
- [ACE Step base](https://www.runcomfy.com/models/acestep-ai/ace-step/text-to-audio?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) · [ACE Step 1.5](https://www.runcomfy.com/models/acestep-ai/ace-step-1.5/text-to-audio?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) · [audio-inpaint](https://www.runcomfy.com/models/acestep-ai/ace-step/audio-inpaint?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) · [audio-outpaint](https://www.runcomfy.com/models/acestep-ai/ace-step/audio-outpaint?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) — ACE Step endpoints
|
|
235
|
+
- [docs.runcomfy.com/cli](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music) — CLI install, authentication, troubleshooting
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Exit codes
|
|
240
|
+
|
|
241
|
+
| code | meaning |
|
|
242
|
+
|---|---|
|
|
243
|
+
| 0 | success |
|
|
244
|
+
| 64 | bad CLI args |
|
|
245
|
+
| 65 | bad input JSON / schema mismatch |
|
|
246
|
+
| 69 | upstream 5xx |
|
|
247
|
+
| 75 | retryable: timeout / 429 |
|
|
248
|
+
| 77 | not signed in or token rejected |
|
|
249
|
+
|
|
250
|
+
Full reference: [docs.runcomfy.com/cli/troubleshooting](https://docs.runcomfy.com/cli/troubleshooting?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music).
|
|
251
|
+
|
|
252
|
+
## How it works
|
|
253
|
+
|
|
254
|
+
The skill classifies the user request into one of the four routes — generate (ElevenLabs or ACE Step) vs edit (audio-inpaint vs audio-outpaint), then premium vs cost-sensitive — and invokes `runcomfy run <model_id>` with the matching JSON body. The CLI POSTs to the RunComfy Model API, polls request status, and downloads the generated audio file into `--output-dir`. `Ctrl-C` cancels the remote request before exit.
|
|
255
|
+
|
|
256
|
+
## Security & Privacy
|
|
257
|
+
|
|
258
|
+
- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf** — if the operator wants the curl-pipe path documented at `docs.runcomfy.com/cli/install`, they should review the script first.
|
|
259
|
+
- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var to bypass the file in CI / containers. Never echo the token into a prompt, log it, or check it in.
|
|
260
|
+
- **Input boundary (shell injection)**: prompts, tags, lyrics, and audio URLs are passed as a JSON string via `--input`. The CLI does not shell-expand prompt content; it transmits the JSON body directly to the Model API over HTTPS. **No shell-injection surface from prompt content**.
|
|
261
|
+
- **Indirect prompt injection (third-party content)**: source `audio` URLs for inpaint / outpaint are **untrusted** — embedded steganographic instructions or unusual EXIF can influence generation. Agent mitigations:
|
|
262
|
+
- Ingest only audio URLs the **user explicitly provided** for this task.
|
|
263
|
+
- When the output diverges from the prompt, suspect the source audio.
|
|
264
|
+
- **Lyrics provenance**: if the user supplies lyrics, confirm they have the rights. Generating music around copyrighted lyrics is the operator's responsibility — the skill does not check.
|
|
265
|
+
- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcomfy.com`. No telemetry, no callbacks.
|
|
266
|
+
- **Generated-file size cap**: the CLI aborts any single download > 2 GiB.
|
|
267
|
+
- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill only invokes `runcomfy <subcommand>`; install lines are one-time operator setup.
|
|
268
|
+
|
|
269
|
+
## See also
|
|
270
|
+
|
|
271
|
+
- [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) — the underlying CLI
|
|
272
|
+
- [`elevenlabs-music-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/elevenlabs-music-generation) — full schema + prompting tips for ElevenLabs Music
|
|
273
|
+
- [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ace-step) — full schema + prompting tips for ACE Step (all four endpoints)
|
|
274
|
+
- [`ai-video-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-video-generation) — pair a generated track with a generated video
|
|
275
|
+
- [`ai-avatar-video`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-avatar-video) — talking-head video (speech, not music)
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: android-re-analyzer
|
|
3
|
+
description: >-
|
|
4
|
+
Android APK/XAPK/JAR/AAR decompiler & API extractor. Decompiles Android packages
|
|
5
|
+
using jadx and Fernflower/Vineflower, traces call flows from UI to network layer,
|
|
6
|
+
and produces structured API documentation. Complements smali-to-kotlin (rebuild)
|
|
7
|
+
by focusing on analysis & extraction.
|
|
8
|
+
author: SimoneAvogadro (adapted by Antigravity Team)
|
|
9
|
+
version: 1.0.0
|
|
10
|
+
license: Apache-2.0
|
|
11
|
+
original_repo: https://github.com/SimoneAvogadro/android-reverse-engineering-skill
|
|
12
|
+
trigger: conditional
|
|
13
|
+
activation_keywords:
|
|
14
|
+
- "/decompile"
|
|
15
|
+
- "decompile apk"
|
|
16
|
+
- "reverse engineer android"
|
|
17
|
+
- "extract api"
|
|
18
|
+
- "jadx"
|
|
19
|
+
- "fernflower"
|
|
20
|
+
- "vineflower"
|
|
21
|
+
- "find api endpoints"
|
|
22
|
+
- "trace call flow"
|
|
23
|
+
- "analyze apk"
|
|
24
|
+
- "dịch ngược apk"
|
|
25
|
+
- "phân tích apk"
|
|
26
|
+
priority: high
|
|
27
|
+
platform: android
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# 🔍 Android RE Analyzer Skill
|
|
31
|
+
|
|
32
|
+
> **Purpose:** Decompile Android APK/XAPK/JAR/AAR → Analyze structure → Extract & document HTTP APIs.
|
|
33
|
+
> **Philosophy:** "Scan → Understand → Document" — analysis & extraction, not rebuilding.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## ⚠️ SCOPE CLARITY
|
|
38
|
+
|
|
39
|
+
| This skill DOES | This skill DOES NOT |
|
|
40
|
+
|-----------------|---------------------|
|
|
41
|
+
| Decompile APK/XAPK/JAR/AAR to Java source | Rebuild app in modern Kotlin |
|
|
42
|
+
| Extract HTTP API endpoints & auth patterns | Write new production code |
|
|
43
|
+
| Trace call flows from UI → Network | Modify or repackage APKs |
|
|
44
|
+
| Analyze app architecture & manifest | Crack/bypass security |
|
|
45
|
+
| Handle obfuscated code (ProGuard/R8) | Deploy to Play Store |
|
|
46
|
+
| Auto-install dependencies (jadx, etc.) | Handle iOS apps |
|
|
47
|
+
|
|
48
|
+
**For rebuilding apps** → delegate to `smali-to-kotlin` skill
|
|
49
|
+
**For iOS reverse engineering** → delegate to `smali-to-swift` skill
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 🎯 ROLE DEFINITION
|
|
54
|
+
|
|
55
|
+
When this skill is active, the agent becomes:
|
|
56
|
+
|
|
57
|
+
> **Expert Android Reverse Engineer & API Analyst**
|
|
58
|
+
> - Master at navigating decompiled Java source (obfuscated or clean)
|
|
59
|
+
> - Fluent in Retrofit, OkHttp, Volley API patterns
|
|
60
|
+
> - Knows how to trace DI (Dagger/Hilt) bindings to find implementations
|
|
61
|
+
> - Uses dual-engine decompilation for maximum accuracy
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 🛠️ PREREQUISITES
|
|
66
|
+
|
|
67
|
+
Required: **Java JDK 17+** and **jadx**.
|
|
68
|
+
Optional (recommended): **Vineflower** (Fernflower fork) and **dex2jar**.
|
|
69
|
+
|
|
70
|
+
Check dependencies:
|
|
71
|
+
```bash
|
|
72
|
+
bash SKILL_ROOT/scripts/check-deps.sh
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Install missing ones:
|
|
76
|
+
```bash
|
|
77
|
+
bash SKILL_ROOT/scripts/install-dep.sh <dep>
|
|
78
|
+
# Available: java, jadx, vineflower, dex2jar, apktool, adb
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> `SKILL_ROOT` = path to this skill directory (e.g. `~/.gemini/antigravity/skills/android-re-analyzer`)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 📋 EXECUTION PIPELINE (5 Phases)
|
|
86
|
+
|
|
87
|
+
> **Rule:** Complete each phase before proceeding to the next.
|
|
88
|
+
> **Rule:** After each phase, summarize findings for the user.
|
|
89
|
+
|
|
90
|
+
### Phase 1: Verify & Install Dependencies
|
|
91
|
+
|
|
92
|
+
**Action:** Run `check-deps.sh`. If missing required deps → run `install-dep.sh <dep>`.
|
|
93
|
+
Re-run check after installation. Do NOT proceed until all required deps are OK.
|
|
94
|
+
|
|
95
|
+
For optional deps (vineflower, dex2jar), ask user if they want them installed.
|
|
96
|
+
Recommend both for best results.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Phase 2: Decompile
|
|
101
|
+
|
|
102
|
+
**Action:** Run the decompile script:
|
|
103
|
+
```bash
|
|
104
|
+
bash SKILL_ROOT/scripts/decompile.sh [OPTIONS] <file>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Options:
|
|
108
|
+
- `-o <dir>` — output directory (default: `<filename>-decompiled`)
|
|
109
|
+
- `--deobf` — enable deobfuscation (for obfuscated apps)
|
|
110
|
+
- `--no-res` — skip resources, code only (faster)
|
|
111
|
+
- `--engine ENGINE` — `jadx` (default), `fernflower`, or `both`
|
|
112
|
+
|
|
113
|
+
**Engine selection:**
|
|
114
|
+
|
|
115
|
+
| Situation | Engine |
|
|
116
|
+
|---|---|
|
|
117
|
+
| First pass on any APK | `jadx` |
|
|
118
|
+
| JAR/AAR library analysis | `fernflower` |
|
|
119
|
+
| jadx output has warnings | `both` (compare) |
|
|
120
|
+
| Complex lambdas/generics | `fernflower` |
|
|
121
|
+
| Quick overview of large APK | `jadx --no-res` |
|
|
122
|
+
|
|
123
|
+
XAPK files are auto-extracted and each APK inside is decompiled separately.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### Phase 3: Analyze Structure
|
|
128
|
+
|
|
129
|
+
1. **Read `AndroidManifest.xml`:**
|
|
130
|
+
- Identify launcher Activity, Application class
|
|
131
|
+
- List Activities, Services, BroadcastReceivers, ContentProviders
|
|
132
|
+
- Note permissions (especially INTERNET, ACCESS_NETWORK_STATE)
|
|
133
|
+
|
|
134
|
+
2. **Survey package structure** under `<output>/sources/`:
|
|
135
|
+
- Distinguish app code from third-party libraries
|
|
136
|
+
- Look for packages: `api`, `network`, `data`, `repository`, `service`, `retrofit`
|
|
137
|
+
|
|
138
|
+
3. **Identify architecture pattern:**
|
|
139
|
+
- MVP: `Presenter` classes
|
|
140
|
+
- MVVM: `ViewModel` + `LiveData`/`StateFlow`
|
|
141
|
+
- Clean Architecture: `domain`, `data`, `presentation` packages
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### Phase 4: Trace Call Flows
|
|
146
|
+
|
|
147
|
+
Follow execution paths from entry points to network calls:
|
|
148
|
+
|
|
149
|
+
1. Start from Activities identified in Phase 3
|
|
150
|
+
2. Follow initialization: `Application.onCreate()` → HTTP client setup
|
|
151
|
+
3. Trace user actions: `onClick()` → ViewModel → Repository → API service
|
|
152
|
+
4. Map DI bindings (`@Module`, `@Provides`, `@Binds`, `@Inject`)
|
|
153
|
+
5. Handle obfuscated code: use strings, annotations, and library APIs as anchors
|
|
154
|
+
|
|
155
|
+
See `SKILL_ROOT/references/call-flow-analysis.md` for detailed grep commands and techniques.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
### Phase 5: Extract & Document APIs
|
|
160
|
+
|
|
161
|
+
**Action:** Run API search script:
|
|
162
|
+
```bash
|
|
163
|
+
bash SKILL_ROOT/scripts/find-api-calls.sh <output>/sources/
|
|
164
|
+
# Targeted: --retrofit, --okhttp, --volley, --urls, --auth
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
For each endpoint, document:
|
|
168
|
+
```markdown
|
|
169
|
+
### `METHOD /path/to/endpoint`
|
|
170
|
+
- **Source**: `com.example.api.ApiService` (file:line)
|
|
171
|
+
- **Base URL**: `https://api.example.com/v1`
|
|
172
|
+
- **Path params**: `id` (String)
|
|
173
|
+
- **Query params**: `page` (int), `limit` (int)
|
|
174
|
+
- **Headers**: `Authorization: Bearer <token>`
|
|
175
|
+
- **Request body**: `LoginRequest { email: String, password: String }`
|
|
176
|
+
- **Response type**: `ApiResponse<User>`
|
|
177
|
+
- **Called from**: `LoginActivity → ViewModel → Repository → ApiService`
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
See `SKILL_ROOT/references/api-extraction-patterns.md` for all search patterns.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 🔄 WORKFLOW INTEGRATION
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
triggers_from:
|
|
188
|
+
- "/decompile" workflow command
|
|
189
|
+
- Keywords: "decompile", "extract api", "analyze apk", "jadx"
|
|
190
|
+
|
|
191
|
+
delegates_to:
|
|
192
|
+
- smali-to-kotlin — when user wants to rebuild the app after analysis
|
|
193
|
+
- smali-to-swift — when user wants iOS equivalent
|
|
194
|
+
|
|
195
|
+
works_with:
|
|
196
|
+
- memory-sync — saves analysis findings, API docs
|
|
197
|
+
- symphony-orchestrator — tracks progress per phase
|
|
198
|
+
- orchestrator — routes to this skill based on intent
|
|
199
|
+
|
|
200
|
+
independent_from:
|
|
201
|
+
- brainstorm-agent
|
|
202
|
+
- ios-engineer
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 🚫 ANTI-PATTERNS
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
never_do:
|
|
211
|
+
- Skip dependency check → always verify tools are available first
|
|
212
|
+
- Guess at API endpoints → always use grep patterns to find them
|
|
213
|
+
- Ignore obfuscation → use --deobf and string-based tracing
|
|
214
|
+
- Assume app architecture → verify from code before tracing
|
|
215
|
+
|
|
216
|
+
always_do:
|
|
217
|
+
- Run check-deps.sh before any decompilation
|
|
218
|
+
- Offer dual-engine decompilation when jadx has warnings
|
|
219
|
+
- Document every discovered API endpoint with the template
|
|
220
|
+
- Report architecture pattern before tracing call flows
|
|
221
|
+
- Ask user before proceeding to rebuild (delegate to smali-to-kotlin)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 📚 REFERENCES
|
|
227
|
+
|
|
228
|
+
Detailed guides available in `SKILL_ROOT/references/`:
|
|
229
|
+
- `setup-guide.md` — Installing Java, jadx, Vineflower, dex2jar
|
|
230
|
+
- `jadx-usage.md` — jadx CLI options and workflows
|
|
231
|
+
- `fernflower-usage.md` — Fernflower/Vineflower CLI options
|
|
232
|
+
- `api-extraction-patterns.md` — Library-specific grep patterns
|
|
233
|
+
- `call-flow-analysis.md` — Techniques for tracing call flows
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
*android-re-analyzer v1.0.0 — Based on SimoneAvogadro/android-reverse-engineering-skill (Apache 2.0)*
|
|
238
|
+
*Adapted for Antigravity by Antigravity Team*
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# API Extraction Patterns
|
|
2
|
+
|
|
3
|
+
Patterns and grep commands for finding HTTP API calls in decompiled Android source code.
|
|
4
|
+
|
|
5
|
+
## Retrofit
|
|
6
|
+
|
|
7
|
+
Retrofit is the most common HTTP client in Android apps. API endpoints are declared as annotated interface methods.
|
|
8
|
+
|
|
9
|
+
### Annotations to search for
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# HTTP method annotations
|
|
13
|
+
grep -rn '@GET\|@POST\|@PUT\|@DELETE\|@PATCH\|@HEAD' sources/
|
|
14
|
+
|
|
15
|
+
# Parameter annotations
|
|
16
|
+
grep -rn '@Query\|@QueryMap\|@Path\|@Body\|@Field\|@FieldMap\|@Part\|@Header\|@HeaderMap' sources/
|
|
17
|
+
|
|
18
|
+
# Headers annotation (static headers)
|
|
19
|
+
grep -rn '@Headers' sources/
|
|
20
|
+
|
|
21
|
+
# Base URL configuration
|
|
22
|
+
grep -rn 'baseUrl\|\.baseUrl(' sources/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Typical Retrofit interface
|
|
26
|
+
|
|
27
|
+
```java
|
|
28
|
+
public interface ApiService {
|
|
29
|
+
@GET("users/{id}")
|
|
30
|
+
Call<User> getUser(@Path("id") String userId);
|
|
31
|
+
|
|
32
|
+
@POST("auth/login")
|
|
33
|
+
@Headers({"Content-Type: application/json"})
|
|
34
|
+
Call<LoginResponse> login(@Body LoginRequest request);
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
When documenting, capture: HTTP method, path, path parameters, query parameters, request body type, response type, and any static headers.
|
|
39
|
+
|
|
40
|
+
## OkHttp
|
|
41
|
+
|
|
42
|
+
OkHttp is often used directly or as the transport layer for Retrofit.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Request building
|
|
46
|
+
grep -rn 'Request\.Builder\|Request.Builder\|\.url(\|\.post(\|\.put(\|\.delete(\|\.patch(' sources/
|
|
47
|
+
|
|
48
|
+
# URL construction
|
|
49
|
+
grep -rn 'HttpUrl\|\.addQueryParameter\|\.addPathSegment' sources/
|
|
50
|
+
|
|
51
|
+
# Interceptors (often add auth headers)
|
|
52
|
+
grep -rn 'Interceptor\|addInterceptor\|addNetworkInterceptor\|intercept(' sources/
|
|
53
|
+
|
|
54
|
+
# Response handling
|
|
55
|
+
grep -rn '\.execute()\|\.enqueue(' sources/
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Volley
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
grep -rn 'StringRequest\|JsonObjectRequest\|JsonArrayRequest\|Volley\.newRequestQueue\|RequestQueue' sources/
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Volley requests typically pass the URL as a constructor argument and override `getHeaders()` or `getParams()` for custom headers/parameters.
|
|
65
|
+
|
|
66
|
+
## HttpURLConnection (legacy)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
grep -rn 'HttpURLConnection\|HttpsURLConnection\|openConnection\|setRequestMethod\|setRequestProperty' sources/
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## WebView
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
grep -rn 'loadUrl\|evaluateJavascript\|addJavascriptInterface\|WebViewClient\|shouldOverrideUrlLoading' sources/
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
WebView-based apps may load API endpoints via JavaScript bridges. Look for `@JavascriptInterface` annotated methods.
|
|
79
|
+
|
|
80
|
+
## Hardcoded URLs and Secrets
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# HTTP/HTTPS URLs
|
|
84
|
+
grep -rn '"https\?://[^"]*"' sources/
|
|
85
|
+
|
|
86
|
+
# API keys and tokens
|
|
87
|
+
grep -rni 'api[_-]\?key\|api[_-]\?secret\|auth[_-]\?token\|bearer\|access[_-]\?token\|client[_-]\?secret' sources/
|
|
88
|
+
|
|
89
|
+
# Base URL constants
|
|
90
|
+
grep -rni 'BASE_URL\|API_URL\|SERVER_URL\|ENDPOINT\|API_BASE' sources/
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Documentation Template
|
|
94
|
+
|
|
95
|
+
For each discovered API endpoint, document it using this template:
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
### `METHOD /path/to/endpoint`
|
|
99
|
+
|
|
100
|
+
- **Source**: `com.example.app.api.ApiService` (file:line)
|
|
101
|
+
- **Base URL**: `https://api.example.com/v1`
|
|
102
|
+
- **Full URL**: `https://api.example.com/v1/path/to/endpoint`
|
|
103
|
+
- **Path parameters**: `id` (String)
|
|
104
|
+
- **Query parameters**: `page` (int), `limit` (int)
|
|
105
|
+
- **Headers**:
|
|
106
|
+
- `Authorization: Bearer <token>`
|
|
107
|
+
- `Content-Type: application/json`
|
|
108
|
+
- **Request body**: `LoginRequest { email: String, password: String }`
|
|
109
|
+
- **Response type**: `ApiResponse<User>`
|
|
110
|
+
- **Notes**: Called from `LoginActivity.onLoginClicked()`
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Search Strategy
|
|
114
|
+
|
|
115
|
+
1. Start with **base URL constants** — find where the API root is configured
|
|
116
|
+
2. Search for **Retrofit interfaces** — they give the clearest picture of all endpoints
|
|
117
|
+
3. Check **interceptors** — they reveal auth schemes and common headers
|
|
118
|
+
4. Search for **hardcoded URLs** — catch any one-off API calls outside the main client
|
|
119
|
+
5. Look for **WebView URLs** — some apps use hybrid web/native approaches
|