wanshuiyin/auto-claude-code-research-in-sleep

feishu-notify

Send notifications to Feishu/Lark.

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill feishu-notify

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Feishu/Lark Notification

Send a notification: $ARGUMENTS

Overview

This skill provides Feishu/Lark integration for ARIS. It is designed as an internal utility — other skills call it at key events (experiment done, review scored, checkpoint waiting). It can also be invoked manually.

Zero-impact guarantee: If no feishu.json config exists, this skill does nothing and returns silently. All existing workflows are completely unaffected.

Configuration

The skill reads ~/.claude/feishu.json. If this file does not exist, all Feishu functionality is disabled — skills behave exactly as before.

Config Format

json
{
  "mode": "push",
  "webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/YOUR_WEBHOOK_ID",
  "interactive": {
    "bridge_url": "http://localhost:5000",
    "timeout_seconds": 300
  }
}

Modes

Mode"mode" valueWhat it doesRequires
Off"off" or file absentNothing. Pure CLI as-isNothing
Push only"push"Send webhook notifications at key events. Mobile push, no replyFeishu bot webhook URL
Interactive"interactive"Full bidirectional. Approve/reject from Feishu, reply to checkpointsfeishu-claude-code running

Workflow

Step 1: Read Config

bash
cat ~/.claude/feishu.json 2>/dev/null
  • File not found → return silently, do nothing
  • `"mode": "off"` → return silently, do nothing
  • `"mode": "push"` → proceed to Step 2 (push)
  • `"mode": "interactive"` → proceed to Step 3 (interactive)

Step 2: Push Notification (webhook)

Send a rich card to the Feishu webhook:

bash
curl -s -X POST "$WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "msg_type": "interactive",
    "card": {
      "header": {
        "title": {"tag": "plain_text", "content": "TITLE"},
        "template": "COLOR"
      },
      "elements": [
        {"tag": "markdown", "content": "BODY"}
      ]
    }
  }'

Card templates by event type:

EventTitleColorBody
experiment_doneExperiment CompletegreenResults table, delta vs baseline
review_scoredReview Round N: X/10blue (≥6) / orange (<6)Score, verdict, top 3 weaknesses
checkpointCheckpoint: Waiting for InputyellowQuestion, options, context
errorError: [type]redError message, what failed
pipeline_donePipeline CompletepurpleFinal summary, deliverables
customCustomblueFree-form message from $ARGUMENTS

Return immediately after curl — push mode never waits for a response.

Step 3: Interactive Notification (bidirectional)

Interactive mode uses feishu-claude-code as a bridge:

  1. Send message to the bridge:
bash
   curl -s -X POST "$BRIDGE_URL/send" \
     -H "Content-Type: application/json" \
     -d '{"type": "EVENT_TYPE", "title": "TITLE", "body": "BODY", "options": ["approve", "reject", "custom"]}'
  1. Wait for reply (with timeout):
bash
   curl -s "$BRIDGE_URL/poll?timeout=$TIMEOUT_SECONDS"

Returns: {"reply": "approve"} or {"reply": "reject"} or {"reply": "user typed message"} or {"timeout": true}

  1. On timeout: Fall back to AUTO_PROCEED behavior (proceed with default option).
  1. Return the user's reply to the calling skill so it can act on it.

Step 4: Verify Delivery

  • Push mode: Check curl exit code. If non-zero, log warning but do NOT block the workflow.
  • Interactive mode: If bridge is unreachable, fall back to push mode (if webhook configured) or skip silently.

Helper Function (for other skills)

Other skills should use this pattern to send notifications:

markdown
### Feishu Notification (if configured)

Check if `~/.claude/feishu.json` exists and mode is not "off":
- If **push** mode: send webhook notification with event summary
- If **interactive** mode: send notification and wait for user reply
- If **off** or file absent: skip entirely (no-op)

This check is always guarded. If the config file doesn't exist, the skill skips the notification block entirely — zero overhead, zero side effects.

Event Catalog

Skills send these events at these moments:

SkillEventWhen
/auto-review-loopreview_scoredAfter each round's review score
/auto-review-looppipeline_doneLoop complete (positive or max rounds)
/auto-paper-improvement-loopreview_scoredAfter each round's review score
/auto-paper-improvement-looppipeline_doneAll rounds complete
/run-experimentexperiment_doneScreen session finishes
/idea-discoverycheckpointBetween phases (if interactive)
/idea-discoverypipeline_doneFinal report ready
/monitor-experimentexperiment_doneResults collected
/research-pipelinecheckpointBetween workflow stages
/research-pipelinepipeline_doneFull pipeline complete

Key Rules

  • NEVER block a workflow because Feishu is unreachable. Always fail open.
  • NEVER require Feishu config — all skills must work without it.
  • Config file absent = mode off. No error, no warning, no log.
  • Push mode is fire-and-forget. Send curl, check exit code, move on.
  • Interactive timeout = auto-proceed. Don't hang forever waiting for a reply.
  • Respect `AUTO_PROCEED`: In interactive mode, if the user doesn't reply within timeout, use the same auto-proceed logic as the calling skill.
  • No secrets in notifications. Never include API keys, tokens, or passwords in Feishu messages.

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills