Skip to content

Commit e0beb24

Browse files
feat: add wootctl to projects
wootctl — Chatwoot CLI (144 operations) wrapping the full Chatwoot API with profiles, keyring auth, backup/restore, cross-instance sync, and an MCP server. Released with Homebrew + Scoop and a docs site. Added with en/es/pt descriptions.
1 parent 2466f62 commit e0beb24

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

src/config/projects.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,15 @@ export const projects: Project[] = [
108108
githubUrl: 'https://github.com/jjuanrivvera/slackctl',
109109
demoUrl: 'https://jjuanrivvera.github.io/slackctl/',
110110
},
111+
{
112+
key: 'wootctl',
113+
title: 'wootctl — Chatwoot CLI',
114+
featured: true,
115+
showOnHomepage: false,
116+
techTags: ['Go', 'Cobra', 'Chatwoot', 'MCP', 'Homebrew'],
117+
githubUrl: 'https://github.com/jjuanrivvera/wootctl',
118+
demoUrl: 'https://jjuanrivvera.github.io/wootctl/',
119+
},
111120
{
112121
key: 'tgctlClaudeChannel',
113122
title: 'tgctl-claude-channel',

src/i18n/ui.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ export const ui = {
122122
'A transport-agnostic channel for Claude Code that turns external events into agent turns. It opens a local, secret-gated /inject endpoint, so any process (a cron, a file watcher, another agent) can POST an event and have it show up as a turn in a running session. No polling: the session sleeps for free and reacts only when something real happens. Injected events arrive marked as system data, not commands, which is the built-in defense against prompt injection. Implemented as an MCP stdio server with per-session state files and cross-platform process handling.',
123123
'projects.slackctl.description':
124124
'Command-line tool and live event stream for Slack, built with Go. Connects over Socket Mode or RTM, records every event to a local SQLite store, and adds search, tail, and stats over that history. Credentials live in the OS keyring, output is scriptable (table/json/yaml with a --jq filter), and it ships an MCP server plus an agent guard so AI agents can drive Slack safely. Built with the cliwright playbook.',
125+
'projects.wootctl.description':
126+
'Command-line interface for the full Chatwoot API (144 operations): conversations, contacts, agents, teams, inboxes, reports, and automations, plus backup/restore and cross-instance sync. Built in Go with named profiles, keyring auth, scriptable table/json/yaml output, an MCP server, and an agent guard so AI agents can drive Chatwoot safely. Built with the cliwright playbook.',
125127
'projects.lsqueezy.description':
126128
'Production-grade command-line interface for the Lemon Squeezy e-commerce API: stores, products, orders, subscriptions, customers, discounts, license keys, checkouts, and webhooks, scriptable with table/json/yaml/csv output and a --jq filter. Hides the JSON:API envelope behind flat, table-friendly records, stores keys in the OS keyring, retries idempotent requests only, and ships an MCP server for AI agents. Built with the cliwright playbook.',
127129
'projects.adguardCli.description':
@@ -346,6 +348,8 @@ export const ui = {
346348
'Un canal agnóstico al transporte para Claude Code que convierte eventos externos en turnos del agente. Abre un endpoint local /inject protegido con secret, así que cualquier proceso (un cron, un watcher de archivos, otro agente) puede hacer POST de un evento y verlo aparecer como un turno en una sesión en vivo. Sin polling: la sesión duerme gratis y reacciona solo cuando de verdad pasa algo. Los eventos inyectados entran marcados como data de sistema, no como órdenes, que es la defensa integrada contra prompt injection. Implementado como servidor MCP stdio con archivos de estado por sesión y manejo de procesos multiplataforma.',
347349
'projects.slackctl.description':
348350
'Herramienta de línea de comandos y stream de eventos en vivo para Slack, construida con Go. Se conecta por Socket Mode o RTM, guarda cada evento en un store local de SQLite y añade búsqueda, tail y estadísticas sobre ese historial. Las credenciales viven en el keyring del sistema, la salida es automatizable (tabla/json/yaml con un filtro --jq) e incluye un servidor MCP y un guard de agentes para que agentes de IA operen Slack de forma segura. Construida con el playbook de cliwright.',
351+
'projects.wootctl.description':
352+
'Interfaz de línea de comandos para toda la API de Chatwoot (144 operaciones): conversaciones, contactos, agentes, equipos, bandejas de entrada, reportes y automatizaciones, más backup/restore y sincronización entre instancias. Construida en Go con perfiles con nombre, autenticación en el keyring, salida automatizable en tabla/json/yaml, un servidor MCP y un guard de agentes para que agentes de IA operen Chatwoot de forma segura. Construida con el playbook de cliwright.',
349353
'projects.lsqueezy.description':
350354
'Interfaz de línea de comandos de nivel de producción para la API de e-commerce de Lemon Squeezy: tiendas, productos, órdenes, suscripciones, clientes, descuentos, llaves de licencia, checkouts y webhooks, automatizable con salida en tabla/json/yaml/csv y un filtro --jq. Esconde el sobre JSON:API detrás de registros planos listos para tablas, guarda las llaves en el keyring del sistema, reintenta solo peticiones idempotentes e incluye un servidor MCP para agentes de IA. Construida con el playbook de cliwright.',
351355
'projects.adguardCli.description':
@@ -566,6 +570,8 @@ export const ui = {
566570
'Um canal agnóstico ao transporte para o Claude Code que transforma eventos externos em turnos do agente. Abre um endpoint local /inject protegido por secret, então qualquer processo (um cron, um watcher de arquivos, outro agente) pode fazer POST de um evento e vê-lo aparecer como um turno numa sessão ao vivo. Sem polling: a sessão dorme de graça e reage apenas quando algo real acontece. Os eventos injetados chegam marcados como dados de sistema, não como comandos, que é a defesa integrada contra prompt injection. Implementado como servidor MCP stdio com arquivos de estado por sessão e tratamento de processos multiplataforma.',
567571
'projects.slackctl.description':
568572
'Ferramenta de linha de comando e stream de eventos ao vivo para o Slack, construída com Go. Conecta-se por Socket Mode ou RTM, grava cada evento num store local de SQLite e adiciona busca, tail e estatísticas sobre esse histórico. As credenciais ficam no keyring do sistema, a saída é automatizável (tabela/json/yaml com um filtro --jq) e inclui um servidor MCP e um guard de agentes para que agentes de IA operem o Slack com segurança. Construída com o playbook do cliwright.',
573+
'projects.wootctl.description':
574+
'Interface de linha de comando para toda a API do Chatwoot (144 operações): conversas, contatos, agentes, equipes, caixas de entrada, relatórios e automações, além de backup/restore e sincronização entre instâncias. Construída em Go com perfis nomeados, autenticação no keyring, saída automatizável em tabela/json/yaml, um servidor MCP e um guard de agentes para que agentes de IA operem o Chatwoot com segurança. Construída com o playbook do cliwright.',
569575
'projects.lsqueezy.description':
570576
'Interface de linha de comando de nível de produção para a API de e-commerce da Lemon Squeezy: lojas, produtos, pedidos, assinaturas, clientes, descontos, chaves de licença, checkouts e webhooks, automatizável com saída em tabela/json/yaml/csv e um filtro --jq. Esconde o envelope JSON:API atrás de registros planos prontos para tabelas, guarda as chaves no keyring do sistema, repete apenas requisições idempotentes e inclui um servidor MCP para agentes de IA. Construída com o playbook do cliwright.',
571577
'projects.adguardCli.description':

0 commit comments

Comments
 (0)