skills/skills-codex/feishu-notify/SKILL.md
Send notifications to Feishu/Lark. Internal utility used by other skills, or manually via /feishu-notify. Use when user says "发飞书", "notify feishu", or other skills need to send status updates.
npx skillsauth add wanshuiyin/Auto-claude-code-research-in-sleep feishu-notifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send a notification: $ARGUMENTS
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.
The skill reads ~/.codex/feishu.json. If this file does not exist, all Feishu functionality is disabled — skills behave exactly as before.
{
"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
}
}
| Mode | "mode" value | What it does | Requires |
|------|----------------|--------------|----------|
| Off | "off" or file absent | Nothing. Pure CLI as-is | Nothing |
| Push only | "push" | Send webhook notifications at key events. Mobile push, no reply | Feishu bot webhook URL |
| Interactive | "interactive" | Full bidirectional. Approve/reject from Feishu, reply to checkpoints | feishu-claude-code running |
cat ~/.codex/feishu.json 2>/dev/null
"mode": "off" → return silently, do nothing"mode": "push" → proceed to Step 2 (push)"mode": "interactive" → proceed to Step 3 (interactive)Send a rich card to the Feishu webhook:
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:
| Event | Title | Color | Body |
|-------|-------|-------|------|
| experiment_done | Experiment Complete | green | Results table, delta vs baseline |
| review_scored | Review Round N: X/10 | blue (≥6) / orange (<6) | Score, verdict, top 3 weaknesses |
| checkpoint | Checkpoint: Waiting for Input | yellow | Question, options, context |
| error | Error: [type] | red | Error message, what failed |
| pipeline_done | Pipeline Complete | purple | Final summary, deliverables |
| custom | Custom | blue | Free-form message from $ARGUMENTS |
Return immediately after curl — push mode never waits for a response.
Interactive mode uses feishu-claude-code as a bridge:
Send message to the bridge:
curl -s -X POST "$BRIDGE_URL/send" \
-H "Content-Type: application/json" \
-d '{"type": "EVENT_TYPE", "title": "TITLE", "body": "BODY", "options": ["approve", "reject", "custom"]}'
Wait for reply (with timeout):
curl -s "$BRIDGE_URL/poll?timeout=$TIMEOUT_SECONDS"
Returns: {"reply": "approve"} or {"reply": "reject"} or {"reply": "user typed message"} or {"timeout": true}
On timeout: Fall back to AUTO_PROCEED behavior (proceed with default option).
Return the user's reply to the calling skill so it can act on it.
Other skills should use this pattern to send notifications:
### Feishu Notification (if configured)
Check if `~/.codex/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.
Skills send these events at these moments:
| Skill | Event | When |
|-------|-------|------|
| /auto-review-loop | review_scored | After each round's review score |
| /auto-review-loop | pipeline_done | Loop complete (positive or max rounds) |
| /auto-paper-improvement-loop | review_scored | After each round's review score |
| /auto-paper-improvement-loop | pipeline_done | All rounds complete |
| /run-experiment | experiment_done | Screen session finishes |
| /idea-discovery | checkpoint | Between phases (if interactive) |
| /idea-discovery | pipeline_done | Final report ready |
| /monitor-experiment | experiment_done | Results collected |
| /research-pipeline | checkpoint | Between workflow stages |
| /research-pipeline | pipeline_done | Full pipeline complete |
AUTO_PROCEED: In interactive mode, if the user doesn't reply within timeout, use the same auto-proceed logic as the calling skill.data-ai
Generate and rank research ideas given a broad direction. Use when user says "找idea", "brainstorm ideas", "generate research ideas", "what can we work on", or wants to explore a research area for publishable directions.
development
Get a deep critical review of research from GPT using a secondary Codex agent. Use when user says "review my research", "help me review", "get external review", or wants critical feedback on research ideas, papers, or experimental results.
data-ai
Generate and rank research ideas given a broad direction. Use when user says "找idea", "brainstorm ideas", "generate research ideas", "what can we work on", or wants to explore a research area for publishable directions.
development
Autonomous multi-round research review loop. Repeatedly reviews using a secondary Codex agent, implements fixes, and re-reviews until positive assessment or max rounds reached. Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.