CommunityEscrita e Ediçãogithub.com

atokim4/cover-letter-lint

Escreve ou verifica uma carta de apresentação freelance, proposta, lance ou mensagem para cliente, de modo que pareça escrita por uma pessoa e afirme apenas o que o escritor pode comprovar.

O que é cover-letter-lint?

Esta skill é um linter especializado em cartas de apresentação freelance que garante que a mensagem pareça genuinamente humana e baseada em fatos reais do perfil do usuário. Ela é útil para freelancers em plataformas como Upwork, Fiverr, PeoplePerHour e Freelancer.com, que desejam aumentar suas chances de resposta com propostas autênticas e sem jargões de IA. A skill suporta Claude Code e outros agentes que executam Node.js (versão 20+), funcionando via script de linter que verifica desde frases típicas de IA até placeholders e reivindicações não respaldadas pelo arquivo de fatos do usuário. O processo inclui localizar o arquivo de fatos (`facts.md`), escrever a carta seguindo uma estrutura validada, executar o linter para corrigir erros e apresentar o resultado final, sempre respeitando a privacidade e sem enviar nada em nome do usuário.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atokim4/cover-letter-lint/tree/HEAD/skills/cover-letter-lint

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Lint de carta de apresentação

Objetivo: uma carta de apresentação de 50 a 90 palavras que um cliente ocupado leia até o final e responda, com cada afirmação respaldada pelo próprio arquivo de fatos do usuário.

O linter é scripts/lint-cover.mjs na pasta desta skill (Node 20+, sem dependências). Execute-o pelo caminho completo: node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs no Claude Code (também para instalação como plugin). Outros agentes não preenchem essa variável, então use a pasta, por exemplo, node .claude/skills/cover-letter-lint/scripts/lint-cover.mjs para instalação no projeto ou node ~/.claude/skills/cover-letter-lint/scripts/lint-cover.mjs para instalação global.

1. Encontre o arquivo de fatos

Procure por facts.md, me/facts.md ou um .cover-lint.json com um caminho "facts" no projeto atual.

  • Encontrado: leia-o. As afirmações vêm somente daí.
  • Não encontrado: ofereça-se para criar facts.md a partir de templates/facts.md na pasta desta skill e preencha-o com o usuário (habilidades, papéis, histórico, links de prova, coisas para nunca dizer). Não invente nada disso. Se o usuário recusar, execute o linter sem --facts e avise que as afirmações não foram verificadas.

2. Escreva (pule se o usuário já trouxe seu próprio rascunho)

Salve o anúncio de vaga em um arquivo se o usuário colou um (por exemplo, job.md). Em seguida, escreva, como frases simples, sem marcadores ou cabeçalhos:

  1. Uma saudação no estilo do cliente, depois um detalhe concreto do anúncio DELE (o bug, a stack, o prazo) e o que provavelmente o causa ou como você abordaria isso. Nunca reescreva o anúncio.
  2. Uma linha de prova do arquivo de fatos que realmente corresponda (um trabalho semelhante, um papel, um link de demonstração). Um projeto pessoal é chamado de projeto pessoal. Se não houver correspondência honesta: omita a prova.
  3. O plano em uma ou duas frases, com horas e um preço se o usuário forneceu suas taxas.
  4. Uma pergunta, aquela cuja resposta muda o escopo ou o preço.
  5. O primeiro nome do usuário em sua própria linha.

Espelhe o anúncio: três linhas casuais recebem três linhas casuais de volta, outro idioma recebe aquele idioma.

3. Lint e corrija

node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs --facts facts.md --job job.md proposal.md

(- lê da entrada padrão; --mode message para respostas de clientes, que não têm faixa de palavras; --json para saída de máquina.) Corrija cada erro e execute novamente até que saia com código 0. Avisos: corrija-os a menos que haja um motivo, e diga o motivo. Para unlisted-skill, remova a afirmação ou pergunte ao usuário se deseja adicionar a habilidade ao arquivo de fatos. Nunca edite o arquivo de fatos para fazer uma afirmação passar sem que o usuário diga que é verdadeira.

RegraNívelO que detecta
ai-phraseerro~75 frases modelo: "Espero que esta mensagem te encontre bem", "perfeito", "Estou animado para", "a chave é"…
not-x-but-yerroContrastes do estilo "Isso não é apenas X, mas Y"
dasherroTravessões e hífens usados como travessões
placeholdererro[Seu Nome], {{name}}, <cliente>, TODO, lorem ipsum
off-platformerroE-mails, números de telefone, "mande uma mensagem para mim no WhatsApp", pagamento fora do marketplace
unbacked-claimerroLinks e "N anos" que não estão no arquivo de fatos
never-sayerroFrases listadas em "Nunca diga" no arquivo de fatos
word-counterro / avisoAcima de 90 palavras (erro), abaixo de 50 (aviso) no modo carta
unlisted-skillavisoUm framework ou serviço que a carta nomeia e que não está nem no arquivo de fatos nem no anúncio de vaga
questionavisoNenhuma pergunta, ou mais de uma
list, greeting, exclamation, emoji, long-sentence, i-startavisoListas, "Prezado Senhor", "!!", emoji, frases com 35+ palavras, muitas frases começando com "Eu"

Ajustes por projeto vão em .cover-lint.json (todas as chaves opcionais): {"facts": "facts.md", "maxWords": 90, "minWords": 50, "extraPhrases": [], "allowPhrases": [], "disable": []}.

4. Entregue

Mostre a carta e a última linha do linter. Nomeie o preço e a pergunta que você escolheu para que o usuário possa alterá-los. Em seguida, leia-a mais uma vez contra o arquivo de fatos você mesmo: o linter verifica links, anos e nomes de tecnologias, não cada frase. O usuário a envia; nunca envie nada por ele.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas