Community코딩 & 개발github.com

workled MCP 컨트롤러

workled 스킬은 MCP를 통해 LED 상태를 관리하고 에이전트 상태 전환을 강제합니다.

workled MCP 컨트롤러란 무엇인가요?

이 스킬은 Claude Code, Cursor, Codex 등 AI 에이전트의 상태를 LED로 시각화하는 MCP 컨트롤러입니다. 에이전트가 생각 중(thinking), 유휴(idle), 입력 대기(input), 오류(error) 상태일 때 각각 LED를 설정하여 사용자에게 직관적인 피드백을 제공합니다. 또한 LED 밝기 조절, 효과 설정(단색, 숨쉬기, 무지개 등), 터치 패드 매크로 설정 기능을 지원합니다. 에이전트는 매 턴마다 set_agent_state를 먼저 호출하여 상태를 업데이트해야 하며, 최종 메시지를 보내기 전에 LED 상태가 올바른지 확인하는 Pre-Reply Gate를 통과해야 합니다. 색상은 자연어로 지정할 수 있으며, HSV로 매핑됩니다. 문제 발생 시 CLI 상태 확인 명령어를 제공하고, 자세한 설정과 문제 해결 참조 문서를 링크합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add git-hub-cloud/workled

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

workled MCP 컨트롤러은(는) 무엇을 하나요?

강제 상태 프로토콜

모든 상태 전환 시 MCP를 통해 set_agent_state를 호출하세요:

상태시점
thinking모든 응답의 첫 번째 도구 호출 시; 사용자가 메시지를 제출할 때
idle턴 종료; 세션 종료 시
input에이전트가 사용자를 기다리는 모든 경우 — 입력 도구(question/ask/confirm) 호출, 클라이언트 측 모달(hermes _confirm_destructive_slash 등) 내부, 또는 일반 텍스트 선택 목록/다중 옵션 질문을 렌더링한 후 사용자의 선택을 기다리는 경우
error런타임 오류 발생 시

턴별 절차 (매 턴마다 순서대로 실행):

  1. 턴 시작/사용자 메시지 수신 → set_agent_state("thinking") — 첫 번째 작업, 다른 도구 호출 전에 실행.
  2. 옵션/선택 사항 렌더링, 모달 열기, 질문하기 전에 → set_agent_state("input").
  3. 턴 종료, 작업 완료, 더 이상 출력이 없음 → set_agent_state("idle").
  4. 런타임 오류/실패한 도구 호출 → set_agent_state("error").

사전 응답 게이트 — 최종 표시 메시지를 보내기 전에 확인하세요:

  • 이번 턴에 set_agent_state를 최소 한 번 호출했습니까?
  • LED 상태가 표시하려는 내용과 일치합니까? (완료 시 idle, 질문 시 input, 작업 중 thinking)
  • 둘 중 하나라도 아니요라면, 올바른 set_agent_state 호출을 먼저 보낸 후 응답하세요.

MCP 도구 참조

도구속성설명사용법
set_agent_statestate_name: stringLED를 에이전트 상태(thinking/idle/input/error)로 설정set_agent_state("thinking")
get_agent_state—현재 에이전트 LED 상태 반환: idle/thinking/input/error (설정되지 않으면 빈 문자열)get_agent_state()
set_brightnessbrightness: integerLED 밝기 0-255; 0 = 꺼짐set_brightness(128)
get_brightness—현재 LED 밝기 0-255 반환get_brightness()
set_effecteffect_name: string, effect_json: stringeffect_name ∈ led(수동 효과)/idle/thinking/input/error; effect_json은 JSON 문자열 {"type","hue","saturation","value","speed"}입니다. 조명이 먼저 켜져 있어야 합니다(set_brightness > 0). 자연어 색상을 HSV로 매핑(아래 표 참조).set_effect("led", '{"type":"breathe","hue":180,"speed":50}')
get_effecteffect_name: stringeffect_name 설정을 JSON으로 가져오기get_effect("thinking")
set_macromacro_name: string, macro_json: string터치 패드 제스처에 대한 매크로 설정; macro_name ∈ single_click/double_click/long_press_start; macro_json은 세그먼트의 JSON 배열(매크로 형식 참조); 빈 macro_json은 재설정set_macro("single_click", '[{"combo":"ctrl+c"}]')
get_macromacro_name: string매크로를 JSON 배열 문자열로 반환, 설정되지 않으면 빈 문자열(비밀번호 값은 마스킹)get_macro("single_click")

자연어 색상을 set_effect에 매핑

사용자가 애니메이션을 요청하지 않는 한 type:"solid"를 사용하세요. 색상 이름을 HSV로 매핑:

설명typehuesaturationvalue
순수 흰색solid00255
따뜻한 흰색solid3080255
빨간색solid0255255
주황색solid30255255
노란색solid60255255
초록색solid120255255
청록/틸solid180255255
파란색solid240255255
보라색solid270255255
분홍색solid330200255
어두움/야간 모드solid308060
무지개 (애니메이션)rainbow---

경험 법칙: hue 0-359로 색조 선택, saturation 0-255 (0 = 흰색/파스텔, 255 = 선명), value 0-255 밝기. 파스텔/흰색 톤은 낮은 채도 사용; 선명한 톤은 255 사용.

매크로 형식

전체 매크로 참조 macro_format.md

설정 및 문제 해결

장치가 응답하지 않으면 node <skill-dir>/index.js status를 실행하고 출력된 JSON hint를 따르세요. 전체 설치/배포/문제 해결 참조: device_setup.md

기여

관련 스킬