Communitygithub.com

David-Li0406/meta-skill-evloving

Automatización del navegador con estado de página persistente. Úsalo cuando los usuarios pidan navegar por sitios web, rellenar formularios, tomar capturas de pantalla, extraer datos web, probar aplicaciones web o automatizar flujos de trabajo en el navegador.

¿Qué es meta-skill-evloving?

Esta skill proporciona automatización del navegador con estado de página persistente a través de múltiples ejecuciones de scripts, lo que permite tareas complejas de navegación web. Admite dos modos: un modo independiente que inicia una nueva instancia de Chromium para sesiones de automatización limpias y un modo de extensión que se conecta al navegador Chrome existente del usuario, ideal para interacciones autenticadas. Los usuarios pueden escribir scripts pequeños y enfocados para navegar, hacer clic, rellenar formularios, tomar capturas de pantalla y extraer datos, y el estado de la página se conserva entre ejecuciones. La skill también incluye un método `getAISnapshot()` para descubrir elementos de la página a través del árbol de accesibilidad y `selectSnapshotRef()` para interactuar con ellos, junto con capacidades de captura de pantalla y soporte de espera.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/David-Li0406/meta-skill-evloving/tree/HEAD/AgentSkillOS/data/skill_seeds/dev-browser

Preguntar en tu IA favorita

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

Documentación

Habilidad de Navegador Dev

Automatización del navegador que mantiene el estado de la página entre ejecuciones de scripts. Escribe scripts pequeños y enfocados para completar tareas de forma incremental. Una vez que hayas probado parte de un flujo de trabajo y haya trabajo repetido por hacer, puedes escribir un script para realizar ese trabajo repetido en una sola ejecución.

Elegir tu Enfoque

  • Sitios locales/con código fuente disponible: Lee el código fuente primero para escribir selectores directamente
  • Diseños de página desconocidos: Usa getAISnapshot() para descubrir elementos y selectSnapshotRef() para interactuar con ellos
  • Retroalimentación visual: Toma capturas de pantalla para ver lo que el usuario ve

Configuración

Dos modos disponibles. Pregunta al usuario si no está claro cuál usar.

Modo Independiente (Predeterminado)

Inicia un nuevo navegador Chromium para sesiones de automatización frescas.

./skills/dev-browser/server.sh &

Añade la bandera --headless si el usuario lo solicita. Espera el mensaje Ready antes de ejecutar scripts.

Modo Extensión

Se conecta al navegador Chrome existente del usuario. Úsalo cuando:

  • El usuario ya ha iniciado sesión en sitios y quiere que hagas cosas detrás de una experiencia autenticada que no sea de desarrollo local.
  • El usuario te pide que uses la extensión

Importante: El flujo principal sigue siendo el mismo. Creas páginas con nombre dentro de su navegador.

Inicia el servidor relay:

cd skills/dev-browser && npm i && npm run start-extension &

Espera Waiting for extension to connect... seguido de Extension connected en la consola. Para saber que un cliente se ha conectado y el navegador está listo para ser controlado.

Flujo de trabajo:

  1. Los scripts llaman a client.page("nombre") igual que en el modo normal para crear nuevas páginas / conectarse a las existentes.
  2. La automatización se ejecuta en la sesión real del navegador del usuario

Si la extensión aún no se ha conectado, dile al usuario que la lance y active. Enlace de descarga: https://github.com/SawyerHood/dev-browser/releases

Escribir Scripts

Ejecuta todos los scripts desde el directorio skills/dev-browser/. El alias de importación @/ requiere la configuración de este directorio.

Ejecuta scripts en línea usando heredocs:

cd skills/dev-browser && npx tsx <<'EOF'
import { connect, waitForPageLoad } from "@/client.js";

const client = await connect();
// Crea una página con tamaño de viewport personalizado (opcional)
const page = await client.page("ejemplo", { viewport: { width: 1920, height: 1080 } });

await page.goto("https://example.com");
await waitForPageLoad(page);

console.log({ title: await page.title(), url: page.url() });
await client.disconnect();
EOF

Escribe en archivos tmp/ solo cuando el script necesite reutilizarse, sea complejo o el usuario lo solicite explícitamente.

Principios Clave

  1. Scripts pequeños: Cada script hace UNA cosa (navegar, hacer clic, rellenar, comprobar)
  2. Evaluar estado: Registra/retorna el estado al final para decidir los siguientes pasos
  3. Nombres de página descriptivos: Usa "checkout", "login", no "principal"
  4. Desconectar para salir: await client.disconnect() - las páginas persisten en el servidor
  5. JS plano en evaluate: page.evaluate() se ejecuta en el navegador - sin sintaxis de TypeScript

Bucle de Flujo de Trabajo

Sigue este patrón para tareas complejas:

  1. Escribe un script para realizar una acción
  2. Ejecútalo y observa la salida
  3. Evalúa - ¿Funcionó? ¿Cuál es el estado actual?
  4. Decide - ¿La tarea está completa o necesitamos otro script?
  5. Repite hasta que la tarea esté terminada

Sin TypeScript en el Contexto del Navegador

El código pasado a page.evaluate() se ejecuta en el navegador, que no entiende TypeScript:

// ✅ Correcto: JavaScript plano
const text = await page.evaluate(() => {
  return document.body.innerText;
});

// ❌ Incorrecto: La sintaxis de TypeScript fallará en tiempo de ejecución
const text = await page.evaluate(() => {
  const el: HTMLElement = document.body; // ¡La anotación de tipo falla en el navegador!
  return el.innerText;
});

Extracción de Datos

Para extraer grandes conjuntos de datos, intercepta y reproduce solicitudes de red en lugar de desplazarte por el DOM. Consulta references/scraping.md para la guía completa que cubre captura de solicitudes, descubrimiento de esquemas y reproducción de API paginada.

API del Cliente

const client = await connect();

// Obtener o crear una página con nombre (viewport solo aplica a páginas nuevas)
const page = await client.page("nombre");
const pageWithSize = await client.page("nombre", { viewport: { width: 1920, height: 1080 } });

const pages = await client.list(); // Listar todos los nombres de páginas
await client.close("nombre"); // Cerrar una página
await client.disconnect(); // Desconectar (las páginas persisten)

// Métodos de instantánea ARIA
const snapshot = await client.getAISnapshot("nombre"); // Obtener árbol de accesibilidad
const element = await client.selectSnapshotRef("nombre", "e5"); // Obtener elemento por ref

El objeto page es una página estándar de Playwright.

Espera

import { waitForPageLoad } from "@/client.js";

await waitForPageLoad(page); // Después de la navegación
await page.waitForSelector(".resultados"); // Para elementos específicos
await page.waitForURL("**/exito"); // Para URL específica

Inspeccionar el Estado de la Página

Capturas de Pantalla

await page.screenshot({ path: "tmp/captura.png" });
await page.screenshot({ path: "tmp/completa.png", fullPage: true });

Instantánea ARIA (Descubrimiento de Elementos)

Usa getAISnapshot() para descubrir elementos de la página. Retorna un árbol de accesibilidad en formato YAML:

- banner:
  - enlace "Hacker News" [ref=e1]
  - navegación:
    - enlace "new" [ref=e2]
- main:
  - lista:
    - elemento de lista:
      - enlace "Título del Artículo" [ref=e8]
      - enlace "328 comentarios" [ref=e9]
- contentinfo:
  - cuadro de texto [ref=e10]
    - /placeholder: "Buscar"

Interpretación de refs:

  • [ref=eN] - Referencia de elemento para interacción (solo elementos visibles y cliqueables)
  • [checked], [disabled], [expanded] - Estados del elemento
  • [level=N] - Nivel de encabezado
  • /url:, /placeholder: - Propiedades del elemento

Interactuando con refs:

const snapshot = await client.getAISnapshot("hackernews");
console.log(snapshot); // Encuentra la ref que necesitas

const element = await client.selectSnapshotRef("hackernews", "e2");
await element.click();

Recuperación de Errores

El estado de la página persiste después de fallos. Depura con:

cd skills/dev-browser && npx tsx <<'EOF'
import { connect } from "@/client.js";

const client = await connect();
const page = await client.page("hackernews");

await page.screenshot({ path: "tmp/debug.png" });
console.log({
  url: page.url(),
  title: await page.title(),
  bodyText: await page.textContent("body").then((t) => t?.slice(0, 200)),
});

await client.disconnect();
EOF

Individual skills in this repo

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

David-Li0406/meta-skill-evloving

Create technical diagrams using Mermaid syntax for architecture, sequences, ERDs, flowcharts, and state machines. Use for visualizing system design, data flows, and processes. Triggers: diagram, mermaid, architecture diagram, sequence diagram, flowchart, ERD, entity relationship, state diagram, C4 model, component diagram, visualize, draw.

David-Li0406/meta-skill-evloving

Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks

David-Li0406/meta-skill-evloving

Complete color manipulation and green screen effects system. PROACTIVELY activate for: (1) Green screen/chromakey removal, (2) Color grading with LUTs, (3) Color correction (levels, curves, white balance), (4) Colorkey/color removal effects, (5) Hue/saturation manipulation, (6) Color space conversions (BT.709, BT.2020, HDR), (7) Color isolation effects, (8) Teal and orange look, (9) Vintage/film looks, (10) Color keying for transparency. Provides: chromakey and colorkey filters, LUT application (lut3d), curves and levels adjustment, color balance, selective color manipulation, color space handling, HDR tone mapping, professional color grading chains.

David-Li0406/meta-skill-evloving

Convert files and office documents to Markdown. Supports PDF, DOCX, PPTX, XLSX, images (with OCR), audio (with transcription), HTML, CSV, JSON, XML, ZIP, YouTube URLs, EPubs and more.

David-Li0406/meta-skill-evloving

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

David-Li0406/meta-skill-evloving

Build with OpenAI's stateless APIs - Chat Completions (GPT-5, GPT-4o), Embeddings, Images (DALL-E 3), Audio (Whisper + TTS), and Moderation. Includes Node.js SDK and fetch-based approaches for Cloudflare Workers. Use when: implementing chat completions with GPT-5/GPT-4o, streaming responses with SSE, using function calling/tools, creating structured outputs with JSON schemas, generating embeddings for RAG (text-embedding-3-small/large), generating images with DALL-E 3, editing images with GPT-Image-1, transcribing audio with Whisper, synthesizing speech with TTS (11 voices), moderating content (11 safety categories), or troubleshooting rate limits (429), invalid API keys (401), function calling failures, streaming parse errors, embeddings dimension mismatches, or token limit exceeded.

David-Li0406/meta-skill-evloving

Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.

David-Li0406/meta-skill-evloving

Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks

David-Li0406/meta-skill-evloving

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

David-Li0406/meta-skill-evloving

Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.

David-Li0406/meta-skill-evloving

Best practices for Remotion - Video creation in React

David-Li0406/meta-skill-evloving

Provides bidirectional translation (Chinese/English), grammar checking, and sentence polishing. Supports specific tense constraints, context-aware tone adjustment, and natural expression optimization. Outputs direct text without formatting.

David-Li0406/meta-skill-evloving

指导如何通过自定义注解(如@Unicom)标识Dubbo接口,利用BeanDefinitionRegistryPostProcessor在启动时扫描并动态注册ReferenceBean,实现RPC调用的封装。

David-Li0406/meta-skill-evloving

生成Python脚本,利用FFmpeg将图片序列按3x3布局合并,或将合并图拆分。要求使用subprocess模块执行命令,并支持用户交互式输入路径。

David-Li0406/meta-skill-evloving

SOP for extracting and analyzing promotional activity details, handling time formatting, location mapping, payment logic, and step-by-step process validation.

David-Li0406/meta-skill-evloving

Specializes in creating TikTok short video scripts using an anthropomorphic 'Chef' perspective to explain wildlife food chains and survival environments, utilizing real field footage.

David-Li0406/meta-skill-evloving

针对TikTok平台,以拟人化视角(如动物作为厨师)创作系列短视频脚本。重点介绍野生动物、食物链及生态环境,要求使用野外实拍素材,风格幽默且具有教育意义。

David-Li0406/meta-skill-evloving

Generates KWL (Know, Want to know, Learned) charts for educational videos, specifically BrainPOP, using simple 7th-grade language and short, concise bullet points.

David-Li0406/meta-skill-evloving

Develops DAX measures to calculate promo and regular volumes and generates a calculated table of dates excluding continuous promo date ranges, handling multiple periods and nulls.

David-Li0406/meta-skill-evloving

Tracks complex, multi-session work using the Beads issue tracker and dependency graphs, and provides persistent memory that survives conversation compaction. Use when work spans multiple sessions, has complex dependencies, or needs persistent context across compaction cycles. Trigger with phrases like "create task for", "what's ready to work on", "show task", "track this work", "what's blocking", or "update status".

Skills relacionados