Communitygithub.com

SamuelChien/mega-skills-collection

Les outils sont la manière dont les agents IA interagissent avec le monde. Un outil bien conçu fait la différence entre un agent qui fonctionne et un qui hallucine, échoue silencieusement ou coûte 10 fois plus de tokens que nécessaire. Cette compétence couvre la conception d'outils, du schéma à la gestion des erreurs.

Qu'est-ce que mega-skills-collection ?

Cette compétence est un guide complet pour la conception d'outils pour agents IA, couvrant tout, de la définition de schémas JSON à la gestion avancée des erreurs. Elle est cruciale car la qualité des descriptions d'outils a un impact direct sur la précision de l'agent – les LLM ne voient que le schéma et la description, jamais le code sous-jacent. La compétence met l'accent sur des principes clés tels que la limitation à moins de 20 outils, l'importance des descriptions détaillées des paramètres, l'utilisation d'énumérations, et la gestion explicite des erreurs pour éviter les échecs silencieux qui empoisonnent les performances de l'agent. Elle prend en charge les plateformes majeures via des frameworks comme le SDK Anthropic, OpenAI Functions, Vercel AI SDK, et LangChain, et couvre le standard émergent MCP (Model Context Protocol) pour des outils réutilisables et multiplateformes. La compétence propose des modèles concrets, des exemples de code (Python et TypeScript), et des meilleures pratiques pour la conception de schémas, la gestion des erreurs avec des suggestions de récupération, et l'exécution parallèle d'outils. Que vous construisiez un assistant simple ou un système multi-agents complexe, cette compétence vous donne les bases pour créer des outils fiables, précis et efficaces.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SamuelChien/mega-skills-collection/tree/HEAD/agent-tool-builder

Demander à votre IA préférée

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

Documentation

Agent Tool Builder

Les outils sont la manière dont les agents IA interagissent avec le monde. Un outil bien conçu fait la différence entre un agent qui fonctionne et un qui hallucine, échoue silencieusement ou coûte 10 fois plus de tokens que nécessaire.

Cette compétence couvre la conception d'outils, du schéma à la gestion des erreurs. Meilleures pratiques JSON Schema, rédaction de descriptions qui aident réellement le LLM, validation, et le standard MCP émergent qui devient la lingua franca pour les outils IA.

Insight clé : Les descriptions d'outils sont plus importantes que les implémentations d'outils. Le LLM ne voit jamais votre code - il ne voit que le schéma et la description.

Principes

  • La qualité de la description > la qualité de l'implémentation pour la précision du LLM
  • Visez moins de 20 outils - plus crée de la confusion
  • Chaque outil a besoin d'une gestion d'erreur explicite - les échecs silencieux empoisonnent les agents
  • Retournez des chaînes de caractères, pas des objets - les LLM traitent le texte
  • Validez avant l'exécution - rejetez, corrigez ou escaladez, ne jamais échouer silencieusement
  • Testez les outils avec le LLM, pas seulement avec des tests unitaires

Capacités

  • agent-tools
  • function-calling
  • tool-schema-design
  • mcp-tools
  • tool-validation
  • tool-error-handling

Périmètre

  • multi-agent-coordination → multi-agent-orchestration
  • agent-memory → agent-memory-systems
  • api-design → api-designer
  • llm-prompting → prompt-engineering

Outillage

Standards

  • JSON Schema - Quand : toutes les définitions d'outils. Remarque : le format universel pour les schémas d'outils
  • MCP (Model Context Protocol) - Quand : construction d'outils réutilisables et multiplateformes. Remarque : le standard ouvert d'Anthropic, largement adopté

Frameworks

  • SDK Anthropic - Quand : agents basés sur Claude. Remarque : le runner d'outils bêta gère la plupart de la complexité
  • OpenAI Functions - Quand : agents basés sur OpenAI. Remarque : utilisez le mode strict pour garantir la conformité du schéma
  • SDK Vercel AI - Quand : gestion d'outils multi-fournisseurs. Remarque : abstrait les différences entre les fournisseurs
  • LangChain Tools - Quand : agents basés sur LangChain. Remarque : convertit les outils MCP au format LangChain

Modèles

Conception de schéma d'outil

Créer des schémas JSON clairs et sans ambiguïté pour les outils

Quand l'utiliser : définition de tout nouvel outil pour un agent

MEILLEURES PRATIQUES DE SCHÉMA D'OUTIL :

1. Descriptions détaillées (le plus important)

""" MAUVAIS - Trop vague : { "name": "get_stock_price", "description": "Obtient le prix de l'action", "input_schema": { "type": "object", "properties": { "ticker": {"type": "string"} } } }

BON - Complet : { "name": "get_stock_price", "description": "Récupère le prix actuel de l'action pour un symbole boursier donné. Le symbole boursier doit être un symbole valide pour une société cotée en bourse sur une grande bourse américaine comme NYSE ou NASDAQ. Retourne le dernier prix de transaction en USD. À utiliser lorsque l'utilisateur demande des prix d'actions actuels ou récents. Ne fournit PAS de données historiques, d'informations sur la société ou de prédictions.", "input_schema": { "type": "object", "properties": { "ticker": { "type": "string", "description": "Le symbole boursier, par ex. AAPL pour Apple Inc." } }, "required": ["ticker"] } } """

2. Descriptions des paramètres

""" Chaque paramètre a besoin :

  • De quoi il s'agit
  • Du format attendu
  • D'un exemple de valeur
  • Des cas limites/limitations

{ "location": { "type": "string", "description": "Ville et état/pays. Format : 'Ville, État' pour les États-Unis (par ex., 'San Francisco, CA') ou 'Ville, Pays' pour l'international (par ex., 'Tokyo, Japon'). N'utilisez pas de codes postaux ou de coordonnées." }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Unité de température. Par défaut, utilise la locale de l'utilisateur si non spécifié. Utilisez 'fahrenheit' pour les utilisateurs américains, 'celsius' pour les autres." } } """

3. Utilisez des énumérations quand c'est possible

""" Les énumérations contraignent le LLM à des valeurs valides :

"priority": { "type": "string", "enum": ["low", "medium", "high", "critical"], "description": "Niveau de priorité de la tâche" }

"action": { "type": "string", "enum": ["create", "read", "update", "delete"], "description": "L'opération CRUD à effectuer" } """

4. Requis vs Optionnel

""" Soyez explicite sur ce qui est requis :

{ "type": "object", "properties": { "query": {...}, // Requis "limit": {...}, // Optionnel avec valeur par défaut "offset": {...} // Optionnel }, "required": ["query"], "additionalProperties": false // Mode strict } """

Outil avec exemples d'entrée

Utiliser des exemples pour guider l'utilisation des outils par le LLM

Quand l'utiliser : outils complexes avec des objets imbriqués ou des entrées sensibles au format

EXEMPLES D'UTILISATION D'OUTIL (Fonctionnalité bêta d'Anthropic) :

""" Les exemples montrent à Claude des modèles concrets que les schémas ne peuvent pas exprimer. Améliore la précision de 72 % à 90 % pour les opérations complexes. """

{ "name": "create_calendar_event", "description": "Crée un événement de calendrier avec des participants et des rappels optionnels", "input_schema": { "type": "object", "properties": { "title": {"type": "string", "description": "Titre de l'événement"}, "start_time": { "type": "string", "description": "Date-heure ISO 8601, par ex. 2024-03-15T14:00:00Z" }, "duration_minutes": {"type": "integer", "description": "Durée de l'événement"}, "attendees": { "type": "array", "items": {"type": "string"}, "description": "Adresses e-mail des participants" } }, "required": ["title", "start_time", "duration_minutes"] }, "input_examples": [ { "title": "Réunion d'équipe", "start_time": "2024-03-15T09:00:00Z", "duration_minutes": 30, "attendees": ["[email protected]", "[email protected]"] }, { "title": "Brève discussion", "start_time": "2024-03-15T14:00:00Z", "duration_minutes": 15 }, { "title": "Revue de projet", "start_time": "2024-03-15T16:00:00-05:00", "duration_minutes": 60, "attendees": ["[email protected]"] } ] }

PRINCIPES DE CONCEPTION DES EXEMPLES :

- Utilisez des données réalistes, pas des espaces réservés

- Montrez des motifs de spécification minimaux, partiels et complets

- Restez concis : 1 à 5 exemples par outil

- Concentrez-vous sur les cas ambigus

Gestion des erreurs d'outil

Retourner des erreurs qui aident le LLM à se rétablir

Quand l'utiliser : tout outil pouvant échouer

MEILLEURES PRATIQUES DE GESTION DES ERREURS :

Retournez des erreurs informatives

""" MAUVAIS : {"error": "Échec"} {"error": true}

BON : { "error": true, "error_type": "not_found", "message": "L'emplacement 'Atlantis' est introuvable dans la base de données météo. Veuillez fournir un nom de ville réel comme 'San Francisco, CA'.", "suggestions": ["San Francisco, CA", "Los Angeles, CA"] } """

Résultat d'outil Anthropic avec erreur

""" { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Erreur : L'emplacement 'Atlantis' est introuvable dans la base de données météo. Veuillez fournir un nom de ville réel comme 'San Francisco, CA'.", "is_error": true } """

Catégories d'erreurs à gérer

"""

  1. Erreurs de validation d'entrée

    • Paramètres requis manquants
    • Format invalide
    • Valeurs hors plage
  2. Erreurs de service externe

    • API indisponible
    • Limite de débit atteinte
    • Délai d'attente dépassé
  3. Erreurs de logique métier

    • Ressource introuvable
    • Permission refusée
    • Conflit/doublon
  4. Erreurs internes

    • Exceptions inattendues
    • Corruption de données """

Modèle d'implémentation

""" from dataclasses import dataclass from typing import Union

@dataclass class ToolResult: success: bool content: str error_type: str = None suggestions: list[str] = None

def to_response(self) -> dict:
    if self.success:
        return {"content": self.content}
    return {
        "content": f"Erreur ({self.error_type}) : {self.content}",
        "is_error": True
    }

def get_weather(location: str) -> ToolResult: # Valider l'entrée if not location or len(location) < 2: return ToolResult( success=False, content="L'emplacement doit comporter au moins 2 caractères", error_type="validation_error" )

try:
    data = weather_api.fetch(location)
    return ToolResult(
        success=True,
        content=f"Température : {data.temp}°F, Conditions : {data.conditions}"
    )
except LocationNotFound:
    return ToolResult(
        success=False,
        content=f"Emplacement '{location}' introuvable",
        error_type="not_found",
        suggestions=weather_api.suggest_locations(location)
    )
except RateLimitError:
    return ToolResult(
        success=False,
        content="Limite de débit du service météo dépassée. Réessayez dans 60 secondes.",
        error_type="rate_limit"
    )
except Exception as e:
    return ToolResult(
        success=False,
        content=f"Erreur inattendue : {str(e)}",
        error_type="internal_error"
    )

"""

Modèle d'outil MCP

Construire des outils en utilisant le Model Context Protocol

Quand l'utiliser : créer des outils réutilisables et multiplateformes

IMPLÉMENTATION D'OUTIL MCP :

""" MCP (Model Context Protocol) est le standard ouvert d'Anthropic pour connecter des agents IA à des systèmes externes. Construisez une fois, utilisez partout. """

Serveur MCP de base (TypeScript)

""" import { Server } from "@modelcontextprotocol/sdk/server"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio";

const server = new Server({ name: "weather-server", version: "1.0.0" });

// Définir les outils server.setRequestHandler("tools/list", async () => ({ tools: [ { name: "get_weather", description: "Obtenir la météo actuelle pour un emplacement. Retourne la température, les conditions et l'humidité. Utilisez pour les demandes météo concernant des villes spécifiques.", inputSchema: { type: "object", properties: { location: { type: "string", description: "Ville et état, par ex. 'San Francisco, CA'" }, unit: { type: "string", enum: ["celsius", "fahrenheit"], default: "fahrenheit" } }, required: ["location"] } } ] }));

// Gérer les appels d'outils server.setRequestHandler("tools/call", async (request) => { const { name, arguments: args } = request.params;

if (name === "get_weather") { try { const weather = await fetchWeather(args.location, args.unit); return { content: [ { type: "text", text: JSON.stringify(weather) } ] }; } catch (error) { return { content: [ { type: "text", text: Erreur : ${error.message} } ], isError: true }; } }

throw new Error(Outil inconnu : ${name}); });

// Démarrer le serveur const transport = new StdioServerTransport(); await server.connect(transport); """

Avantages de MCP

"""

  • Compatibilité universelle entre les fournisseurs de LLM
  • Bibliothèques d'outils réutilisables
  • Prise en charge du streaming et du transport SSE
  • Observabilité intégrée
  • Contrôles d'accès aux outils """

Modèle de runner d'outil

Utiliser les runners d'outils SDK pour une gestion automatique

Quand l'utiliser : construire des boucles d'outils sans gestion manuelle

RUNNER D'OUTIL (SDK Anthropic Bêta) :

""" Le runner d'outils gère automatiquement la boucle d'appels d'outils :

  • Exécute les outils lorsque Claude les appelle
  • Gère l'état de la conversation
  • Gère les tentatives d'erreur
  • Fournit un support de streaming """

Exemple Python

""" import anthropic from anthropic import beta_tool

client = anthropic.Anthropic()

@beta_tool def get_weather(location: str, unit: str = "fahrenheit") -> str: '''Obtenir la météo actuelle dans un lieu donné.

Args:
    location: La ville et l'état, par ex. San Francisco, CA
    unit: Unité de température, soit 'celsius' soit 'fahrenheit'
'''
# Implémentation
return json.dumps({"temperature": "72°F", "conditions": "Ensoleillé"})

@beta_tool def search_web(query: str) -> str: '''Rechercher des informations sur le web.

Args:
    query: La requête de recherche
'''
# Implémentation
return json.dumps({"results": [...]})

Le runner d'outils gère la boucle

runner = client.beta.messages.tool_runner( model="claude-sonnet-4-5", max_tokens=1024, tools=[get_weather, search_web], messages=[ {"role": "user", "content": "Quel temps fait-il à Paris ?"} ] )

Traiter chaque message

for message in runner: print(message.content[0].text)

Ou obtenir simplement le résultat final

final = runner.until_done() """

TypeScript avec Zod

""" import { Anthropic } from '@anthropic-ai/sdk'; import { betaZodTool } from '@anthropic-ai/sdk/helpers/beta/zod'; import { z } from 'zod';

const anthropic = new Anthropic();

const getWeatherTool = betaZodTool({ name: 'get_weather', description: 'Obtenir la météo actuelle dans un lieu donné', inputSchema: z.object({ location: z.string().describe('Ville et état, par ex. San Francisco, CA'), unit: z.enum(['celsius', 'fahrenheit']).default('fahrenheit') }), run: async (input) => { // Entrée typée sécurisée ! return JSON.stringify({temperature: '72°F'}); } });

const runner = anthropic.beta.messages.toolRunner({ model: 'claude-sonnet-4-5', max_tokens: 1024, tools: [getWeatherTool], messages: [{ role: 'user', content: "Quel temps fait-il à Paris ?" }] });

for await (const message of runner) { console.log(message.content[0].text); } """

Exécution parallèle d'outils

Exécuter plusieurs outils simultanément

Quand l'utiliser : appels d'outils indépendants pouvant être exécutés en parallèle

EXÉCUTION PARALLÈLE D'OUTILS :

""" Par défaut, Claude peut appeler plusieurs outils dans une seule réponse. Cela réduit considérablement la latence pour les opérations indépendantes. """

Gestion des résultats parallèles

"""

Claude retourne plusieurs blocs tool_use :

response.content = [ {"type": "text", "text": "Je vais vérifier les deux endroits..."}, {"type": "tool_use", "id": "toolu_01", "name": "get_weather", "input": {"location": "San Francisco, CA"}}, {"type": "tool_use", "id": "toolu_02", "name": "get_weather", "input": {"location": "New York, NY"}}, {"type": "tool_use", "id": "toolu_03", "name": "get_time", "input": {"timezone": "America/Los_Angeles"}}, {"type": "tool_use", "id": "toolu_04", "name": "get_time", "input": {"timezone": "America/New_York"}} ]

Idéal pour :

- Vérifications simultanées de météo

- Récupération de données indépendantes

- Opérations sans ordre spécifique

"""

Considérations sur le parallélisme

"""

  1. Additif vs multiplicatif : les coûts des tokens augmentent avec les résultats des outils. Chaque résultat parallèle ajoute des tokens à la conversation.

  2. Dépendances : vérifiez que les outils n'ont pas de dépendances cachées entre eux. L'exécution parallèle suppose l'indépendance.

  3. Taux de succès : si un outil échoue, le message d'erreur est inclus dans la conversation. Claude peut s'adapter et réessayer si l'erreur est informative.

  4. Limites : Claude a un plafond d'appels d'outils simultanés (actuellement 5-10 selon le modèle). Au-delà, les appels sont mis en file d'attente et exécutés séquentiellement. """

Modèle des limites d'outils

Gérer les limites de débit et les quotas d'utilisation

Quand l'utiliser : outils interagissant avec des API ayant des limites de débit, ou lorsque vous devez contrôler les coûts

LIMITES D'OUTILS :

""" Les outils avec des limites d'API nécessitent une gestion prudente pour éviter de gaspiller des appels. """

Modèle de limitation

""" import time from datetime import datetime, timedelta from collections import deque

class RateLimiter: def init(self, max_calls: int, window_seconds: int): self.max_calls = max_calls self.window = timedelta(seconds=window_seconds) self.calls: deque = deque()

def can_call(self) -> bool:
    now = datetime.now()
    # Nettoyer les appels expirés
    while self.calls and self.calls[0] < now - self.window:
        self.calls.popleft()
    return len(self.calls) < self.max_calls

def record_call(self):
    self.calls.append(datetime.now())

def rate_limited_tool(name: str, rate_limiter: RateLimiter): def decorator(func): def wrapper(*args, **kwargs): if not rate_limiter.can_call(): retry_after = int((rate_limiter.calls[0] + rate_limiter.window - datetime.now()).total_seconds()) return ToolResult( success=False, content=f"Limite de taux atteinte pour {name}. " f"Réessayez dans {retry_after} secondes.", error_type="rate_limit", suggestions=[f"Réessayez dans {retry_after} secondes"] ) rate_limiter.record_call() return func(*args, **kwargs) return wrapper return decorator

Utilisation

weather_limiter = RateLimiter(max_calls=10, window_seconds=60)

@rate_limited_tool("get_weather", weather_limiter) def get_weather(location: str) -> ToolResult: # Implémentation pass """

Modèle de limitation des coûts

""" class CostTracker: def init(self, budget: float): self.budget = budget self.total_cost = 0.0

def check_cost(self, estimated_cost: float) -> bool:
    return self.total_cost + estimated_cost <= self.budget

def record_cost(self, cost: float):
    self.total_cost += cost

def cost_aware_tool(func): def wrapper(*args, **kwargs): cost = estimate_tool_cost(func.name, args, kwargs) if not cost_tracker.check_cost(cost): return ToolResult( success=False, content=f"Coût estimé ${cost:.4f} dépasserait le budget " f"restant de ${cost_tracker.budget - cost_tracker.total_cost:.4f}", error_type="budget_exceeded" ) result = func(*args, **kwargs) cost_tracker.record_cost(cost) return result return wrapper """

Modèle de journalisation des outils

Journaliser les appels d'outils pour le débogage et la surveillance

Quand l'utiliser : développement et production pour suivre le comportement des outils

JOURNALISATION DES OUTILS :

""" La journalisation est essentielle pour le débogage des agents. Sans elle, vous ne pouvez pas dire ce que l'agent a réellement fait. """

Modèle de journalisation simple

""" import logging import json from functools import wraps

logger = logging.getLogger("agent.tools")

def logged_tool(func): @wraps(func) def wrapper(*args, **kwargs): tool_name = func.name logger.info(f"Appel d'outil : {tool_name}", extra={ "arguments": kwargs, "timestamp": datetime.now().isoformat() }) try: result = func(*args, **kwargs) logger.info(f"Résultat de l'outil : {tool_name}", extra={ "result": result.content if hasattr(result, 'content') else result, "success": result.success if hasattr(result, 'success') else True }) return result except Exception as e: logger.error(f"Erreur d'outil : {tool_name}", extra={"error": str(e)}) raise return wrapper

@logged_tool def get_weather(location: str) -> ToolResult: # Implémentation pass """

Modèle de traçage structuré

""" from dataclasses import dataclass, field from datetime import datetime import uuid

@dataclass class ToolTrace: tool_name: str input: dict output: str success: bool duration_ms: float timestamp: datetime = field(default_factory=datetime.now) trace_id: str = field(default_factory=lambda: str(uuid.uuid4())) error_type: str = None

class ToolTracer: def init(self): self.traces: list[ToolTrace] = []

def trace(self,
          tool_name: str,
          input: dict,
          output: str,
          success: bool,
          duration_ms: float,
          error_type: str = None):
    trace = ToolTrace(
        tool_name=tool_name,
        input=input,
        output=output,
        success=success,
        duration_ms=duration_ms,
        error_type=error_type
    )
    self.traces.append(trace)
    return trace

def get_failed_traces(self):
    return [t for t in self.traces if not t.success]

def get_summary(self):
    total = len(self.traces)
    failed = len(self.get_failed_traces())
    return {
        "total_calls": total,
        "failed_calls": failed,
        "success_rate": (total - failed) / total if total > 0 else 0,
        "avg_duration_ms": sum(t.duration_ms for t in self.traces) / total if total > 0 else 0
    }

"""

Résumé

  • Les descriptions d'outils sont plus importantes que l'implémentation
  • Validez toujours les entrées avant d'appeler l'implémentation
  • Utilisez MCP pour les outils multiplateformes
  • Gérez les erreurs de manière à ce que le LLM puisse les comprendre et s'en remettre
  • Testez les outils avec des LLM réels, pas seulement avec des tests unitaires
  • Surveillez l'utilisation des outils et les coûts en production

Individual skills in this repo

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

SamuelChien/mega-skills-collection

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

SamuelChien/mega-skills-collection

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

SamuelChien/mega-skills-collection

Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.

SamuelChien/mega-skills-collection

Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.

SamuelChien/mega-skills-collection

2D game development principles. Sprites, tilemaps, physics, camera.

SamuelChien/mega-skills-collection

3D game development principles. Rendering, shaders, physics, cameras.

SamuelChien/mega-skills-collection

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

SamuelChien/mega-skills-collection

Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases. Use when auditing accessibility, fixing a11y violations, checking color contrast, generating compliance reports, or integrating accessibility checks into CI/CD pipelines.

SamuelChien/mega-skills-collection

Ab Test Analyzer - Auto-activating skill for Data Analytics. Triggers on: ab test analyzer, ab test analyzer Part of the Data Analytics skill category.

SamuelChien/mega-skills-collection

A B Test Config Creator - Auto-activating skill for ML Deployment. Triggers on: a b test config creator, a b test config creator Part of the ML Deployment skill category.

SamuelChien/mega-skills-collection

When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.

SamuelChien/mega-skills-collection

Acceptance Criteria Creator - Auto-activating skill for Enterprise Workflows. Triggers on: acceptance criteria creator, acceptance criteria creator Part of the Enterprise Workflows skill category.

SamuelChien/mega-skills-collection

Use when a coding task should be driven end-to-end from issue intake through implementation, review, deployment, and acceptance verification with minimal human re-intervention.

SamuelChien/mega-skills-collection

Accessibility Audit Runner - Auto-activating skill for Frontend Development. Triggers on: accessibility audit runner, accessibility audit runner Part of the Frontend Development skill category.

SamuelChien/mega-skills-collection

You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.

SamuelChien/mega-skills-collection

Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing

SamuelChien/mega-skills-collection

Manage Discord channel access — approve pairings, edit allowlists, set DM/group policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Discord channel.

SamuelChien/mega-skills-collection

Create unified specification packages across Business, Development, and Design teams. Staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria) to build shared understanding. Does not write code.

SamuelChien/mega-skills-collection

Research a company or person and get actionable sales intel. Works standalone with web search, supercharged when you connect enrichment tools or your CRM. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]", or "tell me about [company]".

SamuelChien/mega-skills-collection

Validate messaging consistency across website, GitHub repos, and local documentation generating read-only discrepancy reports. Use when checking content alignment or finding mixed messaging. Trigger with phrases like "check consistency", "validate documentation", or "audit messaging".

Skills associés