|
| 1 | +--- |
| 2 | +name: stream-generate-changelog |
| 3 | +description: Generates and writes a customer-facing Stream Video Unity SDK changelog entry from all committed changes since the latest release. Use for preparing the root CHANGELOG.md for a new SDK release. |
| 4 | +disable-model-invocation: true |
| 5 | +--- |
| 6 | + |
| 7 | +# Stream Generate Changelog |
| 8 | + |
| 9 | +Generate the next customer-facing changelog entry from every relevant committed change since the latest release. Edit only the repository-root `CHANGELOG.md`. |
| 10 | + |
| 11 | +The repository root must be the opened Cursor workspace. If only `Packages/StreamVideo` is open, stop and ask the user to open the `stream-video-unity` root so this skill and all release context are available. |
| 12 | + |
| 13 | +## Contract |
| 14 | + |
| 15 | +- This skill may modify only `CHANGELOG.md` at the repository root. |
| 16 | +- Do not modify package versions, manifests, metadata, release configuration, source, tests, or generated files. |
| 17 | +- Do not commit, tag, push, create a release, or alter Git history. |
| 18 | +- Base the entry on committed changes only. Never silently include uncommitted source changes. |
| 19 | +- Preserve unrelated user changes. |
| 20 | +- Keep scope limited to the Stream Video Unity SDK release represented by `Packages/StreamVideo`. |
| 21 | + |
| 22 | +## Establish the Release Boundary |
| 23 | + |
| 24 | +1. Read repository instructions, release documentation, `Packages/StreamVideo/package.json`, and the current `CHANGELOG.md`. |
| 25 | +2. Inspect Git status before doing anything else. |
| 26 | + - If `CHANGELOG.md` has uncommitted changes, stop and ask whether to preserve and build on them or leave the file unchanged. |
| 27 | + - Exclude other uncommitted and untracked changes from release analysis. If they prevent reliable inspection or validation, stop and explain why. |
| 28 | +3. Inspect release tags, their target commits, the latest changelog heading, package version, and commit ancestry. |
| 29 | +4. Identify the latest released SDK version and its corresponding tag that is reachable from `HEAD`. |
| 30 | + - Prefer the tag matching the newest released version documented at the top of `CHANGELOG.md`. |
| 31 | + - Treat equivalent `X.Y.Z` and `vX.Y.Z` tags on the same commit as one release boundary. |
| 32 | + - Do not choose a tag solely because it sorts highest; unrelated, malformed, legacy, or non-SDK tags may exist. |
| 33 | +5. Confirm that the repository contains the complete history from the release tag through `HEAD`. If the clone is shallow, required objects are missing, or the release tag cannot be resolved, stop rather than produce a partial entry. |
| 34 | +6. Determine the new release version from the package manifest or explicit user input. |
| 35 | + - The new version must be greater than the latest released SDK version. |
| 36 | + - If the manifest still contains the released version, multiple plausible versions exist, or version sources disagree, ask the user for the intended version. |
| 37 | +7. Use the exclusive commit range `<release-tag>..HEAD`. Record the resolved versions, tag, tag commit, `HEAD`, and commit range as an internal evidence ledger. |
| 38 | + |
| 39 | +Do not edit `CHANGELOG.md` until the release boundary and new version are unambiguous. |
| 40 | + |
| 41 | +## Analyze Every Change |
| 42 | + |
| 43 | +Inspect: |
| 44 | + |
| 45 | +- Every commit and merge commit in the release range. |
| 46 | +- The cumulative diff from the release tag to `HEAD`. |
| 47 | +- Changed public APIs, behavior, defaults, serialization, package structure, assembly definitions, platform integrations, tests, and documentation. |
| 48 | +- Relevant surrounding code and prior behavior when a customer-facing effect is not clear from the diff. |
| 49 | +- Pull request context available locally or through authenticated repository tooling when commit messages and code do not establish intent. |
| 50 | + |
| 51 | +Do not rely on commit subjects alone. Commits may be incomplete, implementation-focused, duplicated by later fixes, or reverted. |
| 52 | + |
| 53 | +For each candidate item, establish: |
| 54 | + |
| 55 | +1. The final behavior at `HEAD`, accounting for reverts and follow-up fixes. |
| 56 | +2. The customer-visible effect. |
| 57 | +3. The affected platform or usage scenario. |
| 58 | +4. Whether customers must change code, settings, assets, prefabs, or build configuration when upgrading. |
| 59 | +5. Concrete evidence in commits and code locations. |
| 60 | + |
| 61 | +Classify statements in the internal evidence ledger as: |
| 62 | + |
| 63 | +- **Confirmed**: directly supported by the final diff and surrounding code. |
| 64 | +- **Inferred**: strongly implied but not directly proven. |
| 65 | +- **Unverified risk**: plausible but lacking enough evidence. |
| 66 | + |
| 67 | +Only confirmed facts may be stated as facts in the changelog. Ask for clarification when an inferred point is important to customers. Omit unverified risks from the entry unless they are confirmed release limitations supplied by the user. |
| 68 | + |
| 69 | +## Customer-Contract Review |
| 70 | + |
| 71 | +For relevant changes, check customer impact across: |
| 72 | + |
| 73 | +- Public and protected APIs, namespaces, assembly names, and assembly definitions. |
| 74 | +- Optional parameters, defaults, events, callbacks, ordering, threading, and Unity main-thread behavior. |
| 75 | +- Async operations, cancellation, synchronization, lifecycle, cleanup, resource ownership, native resources, and allocations. |
| 76 | +- Unity serialization, prefabs, assets, metadata, managed stripping, reflection, and IL2CPP/AOT. |
| 77 | +- JSON models, wire formats, backend compatibility, and persisted data. |
| 78 | +- Android and iOS native integrations. |
| 79 | +- Windows, macOS, Linux, Unity Editor/player, Mono, and IL2CPP/AOT where supported. |
| 80 | +- Filesystem and path behavior. |
| 81 | +- Upgrade behavior in existing customer projects. |
| 82 | + |
| 83 | +Call out a breaking or migration-requiring change clearly and include the required customer action. Do not hide it under a generic improvement. If the code appears breaking but intent or migration guidance is unclear, stop and ask before writing the entry. |
| 84 | + |
| 85 | +## Select and Consolidate Entries |
| 86 | + |
| 87 | +Include changes that customers can observe or act on: |
| 88 | + |
| 89 | +- New capabilities and public APIs. |
| 90 | +- Reliability, correctness, compatibility, performance, or resource-use improvements. |
| 91 | +- Bug fixes with a credible user-visible symptom. |
| 92 | +- Platform support or build changes. |
| 93 | +- Deprecations, breaking changes, and required migration steps. |
| 94 | +- Important configuration or upgrade guidance. |
| 95 | + |
| 96 | +Normally omit: |
| 97 | + |
| 98 | +- Refactors with no externally observable effect. |
| 99 | +- Test-only, CI-only, formatting, dependency housekeeping, or internal tooling changes. |
| 100 | +- Generated-code churn with no customer-visible contract change. |
| 101 | +- Intermediate implementation details superseded before `HEAD`. |
| 102 | +- Duplicate descriptions of the same final behavior. |
| 103 | +- Claims such as "more robust," "optimized," or "fixed issues" without a specific customer outcome. |
| 104 | + |
| 105 | +Mention an internal dependency update only when it changes compatibility, supported platforms, build requirements, behavior, security, performance, or another customer-relevant outcome. |
| 106 | + |
| 107 | +Combine related commits into one clear item. Separate distinct customer outcomes even if they came from one commit. Describe the final release, not the development history. |
| 108 | + |
| 109 | +## Write in Repository Style |
| 110 | + |
| 111 | +1. Follow the structure, heading levels, punctuation, terminology, and level of detail used by the most recent well-formed entries in `CHANGELOG.md`. |
| 112 | +2. Add the new version at the top; do not rewrite prior releases. |
| 113 | +3. Choose sections based on the actual changes. Prefer established headings such as `### Improvements` and `### Bug Fixes`; use a focused platform or feature heading only when it materially helps customers. |
| 114 | +4. Order items by customer importance, then group closely related items. |
| 115 | +5. Lead with the customer outcome. Use internal names only when they are public APIs customers must recognize. |
| 116 | +6. Use exact public symbols in backticks. |
| 117 | +7. Explain the practical scenario for subtle fixes without exposing unnecessary implementation jargon. |
| 118 | +8. Keep each bullet concise, factual, and understandable without access to commits or internal architecture. |
| 119 | +9. Do not include commit hashes, pull request numbers, ticket IDs, internal component names, or contributor-oriented notes unless the existing release style and customer value clearly require them. |
| 120 | +10. Do not claim absolute safety, complete platform coverage, or performance gains that were not measured. |
| 121 | + |
| 122 | +## Validate Before Finishing |
| 123 | + |
| 124 | +After editing: |
| 125 | + |
| 126 | +1. Re-read the complete new entry as a customer upgrading an existing Unity project. |
| 127 | +2. Map every bullet back to concrete evidence in the release range. |
| 128 | +3. Verify every relevant commit was considered, while confirming that omitted commits have no credible customer-facing effect. |
| 129 | +4. Check that the entry describes the cumulative `HEAD` behavior and contains no reverted, duplicated, speculative, or internal-only claims. |
| 130 | +5. Confirm the version heading is correct, appears once, and is above the prior release. |
| 131 | +6. Confirm only `CHANGELOG.md` was modified by this skill and pre-existing unrelated work remains untouched. |
| 132 | +7. Run an appropriate whitespace or diff integrity check for `CHANGELOG.md`. |
| 133 | +8. Tests are normally unnecessary for a changelog-only edit. Do not run broad SDK tests unless needed to verify a disputed factual claim. Never imply that unrun platforms or tests were validated. |
| 134 | + |
| 135 | +If validation exposes an ambiguity that affects wording, release scope, compatibility, or migration guidance, stop and ask instead of guessing. |
| 136 | + |
| 137 | +## Final Response |
| 138 | + |
| 139 | +On success, return only the exact finished changelog entry, beginning with the new version heading. Do not add a summary, validation report, preamble, or trailing commentary. |
| 140 | + |
| 141 | +If blocked, ask the smallest focused question needed to continue and do not present a partial entry as final. |
0 commit comments