coordinate-executors
"Sends deadline reminder emails to task executors for overdue or
Skill: coordinate-executors
Sends personalized deadline reminder emails to task executors. Checks Jira for overdue or approaching-deadline tasks, groups by assignee, and sends emails via Gmail at autonomy level 1 (no confirmation needed). Runs daily as a scheduled task or on demand.
Triggers
Russian: «напомни исполнителям», «проверь дедлайны», «отправь напоминания», «кто просрочил задачи», «какие задачи горят», «проверь просроченные» English: "remind executors", "check deadlines", "send deadline reminders", "overdue tasks", "remind the team", "coordinator reminders"
Language Detection
- Read
languagefield fromproject-state.md→ use that value (RU or EN) - If field is absent → scan any existing project artifact for Cyrillic content; if found → RU
- If still undetermined → EN (default)
- RU →
email-tpl-reminder-deadline-ru.md - EN →
email-tpl-reminder-deadline-en.md
Input
| Data | Required | Source |
|---|---|---|
| Tasks with deadlines and assignees | yes | Jira MCP (primary) or 02-planning/project-plan.md (fallback) |
| Reminder horizon | no | Default ≤ 2 business days; configurable via project-state.md → reminder_horizon_days |
| Executor contacts | no | 01-initiation/stakeholder-map.md or Jira profiles |
| Project name, current phase | no | project-state.md |
Output
| File / Action | Path | Condition |
|---|---|---|
| Deadline reminder email | — (Gmail, external) | Tasks with deadline ≤ 2 days or overdue |
reminders-{YYYY-MM-DD}.md | reports/ | Fallback: Gmail unavailable |
| Log entry | logs/log.md | Always |
| State update | project-state.md | When reminders are sent |
Instructions
Step 1 — Guard-rail
If the request is about team management theory, HR practices, or motivation (not about specific project task deadlines) → respond: "coordinate-executors sends deadline reminders to task assignees. Tell me which tasks or project phase to check." Do not start the workflow.
Step 2 — Initialize
Determine run mode:
- Scheduled: fully autonomous — no questions asked
- Manual: may clarify reminder horizon if explicitly changed by PM
Read project-state.md → project name, current phase, sprint, PM name,
reminder_horizon_days (default: 2 if not set).
Step 3 — Fetch Tasks
Primary path (Jira available): Query tasks with filter:
- Status not "Done" / "Closed" / "Won't Fix"
- Assignee is set (not "Unassigned")
dueDate≤ today +reminder_horizon_days(business days) ORdueDate< today
Group results by assignee.
Fallback (Jira unavailable):
Read 02-planning/project-plan.md. Extract tasks for the current phase with
fields: task name, owner, deadline, status.
Apply the same filter: deadline ≤ today + horizon OR overdue.
Notify PM in chat: "Jira unavailable. Data loaded from project-plan.md."
Step 4 — Check for Tasks
If no qualifying tasks found:
- Write to
logs/log.md:{DATE}: coordinate-executors — check complete, no overdue or approaching tasks - Exit without sending emails.
Step 5 — Prepare Reminders
For each executor with qualifying tasks:
-
Split tasks into two lists:
- Overdue:
dueDate< today (include days overdue) - Upcoming:
dueDate= today or today + 1–{horizon} days (include days remaining)
- Overdue:
-
Load the E6 template matching the project language:
- English →
templates/email-tpl-reminder-deadline-en.md - Russian →
templates/email-tpl-reminder-deadline-ru.md
- English →
-
Populate the template:
{EXECUTOR_NAME}— assignee name{PROJECT_NAME}— from project-state.md{OVERDUE_TASKS}— table: task name | due date | days overdue{UPCOMING_TASKS}— table: task name | due date | days remaining{PM_NAME}— from project-state.md (or placeholder)
-
Resolve executor email:
- From
01-initiation/stakeholder-map.md(primary) - From Jira profile (if stakeholder-map unavailable)
- If not found → add to unknown-contact list; escalate to level 2 for that executor
- From
Step 6 — Send Reminders
Primary path (Gmail available): For each executor:
- Call
send-emailskill with autonomy level 1 (auto-send) - Exception: if executor email is not in stakeholder-map.md or Jira profile → escalate to level 2 (show draft to PM, request confirmation before sending)
- One email per executor (do not merge multiple executors into one email)
Fallback (Gmail unavailable):
Create reports/reminders-{YYYY-MM-DD}.md. For each executor — one section using the E6 template structure:
- H2 header:
## {EXECUTOR_NAME} <{EXECUTOR_EMAIL}> - Subject line, greeting, overdue/upcoming tables, action items, signature
- Blank line between executor sections
Notify PM: "Gmail unavailable. Reminder drafts saved to reports/reminders-{DATE}.md — send manually."
Step 7 — Log and Update State
-
Write to
logs/log.md:- If sent:
{DATE}: coordinate-executors — {N} reminders sent ({EXECUTOR_LIST}) - If fallback:
{DATE}: coordinate-executors — fallback, saved reports/reminders-{DATE}.md
- If sent:
-
Update
project-state.md: setlast_reminder_checkto today's date. -
Output summary to chat:
- Number of reminders sent and executor names, OR
- "No overdue or approaching tasks found."
Templates
| File | Purpose |
|---|---|
templates/email-tpl-reminder-deadline-en.md | Email template E6 — deadline reminder (EN) |
templates/email-tpl-reminder-deadline-ru.md | Email template E6 — deadline reminder (RU) |
Dependencies
Reads (optional):
project-state.md— project name, phase, PM, horizon setting01-initiation/stakeholder-map.md— executor contacts02-planning/project-plan.md— task list (Jira fallback)
External actions:
- Jira MCP — task query (primary)
- Gmail MCP via
send-email— sending reminders (primary)
Passes data to:
send-email— email body, recipient, autonomy level
Constraints
- Does not create Jira tasks — only reads existing ones
- Does not update task status — only sends reminders
- Does not analyze root causes of overdue tasks
- One email per executor per run; re-running the same day sends a new email
- Tasks without a due date are ignored
- In scheduled mode without a valid
project-state.md→ log error and exit - Fallback mode does not block log entry creation