hub-ops
Manage claude-code-feishu service operations — cron jobs (定时任务/计划任务), scheduler reload, service status. Use when the user asks about scheduled tasks, periodic jobs, adding/removing/enabling cron jobs, checking service status, reloading configuration, or mentions 定时任务、计划任务、cron、调度、服务状态.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Hub Operations
You are running inside nas-claude-hub as a Claude CLI subprocess. Use the hub_ctl.py script to manage hub operations. Never run hub.sh restart or hub.sh stop directly — that would kill your own parent process.
Tool
python3 .claude/skills/hub-ops/scripts/hub_ctl.py <command> [args]
Available Commands
Cron Job Management
# List all jobs
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron list
# Add a handler job (e.g. briefing pipeline)
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron add "daily-briefing" "0 8 * * *" --handler briefing
# Add a prompt job (LLM-routed)
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron add "weekly-summary" "0 9 * * 1" --prompt "Summarize this week" --model claude-cli/sonnet
# Remove a job (prefix match on ID)
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron remove abc123
# Enable/disable a job
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron enable abc123
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron disable abc123
# Show job details
python3 .claude/skills/hub-ops/scripts/hub_ctl.py cron show abc123
Schedule Formats
| Format | Example | Meaning |
|---|---|---|
| Cron | "0 8 * * *" |
Daily at 08:00 |
| Cron | "*/30 * * * *" |
Every 30 minutes |
| Interval | 30m |
Every 30 minutes |
| One-shot | 2026-03-02T15:00 |
Once at specific time |
All times use Asia/Shanghai timezone.
Service Status & Reload
# Check if hub is running
python3 .claude/skills/hub-ops/scripts/hub_ctl.py status
# Trigger hot-reload (after external changes to jobs.json)
python3 .claude/skills/hub-ops/scripts/hub_ctl.py reload
Registered Handlers
| Handler | Description | Managed by |
|---|---|---|
briefing |
Daily briefing pipeline — default domain (subprocess) | BriefingPlugin |
briefing:<domain> |
Per-domain briefing pipeline (auto-discovered) | BriefingPlugin |
Handler jobs don't need a prompt — they spawn scripts/briefing_run.py as subprocess.
What Requires Restart vs Not
| Change | Needs restart? |
|---|---|
| Cron jobs (add/remove/enable/disable) | No — hub_ctl.py auto-reloads |
sources.yaml (briefing search terms) |
No — collector reads fresh each run |
scripts/briefing_run.py (pipeline logic) |
No — runs as subprocess |
HEARTBEAT.md |
No — read fresh each heartbeat cycle |
config.yaml (credentials, LLM defaults) |
Yes — tell user to run hub.sh restart |
Hub Python code (main.py, feishu_bot.py) |
Yes — tell user to run hub.sh restart |
| Python dependencies | Yes — tell user to run hub.sh restart |
When restart IS needed, tell the user: "Service restart needed because [reason]. Please run: hub.sh restart"
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-03-11
- Index updated
- 2026-03-11
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!