Receber por email
← Voltar para o catálogo

methodology

Analyzes captured HTTP traffic, designs the CLI architecture, and implements the Python CLI package (Phase 2): parse raw-traffic.json, identify the protocol, write api-spec.json, scaffold from templates, and implement endpoint methods and Click command groups. Use after a capture completes and raw-traffic.json exists.

201estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add ItamarZand88/CLI-Anything-WEB

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/methodology/svg)](https://www.skillteca.com.br/skills/methodology)

Alerta por categoria

Receba novas skills de Design e Frontend toda segunda

1 email curto, só com as skills novas de Design e Frontend. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

CLI-Anything-Web Methodology (Phase 2)

Analyze captured traffic, design the CLI command structure, and implement the complete Python CLI package. This skill owns the core transformation from raw HTTP traffic to a production-ready CLI.

Copy this checklist and check off items as you complete them:

Phase 2 Progress:
- [ ] Prerequisites: raw-traffic.json exists (+ auth state if the site needs auth)
- [ ] Step A: traffic analyzed, protocol identified, <APP>.md written
- [ ] Step A: api-spec.json written (every endpoint cites raw-traffic.json evidence)
       and passes `cli-web-devkit spec validate`
- [ ] Step B.0: scaffolded via scaffold-cli.py (.manifest.json present)
- [ ] Step B: client endpoint methods implemented from the spec
- [ ] Step B: command modules implemented + registered, REPL help in sync
- [ ] Smoke check passed (no protocol leaks), phase-state marked complete

Prerequisites (Hard Gate)

Do NOT start unless:

  • [ ] raw-traffic.json exists (with WRITE operations, or read-only GET-only traffic)
  • [ ] Auth state was captured during Phase 1 (if the site requires auth)

If raw-traffic.json is missing or has no WRITE operations, invoke the capture skill first. If Phase 1 state shows failed, follow skills/shared/RECOVERY.md §phase-state Check Failures before re-running.

Exception for read-only sites: If the site is genuinely read-only (search engine, dashboard, analytics viewer with no create/update/delete), the trace may contain only GET requests. In this case, note "read-only site — no write operations" in <APP>.md and proceed. The generated CLI will have read-only commands (list, get, search) but no create/update/delete commands. This is valid.

No-auth sites: If the target site requires no authentication (public API, no login needed), the "Auth state captured" prerequisite does not apply. Note "no-auth site" in <APP>.md and proceed.

Step A: Analyze (API Discovery)

Goal: Map raw traffic to a structured API model.

Process:

  1. Read traffic-analysis.json first (if it exists alongside raw-traffic.json).

This file is auto-generated by parse-trace.py or mitmproxy-capture.py → analyze-traffic.py and contains pre-detected protocol type, auth pattern, endpoint grouping, GraphQL operations, batchexecute RPC IDs, and suggested CLI commands. Use it as a starting point — verify its findings and fill in anything marked "unknown" by reading raw-traffic.json manually.

Enhanced analysis (present only when captured via mitmproxy): request_sequence (timeline-ordered requests with auth-flow detection), session_lifecycle (cookie inventory, auth-cookie identification, session pattern), and endpoint_sizes (response-size classification). If these are missing (has_timestamps: false), the capture came from the default trace path — rely on manual analysis for sequence/session detail.

If traffic-analysis.json doesn't exist, run the analyzer: ``bash python ${CLAUDE_PLUGIN_ROOT}/scripts/analyze-traffic.py \ <app>/traffic-capture/raw-traffic.json --summary ``

  1. Parse raw-traffic.json (for details the analyzer couldn't extract)
  2. Group requests by base path (e.g., /api/v1/boards/, /api/v1/items/)
  3. For each endpoint group, identify:
  4. HTTP method (GET/POST/PUT/DELETE/PATCH)
  5. URL pattern (extract path parameters like :id)
  6. Query parameters and their types
  7. Request body schema (JSON fields, types, required/optional)
  8. Response body schema
  9. Authentication method (Bearer token, cookie, API key)
  10. Rate limiting signals (429 responses, retry-after headers)
  1. Identify RPC protocol type -- classify the API transport:

| Protocol | Detection Signal | Client Pattern | |----------|-----------------|----------------| | REST | Resource URLs (/api/v1/boards/:id), standard HTTP methods | client.py with method-per-endpoint | | GraphQL | Single /graphql endpoint, query/mutation in body | client.py with query templates | | gRPC-Web | application/grpc-web content type, binary payloads | Proto-based client | | Google batchexecute | batchexecute in URL, f.req= body, )]}'\n prefix | rpc/ subpackage (see references/google-batchexecute.md) | | Custom RPC | Single endpoint, method name in body, proprietary encoding | Custom codec module | | Public REST API | Documented /api/ endpoints, OpenAPI spec, JSON responses | Standard client.py with httpx | | Plain HTML (no framework) | No SPA root, no framework globals, data in <table>/<div> | client.py with httpx + BeautifulSoup4 |

This determines client architecture in Step B -- REST uses simple client.py, non-REST protocols need a dedicated rpc/ subpackage with encoder/decoder/types.

  1. Detect data model:
  2. Entity types (boards, items, users, projects...)
  3. Relationships (board has many items, item belongs to board)
  4. ID formats (UUID, numeric, slug)
  1. Detect auth pattern:
  2. Cookie-based sessions
  3. Bearer/JWT tokens
  4. OAuth refresh flow
  5. API key headers
  6. Browser-delegated auth: tokens embedded in page JavaScript (e.g., WIZ_global_data),

not in HTTP headers. Requires CDP for initial cookies, HTTP for token extraction. See references/auth-strategies.md "Browser-Delegated Auth" section.

  • No auth / public access: fully public API, no login required. CLI may

optionally support API key auth for write operations (e.g., dev.to).

  1. Write <APP>.md -- software-specific SOP document
  1. Write agent-harness/api-spec.json -- the machine-readable API spec.

Every endpoint MUST carry an evidence field citing its captured traffic entry (raw-traffic.json#<index>) — never invent endpoints (this is the structural enforcement of the RPC-ID verification rule). Schema and validator:

``bash cli-web-devkit spec validate <app>/agent-harness/api-spec.json ``

Downstream consumers: client method implementation (Step B), the gap-analyzer (cli-web-devkit gaps), and the traffic-fidelity review in Phase 4 (spec-vs-traffic becomes a deterministic diff).

Output: <APP>.md (human SOP) + api-spec.json (machine spec, validated).

References: traffic-patterns.md, google-batchexecute.md, ssr-patterns.md

Step B: Implement (Code Generation)

Study Existing CLIs First (Critical for Accuracy)

Before implementing, read an existing CLI that uses the same protocol as your target. These are battle-tested implementations that solved the same problems you'll face.

| Protocol | Reference CLI | Key files to read | |----------|--------------|-------------------| | Google batchexecute | notebooklm/agent-harness/cli_web/notebooklm/ | core/rpc/encoder.py, core/rpc/decoder.py, core/client.py, core/auth.py | | GraphQL + WAF | booking/agent-harness/cli_web/booking/ | core/client.py (curl_cffi + GraphQL), core/auth.py (WAF tokens) | | HTML scraping | futbin/agent-harness/cli_web/futbin/ | core/client.py (httpx + BS4), commands/players.py | | Next.js RSC | producthunt/agent-harness/cli_web/producthunt/ | core/client.py (curl_cffi + __next_f flight parsing) | | REST API | unsplash/agent-harness/cli_web/unsplash/ | core/client.py, commands/photos.py | | Simple HTML | gh-trending/agent-harness/cli_web/gh_trending/ | Minimal structure example |

How to use reference CLIs:

  1. Read the reference CLI's core/client.py — understand the request/response pattern
  2. Read core/auth.py — copy the login_browser() pattern exactly for Google apps
  3. Read core/rpc/ (for batchexecute) — understand encoder/decoder, DO NOT reinvent
  4. Read commands/ — see how Click commands are structured, how --json works
  5. Read utils/helpers.py — see handle_errors(), _resolve_cli(), repl patterns

For batchexecute apps specifically, the notebooklm CLI is your bible:

  • Copy the enco
Compartilhar X LinkedIn