Loading repository data…
Loading repository data…
coreline-ai / repository
SKILL.md 기반 AI 에이전트 스킬 수집·검증·큐레이션 플랫폼 | SKILL.md-based platform for AI agent skill collection, validation, and curation
SKILL.md 기반 AI 에이전트 스킬 발견, 수집(ingest), 파싱/정합성 검증, 큐레이션 및 랭킹 통합 플랫폼
AI Agent Skills Marketplace는 전 세계에 흩어진 SKILL.md를 한곳에 모아 관리하는 플랫폼입니다.
raw_skills 큐에 적재lax -> strict -> enforce로 점진적 차단(enforce) 롤아웃/packs)/plugins)/guide)raw_skills에 적재 후, 워커가 파싱/정규화/검증 수행raw_skills.parse_status: pending, processed, errorprofile=lax: 관측 위주(경고/정규화 중심)profile=strict: 더 엄격(실패 조건 확대)enforce=ON: 스펙 실패 시 ingest 결과를 error로 떨어뜨려 차단app/llm/glm_client.py: GLM-4-plus API 통합app/quality/security_scan.py: 자동화된 보안 검사레포 단위로 스킬을 묶어 보며, "스킬이 개별 디렉토리로 무한히 늘어나는 느낌"을 완화합니다.
graph LR
User([User]) --> Web[Frontend - Next.js]
Web --> API[Backend API - FastAPI]
API --> DB[(PostgreSQL)]
Worker[Background Worker] --> DB
Worker --> Ext[GitHub / External Sources]
raw_skills: 외부에서 수집한 원문/메타(큐)skills: 공개 정책 및 검증을 통과해 노출 가능한 정규화 결과python:3.11.10-slim, node:20.18.0-slim)cp .env.example .env
.env.example에 모든 설정 항목과 설명이 포함되어 있습니다. 주요 설정:
| 변수 | 설명 | 필수 |
|---|---|---|
ENV | development / production (기본: production) | ✅ |
DATABASE_URL | PostgreSQL 접속 URL | ✅ |
ADMIN_USERNAME | 관리자 계정 | ✅ |
ADMIN_PASSWORD_HASH | bcrypt 해시된 비밀번호 | ✅ |
JWT_SECRET_KEY | JWT 시크릿 (운영 시 반드시 변경) | ✅ |
GITHUB_TOKEN | GitHub API 토큰 (rate limit 완화) | 권장 |
CORS_ORIGINS | 허용 Origin 목록 (쉼표 구분) | ✅ |
GLM_API_KEY | AI 요약 생성용 API 키 | 선택 |
⚠️ 프로덕션 환경에서는
ENV=production으로 설정하세요. Swagger/ReDoc 문서가 자동으로 비활성화됩니다.
docker-compose up --build -d
# If you have the Docker Compose plugin, you can also use: docker compose up --build -d
docker exec -it skills_marketplace_api alembic upgrade head
docker exec -it skills_marketplace_api python -m app.seed
http://localhost:3004http://localhost:8000/docs (개발 환경에서만 접근 가능)localhost:5433 (컨테이너 내부는 db:5432)http://localhost:3004/admin/loginhttp://localhost:3004/admin/dashboardhttp://localhost:3004/admin/crawlinghttp://localhost:3004/admin/skills (pending/processed/error 탭)http://localhost:3004/admin/quality| 경로 | 설명 |
|---|---|
/ | 랜딩 페이지 (호버 비디오 효과) |
/skills | 스킬 라이브러리 |
/rankings | 스킬 랭킹 (모바일 반응형) |
/plugins | 플러그인 마켓플레이스 |
/packs | Skill Packs (레포 단위 뷰) |
/guide | 사용자 가이드 |
ingest -> parse/validate -> compute_popularity -> build_rank_snapshotspending 파싱 큐는 드레인할 수 있습니다.“공개 스킬”은 아래 URL 패턴만 대상으로 합니다. 그래서 DB 전체와 수가 다를 수 있습니다.
https://github.com/<owner>/<repo>/blob/<ref>/skills/<id>/SKILL.mdhttps://github.com/<owner>/<repo>/blob/<ref>/.claude/skills/<id>/SKILL.md이 프로젝트는 Render.com을 통한 원클릭 배포를 지원합니다.
render.yaml)| 서비스 | 유형 | 설명 |
|---|---|---|
skills-marketplace-api | Web Service | FastAPI 백엔드 |
skills-marketplace-worker | Background Worker | 크롤링/파싱 워커 |
skills-marketplace-web | Web Service | Next.js 프론트엔드 |
render.yaml 자동 감지참고: Free tier에서도 모든 서비스 실행 가능합니다.
docker-compose ps
docker logs -f skills_marketplace_worker
docker logs -f skills_marketplace_api
docker logs -f skills_marketplace_web
대시보드의 워커 상태(worker-status) 는 워커가 루프마다 DB에 남기는 heartbeat입니다.
phase: sleep이면 “할 일 다 하고 다음 루프 대기 중”입니다.interval: 루프 간격(초)입니다. 기본 60초.pending: A -> B: 이번 루프 시작 시점 큐(A)에서 종료 시점 큐(B)로 얼마나 줄었는지입니다.processed_in_loop / errors_in_loop: 이번 루프에서 실제로 파싱/검증 처리한 개수입니다.recent events: 이번 루프에서 실제 실행된 단계 로그입니다. (예: parse_batch, compute_popularity 등)pending=0인 상태가 “정상”일 수 있습니다.
auto ingest OFF 상태에서는 “새로 수집”을 하지 않기 때문에, 이미 쌓인 pending만 드레인하고 나면 0으로 유지됩니다.http://localhost:3004/packshttp://localhost:3004/packs/<pack_id>python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
alembic upgrade head
python -m app.seed
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
cd web
npm install
npm run dev
docker exec -it skills_marketplace_api pytest -q
본 프로젝트는 다층적 보안 체계를 적용하고 있습니다. 자세한 내용은 SECURITY.md를 참고하세요.
| 영역 | 조치 | 상태 |
|---|---|---|
| 🐳 Docker | 비루트(non-root) 사용자로 컨테이너 실행 | ✅ |
| 🐳 Docker | 이미지 태그 특정 버전 고정 | ✅ |
| 🔑 인증 | JWT 만료 시간 4시간 (기존 24시간) | ✅ |
| 🛡️ 입력 검증 | Pydantic max_length 등 제약 조건 추가 | ✅ |
| 📋 감사 로그 | 관리자 로그인/수집/설정 변경 기록 | ✅ |
| 📖 API 문서 | 프로덕션 환경 Swagger/ReDoc 비활성화 | ✅ |
| 🔍 자동 스캔 | GitHub Actions를 통한 pip-audit / npm audit | ✅ |
| 🔒 비밀번호 | 로그에 민감 정보 미기록 확인 | ✅ |
| 📦 의존성 | 취약 패키지 최신 보안 버전으로 업그레이드 | ✅ |
.env, .cursor/, .vscode/ 같은 로컬 설정/시크릿 파일은 레포에 커밋하지 마세요.docs/PRD.md: 제품 요구 사항 정의docs/TRD.md: 기술 사양 및 아키텍처 정의docs/ERD.md: 데이터베이스 개체 관계도docs/DEVELOPMENT_PLAN.md: Phase별 구현 상태 관리 로드맵Built for the AI Agent ecosystem. Coreline AI MIT License