Setup
Skill pedroberaldo87/pedro-plugins/plugins/bootstrap/skills/setup
Setup de máquina nova em um passo — instala, a partir do manifest, os marketplaces de terceiros e os plugins do próprio marketplace pedro-plugins (dois deles desligados de fábrica), depois aplica a config global versionada (env vars, permissões, flags, CLAUDE.md global, output style, statusLine resolvido pra máquina) e confere a conformidade. Rode 1× por máquina depois de instalar o plugin bootstrap. Não gerencia secrets.From its SKILL.md
npx -y skills add pedroberaldo87/pedro-plugins --skill setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.3 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it
Bootstrap Setup
Você está trazendo uma máquina pro baseline de Claude Code deste marketplace. Este plugin tem duas camadas:
- Sync de plugins (automático, via hooks) —
config/manifest.jsoné a fonte da verdade dos marketplaces de terceiros e dos plugins do própriopedro-plugins(dois deles,graphify-guardeintent-guard, declarados desligados); os hooks SessionStart/PostToolUse convergem o estado local pra ele (pull → apply → snapshot → push). Você não dispara isso à mão; roda sozinho. - Camada de config (sob demanda — esta skill) — aplica a config global versionada que um plugin não consegue carregar sozinho: env vars, permissões, flags de comportamento, o
CLAUDE.mdglobal, ooutputStylee umstatusLineresolvido pros paths DESTA máquina. - Contrato de forma (passivo) — o plugin distribui o output style Clean Style (
output-styles/clean-style.md) e o Stop hookstop-prose-ceiling.py. Os dois nascem ligados: o style porforce-for-plugin: true, o hook por estar emhooks/hooks.json.
Este setup roda a camada de config (e cutuca o sync de plugins uma vez pra máquina ficar 100% provisionada). É idempotente e nunca toca em settings.local.json (que pode guardar secrets).
Pré-requisitos
command -v jq >/dev/null || { echo "jq necessário — instale (brew install jq) e rode de novo"; exit 1; }
command -v claude >/dev/null || { echo "CLI claude necessária"; exit 1; }
${CLAUDE_PLUGIN_ROOT} é o dir do plugin bootstrap instalado. Resolva a partir do contexto da skill.
Passos
1. Instalar marketplaces + plugins do manifest (terceiros e os do próprio repo)
bash "${CLAUDE_PLUGIN_ROOT}/hooks/lib/apply.sh"
Isso adiciona cada marketplace de config/manifest.json e instala os plugins que ele lista — os de terceiros e os do próprio pedro-plugins —, deixando cada um ligado ou desligado conforme o enabled do manifest. É seguro re-rodar: converge, e marketplace que o manifest não declara nunca é tocado.
Desinstalar é opt-in. Plugin que está num marketplace gerenciado mas não aparece no manifest só é removido quando o ambiente tem BOOTSTRAP_UNINSTALL_UNMANAGED=1 (e aí com --keep-data). Sem a variável o script apenas LISTA o que seria removido e não mexe em nada. Plugin do pedro-plugins fica fora dessa varredura em qualquer caso.
Cheque o exit code — diferente de zero significa que alguma operação falhou; investigue antes de confiar no estado.
2. Conferir a conformidade
python3 "${CLAUDE_PLUGIN_ROOT}/lib/conformance.py"
Compara o estado VIVO da máquina contra o contrato versionado e não escreve nada —
decisão registrada em 2026-07-30: "Mostra o desvio, você decide." Sai 0 quando está
tudo conforme, 1 quando há desvio. Nunca bloqueia.
O que ele confere:
- plugins —
enabledPluginsdosettings.jsoncontra omanifest.json. Pega o caso em que alguém religou na mão um plugin que o manifest manda desligar. - CLAUDE.md — se a cópia da máquina divergiu do
CLAUDE-global.md. Mostra o que só existe de cada lado e não prescreve direção: o sync só anda repo → máquina, então regra escrita direto na máquina some no próximoapply-config.sh. - teto de tamanho — mais de uma regra numérica de linhas no CLAUDE.md. Foi a causa-raiz da verbosidade: três tetos válidos ao mesmo tempo, e o mais permissivo vence.
- output style —
output-styles/clean-style.mdpresente, comforce-for-plugin: trueekeep-coding-instructions: true, e o pluginbootstraphabilitado (sem ele o estilo não carrega). - skills — o que está em
~/.claude/skillscontraskills.permitidasdo manifest. Acusa skill que apareceu sem ser declarada. - hooks — ferramenta com
PreToolUsede mais de um plugin habilitado. Compara por ferramenta, não pela string do matcher (Grep|Glob|BasheGrep|Glob|Bash|Agentcolidem em três ferramentas e a comparação textual não veria). - dependência externa — plugin habilitado cujo binário exigido não está na
máquina (ex:
graphify-guardsem o comandographify). Só cobra quando o plugin que precisa está LIGADO — quem não usa não é incomodado. - gates meio-ligados — arquivo
.modemarcadooffcom o plugin dele ainda habilitado. Faz parecer que existe trava onde não existe.
Reporte os desvios ao usuário em linguagem humana e espere a decisão dele — este passo nunca conserta sozinho.
3. Aplicar a camada de config global
⚠️ A cópia do CLAUDE.md é de mão única, repo → máquina. O snapshot.sh regenera o
manifest mas não traz o CLAUDE.md de volta. Regra escrita direto em ~/.claude/CLAUDE.md
some aqui — foi o que quase custou 4 regras em 2026-07-30. O conformance.py (passo 2)
roda ANTES deste passo: ele mostra o que só existe de cada lado, sem prescrever direção.
bash "${CLAUDE_PLUGIN_ROOT}/hooks/lib/apply-config.sh"
Isso faz merge de config/settings-defaults.json em ~/.claude/settings.json:
- env — seta
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS,CLAUDE_CONTEXT_THRESHOLD,CLAUDE_STATUSLINE_FORWARD(os defaults vencem). - permissions — UNIÃO do allow/deny existente da máquina com os defaults versionados (a máquina mantém os seus, ganha os compartilhados). O
defaultModenão vem nos defaults: o modo de aprovação continua o que já estava nesta máquina, e o setup nunca liga aprovação automática. - flags —
language,theme,autoCompactEnabled,outputStyle(fixa"Clean Style"; sem isso o teto de prosa não entra no prompt de sistema e só o Stop hook barra, depois do fato). - statusLine — resolvido pro writer do
context-guardinstalado NESTA máquina (glob em runtime, sobrevive a bumps de versão). Exigecontext-guardinstalado — ele é uma das entradas do marketplacepedro-pluginsno manifest, então o passo 1 instala. Se mesmo assim não achar, o script avisa e deixa ostatusLinecomo está. - CLAUDE.md — copia
config/CLAUDE-global.mdpra~/.claude/CLAUDE.md(com backup).
Faz backup do settings.json antes e não toca em settings.local.json.
4. Ferramentas externas dos plugins
Alguns plugins deste marketplace dependem de binário que o marketplace não instala.
O passo 2 já acusa (área dependencia) quando o plugin está ligado e o comando falta.
Hoje há um: graphify (pacote graphifyy, MIT), exigido pelo graphify-guard.
command -v graphify >/dev/null || echo "uv tool install graphifyy # ou: pipx install graphifyy"
Sem ele o graphify-guard fica decorativo: ele procura graphify-out/graph.json pra
redirecionar busca cega, e nada na máquina cria esse diretório. O guarda existe, não
reclama, e não protege — o mesmo tipo de estado meio-ligado que o passo 2 caça.
Não instale por conta própria. Ofereça o comando ao usuário e explique o que ele
destrava; quem decide o que entra na máquina é ele. Se ele não usa grafo, o caminho certo
é desligar o graphify-guard no manifest, não instalar o binário.
5. Recarregar
# Diga ao usuário pra rodar /reload-plugins (ou reiniciar o Claude Code) pra os hooks
# dos novos plugins carregarem e o settings mergeado entrar em vigor.
6. Reportar — e sinalizar o que o setup NÃO faz
Diga ao usuário, em linguagem clara:
- Quais marketplaces/plugins foram instalados e se algo falhou.
- Que o settings.json foi mergeado (env, permissões, flags, statusLine, CLAUDE.md) com backup feito.
- Secrets NÃO são gerenciados. Qualquer coisa máquina-específica ou secreta (passphrases de SSH, API keys, paths locais da máquina) vive em
settings.local.jsone tem que ser configurada à mão em cada máquina — ex: carregar a chave SSH nossh-agent/Keychain (ssh-add --apple-use-keychain ~/.ssh/<key>) em vez de pôr uma passphrase na config.
Atualizando a config versionada (a partir da máquina-fonte)
Quando o usuário muda as permissões / env / CLAUDE.md global da máquina-fonte e quer propagar, re-snapshote os defaults pro repo:
# Regenera settings-defaults.json a partir do settings atual (descarta qualquer secret).
# defaultMode fica DE FORA de propósito: modo de aprovação é escolha de cada máquina,
# não contrato versionado.
jq '{
env: .env,
permissions: {
allow: [.permissions.allow[] | select(test("SSH_PASSPHRASE|PASSPHRASE";"i") | not)],
deny: .permissions.deny
},
language: .language, theme: .theme, autoCompactEnabled: .autoCompactEnabled,
outputStyle: .outputStyle
}' "$HOME/.claude/settings.json" > "$PEDRO_PLUGINS_REPO/plugins/bootstrap/config/settings-defaults.json"
cp "$HOME/.claude/CLAUDE.md" "$PEDRO_PLUGINS_REPO/plugins/bootstrap/config/CLAUDE-global.md"
Depois bumpe o plugin.json, faça commit e push — as outras máquinas pegam no próximo /bootstrap:setup.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most project setup skills give in ~2.6k tokens
Counted across 999 of the 1,637 authors here whose files we hold, read 2026-08-07
- Ask one question at a timein 29 of 999, across 28 files
- Detect the package manager from lockfilesin 28 of 999, across 9 files
- Present findings to the userin 26 of 999, across 5 files
- Explore current repo statein 24 of 999, across 3 files
- Update the agent skills block in place if it existsin 24 of 999, across 3 files
- Install husky lint-staged and prettierin 23 of 999, across 4 files
- Create the lintstagedrc filein 22 of 999, across 3 files
- Commit all changed filesin 22 of 999, across 3 files
- Run lint-staged to verify it worksin 22 of 999, across 3 files
- Create the husky pre-commit filein 21 of 999, across 2 files
- Create a prettierrc file if missingin 21 of 999, across 2 files
- Initialize huskyin 21 of 999, across 2 files
Said here and by no other author read
- resolve the bootstrap plugin directory from skill context
- install marketplaces and plugins from the manifest
- check the apply script exit code before proceeding
- run the conformance checker
- report conformance deviations in human language
- wait for the user decision on conformance deviations
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.