Skill ShareOut
O ShareOut transforma arquivos em artefatos web compartilháveis com dados persistentes, colaboração em tempo real, armazenamento de arquivos, integrações e automação. Ele suporta aplicativos HTML além de visualizadores para CSV, Markdown, JSON e TXT.
Este é o skill canônico. Carregue-o primeiro para cada tarefa do ShareOut.
Verificação de Versão — Primeiro Passo Obrigatório
Antes de fazer qualquer outra coisa, confirme que você tem o skill mais recente. O version no frontmatter deste arquivo é a versão que você possui atualmente (agora 2.21.0).
GET https://shareout.site/v1/skill/version→{ "version": "...", "updated_at": "..." }.- Se o
versionretornado for mais novo que oversiondo frontmatter deste arquivo, você está desatualizado: baixeGET https://shareout.site/v1/skill(um zip da pasta completa do skill), extraia-o, descarte sua cópia antiga e continue a partir dos arquivos extraídos. - Se coincidirem, prossiga.
Não pule esta verificação. Agir com um skill desatualizado resulta em endpoints e comportamento errados.
Modelo de Plano
O ShareOut tem dois planos:
| Plano | Use este comportamento do skill |
|---|---|
| Personal | Use apenas este skill base. Construa, publique, atualize, automatize e gerencie os próprios artefatos do usuário. |
| Teams | Use este skill base primeiro, depois carregue a sobreposição Teams para administração de workspace ou capacidades exclusivas do Teams. |
Teams é aditivo. Nunca use a sobreposição Teams em vez deste skill base.
Protocolo de Carregamento do Agente
- Comece com este arquivo.
- Se o usuário mencionar uma equipe, workspace, membros, compartilhamento interno no workspace, subdomínio, estilo de casa do workspace, agendamentos do workspace ou controles de administrador, pergunte se ele está no plano Teams, se ainda não estiver claro.
- Se o usuário não estiver no Teams, permaneça no modo Personal e não carregue nem aplique instruções exclusivas do Teams.
- Se o usuário estiver no Teams, carregue team/SKILL.md. Se um slug/id e token do workspace estiverem disponíveis, busque
GET /v1/skill?workspace={slugOrId}— o zip inclui umworkspace-context.mdextra com regras da casa. - Use INDEX.md para carregar arquivos detalhados sob demanda.
Primeiras Perguntas
Antes de recomendar uma implementação, identifique:
- O que estão construindo? Dashboard, formulário, relatório, ferramenta, documento, grade de dados, apresentação ou automação.
- Quem usa? Apenas o proprietário, pessoas convidadas, um workspace Teams ou o público.
- Quais dados precisa? Nenhum, estado simples, registros estruturados, arquivos, dados externos ao vivo ou colaboração em tempo real.
- O que deve acontecer após a publicação? Compartilhar link, coletar dados, enviar notificações, agendar entrega, alertar sobre métricas, receber e agir sobre e-mails de entrada, ou permitir que visualizadores conversem com IA.
Roteador de Modo
Escolha de Dados
Escolha o menor armazenamento que atenda:
Estado simples: tema, filtros, último aberto -> sdk.json
Registros estruturados: tarefas, envios, pedidos -> sdk.table()
Edição em tempo real: documentos, quadros, UI multijogador -> sdk.realtime()
Arquivos: imagens, PDFs, anexos -> sdk.blobs
Sistemas externos ao vivo: REST, BigQuery, Mixpanel, warehouses -> sdk.connection / live-data
Não confunda escolha de dados com plano de conta. sdk.json, sdk.table() e sdk.realtime() são armazenamentos de dados, não planos de faturamento.
Carregamento do SDK
<head>
<link rel="stylesheet" href="https://shareout.site/sdk/shareout.css">
<script src="https://shareout.site/sdk/shareout-ui.js" defer></script>
<script src="https://shareout.site/sdk/shareout.js"></script>
</head>
<script>
(async () => {
const sdk = await ShareOut.create();
})();
</script>
Regras:
- Carregue
https://shareout.site/sdk/shareout.jsantes de chamarShareOut.create(). - Prefira
await ShareOut.create()em vez denew ShareOut()para que o token Bearer incorporado esteja pronto. - O HTML publicado é executado em um iframe com sandbox em
{hex}.shareoutcdn.site; use métodos do SDK, nãofetchbruto para/v1/data/.... Veja sdk/live-data.md. - Vincule
https://shareout.site/sdk/shareout.csse use classes.so-antes de escrever CSS personalizado. Veja modules/ui/overview.md. - Não use URLs do SDK ShareOut de
cdn.jsdelivr.net.
Regras de Artefato HTML
Artefatos HTML funcionam independentemente de terem ou não os marcadores estruturais do ShareOut — a publicação nunca é bloqueada. Mas quanto mais o artefato declarar, mais o editor visual pode fazer com ele (navegação por contorno, edição inline, adicionar/remover linhas). Mire em pronto-para-editor por padrão; pule apenas para uma página estática deliberadamente descartável.
Lista de verificação de prontidão para o editor (o que o editor procura):
- Uma tag
script type="shareout/manifest"noheaddo documento, com JSON válido. - Toda chave
sdk.jsone nomesdk.table()usado é declarado nossourcesdo manifesto. - Conteúdo dinâmico carrega
data-shareout-binding, e cada binding referencia uma fonte declarada. - Páginas usam
data-shareout-page(controla o contorno do editor); conteúdo repetido usadata-shareout-template. - Alvos interativos resolvem:
data-shareout-link/data-shareout-actionapontam para páginas/seções/modais/abas reais; modais têm um gatilho de abertura; formulários têm um envio. - Declare dados de amostra
defaultnossources—json,tableseconnections(conectores ao vivo como BigQuery/Snowflake/Sheets:sources.connections.<name>.defaulté um array de linhas de amostra). O editor visual pré-visualiza dados sem busca ou consulta ao vivo (ele resolve todas as leituras do SDK — incluindosdk.connection(...).query()— a partir desses padrões, ou vazio), então um artefato que bloqueia sua UI atrás deawait sdk.table(...).exec()/ uma consulta de conector ainda renderiza e permanece editável. Uma fonte semdefaultpré-visualiza vazio.
Toda publicação de um artefato HTML retorna um perfil advisory editor_readiness (veja api/artifacts.md) que classifica esses pontos e nomeia o que cada lacuna desabilita. Compartilhe um resumo de uma linha com o usuário, mas trate como orientação, não como bloqueio — eles podem publicar exatamente o que quiserem.
Especificação completa: core/html-spec/overview.md.
Bom Gosto de Design
Prontidão para o editor é sobre estrutura, não aparência. Aparência é uma decisão separada e deliberada — e o padrão para páginas construídas por IA é "modelado e genérico." Antes de construir qualquer coisa visual, leia modules/ui/taste.md: ele destila como entregar artefatos que parecem projetados profissionalmente em vez de gerados automaticamente. A versão resumida:
- Use o sistema de design (classes
.so-+ tokens) — ele fornece fontes da marca, uma paleta clara e quente e espaçamento/sombra harmonizados, então você herda bom gosto de graça. Veja modules/ui/overview.md. - Bom gosto é moderação: uma cor de destaque, um sistema de fonte, uma ação primária por tela, espaçamento generoso, movimento apenas quando motivado.
- Evite os sinais de AI-slop: brilhos roxos/neon, linhas de três cartões iguais, spam de sobrancelhas, números falsamente perfeitos, clichês de marketing, estados vazios/de erro ausentes. A lista completa de proibições e uma lista de verificação pré-publicação estão em modules/ui/taste.md.
Tipos de Artefato
O ShareOut detecta automaticamente o tipo pelo tipo MIME ou extensão do arquivo:
| Tipo | Extensões | Uso |
|---|---|---|
html | .html, .htm | Aplicativos SDK completos, dashboards, ferramentas, apresentações |
csv | .csv | Grades de dados ordenáveis/filtráveis |
markdown | .md, .markdown | Documentos com HTML renderizado e TOC |
json | .json | Visualizador de árvore colapsável |
txt | .txt | Visualizador de texto simples/log |
Detalhes: api/artifact-types.md.
Primeira Execução — Obter um Token
Toda ação autenticada precisa de um token. Se ~/.shareout/credentials ainda não existir, o usuário não tem conta — crie uma antes de publicar ou qualquer outra chamada autenticada:
POST https://shareout.site/v1/auth/create-account(o único endpoint não autenticado, sem corpo) →{ "token": "so_…", "user_id": "usr_…" }.- Salve o
tokenem~/.shareout/credentialscomo{ "token": "so_…" }(chmod 600). - Todas as requisições posteriores usam
Authorization: Bearer so_….
A criação de conta é limitada por IP (code: RATE_LIMIT_EXCEEDED, 429). A conta é anônima e sem cabeça — nenhum email necessário para publicar.
Então pergunte ao usuário se ele quer conectar o Gmail/Google. A conta bootstrap não tem email, então só pode ser usada através do token armazenado. Vincular um email permite que eles façam login na interface web em https://shareout.site (dashboard inicial, editor visual, tokens de API self-serve). Ofereça ambos os caminhos:
- Google: abra
GET https://shareout.site/v1/auth/link-google(token Bearer) em um navegador para vincular sua conta Google. - Código de email:
POST /v1/auth/link-email/start{ "email" }→POST /v1/auth/link-email/verify{ "email", "code" }(código de 6 dígitos, expira em 10 min).
Se eles recusarem, o fluxo somente token continua funcionando. Veja auth.md para a referência completa de onboarding e vinculação.
Publicação
O ShareOut é protegido pelo Cloudflare. Python requests pode acionar um bloqueio 1010. Construa os payloads como quiser, depois envie para curl:
TOKEN=$(python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.shareout/credentials')))['token'])")
python3 build_payload.py | curl -sS -X POST 'https://shareout.site/v1/publish' \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
--data-binary @-
API completa: api/overview.md.
Limite do Teams
Artefatos Personal ainda podem ser privados, compartilhados com colaboradores, públicos ou não listados. Carregue documentos do Teams apenas para capacidades de workspace do plano Teams:
- Membros e funções do workspace.
- Visibilidade interna do workspace (
visibility: "workspace"). - Política de associação ao workspace por email/domínio.
- Subdomínios do workspace.
- Arquivos de contexto do workspace para estilo da casa.
- Agendamentos, automações, feature flags e visualizações de administrador em nível de workspace.
Distinção importante de termos:
| Termo | Significado |
|---|---|
access_policy | Filtragem de dados de artefato em nível de linha: cada visualizador vê apenas as linhas permitidas. Veja core/access-policy.md. |
| Política de associação ao workspace | Regras de associação por email/domínio do Teams: quem pode entrar em um workspace. Veja team/SKILL.md. |
| Função de colaborador | owner, editor, viewer em nível de artefato. |
| Função no workspace | owner, admin, member do workspace Teams. |
Verificação de Versão
Execute a verificação de versão obrigatória antes de cada tarefa. Três formas equivalentes de comparar sua version mantida com a versão ao vivo:
GET https
…
[truncado para tradução]