From forge
Configura canais Forge — cria canais com token do BotFather e instala o launcher `forge` no shell. Use quando o usuário colar um token, pedir para configurar o Forge, listar canais existentes, ou verificar o status de um canal.
npx claudepluginhub guilhermevang/forge-plugin --plugin forgeThis skill is limited to using the following tools:
Cada canal Forge é um bot Telegram independente com seu próprio token. Tokens e estado ficam em `~/.claude/channels/<nome>/`. O canal ativo em uma sessão é sempre informado explicitamente via `forge <nome>` (que seta `FORGE_CHANNEL=<nome>`). **Nada é gravado dentro de projetos** — nenhum marcador, nenhum arquivo em `./.claude/`.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
Cada canal Forge é um bot Telegram independente com seu próprio token. Tokens e estado ficam em ~/.claude/channels/<nome>/. O canal ativo em uma sessão é sempre informado explicitamente via forge <nome> (que seta FORGE_CHANNEL=<nome>). Nada é gravado dentro de projetos — nenhum marcador, nenhum arquivo em ./.claude/.
O servidor MCP é declarado pelo próprio plugin (em .mcp.json), portanto esta skill não usa claude mcp add.
Argumentos recebidos: $ARGUMENTS
Parse $ARGUMENTS (trim whitespace).
~/.claude/channels/ (crie se não existir). Cada subdiretório é um canal..env (token, mascarado nos primeiros 10 chars) e access.json (política + contagem de permitidos)."Nenhum canal configurado. Execute
/forge:configure <nome> <token>para criar o primeiro."
/forge:voice.<nome> <token> — criar/atualizar canal e instalar launcher<nome> é o identificador do canal (ex: backend, dropflux-frontend, mobile). Valide: só [a-zA-Z0-9_-], rejeite se tiver /, .., espaço.
<token> é o token do BotFather (formato 123456789:AAH...).
Valide <nome> (regex ^[a-zA-Z0-9_-]+$). Se inválido, explique e pare.
Valide que <token> contém :. Se não, avise e pare.
mkdir -p ~/.claude/channels/<nome>
Leia ~/.claude/channels/<nome>/.env se houver; atualize/adicione a linha FORGE_BOT_TOKEN=<token>, preservando outras chaves. Escreva sem aspas.
chmod 600 ~/.claude/channels/<nome>/.env
Registre as ferramentas do Forge no allowlist do Claude Code (~/.claude/settings.json). Sem isso, cada chamada a forge_reply, forge_react, etc. abre um prompt de permissão que trava a entrega ao Telegram.
~/.claude/settings.json se não existir (conteúdo inicial: {}).permissions.allow seja um array. Adicione ao array (se ainda não presentes — idempotente) as 4 entradas:
mcp__forge__forge_replymcp__forge__forge_reactmcp__forge__forge_edit_messagemcp__forge__forge_download_attachmentJSON.stringify(obj, null, 2).Instale a função forge no shell do usuário (idempotente — atualiza se marcador antigo existir). Detecte o SO e trate conforme:
Linux / macOS (bash, zsh):
~/.bashrc, ~/.bash_profile, ~/.zshrc. No macOS o shell default é zsh desde Catalina, mas mantenha ambos se existirem. Se nenhum existir, crie ~/.bashrc no Linux e ~/.zshrc no macOS.# >>> forge launcher v2 >>>, pule (já atualizado).# >>> forge launcher >>> (sem v2), remova o bloco inteiro entre # >>> forge launcher >>> e # <<< forge launcher <<< e siga para o append abaixo.# >>> forge launcher v2 >>>
# Lança o Claude Code com o plugin Forge habilitado no canal informado.
# Lê ~/.claude/channels/<canal>/mode ("edit" => bypassPermissions).
# Uso: forge <canal> [args extras para claude]
forge() {
if [ -z "$1" ] || [ "${1#-}" != "$1" ]; then
echo "uso: forge <canal> [args extras]" >&2
return 1
fi
local _forge_ch="$1"; shift
local _forge_mode_file="$HOME/.claude/channels/$_forge_ch/mode"
local _forge_mode=""
if [ -r "$_forge_mode_file" ]; then
_forge_mode=$(tr -d '[:space:]' < "$_forge_mode_file")
fi
if [ "$_forge_mode" = "edit" ]; then
FORGE_CHANNEL="$_forge_ch" command claude --dangerously-load-development-channels plugin:forge@forge --permission-mode bypassPermissions "$@"
else
FORGE_CHANNEL="$_forge_ch" command claude --dangerously-load-development-channels plugin:forge@forge "$@"
fi
}
# <<< forge launcher <<<
source ~/.bashrc (ou ~/.zshrc) ou reabra o terminal."Windows (PowerShell):
pwsh -NoProfile -Command '$PROFILE.CurrentUserAllHosts' (ou powershell no Windows PowerShell 5.1). Se o diretório não existir, crie-o.# >>> forge launcher v2 >>>, pule.# >>> forge launcher >>> (sem v2), remova o bloco entre # >>> forge launcher >>> e # <<< forge launcher <<< e siga para o append.# >>> forge launcher v2 >>>
# Lanca o Claude Code com o plugin Forge habilitado no canal informado.
# Le ~/.claude/channels/<canal>/mode ("edit" => bypassPermissions).
# Uso: forge <canal> [args extras para claude]
function forge {
if ($args.Count -lt 1 -or $args[0].ToString().StartsWith('-')) {
Write-Error "uso: forge <canal> [args extras]"
return
}
$channel = $args[0]
$env:FORGE_CHANNEL = $channel
$modeFile = Join-Path $HOME ".claude/channels/$channel/mode"
$extra = if ($args.Count -gt 1) { $args[1..($args.Count-1)] } else { @() }
$mode = ''
if (Test-Path $modeFile) { $mode = (Get-Content $modeFile -Raw).Trim() }
if ($mode -eq 'edit') {
claude --dangerously-load-development-channels plugin:forge@forge --permission-mode bypassPermissions @extra
} else {
claude --dangerously-load-development-channels plugin:forge@forge @extra
}
}
# <<< forge launcher <<<
. $PROFILE para carregar o comando.".bashrc correspondente).Confirme: "Canal <nome> configurado. Use forge <nome> de qualquer diretório para abrir o Claude com o Forge. Reabra o terminal ou recarregue o profile para o comando ficar disponível."
Mostre o status do canal (token mascarado, política, permitidos).
TTS (áudio do Reporter): é opcional e gerenciado por uma skill dedicada. Informe: "Pra configurar voz do Reporter (engine, vozes, ativar/desativar áudio), rode /forge:voice." Não instale nada aqui.
Conduza a conversa (seção abaixo).
<nome> — status de um canal específico~/.claude/channels/<nome>/ existe. Se não, avise..env e access.json.<nome> clear — remover canalrm -rf ~/.claude/channels/<nome> (só após confirmação explícita).Após mostrar status:
/forge:configure <nome> <token> com o token do BotFather."pairing, ninguém permitido → "Rode forge <nome> em outro terminal; mande DM pro bot no Telegram; ele responde com código. Aprove com /forge:access pair <código>."pairing → "Travar acesso? /forge:access policy allowlist."allowlist → "Pronto. Rode forge <nome> e mande tarefas pelo Telegram."Gerenciado pela skill dedicada /forge:voice — engine (Edge / Piper / none), instalação de backends, download de modelos, overrides por canal, ativar/desativar áudio. Esta skill não toca nisso.
FORGE_STATE_DIR env (override completo) → FORGE_CHANNEL env → erro. O launcher forge sempre seta FORGE_CHANNEL, então em uso normal sempre cai nesse caminho.access.json ausente implica defaults — não é erro. Pretty-print JSON com 2 espaços..env é lido só no boot. Trocar token requer reiniciar o Claude Code.access.json é relido a cada mensagem — mudanças via /forge:access têm efeito imediato.claude mcp add / claude mcp remove — o plugin declara seu próprio server em .mcp.json. Instalações antigas podem ter entries órfãos forge-* em ~/.claude.json; oriente o usuário a remover com claude mcp remove forge-<nome> --scope user se notar.FORGE_CHANNEL (setado pelo launcher forge). Sem marker files, sem .claude/forge-channel.~/.claude/channels/<canal>/mode): contém edit ou ask. O launcher lê no boot — edit passa --permission-mode bypassPermissions ao claude. Troca via Telegram: /mode edit ou /mode ask (handlers do bot gravam o arquivo). Vale a partir da próxima sessão forge <canal>.