skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
i9wa4/dotfiles105 installs

daily-report

Daily report creation skill. Summarizes GitHub and Jira activities, creates a draft, and posts as an Issue. Use when: - Asked to "create daily report" or "write daily report" - Asked to "summarize today's activities" - Requested to create a daily report or journal

How do I install this agent skill?

npx skills add https://github.com/i9wa4/dotfiles --skill daily-report
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill automates the creation of daily reports by aggregating activity from GitHub, Jira, and Slack. It requires user-provided Slack tokens to fetch calendar data and uses standard tools like the GitHub CLI. It includes a mandatory manual review step for the user to verify the report content before it is posted.

  • Socketpass

    No alerts

  • Snykwarn

    Risk: MEDIUM · 1 issue

  • Runlayerfail

    2/3 files flagged

What does this agent skill do?

Daily Report Skill

Summarize @i9wa4's GitHub and Jira activities and post as a GitHub Issue.

1. Prerequisites

  • gh CLI installed
  • jq installed
  • acli installed (for Jira)

2. Workflow

2.1. Get GitHub Activities

Use dedicated script to fetch activities. Defaults to fetching 24 hours of activities from current time (calculated in UTC).

2.1.1. Script Location

${CLAUDE_CONFIG_DIR}/skills/daily-report/scripts/get-activities.sh

2.1.2. Command Examples

# Default: 24 hours ago to now (local repos only via ghq list)
${CLAUDE_CONFIG_DIR}/skills/daily-report/scripts/get-activities.sh --no-url

# Specify hours: N hours ago to now
${CLAUDE_CONFIG_DIR}/skills/daily-report/scripts/get-activities.sh --hours 48 --no-url

# Specify datetime directly (ISO8601, UTC)
${CLAUDE_CONFIG_DIR}/skills/daily-report/scripts/get-activities.sh --from 2025-12-16T15:00:00Z --to 2025-12-17T15:00:00Z --no-url

2.1.3. Options

OptionDescription
--no-urlOutput without URLs (prevents mention notifications)
--hours NFetch activities from N hours ago to now
--fromStart datetime (ISO8601, e.g., 2025-12-17T00:00:00Z)
--toEnd datetime (ISO8601, e.g., 2025-12-17T23:59:59Z)
--hostnameGitHub Enterprise Server hostname
--exclude-ownerExclude repos by owner (comma-separated, default: i9wa4)
--include-personalInclude personal repos (overrides --exclude-owner)

2.1.4. Output Format

### repository-owner/repository-name

- [Issue] Issue title
- [IssueComment] Issue title
- [PullRequest] PR title
- [PullRequestComment] PR title
- [ReviewedPR] PR title (PRs reviewed by me, excludes my own PRs)

Note: Use --no-url option to omit URLs and prevent mention notifications. Note: Personal repos (i9wa4/*) are excluded by default.

2.2. Get Jira Activities

Use acli to fetch Jira activities.

# Today's activities
acli jira workitem search \
    --jql "updated >= startOfDay() AND (assignee = currentUser() OR reporter = currentUser()) ORDER BY updated DESC" \
    --fields "key,summary,status"

# Specific date range
acli jira workitem search \
    --jql "updated >= 'YYYY-MM-DD' AND updated < 'YYYY-MM-DD' AND (assignee = currentUser() OR reporter = currentUser()) ORDER BY updated DESC" \
    --fields "key,summary,status"

2.3. Get Meetings from Google Calendar

Fetch today's meetings from Google Calendar via Slack DM.

2.3.1. Prerequisites

Environment variables required:

export SLACK_GCAL_DM_URL="https://app.slack.com/client/E.../D..."
export SLACK_MCP_XOXC_TOKEN="xoxc-..."
export SLACK_MCP_XOXD_TOKEN="xoxd-..."

2.3.2. Fetch Messages from Last 24 Hours

# Extract channel ID from URL
CHANNEL=$(echo "$SLACK_GCAL_DM_URL" | sed -n 's|.*/client/[^/]*/\([^/]*\).*|\1|p')

# Fetch messages
FILE=$(mkoutput --dir tmp --label output)
curl -s -X POST "https://slack.com/api/conversations.history" \
  -H "Authorization: Bearer $SLACK_MCP_XOXC_TOKEN" \
  -H "Cookie: d=$SLACK_MCP_XOXD_TOKEN" \
  -d "channel=${CHANNEL}" \
  -d "limit=200" > "$FILE"

# Filter messages from last 24 hours
NOW=$(date +%s)
YESTERDAY=$((NOW - 86400))
jq -r --argjson yesterday "$YESTERDAY" \
  '.messages[] | select(.ts | tonumber > $yesterday)' "$FILE"

2.3.3. Extract Today's Schedule

Look for the "Today" summary message in 24-hour messages. This message contains all meetings for the day in attachments array.

Key indicators:

  • Message text starts with *Today*-<!date^...
  • Attachments contain meeting info with Unix timestamps

2.3.4. Parse Meeting Times from Timestamps

Meetings use Unix timestamp format: <!date^UNIX_TIMESTAMP^{time}|...>

Convert timestamps to local time:

date -r UNIX_TIMESTAMP "+%H:%M"

2.3.5. Output Format

Extract from attachments:

  • Meeting title: From link text (e.g., |Meeting Name>*)
  • Start/End time: Convert Unix timestamps to HH:MM format
  • Skip cancelled meetings (indicated by strike-through in separate messages)

Format as: - Meeting name (HH:MM-HH:MM)

2.4. Create Draft

Create file:

FILE=$(mkoutput --dir tmp --label "daily-$(whoami)")

NOTE: Keep command blocks in "Today's AI Activities" section. Execute commands and paste results below the command block.

Template:

---
title: "YYYY-MM-DD $(whoami)"
labels:
  - name: "日報"
    color: "0887b9"
---

## 1. Reflection

## 2. Today's Activities

### 2.1. GitHub

Organize gh-furik output. Classify as follows:

#### 2.1.1. Created Issues

- [repo-name] Issue title

#### 2.1.2. Created PRs

- [repo-name] PR title
- [repo-name] PR title (merged)
  - Add supplementary comments indented

#### 2.1.3. Reviewed PRs

- [repo-name] PR title

#### 2.1.4. Commented Issues/PRs

- [repo-name] Issue/PR title

### 2.2. Jira

- [KEY-123] Issue summary (status)

### 2.3. Meetings

- Meeting name
  - Supplementary comments

2.5. Wait for User Edit

Display draft and wait for user edits. User adds reflections.

2.6. Post Issue

Post with gh issue create:

gh issue create --title "YYYY-MM-DD $(whoami)" --label "日報" --body "$(cat <<'EOF'
[body]
EOF
)"

Display Issue URL after posting.

3. Important Rules

  1. No direct links: Do not link PRs/Issues directly (triggers mentions), use titles only
  2. PR/Issue numbers: Use (# 123) with space, not (#123). Without space, GitHub auto-links to unintended repos.
  3. Draft review: Always show draft to user and wait for edits
  4. Issue posting: Post after user confirms draft is ready

4. Output Type Classification

Classify script output as follows:

Output TypeClassification
IssueCreated Issues
PullRequestCreated PRs
ReviewedPRReviewed PRs
IssueCommentCommented Issues/PRs
PullRequestCommentCommented Issues/PRs

Note: Consolidate multiple comments on same Issue/PR into one. Note: ReviewedPR only includes PRs authored by others (my own PRs excluded).

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/i9wa4/dotfiles/daily-report">View daily-report on skillZs</a>