name: Weekly Metrics to Discord # description: Sends weekly metrics summary to Discord channel on: schedule: - cron: "0 9 * * 1" # Every Monday at 9 AM workflow_dispatch: permissions: contents: read issues: write pull-requests: read jobs: weekly-metrics: runs-on: ubuntu-latest env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_METRICS_WEBHOOK }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Get dates for last week run: | # Last 7 days first_day=$(date -d "7 days ago" +%Y-%m-%d) last_day=$(date +%Y-%m-%d) echo "first_day=$first_day" >> $GITHUB_ENV echo "last_day=$last_day" >> $GITHUB_ENV echo "week_of=$(date -d '7 days ago' +'Week of %B %d, %Y')" >> $GITHUB_ENV echo "date_range=Past 7 days ($first_day to $last_day)" >> $GITHUB_ENV - name: Generate issue metrics uses: github/issue-metrics@v3 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} SEARCH_QUERY: "repo:${{ github.repository }} is:issue created:${{ env.first_day }}..${{ env.last_day }}" HIDE_TIME_TO_ANSWER: true HIDE_LABEL_METRICS: false - name: Generate PR metrics uses: github/issue-metrics@v3 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} SEARCH_QUERY: "repo:${{ github.repository }} is:pr created:${{ env.first_day }}..${{ env.last_day }}" OUTPUT_FILE: pr_metrics.md - name: Parse metrics id: metrics run: node .github/scripts/parse-metrics.mjs - name: Send to Discord uses: sarisia/actions-status-discord@v1 if: env.DISCORD_WEBHOOK != '' with: webhook: ${{ env.DISCORD_WEBHOOK }} status: Success title: "📊 Weekly Metrics Report" description: | **${{ env.week_of }}** *${{ env.date_range }}* **🎯 Issues** • Created: ${{ steps.metrics.outputs.issues_created }} • Closed: ${{ steps.metrics.outputs.issues_closed }} **🔀 Pull Requests** • Created: ${{ steps.metrics.outputs.prs_created }} • Merged: ${{ steps.metrics.outputs.prs_merged }} **⏱️ Response Times** • First Response: ${{ steps.metrics.outputs.avg_first_response }} • Time to Close: ${{ steps.metrics.outputs.avg_time_to_close }} • PR Merge Time: ${{ steps.metrics.outputs.pr_avg_merge_time }} color: 0x58AFFF username: Task Master Metrics Bot avatar_url: https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/images/logo.png