К основному содержанию
скилл CX Codex

ccip — скилл для Claude Code: что делает и как установить

Помогает настроить перенос токенов между Hedera и EVM-сетями через Chainlink CCIP. Пригодится при выпуске burn-and-mint токенов и интеграции HTS.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add hedera-dev/hedera-skills --skill ccip -a claude-code
Открыть на GitHub

Что делает ccip

Скилл учит агента работать с протоколом Chainlink CCIP в сети Hedera. Он ведёт по шагам развёртывания токенов с логикой burn-and-mint, связывания пулов через TokenAdminRegistry и вызова ccipSend. Инструмент рассчитан только на токены и кроссчейн-сообщения. Оракулы цен Chainlink Data Feeds этот навык не настраивает.

Для Hedera здесь разобраны два сценария: обычный ERC-20 и нативный токен Hedera Token Service (HTS). Для HTS используется контракт-обёртка HtsBurnMintERC20, потому что CCIP регистрирует интерфейс пула, пока пользователи держат нативный токен. В таком режиме требуются два вызова approve и привязка токена к аккаунту получателя через associate.

Частая ошибка — подстановка обычного EVM chain ID вместо uint64 Chain Selector из каталога CCIP. Тестовая сеть Hedera имеет ID 296, но селектор у неё совсем другой, поэтому передача ID сети сломает транзакцию. Также объёмы чеканки для HTS ограничены лимитом int64.

Какие задачи решает

  • настроить перенос burn-and-mint токенов между Hedera и EVM
  • зарегистрировать пул в TokenAdminRegistry и настроить связку сетей
  • подключить обёртку HtsBurnMintERC20 для работы с нативными HTS-токенами
  • составить вызов ccipSend с оплатой комиссии в нативном газе

Примеры запросов агенту

  • Помоги настроить BurnMintTokenPool для сети Hedera и связать его с Sepolia через CCIP.
  • Напиши вызов ccipSend для отправки HTS-токена через обёртку HtsBurnMintERC20.
  • Проверь конфигурацию TokenAdminRegistry и привязку селекторов перед отправкой сообщений.

Как установить ccip

1Через Skills CLI (Vercel)

npx skills add hedera-dev/hedera-skills --skill ccip -a claude-code

2Вручную: положить файлы

~/.claude/skills/ccip/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/ccip/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о ccip

Как установить ccip в Claude Code?

Запустите команду npx skills add hedera-dev/hedera-skills --skill ccip -a claude-code. Конфигурация сохранится в файле ~/.claude/skills/ccip/SKILL.md.

Что делает скилл ccip?

Он даёт инструкции по созданию кроссчейн-токенов burn-and-mint между сетью Hedera и EVM-чейнами. Скилл помогает вызывать ccipSend, конфигурировать реестры TokenAdminRegistry и обёртки для HTS.

Можно ли использовать EVM chain ID вместо селектора цепи?

Нет, протокол Chainlink CCIP требует передавать специальные uint64 Chain Selectors. У Hedera testnet идентификатор 296, но селектор CCIP имеет другое значение из справочника Chainlink.

Исходный текст

SKILL.md · Apache-2.0
---
name: ccip
description: >
  Chainlink CCIP Cross-Chain Tokens on Hedera. Use when bridging burn-and-mint CCT between
  Hedera and EVM, registering TokenAdminRegistry / pools, calling ccipSend with chain
  selectors, or wiring HTS-backed wrappers (HtsBurnMintERC20) vs vanilla BurnMintERC20.
  Not for Chainlink Data Feeds / price oracles.
---

# Chainlink CCIP (Hedera)

**CCT burn-and-mint pattern:** deploy a burn-mint token + token pool on each chain, register the token with CCIP, wire remote pools with **chain selectors**, then `ccipSend` paying native fees.

```text
BurnMint token + TokenPool (source)
        → Router.ccipSend(destSelector, message)
             → TokenPool lockOrBurn / releaseOrMint (dest)
```

On Hedera you can use a vanilla ERC-20 CCT **or** an HTS-backed wrapper. CCIP always registers the ERC-20 the pool sees — for HTS that is the **wrapper**, while users hold the native HTS token.

This skill is **cross-chain tokens/messages**, not Chainlink Data Feeds.

## Quick Reference

| Piece | Role |
| ----- | ---- |
| Router | `getFee` + `ccipSend{value}` |
| Chain selector | `uint64` CCIP id — **not** EVM chain ID |
| Token + pool | Burn-mint ERC-20 + `BurnMintTokenPool` (or Hedera HTS variants) |
| Admin registry | `RegistryModuleOwnerCustom` → `TokenAdminRegistry.acceptAdminRole` → `setPool` |
| Lane config | `TokenPool.applyChainUpdates` both directions |
| Fee | Native gas (`feeToken = address(0)`); attach `msg.value` |
| Receiver | `abi.encode(address)` in `EVM2AnyMessage.receiver` |

See [references/hedera-ccip.md](references/hedera-ccip.md) for where to source selectors and registry addresses. See [references/examples.md](references/examples.md) for register / wire / send sketches.

## Critical: Selectors, Not Chain IDs

`ccipSend` and pool `remoteChainSelector` take CCIP **chain selectors**. Hedera testnet (`296`) and Sepolia (`11155111`) have different selector values than their EVM chain IDs. Look them up in the CCIP directory; do not pass `296` as a selector.

Do not reuse Axelar GMP names or LayerZero EIDs here.

## Critical: Register Then Wire Both Lanes

Incomplete registry/pool config bricks the token. Per chain:

1. Deploy token + pool
2. Grant the pool mint/burn roles on the token
3. `registerAdminViaGetCCIPAdmin(token)` then `acceptAdminRole(token)`
4. `TokenAdminRegistry.setPool(token, pool)`
5. After **both** chains have token+pool addresses: `applyChainUpdates` on each pool (remote selector, remote pool, remote token)

Then send a small test amount and track it on CCIP Explorer.

## Critical: Hedera HTS-Backed CCT

Vanilla path: `BurnMintERC20` + `BurnMintTokenPool` on Hedera EVM, same as Sepolia.

HTS-backed path:

- Users hold a native HTS token created via precompile `0x167`
- CCIP registers the **wrapper** (`HtsBurnMintERC20`), not the HTS token id/address users see in wallets
- Pool (`HtsBurnMintTokenPool`) must associate itself with the native HTS token and approve the wrapper
- Hedera → remote send needs **two approvals**: HTS → wrapper, wrapper → Router
- Receiver accounts must **associate** the native HTS token before inbound mints
- Mint/burn/transfer amounts must fit HTS `int64`

Do not mix Axelar or LayerZero token addresses into CCIP env/config.

## Send Flow (native fee)

```solidity
Client.EVM2AnyMessage memory message = Client.EVM2AnyMessage({
    receiver: abi.encode(receiver),
    data: "",
    tokenAmounts: tokenAmounts, // token is the CCIP-registered ERC-20 / wrapper
    feeToken: address(0),
    extraArgs: Client._argsToBytes(
        Client.EVMExtraArgsV2({ gasLimit: 0, allowOutOfOrderExecution: true })
    )
});

uint256 fee = IRouterClient(router).getFee(destinationChainSelector, message);
IERC20(tokenToSend).approve(router, amount);
IRouterClient(router).ccipSend{ value: fee }(destinationChainSelector, message);
```

## Checklist

- [ ] Chain selectors from the CCIP directory (not EVM chain IDs, Axelar names, or LZ EIDs)
- [ ] Token admin registered and pool set on **both** chains
- [ ] `applyChainUpdates` wired both directions before sending
- [ ] Native fee attached to `ccipSend` (`feeToken = address(0)`)
- [ ] HTS path: wrapper registered with CCIP; users hold native HTS; dual approve + associate
- [ ] Amounts fit `int64` when touching HTS mint/burn
- [ ] CCIP token/pool addresses not copied from Axelar/LayerZero configs

## References

- [references/examples.md](references/examples.md) — register, wire, send, HTS dual-approve sketches
- [references/hedera-ccip.md](references/hedera-ccip.md) — selectors vs chain IDs, where to source router/registry
- [CCIP directory](https://docs.chain.link/ccip/directory)
- [CCIP burn-and-mint CCT](https://docs.chain.link/ccip/tutorials/evm/cross-chain-tokens/register-from-eoa-burn-mint-hardhat)
- [CCIP Explorer](https://ccip.chain.link)

© hedera-dev · Apache-2.0 · hedera-dev/hedera-skills

Похожие скиллы

Все скиллы по теме «Бэкенд и API» →
mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок claude-api официальный anthropics Справочник по Anthropic SDK и API Claude для генерации кода без устаревших параметров и выдуманных методов. 74 198установок lark-im larksuite Скилл подключает Lark IM к агенту: он отправляет сообщения, ищет историю, управляет чатами и файлами. Подойдёт для задач вокруг командных коммуникаций. CX Codex +1 472 900установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. CX Codex +1 466 800установок caveman-discover JuliusBrussee Находит точки вызова LLM в репозитории и размечает их воркфлоу для Caveman Cloud, чтобы расходы на токены не сливались в одну общую кучу. CX Codex +1 104 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

Из того же набора19

harness-spec-anatomy Описывает, из чего состоит рецепт hedera-harness: файлы, значения по умолчанию v3, стадии прогона и правило слепой проверки. Нужен тем, кто пишет или проверяет такие рецепты. CX Codex +1 464установок review-harness-spec Проверяет рецепт .harness/spec.yaml перед запуском тестов и генератора. Находит ошибки связей и пробелы в чеклисте оценок. CX Codex +1 459установок x402-payments Скилл для агентов, который помогает закрыть HTTP-ресурсы оплатой в HBAR по схеме x402: 402-ответ, подпись перевода, проверка и расчёт через свой фасилитатор. CX Codex +1 462установок layerzero-messaging Скилл для сборки мостов LayerZero V2 между Hedera и EVM-сетями: OFT/OApp, настройка Endpoint V2, ULN, DVN и отправка через quoteSend. CX Codex +1 460установок axelar-gmp Помогает строить межсетевые вызовы между Hedera и EVM через Axelar GMP. Нужен при отправке транзакций через шлюз, настройке приёмников и связке с HSS. CX Codex +1 454установок chainlink-data-feeds Помогает безопасно читать ценовые фиды Chainlink AggregatorV3 на Hedera (chain ID 295 и 296), проверять полноту и свежесть раундов и нормализовать decimals. CX Codex +1 444установок pyth-price-feeds Скилл для интеграции Pyth pull-фидов в контракты на Hedera: обновление цены через Hermes, чтение с ограничением по возрасту, проверка confidence. CX Codex +1 444установок supra-push-oracle Скилл для чтения push-оракула Supra на Hedera: getSvalue(pairId), миллисекундные метки времени и пары USDT. Пригодится, если контракт берёт цены из Supra. CX Codex +1 448установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой