К основному содержанию
правило

hol-hedera-typescript-cursorrules-prompt-file — правило для Cursor

Набор инструкций для Cursor по разработке ИИ-агентов на Hedera с Hashgraph Online SDK на TypeScript. Помогает соблюдать стандарты HCS и TDD.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/hol-hedera-typescript-cursorrules-prompt-file.mdc
Открыть на GitHub

Что делает hol-hedera-typescript-cursorrules-prompt-file

Правило настраивает Cursor под стек Hashgraph Online: Node.js 20+, TypeScript в строгом режиме, pnpm и Jest со связкой @swc/jest. Оно запрещает использование типа any, приведение через as any, вызовы console.log и вложенные тернарные операторы. Для логирования предписывается применять Logger из пакета @hashgraphonline/standards-sdk, а размер файлов ограничен 500 строками.

В инструкциях собраны примеры для RegistryBrokerClient: поиск агентов в реестре HCS-10, векторный поиск, разрешение адресов через UAID, регистрация новых агентов и запуск чатов. Разработка ведётся по методологии TDD: сначала создаётся падающий тест, затем реализация и рефакторинг. Без учётных данных HEDERA_OPERATOR_ID и HEDERA_OPERATOR_KEY в окружении операции регистрации и диалога завершатся ошибкой.

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

  • Внедрить строгие правила TypeScript без any и с обязательными типами возврата
  • Настроить вызовы RegistryBrokerClient для поиска и разрешения агентов в HCS-10
  • Реализовать регистрацию агента в сети Hedera с автоматическим пополнением баланса
  • Организовать разработку тестов через Jest и @swc/jest по циклу TDD

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

  • Помоги написать поиск агентов по прогнозу погоды через RegistryBrokerClient
  • Напиши юнит-тест Jest для метода resolveUaid в соответствии с TDD
  • Создай сервис регистрации ИИ-агента в реестре HCS-10 с валидацией через Zod

Как установить hol-hedera-typescript-cursorrules-prompt-file

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

.cursor/rules/hol-hedera-typescript-cursorrules-prompt-file.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Вопросы о hol-hedera-typescript-cursorrules-prompt-file

Как установить hol-hedera-typescript-cursorrules-prompt-file в Cursor?

Сохраните файл правил по пути .cursor/rules/hol-hedera-typescript-cursorrules-prompt-file.mdc в корне вашего проекта.

Что делает это правило?

Оно инструктирует Cursor следовать строгим стандартам TypeScript, архитектуре Hashgraph Online и шаблонам вызова @hashgraphonline/standards-sdk.

Какие переменные окружения требуются для работы?

Для регистрации агентов и отправки сообщений нужны HEDERA_OPERATOR_ID и HEDERA_OPERATOR_KEY, а для подключения к API брокера — HOL_API_KEY.

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

hol-hedera-typescript-cursorrules-prompt-file.mdc · CC0-1.0
---
description: "Cursor rules for Hashgraph Online development with TypeScript, building AI agents on Hedera with RegistryBrokerClient."
globs: **/*
alwaysApply: false
---
# Hashgraph Online (HOL) Development Rules

You are an expert TypeScript developer building applications with Hashgraph Online (HOL) - the open-source SDK for AI agents and decentralized applications on Hedera.

## Technology Stack

**Core:**
- Language: TypeScript (strict mode)
- Runtime: Node.js 20+
- Package Manager: pnpm
- Testing: Jest with @swc/jest

**HOL SDK:**
- @hashgraphonline/standards-sdk - Core SDK for HCS standards and Registry Broker
- @hol-org/hashnet-mcp - MCP server for AI agent integration

**Frontend (when applicable):**
- Framework: Next.js 14+ (App Router)
- UI: shadcn/ui + Tailwind CSS
- Icons: react-icons (Lucide preferred)

## Coding Standards

### TypeScript Requirements
- NEVER use `any` - define proper interfaces
- NEVER use `as any` casting - use type guards
- ALWAYS define explicit return types
- ALWAYS use generics for flexible code
- Validate external data with type guards or zod

### File Naming
- Use kebab-case: `registry-client.ts`, `topic-manager.ts`
- Test files: `__tests__/registry-client.test.ts`
- Components: `registry-browser.tsx`

### Code Style
- Max 500 lines per file - split larger files
- No nested ternaries
- No inline comments - use JSDoc only
- No console.log - use Logger from standards-sdk
- Prettier formatting required

### React Patterns (when applicable)
- NO render functions like `renderContent()`
- NO inline callbacks in JSX
- NO hooks in loops/conditionals
- ALWAYS use separate child components
- ALWAYS define Props interfaces

## HOL SDK Usage

### RegistryBrokerClient - Initialization
```typescript
import { RegistryBrokerClient } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient({
  baseUrl: 'https://api.hol.org',
  apiKey: process.env.HOL_API_KEY,
});
```

### RegistryBrokerClient - Search Agents
```typescript
import { RegistryBrokerClient, SearchParams, Logger } from '@hashgraphonline/standards-sdk';

const logger = new Logger({ module: 'AgentSearch', level: 'info' });
const client = new RegistryBrokerClient();

const searchParams: SearchParams = {
  q: 'weather',
  registry: 'hcs-10',
  limit: 10,
  page: 1,
};

const results = await client.search(searchParams);
logger.info('Search completed', { total: results.total });
results.hits.forEach(agent => {
  logger.debug('Agent found', { name: agent.name, description: agent.description });
});
```

### RegistryBrokerClient - Resolve Agent (UAID)
```typescript
import { RegistryBrokerClient, Logger } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient();
const logger = new Logger({ module: 'AgentResolver', level: 'info' });

const agent = await client.resolveUaid('hcs10://0.0.123456/agent-name');
logger.info('Agent resolved', { 
  name: agent.name, 
  protocols: agent.protocols, 
  capabilities: agent.capabilities 
});
```

### RegistryBrokerClient - Register Agent
```typescript
import { RegistryBrokerClient, AgentRegistrationRequest, Logger } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient();
const logger = new Logger({ module: 'AgentRegistration', level: 'info' });

const registration: AgentRegistrationRequest = {
  name: 'My Agent',
  description: 'A helpful AI agent',
  protocols: ['hcs-10'],
  capabilities: ['chat', 'search'],
  endpoint: 'https://my-agent.example.com',
};

const response = await client.registerAgent(registration, {
  autoTopUp: {
    accountId: process.env.HEDERA_OPERATOR_ID!,
    privateKey: process.env.HEDERA_OPERATOR_KEY!,
  },
});

if (response.success) {
  logger.info('Agent registered', { uaid: response.uaid });
}
```

### RegistryBrokerClient - Chat with Agent
```typescript
import { RegistryBrokerClient, StartChatOptions, Logger } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient();
const logger = new Logger({ module: 'AgentChat', level: 'info' });

const options: StartChatOptions = {
  uaid: 'hcs10://0.0.123456/agent-name',
  auth: {
    accountId: process.env.HEDERA_OPERATOR_ID!,
    privateKey: process.env.HEDERA_OPERATOR_KEY!,
  },
};

const conversation = await client.chat.start(options);

const response = await conversation.send({
  plaintext: 'Hello, can you help me?',
});

logger.info('Agent response received', { sessionId: conversation.sessionId });
```

### RegistryBrokerClient - Get Stats
```typescript
import { RegistryBrokerClient, Logger } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient();
const logger = new Logger({ module: 'RegistryStats', level: 'info' });

const stats = await client.stats();
logger.info('Registry stats', { totalAgents: stats.totalAgents, protocols: stats.protocols });

const registries = await client.registries();
registries.forEach(r => logger.debug('Registry', { name: r.name }));
```

### RegistryBrokerClient - Vector Search
```typescript
import { RegistryBrokerClient, VectorSearchRequest, Logger } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient();
const logger = new Logger({ module: 'VectorSearch', level: 'info' });

const request: VectorSearchRequest = {
  query: 'find me an agent that can help with weather forecasts',
  limit: 5,
  filter: {
    registry: 'hcs-10',
    protocols: ['a2a'],
  },
};

const results = await client.vectorSearch(request);
results.hits.forEach(hit => {
  logger.info('Match found', { name: hit.agent.name, score: hit.score });
});
```

## Testing Requirements

### TDD Workflow
1. RED: Write failing tests first
2. GREEN: Implement minimum code to pass
3. REFACTOR: Improve while keeping tests green

### Test Structure
```typescript
describe('RegistryBrokerClient', () => {
  let client: RegistryBrokerClient;

  beforeEach(() => {
    client = new RegistryBrokerClient();
  });

  describe('search', () => {
    it('should return agents matching query', async () => {
      const result = await client.search({ q: 'test' });
      
      expect(result.hits).toBeDefined();
      expect(Array.isArray(result.hits)).toBe(true);
    });
  });

  describe('resolveUaid', () => {
    it('should resolve valid UAID', async () => {
      const agent = await client.resolveUaid('hcs10://0.0.123456/test');
      
      expect(agent.name).toBeDefined();
    });
  });
});
```

### Test Commands
```bash
pnpm test                    # Run all tests
pnpm test -- --watch         # Watch mode
pnpm test -- --coverage      # Coverage report
pnpm test -- -t "pattern"    # Run specific tests
```

## Validation Checklist

Before completing any task:
1. `pnpm run lint` - Zero violations
2. `pnpm run typecheck` - Zero errors  
3. `pnpm run build` - Must compile
4. `pnpm test` - All tests pass

## Environment Configuration

```typescript
import 'dotenv/config';

const config = {
  baseUrl: process.env.HOL_API_URL || 'https://api.hol.org',
  apiKey: process.env.HOL_API_KEY,
  network: process.env.HEDERA_NETWORK || 'testnet',
  operatorId: process.env.HEDERA_OPERATOR_ID,
  operatorKey: process.env.HEDERA_OPERATOR_KEY,
};
```

## Resources

- HOL Website: https://hol.org
- HOL Registry: https://hol.org/registry
- SDK Docs: https://hol.org/docs/libraries/standards-sdk/overview/
- Registry Broker Client: https://hol.org/docs/libraries/standards-sdk/registry-broker-client/
- GitHub: https://github.com/hashgraph-online
- NPM: @hashgraphonline/standards-sdk

© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules

Похожие правила IDE

Все правила IDE по теме «Настройка агента: память, контекст, субагенты» →
vsixtoolkit официальный github Направляет GitHub Copilot при создании расширений VSIX через библиотеку Community.VisualStudio.Toolkit. Задаёт совместимость с .NET Framework 4.8 и правила потоков. ★ 40 451звёзд репо update-docs-on-code-change официальный github Правило для GitHub Copilot, которое напоминает обновлять README.md и документацию, когда меняется код. Пригодится, если доки у вас отстают от реальности. ★ 40 451звёзд репо update-code-from-shorthand официальный github Превращает псевдокод и краткие заметки между маркерами в готовый код. Помогает быстро развернуть черновую логику прямо внутри целевого файла. ★ 40 451звёзд репо typespec-m365-copilot официальный github Правило подсказывает, как описывать агентов и API-плагины Microsoft 365 Copilot на TypeSpec. Срабатывает при работе с файлами .tsp. ★ 40 451звёзд репо typescript-mcp-server официальный github Правило подсказывает Copilot, как писать MCP-серверы на TypeScript SDK: классы, схемы на zod, транспорты и типовые ошибки. ★ 40 451звёзд репо tasksync официальный github Держит сессию агента активной и запрашивает новые команды через терминал с помощью Python после каждого шага. ★ 40 451звёзд репо

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

htmx-django-cursorrules-prompt-file Правило для Cursor, которое задаёт агенту привычки Django при работе с HTMX: шаблоны, формы, CSRF, class-based views. ★ 41 024звёзд репо htmx-basic-cursorrules-prompt-file Задаёт Cursor правила разработки на HTMX: базовые атрибуты, структуру папок с бэкендом на app.py и принципы серверного рендеринга шаблонов. ★ 41 024звёзд репо html-tailwind-css-javascript-cursorrules-prompt-fi Правило для Cursor задаёт стиль работы с HTML, Tailwind CSS и vanilla JavaScript. Пригодится для фронтенд-задач без фреймворка. ★ 41 024звёзд репо how-to-documentation-cursorrules-prompt-file Правило превращает технические шаги, тест-скрипты и скриншоты в пошаговые инструкции для нетехнических пользователей. Пригодится, когда нужно писать «How To» по фиче. ★ 41 024звёзд репо harmony-arkts Правило задаёт практики для HarmonyOS ArkTS: компоненты, состояние, ресурсы, разметка, жизненный цикл и доступность. Подходит для проектов с файлами .ets. ★ 41 024звёзд репо graphical-apps-development-cursorrules-prompt-file Правило Cursor, которое задаёт агенту контекст проекта Pyllments: графовые LLM-приложения на Python с Panel и Langchain. ★ 41 024звёзд репо go Правило задаёт стиль Go-кода: явная обработка ошибок, интерфейсы и безопасная работа с контекстом. Пригодится для файлов .go в Cursor. ★ 41 024звёзд репо go-servemux-rest-api-cursorrules-prompt-file Правило для Cursor, которое настраивает ассистента писать REST API на Go через net/http и новый ServeMux из Go 1.22. ★ 41 024звёзд репо

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

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