Land TS Mono
UKGovernmentBEIS/inspect_ai
Land a PR that requires a coordinated ts-mono submodule change.
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…
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodology --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .claude/skills/methodology && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .claude/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodologyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodology --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .agents/skills/methodology && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .agents/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodology --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .cursor/skills/methodology && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .cursor/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ItamarZand88/CLI-Anything-WEB.git --path cli-anything-web-plugin/skills/methodology--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodology --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .gemini/skills/methodology && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .gemini/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodologyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .github/skills/methodology && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .github/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ItamarZand88/CLI-Anything-WEB methodology --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItamarZand88/CLI-Anything-WEB.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-anything-web-plugin/skills/methodology .opencode/skills/methodology && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "methodology" agent skill from https://github.com/ItamarZand88/CLI-Anything-WEB/tree/main/cli-anything-web-plugin/skills/methodology into .opencode/skills/methodology/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "methodology", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
methodologyAnalyzes 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…
Methodology is an agent skill from ItamarZand88/CLI-Anything-WEB. 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.
Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including reference files (for example `references/auth-strategies.md`, `references/client-architecture-example.py` and `references/exception-hierarchy-example.py`).
It sits in Backend & APIs, covering OpenAPI specifications. It works with Python. The repository describes itself as: Claude Code plugin that generates production-grade Python CLIs for any web app. 20 CLIs and counting. The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 931e201. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonpipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Methodology loads about 5.8k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 83 tokens; SKILL.md has 2,288 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ItamarZand88/CLI-Anything-WEB at commit 931e201, republished under its MIT licence (© ItamarZand88). 2,288 words, ~5,800 tokens.
.claude/skills/methodology/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.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 completeDo NOT start unless:
raw-traffic.json exists (with WRITE operations, or read-only GET-only traffic)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.
Goal: Map raw traffic to a structured API model.
Process:
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:
python ${CLAUDE_PLUGIN_ROOT}/scripts/analyze-traffic.py \
<app>/traffic-capture/raw-traffic.json --summaryParse raw-traffic.json (for details the analyzer couldn't extract)
Group requests by base path (e.g., /api/v1/boards/, /api/v1/items/)
For each endpoint group, identify:
:id)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.
Detect data model:
Detect auth pattern:
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.Write <APP>.md -- software-specific SOP document
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:
cli-web-devkit spec validate <app>/agent-harness/api-spec.jsonDownstream 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
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:
core/client.py — understand the request/response patterncore/auth.py — copy the login_browser() pattern exactly for Google appscore/rpc/ (for batchexecute) — understand encoder/decoder, DO NOT reinventcommands/ — see how Click commands are structured, how --json worksutils/helpers.py — see handle_errors(), _resolve_cli(), repl patternsFor batchexecute apps specifically, the notebooklm CLI is your bible:
The agent implementing the CLI MUST read these files before writing code. Use the
Agent tool to dispatch a research agent that reads
the reference implementation while you design the command structure.
Before writing any code, note the command structure in <APP>.md (10 minutes max):
/api/v1/boards/* → boards command group/api/v1/items/* → items command grouplist, GET single → get,
POST → create, PUT/PATCH → update, DELETE → delete)auth login, auth status, auth refresh; credentials at
~/.config/cli-web-<app>/auth.jsonrepl_skin.pyGoal: Generate the complete Python CLI package.
See HARNESS.md "Generated CLI Structure" for the complete package template.
Key points: cli_web/ namespace (NO __init__.py), <app>/ sub-package (HAS __init__.py),
core/, commands/, utils/, tests/ directories.
Run the scaffold generator script (v2 — Jinja2 templates, requires
pip install jinja2) to create all boilerplate files:
python ${CLAUDE_PLUGIN_ROOT}/scripts/scaffold-cli.py <app>/agent-harness \
--app-name <app> \
--protocol <rest|graphql|html-scraping|batchexecute> \
--http-client <httpx|curl_cffi> \
--auth-type <none|cookie|api-key|google-sso> \
--resource <name> [--resource <name> ...] \
[--has-polling] [--has-context] [--has-partial-ids]This renders exceptions.py, client.py skeleton, the unified auth.py (google-sso
handled via a template conditional), helpers.py, config.py, output.py, the CLI
entry point with REPL, one commands/<resource>.py per --resource flag,
setup.py, conftest.py, test_e2e.py skeleton, README/SKILL skeletons,
repl_skin.py, and (for batchexecute) the rpc/ subpackage. It also writes
.manifest.json (template version + profile) at the harness root — keep it;
fleet tooling depends on it. See skills/boilerplate/SKILL.md for the
template → output map and per-profile flag recipes.
Fallback: If the script is unavailable, follow
skills/shared/RECOVERY.md§scaffold-cli.py Unavailable — adapt from the newest generated CLI (e.g.,capitoltrades/agent-harness/), do NOT reconstruct boilerplate from memory.
After scaffolding, review the generated files and customize client.py with actual
endpoint methods from <APP>.md.
All rules below are DEFINED in skills/shared/CONVENTIONS.md — this section
tells you when to apply them during implementation.
exceptions.py -- implement first. Required hierarchy and error-code mapping: CONVENTIONS.md §Exception Hierarchy. Complete code: references/exception-hierarchy-example.py.
client.py -- HTTP client with exception mapping and auth retry:
httpx (default) — for most sites (REST, GraphQL, batchexecute)curl_cffi — for Cloudflare-protected sites. Uses Chrome TLS fingerprint
impersonation to bypass bot detection without cookies or auth:from curl_cffi import requests as curl_requests
resp = curl_requests.get(url, impersonate="chrome")curl_cffi when Phase 1 detects Cloudflare (cf-ray header, challenge page).
Add curl_cffi, beautifulsoup4 to setup.py instead of httpx.AuthError, 404→NotFoundError, 429→RateLimitError, 5xx→ServerError (CONVENTIONS.md §Exception Hierarchy)auth.json → headless refresh, never more. The full table is CONVENTIONS.md §Auth Rules; the templates generate it by default.references/polling-backoff-example.py)client.notebooks.list(), client.sources.add())references/client-architecture-example.py for the full patternauth.py -- handles token storage, refresh, expiry. Implementation depends on auth type:
For no-auth sites: DO NOT create auth.py, session.py, or auth command groups.
These files are dead code for public APIs and confuse users. The CLI should have
NO auth-related files or commands. The only exception is if the site has optional
auth (e.g., API key for write operations) — in that case, implement a minimal
auth module.
For browser-delegated auth (Google, Microsoft, etc.): Python
sync_playwright() login flow with cookie domain priority for international
users (CONVENTIONS.md §Auth Rules).
Storage, env var, cookie priority, and dual-format handling are defined in
CONVENTIONS.md §Auth Rules; implementation code for each pattern is in
references/auth-strategies.md (read section-addressed).
Anti-bot resilient client construction (when detected in Phase 2):
bl), session IDs (f.sid), or CSRF tokens -- extract dynamically at runtimex-same-domain: 1 for Google apps)references/google-batchexecute.md for the complete Google patternRPC codec subpackage (for non-REST protocols like batchexecute):
When the API uses a non-REST protocol, add core/rpc/ with:
types.py -- method ID enum, URL constantsencoder.py -- request encoding (protocol-specific format)decoder.py -- response decoding (strip prefix, parse chunks, extract results)
The client.py still exists but delegates encoding/decoding to rpc/.Progress feedback -- Use rich>=13.0 spinners for operations >2s (suppress in --json mode). See references/rich-output-example.py.
JSON error output -- --json mode errors are JSON too, not plain text (CONVENTIONS.md §JSON Envelope). Implement via utils/output.py json_error().
All commands use handle_errors(json_mode) context manager — centralizes error handling, exit codes (1=user, 2=system, 130=interrupt), and JSON errors. See references/helpers-module-example.py.
Generation commands support --wait, --retry N, --output path — CONVENTIONS.md §Exponential Backoff & Polling; code in references/polling-backoff-example.py.
Windows UTF-8 fix — at the top of <app>_cli.py, reconfigure BOTH stdout AND stderr to UTF-8 before any import that prints (CONVENTIONS.md §Windows UTF-8 Fix has the exact snippet).
HTML table parsers MUST extract ALL visible columns — not just name/price,
because missing fields in --json output make the CLI useless for filtering and analysis.
If the site shows version, club, nation, stats, skills, weak foot — parse all of them.
Empty fields in --json output = incomplete parser.
Entry point: cli-web-<app> via setup.py console_scripts (CONVENTIONS.md §Naming Conventions)
Namespace: cli_web.*
utils/repl_skin.py, utils/doctor.py, and utils/mcp_server.py are all
vendored by scaffold-cli.py (canonical source: cli-web-core/cli_web_core/,
synced via cli-web-devkit resync) — never hand-edit the per-CLI copies.
The entry point registers the fleet-standard doctor and mcp-serve
commands from the vendored adapters (register_doctor_command(cli, ...),
register_mcp_command(cli, ...)); both derive from the Click tree, so no
per-command wiring is needed.
utils/helpers.py -- shared CLI helpers (generate for every CLI):
resolve_partial_id(partial, items) — prefix-match UUIDs for get/rename/deletehandle_errors(json_mode) — context manager replacing try/except in all commandsrequire_notebook(notebook_arg) — gets notebook ID from arg or persistent contextsanitize_filename(name) — safe filenames from artifact titlespoll_until_complete(check_fn) — exponential backoff pollingget_context_value(key) / set_context_value(key, value) — persistent context.json
See references/helpers-module-example.py for the complete module.Not all helpers apply to every CLI. Include only what the CLI uses:
handle_errorsandprint_jsonare always needed.resolve_partial_idonly for UUID-based apps.require_notebook/context helpers only for apps with persistent context.poll_until_completeonly for generation/async operations.
The four REPL rules are defined with code examples in
CONVENTIONS.md §REPL Rules — apply them as you wire up <app>_cli.py:
shlex.split(line), never line.split().--json by PREPENDING it to the args list passed to
cli.main(args=..., standalone_mode=False) — never **ctx.params._print_repl_help() in the same commit.@click.argument positionals, not
@click.option(..., required=True).These bugs appear in almost every generated REPL — read the §REPL Rules section before writing the entry point, not after the REPL breaks.
When the CLI has 3+ command groups (e.g., notebooks, sources, chat, artifacts), dispatch parallel subagents -- one per command module. Each agent gets:
<APP>.md API spec for its resourceclient.py and auth.py interfaces it depends oncommands/notebooks.py with list, get, create, delete"Parallelization opportunities:
| Independent from each other | Dispatch in parallel |
|---|---|
commands/notebooks.py, commands/sources.py, commands/chat.py | Yes -- each command file only depends on client.py |
rpc/encoder.py and rpc/decoder.py | Yes -- encoder doesn't depend on decoder |
auth.py and models.py | Yes -- no shared logic |
client.py and commands/* | No -- commands depend on client |
<app>_cli.py (entry point) | Last -- imports all commands, write after they're done |
Implementation order (with maximum parallelism):
Phase A (sequential): Write core foundation
exceptions.py → client.py → auth.py (if needed) → models.py
Phase B (parallel): Dispatch ALL independent work simultaneously
┌─ Agent 1: commands/notebooks.py
├─ Agent 2: commands/sources.py
├─ Agent 3: commands/chat.py
├─ Agent 4: commands/artifacts.py
├─ Agent 5: rpc/encoder.py + rpc/decoder.py (if non-REST)
└─ Agent 6 (background): test_core.py (unit tests for core modules)
All run concurrently — each only depends on Phase A modules
Phase C (sequential): Wire everything together
utils/helpers.py → <app>_cli.py → __main__.py → setup.py
(repl_skin.py, doctor.py, mcp_server.py were already vendored by
scaffold-cli.py in Step B.0; the entry point registers doctor + mcp-serve)Key parallelism rules:
commands/*.py file)<app>_cli.py, setup.py) must come last (depends on all commands)Before invoking testing, install (pip install -e .) and verify:
cli-web-<app> --help loadscli-web-<app> auth status --json shows valid (if auth-required)cli-web-<app> <resource> list --json returns real dataRed flags — fix before testing: the full table is CONVENTIONS.md
§Protocol-Leak Smoke Check (wrb.fr/af.httprm leaks, empty []/null,
parser index mismatches). One methodology-specific case: a null WRITE response
may mean the operation is client-side — see references/google-batchexecute.md
"Client-Side Operations".
Update phase state:
python ${CLAUDE_PLUGIN_ROOT}/scripts/phase-state.py complete <app> \
--phase methodology --output <app>/agent-harness/When implementation is complete and the smoke check passes, invoke the testing
skill to plan and write tests.
Do NOT skip testing -- every CLI must have comprehensive tests before publishing.
| Skill | When it activates |
|---|---|
capture | Phase 1 -- traffic recording (prerequisite for this skill) |
testing | Phase 3 -- test writing, documentation |
standards | Phase 4 -- publish, verify, smoke test |
| Relationship | Skill |
|---|---|
| Preceded by | capture (Phase 1) |
| Followed by | testing (Phase 3) |
| References | skills/shared/CONVENTIONS.md (all rules), skills/shared/RECOVERY.md (gate failures), traffic-patterns.md, auth-strategies.md, google-batchexecute.md, ssr-patterns.md, exception-hierarchy-example.py, client-architecture-example.py, polling-backoff-example.py, rich-output-example.py |
references/traffic-patterns.md -- Common API patterns (REST, GraphQL, RPC)references/auth-strategies.md -- Auth implementation strategiesreferences/google-batchexecute.md -- Google batchexecute RPC protocol specreferences/ssr-patterns.md -- SSR framework patterns and data extraction strategiesreferences/exception-hierarchy-example.py -- Complete exception hierarchy with HTTP status mappingreferences/client-architecture-example.py -- Namespaced sub-client pattern with auth retryreferences/polling-backoff-example.py -- Exponential backoff polling and rate-limit retryreferences/rich-output-example.py -- Rich progress bars, JSON error responses, table formatting© ItamarZand88, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (references) in cli-anything-web-plugin/skills/methodology of ItamarZand88/CLI-Anything-WEB.
Open the folder on GitHubat commit 931e201
Methodology next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Methodology this skillItamarZand88/CLI-Anything-WEB | 231 | — | ~5.8k | Automated safety check: Pass | MIT | |
| Land TS MonoUKGovernmentBEIS/inspect_ai | 3k | — | ~3k | Automated safety check: Pass | MIT | |
| Assisted Service Dev Modeopenshift/assisted-service | 138 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Kingdee MCP DevWaHaiLong/KingdeeMCP | 105 | — | ~853 | Automated safety check: Pass | MIT | |
| API Documenteralirezarezvani/claude-code-tresor | 777 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Houndarr Architectureav1155/houndarr | 292 | — | ~2k | Automated safety check: Pass | AGPL-3.0 |
UKGovernmentBEIS/inspect_ai
Land a PR that requires a coordinated ts-mono submodule change.
openshift/assisted-service
Build and code-generate assisted-service using skipper with podman.
WaHaiLong/KingdeeMCP
Knowledge base for the Kingdee MCP Dev Squad. An agent skill from WaHaiLong/KingdeeMCP.
alirezarezvani/claude-code-tresor
Auto-generate API documentation from code and comments. An agent skill from alirezarezvani/claude-code-tresor.
av1155/houndarr
Houndarr's source layout and architectural patterns at file granularity.
NethServer/nethsecurity
Write or modify a NethSecurity Python RPCD API script or hook.
ItamarZand88/CLI-Anything-WEB
Runs Phase 4 review/publish/verify for a cli-web- CLI: implementation review by 3 parallel agents, the tiered quality checklist (Tier 1 critical fail-fast, then comprehensive), pip install + smoke…
ItamarZand88/CLI-Anything-WEB
Searches Airbnb from the terminal via cli-web-airbnb — find stays by location, dates, and filters; get listing details, guest reviews, and availability calendars; autocomplete location names.
ItamarZand88/CLI-Anything-WEB
Searches Amazon from the terminal via cli-web-amazon — product search, product details by ASIN, Best Sellers by category, and autocomplete suggestions.
ItamarZand88/CLI-Anything-WEB
Searches Booking.com from the terminal via cli-web-booking — find hotels, apartments, and hostels by destination, dates, and guests; get property details by slug; resolve destination names to IDs.
ItamarZand88/CLI-Anything-WEB
Use cli-web-booking to search Booking.com for hotels, apartments, hostels, and accommodations by destination, dates, and filters.
ItamarZand88/CLI-Anything-WEB
Queries US congressional stock trades (STOCK Act disclosures) on capitoltrades.com via the cli-web-capitoltrades command-line tool — trades with rich filters, politician profiles and leaderboards…
Works with
Categories
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…. Methodology is an agent skill from ItamarZand88/CLI-Anything-WEB.json, scaffold from templates, and implement endpoint methods and Click command groups.
Methodology fits situations like: tasks that involve OpenAPI specifications.
Run `npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a claude-code`. Or copy the skill folder (cli-anything-web-plugin/skills/methodology in ItamarZand88/CLI-Anything-WEB) into .claude/skills/methodology in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a codex`. Or copy the skill folder (cli-anything-web-plugin/skills/methodology in ItamarZand88/CLI-Anything-WEB) into .agents/skills/methodology in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ItamarZand88/CLI-Anything-WEB --skill methodology -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/methodology, .gemini/skills/methodology, .github/skills/methodology and .opencode/skills/methodology in your project.
Going by SKILL.md and its folder, Methodology needs Python for the scripts in its folder and the command-line tools its instructions call (python and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Methodology is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Methodology: Land TS Mono (UKGovernmentBEIS/inspect_ai, 3k stars), Assisted Service Dev Mode (openshift/assisted-service, 138 stars), Kingdee MCP Dev (WaHaiLong/KingdeeMCP, 105 stars) and API Documenter (alirezarezvani/claude-code-tresor, 777 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ItamarZand88 (a GitHub user) maintains it in ItamarZand88/CLI-Anything-WEB, which has 231 GitHub stars. The repository holds 42 skills in this directory. The repository was last updated on October 1, 2026.
Source: ItamarZand88/CLI-Anything-WEB on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.