跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

kill-the-standup

Reads yesterday's Linear issues and GitHub commits for the authenticated user, formats a standup update (done / doing / blockers), and posts it to Slack. Use when asked to write a standup, generate a standup update, post to the standup channel, summarize yesterday's work, or automate the daily standup. Trigger when a user says "write my standup", "post standup", "generate standup update", "what did I do yesterday", or "kill the standup".

项目与协作674skills/kill-the-standup/SKILL.md

安装

把这段话发给 Claude Code、Codex 或 Cursor。智能体会先检查安全性,你确认后才安装。

读取 https://funcoding.ai/skills/varnan-tech/opendirectory/kill-the-standup/install.md ,按里面的步骤帮我安装这个 Skill。

SKILL.md

Kill the Standup

Read yesterday's Linear issues and GitHub commits. Format a standup update. Post it to Slack.


Step 1: Setup Check

Confirm required env vars are set:

echo "LINEAR_API_KEY: ${LINEAR_API_KEY:+set}"
echo "SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL:+set}"
echo "GITHUB_REPO: ${GITHUB_REPO:-not set}"
echo "GITHUB_USERNAME: ${GITHUB_USERNAME:-not set}"

If LINEAR_API_KEY is missing: Stop. Tell the user: "LINEAR_API_KEY is required. Get it from Linear → Settings → API → Personal API keys. Add it to your .env file."

If SLACK_WEBHOOK_URL is missing: Stop. Tell the user: "SLACK_WEBHOOK_URL is required. Create an Incoming Webhook at api.slack.com/apps → Your App → Incoming Webhooks. Add it to your .env file."

If GITHUB_REPO is missing: Continue. GitHub commits will be skipped. Note this to the user.


Step 2: Fetch Linear Activity

Compute yesterday's date in ISO 8601 format (e.g. 2026-04-09T00:00:00.000Z).

Get current user ID:

curl -s -X POST https://api.linear.app/graphql \
  -H "Authorization: Bearer $LINEAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "query { viewer { id name email } }"}'

Extract the id field from the response. Store as LINEAR_USER_ID.

Fetch issues assigned to me, updated since yesterday:

curl -s -X POST https://api.linear.app/graphql \
  -H "Authorization: Bearer $LINEAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "query($since: DateTime!, $userId: ID!) { issues(first: 50, filter: { assignee: { id: { eq: $userId } } updatedAt: { gte: $since } }) { edges { node { identifier title state { name } url completedAt updatedAt createdAt } } } }",
    "variables": {"since": "YESTERDAY_ISO", "userId": "LINEAR_USER_ID"}
  }'

Categorize issues:

  • completedAt is non-null → Done
  • state.name is "In Progress", "Started", or "In Review" → Doing
  • state.name is "Cancelled" → skip
  • state.name is "Todo" or "Backlog" → skip (not worked on)

If zero issues: note "No Linear activity found for yesterday."


Step 3: Fetch GitHub Commits

Skip this step silently if GITHUB_REPO is not set.

If GITHUB_REPO is set:

gh api "repos/$GITHUB_REPO/commits?author=${GITHUB_USERNAME:-$(gh api user --jq .login)}&since=YESTERDAY_ISO&per_page=30" \
  --jq '[.[] | {message: .commit.message, url: .html_url}]'

Process commits:

  • Extract the first line of each commit message (everything before the first newline)
  • Skip merge commits: drop any message starting with "Merge"
  • Deduplicate by message text

If GITHUB_REPO is set but returns zero commits: note "No commits found yesterday."


Step 4: Format Standup

Read references/standup-format.md in full before writing.

Produce the standup in this exact structure:

**Done**
- [ENG-123] Title of completed issue
- fix: commit message here

**Doing**
- [ENG-124] Title of in-progress issue

**Blockers**
No blockers.

Rules from standup-format.md:

  • No first-person pronouns ("I", "we")
  • Past tense for Done items, present continuous for Doing items
  • Each Linear item uses the [IDENTIFIER] Title format
  • Each GitHub commit uses the first line of the commit message
  • If no Done items: write "Nothing completed." under Done
  • If no Doing items: write "Nothing in progress." under Doing
  • If no blockers: write "No blockers."
  • Under 200 words total

Step 5: Post to Slack or Output

Present the formatted standup to the user.

Ask: "Post this to Slack, or output only?"

On confirmation to post:

curl -s -X POST "$SLACK_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "blocks": [
      {
        "type": "section",
        "text": {
          "type": "mrkdwn",
          "text": "*Standup — DATE_HERE*\n\n*Done*\nITEMS\n\n*Doing*\nITEMS\n\n*Blockers*\nITEMS"
        }
      }
    ]
  }'

Pass the body via a temp file or heredoc to avoid shell quoting issues with special characters in commit messages or issue titles:

cat > /tmp/standup-payload.json << 'ENDJSON'
{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "STANDUP_CONTENT_HERE"
      }
    }
  ]
}
ENDJSON
curl -s -X POST "$SLACK_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/standup-payload.json

After posting: "Standup posted."

On "output only": Print the standup in a code block for copy-paste.

相似的 Skill

slack-gif-creator
anthropics/skills180k

slack-gif-creator

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."

项目与协作

observability-and-instrumentation
addyosmani/agent-skills103k

observability-and-instrumentation

Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data.

项目与协作

understand-diff
Egonex-AI/Understand-Anything86k

understand-diff

Use when you need to analyze git diffs or pull requests to understand what changed, affected components, and risks

项目与协作

skill-share
ComposioHQ/awesome-claude-skills77k

skill-share

A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.

项目与协作

slack-gif-creator
ComposioHQ/awesome-claude-skills77k

slack-gif-creator

Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".

项目与协作

connect-apps
ComposioHQ/awesome-claude-skills77k

connect-apps

Connect Claude to external apps like Gmail, Slack, GitHub. Use this skill when the user wants to send emails, create issues, post messages, or take actions in external services.

项目与协作