itamarzand88/cli-anything-web/boilerplate

Claude Code and agent skill by itamarzand88/cli-anything-web

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Documents the template inventory and variable contract behind scaffold-cli.py — which Jinja2 template renders with which variables for each site profile. Use during Phase 2 scaffolding when choosing scaffold flags or understanding what the generated boilerplate contains. The scaffold-cli.py script is the primary path.

Install

npx vskill@latest install itamarzand88/cli-anything-web/boilerplate

SKILL.md

Boilerplate Generator (Template-Driven)

Primary method: run the v2 scaffold script — it renders everything below
deterministically and writes a .manifest.json provenance file:
```bash
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]
```
Requires pip install jinja2 (TEMPLATE_VERSION 2.1.0). Each repeatable
--resource flag scaffolds a commands/<resource>.py module.
If the script is unavailable, do NOT render templates by hand from
memory — follow skills/shared/RECOVERY.md §scaffold-cli.py Unavailable
(adapt from the newest generated CLI, e.g., capitoltrades/agent-harness/).

All templates live in ${CLAUDE_PLUGIN_ROOT}/templates/*.tpl (Jinja2 syntax). Generated code must satisfy skills/shared/CONVENTIONS.md — the templates already encode those rules; never "simplify" them away.


Step 1: Collect Template Variables

VariableTypeSourceExample
app_namestrCLI name (cli-web-<app> → <app>)hackernews
APP_NAMEstrUPPER_SNAKE (hyphens → underscores first)HACKERNEWS
AppNamestrPascalCaseHackerNews
protocolenumtraffic-analysis.json: rest, graphql, html-scraping, batchexecuterest
http_clientenumprotection detection: httpx, curl_cffihttpx
auth_typeenumsite profile: none, cookie, api-key, google-ssocookie
resourceslist[str]<APP>.md endpoint groups (one --resource flag each)stories users
has_pollingboolasync/long-running operations existfalse
has_contextboolCLI needs use <id> / status contextfalse
has_partial_idsboolresource IDs support prefix matchingfalse

Casing is derived inside the templates via Jinja2 filters — you only supply --app-name.

Step 2: Template → Output Map

Template (templates/)OutputRendered when
exceptions.py.tplcore/exceptions.pyalways
client_rest_httpx.py.tplcore/client.pyhttp_client=httpx, non-batchexecute (GraphQL/HTML variants are {% if %} blocks inside)
client_rest_curl.py.tplcore/client.pyhttp_client=curl_cffi, non-batchexecute
client_batchexecute.py.tplcore/client.pyprotocol=batchexecute
auth.py.tpl (UNIFIED)core/auth.pyauth_type != none — google-sso specifics (cookie domain priority, regional forcing) are a {% if auth_type == "google_sso" %} block; there is no separate Google template
cli_entry.py.tpl<app>_cli.py (+ __main__.py)always — REPL default, UTF-8 fix, --json propagation
command_group.py.tplcommands/<resource>.pyonce per --resource flag — Click group skeleton wired to the client
helpers.py.tplutils/helpers.pyalways (handle_errors, print_json)
helpers_polling.py.tplappended to helpers--has-polling
helpers_context.py.tplappended to helpers--has-context
helpers_partial_ids.py.tplappended to helpers--has-partial-ids
output.py.tplutils/output.pyalways (json_success/json_error)
setup.py.tplsetup.pyalways — namespace packages, entry point, deps per http_client/protocol
conftest.py.tpltests/conftest.pyalways
test_e2e.py.tpltests/test_e2e.pyalways — _resolve_cli + TestCLISubprocess fixtures pre-wired
rpc_types.py.tpl, rpc_encoder.py.tpl, rpc_decoder.py.tplcore/rpc/protocol=batchexecute only
README.md.tplcli_web/<app>/README.md skeletonalways
SKILL.md.tplper-CLI skill skeletonalways (filled in during Phase 4)

Also produced by the script (not templates): __init__.py files, the vendored runtime adapters utils/repl_skin.py, utils/doctor.py, and utils/mcp_server.py (canonical source cli-web-core/cli_web_core/, synced by cli-web-devkit resync; the entry point registers doctor + mcp-serve from them), utils/config.py, and `.manifest.json` at the harness root recording template_version, profile (protocol/http_client/auth), resources, and generation timestamp — fleet tooling (cli-web-devkit drift) depends on it.

Step 3: Profile Recipes

Site profileFlags
No-auth + read-only (HN, gh-trending)--auth-type none — NO auth.py, NO session.py, NO auth commands (dead code is a checklist FAIL)
No-auth + CRUD (Dev.to)--auth-type api-key — minimal auth module, auth set-key
Cookie auth (reddit, linkedin)--auth-type cookie + --has-polling if generation ops exist
Google SSO + RPC (notebooklm, stitch)--auth-type google-sso --protocol batchexecute — renders rpc/ subpackage + Google block in auth.py
Anti-bot protected (Cloudflare/WAF)--http-client curl_cffi — see capture/references/protection-detection.md escalation ladder
Stateful apps (notebooks/projects)add --has-context; UUID-keyed resources add --has-partial-ids

Step 4: Post-Scaffold Checklist

  • [ ] .manifest.json exists at the harness root with template_version: 2.1.0
  • [ ] cli_web/ has NO __init__.py; cli_web/<app>/ HAS one
  • [ ] No unresolved Jinja2 markers ({{, {%) remain in any output file
  • [ ] FILL_IN_BASE_URL markers noted — replace during implementation
  • [ ] auth_type=none → no core/auth.py, no auth command group anywhere
  • [ ] protocol=batchexecute → core/rpc/ has types/encoder/decoder; otherwise core/rpc/ does NOT exist
  • [ ] One commands/<resource>.py exists per --resource flag, all registered on the CLI group
  • [ ] All files pass python -m py_compile

Then continue with methodology/SKILL.md Step B: fill in endpoint methods in client.py from <APP>.md, flesh out the scaffolded command modules, and keep _print_repl_help() in sync (CONVENTIONS.md §REPL Rules).

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
216
Repository forks
45
7-day trend score
27

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/itamarzand88/cli-anything-web/boilerplate/badge)](https://verified-skill.com/skills/itamarzand88/cli-anything-web/boilerplate)

Something wrong with this skill or its page? Tell us.