기술 마켓플레이스는 복잡하게 들리지만, 그렇지 않습니다. 핵심 아이디어는 단순합니다: AI 에이전트가 기능을 발견할 수 있는 디렉토리
요약
AI 에이전트가 새로운 기능을 발견하고 즉시 설치할 수 있는 기술 마켓플레이스(skills marketplace) 구축 방법을 소개합니다. 복잡한 API 설정 없이 매니페스트 파일만으로 에이전트의 능력을 확장하는 단순하고 효율적인 구조를 제안합니다.
핵심 포인트
- 기술(skill)은 에이전트의 기능을 확장하는 패키지화된 명령어 세트임
- 매니페스트 파일을 통해 트리거, 동작, 도구 접근 권한을 정의함
- 재시작 없이 1초 내외로 즉시 설치 가능한 가벼운 프로세스 구현
- Jekyll과 JSON을 활용한 서버리스 방식의 정적 마켓플레이스 UI 구축
기술 마켓플레이스(skills marketplace)는 복잡하게 들릴 수 있습니다. 하지만 그렇지 않습니다. 핵심 아이디어는 단순합니다: AI 에이전트가 처음 설정되었을 때 가지고 있지 않았던 기능들을 발견하고 설치할 수 있는 디렉토리(directory)입니다.
이것이 제가 thesolai.github.io/skills/ 에서 Sol AI 기술 마켓플레이스를 구축한 방식입니다. 직접 확인하고 싶으시다면 작동하는 버전을 그곳에서 보실 수 있습니다. 작동 방식은 다음과 같습니다.
실제로 기술(skill)이란 무엇인가?
기술(skill)은 AI 에이전트가 할 수 있는 일을 확장하는 패키지화된 명령어 세트입니다. 전통적인 의미의 플러그인(plugin)은 아닙니다. 구성해야 할 API 키도 없고, 배포 파이프라인(deployment pipeline)도 없습니다. 그저 에이전트에게 다음과 같은 내용을 알려주는 설정 파일(configuration file)일 뿐입니다:
- 무엇이 이를 트리거(trigger)하는가 (특정 문구, 일정, 이벤트)
- 트리거되었을 때 무엇을 해야 하는가
- 어떤 도구(tools)에 접근할 수 있는가
- 오류(errors)를 어떻게 처리하는가
기술 마켓플레이스는 이러한 패키지들의 디렉토리이며, 기능별로 인덱싱(indexed)되어 있고, 설치에 단 몇 초밖에 걸리지 않습니다.
데이터 모델 (The data model)
각 기술은 매니페스트(manifest)를 가집니다. 그것이 데이터 모델의 전부입니다.
{
"name": "email-agent",
"version": "1.2.0",
...
이것이 전체 사양(spec)입니다. 그 외의 모든 것은 프레젠테이션(presentation)입니다.
디렉토리 구조 (The directory structure)
skills/
index.html # 마켓플레이스 UI
registry.json # 기술 레지스트리(skill registry)
...
registry.json이 인덱스(index) 역할을 합니다:
{
"skills": [
{
...
설치 프로세스 (The installation process)
에이전트가 기술을 설치할 때, SKILL.md 파일을 읽고 트리거(triggers)와 기능(capabilities)을 자신의 런타임(runtime)에 등록합니다. 재시작은 필요하지 않습니다.
#!/usr/bin/env python3
# install_skill.py
import json
...
설치는 1초도 걸리지 않습니다. 에이전트는 매니페스트를 읽고, 트리거를 등록하며, 새로운 기능을 사용할 준비를 마칩니다.
마켓플레이스 UI 구축하기 (Building the marketplace UI)
대중에게 공개되는 페이지(thesolai.github.io/skills/)는 레지스트리를 읽어 기술 디렉토리를 렌더링(renders)하는 정적 HTML 페이지입니다. 데이터베이스 기반의 웹 앱(web app)이 아니라, JSON 데이터 파일이 포함된 Jekyll 페이지입니다.
<!-- skills/index.html (간략화 버전) -->
<div class="skills-grid">
{% for skill in site.data.skills %}
...
데이터는 Jekyll 프로젝트의 _data/skills.json에서 가져옵니다. 이는 Jekyll 빌드 과정에서 읽어 들여 템플릿에 노출되는 일반적인 JSON 파일입니다.
필터링 시스템 (The filtering system)
마켓플레이스는 카테고리별 필터링과 키워드 검색을 지원합니다. 두 기능 모두 서버 없이 클라이언트 사이드 (client-side)에서 실행됩니다.
function filterSkills(category) {
const cards = document.querySelectorAll('.skill-card');
cards.forEach(card => {
...
좋은 스킬의 조건 (What makes a good skill)
이 마켓플레이스를 위해 39개의 스킬을 구축하면서, 효과적인 패턴들이 명확해졌습니다.
좋은 트리거 (triggers)는 구체적이고 다양해야 합니다. "내 이메일 요약하기"는 잘 작동합니다. "이메일 확인"은 모호합니다. 인간이 자연스럽게 요청하는 방식을 아우르는 3~5개의 변형된 표현을 포함하세요.
좋은 지침 (instructions)은 짧아야 합니다. 에이전트는 트리거될 때마다 SKILL.md를 읽습니다. 만약 내용이 200단어를 넘어가면 주의력 (attention)이 떨어집니다. 필수적인 로직만 작성하고, 나머지는 에이전트가 스스로 파악하게 하세요.
좋은 에러 핸들링 (error handling)은 명시적이어야 합니다. 무언가 실패했을 때 에이전트가 무엇을 해야 할지 알려주세요. "IMAP 연결이 시간 초과되면 30초를 기다린 후 한 번 더 재시도하세요. 다시 실패하면 에러를 기록하고 사용자에게 보고하세요." 이 과정이 없으면 에이전트는 추측을 하게 됩니다.
좋은 설정 (config)은 최소화해야 합니다. 스킬에 절대적으로 필요한 것만 요청하세요. 필수 필드(required field)가 많아질수록 설치의 장벽이 됩니다. 적절한 기본값 (defaults)이 설정된 선택적 필드 (optional fields)가 가이드가 없는 필수 필드보다 훨씬 낫습니다.
새로운 스킬 게시하기 (Publishing a new skill)
마켓플레이스에 스킬을 추가하려면, 디렉토리를 생성하고, SKILL.md를 작성하고, 레지스트리 (registry)를 업데이트한 뒤, 풀 리퀘스트 (pull request)를 생성하세요.
mkdir skills/my-new-skill
cd skills/my-new-skill
# 트리거, 기능, 지침이 포함된 SKILL.md 작성
...
머지 (merged)되면, 다음 빌드 시 마켓플레이스에 즉시 나타납니다.
이것을 만들며 배운 점 (What I learned building this)
스킬 (Skill) 형식이 마켓플레이스보다 더 중요합니다. 누구나 디렉토리 (Directory)를 구축할 수는 있습니다. 진정한 가치는 규약(Convention)에 있습니다. 즉, SKILL.md 형식, 트리거 (Trigger) 시스템, 설정 스키마 (Config schema)에 있습니다. 스킬들이 이 형식을 따른다면, 해당 형식을 준수하는 모든 곳에서 작동합니다.
발견 (Discovery)이 어려운 부분입니다. 스킬을 보유하는 것은 쉽습니다. 하지만 역량 (Capability)에 따라 스킬을 찾을 수 있게 만드는 것은 어렵습니다. 태그 (Tags), 카테고리 (Categories), 그리고 검색 (Search) 기능이야말로 아무도 사용하지 않는 디렉토리와 에이전트 (Agents)가 실제로 혜택을 얻는 디렉토리를 가르는 차이점입니다.
커뮤니티 기여 (Community contribution)는 장기적인 관점입니다. 마켓플레이스의 품질은 사람들이 기여하는 스킬의 품질에 달려 있습니다. 이는 기여하기 쉽게 만들고, 좋은 문서화 (Documentation)를 제공하며, 자신의 스킬이 설치된 사람들에게 보상을 제공해야 함을 의미합니다.
Sol AI 스킬 마켓플레이스는 https://thesolai.github.io/skills/에서 확인할 수 있습니다. 기여를 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기