Openclaw용 go-asyncapi

go-asyncapi는 AsyncAPI 3 YAML 또는 JSON 문서를 구조화된 Go 타입으로 로드하며, 로컬 $ref 해석과 trait 병합을 지원합니다.

psyb0t
v0.1.1
Oct 16, 2026
0
36
0

설치 및 다운로드

1. ClawHub CLI

레지스트리에서 스킬을 바로 설치하는 가장 빠른 방법입니다.

npx clawhub@latest install go-asyncapi

2. 수동 설치

스킬 폴더를 다음 위치 중 하나로 복사하세요

글로벌
~/.openclaw/skills/
워크스페이스
<project>/skills/

우선순위: 워크스페이스 > 로컬 > 번들

3. 프롬프트 설치

이 프롬프트를 OpenClaw에 복사하면 자동으로 설치됩니다.

Clawhub를 사용해서 go-asyncapi 설치를 도와줘. Clawhub가 설치되어 있지 않다면 먼저 설치해 줘 (npm i -g clawhub).

다운로드를 원하시나요?

ZIP 아카이브 형태의 원본 스킬 파일을 받으세요.

go-asyncapi란 무엇인가요?

go-asyncapi는 AsyncAPI 3 사양을 읽고 검사하며 문서 수준에서 유효성을 검증하고, 이를 바탕으로 생성하는 Go 라이브러리입니다. asyncapi.Load(path)를 한 번 호출하면 서버, 채널, 작업, 메시지, schema, 바인딩 및 관련 메타데이터가 문서 순서대로 포함된 *asyncapi.Document가 반환됩니다.

이 라이브러리는 로컬 상대 $ref 참조를 따라가고 메시지 및 작업 trait를 병합하며, 페이로드와 헤더 schema를 정렬된 *asyncapi.Object 트리로 보존합니다. 네트워크 액세스나 런타임 서비스 없이 AsyncAPI 프로토콜을 안정적으로 조사해야 하는 생성기, 린터, 문서 도구, 테스트 헬퍼 및 기타 Openclaw Skills 워크플로를 위한 탄탄한 기반입니다.

go-asyncapi 활용 사례

  • AsyncAPI 3 YAML 또는 JSON 사양을 Go 애플리케이션에 로드합니다.
  • 서버를 나열하고 서버 변수를 해석하며 계산된 서버 URL을 검사합니다.
  • 채널, 주소, 매개변수, 메시지 및 작업 동작을 찾습니다.
  • 콘텐츠 타입과 바인딩을 포함해 각 작업이 보내거나 받는 메시지를 식별합니다.
  • AsyncAPI 생성기, 린터, 문서 도구 또는 테스트 유틸리티를 구축합니다.
  • 소스 위치를 보존하면서 로컬 schema 및 문서 $ref 참조를 따라갑니다.
  • 전체 JSON Schema 검증 계층을 추가하지 않고 정렬된 페이로드 및 헤더 schema 트리를 검사합니다.
  • 관련 Openclaw Skills 및 Go 기반 개발자 도구의 파싱 기반으로 사용합니다.

go-asyncapi 작동 원리

  1. github.com/psyb0t/go-asyncapi를 Go 모듈에 추가하고 asyncapi 패키지 이름으로 가져옵니다.
  2. AsyncAPI 3 YAML 또는 JSON 문서의 경로를 지정해 asyncapi.Load(path)를 호출합니다.
  3. 로더는 제공된 파일과 상대 $ref 값을 통해 도달하는 모든 로컬 참조 파일을 읽습니다.
  4. 문서는 서버, 채널, 작업 및 메시지가 문서 순서대로 포함된 *asyncapi.Document로 변환됩니다.
  5. $ref 참조를 따라가고 메시지 및 작업 trait를 결과 구조에 병합합니다.
  6. 서버 URL, 채널 주소와 매개변수, 작업 동작, 메시지 페이로드, 헤더, 상관관계 ID, 콘텐츠 타입 및 프로토콜 바인딩을 검사합니다.
  7. document.Resolver.Deref(schema, location)을 사용해 필요할 때 schema를 해석합니다.
  8. 반환된 Location을 전달하고 Child로 중첩 위치를 만들어 schema 내 참조가 각 schema의 출처 파일을 기준으로 해석되도록 합니다.
  9. 실패 조건에 따라 commerr.ErrNotFound, commerr.ErrInvalidArgument, commerr.ErrInvalidValue와 같은 래핑된 sentinel 오류를 처리합니다.

go-asyncapi 설정 가이드

  1. Go 도구 체인이 설치되어 있는지 확인합니다.
go version
  1. 현재 Go 모듈에 라이브러리를 추가합니다.
go get github.com/psyb0t/go-asyncapi
  1. 패키지를 가져오고 AsyncAPI 3 문서를 로드합니다.
import (
    "fmt"

    asyncapi "github.com/psyb0t/go-asyncapi"
)

document, err := asyncapi.Load("asyncapi.yaml")
if err != nil {
    return err
}

for _, server := range document.Servers {
    fmt.Println(server.Name, server.URL())
}
  1. 통합을 빌드하고 테스트합니다.
go build ./...
go test ./...
  1. 참조 파일을 사양에 지정된 상대 경로에 유지합니다. 이 라이브러리는 진입 문서와 로컬 상대 $ref 대상을 읽고 아무것도 쓰지 않으며, 원격 http(s) 참조는 가져오지 않고 거부합니다. AsyncAPI 2.x 문서는 지원되지 않으며 거부됩니다.

go-asyncapi 데이터 스키마 및 분류 체계

로드된 문서는 다음 주요 구조를 중심으로 구성됩니다.

영역 사용 가능한 데이터
Document.Servers 서버 이름, URL 및 URL()에서 기본값이 적용되는 변수
Document.Channels 채널 주소, 매개변수 및 연결된 메시지
Document.Operations 보내기 또는 받기 동작, 채널 참조, 메시지 및 응답
Document.Messages 페이로드, 헤더, 상관관계 ID, 콘텐츠 타입, 바인딩 및 병합된 trait
Document.Resolver 문서 요소 및 중첩 schema의 참조 해석

Schema 데이터는 정렬된 *asyncapi.Object 트리로 보존됩니다. 페이로드 및 헤더 schema는 객체, 기본형, 불리언, oneOf, allOf 및 기타 schema 형식을 나타낼 수 있습니다. Object("properties")와 같은 객체 헬퍼를 사용해 탐색할 때는 각 schema의 Location을 보존합니다.

일반적인 schema 탐색 흐름은 다음과 같습니다.

  • document.Resolver.Deref(message.Payload, message.PayloadAt)을 호출합니다.
  • 결과가 *asyncapi.Object인지 확인합니다. 불리언 schema일 수도 있습니다.
  • 객체 트리에서 정렬된 속성을 가져옵니다.
  • 속성 값과 at.Child("properties").Child(name)으로 만든 하위 위치를 사용해 각 속성을 해석합니다.
  • 올바른 소스 파일을 기준으로 중첩 $ref 값을 해석할 수 있도록 위치를 계속 전달합니다.

이 라이브러리는 생성된 파일을 쓰지 않고, 전체 JSON Schema 유효성 검사를 수행하지 않으며, 원격 참조를 가져오지 않습니다. 오류는 안정적으로 분류할 수 있도록 ctxerrors/commerr sentinel 값을 래핑합니다.

go-asyncapi 고급 기능

  • 여러 YAML 또는 JSON 문서에 걸친 로컬 다중 파일 $ref 해석.
  • Resolver.Deref 및 Location.Child를 통한 소스 인식 schema 탐색.
  • AsyncAPI 메시지 및 작업 정의의 trait 병합.
  • 속성 탐색 순서를 보존하는 정렬된 schema 객체 트리.
  • 서버 변수 및 기본값이 대입된 서버 URL 지원.
  • 보내기 및 받기 작업, 응답, 상관관계 ID, 콘텐츠 타입 및 바인딩 검사.
  • 안전한 오프라인 동작: 로컬 파일만 읽고 원격 URL 참조를 거부합니다.
  • 생성기, 린터, 문서 시스템, 테스트 헬퍼 및 기타 Openclaw Skills를 위한 조합 가능한 기반.
  • 별도의 런타임 서비스 없이 호스트 Go 바이너리에 직접 컴파일됩니다.

SKILL.md


로드 중

관련 Openclaw 스킬

METADATA

Github Stars: 0
forks: 0

추천*