Skill: Generating or Completing Release Notes
This skill provides instructions for Junie to create release notes from scratch or complete existing draft release notes for OWASP Juice Shop. It follows the established structure, iconography, and formatting patterns of the project based on an analysis of the last 20 releases.
Workflow
- Gather Information:
- Identify the last released tag:
git describe --tags --abbrev=0
- List all commits since the last tag:
git log <last_tag>..HEAD --oneline
- Find PRs and external contributors:
git log <last_tag>..HEAD --pretty=format:"%h %s (%an)"
- Check for version/dependency changes:
git diff <last_tag>..HEAD -- package.json
- Check for product/user changes:
git diff <last_tag>..HEAD -- config/default.yml
- Check for challenge changes:
git diff <last_tag>..HEAD -- data/static/challenges.yml (or relevant challenge files)
- Check for configuration changes:
git diff <last_tag>..HEAD -- lib/config.schema.ts
- Check for UI/Frontend changes:
git diff <last_tag>..HEAD -- frontend/src/app
- Check for I18N updates:
git diff <last_tag>..HEAD -- i18n
- Categorize & Iconize Changes:
- Map changes to the correct section with its corresponding emoji:
👟 Runtime: Node.js version support, core library changes (e.g., XML parser).
🎯 Challenges: New or updated challenges.
🎨 User Interface / 🎨 UI: Visual changes, accessibility, UI enhancements.
🅰️ Frontend: Angular/Material version updates.
🐳 Docker: Image updates, base image changes, size reductions.
🐛 Bugfixes: Fixed issues (mention PR/issue numbers if available).
🌐 I18N: Translation updates, new languages.
🧹 Technical Debt / 🧹 Housekeeping / 🧹 Technical Debt Reduction: Refactorings, code quality improvements.
🔧 Configuration / ⚙️ DevOps Automation: Settings, new/removed config options, CI/CD.
🛒 Shop / 🛒 Product Inventory: New products/users.
👨🏫 Tutorials: New or updated hacking instructors/tutorials.
🏗️ Build Process: Release pipeline, build scripts, asset generation.
📜 Policy: Licensing, security policy, or Code of Conduct changes.
🆘 Hints: Challenge hints.
🔥 Hotfix: Urgent fixes for production issues.
🕵️ Cheat Detection: Changes to cheat scoring/logic.
👮 Startup Validations: Boot/environment checks.
- Use Status Icons to mark specific types of changes:
⚡: Significant changes to challenges that might break CTF setups or solutions.
⚠️: Breaking changes that affect end users of Juice Shop (e.g., dropped Node.js version support, removed/renamed config options). Internal tooling changes (build scripts, TypeScript version, dev dependencies) are never ⚠️ because users do not interact with them.
📜: Policy or licensing changes.
⭐: Challenge difficulty levels (e.g., ⭐⭐-challenge).
- Format the Notes:
- Start with a blockquote disclaimer if there are
⚡, ⚠️, or 📜 changes.
- Use
* for bullet points.
- Add
(kudos to @username) at the end of lines for external contributors (check PR descriptions or commit logs). Neither @J12934 nor @bkimminich should ever get a kudos suffix.
- Reference PRs as
#number and commits as hashes where appropriate. These must always be prefixed to the list item (e.g., * #1234: Fixed ... or * abcdef: Added ...), never suffixed. Use these sparingly and only for significant or external contributions.
- Review and Refine:
- Compare with the
release-notes-checklist.md.
- Ensure all significant changes found in step 1 are covered.
- Avoid over-detailing: Combine related changes into single bullet points (e.g., adding a challenge and its corresponding coding challenge).
- Do not list bugfixes for features or challenges that were introduced in the same release.
- Exclude event entries, workshop announcements, or other non-product references.
Templates
Refer to specific templates for different release types:
- Major/Breaking Release
- Minor/Feature Release
- Patch/Hotfix Release
Completing Existing Release Notes
When a user submits existing release notes to complete:
- Check if any sections are missing based on the gathered information.
- Add missing iconography (emojis) and check if disclaimers are appropriate.
- Standardize the "kudos to @username" format if incomplete.
- Ensure all sections follow the correct order (Runtime, Frontend, Challenges, UI, etc.).
Draft Release Creation (Optional)
If gh CLI is available and the environment has appropriate tokens, a draft release can be created or updated using:
gh release create <tag> --title "<tag>" --notes-file <file> --draft
Otherwise, provide the markdown content for manual creation on GitHub.
1---2name: generate-release-notes3description: Instructions for generating or completing release notes based on the project's iconography and structure.4---56# Skill: Generating or Completing Release Notes78This skill provides instructions for Junie to create release notes from scratch or complete existing draft release notes for OWASP Juice Shop. It follows the established structure, iconography, and formatting patterns of the project based on an analysis of the last 20 releases.910## Workflow11121. **Gather Information**:13 * Identify the last released tag: `git describe --tags --abbrev=0`14 * List all commits since the last tag: `git log <last_tag>..HEAD --oneline`15 * Find PRs and external contributors: `git log <last_tag>..HEAD --pretty=format:"%h %s (%an)"`16 * Check for version/dependency changes: `git diff <last_tag>..HEAD -- package.json`17 * Check for product/user changes: `git diff <last_tag>..HEAD -- config/default.yml`18 * Check for challenge changes: `git diff <last_tag>..HEAD -- data/static/challenges.yml` (or relevant challenge files)19 * Check for configuration changes: `git diff <last_tag>..HEAD -- lib/config.schema.ts`20 * Check for UI/Frontend changes: `git diff <last_tag>..HEAD -- frontend/src/app`21 * Check for I18N updates: `git diff <last_tag>..HEAD -- i18n`222. **Categorize & Iconize Changes**:23 * Map changes to the correct section with its corresponding emoji:24 * `👟 Runtime`: Node.js version support, core library changes (e.g., XML parser).25 * `🎯 Challenges`: New or updated challenges.26 * `🎨 User Interface` / `🎨 UI`: Visual changes, accessibility, UI enhancements.27 * `🅰️ Frontend`: Angular/Material version updates.28 * `🐳 Docker`: Image updates, base image changes, size reductions.29 * `🐛 Bugfixes`: Fixed issues (mention PR/issue numbers if available).30 * `🌐 I18N`: Translation updates, new languages.31 * `🧹 Technical Debt` / `🧹 Housekeeping` / `🧹 Technical Debt Reduction`: Refactorings, code quality improvements.32 * `🔧 Configuration` / `⚙️ DevOps Automation`: Settings, new/removed config options, CI/CD.33 * `🛒 Shop` / `🛒 Product Inventory`: New products/users.34 * `👨🏫 Tutorials`: New or updated hacking instructors/tutorials.35 * `🏗️ Build Process`: Release pipeline, build scripts, asset generation.36 * `📜 Policy`: Licensing, security policy, or Code of Conduct changes.37 * `🆘 Hints`: Challenge hints.38 * `🔥 Hotfix`: Urgent fixes for production issues.39 * `🕵️ Cheat Detection`: Changes to cheat scoring/logic.40 * `👮 Startup Validations`: Boot/environment checks.41 * Use **Status Icons** to mark specific types of changes:42 * `⚡`: Significant changes to challenges that might break CTF setups or solutions.43 * `⚠️`: Breaking changes that affect **end users** of Juice Shop (e.g., dropped Node.js version support, removed/renamed config options). Internal tooling changes (build scripts, TypeScript version, dev dependencies) are **never** ⚠️ because users do not interact with them.44 * `📜`: Policy or licensing changes.45 * `⭐`: Challenge difficulty levels (e.g., `⭐⭐-challenge`).463. **Format the Notes**:47 * Start with a blockquote disclaimer if there are `⚡`, `⚠️`, or `📜` changes.48 * Use `*` for bullet points.49 * Add `(kudos to @username)` at the end of lines for external contributors (check PR descriptions or commit logs). Neither `@J12934` nor `@bkimminich` should ever get a kudos suffix.50 * Reference PRs as `#number` and commits as hashes where appropriate. These must always be prefixed to the list item (e.g., `* #1234: Fixed ...` or `* abcdef: Added ...`), never suffixed. Use these sparingly and only for significant or external contributions.514. **Review and Refine**:52 * Compare with the `release-notes-checklist.md`.53 * Ensure all significant changes found in step 1 are covered.54 * Avoid over-detailing: Combine related changes into single bullet points (e.g., adding a challenge and its corresponding coding challenge).55 * Do not list bugfixes for features or challenges that were introduced in the same release.56 * Exclude event entries, workshop announcements, or other non-product references.5758## Templates5960Refer to specific templates for different release types:61- [Major/Breaking Release](types/major.md)62- [Minor/Feature Release](types/minor.md)63- [Patch/Hotfix Release](types/hotfix.md)6465## Completing Existing Release Notes6667When a user submits existing release notes to complete:681. Check if any sections are missing based on the gathered information.692. Add missing iconography (emojis) and check if disclaimers are appropriate.703. Standardize the "kudos to @username" format if incomplete.714. Ensure all sections follow the correct order (Runtime, Frontend, Challenges, UI, etc.).7273## Draft Release Creation (Optional)7475If `gh` CLI is available and the environment has appropriate tokens, a draft release can be created or updated using:76`gh release create <tag> --title "<tag>" --notes-file <file> --draft`77Otherwise, provide the markdown content for manual creation on GitHub.