app-to-cli
Skill0 starsChanged 4 months agoMITView on GitHub
Engenharia reversa de QUALQUER app de desktop (não só sites) para gerar uma CLI/API não-oficial dele. Você aponta o EXECUTÁVEL, loga normalmente e GUIA o agente sobre o que mapear; a skill sobe um proxy de sistema (mitmproxy), observa o tráfego enquanto VOCÊ usa o app feature a feature, monta o catálogo de endpoints e reaproveita a site-to-cli para gerar o pacote (CLI + OpenAPI). É a irmã NATIVA da site-to-cli (que só cobre browser); cobre apps HTTP(S) e não-HTTP (WebSocket/gRPC/TCP). Use para: "criar uma CLI/API a partir de um programa de desktop", "engenharia reversa da API de um app/executável", "mapear o backend de um app que não é site", "interceptar o tráfego (mitmproxy) de um app nativo", "usar no terminal um sistema só-desktop", "automatizar um app logado sem clicar". Gatilhos: /app-to-cli, "reverse engineer esse programa", "gera uma CLI pra esse app", "mapeia o backend desse executável", "transforma esse sistema desktop em API".
In this repository17 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-skills-and-subagentsSkill
- anthropic-api-handbookSkill
- claude-code-handbookSkill
- docs-to-skillSkill
- install-skillSkill
- mcp-handbookSkill
- session-handoffSkill
- site-endpoint-scanSkill
- site-to-cliSkill
- skill-evalSkill
- skilljar-transcriptsSkill
- skill-lintSkill
- skill-prospectorSkill
- skill-scoutSkill
- ui-reskinSkill
- video-curriculumSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 84
Use --method auto (chama o detect) ou force A/B/cdp.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
app-to-cli — de um executável nativo a uma CLI tipo-API
Transforma um app de desktop (não um site) numa CLI: a skill observa o tráfego de rede real (via mitmproxy como proxy de sistema), descobre os endpoints do backend enquanto você usa o app, e gera um pacote onde cada função do app vira um subcomando, autenticado com a sua própria sessão — sem cliques.
Esta skill faz só a CAPTURA NATIVA. A análise e a geração do CLI são reuso da
site-to-cli(mesmocatalog.json, mesmo pacote de saída). A costura é um HAR: a captura vira HAR → a site-to-cli fazimport-har → analyze → generate/openapi. Se a site-to-cli não estiver no projeto:/install-skill site-to-cli.
Guardrails (não negociáveis). Só rode contra apps onde o usuário tem conta e autorização, com as credenciais dele. Nada de mirar contas de terceiros, mass-scraping ou evasão para abuso. O proxy de sistema e o CA são revertidos no
cleanup(rode-o SEMPRE, mesmo se falhar). Tokens nunca entram no catálogo (a site-to-cli marca headers de credencial comofromSession, sem valor). Não invente endpoints: só existe o que foi capturado — faltou função, capture de novo usando-a.
Os 4 atos
[1 Preparar] → [2 Capturar guiado por VOCÊ] → [3 Handoff p/ site-to-cli] → [4 Gerar + verificar]
doctor/cert/detect start·mark·peek·flush handoff (HAR→catalog) generate·openapi·replayTudo passa pelo orquestrador scripts/run.ps1 (Windows; resolve Python, instala mitmproxy na 1ª vez,
sobe/derruba o proxy). Saídas vão para um run dir <out>/ (default ./<slug>-cli/).
Como você guia (o modelo de observação)
Ao invocar, diga o que quer mapear (ex.: /app-to-cli C:\App\App.exe quero mapear login, listar
pedidos e criar pedido). O agente usa isso para planejar as features e roda o loop feature a
feature: para cada uma, ele rotula o segmento → você executa a feature no app → diz "pronto" →
o agente faz um peek e segue para a próxima. Cada feature vira um grupo de endpoints no catálogo.
Ato 1 — Preparar
pwsh -NoProfile -File scripts/run.ps1 doctor # python/mitmproxy/node/site-to-cli/porta/CA
pwsh -NoProfile -File scripts/run.ps1 setup-cert # 1x por máquina: instala mitmproxy + CA (CurrentUser\Root, sem admin)
pwsh -NoProfile -File scripts/run.ps1 detect --exe "<exe>" # fingerprint -> método de captura (JSON)O detect decide o método pelo tipo de app (libssl bundled, PyInstaller, Electron, .NET, Java…).
Tabela completa e casos difíceis (SSL embutido, app que ignora proxy, OAuth) em
references/CAPTURE_METHODS.md.
Ato 2 — Capturar guiado (você dirige o app)
pwsh -NoProfile -File scripts/run.ps1 start --exe "<exe>" --out "<run>" --label <feature1> [--method auto] [--domains api.x.com] [--no-launch]
# ... você usa a feature no app ...
pwsh -NoProfile -File scripts/run.ps1 peek --out "<run>" # o que apareceu até agora
pwsh -NoProfile -File scripts/run.ps1 mark --out "<run>" --label <feature2> # próxima feature
# ... repete por feature ...
pwsh -NoProfile -File scripts/run.ps1 stop --out "<run>" # encerra a captura (app pode seguir aberto)startliga o proxy de sistema, sobe o mitmdump (comscripts/capture_addon.py) e lança o app. Use--method auto(chama odetect) ou forceA/B/cdp.--no-launchse preferir abrir o app na mão.--domainsfiltra hosts (reduz ruído) — omita p/ capturar tudo.marktroca a feature corrente;peekmostra um resumo por feature (method + path + status) p/ você confirmar que a feature foi capturada antes de seguir.- App não aparece no proxy? App que ignora proxy (Java/alguns nativos) → método C (Proxifier) ou
transparente; ver
references/CAPTURE_METHODS.md. Erro de SSL no app? verreferences/TROUBLESHOOTING.md.
Ato 3 — Handoff para a site-to-cli
pwsh -NoProfile -File scripts/run.ps1 handoff --out "<run>" --name <slug>Converte os fluxos capturados em capture/combined.har (+ 1 HAR por feature) e chama a site-to-cli:
import-har → analyze → rascunho do catalog.json. Detalhes da costura, multi-feature e nomeação
de ids por feature em references/INTEGRATION.md.
Depois você (modelo) cura o catalog.json (julgamento — não automatize cego), seguindo o contrato
da site-to-cli (references/CATALOG_SCHEMA.md dela): id = subcomando claro (por feature, ex.
login, pedidos-list, pedidos-create), summary 1 linha, primary só nas funções reais
(esconda telemetria/health/polling), confirme auth/baseUrl, e troque qualquer token literal por
fromSession: true.
Ato 4 — Gerar + verificar (reuso da site-to-cli) e LIMPAR
Chame a site-to-cli via node direto nos .mjs (o run.ps1 dela engole --out por causa do
CmdletBinding; o handoff já imprime os caminhos exatos). <s2c> = pasta scripts/ da site-to-cli.
node "<s2c>/scaffold-cli.mjs" --out "<run>" # = generate: CLI data-driven a partir do catalog curado
node "<s2c>/gen-openapi.mjs" --out "<run>" # = openapi: openapi.json + .yaml
# verifique: rode 1 comando da CLI gerada fora do app (replay) p/ provar o mapeamento — TROUBLESHOOTING.md
pwsh -NoProfile -File scripts/run.ps1 cleanup --out "<run>" # SEMPRE: desliga proxy, restaura, mata processosA CLI gerada usa node cli.mjs login | list | <comando> [--param v] | auth check (a sessão é sua,
persistida localmente; ver o README do pacote gerado).
Apps não-HTTP (WebSocket / gRPC / TCP cru)
O caminho HTTP(S) acima é automático. Para protocolos não-HTTP, o capture_addon.py também grava
WebSocket/TCP em <run>/.capture/raw.jsonl, e o mapeamento vira guiado/semi-manual (decodificar
framing, montar stubs de cliente). Quando começar e como mapear: references/NON_HTTP.md.
Scripts (determinísticos — não reimplemente)
| Script | Papel |
scripts/run.ps1 | Orquestrador: doctor·setup-cert·detect·start·mark·peek·flush·stop·handoff·cleanup |
scripts/capture_addon.py | Addon do mitmdump: rotula fluxos pela feature → flows.jsonl (HTTP) / raw.jsonl (ws/tcp) |
scripts/flows_to_har.py | flows.jsonl → HAR 1.2 (por feature + combined) e o resumo do peek |
Fim
A skill fica inerte no ateliê. Para usá-la num projeto: /install-skill app-to-cli (e a site-to-cli
junto). Inspiração (MIT, crédito nos cabeçalhos): AI-OS/mitmproxy-traffic-capture (captura nativa +
árvore de métodos), CLI-Anything-WEB (evidência por endpoint + gate), AuditForge/proxy-capture-replay
(replay + sanitização), zotero/capture-api (HAR→OpenAPI), cli-generation/cli-api-recon (formato de recon).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

