cds-code

Effectuez les opérations suivantes une seule fois par session, après l'activation de la compétence.

npx skills add https://github.com/coinbase/cds --skill cds-code

CDS Code Skill

On every request

Before responding, determine what the user needs:

Coding — the user wants to create or update UI → follow the Coding Workflow.

Review — the user explicitly asks to audit, review, or check existing code for CDS adherence → read guidelines/code-review.md and follow it instead.

Default to coding. Only treat a request as a review if the user's intent is explicit. Writing code is the primary use case for this skill.

Initialization

Run this once per session, before doing anything else.

Run the discovery script: scripts/discover-cds-packages.sh

Its output tells you:

  • The CDS Runtime (web or mobile) — use this value as the platform argument for the CDS MCP server if it is needed.
  • Every installed CDS package: its name, version, and valid export subpaths — these import paths are the ONLY ALLOWED PATHS when importing from CDS packages

If the script cannot be run, much of the information it provides can be determined via manual inspection:

  • Infer the platform by inspecting existing CDS imports in the project's source code
  • Find valid import paths by reading the exports field of the package.json of installed CDS packages in node_modules

Coding Workflow

For all frontend coding tasks, follow these steps in order.

YOU MUST perform steps 1 and 2 before writing any code!

Step 1: Prepare CDS documentation

For any CDS documentation needs, use either of the following tools. If neither are available, let the user know but continue — documentation is helpful but not required.

  • Activate the cds-docs skill OR...
  • If the cds-docs skill is not configured, try calling the CDS MCP server list-cds-routes tool.

Then read the platform-specific docs (using the runtime detected in Initialization):

  • getting-started/styling
  • getting-started/theming

Step 2: Identify the appropriate components

Use guidelines/components.md to help identify the appropriate CDS components for the task. The guidelines file will cover most use cases, but you may optionally browse the CDS docs for the full list of supported CDS components.

If you decide your task will require icons (Icon or IconButton) or illustrations (SpotSquare, Pictogram, HeroSquare, etc.) please read the corresponding guidelines files for more details.

IconsIllustrations
guidelines/icons.mdguidelines/illustrations.md

If no CDS component fits your use case, you may fall back to the following options in this order of priority:

  1. search for a relevant and reusable React component from the project's codebase to use
  2. build your own custom React component using CDS primitives as building blocks
  3. use the native platform's JSX elements (div, View, etc.) for bespoke UI as a last resort

IMPORTANT: Always inform the user which CDS components you are planning to use before moving on to Step 3.

Step 3: Optionally read component docs

For any CDS component you plan to use, retrieve and read their documentation (see Step 1 in this workflow for more details on docs setup).

If documentation is not retrievable for any reason, the published type definitions for the component may be used to determine the full props API a component affords. This is no substitute for reading the documentation, but it can be a useful fallback when documentation is not available.

Step 4: Execute the task (writing code)

Now create or update the UI with proper CDS components and usage.

Package scope

The package name may vary between projects. Different repos may install CDS under different scopes. Always match the full CDS package name(s) as determined in the initialization step. If the project already has CDS imports in existing code, match whatever scope those files use.

Using the Design System

In most cases, you should avoid using inline style objects or CSS classNames (web only). Through these methods it is very easy to make common mistakes like using hardcoded property values instead of the CDS design tokens. Doing so would break the component's connection to the CDS theme.

If you must use a style object or a CSS className, you can still access the CDS theme either through the useTheme hook or by CSS variables (web only).

Most CDS components implement an API that conveniently allows you to apply CDS design tokens, internally we call these 'style props'.

In cds-web, style props essentially act as an API for applying atomic CSS classes, much like Tailwind's utility classes which are so prevelant in the web ecosystem.

You should prefer setting these style props for styling components over setting custom style via inline styles or CSS.

Why this matters: When you set font, color, textAlign, or other typography properties through style instead of props, the component loses its connection to the CDS theme. For example, setting fontSize and fontWeight via style without a font prop means the CDS font family never applies -- the text falls back to inherit and may render in the wrong typeface.

You should check a component's documentation which includes a props table to verify the available API.

Examples of opportunities to use style props over inline styles:

Instead of styleUse the prop
style={{ color: "var(--color-fgMuted)" }}color="fgMuted"
style={{ fontSize: 12, fontWeight: 500, lineHeight: "16px" }}font="caption" (or the matching CDS font token)
style={{ textAlign: "center" }}textAlign="center"
style={{ textTransform: "uppercase" }}textTransform="uppercase"
style={{ display: "flex", flexDirection: "column" }}Use VStack, or flexDirection="column" on Box
style={{ gap: 8 }}gap={1}
style={{ padding: 16 }}padding={2}
style={{ backgroundColor: "..." }}background="bgAlternate" (or semantic token)

Step 5: Validate changes

Your task will be complete if:

  1. You performed skill initialization and explicitly identified the specific CDS components you would use
  2. Your changes DO NOT include any raw rgb/hex/etc color values
  3. Your changes DO NOT use any raw pixel values for spacing properties (padding, margin, gap, border radius). Explicit layout dimensions like width or height set to specific designer-specified values are acceptable.
  4. Your changes DO NOT import any depreacted CDS components or hooks.
  5. Your changes use components' style props (e.g. font, color, background, textTransform, paddingX, gap) instead of customization via inline style objects or with CSS classNames.
  6. All import paths are valid CDS package exports, determined in initialization
  7. The project's linting/typechecking/formatting tasks are passing

Plus de skills de coinbase

authenticate-wallet
coinbase
Authentification de portefeuille par OTP envoyé par email avec validation et vérification de statut. Flux de connexion en deux étapes : initier avec un email pour recevoir un OTP à 6 chiffres, puis vérifier avec le flowId et le code pour terminer l'authentification. Inclut des règles de validation d'entrée pour l'email, le flowId et l'OTP afin d'empêcher l'injection de commandes avant l'exécution. Fournit la vérification de statut, les requêtes de solde, la récupération d'adresse et l'accès à la fenêtre du portefeuille via des commandes CLI compagnes. Toutes les commandes prennent en charge la sortie --json pour un format lisible par machine...
official
fund
coinbase
Déposer des USDC dans le portefeuille via Coinbase Onramp ou transfert direct. Ouvre une interface compagnon où les utilisateurs sélectionnent des montants prédéfinis (10 $, 20 $, 50 $) ou des valeurs personnalisées et choisissent entre Apple Pay, carte de débit, virement bancaire ou financement par compte Coinbase. Prend en charge plusieurs méthodes de paiement avec des délais de règlement variables : instantané pour les cartes et Apple Pay, 1 à 3 jours pour les virements bancaires ACH. Dépose les fonds en USDC sur le réseau Base ; alternativement, les utilisateurs peuvent envoyer des USDC directement à l'adresse du portefeuille via npx [email protected]...
official
monetize-service
coinbase
Déployez un point de terminaison API payant que d'autres agents peuvent découvrir et payer via le protocole x402. Facture des USDC par requête sur Base en utilisant le protocole de paiement HTTP 402 ; les clients paient avec des transactions signées, sans nécessiter de clés API ni de comptes. Enregistre automatiquement les points de terminaison auprès du Bazaar x402 pour la découverte par les agents lorsque vous déclarez des extensions de découverte. Prend en charge plusieurs niveaux de tarification, des routes génériques et plusieurs options de paiement par point de terminaison à l'aide du middleware Express. Construit sur @x402/express et @x402/core...
official
pay-for-service
coinbase
Appeler des API payantes sur Base avec paiement automatique en USDC via le protocole x402. Exécute des requêtes HTTP (GET, POST, etc.) vers des endpoints compatibles x402 avec des paiements USDC atomiques gérés automatiquement. Prend en charge la personnalisation des requêtes via la méthode, le corps JSON, les paramètres de requête et les en-têtes personnalisés. Inclut des contrôles de paiement : définir un montant maximum d'USDC par requête et regrouper les opérations associées avec des identifiants de corrélation. Nécessite une authentification du portefeuille et un solde USDC suffisant ; valide toutes les entrées utilisateur pour éviter les shell...
official
query-blockchain-data
coinbase
Interroger les données onchain de la blockchain sur Base en utilisant l'API CDP SQL via x402. À utiliser lorsque vous ou votre utilisateur souhaitez consulter des informations onchain sur des blocs décodés,…
official
query-onchain-data
coinbase
Interroger les données onchain sur Base en utilisant SQL avec des paiements x402 par requête. Accédez aux événements, transactions et blocs décodés via CoinbaseQL, un dialecte SQL basé sur ClickHouse prenant en charge les jointures, CTE, sous-requêtes et fonctions standard. Trois tables principales disponibles : base.events (logs de contrats intelligents décodés), base.transactions (données complètes des transactions) et base.blocks (métadonnées des blocs). Nécessite un filtrage sur les champs indexés (event_signature, address, block_timestamp) dans les requêtes d'événements pour éviter une analyse complète de la table...
official
search-for-service
coinbase
Rechercher et découvrir les services API payants disponibles sur le marché x402. Interroger le marché via une recherche de pertinence BM25, lister toutes les ressources disponibles, ou inspecter des points d'accès spécifiques pour voir les prix et les exigences de paiement sans payer. Prend en charge le filtrage par réseau (base, base-sepolia) et les formats de sortie (lisible ou JSON). Les résultats sont mis en cache localement et s'actualisent automatiquement toutes les 12 heures ; aucune authentification n'est requise pour les opérations de recherche ou de découverte. Utiliser comme solution de repli lorsqu'aucun...
official
send-usdc
coinbase
Transférer des USDC vers des adresses Ethereum ou des noms ENS sur Base. Accepte les adresses hexadécimales (0x...) et les noms ENS (.eth) comme destinataires, avec résolution automatique des ENS. Prend en charge des formats de montant flexibles : notation en dollars ($5.00), décimale (1,50) ou unités atomiques (1000000). Nécessite une authentification du portefeuille via la compétence authenticate-wallet et un solde USDC suffisant avant l'envoi. Inclut une validation des entrées pour prévenir les injections shell et une sortie JSON optionnelle pour une utilisation programmatique.
official