O que portfolio-kup faz?
Cria o perfil do usuário a partir de evidências reais e gera uma página web de uma página, bilíngue (tailandês/inglês). Responde ao usuário em tailandês, mantendo termos técnicos em inglês.
Etapas
Siga a ordem · Use AskUserQuestion para todas as decisões do usuário · Para tópicos com muitas informações, resuma primeiro no chat e depois insira na página.
1. Coleta de dados
- Pergunte se há outras máquinas usando Claude Code (ssh
user@host) · Se o usuário já informou no pedido, não pergunte. - Execute o script em todas as máquinas (saída apenas com números, sem prompts ou chaves):
S=~/.claude/skills/portfolio-kup/scripts; D=<scratchpad>/pk; mkdir -p $D python3 $S/collect.py > $D/local.json ssh -o BatchMode=yes user@host python3 - < $S/collect.py > $D/host1.json python3 $S/merge.py $D/*.json > $D/metrics.json # tabela resumo no stderr - Leia o conteúdo dos prompts para avaliação qualitativa (
~/.claude/history.jsonlcamposdisplay,project) · Leia aleatoriamente, distribuído entre todos os projetos/meses · NÃO copie keys/tokens/senhas encontradas para a resposta ou página web – apenas conte.
Limitações a informar ao usuário:
history.jsonlconta apenas quando o usuário digita · Períodos de agente trabalhando sozinho não são contados.- Transcripts (
~/.claude/projects/**/*.jsonl) são deletados apóscleanupPeriodDays(padrão 30 dias) · tokens e tempo de IA disponíveis apenas do período recente. - Meses com prompts < 100 (
enough_data: false) têm números instáveis NÃO use para comparação. - A contagem de comportamentos é baseada em palavras-chave, indicando tendências, não medições precisas.
2. Avaliação (responda no chat)
- Possível cargo · Nível (Júnior / Pleno / Sênior) · Pontos fortes e fracos, com evidências.
- Seja direto, sem elogios exagerados · Separe "consegue entregar porque controla bem a IA" de "entende os fundamentos sozinho".
- Se encontrar keys/secrets no histórico → alerte para rotacionar imediatamente (informe o tipo, não o valor).
3. Teste (se o usuário quiser saber se é realmente fraco)
- 2 rodadas, cada uma com 4 perguntas via
AskUserQuestion· Problemas baseados em situações reais de trabalho do usuário (stack que ele usa). - Misture 2 tipos: Vê o sintoma → diz a causa e Explica o mecanismo por trás · Opções com tamanhos semelhantes, sem dar a resposta.
- Informe as regras: não pergunte à IA · Se não souber, responda "não sei".
- Dê a resposta de cada pergunta com breve explicação e depois resuma o padrão (ex: sintomas 4/4, mecanismos 0/4).
4. Salário e carreira
- Faça
WebSearchmodoextendedcom várias consultas simultâneas (TH + EN, ano atual) · Sempre cite as fontes. - Separe AI/ML Engineer (cria modelos) de AI Application Engineer (usa IA em aplicativos) · Faixas salariais muito diferentes.
- Pense amplamente: liste 8–10 carreiras que combinem com habilidades + personalidade + crescimento (não só técnicas: consultor, pré-vendas, educador, produto EdTech, freelancer) · Depois reduza para as 3 mais adequadas + até 5 carreiras secundárias como tags · Carreiras "ainda não adequadas" podem ser citadas no chat, mas não na página.
- Deve haver uma recomendação clara e única de direção (com base no objetivo da entrevista), acompanhada de um plano em 3 etapas.
- Na página web, exiba salário como
*por padrão · Mostre o número apenas se o usuário solicitar.
5. Entrevista
Chame a skill grilling (ou grill-me) e faça perguntas em rodadas via AskUserQuestion:
Motivo pelo qual quer seguir aquela carreira · Experiência com pessoas/clientes fora do chat · Prazo · Projetos existentes (próprios ou da empresa) ·
Horas livres por semana · Definição de sucesso · Critérios para continuar/parar.
- Respostas contraditórias ou que não respondem à pergunta → pergunte novamente.
- Aponte padrões observados (ex: quando não é forçado a escolher, responde "aceito tudo") · Discorde educadamente, mas deixe o usuário decidir.
- Termine com um resumo do entendimento comum e aguarde confirmação do usuário antes de inserir na página.
6. Criação da página web
- Copie
templates/onepage.htmlpara o scratchpad e edite apenas o JSON dentro de<script id="profile">· Todo texto deve estar como{"th":…,"en":…}. Artifact→quickstart(intentother) na primeira vez, depois publique · íconeprofile.- Ajuste conforme feedback usando Edit + publique o mesmo arquivo (mesma URL).
Regras de design (baseadas em feedback de usuários reais · Não viole)
| Tópico | Faça | Não faça |
|---|---|---|
| Layout da página | Coluna única, leitura de cima para baixo · Identidade → 01 Habilidades → 02 Modo de trabalhar → 03 Crescimento → 04 Próximos passos · Largura até 1600px | Sidebar lateral · Painel escuro diferente dos demais · Largura fixa estreita |
| Próximos passos (04) | Caixa "Recomendação" com 1 recomendação + motivo em 1 frase + plano em 3 etapas · Cards das 3 carreiras, contendo apenas: prontidão / adequação / lacunas · Tag ★ Recomendado no canto superior direito do card escolhido · "Também possível" como tags em linha · "O que fazer primeiro" com no máximo 4 itens | Tabela longa de carreiras · Tags de etapas/primeiros passos/salário nos cards · Informação duplicada do plano de 3 etapas (usuários disseram que "polui") |
| Cores | Todos os painéis usam o mesmo conjunto (fundo branco, bordas finas) · Azul = suave/melhora · Dourado = difícil/meta · Vermelho = cuidado/agora | Muitos tons misturados |
| Aviso sobre fontes dos dados | Caixa no topo, listando todas as fontes + o que não foi contado + "Avaliação por IA, não certificação" | Esconder a fonte no final da página |
| Idioma | Tailandês como padrão + botão TH/EN · Use they/them ou evite pronomes em inglês | Adivinhar gênero pelo nome |
| Compreensível para terceiros | Linguagem simples · Comparações como "metade", "o dobro", "um terço" | Nomes de projetos internos · Números de perguntas da entrevista (Q20) · Números brutos sem unidade ("43 vezes", contagem de prompts) · Jargões como "502 Traefik" |
| Habilidades | Radar + tags em 3 níveis (Destaque/Médio/Precisa melhorar) na seção de habilidades · Soft e Hard lado a lado, itens numerados (01–) com tag de evidência · Hard inclui nomes de ferramentas | Barras de nível ao lado de traços de personalidade (usuários não entendem o que "cheio" significa) · Cards com alturas diferentes |
| Personalidade | Nomeie como soft skills que RH usa · Um nome de persona + uma frase · Estilo como barra de dois polos · "Traços de personalidade a serem observados" em caixa separada | Inserir resultado do teste como painel na página (usuários pediram para remover) |
| Horas de trabalho | Gráfico de horas iniciando às 06:00 · Dias da semana como % do total de trabalho, com linha explicativa sobre o que é % | Eixo com número de ocorrências |
| Crescimento | Escada clicável, um degrau por vez · Altura = nível de habilidade (com nome do nível na barra) · Tag "▼ Você está aqui" · Cada degrau: o que faz bem / ainda erra / ponto de virada · "Comparado ao degrau anterior" apenas em meses com dados suficientes · tokens apenas nos degraus com transcript · Último degrau é a meta (linha tracejada dourada) | Gráfico de contagem de prompts por mês (usuários não entendem) · Mostrar todos os detalhes de todos os degraus de uma vez |
| Salário | * + explicação na caixa de aviso e no rodapé | Número do salário sem solicitação |
| Privacidade | Sem keys, IPs, hostnames, emails · Números negativos escritos de forma não expositiva ("já colocou key em lugar indevido") | Publicar/enviar página de perfil real para o público sem perguntar |
Arquivos na skill
scripts/collect.py· Coleta números de uma única máquina (prompts mensais, comportamentos, horas/dia, tokens, timestamps) · Não envia texto.scripts/merge.py· Combina várias máquinas →metrics.json(mensal,enough_data, % de horas iniciando às 06:00, % dias, horas trabalhadas manualmente vs. horas com IA, tokens).templates/onepage.html· Página web que renderiza a partir de um único JSON · Dados no arquivo são exemplos fictícios.
Mapeamento de métricas → conteúdo da página
| metrics.json | Onde usar |
|---|---|
hours_pct_from_6am[].pct | hoursPctFrom6am (24 valores, ordenados a partir das 06:00) |
weekday_pct | weekdayPct |
late_night_pct | hoursNote ex: "quase 1/3 do trabalho ocorre após as 21h" |
monthly[*] com enough_data | stages[i].compare.items (comparação com estágio anterior) · stages[i].peak/hot mês mais intenso |
tokens[*] | stages[i].tokens (apenas meses com dados) · Informe a proporção de cache read |
hands_on_hours / ai_working_hours | Resuma no chat "trabalho manual ~X h/semana · IA trabalhando ~Y h/semana" |
secrets_pasted > 0 | Alerta no chat + "Traços de personalidade a serem observados" + primeiro item de acts |
Seção JSON 04 no template
rec·title,reason,phases[](when,t,d) recomendação em 3 etapas.paths[]· 3 carreiras:tag,title,ready(0–100),fits,gap,pick: truepara a recomendada,gold: truepara carreira própria/founder.also[]· Nomes de carreiras secundárias ≤5 (apenas texto).acts[]· ≤4 itens (t,d).