name: jira-calendar-daily-report description: Use when the user asks to pull Jira activity for one or more dates, generate a daily report, summarize Created and QA outcome tickets for PAY or MP squads, include same-day calendar meetings, or keep a fixed daily report format with totals and hyperlink ticket IDs. Also trigger when the user says "daily report", "báo cáo hôm nay", "report ngày ...", "pull jira hôm nay", or wants to review worklogs based on their Jira activity.
Jira Calendar Daily Report
Build the report using the available MCP connectors.
- Jira: use Atlassian MCP Jira search tools (
searchJiraIssuesUsingJql,getJiraIssue). If Atlassian MCP is unavailable, inform the user to verify the Atlassian connector in Claude's plugin settings. - Calendar: use the Google Calendar MCP
list_eventstool withcalendarId: "primary". - Do not use browser scraping when MCP connectors are available.
Workflow
- Determine the target date.
- Treat the report day as
00:00:00to23:59:59inAsia/Ho_Chi_Minhunless the user explicitly says otherwise. - For each requested Jira project, fetch:
CreatedQA successQA failed- For
QA successandQA failed, use a two-stage filter:- Stage 1: fetch all same-day status transitions for the bucket
- Stage 2: keep only tickets that still match a user-ownership guard before drafting output
- Fetch calendar events from
calendarId: "primary"for the same day. - Format the final output exactly as defined in references/report-spec.md.
- If the user wants to review worklogs based on the report, append a
Worklog draftblock after the report content.
Calendar is part of the default daily report. Include it unless the user explicitly asks to omit calendar.
Jira Rules
- Keep Jira execution transport-agnostic:
- required capability: search Jira issues with JQL
- preferred transport: Atlassian MCP (
searchJiraIssuesUsingJql) - fallback: inform user to check Atlassian connector in Claude plugin settings
- Default projects:
PAYMP
- Use
currentUser()in JQL. - Use exact status names:
QA successQA failed
- Request at least these fields:
keyprioritysummary
- Preserve duplicates across sections if the same ticket qualifies in multiple sections.
- Remove duplicates within the same section by ticket key.
- If the same ticket appears in multiple sections on the same report date, treat each appearance as a separate worklog candidate.
Createdshould stay strict to the current user:- prefer
creator = currentUser()
- prefer
QA successandQA failedshould not rely onBY currentUser()as the only ownership check.- For
QA successandQA failed, use this filtering model:- Stage 1 candidate query: same-day
status changed TO ...withoutBY currentUser() - Stage 2 ownership guard: keep a ticket only if it matches at least one ownership signal that the current run can verify
- Stage 1 candidate query: same-day
- Preferred ownership guard order for
QA successandQA failed:assignee = currentUser() OR reporter = currentUser()- if the user explicitly gives a narrower scope for the run, use that scope too
- If no reliable ownership guard is available for QA buckets, do not auto-log those tickets; keep them in draft-only mode and call out that the bucket is broad.
- Do not use timezone mismatch as the default explanation when QA queries differ. First check whether
BY currentUser()or another ownership guard is filtering out valid tickets. See references/report-spec.md for JQL templates and calendar query format.
Calendar Rules
- Always use
calendarId: "primary". - Query the full local day with explicit timezone offset.
- Default filters:
eventTypes: ["default"]attendeeResponseStatus: ["accepted", "tentative", "needsAction"]
- Exclude cancelled events.
- Keep all-day events and label them
Cả ngày. - Format timed events as
HH:MM - HH:MM (duration) - title.
Output Rules
- Group by board/project first.
- Always print
Report date: YYYY-MM-DDbefore the first Jira section. - For each board, output:
Created (Total: X)QA success (Total: Y)QA failed (Total: Z)
- Ticket format must be:
[ID](jira-url) | Priority | Title
- If priority is missing, use
No Priority. - Use a real hyperlink for
ID. - Use
|as the separator between fields. - Keep each ticket as a single physical line in the response text.
- If Slack breaks after the hyperlink when pasted, accept that behavior; do not change the chosen display format.
- Add a
Calendar hôm nay (Total: N)section after Jira sections. - Include the calendar section by default for daily report requests, even if the user only mentions Jira boards or projects.
- Omit the calendar section only when the user explicitly says they do not want calendar output.
- If the user asks to prepare worklogs from the report, add a
Worklog draftsection after the calendar section. - Each
Worklog draftline must be a single physical line and include:Ticket Key | Report date | Bucket | Time spent | Worklog note
Worklog draftis the only source for downstream confirmation and Jira worklog writes. Do not reconstruct worklog entries by parsing the display sections.- Keep answers compact. Do not add explanation unless the user asks for it.
Notes
- If the user asks for one board only, output only that board plus calendar if requested.
- For daily report requests, treat calendar as requested by default.
- If the user asks for multiple boards, keep each board in its own section.
- If a section has zero items, still print the section header with
Total: 0. - If the user explicitly says to skip calendar, omit the calendar section.
- Default worklog mapping for
Worklog draft:Created->5m->create ticket {ticket title}QA success->15m->verify ticket success {ticket title}QA failed->15m->verify ticket failed {ticket title}
- Allow per-ticket overrides when the user provides them explicitly.
- Never log work to Jira until the user confirms the draft.
- If Jira MCP is unavailable, inform the user to verify the Atlassian connector in Claude plugin settings before proceeding.