Communitygithub.com

YepAPI/compétences

Intégration cmdk, déclenchement Cmd+K, recherche floue, actions groupées, navigation clavier et enregistrement dynamique d'actions.

Qu'est-ce que compétences ?

Cette compétence implémente une palette de commandes complète basée sur la bibliothèque cmdk. Elle permet aux développeurs d'ajouter une interface de navigation et de commandes accessible, rapide et avec recherche floue intégrée. Le déclencheur principal est le raccourci clavier Cmd+K (Mac) ou Ctrl+K (Windows/Linux), écouté globalement. Les actions sont organisées en groupes (Navigation, Commandes, Récent) avec des en-têtes clairs pour une meilleure organisation. La bibliothèque cmdk gère automatiquement la recherche floue, le surlignage des correspondances et le classement par score. Elle stocke les 5 à 10 derniers éléments sélectionnés dans le localStorage pour les afficher en haut lorsque la saisie est vide. Les actions peuvent être enregistrées dynamiquement depuis différentes parties de l'application, ce qui permet d'adapter les propositions au contexte de la page active (par exemple, afficher "Modifier cet article" uniquement sur les pages d'article). Enfin, un état de chargement est prévu pour les résultats de recherche asynchrones (comme une recherche via API) avec un indicateur de progression dans la zone des résultats. Cette compétence est compatible avec les environnements React/Next.js et s'intègre parfaitement dans des interfaces de type Cursor, Claude Code ou Codex.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/command-palette

Demander à votre IA préférée

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

Documentation

Palette de commandes

Règles

  • Utiliser la bibliothèque cmdk — recherche floue intégrée, accessible, rapide et composable
  • Déclencheur : Cmd+K (Mac) / Ctrl+K (Windows/Linux) — enregistrer un écouteur de clavier global
  • Grouper les actions : Navigation (pages), Commandes (actions), Récent (dernière utilisation) — afficher les en-têtes de groupe
  • Navigation au clavier : touches fléchées pour se déplacer, Entrée pour sélectionner, Échap pour fermer — tout est géré par cmdk
  • Recherche floue : cmdk filtre automatiquement — mise en évidence des correspondances avec classement par score
  • Éléments récents : stocker les 5 à 10 derniers éléments sélectionnés dans localStorage — les afficher en haut lorsque la saisie est vide
  • Actions dynamiques : enregistrer des actions depuis différentes parties de l'application — contextuelles (afficher différentes actions sur différentes pages)
  • État de chargement : résultats de recherche asynchrones (ex. recherche via API) — afficher un indicateur de chargement dans la zone des résultats

Exemples

import { Command } from "cmdk";
import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";

function CommandPalette() {
  const [open, setOpen] = useState(false);
  const router = useRouter();

  // Raccourci clavier global
  useEffect(() => {
    const handleKeyDown = (e: KeyboardEvent) => {
      if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
        e.preventDefault();
        setOpen((prev) => !prev);
      }
    };
    document.addEventListener("keydown", handleKeyDown);
    return () => document.removeEventListener("keydown", handleKeyDown);
  }, []);

  return (
    <Command.Dialog open={open} onOpenChange={setOpen} label="Palette de commandes">
      <Command.Input placeholder="Rechercher ou taper une commande..." />
      <Command.List>
        <Command.Empty>Aucun résultat trouvé.</Command.Empty>

        <Command.Group heading="Récent">
          {recentItems.map((item) => (
            <Command.Item key={item.id} onSelect={() => { router.push(item.href); setOpen(false); }}>
              {item.label}
            </Command.Item>
          ))}
        </Command.Group>

        <Command.Group heading="Navigation">
          <Command.Item onSelect={() => { router.push("/dashboard"); setOpen(false); }}>
            Tableau de bord
          </Command.Item>
          <Command.Item onSelect={() => { router.push("/settings"); setOpen(false); }}>
            Paramètres
          </Command.Item>
        </Command.Group>

        <Command.Group heading="Commandes">
          <Command.Item onSelect={() => { toggleTheme(); setOpen(false); }}>
            Activer/désactiver le mode sombre
          </Command.Item>
          <Command.Item onSelect={() => { logout(); setOpen(false); }}>
            Se déconnecter
          </Command.Item>
        </Command.Group>
      </Command.List>
    </Command.Dialog>
  );
}

À éviter

  • Construire une recherche floue personnalisée — cmdk gère le filtrage, le score et le classement prêts à l'emploi
  • Oublier e.preventDefault() sur Cmd+K — sans cela, la barre de recherche ou d'adresse par défaut du navigateur s'ouvre
  • Ne pas gérer la touche Échap — cmdk gère cela via onOpenChange, mais assurez-vous que le focus revient à l'élément précédent
  • Actions uniquement statiques — enregistrer les actions dynamiquement depuis le contexte de la page (ex. "Modifier cet article" uniquement sur les pages d'article)
  • Absence d'état vide — toujours afficher "Aucun résultat trouvé" lorsque la recherche ne correspond à rien

Individual skills in this repo

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

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Tenant isolation (row-level vs schema), subdomain routing, per-tenant config, and data partitioning.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills associés