Skill: dimillian/app-store-changelog (version 1.0.1)

--- name: app-store-changelog description: Create user-facing App Store release notes by collecting and summarizing all user-impacting changes since the last git tag (or a specified ref). Use when asked to generate a comprehensive release changelog, App Store "What's New" text, or release notes based on git history or tags. --- # App Store Changelog ## Overview Generate a comprehensive, user-facing changelog from git history since the last tag, then translate commits into clear App Store release notes. ## Workflow ### 1) Collect changes - Run `scripts/collect_release_changes.sh` from the repo root to gather commits and touched files. - If needed, pass a specific tag or ref: `scripts/collect_release_changes.sh v1.2.3 HEAD`. - If no tags exist, the script falls back to full history. ### 2) Triage for user impact - Scan commits and files to identify user-visible changes. - Group changes by theme (New, Improved, Fixed) and deduplicate overlaps. - Drop internal-only work (build scripts, refactors, dependency bumps, CI). ### 3) Draft App Store notes - Write short, benefit-focused bullets for each user-facing change. - Use clear verbs and plain language; avoid internal jargon. - Prefer 5 to 10 bullets unless the user requests a different length. ### 4) Validate - Ensure every bullet maps back to a real change in the range. - Check for duplicates and overly technical wording. - Ask for clarification if any change is ambiguous or possibly internal-only. ## Output Format - Title (optional): "What’s New" or product name + version. - Bullet list only; one sentence per bullet. - Stick to storefront limits if the user provides one. ## Resources - `scripts/collect_release_changes.sh`: Collect commits and touched files since last tag. - `references/release-notes-guidelines.md`: Language, filtering, and QA rules for App Store notes.

path: references/release-notes-guidelines.md
content: # App Store Release Notes Guidelines

## Goals
- Produce user-facing release notes that describe visible changes since the last tag.
- Include all user-impacting changes; omit purely internal or refactor-only work.
- Keep language plain, short, and benefit-focused.

## Output Shape
- Prefer 5 to 10 bullets total for most releases.
- Group by theme if needed: New, Improved, Fixed.
- Each bullet should be one sentence and start with a verb.
- Avoid internal codenames, ticket IDs, or file paths.

## Filtering Rules
- Include: new features, UI changes, behavior changes, bug fixes users would notice, performance improvements with visible impact.
- Exclude: refactors, dependency bumps, CI changes, developer tooling, internal logging, analytics changes unless they affect user privacy or behavior.
- If a change is ambiguous, ask for clarification or describe it as a small improvement only if it is user-visible.

## Language Guidance
- Translate technical terms into user-facing descriptions.
- Avoid versions of "API", "refactor", "nil", "crash log", or "dependency".
- Prefer "Improved", "Added", "Fixed", "Updated" or action verbs like "Search", "Upload", "Sync".
- Keep tense present or past: "Added", "Improved", "Fixed".

## Examples
- "Added account switching from the profile menu."
- "Improved timeline loading speed on slow connections."
- "Fixed media attachments not opening in full screen."

## QA Checklist
- Every bullet ties to a real change in the range.
- No duplicate bullets that describe the same change.
- No internal jargon or file paths.
- Final list fits App Store text limits for the target storefront if provided.


path: scripts/collect_release_changes.sh
content: #!/usr/bin/env bash
set -euo pipefail

since_ref="${1:-}"
until_ref="${2:-HEAD}"

if [[ -z "${since_ref}" ]]; then
  if git describe --tags --abbrev=0 >/dev/null 2>&1; then
    since_ref="$(git describe --tags --abbrev=0)"
  fi
fi

range=""
if [[ -n "${since_ref}" ]]; then
  range="${since_ref}..${until_ref}"
else
  range="${until_ref}"
fi

repo_root="$(git rev-parse --show-toplevel)"

printf "Repo: %s\n" "${repo_root}"
if [[ -n "${since_ref}" ]]; then
  printf "Range: %s..%s\n" "${since_ref}" "${until_ref}"
else
  printf "Range: start..%s (no tags found)\n" "${until_ref}"
fi

printf "\n== Commits ==\n"
git log --reverse --date=short --pretty=format:'%h|%ad|%s' ${range}

printf "\n\n== Files Touched ==\n"
git log --reverse --name-only --pretty=format:'--- %h %s' ${range} | sed '/^$/d'


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)