diff --git a/.github/skills/weekly-demo-video/SKILL.md b/.github/skills/weekly-demo-video/SKILL.md new file mode 100644 index 00000000000..3e8b0cb4b47 --- /dev/null +++ b/.github/skills/weekly-demo-video/SKILL.md @@ -0,0 +1,98 @@ +--- +name: weekly-demo-video +license: MIT +metadata: + version: "1.0" +description: >- + **WORKFLOW SKILL** — Generate narrated weekly demo videos for azd features. Pulls latest commits, + identifies demo-worthy features, researches PRs, and produces MP4 videos with + dark-themed slides and neural TTS narration. + + INVOKES: Python, Pillow, ffmpeg, edge-tts, explore sub-agents, ask_user. + + USE FOR: weekly demo, generate demo video, demo video, sprint demo, create demo, + make demo video, demo for LT, weekly demo video, azd demo. + DO NOT USE FOR: general video editing, non-azd demos, slide decks without video, + weekly reports (use weekly-report). +--- + +# Weekly Demo Video Generator + +Generates narrated MP4 demo videos for azd features using Python + Pillow + edge-tts + ffmpeg. + +## Prerequisites + +Ensure these tools are installed: + +| Tool | Purpose | +|------|---------| +| Python 3 | Script execution | +| Pillow | Slide generation (`pip install Pillow`) | +| ffmpeg | Video/audio stitch | +| edge-tts | Neural TTS (`pip install edge-tts`) | + +Verify prerequisites (bash): + +```bash +python3 -c "from PIL import Image; print('ok')" +ffmpeg -version +edge-tts --list-voices > /dev/null +``` + +## Execution Flow + +### Step 1: Pull latest + +```bash +cd # the azure-dev repository root +git checkout main && git pull --rebase +``` + +### Step 2: Find commits for the week + +Replace the dates below with the actual week range: + +```bash +git log --oneline --since="YYYY-MM-DD" --until="YYYY-MM-DD" --no-merges +``` + +Use the current week window (7 days). For sprint demos, use a 2-week window. + +### Step 3: Identify demo-worthy features + +Group related commits. Skip: typos, CI fixes, test-only, deps bumps, docs-only. +Look for: new commands, UX improvements, perf gains, new flags, agent features. + +Use explore agents in parallel to research each feature group (give them specific commit SHAs). + +### Step 4: Confirm with user + +Present a table of proposed demos. Ask user to confirm or adjust before generating. + +### Step 5: Generate videos + +Follow the conventions strictly: + +{{ references/CONVENTIONS.md }} + +### Step 6: Report + +List generated videos with filenames and durations. Offer short descriptions for docs. + +## Error Handling + +- **edge-tts failure**: Retry once. If it fails again, log the error and skip that slide's audio — notify the user. +- **ffmpeg failure**: Check the ffmpeg error output. Common issues: missing codec, invalid image path. Print the error and stop — don't produce a partial video. +- **Font not found**: Falls back to `ImageFont.load_default()` automatically. Warn the user that slides may look different. + +## Output + +All videos go to: `/demo-video/` + +> **Note:** `demo-video/` is listed in `.gitignore` to prevent accidental commits. + +## Demo Naming + +- **Weekly demos**: `azd_weekly_demo_{date}_{name}.mp4` (e.g. `azd_weekly_demo_may_07_exegraph.mp4`) +- **Sprint demos**: `azd_sprint_demo_{date}_{name}.mp4` (e.g. `azd_sprint_demo_apr_28_agent_sessions.mp4`) + diff --git a/.github/skills/weekly-demo-video/references/CONVENTIONS.md b/.github/skills/weekly-demo-video/references/CONVENTIONS.md new file mode 100644 index 00000000000..04880435210 --- /dev/null +++ b/.github/skills/weekly-demo-video/references/CONVENTIONS.md @@ -0,0 +1,83 @@ +# Video Conventions + +These rules MUST be followed for all demo videos. + +## Pipeline + +| Step | Tool | Details | +|------|------|---------| +| Slides | Python + Pillow | Generate 1920×1080 PNG images | +| Narration | `edge-tts` | `--voice en-US-GuyNeural --rate=+5%`, free neural TTS, no API key | +| Audio convert | `ffmpeg` | MP3 → WAV per slide | +| Per-slide video | `ffmpeg` | `-loop 1 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p` | +| Concatenate | `ffmpeg` | `-f concat -safe 0` with file list | + +Pronunciation fix: `re.sub(r'\bazd\b', 'AZ-D', text, flags=re.IGNORECASE)` — applied to narration strings ONLY. + +## Video Rules + +| Rule | Details | +|------|---------| +| Resolution | 1920×1080 | +| Duration | Under 2-3 minutes | +| Audio padding | +0.8s silence after each slide's narration | +| PR references | NEVER mention PR numbers in videos | +| End slide | Always end with "Give it a try." + links | +| --no-prompt | Frame as built for AI agents (Copilot CLI, Claude, Gemini), NOT generic CI | +| Slide text | Lowercase `azd` always (phonetic `AZ-D` in narration only) | + +## Color Palette + +| Name | RGB | Usage | +|------|-----|-------| +| Background | `(15, 17, 23)` | Slide background | +| Text | `(230, 237, 243)` | Body text | +| Accent blue | `(88, 166, 255)` | Titles, labels, `→` lines | +| Green | `(63, 185, 80)` | Success, `$` prompts, `✓` lines, terminal dot | +| Red | `(248, 81, 73)` | Errors, terminal dot | +| Yellow | `(210, 153, 34)` | Warnings, section headers (`##`), terminal dot | +| Dim | `(125, 133, 144)` | Subtitles, comments, footers | +| Code BG | `(22, 27, 34)` | Code block background | +| Divider | `(48, 54, 61)` | Horizontal rule on content slides | + +## Fonts + +| Platform | Body | Code | +|----------|------|------| +| macOS | `/System/Library/Fonts/SFNS.ttf` | `/System/Library/Fonts/SFNSMono.ttf` | +| Windows | `C:/Windows/Fonts/arial.ttf` | `C:/Windows/Fonts/consola.ttf` | +| Fallback | `ImageFont.load_default()` | `ImageFont.load_default()` | + +## Code Block Rendering + +- Rounded rectangle with `radius=12`, filled with Code BG +- Terminal dots at top-left (red, yellow, green circles, 14px, spaced 22px) +- Syntax coloring by line prefix: + - `#` or `//` → Dim (comment) + - `$` → Green (shell prompt) + - `error`/`fail` → Red + - `warning` → Yellow + - `✓`/`success` → Green + - `>`/`→` → Accent blue +- Mono font at 18px, line height 28px + +## Slide Types + +### Title Slide +- "azure developer cli" label top center (accent blue, font 22) +- Large title centered (text color, font 52) +- Subtitle in dim (font 26) +- Optional bullet items with `→` prefix (font 28, 50px spacing) +- Date footer bottom center (dim, font 20) + +### Content Slide +- Title top-left in accent blue (font 40) +- Horizontal divider line at y=115 +- Bullet points with `•` prefix (font 24, 42px spacing) +- Lines starting with `##` render as yellow section headers (font 26) +- Optional code block positioned at bottom (min y=480) + +### End Slide +- Title in accent blue centered (font 48) +- "Give it a try." below (text color, font 36) +- `aka.ms/azd • github.com/Azure/azure-dev` footer (dim, font 22) diff --git a/.github/skills/weekly-report/SKILL.md b/.github/skills/weekly-report/SKILL.md new file mode 100644 index 00000000000..f3c9d40fd3d --- /dev/null +++ b/.github/skills/weekly-report/SKILL.md @@ -0,0 +1,109 @@ +--- +name: weekly-report +license: MIT +metadata: + version: "1.0" +description: >- + **WORKFLOW SKILL** — Generate weekly executive reports for the azd team. Pulls PR/issue/release + data from GitHub, reads changelogs, combines with team notes, and produces + a polished markdown report. + + INVOKES: gh CLI, jq, git CLI, explore sub-agents, ask_user. + + USE FOR: weekly report, exec report, status update, team update, weekly + summary, generate report, report time. + DO NOT USE FOR: demo videos (use weekly-demo-video), release changelogs + (use changelog-generation), general docs, PRs. +--- + +# Weekly Executive Report Generator + +Generates weekly executive reports for the Azure Developer CLI (azd) team leadership. + +## Prerequisites + +| Tool | Purpose | +|------|---------| +| `gh` | GitHub CLI — authenticated with repo access | +| `jq` | JSON filtering for release queries | +| `git` | Repository data | + +## Report Format (strict order) + +``` +📝 TLDR +📊 Metrics +⚠️ Risks + Blockers +🎯 Changelog +📋 This Week +🔜 Next Week +🚩 Learnings +🔥 Demos/Links +``` + +## Execution Flow + +### Step 1: Confirm date range + +Cadence is **Thursday to Thursday**. Confirm with the user if unclear. + +### Step 2: Pull repo data + +Replace `START` and `END` below with the dates from Step 1. + +```bash +cd # the azure-dev repository root +git checkout main && git pull --rebase +``` + +**PRs merged:** +```bash +gh pr list --repo Azure/azure-dev --state merged --search "merged:START..END" --limit 200 --json number,title,mergedAt +``` + +**Issues closed:** +```bash +gh issue list --repo Azure/azure-dev --state closed --search "closed:START..END" --limit 200 --json number,title,closedAt +``` + +**Releases:** +```bash +gh api repos/Azure/azure-dev/releases --paginate | jq '[.[] | select(.published_at >= "START" and .published_at <= "END") | {name, tag_name, published_at}]' +``` + +### Step 3: Read changelogs + +Changelog data is maintained by the `changelog-generation` skill. + +- Core: `cli/azd/CHANGELOG.md` +- Agents: `cli/azd/extensions/azure.ai.agents/CHANGELOG.md` +- Finetuning: `cli/azd/extensions/azure.ai.models/CHANGELOG.md` + +### Step 4: Wait for team notes + +Do NOT assemble the report until the user provides team notes from emails, Teams, meetings, etc. +Only product and engineering content. + +### Step 5: Assemble report + +Combine repo data with team notes. Follow all rules below. + +### Step 6: Iterate + +Expect 5–15 rounds of edits. Apply changes surgically. After removals, check for related content elsewhere (risks → next week → learnings → TLDR) and offer to clean up. + +## Output + +Save reports to the Copilot CLI session workspace (`~/.copilot/session-state//files/`) as `weekly-report-{month}{startday}-{endday}.md`. + +## Section Rules + +{{ references/SECTION-RULES.md }} + +## Tone and Style + +{{ references/TONE-RULES.md }} + +## Example Report + +Use the latest completed report in the session files as a format reference. diff --git a/.github/skills/weekly-report/references/SECTION-RULES.md b/.github/skills/weekly-report/references/SECTION-RULES.md new file mode 100644 index 00000000000..38d9f6a5966 --- /dev/null +++ b/.github/skills/weekly-report/references/SECTION-RULES.md @@ -0,0 +1,56 @@ +# Section Rules + +## 📝 TLDR +- **Single paragraph**, narrative style. Not bullets or headlines. +- Lead with what matters most that week. +- Include feature/extension shipping highlights. +- End with numbers (PRs, issues, releases). +- Don't claim things are "shipped" when they're WIP/exploratory. +- Don't overstate commitment level (e.g., "targeting Build" → "being explored"). + +## 📊 Metrics +- Always placeholder: `_// metrics owner to add_` + +## ⚠️ Risks + Blockers +- Start with 2–3 items. Expect the user to trim. +- Don't overstate risks. Don't include risks from other teams. +- Distinguish GA blockers from future improvements. + +## 🎯 Changelog + +Structure: +1. **Releases table** — Release name, version, date +2. **By the numbers** — core releases, extension releases, issues closed, PRs merged +3. **Key Changes** — grouped by area (Core, Extension Framework, Extensions — Agents, Extensions — Finetuning, Quality & CI, Docs) + +Rules: +- Keep it short, only highlighting important changes. +- Include PR links: `[#NNNN](https://github.com/Azure/azure-dev/pull/NNNN)` + +## 📋 This Week + +Subsections (use what's relevant): +- Core +- Extensions — Agents +- Extensions — Finetuning +- Extension Framework +- Bugs & Reliability +- Testing +- Docs & Content +- Planning & Priorities ← **always last** + +Rules: +- "Agent Developer Experience" is the correct naming (not "Agent UX"). +- Planning items framed as WIP discussions, not firm decisions. + +## 🔜 Next Week +- Highlight priorities from team notes and iteration board. +- Tag GA priorities explicitly. + +## 🚩 Learnings +- 2–3 items. Practical, not aspirational. +- Expect the user to add/remove. + +## 🔥 Demos/Links +- Format: Bold title on one line, `[Demo Recording](url)` on next line. +- Wait for the user to provide demo links. diff --git a/.github/skills/weekly-report/references/TONE-RULES.md b/.github/skills/weekly-report/references/TONE-RULES.md new file mode 100644 index 00000000000..c3096b40a4a --- /dev/null +++ b/.github/skills/weekly-report/references/TONE-RULES.md @@ -0,0 +1,12 @@ +# Tone and Style Rules + +| Rule | Details | +|------|---------| +| Voice | Clear and direct. Short sentences. Avoid AI-generated tone. | +| Names | No individual names in the report. | +| Scope | Only product and engineering content. | +| Shipped vs WIP | Be precise. Don't claim features are shipped when they're exploratory or WIP. | +| Hype words | Avoid: "turning point", "game changer", "material", "meaningful", "significant milestone". | +| Severity | Don't overstate. If something is a concern but not critical, say so. | +| Commitment | Use "being explored" not "targeting". "Early discussions" not "decided". | +| Framing | Planning items are discussions in progress, not firm decisions. | diff --git a/.gitignore b/.gitignore index 156413e3727..8e116edafac 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,6 @@ cli/azd/cover_* review-*.diff .playwright-mcp/ + +# Demo video output +demo-video/