Verificação de proposta freelance
Objetivo: um lance curto que o cliente leia até o fim e responda, em qualquer marketplace onde o trabalho esteja, com cada alegação respaldada pelo próprio arquivo de fatos do usuário.
O linter é scripts/lint-cover.mjs na pasta deste skill (Node 20+, sem dependências, sem rede). É o mesmo arquivo do skill cover-letter-lint deste repositório, enviado aqui para que este skill funcione por conta própria. Chame-o pelo caminho completo: node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs no Claude Code, ou a pasta do skill em outros agentes, ex.: node .claude/skills/freelance-proposal-lint/scripts/lint-cover.mjs.
1. Fatos primeiro
Procure por facts.md, me/facts.md ou um .cover-lint.json com um caminho "facts". As alegações vêm apenas daí. Se não encontrar, ofereça-se para preencher templates/facts.md da pasta deste skill com o usuário (habilidades, funções, histórico exatamente como aparece no perfil, links de comprovação, frases para nunca usar). Não invente nada disso. Se o usuário recusar, faça a verificação sem --facts e avise que as alegações não foram verificadas.
2. Ajuste o formato ao site
Pergunte qual marketplace se o usuário não disse. Então:
- Upwork: uma carta de apresentação de 50 a 90 palavras, mais as respostas das perguntas de triagem. Responda cada pergunta de triagem diretamente, na ordem em que foram feitas.
- Freelancer.com, PeoplePerHour, Guru: os lances são comparados lado a lado com um preço e um prazo de entrega. Coloque a abordagem concreta na primeira linha e garanta que o preço e os dias no texto correspondam aos números que o usuário insere no formulário de lance.
- Brief ou oferta personalizada do Fiverr: o comprador escolheu uma categoria, então comece com a entrega exata deles, depois o que a oferta inclui e quantas revisões.
- Contra ou consulta direta: trate como uma primeira mensagem; verifique com
--mode message.
Espelhe o cliente: três linhas casuais recebem três linhas casuais de volta; outro idioma recebe esse idioma.
3. Escreva
Frases simples, sem marcadores ou cabeçalhos:
- Uma saudação no estilo do cliente, depois um detalhe concreto DO post deles e o que provavelmente o causa ou como você abordaria isso. Nunca repita o post.
- Uma linha de comprovação do arquivo de fatos que realmente se encaixa. Um projeto pessoal é chamado de projeto pessoal. Sem correspondência honesta: omita a comprovação.
- O plano em uma ou duas frases, com horas e um preço se o usuário forneceu uma taxa.
- Uma pergunta, aquela cuja resposta muda o escopo ou o preço.
- O primeiro nome do usuário em sua própria linha.
4. Verifique e corrija
node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs --facts facts.md --job job.md bid.md
- lê da entrada padrão, --mode message remove a faixa de palavras para respostas, --json fornece saída de máquina. Corrija todos os erros e execute novamente até que saia com código 0. Corrija também os avisos, a menos que haja um motivo, e diga o motivo.
O que faz um lance falhar (erros): frases prontas ("Espero que esta mensagem te encontre bem", "perfeito", "Estou animado para"), contrastes "não apenas X, mas Y", travessões, placeholders como [Seu Nome], e-mails, números de telefone ou "me mande uma mensagem no WhatsApp" (a maioria dos marketplaces proíbe tirar o contato do site antes de um contrato), links e "N anos" que o arquivo de fatos não comprova, frases em "Nunca diga" e mais de 90 palavras no modo carta. Os avisos cobrem nomes técnicos que não estão nem nos fatos nem no post, uma pergunta faltando ou uma segunda pergunta, listas, "Prezado Senhor", "!!", emoji e frases muito longas. Ajustes por projeto vão em .cover-lint.json:
{"facts": "facts.md", "maxWords": 90, "minWords": 50, "extraPhrases": [], "allowPhrases": [], "disable": []}.
Nunca edite o arquivo de fatos para fazer uma alegação passar sem que o usuário diga que é verdade.
5. Entregue
Mostre o lance, o preço e o prazo de entrega que ele declara e a última linha do linter. Depois leia-o novamente contra o arquivo de fatos você mesmo: o linter verifica links, anos e nomes técnicos, não cada frase. O usuário envia; nunca envie nada por ele.