Communitygithub.com

anton-abyzov/vskill

Transfiere tu trabajo en curso a CUALQUIER otra herramienta de codificación con IA para continuar exactamente donde lo dejaste; funciona en 8+ herramientas (Claude Code, Codex, OpenCode, Gemini, Antigravity, Cursor, Aider, Cline/Roo, Windsurf).

¿Qué es vskill?

Esta habilidad permite transferir sin problemas el progreso del trabajo entre diferentes herramientas de codificación con IA (Claude Code, Codex, OpenCode, Gemini, Antigravity, Cursor, Aider, Cline/Roo, Windsurf) generando un documento de transferencia autocontenido y portátil. A diferencia de los formatos de sesión propietarios que cada herramienta utiliza, solo un documento de texto plano es universalmente legible. La habilidad captura el estado actual de git, las ediciones no confirmadas, las decisiones clave y los próximos pasos mediante un breve cuestionario, luego limpia secretos (tokens API, claves) y produce un documento markdown estándar que cualquier agente de IA puede comprender inmediatamente. Funciona en modo acelerado si la CLI `specweave` está disponible (mayor fidelidad) o de forma completamente autónoma solo con `git` y un shell. El documento resultante incluye un enlace de reanudación, un diff completo y un mensaje de reanudación listo para copiar y pegar, lo que hace que el cambio de herramienta, máquina o el manejo de la falta de tokens sea fluido y sin pérdida de contexto.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

/handoff — Transferencia de trabajo entre herramientas

Ninguna herramienta de codificación con IA puede leer la transcripción de otra: Claude Code bloquea las sesiones en ~/.claude/projects/<munged-cwd>/<uuid>.jsonl, Codex/OpenCode en sus propios almacenes, Antigravity en .pb cifrados. Lo único portátil entre herramientas es un documento autocontenido. Esta habilidad escribe ese documento — tu objetivo actual, decisiones y las ediciones EXACTAS no confirmadas — para que cualquier otro agente de IA pueda continuar donde lo dejaste, sin que tengas que volver a explicar nada.

Usa esta habilidad cuando el usuario tenga pocos tokens, quiera cambiar de herramienta en medio de una tarea, esté cambiando de máquina, o diga "handoff" / "continue elsewhere" / "out of tokens".

Esta habilidad es autocontenida: funciona solo con git + un shell. Llama a specweave handoff como un acelerador opcional cuando ese binario está en PATH (alta fidelidad, consciente de incrementos) — pero no tiene dependencia obligatoria de que SpecWeave esté instalado.


Decisión: qué camino tomar

command -v specweave >/dev/null 2>&1 && echo "ACCELERATOR" || echo "STANDALONE"
  • ACELERADOR (specweave en PATH) → ejecuta el motor, muestra su salida. Ve al Camino A.
  • AUTÓNOMO (sin specweave) → construye el documento tú mismo desde git + una breve entrevista. Ve al Camino B.

Ambos caminos emiten el mismo formato de documento y el mismo mensaje de pegado (ver la plantilla canónica más abajo), por lo que una transferencia se puede continuar en cualquier herramienta independientemente del camino que la produjo.


Camino A — Acelerador (specweave en PATH)

Ejecuta el motor, reenviando cualquier contexto breve que puedas proporcionar de forma económica:

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

Luego muestra su stdout textualmente, en orden (no reordenes ni parafrasees):

  1. ruta absoluta del documento como texto plano (PRIMERO), 2. enlace markdown con clic, 3. ruta del .diff,
  2. mensaje de reanudación listo para copiar y pegar (entre comillas), 5. consejos por herramienta "encuentra tu sesión de origen".

Listo. El motor se encargó de la detección del espacio de trabajo, el análisis de tareas/CA, la captura de git, el volcado completo del diff, la limpieza de secretos y el renderizado.


Camino B — Autónomo (sin specweave)

Construye un documento compatible a nivel de bytes usando solo el shell.

B1. Capturar el estado de git (gratis — sin tokens)

ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "$ROOT/.handoff"
printf '*\n' > "$ROOT/.handoff/.gitignore"   # nunca permitir que la transferencia o su diff entren en git

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

# Ediciones no confirmadas completas → archivo .diff hermano (árbol de trabajo + staged), el artefacto de fidelidad clave
{ git -C "$ROOT" diff HEAD 2>/dev/null; git -C "$ROOT" diff --cached 2>/dev/null; } > "$ROOT/.handoff/handoff.diff"

B2. Entrevista de cinco preguntas (solo los campos no derivables)

Pregunta al usuario (mantén ~5 cadenas cortas — económicas incluso con tokens agotados):

  1. razón — ¿por qué estás transfiriendo? (ej. "sin tokens")
  2. resumen — una línea: ¿cómo están las cosas?
  3. siguiente — el siguiente paso exacto.
  4. problema — ¿algo que el próximo agente NO deba hacer / deba saber?
  5. decisiones — decisiones clave ya tomadas (separadas por punto y coma).

B3. Limpieza de secretos (antes de escribir — TANTO en el texto libre COMO en el diff)

Reemplaza las coincidencias con [REDACTADO-<tipo>] y cuenta por patrón. Patrones (12): sk-, ghp_, gho_, ghs_, AKIA, ASIA, -----BEGIN, vsk_, xox[bap]-, Bearer , password=, api_key=.

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

La limpieza es heurística — una lista de redacción vacía NO es garantía de que el archivo esté limpio.

B4. Escribir el documento

Escribe la plantilla canónica a continuación en $ROOT/.handoff/HANDOFF.md, completando los campos capturados + de la entrevista.

Centinela de propiedad: si ya existe un ./HANDOFF.md raíz y NO contiene el marcador Doc format v1, es un archivo externo — NO lo sobrescribas; escribe en .handoff/HANDOFF.md en su lugar (que es el valor predeterminado aquí de todos modos).

B5. Mostrar la salida — ruta absoluta primero, en este orden

  1. La ruta absoluta de .handoff/HANDOFF.md como texto plano.
  2. Un enlace markdown con clic hacia él.
  3. La ruta absoluta de .handoff/handoff.diff.
  4. El mensaje de pegado entre comillas (ver más abajo).
  5. Los consejos por herramienta "encuentra tu sesión de origen".

Plantilla canónica del documento de transferencia (EN LÍNEA — fuente única de verdad)

Renderiza estas secciones en este orden exacto, terminando con el marcador de pie de página Doc format v1. Los marcadores de posición entre corchetes se completan a partir del estado de git capturado + la entrevista. Esto refleja handoff-doc-format.ts de specweave para que un documento producido aquí sea compatible a nivel de bytes con uno producido por la CLI.

# Transferencia de Trabajo[: <título si se conoce>]

- Ruta del documento: <RUTA_ABSOLUTA_DOC>
- Enlace al documento: [<RUTA_ABSOLUTA_DOC>](<RUTA_ABSOLUTA_DOC>)
- Archivo Diff: <RUTA_ABSOLUTA_DIFF>
- Generado: <MARCATIEMPO_ISO>
- Espacio de trabajo: <RAÍZ> (sin SpecWeave)
- Git: rama `<RAMIFICACIÓN>` @ `<SHA>`

## Donde lo Dejé

**Por qué transfiero:** <razón>
**Resumen:** <resumen>
_Sin incremento activo de SpecWeave — esta es una transferencia de git + entrevista._

## Hecho / Pendiente

_Sin estado de tarea/CA de incremento disponible._

## Decisiones Clave y Problemas

- <decisión 1>
- <decisión 2>

**Problema:** <problema>

## Archivos Tocados

**SIN CONFIRMAR** — confirma, guarda provisionalmente o sigue editando ANTES de hacer cualquier cosa destructiva.

<git status --porcelain>

<git diff --stat>


Diff completo sin confirmar: `<RUTA_ABSOLUTA_DIFF>` — léelo o ejecuta `git apply --check` contra él para ver las ediciones exactas.

## Próximos Pasos Exactos

<siguiente>

## Cómo Reanudar

Si la ruta del documento anterior NO existe en la máquina en la que estás leyendo esto, DETENTE y pide al usuario que pegue la transferencia — no improvises el contexto.

Para recuperar la transcripción ORIGINAL (opcional), encuentra tu sesión de origen por herramienta:

### Claude Code
- Encontrar sesión: ls ~/.claude/projects/<munged-cwd>/ (mungir: cada carácter no alfanumérico → "-", las series NO se colapsan; ej. /Users/antonabyzov/Projects/github/specweave-umb/.claude-worktrees/x → -Users-antonabyzov-Projects-github-specweave-umb--claude-worktrees-x)
- Reanudar: `claude -r <uuid>`

### Codex
- Encontrar sesión: ls ~/.codex/sessions/ (directorio más nuevo = sesión más reciente)
- Reanudar: `codex resume <uuid>   (o: codex resume --last)`

### OpenCode
- Encontrar sesión: opencode sessions list
- Reanudar: `opencode -s <id>   (forma larga: opencode --session <id>)`

### Gemini CLI
- Encontrar sesión: ejecuta /chat list dentro de la sesión de Gemini para ver las etiquetas guardadas
- Reanudar: `/chat resume <tag>`

### Antigravity
- Encontrar sesión: abre el Administrador de Agentes de Antigravity y elige el hilo de tarea anterior
- Reanudar: `retoma el hilo desde el Administrador de Agentes de Antigravity`

### Aider
- Encontrar sesión: aider mantiene .aider.chat.history.md en la raíz del repositorio
- Reanudar: `aider --restore-chat-history`

## Redacción

- <N> cadenas de tipo `<tipo>` enmascaradas

_La limpieza es heurística (línea base de regex). Una lista de redacción vacía NO es garantía de que este archivo esté limpio — revísalo antes de compartir o confirmar._

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

Notas sobre la plantilla:

  • Si no hay cambios sin confirmar, reemplaza el cuerpo de Archivos Tocados con _Árbol de trabajo limpio — sin ediciones sin confirmar._ (o _No es un repositorio git — no se capturó ningún diff._ cuando no hay git).
  • Si no hay decisiones, el cuerpo de Decisiones Clave es _No se registraron decisiones._; omite la línea de Problema: cuando no se haya dado ningún problema.
  • El cuerpo de Redacción es _No se detectaron cadenas similares a tokens._ cuando no se enmascaró nada.
  • El marcador de pie de página <!-- Doc format v1 --> es obligatorio y debe ser la última línea — es el centinela de propiedad.

Mensaje de pegado

Predeterminado (archivo accesible):

Reanuda mi trabajo. Lee el documento de transferencia en: <RUTA_ABSOLUTA_DOC>
Si esa ruta NO existe en esta máquina, DETENTE y pídeme que pegue la transferencia — no improvises el contexto.
Las ediciones exactas sin confirmar están en: <RUTA_ABSOLUTA_DIFF>

--inline (entre máquinas, archivo inaccesible): incrusta el cuerpo COMPLETO del documento entre marcadores para que viaje en el propio mensaje:

Reanuda mi trabajo usando la transferencia autocontenida a continuación.
Esta es una transferencia completa: trata todo lo que está entre los marcadores como verdad absoluta. Si hace referencia a una ruta `.diff` que no existe en esta máquina, pídeme que pegue el diff.

COMIENZO TRANSFERENCIA
<documento de transferencia completo renderizado, incluido el pie de página Doc format v1>
FIN TRANSFERENCIA

Valores predeterminados de seguridad

  • El documento + diff están ignorados por git por defecto (.handoff/.gitignore = *) y nunca se confirman automáticamente. No imprimas una sugerencia de git add.
  • La limpieza de secretos se ejecuta tanto sobre el texto libre como sobre el diff antes de cualquier escritura.
  • La limpieza es heurística — aconseja al usuario que revise antes de compartir o confirmar.

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.

Skills relacionados