Communitygithub.com

David-Li0406/meta-skill-evloving

Automatisation du navigateur avec persistance de l'état des pages. Utilisez-la lorsque les utilisateurs demandent à naviguer sur des sites Web, remplir des formulaires, prendre des captures d'écran, extraire des données Web, tester des applications Web ou automatiser des workflows de navigation. Les phrases déclencheurs incluent "aller à [url]", "cliquer sur", "remplir le formulaire", "prendre une capture d'écran", "scraper", "automatiser", "tester le site Web", "se connecter à" ou toute demande d'interaction avec un navigateur.

Qu'est-ce que meta-skill-evloving ?

Cette compétence fournit une automatisation de navigateur avec persistance de l'état des pages entre les exécutions de scripts, adaptée à des tâches telles que la navigation, le remplissage de formulaires, les captures d'écran, l'extraction de données Web et les tests d'applications Web. Elle fonctionne en mode autonome (lancement d'un nouveau navigateur Chromium) ou en mode extension (connexion au navigateur Chrome existant de l'utilisateur pour des sessions authentifiées). L'API permet de créer ou de se connecter à des pages nommées, d'obtenir des instantanés ARIA pour découvrir des éléments et d'interagir avec eux via selectSnapshotRef, ainsi que de prendre des captures d'écran. Les scripts doivent être courts et focalisés, exécutés depuis le répertoire `skills/dev-browser/`, et la récupération des erreurs est facilitée par la persistance de l'état de la page après une défaillance.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence de navigation Dev Browser

Automatisation du navigateur qui maintient l'état de la page entre les exécutions de scripts. Écrivez des scripts courts et ciblés pour accomplir les tâches de manière incrémentale. Une fois que vous avez validé une partie d'un workflow et qu'il y a un travail répétitif à effectuer, vous pouvez écrire un script pour effectuer le travail répétitif en une seule exécution.

Choisir votre approche

  • Sites locaux/sources disponibles : Lisez d'abord le code source pour écrire les sélecteurs directement
  • Mises en page de page inconnues : Utilisez getAISnapshot() pour découvrir les éléments et selectSnapshotRef() pour interagir avec eux
  • Retour visuel : Prenez des captures d'écran pour voir ce que l'utilisateur voit

Configuration

Deux modes disponibles. Demandez à l'utilisateur si vous n'êtes pas sûr de celui à utiliser.

Mode autonome (par défaut)

Lance un nouveau navigateur Chromium pour des sessions d'automatisation fraîches.

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

Ajoutez le drapeau --headless si l'utilisateur le demande. Attendez le message Ready avant d'exécuter les scripts.

Mode extension

Se connecte au navigateur Chrome existant de l'utilisateur. Utilisez-le lorsque :

  • L'utilisateur est déjà connecté à des sites et souhaite que vous fassiez des choses derrière une expérience authentifiée qui n'est pas du développement local.
  • L'utilisateur vous demande d'utiliser l'extension

Important : Le flux principal reste le même. Vous créez des pages nommées dans son navigateur.

Démarrez le serveur relais :

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

Attendez En attente de la connexion de l'extension... suivi de Extension connectée dans la console. Pour savoir qu'un client s'est connecté et que le navigateur est prêt à être contrôlé.

Workflow :

  1. Les scripts appellent client.page("nom") comme en mode normal pour créer de nouvelles pages / se connecter à des pages existantes.
  2. L'automatisation s'exécute dans la session de navigateur réelle de l'utilisateur

Si l'extension ne s'est pas encore connectée, dites à l'utilisateur de la lancer et de l'activer. Lien de téléchargement : https://github.com/SawyerHood/dev-browser/releases

Écrire des scripts

Exécutez tous les scripts depuis le répertoire skills/dev-browser/. L'alias d'importation @/ nécessite la configuration de ce répertoire.

Exécutez les scripts en ligne en utilisant heredocs :

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

const client = await connect();
// Créer une page avec une taille de fenêtre personnalisée (optionnel)
const page = await client.page("example", { 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

Écrivez dans des fichiers tmp/ uniquement lorsque le script nécessite une réutilisation, est complexe ou que l'utilisateur le demande explicitement.

Principes clés

  1. Scripts courts : Chaque script fait UNE chose (naviguer, cliquer, remplir, vérifier)
  2. Évaluer l'état : Enregistrez/retournez l'état à la fin pour décider des prochaines étapes
  3. Noms de pages descriptifs : Utilisez "checkout", "login", pas "main"
  4. Déconnexion pour sortir : await client.disconnect() - les pages persistent sur le serveur
  5. JS simple dans evaluate : page.evaluate() s'exécute dans le navigateur - pas de syntaxe TypeScript

Boucle de workflow

Suivez ce modèle pour les tâches complexes :

  1. Écrivez un script pour effectuer une action
  2. Exécutez-le et observez la sortie
  3. Évaluez - cela a-t-il fonctionné ? Quel est l'état actuel ?
  4. Décidez - la tâche est-elle terminée ou avons-nous besoin d'un autre script ?
  5. Répétez jusqu'à ce que la tâche soit terminée

Pas de TypeScript dans le contexte du navigateur

Le code passé à page.evaluate() s'exécute dans le navigateur, qui ne comprend pas TypeScript :

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

// ❌ Faux : la syntaxe TypeScript échouera à l'exécution
const text = await page.evaluate(() => {
  const el: HTMLElement = document.body; // L'annotation de type plante dans le navigateur !
  return el.innerText;
});

Extraction de données

Pour extraire de grands ensembles de données, interceptez et rejouez les requêtes réseau plutôt que de faire défiler le DOM. Voir references/scraping.md pour le guide complet couvrant la capture de requêtes, la découverte de schémas et la relecture d'API paginée.

API Client

const client = await connect();

// Obtenir ou créer une page nommée (le viewport ne s'applique qu'aux nouvelles pages)
const page = await client.page("nom");
const pageWithSize = await client.page("nom", { viewport: { width: 1920, height: 1080 } });

const pages = await client.list(); // Lister tous les noms de pages
await client.close("nom"); // Fermer une page
await client.disconnect(); // Se déconnecter (les pages persistent)

// Méthodes ARIA Snapshot
const snapshot = await client.getAISnapshot("nom"); // Obtenir l'arbre d'accessibilité
const element = await client.selectSnapshotRef("nom", "e5"); // Obtenir un élément par référence

L'objet page est une Page Playwright standard.

Attente

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

await waitForPageLoad(page); // Après la navigation
await page.waitForSelector(".results"); // Pour des éléments spécifiques
await page.waitForURL("**/success"); // Pour une URL spécifique

Inspection de l'état de la page

Captures d'écran

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

ARIA Snapshot (Découverte d'éléments)

Utilisez getAISnapshot() pour découvrir les éléments de la page. Retourne un arbre d'accessibilité au format YAML :

- banner:
  - link "Hacker News" [ref=e1]
  - navigation:
    - link "new" [ref=e2]
- main:
  - list:
    - listitem:
      - link "Titre de l'article" [ref=e8]
      - link "328 commentaires" [ref=e9]
- contentinfo:
  - textbox [ref=e10]
    - /placeholder: "Rechercher"

Interprétation des refs :

  • [ref=eN] - Référence d'élément pour l'interaction (éléments visibles et cliquables uniquement)
  • [checked], [disabled], [expanded] - États des éléments
  • [level=N] - Niveau de titre
  • /url:, /placeholder: - Propriétés des éléments

Interagir avec les refs :

const snapshot = await client.getAISnapshot("hackernews");
console.log(snapshot); // Trouver le ref dont vous avez besoin

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

Récupération d'erreur

L'état de la page persiste après les échecs. Déboguez avec :

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 associés