Daily Meeting Update logo

Daily Meeting Update

OrganizationPopular
softaworks
daily-meeting-update

Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.

Overview

Publishersoftaworks
Repositoryagent-toolkit
Skill namedaily-meeting-update
Stars
2.5K
Forks
226
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by softaworks on GitHub. Read the source before you install it.

Installation

Install the Daily Meeting Update AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/softaworks/agent-toolkit.git /tmp/agent-toolkit
mkdir -p .claude/skills
cp -r /tmp/agent-toolkit/skills/daily-meeting-update .claude/skills/daily-meeting-update
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Daily Meeting Update in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Daily Meeting Update on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Daily Meeting Update is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Daily Meeting Update

Generate a daily standup/meeting update through an interactive interview. Never assume tools are configured—ask first.


Workflow

START
┌─────────────────────────────────────────────────────┐
│ Phase 1: DETECT & OFFER INTEGRATIONS                │
│ • Check: Claude Code history? gh CLI? jira CLI?     │
│ • Claude Code → Pull yesterday's session digest     │
│   → User selects relevant items via multiSelect     │
│ • GitHub/Jira → Ask user, pull if approved          │
│ • Pull data NOW (before interview)                  │
├─────────────────────────────────────────────────────┤
│ Phase 2: INTERVIEW (with insights)                  │
│ • Show pulled data as context                       │
│ • Yesterday: "I see you merged PR #123, what else?" │
│ • Today: What will you work on?                     │
│ • Blockers: Anything blocking you?                  │
│ • Topics: Anything to discuss at end of meeting?    │
├─────────────────────────────────────────────────────┤
│ Phase 3: GENERATE UPDATE                            │
│ • Combine interview answers + tool data             │
│ • Format as clean Markdown                          │
│ • Present to user                                   │
└─────────────────────────────────────────────────────┘

Phase 1: Detect & Offer Integrations

Step 1: Silent Detection

Check for available integrations silently (suppress errors, don't show to user):

IntegrationDetection
Claude Code History~/.claude/projects directory exists with .jsonl files
GitHub CLIgh auth status succeeds
Jira CLIjira command exists
Atlassian MCPmcp__atlassian__* tools available
GitInside a git repository

Step 2: Offer GitHub/Jira Integrations (if available)

Claude Code users: Use AskUserQuestionTool tool for all questions in this phase.

GitHub/Git:

If HAS_GH or HAS_GIT:

"I detected you have GitHub/Git configured. Want me to pull your recent activity (commits, PRs, reviews)?"

Options:
- "Yes, pull the info"
- "No, I'll provide everything manually"

If yes:

"Which repositories/projects should I check?"

Options:
- "Just the current directory" (if in a git repo)
- "I'll list the repos" → user provides list

Jira:

If HAS_JIRA_CLI or HAS_ATLASSIAN_MCP:

"I detected you have Jira configured. Want me to pull your tickets?"

Options:
- "Yes, pull my tickets"
- "No, I'll provide everything manually"

Step 3: Pull GitHub/Jira Data (if approved)

GitHub/Git — For each approved repo:

  • Commits by user since yesterday
  • PRs opened/merged by user
  • Reviews done by user

Jira — Tickets assigned to user, updated in last 24h

Key insight: Store results to use as context in Phase 2 interview.

Step 4: Offer Claude Code History

This integration captures everything you worked on with Claude Code — useful for recalling work that isn't in git or Jira.

Detection:

bash
ls ~/.claude/projects/*/*.jsonl 2>/dev/null | head -1

If Claude Code history exists, ask:

"I can also pull your Claude Code session history from yesterday. This can help recall work that isn't in git/Jira (research, debugging, planning). Want me to check?"

Options:
- "Yes, pull my Claude Code sessions"
- "No, I have everything I need"

If yes, run the digest script:

bash
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json

Then present sessions with multiSelect:

Use AskUserQuestionTool with multiSelect: true to let user pick relevant items:

"Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"

Options (multiSelect):
- "Fix authentication bug (backend-api)"
- "Implement OAuth flow (backend-api)"
- "Update homepage styles (frontend-app)"
- "Research payment providers (docs)"

Key insight: User selects which sessions are work-related. Personal projects or experiments can be excluded.

Do NOT run digest script when:

  • User explicitly says "No" to Claude Code history
  • User says they'll provide everything manually
  • ~/.claude/projects directory doesn't exist

If digest script fails:

  • Fallback: Skip Claude Code integration silently, proceed with interview
  • Common issues: Python not installed, no sessions from yesterday, permission errors
  • Do NOT block the standup flow — the script is supplemental, not required

Phase 2: Interview (with insights)

Claude Code users: Use AskUserQuestionTool tool to conduct the interview. This provides a better UX with structured options.

Use pulled data as context to make questions smarter.

Question 1: Yesterday

If data was pulled, show it first:

"Here's what I found from your activity:
- Merged PR #123: fix login timeout
- 3 commits in backend-api
- Reviewed PR #456 (approved)

Anything else you worked on yesterday that I missed?"

If no data pulled:

"What did you work on yesterday/since the last standup?"

If user response is vague, ask follow-up:

  • "Can you give more details about X?"
  • "Did you complete anything specific?"

Question 2: Today

"What will you work on today?"

Options:
- [Text input - user types freely]

If Jira data was pulled, you can suggest:

"I see you have these tickets assigned:
- PROJ-123: Implement OAuth flow (In Progress)
- PROJ-456: Fix payment bug (To Do)

Will you work on any of these today?"

Question 3: Blockers

"Do you have any blockers or impediments?"

Options:
- "No blockers"
- "Yes, I have blockers" → follow-up for details

Question 4: Topics for Discussion

"Any topic you want to bring up at the end of the daily?"

Options:
- "No, nothing to discuss"
- "Yes" → follow-up for details

Examples of topics:
- Technical decision that needs input
- Alignment with another team
- Question about prioritization
- Announcement or info for the team

Phase 3: Generate Update

Combine all information into clean Markdown:

markdown
# Daily Update - [DATE]

## Yesterday
- [Items from interview]
- [Items from GitHub/Jira if pulled]

## Today
- [Items from interview]

## Blockers
- [Blockers or "No blockers"]

## PRs & Reviews (if pulled from GitHub)
- [PRs opened]
- [PRs merged]
- [Reviews done]

## Jira (if pulled from Jira)
- [Tickets updated]

## Topics for Discussion
- [Topics or "None"]

---
*Links:*
- [PR links]
- [Ticket links]

Core Principles

  1. Interview is primary — Tools supplement, they don't replace human context
  2. Consent before access — Always ask before pulling from any integration
  3. Context-aware questions — Show pulled data during interview to trigger memory ("I see you merged PR #123...")

Quick Reference

PhaseActionTool
1. Detect & OfferCheck gh/jira/claude history, ask user, pull dataBash (silent), AskUserQuestionTool*
2. InterviewAsk 4 questions with insightsAskUserQuestionTool*
3. GenerateFormat MarkdownOutput text

*Claude Code only: Use AskUserQuestionTool tool for structured questions.

Claude Code Digest Script

bash
# Get yesterday's sessions as JSON
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json

# Get today's sessions
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --date today --format json

# Filter to specific project
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --project ~/my-app --format json

Example Session

Claude: "Let's prepare your daily! I detected GitHub configured. Want me to pull your recent activity?"
User: "Yes"

Claude: "Which repos should I check?"
User: "backend-api and frontend-app"

[Claude pulls GitHub data silently]

Claude: "I can also pull your Claude Code session history from yesterday. Want me to check?"
User: "Yes"

[Claude runs digest script, gets 5 sessions]

Claude: "Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"
  ☑ Fix authentication timeout bug (backend-api)
  ☑ Implement OAuth flow (backend-api)
  ☐ Update personal blog (blog) - [user unchecks personal project]
  ☑ Research payment providers (docs)
  ☐ Debugging test failures (experiments)

User: [selects 3 relevant items]

Claude: "Here's what I found from your activity:
- Merged PR #120: fix login timeout
- Opened PR #125: feat: add OAuth flow
- Reviewed PR #123 (approved), PR #456 (changes requested)
- 5 commits in backend-api
- [From Claude Code] Fix authentication timeout bug
- [From Claude Code] Implement OAuth flow
- [From Claude Code] Research payment providers

Anything else you worked on yesterday that I missed?"
User: "No, that covers it"

Claude: "What will you work on today?"
User: "Continue the OAuth feature and deploy to staging"

Claude: "Any blockers?"
User: "No"

Claude: "Any topic to bring up at the end of the daily?"
User: "Yes, I want to discuss the architecture of the new payments module"

[Claude generates update]

Output Example

markdown
# Daily Update - 2026-01-22

## Yesterday
- Worked on authentication feature
- Research on payment providers
- Merged PR #120 (fix: login timeout)
- Opened PR #125 (feat: add OAuth flow)

## Today
- Continue OAuth feature
- Deploy to staging

## Blockers
- No blockers

## PRs & Reviews
- **Opened:** PR #125 - feat: add OAuth flow
- **Merged:** PR #120 - fix: login timeout
- **Reviews:** PR #123 (approved), PR #456 (changes requested)

## Topics for Discussion
- Architecture of the new payments module

---
*Links:*
- https://github.com/org/repo/pull/125
- https://github.com/org/repo/pull/120

Anti-Patterns

AvoidWhy (Expert Knowledge)Instead
Run gh/jira without askingUsers may have personal repos visible, or be in a sensitive project context they don't want exposedAlways ask first, let user choose repos
Assume current directory is the only projectDevelopers often work on 2-5 repos simultaneously (frontend, backend, infra)Ask "Which projects are you working on?"
Skip interview even with tool dataTools capture WHAT happened but miss WHY and context (research, meetings, planning)Interview is primary, tools supplement
Generate update before all 4 questionsUser might have critical blocker or discussion topic that changes the narrativeComplete interview, then generate
Include raw commit messagesCommit messages are often cryptic ("fix", "wip") and don't tell the storySummarize into human-readable outcomes
Ask for data after interviewShowing insights during interview makes questions smarter ("I see you merged PR #123, anything else?")Pull data first, then interview with context

NEVER

  • NEVER assume tools are configured — Many devs have gh installed but not authenticated, or jira CLI pointing to wrong instance
  • NEVER skip the "Topics for Discussion" question — This is often the most valuable part of standup that tools can't capture
  • NEVER generate more than 15 bullets — Standup should be <2 minutes to read; long updates lose the audience
  • NEVER include ticket/PR numbers without context — "PROJ-123" means nothing; always include title or summary
  • NEVER pull data from repos user didn't explicitly approve — Even if you can see other repos, respect boundaries

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Daily Meeting Update AI skill do?

Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.

Why use Daily Meeting Update on TypingMind?

Because you install it once and use it with any model. Daily Meeting Update is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Daily Meeting Update in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/softaworks/agent-toolkit/tree/main/skills/daily-meeting-update. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Daily Meeting Update?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Daily Meeting Update?

As many as you like. As long as a model supports skills, you can use Daily Meeting Update with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Daily Meeting Update AI skill free?

Yes. It is published on GitHub by softaworks under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇