atdd-plan
Produce an ATDD-first implementation plan in Claude Code's native plan mode, with named design patterns called out where they earn their keep. The skill enters…
Generate a two-part standup report: Yesterday (everything code-related you shipped, reviewed, or addressed since your last working day, PRs merged, reviews left and answered, comments addressed, deploys that fired, tickets closed) and Today (carry-over threads plus
$ npx -y skills add Flagrare/agent-skills --skill standup-report --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/standup-reportContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate a two-part standup report: Yesterday (everything code-related you shipped, reviewed, or addressed since your last working day, PRs merged, reviews left and answered, comments addressed, deploys that fired, tickets closed) and Today (carry-over threads plus
name: standup-report description: Generate a two-part standup report: Yesterday (everything code-related you shipped, reviewed, or addressed since your last working day, PRs merged, reviews left and answered, comments addressed, deploys that fired, tickets closed) and Today (carry-over threads plus priority-ordered queue items, framed as "likely working today"). Pulls from GitHub, local git, release automation, and any installed tracker/Slack MCPs. Output is a narrative paragraph, a journal-style recap, a Today section, and a slack-pasteable bullet list, written in human terms (the *thing* you fixed, not "PR #481"). Use whenever the user says "standup", "standup report", "what did I do yesterday", "yesterday recap", "daily recap", "what did I ship", "morning standup", "give me my standup", "summarize yesterday's work", or any variation. Also trigger right before a known standup time when the user opens a session.
> **No em-dashes.** Nothing this skill writes may contain an em-dash; use a comma, colon, or parentheses instead. Enforced by a repo hook that flags em-dashes in generated `.md`. See `/flagrare:write-docs`.
Generate a daily standup recap that reads like a human wrote it. The reader is either the user (preparing what to say at standup) or their team (skimming a Slack post). Either way, they want the *story* of yesterday's code work, not a JSON dump of commits.
The single rule that shapes everything below: **work is named by what it was, not by its ID.** "Fixed the image cache eviction" beats "Merged PR #481" every time. Nobody remembers numbers; everyone remembers the bug.
Config lives at **`~/.claude/skills/flagrare/config.json`**: a single file shared across all flagrare skills, outside the plugin tree so it survives plugin updates and reinstalls. Skill-agnostic keys (GitHub login, display name, repo scope, local roots) sit at the top level; skill-specific keys nest under `skills.<name>`.
In Bash, expand `~` explicitly: `"$HOME/.claude/skills/flagrare/config.json"`. The directory may not exist yet, `mkdir -p "$HOME/.claude/skills/flagrare"` before writing.
If `~/.claude/skills/flagrare/config.json` does **not** exist but a legacy per-skill config does, migrate it:
LEGACY="{skill_directory}/config.json" # old location, lost on plugin reinstall
NEW="$HOME/.claude/skills/flagrare/config.json"
if [ ! -f "$NEW" ] && [ -f "$LEGACY" ]; then
mkdir -p "$(dirname "$NEW")"
# Wrap legacy keys: standup-specific ones (extra_mcps) move under skills.standup-report
jq '{
github_login, display_name, first_person, repo_scope, local_repo_roots, tracker_mcp,
skills: { "standup-report": { extra_mcps: .extra_mcps } }
} | with_entries(select(.value != null))' "$LEGACY" > "$NEW"
fiTell the user once: "Migrated your config from the old per-plugin location to `~/.claude/skills/flagrare/config.json` so it survives plugin updates."
Use `AskUserQuestion` to collect:
1. **GitHub login**: needed for `author:`, `commenter:`, `reviewed-by:` searches. If missing, run `gh api user --jq '.login'` and confirm. 2. **Display name**: how to refer to the user in the narrative ("Alan reviewed two PRs" vs "you reviewed two PRs"). Default to first-person ("I"). 3. **Repo scope**: one of:
4. **Local repo roots**: directories under which to scan for local commits (e.g., `~/Dev`, `~/work`). The skill walks one level deep looking for `.git/` to enumerate repos. 5. **Tracker MCP**: detect which is installed in the session (Linear, Jira, Notion, Asana, Shortcut, Trello). If multiple, ask which one this user actually files tickets in. If none, skip. 6. **Additional MCPs to query**: after the above is filled in, list the *other* MCPs currently available in the session (Slack, Discord, Google Calendar, PostHog, etc.) and ask if any should feed context into the recap. Example: Slack DMs/channels might surface conversations that explain *why* a PR was opened. Save which ones the user opts in to.
Save the shared keys at the top level and the standup-specific `extra_mcps` under `skills["standup-report"]`:
{
"github_login": "aturing",
"display_name": "Alan",
"first_person": true,
"repo_scope": { "type": "org", "value": "acme-corp" },
"local_repo_roots": ["~/Dev", "~/work"],
"tracker_mcp": "linear",
"skills": {
"standup-report": {
"extra_mcps": ["slack"]
}
}
}Confirm with the user before saving. Preserve any pre-existing `skills.*` blocks from other flagrare skills, merge, don't overwrite.
If `~/.claude/skills/flagrare/config.json` exists, read the top-level keys plus `skills["standup-report"]`. If only some top-level keys exist (e.g. brag-doc was set up but not standup-report), reuse what's there and only ask for `extra_mcps`. If the user says "reconfigure" or "edit setup", re-run the setup flow, but only rewrite the `skills["standup-report"]` block plus any top-level keys the user changes; leave other skills' blocks untouched.
**First, determine today's date and current time by running:**
date '+%A %Y-%m-%d %H:%M'
Do NOT guess the day of the week from context or the current date string. LLMs are unreliable at day-of-week calculations. Always run the command above and use its output.
"Yesterday" at standup means **last working day**, not literal yesterday. Apply this logic to the output of the `date` command:
today = Mon → window starts Friday 00:00 today = Tue-Fri → window starts previous calendar day 00:00 today = Sat/Sun → window starts most recent Friday 00:00
The window always **ends at the cu
Thirty-three skills that wrap around your development cycle in Claude Code. They turn tickets into ATDD plans, smoke-test features against a running app or service, hunt down bugs with runtime evidence, guard commits against doc drift, run seven-axis code
Repo: Flagrare/agent-skills
Produce an ATDD-first implementation plan in Claude Code's native plan mode, with named design patterns called out where they earn their keep. The skill enters…
Generate a comprehensive, impact-framed brag-doc entry for a chosen time window (day, week, biweek, month, or custom). Pulls authored PRs, reviews given,…
Programmatic bug bashing, ingest a prescribed test plan (Notion, markdown, pasted spec), drive a real running system (browser via Chrome DevTools / Playwright…
Explore the codebase to map conventions, reusable utilities, analogous features, and data flows relevant to a planned change. Returns raw findings (file paths,…
Generate a daily code review report showing stale PRs, items needing your attention, and active work for your team. Use whenever the user asks for a PR report,…
Evidence-first debugging for bugs that are hard to reproduce, intermittent, performance-related, or where previous static-analysis fixes have failed. Declares…