--- type: workflow tags: [workflow, skill-calendar, calendar, executor, intent] last_updated: 2026-04-06 --- # skill_calendar_request 워크플로우 ## 목적 캘린더 스킬 요청 처리. 일정 생성(create), 조회(list/get), 삭제(delete)를 SKILL.md 기반 executor를 통해 skill-calendar 서비스로 전달한다. ## 현행 아키텍처 - **의도분류**: IntentClassifier가 SKILL.md 본문으로 `skill-calendar` 매칭 - **실행**: executor가 `SKILL_CALENDAR_URL` 환경변수에서 URL 해소 후 HTTP 호출 - **메서드 결정**: SKILL.md frontmatter `endpoints`가 action별 HTTP 메서드(GET/POST/DELETE)와 경로를 정의 n8n webhook 브릿지는 사용하지 않는다. ## 흐름 ``` 사용자 발화 ("내일 2시 미팅 잡아줘") -> IntentClassifier.classify() -- IntentResult(skill="skill-calendar", action="create_event", endpoint="/api/events", slots={...}) -> executor.execute() -- registry.resolve_url() -> SKILL_CALENDAR_URL 환경변수 -- registry.resolve_method("create_event") -> POST (SKILL.md frontmatter) -- POST {SKILL_CALENDAR_URL}/api/events (httpx, X-User-Id 헤더) -> _format_as_robeing() -> 응답 ``` ## SKILL.md 엔드포인트 정의 | action | 메서드 | 경로 | |--------|--------|------| | `create_event` | POST | `/api/events` | | `list_events` | GET | `/api/events` | | `get_events` | GET | `/api/events` | | `delete_event` | DELETE | `/api/events/{event_id}` | 경로 파라미터(`{event_id}`)는 executor가 params에서 자동 보간한다. ## 주요 코드 경로 | 단계 | 코드 | |------|------| | 스킬 정의 | `DOCS/skills/skill-calendar/SKILL.md` | | 의도분류 | `app/services/brain/intent_classifier.py` | | 실행 | `app/services/skills/executor.py:execute()` | | URL/메서드 해소 | `app/services/skills/registry.py:SkillMeta` | ## 환경변수 | 변수 | 용도 | |------|------| | `SKILL_CALENDAR_URL` | skill-calendar 서비스 베이스 URL | ## 관련 문서 - [skill-calendar SKILL.md](/home/admin/robeing/DOCS/skills/skill-calendar/SKILL.md) -- 스킬 계약 - [skill_email_send_request.md](./skill_email_send_request.md) - [message_flow_v2.md](../01_conversation/message_flow_v2.md) -- v2 메시지 흐름