# 플러그인 및 스킬 ## 플러그인 ### 플러그인이란 무엇인가? 플러그인은 런타임에 Neotask의 기능을 확장하는 TypeScript 모듈입니다. 새로운 메시지 채널, 에이전트 도구, RPC 메서드, CLI 명령, 백그라운드 서비스, 스킬을 추가할 수 있습니다. ### 공식 플러그인 **메시지 채널:** - Microsoft Teams, Matrix, Nostr, Zalo, Feishu/Lark, LINE, Nextcloud Talk, Mattermost, Tlon, Twitch **기능:** - **음성 통화**, 인바운드/아웃바운드 음성 통화를 위한 SIP 전화 지원 - **메모리 (LanceDB)**, 벡터 유사도 검색을 통한 장기 메모리 - **MCP 네이티브**, 외부 도구를 연결하기 위한 모델 컨텍스트 프로토콜 서버 통합 **인증 제공업체:** - Google Antigravity OAuth, Gemini CLI OAuth, Qwen OAuth, Minimax OAuth, VS Code Copilot 프록시 ### 플러그인 기능 플러그인은 다음을 등록할 수 있습니다: - **RPC 메서드**, 클라이언트가 호출할 수 있는 커스텀 WebSocket 메서드 - **HTTP 핸들러**, 게이트웨이의 커스텀 HTTP 엔드포인트 - **에이전트 도구**, 에이전트가 호출할 수 있는 타입이 지정된 스키마를 갖춘 새 도구 - **CLI 명령**, 추가 명령줄 명령 - **백그라운드 서비스**, 게이트웨이가 관리하는 장기 실행 프로세스 - **스킬**, 플러그인과 함께 번들된 스킬 디렉토리 - **자동 응답 명령**, AI 에이전트 개입 없이 실행되는 명령 ### 플러그인 보안 Neotask는 플러그인이 실행되기 전에 여러 단계로 확인합니다. - **서명 및 검증.** 공개 Construct 카탈로그의 패키지는 Neotask가 게시하며, 릴리스 전에 자동으로 검사되고 Neotask 릴리스 키로 서명됩니다. 설치 전에 Neotask는 Neotask에 내장된 키로 서명을 확인하고 다운로드의 SHA-256 해시를 검증합니다. - **설치 스크립트 없음.** Construct 패키지는 종속성을 함께 포함하므로 설치할 때 패키지 관리자나 설치 스크립트가 실행되지 않습니다. 다른 플러그인 설치에서 npm을 사용할 때도 설치 스크립트는 꺼져 있습니다. - **설치 시 검사.** Construct 외부에서 설치하는 플러그인은 위험한 코드가 있는지 검사되며, 심각한 문제가 발견되면 설치가 차단됩니다. - **릴리스별 라이선스.** Construct 플러그인은 계정에 해당 릴리스에 대한 유효한 권한이 있는 동안에만 로드됩니다. 철회된 릴리스는 로드되지 않습니다. - **에이전트 작업 승인.** 플러그인이 추가한 도구를 포함한 에이전트의 도구 호출은 승인 정책에 따라 확인되며, 승인이 필요한 작업은 승인을 기다립니다. 에이전트가 Neotask에 포함된 설치 레시피 외의 소프트웨어를 설치하려고 하면 항상 정확한 명령을 보여 주고 승인을 기다립니다. - **선택형 샌드박스.** 에이전트의 도구를 컴퓨터에서 직접 실행하는 대신 격리된 Docker 컨테이너에서 실행할 수 있습니다. 샌드박스는 기본적으로 꺼져 있으며, 켜는 방법은 [보안](security.md)을 참조하세요. 네이티브 플러그인은 게이트웨이 프로세스 안에서 실행되므로, Construct 외부에서 설치한 플러그인은 사용자가 실행하기로 선택한 코드입니다. 로드할 수 있는 플러그인은 `plugins.allow`로 지정하세요. --- ## 스킬 ### 스킬이란 무엇인가? 스킬은 에이전트에게 새로운 워크플로를 가르치는 모듈식 기능입니다. 각 스킬은 관련성이 있을 때 에이전트의 컨텍스트에 주입되는 지시가 있는 마크다운 파일(`SKILL.md`)입니다. ### 스킬 위치 (우선순위 순서) 1. **워크스페이스 스킬**, `/skills/` (최고 우선순위) 2. **관리형 스킬**, `~/.neotask/skills/` 3. **번들 스킬**, Neotask와 함께 제공됩니다 4. **플러그인 스킬**, 설치된 플러그인과 함께 패키징된 스킬 5. **추가 디렉토리**, 추가로 구성된 경로 (최저 우선순위) 동일한 이름의 스킬이 여러 개 있을 경우 우선순위가 가장 높은 위치가 우선합니다. ### 스킬 기능 - **사용자 호출 가능**, 슬래시 명령으로 직접 스킬을 트리거합니다 (예: `/docker-build`) - **모델 호출 가능**, 관련성이 있을 때 에이전트가 스스로 호출할 수 있는 스킬 - **명령 디스패치**, 특정 도구에 매핑되는 스킬 - **요구 사항 게이팅**, 요구 사항이 충족된 경우에만 스킬이 로드됩니다 (필요한 바이너리, 구성 키, 환경 변수, 플러그인) ### 스킬 만들기 스킬의 메타데이터와 지시를 정의하는 YAML 프론트매터가 있는 `SKILL.md` 파일을 만듭니다: **프론트매터 필드:** - `name`, 스킬 식별자 - `description`, 스킬이 하는 일 - `homepage`, 문서 링크 - `user-invocable`, 사용자가 직접 트리거할 수 있는지 여부 - `disable-model-invocation`, 에이전트가 자율적으로 호출하지 못하도록 방지 - `command-dispatch`, 디스패치할 도구 - `metadata.neotask.requires`, 전제 조건 (bins, config, env, plugins) **본문:** 에이전트에게 스킬 사용 방법을 가르치는 마크다운 지시, 예시 및 지침 포함. ### 스킬 카탈로그 사용 가능한 스킬은 [스킬 카탈로그](/skills)에서 탐색할 수 있습니다. ### 스킬 카테고리 스킬은 다양한 기능을 다룹니다: | 카테고리 | 예시 | |----------|---------| | **생산성** | 이메일 관리, 캘린더, 문서 생성 | | **개발** | Git 작업, CI/CD, Docker, 코드 리뷰 | | **커뮤니케이션** | 메시지, 알림, 공지 | | **미디어** | 이미지 처리, 비디오 편집, 오디오 전사 | | **AI 및 모델** | 모델 전환, 프롬프트 관리, RAG | | **스마트 홈** | IoT 기기 제어, 자동화 트리거 | | **유틸리티** | 파일 변환, 데이터 변환, 웹 스크래핑 |