Skip to content

Commit f6ddea2

Browse files
Add .github/release-task.md Copilot agent release task prompt (#57)
* Initial plan * Add .github/release-task.md Copilot agent release task prompt Agent-Logs-Url: https://github.com/304NotModified/SLNX-validator/sessions/7293dedd-9c3e-4add-99fd-9a8b73e33e45 Co-authored-by: 304NotModified <5808377+304NotModified@users.noreply.github.com> * Translate usage example to English and clarify release creation order Agent-Logs-Url: https://github.com/304NotModified/SLNX-validator/sessions/144fb689-82bf-41cd-a5a0-9a23e41a6796 Co-authored-by: 304NotModified <5808377+304NotModified@users.noreply.github.com> * Use GitHub labels for PR categorization in release task Agent-Logs-Url: https://github.com/304NotModified/SLNX-validator/sessions/5713e542-8964-4247-8102-419eef1e99d8 Co-authored-by: 304NotModified <5808377+304NotModified@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: 304NotModified <5808377+304NotModified@users.noreply.github.com>
1 parent 9f0bbab commit f6ddea2

1 file changed

Lines changed: 160 additions & 0 deletions

File tree

.github/release-task.md

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# Release Task — Copilot Coding Agent Prompt
2+
3+
Use this file to perform a full release with a single prompt.
4+
5+
## Usage
6+
7+
Type in Copilot chat:
8+
9+
```
10+
Run the release task for version X.Y.Z
11+
```
12+
13+
or shorthand:
14+
15+
```
16+
/release X.Y.Z
17+
```
18+
19+
---
20+
21+
## Step-by-step instructions for the agent
22+
23+
### 1. Gather changes since the last release
24+
25+
- Fetch the latest release tag via the GitHub API: `GET /repos/{owner}/{repo}/releases/latest`
26+
- Fetch all closed (merged) PRs via: `GET /repos/{owner}/{repo}/pulls?state=closed`
27+
- Filter PRs where `merged_at` is after the date of the latest release
28+
29+
### 2. Filter and categorize the PRs
30+
31+
**Ignore entirely** (do not include in the changelog):
32+
- PRs authored by `dependabot[bot]`
33+
- PRs with label `documentation` or whose title starts with `docs:`
34+
- PRs with label `dependencies`
35+
- PRs whose title contains `Bump version` or `release notes`
36+
37+
**Categorize the remaining PRs** (check both the PR title prefix **and** the GitHub label):
38+
- **New features**`feat:` title prefix OR label `enhancement`: list as a main bullet with a short description
39+
- **Bug fixes**`fix:` title prefix OR label `bug`: list as a main bullet with a short description
40+
- **Internal improvements**`chore:`/`refactor:` title prefix, label `refactoring`, label `build`, or titles containing `Move`, `Rename`, `Replace public API`: list briefly at the bottom in a separate section `🔧 Internal improvements` with PR links only
41+
42+
### 3. Generate the short changelog (for `<PackageReleaseNotes>` in the csproj)
43+
44+
- Maximum ~5 bullet points
45+
- Include only features and bug fixes — no refactoring, no docs
46+
- Format:
47+
```
48+
* [description] in [PR link]
49+
```
50+
51+
### 4. Generate the extended changelog (for the GitHub Release body)
52+
53+
Sections (include only if relevant PRs exist):
54+
- `## ✨ New features`
55+
- `## 🐛 Bug fixes`
56+
- `## 🔧 Internal improvements` — brief, with PR links only, no explanation
57+
58+
For relevant features, add a **short code example** demonstrating the new CLI argument, e.g.:
59+
60+
```powershell
61+
slnx-validator MySolution.slnx --new-flag
62+
```
63+
64+
Close with:
65+
66+
```
67+
**Full Changelog**: https://github.com/{owner}/{repo}/compare/vOLD...vNEW
68+
```
69+
70+
Documentation changes (`docs:` prefix) are **not** included.
71+
72+
### 5. Determine the release title
73+
74+
- Format: `X.Y.Z: <short description of the most important change(s)>`
75+
- Maximum ~70 characters
76+
- Summarize using the 1–2 most important features or fixes
77+
- Example: `0.6.0: SARIF report output & severity override flags`
78+
79+
### 6. Update the version in the csproj
80+
81+
File: `src/SLNX-validator/SLNX-validator.csproj`
82+
83+
- Set `<VersionPrefix>` to the new version (e.g. `0.6.0`)
84+
- Replace the contents of `<PackageReleaseNotes>` with the generated short changelog from step 3
85+
86+
### 7. Open a PR
87+
88+
- Include only the csproj change
89+
- Title: `Bump version to X.Y.Z and update release notes`
90+
- Body: the full extended changelog from step 4
91+
92+
### 8. Create the GitHub Release via the API
93+
94+
**Wait for the PR from step 7 to be merged into `main` before creating the release.**
95+
96+
`POST /repos/{owner}/{repo}/releases`
97+
98+
```json
99+
{
100+
"tag_name": "vX.Y.Z",
101+
"name": "<release title from step 5>",
102+
"body": "<extended changelog from step 4>",
103+
"draft": false,
104+
"prerelease": false,
105+
"target_commitish": "main"
106+
}
107+
```
108+
109+
---
110+
111+
## Changelog rules
112+
113+
- Write in **English**
114+
- Do not include documentation changes in release notes
115+
- Mention refactorings only briefly with a PR link — no explanation
116+
- Features may include a short example
117+
- Keep it concise but informative
118+
119+
---
120+
121+
## Example output
122+
123+
**Release title:** `0.6.0: SARIF report output & severity override flags`
124+
125+
**Short changelog (csproj):**
126+
127+
```
128+
* feat: Add SARIF 2.1.0 report output in https://github.com/304NotModified/SLNX-validator/pull/56
129+
* feat: Add CLI severity override flags (--blocker, --critical, etc.) in https://github.com/304NotModified/SLNX-validator/pull/45
130+
* fix: Remove duplicate filename in verbose error output in https://github.com/304NotModified/SLNX-validator/pull/52
131+
```
132+
133+
**GitHub Release body:**
134+
135+
```markdown
136+
## ✨ New features
137+
138+
- **SARIF 2.1.0 report output** — generate a SARIF report for integration with GitHub Code Scanning, Azure DevOps, Visual Studio, and more ([#56](https://github.com/304NotModified/SLNX-validator/pull/56))
139+
140+
```powershell
141+
slnx-validator MySolution.slnx --sarif-report-file results.sarif
142+
```
143+
144+
- **CLI severity override flags** — override the severity of specific validation rules per run ([#45](https://github.com/304NotModified/SLNX-validator/pull/45))
145+
146+
```powershell
147+
slnx-validator MySolution.slnx --minor SLNX001 --ignore SLNX002
148+
```
149+
150+
## 🐛 Bug fixes
151+
152+
- Remove duplicate filename in verbose error output ([#52](https://github.com/304NotModified/SLNX-validator/pull/52))
153+
154+
## 🔧 Internal improvements
155+
156+
- Replace public `XDocument` API on `SlnxFile` with typed SLNX domain model ([#54](https://github.com/304NotModified/SLNX-validator/pull/54))
157+
- Move XML parsing into `SlnxCollector` and rename `ValidationCollector` ([#51](https://github.com/304NotModified/SLNX-validator/pull/51))
158+
159+
**Full Changelog**: https://github.com/304NotModified/SLNX-validator/compare/v0.5.0...v0.6.0
160+
```

0 commit comments

Comments
 (0)