daily-standby

📁 benjaming/ai-skills 📅 8 days ago
4
总安装量
4
周安装量
#50870
全站排名
安装命令
npx skills add https://github.com/benjaming/ai-skills --skill daily-standby

Agent 安装分布

amp 4
gemini-cli 4
claude-code 4
github-copilot 4
codex 4
kimi-cli 4

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 status to "standby"
  • Set waiting_on to the parsed reason string
  • Set paused_at to current ISO timestamp (date -u +%Y-%m-%dT%H:%M:%SZ)
  • Preserve started_at as-is (do not clear — needed for unblock logic)
  • Update updated_at on 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-standby with no identifier and no in_progress task: Ask for explicit ID. Stop.
  • /daily-standby on already-standby task with new reason: Update waiting_on and paused_at. Confirm update.
  • /daily-standby on 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.