Skip to main content

shade-cli

O comando shade: cria, ensaia, testa e empacota robôs da ShadeOne escritos com o shade-sdk. Roda na máquina do dev, sem conta; nunca importa o runtime no próprio processo: o projeto roda em subprocesso, no venv dele (uv run na pasta), com o shade-sdk que ele fixa. Spec: docs/specs/sdk-python-cli-e-mcp.md (§6 e §8); ADR 019 (D3, D4, D11 e D15).

uv tool install shade-cli
shade init cadastro-erp          # starter de produção (--minimo para o enxuto)
cd cadastro-erp
uv run playwright install chromium
shade test                       # lint de contrato + pytest do projeto
shade run                        # ensaio: para antes de cada efetivar()
shade build                      # artefato determinístico em .shade/build/

Comandos

Comando Faz
shade init <pasta> [--minimo] [--modelo lista|tarefa] [--editor vscode] [--id ID] [--nome NOME] [--sem-sync] o starter (produção por padrão) e o uv sync; nunca pergunta
shade run [pasta] [--real [--sim]] [--entrada ARQ] [--item CHAVE] [--debug] [--trace] [--como-plataforma] [--headless] ensaio por padrão; --real pede TTY ou --sim
shade test [pasta] lint (L1 a L8) e o pytest do projeto
shade build [pasta] projeto.tar.gz (formato da HU-22.1) e manifesto.json em .shade/build/
shade doctor [pasta] Python, uv, Chromium do Playwright, Docker e o shade-sdk do projeto
shade docs [tópico] [--pasta P] a referência da versão do shade-sdk do projeto
shade inspecionar <url> [--pagina Nome] [--pasta P] abre a página no Chromium (contexto efêmero, rede só em [hosts] permitidos), grava o que você clica e preenche, e propõe Pagina com Alvos já conferidos pelo diagnóstico do SDK; Enter no terminal encerra (--headless varre a página sem janela)

Tudo o que a CLI escreve num projeto fica em .shade/ (que se ignora sozinho no git): o git status do projeto continua limpo depois de qualquer comando, menos o init.

--json e códigos de saída

Com --json, um documento no stdout; progresso e logs no stderr, redigidos:

{"versao": 1, "comando": "build", "ok": false, "dados": {},
 "erro": {"codigo": "lint_reprovado", "mensagem": "L3 robo.py:1 import fora do lock: yaml",
          "recuperacao": "corrija o que o lint aponta (shade test mostra a lista inteira)"}}
Código Significado
0 ok
1 gate, lint ou teste reprovou (e o defeito da própria CLI, com erro.codigo = "erro_interno")
2 uso inválido ou shade.toml inválido
5 incompatibilidade de versão (o shade-sdk do projeto não é o da imagem)
130 interrompido (Ctrl-C, SIGTERM ou SIGHUP: o robô em andamento morre junto)

Os códigos 3, 4, 6 e 7 são dos comandos com conta (deploy, releases, runs).

Lint de contrato

Regra Efeito O quê
L3 reprova import de pacote fora do lock da imagem e dos plugins aprovados
L7 reprova (avisa no run) credencial lida sem declaração, ou o valor dela chegando a goto, ao HTTP do Playwright, a shade_sdk.http ou a arquivo
L8 reprova entrada ausente ou inválida (main.py, [robo] classe, arquivo que não compila)
L1 avisa subprocess, os.system, os.exec*, os.fork, ctypes, multiprocessing
L2 avisa socket, http.client, urllib.request, requests, httpx, aiohttp
L4 avisa eval, exec, compile, import dinâmico
L5 avisa caminho literal fora do workdir
L6 avisa clique ou envio em alvo com cara de submissão fora de efetivar()

O lint não é controle de segurança (ADR 019, D3): a fronteira é o isolamento do executor.

Desenvolvimento

cd cli && uv sync
uv run pytest -q -m "not starter"   # rápido
uv run pytest -q -m starter         # os starters de verdade: uv sync, Chromium, ~45 s

src/shade_cli/imagem.py é a cópia do requirements.lock da imagem do run: backend/tests/test_hu294_artefato_da_cli.py a confere, e confere que o artefato do shade build passa no ler() do backend.

Metadata

Release files for shade-cli 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for shade-cli 0.1.3
File Interpreter ABI Platform
shade_cli-0.1.3-py3-none-any.whl Python 3 none any Details

Release files / shade_cli-0.1.3-py3-none-any.whl

Download URL shade_cli-0.1.3-py3-none-any.whl
Size 105.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
83d36b3ae2f17c26431713d8bd272a750d0816e776aabcc9db0e534ed70438f0
BLAKE2b-256 checksum
How to use checksums
4bd3f94dd5501b708af56abddc1dec69870adbb25c4323b57f93c58c15acf63e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Security for shade-cli 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page