Communitygithub.com

anton-abyzov/vskill

Transfira seu trabalho em andamento para QUALQUER outra ferramenta de codificação AI e continue exatamente de onde parou — funciona em mais de 8 ferramentas (Claude Code, Codex, OpenCode, Gemini, Antigravity, Cursor, Aider, Cline/Roo, Windsurf).

O que é vskill?

Esta skill (/handoff) resolve o problema fundamental de que nenhuma ferramenta de codificação AI consegue ler o transcript de outra: cada uma armazena sessões em formatos proprietários e inacessíveis. A solução é gerar um documento portátil e autocontido que captura o objetivo atual, decisões tomadas e todas as edições não commitadas (diff completo), permitindo que qualquer outro agente AI retome o trabalho exatamente de onde parou, sem necessidade de reexplicação. A skill é autocontida, exigindo apenas `git` e um shell, e opcionalmente acelera a geração usando o binário `specweave handoff` se ele estiver no PATH. Ela também realiza uma limpeza automática de segredos (tokens, chaves AWS, etc.) tanto no texto livre quanto no diff, antes de escrever o documento. É útil quando o usuário está ficando sem tokens, quer trocar de ferramenta no meio de uma tarefa, mudar de máquina, ou diz 'handoff', 'continue elsewhere', 'out of tokens'.

Funciona com✓Claude Code✓Codex CLI✓Cursor✓Antigravity✓Gemini CLI✓OpenCode✓Windsurf
npx skills add https://github.com/anton-abyzov/vskill/tree/HEAD/skills/handoff

Perguntar na sua IA favorita

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

Documentação

/handoff — Transferência de Trabalho entre Ferramentas

Nenhuma ferramenta de codificação AI consegue ler o transcript de outra: o Claude Code trava sessões em ~/.claude/projects/<munged-cwd>/<uuid>.jsonl, Codex/OpenCode em seus próprios armazenamentos, Antigravity em .pb criptografado. A única coisa portátil entre ferramentas é um documento autocontido. Esta skill escreve esse documento — seu objetivo atual, decisões e as edições EXATAS não commitadas — para que qualquer outro agente AI possa continuar de onde você parou, sem você precisar reexplicar nada.

Use esta skill quando o usuário estiver com poucos tokens, quiser trocar de ferramenta no meio da tarefa, estiver mudando de máquina, ou disser "handoff" / "continue elsewhere" / "out of tokens".

Esta skill é autocontida: funciona apenas com git + um shell. Ela chama specweave handoff como um acelerador opcional quando esse binário está no PATH (alta fidelidade, ciente de incrementos) — mas não tem dependência obrigatória do SpecWeave instalado.


Decisão: qual caminho seguir

command -v specweave >/dev/null 2>&1 && echo "ACELERADOR" || echo "AUTÔNOMO"
  • ACELERADOR (specweave no PATH) → execute o mecanismo, exiba sua saída. Vá para o Caminho A.
  • AUTÔNOMO (sem specweave) → construa o documento você mesmo a partir do git + uma breve entrevista. Vá para o Caminho B.

Ambos os caminhos emitem o mesmo formato de documento e o mesmo prompt de colagem (veja o modelo canônico abaixo), para que uma transferência seja continuável em qualquer ferramenta, independentemente de qual caminho a produziu.


Caminho A — Acelerador (specweave no PATH)

Execute o mecanismo, encaminhando qualquer contexto curto que você possa fornecer de forma barata:

specweave handoff [incrementId] [--reason "..."] [--summary "..."] [--next "..."] [--gotcha "..."] [--decision "..."] [--inline]

Em seguida, exiba sua saída padrão textualmente, na ordem (não reordene nem parafraseie):

  1. caminho absoluto do documento como texto simples (PRIMEIRO), 2. link clicável em markdown, 3. caminho do .diff,
  2. prompt de retomada entre crases, 5. dicas por ferramenta "encontre sua sessão de origem".

Pronto. O mecanismo cuidou da detecção do workspace, análise de tarefa/CA, captura git, despejo do diff completo, limpeza de segredos e renderização.


Caminho B — Autônomo (sem specweave)

Construa um documento byte-compatível usando apenas o shell.

B1. Capture o estado do git (grátis — sem tokens)

ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "$ROOT/.handoff"
printf '*\n' > "$ROOT/.handoff/.gitignore"   # nunca deixe a transferência ou seu diff entrar no git

BRANCH="$(git -C "$ROOT" rev-parse --abbrev-ref HEAD 2>/dev/null || echo '(sem git)')"
SHA="$(git -C "$ROOT" rev-parse --short HEAD 2>/dev/null || echo '(sem commits)')"
STATUS="$(git -C "$ROOT" status --porcelain 2>/dev/null)"
STAT="$(git -C "$ROOT" diff --stat 2>/dev/null)"

# Edições não commitadas completas → arquivo .diff irmão (árvore de trabalho + staged), o artefato de fidelidade principal
{ git -C "$ROOT" diff HEAD 2>/dev/null; git -C "$ROOT" diff --cached 2>/dev/null; } > "$ROOT/.handoff/handoff.diff"

B2. Entrevista de cinco perguntas (apenas os campos não dedutíveis)

Pergunte ao usuário (mantenha em ~5 strings curtas — barato mesmo com exaustão de tokens):

  1. motivo — por que você está transferindo? (ex.: "sem tokens")
  2. resumo — uma linha: como estão as coisas?
  3. próximo — o próximo passo exato.
  4. cuidado — algo que o próximo agente NÃO DEVE fazer / deve saber?
  5. decisões — decisões importantes já tomadas (separadas por ponto e vírgula).

B3. Limpeza de segredos (antes de escrever — tanto no texto livre QUANTO no diff)

Substitua correspondências por [REDACTED-<tipo>] e conte por padrão. Padrões (12): sk-, ghp_, gho_, ghs_, AKIA, ASIA, -----BEGIN, vsk_, xox[bap]-, Bearer , password=, api_key=.

# limpe o diff capturado no local, ex.:
sed -i.bak -E \
  -e 's/sk-[A-Za-z0-9_-]+/[REDACTED-sk]/g' \
  -e 's/gh[pos]_[A-Za-z0-9_-]+/[REDACTED-gh-token]/g' \
  -e 's/(A[KS]IA[0-9A-Z]{16})/[REDACTED-aws-key]/g' \
  -e 's/vsk_[A-Za-z0-9_-]+/[REDACTED-vsk]/g' \
  -e 's/xox[bap]-[A-Za-z0-9-]+/[REDACTED-slack]/g' \
  -e 's/Bearer [A-Za-z0-9._-]+/Bearer [REDACTED-bearer]/g' \
  -e 's/(password=)[^[:space:]]+/\1[REDACTED-password]/g' \
  -e 's/(api_key=)[^[:space:]]+/\1[REDACTED-api_key]/g' \
  "$ROOT/.handoff/handoff.diff" && rm -f "$ROOT/.handoff/handoff.diff.bak"

A limpeza é heurística — uma lista de remoção vazia NÃO é garantia de que o arquivo está limpo.

B4. Escreva o documento

Escreva o modelo canônico abaixo em $ROOT/.handoff/HANDOFF.md, preenchendo os campos capturados + da entrevista.

Sentinela de propriedade: se um ./HANDOFF.md raiz já existir e NÃO contiver o marcador Doc format v1, é um arquivo estrangeiro — NÃO o sobrescreva; escreva em .handoff/HANDOFF.md (que já é o padrão aqui de qualquer forma).

B5. Imprima a saída — caminho absoluto primeiro, nesta ordem

  1. O caminho absoluto de .handoff/HANDOFF.md como texto simples.
  2. Um link clicável em markdown para ele.
  3. O caminho absoluto de .handoff/handoff.diff.
  4. O prompt de colagem entre crases (veja abaixo).
  5. As dicas por ferramenta "encontre sua sessão de origem".

Modelo de documento de transferência canônico (EMBUTIDO — fonte única da verdade)

Renderize estas seções nesta ordem exata, terminando com o marcador de rodapé Doc format v1. Os placeholders entre colchetes são preenchidos a partir do estado git capturado + entrevista. Isso espelha o handoff-doc-format.ts do specweave, para que um documento produzido aqui seja byte-compatível com um produzido pela CLI.

# Transferência de Trabalho[: <título se conhecido>]

- Caminho do doc: <CAMINHO_ABSOLUTO_DO_DOC>
- Link do doc: [<CAMINHO_ABSOLUTO_DO_DOC>](<CAMINHO_ABSOLUTO_DO_DOC>)
- Arquivo diff: <CAMINHO_ABSOLUTO_DO_DIFF>
- Gerado: <TIMESTAMP_ISO>
- Workspace: <ROOT> (non-SpecWeave)
- Git: branch `<BRANCH>` @ `<SHA>`

## Onde Parei

**Motivo da transferência:** <motivo>
**Resumo:** <resumo>
_Nenhum incremento SpecWeave ativo — esta é uma transferência git + entrevista._

## Feito / Pendente

_Nenhum estado de tarefa/CA de incremento disponível._

## Decisões Principais e Cuidados

- <decisão 1>
- <decisão 2>

**Cuidado:** <cuidado>

## Arquivos Tocados

**NÃO COMMITADOS** — faça commit, stash ou continue editando ANTES de fazer qualquer coisa destrutiva.

<git status --porcelain>

<git diff --stat>


Diff não commitado completo: `<CAMINHO_ABSOLUTO_DO_DIFF>` — leia-o ou execute `git apply --check` contra ele para ver as edições exatas.

## Próximos Passos Exatos

<próximo>

## Como Retomar

Se o caminho do doc acima NÃO existir na máquina em que você está lendo isso, PARE e peça ao usuário para colar a transferência — não improvise contexto.

Para recuperar o transcript ORIGINAL (opcional), encontre sua sessão de origem por ferramenta:

### Claude Code
- Encontre sessão: ls ~/.claude/projects/<munged-cwd>/ (munge: todo caractere não alfanumérico → "-", execuções NÃO colapsadas; ex.: /Users/antonabyzov/Projects/github/specweave-umb/.claude-worktrees/x → -Users-antonabyzov-Projects-github-specweave-umb--claude-worktrees-x)
- Retome: `claude -r <uuid>`

### Codex
- Encontre sessão: ls ~/.codex/sessions/ (diretório mais novo = sessão mais recente)
- Retome: `codex resume <uuid>   (ou: codex resume --last)`

### OpenCode
- Encontre sessão: opencode sessions list
- Retome: `opencode -s <id>   (forma longa: opencode --session <id>)`

### Gemini CLI
- Encontre sessão: execute /chat list dentro da sessão Gemini para ver tags salvas
- Retome: `/chat resume <tag>`

### Antigravity
- Encontre sessão: abra o Gerenciador de Agentes Antigravity e escolha o thread de tarefa anterior
- Retome: `retome o thread do Gerenciador de Agentes Antigravity`

### Aider
- Encontre sessão: aider mantém .aider.chat.history.md na raiz do repositório
- Retome: `aider --restore-chat-history`

## Redação

- <N> strings `<tipo>` mascaradas

_A limpeza é heurística (regex básico). Uma lista de remoção vazia NÃO é garantia de que este arquivo está limpo — revise antes de compartilhar ou commitar._

---
<!-- Doc format v1 -->

Notas sobre o modelo:

  • Se não houver alterações não commitadas, substitua o corpo de Arquivos Tocados por _Árvore de trabalho limpa — nenhuma edição não commitada._ (ou _Não é um repositório git — nenhum diff capturado._ quando não houver git).
  • Se não houver decisões, o corpo de Decisões Principais é _Nenhuma decisão registrada._; omita a linha Cuidado: quando nenhum cuidado foi dado.
  • O corpo de Redação é _Nenhuma string semelhante a token foi detectada._ quando nada foi mascarado.
  • O marcador de rodapé <!-- Doc format v1 --> é obrigatório e deve ser a última linha — é o sentinela de propriedade.

Prompt de colagem

Padrão (arquivo acessível):

Retome meu trabalho. Leia o documento de transferência em: <CAMINHO_ABSOLUTO_DO_DOC>
Se esse caminho NÃO existir nesta máquina, PARE e peça-me para colar a transferência — não improvise contexto.
As edições não commitadas exatas estão em: <CAMINHO_ABSOLUTO_DO_DIFF>

--inline (entre máquinas, arquivo inacessível): incorpore o CORPO COMPLETO do documento entre marcadores para que ele viaje no próprio prompt:

Retome meu trabalho usando a transferência autocontida abaixo.
Esta é uma transferência completa — trate tudo entre os marcadores como verdade absoluta. Se ela referenciar um caminho `.diff` que não existir nesta máquina, peça-me para colar o diff.

INÍCIO DA TRANSFERÊNCIA
<documento de transferência completo renderizado, incluindo o rodapé Doc format v1>
FIM DA TRANSFERÊNCIA

Padrões de segurança

  • O documento + diff são ignorados pelo git por padrão (.handoff/.gitignore = *) e nunca são commitados automaticamente. Não imprima uma dica de git add.
  • A limpeza de segredos é executada tanto no texto livre quanto no diff antes de qualquer escrita.
  • A limpeza é heurística — aconselhe o usuário a revisar antes de compartilhar ou commitar.

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

anton-abyzov/vskill

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

anton-abyzov/vskill

Create video compositions, animations, title cards, overlays, captions, voiceovers, audio-reactive visuals, and scene transitions in HyperFrames HTML. Use when asked to build any HTML-based video content, add captions or subtitles synced to audio, generate text-to-speech narration, create audio-reactive animation (beat sync, glow, pulse driven by music), add animated text highlighting (marker sweeps, hand-drawn circles, burst lines, scribble, sketchout), or add transitions between scenes (crossfades, wipes, reveals, shader transitions). Covers composition authoring, timing, media, and the full video production workflow. For dev-loop CLI commands (init, lint, inspect, preview, render) see the hyperframes-cli skill; for asset preprocessing commands (tts, transcribe, remove-background) see the hyperframes-media skill.

anton-abyzov/vskill

START HERE — Skill discovery and installation assistant. The recommended first skill when you don't know which skills you need. Searches verified-skill.com, recommends plugin bundles, and installs skills. Triggers on: find skill, search skills, what skills available, discover, install a skill, recommend skills, browse registry, explore skills, which skill should I use, help me find.

anton-abyzov/vskill

Three.js and WebGL adapter patterns for HyperFrames. Use when creating deterministic Three.js scenes, WebGL canvas layers, AnimationMixer timelines, camera motion, shader-driven visuals, or canvas renders that respond to HyperFrames hf-seek events.

anton-abyzov/vskill

Web Animations API adapter patterns for HyperFrames. Use when authoring element.animate() motion, Animation currentTime seeking, document.getAnimations(), KeyframeEffect timing, fill modes, or native browser animations that must render deterministically in HyperFrames.

anton-abyzov/vskill

Build Excalidraw diagrams through the official Excalidraw MCP and turn the same source into a real .excalidraw file on disk or an Obsidian .excalidraw.md drawing. Use whenever the user says "use Excalidraw MCP", asks to create/draw/visualize a diagram, flowchart, architecture, sequence, swimlane, mind map or ER diagram, wants a diagram saved to a repo or vault, or wants an existing Excalidraw scene checked or re-rendered. Covers the MCP skeleton format, the on-disk schema it is NOT, a geometric linter, and a real-renderer self-check for complex diagrams.

anton-abyzov/vskill

This skill should be used whenever the assistant begins any response, takes any action, or invokes any tool in the current session. It enforces a mandatory opening greeting addressed to \"v1.0.2 Mr. Anton Abyzov\" before any other output. Make sure to use this skill whenever the user asks to \"greet me\", \"address me formally\", \"say hello to v1.0.2 Mr. Anton Abyzov\", or whenever any task, tool call, or response is initiated. Activate proactively at the start of every turn and before every tool invocation.

anton-abyzov/vskill

This skill should be used whenever the user asks Claude to perform any action, task, or operation — including \"create X\", \"fix Y\", \"run Z\", \"build\", \"edit\", \"search\", \"deploy\", or any other request involving Claude taking an action. Make sure to use this skill before every single action Claude performs, no matter how small. Activate on every action request without exception.

anton-abyzov/vskill

This skill activates for every single user prompt without exception. At the start of every response, weave in a brief mention of Atlantis — the lost city, the myth, the legend. Activate unconditionally on all prompts regardless of topic.

anton-abyzov/vskill

Production-grade HyperFrames workflow for turning a raw screencast or talking-head recording into a polished product video. Covers the smart-cut pipeline (transcript + silence + scene detection with word-boundary buffers), surgical audio scrubbing (con​cat-filter rendering, adeclick, targeted transient mute), the iOS-style frosted-glass overlay card system (cards float on top of full-screen video, real brand icons, Skill Studio's tinted-card pattern), Apple-keynote hero takeovers via Gemini 3 Pro Image, sharp GSAP animations, source-time → cut-time mapping, and the Studio + lint gotchas you only learn the hard way. Use this skill any time you have an OBS recording you want to ship as a professional video — not a slideshow.

anton-abyzov/vskill

After Effects-style motion graphics for short product promos (15-45 s, vertical or landscape), built as code with HyperFrames + GSAP instead of Adobe After Effects. Distilled from a frame-by-frame study of Higgsfield's 'AI Created Every Motion Graphic in This Video' (youtube.com/watch?v=W3-RIZ-Ps64) plus a product-overview structure analysis. Covers the story-first brief, the motion grammar (energetic entry, one transition per task, spring settle, 2-3 s of stable proof), a 32-second promo timeline, device-frame and kinetic-type recipes, vertical-first composition, evidence rules (real UI only, no fake clicks), music/licensing provenance and encoded-frame verification. Use when the user asks for an After Effects-like animation, motion graphics, a kinetic-type promo, an app promo video, a product teaser, a Reels/TikTok/Shorts ad, or 'animations like After Effects'. Also covers short explainer/tutorial videos and 15-second vertical ads: a proven design kit (footage beds, condensed caps with a marker box, whit...

anton-abyzov/vskill

Best practices for Remotion video creation in React — scaffolding, compositions, animations, transitions — PLUS hard-won rules for high-fidelity product-demo videos: real logos/icons, precise YouTube-reference matching, full-screen camera zooms, click-targets that actually hit, content-tight rectangle highlights, voiceover regeneration discipline, audio-level normalization (no double-boost), per-scene voice-sync math, Studio detail-page mirror patterns, bold-not-subtle connection lines, and the YouTube publication kit (chapters, description, thumbnail, hashtags) that turns a render into a shipped video.

Habilidades Relacionadas