From draft
Generates standup summaries from git history, track progress files, and Jira/GitHub activity. Read-only — useful for daily or weekly developer standups.
How this skill is triggered — by the user, by Claude, or both
Slash command
/draft:standupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are generating a standup summary from recent development activity. This is a **read-only** skill — it makes no changes to the codebase or track files.
You are generating a standup summary from recent development activity. This is a read-only skill — it makes no changes to the codebase or track files.
Report facts. Fabricate nothing.
Before starting, capture the current git state:
git branch --show-current # Current branch name
git rev-parse --short HEAD # Current commit hash
Store this for context. The standup reflects activity up to this specific commit.
ls draft/ 2>/dev/null
If draft/ exists, read and follow core/shared/draft-context-loading.md.
Check for arguments:
/draft:standup — Default: last 24 hours of activity/draft:standup <days> — Activity from last N days/draft:standup weekly — Full week summary (Monday-Friday)/draft:standup --author <name> — Filter to specific authorPreferred: invoke parse-git-log.sh — it parses conventional commits into structured JSONL {sha,type,scope,track_id,subject,author,timestamp,files_changed}, eliminating ambiguity in type(track-id): subject parsing. Resolve via the canonical tool resolver (see core/shared/tool-resolver.md):
DRAFT_TOOLS="$(cat ~/.cache/draft/plugin-root 2>/dev/null)/scripts/tools"
[ -d "$DRAFT_TOOLS" ] || DRAFT_TOOLS="$(ls -d ~/.claude/plugins/cache/*/draft/*/scripts/tools 2>/dev/null | sort -V | tail -1)"
[ -d "$DRAFT_TOOLS" ] || DRAFT_TOOLS="$(ls -d ~/.claude/plugins/marketplaces/*draft*/scripts/tools 2>/dev/null | tail -1)"
[ -d "$DRAFT_TOOLS" ] || DRAFT_TOOLS="$PWD/scripts/tools"
if [ -x "$DRAFT_TOOLS/parse-git-log.sh" ]; then
bash "$DRAFT_TOOLS/parse-git-log.sh" --since "24 hours ago" --author "$(git config user.name)"
else
# Fallback: raw git log
git log --oneline --since="24 hours ago" --author="$(git config user.name)"
git log --since="24 hours ago" --author="$(git config user.name)" --format="%h %s" --no-merges
fi
Parse commit messages for:
type(track-id): description convention — already extracted as track_id in JSONL)Read draft/tracks.md for active tracks:
[!])metadata.json:scope_includes / scope_excludes) — mention when
two active tracks share a scope tag; surfaced by
scripts/tools/check-scope-conflicts.sh. Schema:
core/shared/template-contract.md.For each active track, read plan.md to determine:
[x] with recent commit SHAs)[ ] or [~])If Jira MCP is available:
If GitHub MCP is available:
~/.draft/metrics.jsonl exists)tail -50 ~/.draft/metrics.jsonl 2>/dev/null
If the file exists and has records in the standup period, enrich the standup with skill activity:
AI tools used: implement (N tasks), review (N times), bughunt (N hunts)If the file does not exist or has no records in the period, skip silently — this source is always optional.
Format using the standard Yesterday/Today/Blockers structure:
## Standup — {date}
**Author:** {git user.name}
**Period:** {time range}
### Completed
- [{track-id}] {task description} ({commit SHA})
- [{track-id}] {task description} ({commit SHA})
- Reviewed: {GitHub change ID / PR} (if applicable)
### Planned
- [{track-id}] Next task: {description} (from plan.md)
- [{track-id}] Continue: {in-progress task} (from plan.md)
- Review: {pending reviews} (if applicable)
### Blockers
- [{track-id}] {blocked task description} — {reason}
- Waiting on: {external dependency}
### Track Progress
| Track | Phase | Tasks | Status |
|-------|-------|-------|--------|
| {id} | {N}/{total} | {done}/{total} | {status} |
If no activity found: "No commits in the last {period}. Working on: {active track description from tracks.md or 'no active tracks'}."
Present the standup summary directly in the conversation. Do not write to any file unless explicitly requested.
If the user asks to save:
draft/standup-<date>.mddraft/standup-latest.mdIf saving, MANDATORY: Include YAML frontmatter with git metadata. Follow core/shared/git-report-metadata.md.
Include the report header table immediately after frontmatter:
| Field | Value |
|-------|-------|
| **Branch** | `{LOCAL_BRANCH}` → `{REMOTE/BRANCH}` |
| **Commit** | `{SHORT_SHA}` — {COMMIT_MESSAGE} |
| **Generated** | {ISO_TIMESTAMP} |
| **Synced To** | `{FULL_SHA}` |
core/agents/ops.md for operational context awareness/draft:status data (tracks.md, plan.md, metadata.json)If no git history: "No git commits found for {period}. Is this the right repository?"
If no draft context: Generate standup from git history only. Note: "Richer standups available after /draft:init."
If no MCP available: Skip Jira/GitHub sections, generate from local data only.
npx claudepluginhub drafthq/draft --plugin draftGenerates standup updates summarizing recent commits, PRs, ticket changes, and activity into yesterday/today/blockers format. Works with connected source control/project tools or standalone notes.
Generates daily standup notes from Git commit history, Jira tickets, Obsidian vaults, and calendars for async-first remote teams.
Generates daily standup reports aggregating 24h GitHub activity (PRs, commits, reviews) and Linear issues by status (In Progress, Todo, blockers). Ideal for morning prep or activity summaries.