daily-standby
npx skills add https://github.com/benjaming/ai-skills --skill daily-standby
Agent 安装分布
Skill 文档
Standby â Park a Blocked Task
Put a task on standby with a required reason describing what it’s waiting on.
Configuration
persistence:
tasksDir: "~/.claude/daily-tasks"
Execution Steps
1. Parse Arguments
Split $ARGUMENTS into an identifier and a reason:
- Identifier: first token â either a numeric task ID or a Jira key pattern (e.g.,
RGI-265,MITB-123). - Reason: everything after the identifier (strip surrounding quotes if present).
If no reason provided:
â A reason is required. What are you waiting on?
Example: /daily-standby 3 "waiting on Claire's design review"
Example: /daily-standby RGI-265 "needs data pipeline rerun"
Stop here.
If no identifier provided: check for a single in_progress task and use that automatically. If zero or multiple in_progress tasks, ask for an explicit task ID. Stop here if ambiguous.
2. Load Task File
Read today’s task file:
cat ~/.claude/daily-tasks/$(date +%Y-%m-%d).json 2>/dev/null
If no file exists: “No task file for today. Run /daily-standup first.” Stop.
Parse the JSON. Find the target task by numeric ID or jira_key.
If not found: “Task #N not found. Today has tasks 1-M.” Stop.
3. Validate Transition
| Current status | Action |
|---|---|
done |
Reject: “Task #N is already done. Can’t put a completed task on standby.” Stop. |
skipped |
Reject: “Task #N was skipped. Use /daily-next N to pick it up first.” Stop. |
standby (no new reason) |
Show current reason: “Task #N is already on standby. Waiting on: {waiting_on}. Use /daily-unblock N to activate it, or re-run /daily-standby N \"new reason\" to update the reason.” Stop. |
standby (with new reason) |
Update waiting_on and paused_at in place. Proceed. |
pending or in_progress |
Proceed. |
4. Update Task
Read the current task file (fresh read), update the target task:
- Set
statusto"standby" - Set
waiting_onto the parsed reason string - Set
paused_atto current ISO timestamp (date -u +%Y-%m-%dT%H:%M:%SZ) - Preserve
started_atas-is (do not clear â needed for unblock logic) - Update
updated_aton the root object
Write the updated JSON back using the Write tool.
5. Confirm
Display:
â¸ï¸ Task #N on standby: $JIRA_KEY â $SUMMARY
ââ Waiting on: $REASON
Show compact remaining actionable tasks (status pending or in_progress only â exclude standby tasks):
Remaining:
#N. [TIER] $JIRA_KEY â $SUMMARY
#N. [TIER] $JIRA_KEY â $SUMMARY
If any standby tasks exist (including the one just parked), add a line:
⸠N task(s) on standby â run /daily-unblock to activate when ready
Suggest next actionable task:
ð Next up: Task #N ($JIRA_KEY) â $SUMMARY
Run /daily-next to pick it up.
If no actionable tasks remain:
ð No actionable tasks remaining.
⸠N task(s) on standby â run /daily-unblock when unblocked, or /daily-standup to refresh.
Edge Cases
/daily-standbywith no identifier and noin_progresstask: Ask for explicit ID. Stop./daily-standbyon already-standby task with new reason: Updatewaiting_onandpaused_at. Confirm update./daily-standbyon already-standby task without new reason: Show current reason, suggest/daily-unblock. Stop.- Task ID doesn’t exist: “Task #N not found. Today has tasks 1-M.”
- File write fails: Report error, do not silently lose the update.