Skip to content

Commit db13c41

Browse files
authored
chore(skills): enforce PR workflow and org migration in release skill (#121)
* chore(skills): enforce PR workflow and org migration in release skill Never push directly to main; always open a release/vX.Y.Z branch and request @vvbandeira as reviewer. Also updates all repo refs from luarss/openroad-mcp to The-OpenROAD-Project/openroad-mcp. * chore: update remaining luarss refs to The-OpenROAD-Project Updates install URL in .claude/settings.json and stale issue link in tests/performance/test_response_sizes.py.
1 parent 053345c commit db13c41

3 files changed

Lines changed: 38 additions & 15 deletions

File tree

.claude/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"command": "uvx",
55
"args": [
66
"--from",
7-
"git+https://github.com/luarss/openroad-mcp",
7+
"git+https://github.com/The-OpenROAD-Project/openroad-mcp",
88
"openroad-mcp"
99
]
1010
}

.claude/skills/release/SKILL.md

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ project. It ensures every file that references the version gets updated consiste
2929
- **Version source**: `pyproject.toml` `[project] version`
3030
- **Changelog format**: Keep a Changelog
3131
- **Commit style**: Conventional Commits (`feat:`, `fix:`, `chore:`, etc.)
32-
- **GitHub repo**: `luarss/openroad-mcp`
32+
- **GitHub repo**: `The-OpenROAD-Project/openroad-mcp`
33+
- **Release gatekeeper**: @vvbandeira (org member) — must approve and merge all releases
3334

3435
## Workflow
3536

@@ -83,7 +84,7 @@ Read each commit message and sort into Keep a Changelog categories:
8384

8485
For each commit, format the changelog entry as:
8586
```
86-
- Description ([#PR](https://github.com/luarss/openroad-mcp/pull/PR))
87+
- Description ([#PR](https://github.com/The-OpenROAD-Project/openroad-mcp/pull/PR))
8788
```
8889

8990
Use the PR number from the commit message if present. For commits without a PR
@@ -99,19 +100,19 @@ one breaks the release consistency.
99100
**server.json** — Update all three version references:
100101
- Top-level `"version": "X.Y.Z"`
101102
- PyPI package `"version": "X.Y.Z"`
102-
- OCI identifier `"identifier": "ghcr.io/luarss/openroad-mcp:X.Y.Z"`
103+
- OCI identifier `"identifier": "ghcr.io/The-OpenROAD-Project/openroad-mcp:X.Y.Z"`
103104

104-
**MCP manifest files and README** — These files use `git+https://github.com/luarss/openroad-mcp`
105+
**MCP manifest files and README** — These files use `git+https://github.com/The-OpenROAD-Project/openroad-mcp`
105106
without a version pin. Update every occurrence to pin to the release tag, which
106107
prevents supply chain attacks by ensuring users install a known, reviewed commit:
107108

108109
Change:
109110
```
110-
"git+https://github.com/luarss/openroad-mcp"
111+
"git+https://github.com/The-OpenROAD-Project/openroad-mcp"
111112
```
112113
To:
113114
```
114-
"git+https://github.com/luarss/openroad-mcp@vX.Y.Z"
115+
"git+https://github.com/The-OpenROAD-Project/openroad-mcp@vX.Y.Z"
115116
```
116117

117118
Use a single perl pass that handles all three URL patterns in the README:
@@ -120,7 +121,7 @@ Use a single perl pass that handles all three URL patterns in the README:
120121
- Bare (first-time pin): `"git+https://...openroad-mcp"`
121122

122123
```bash
123-
perl -i -pe 's!git\+https://github\.com/luarss/openroad-mcp(?:\@v[\d.]+)?(?="|$)!git+https://github.com/luarss/openroad-mcp\@vX.Y.Z!g' README.md
124+
perl -i -pe 's!git\+https://github\.com/The-OpenROAD-Project/openroad-mcp(?:\@v[\d.]+)?(?="|$)!git+https://github.com/The-OpenROAD-Project/openroad-mcp\@vX.Y.Z!g' README.md
124125
```
125126

126127
The `!` delimiter avoids clashing with the `|` inside the lookahead `(?="|$)`.
@@ -129,17 +130,17 @@ so all config formats are covered.
129130

130131
After updating, verify all pinned URLs show the new tag:
131132
```bash
132-
grep "luarss/openroad-mcp@" README.md
133+
grep "The-OpenROAD-Project/openroad-mcp@" README.md
133134
```
134135
Every line should show `@vX.Y.Z`. Also confirm no bare URLs remain:
135136
```bash
136-
grep 'luarss/openroad-mcp"' README.md
137+
grep 'The-OpenROAD-Project/openroad-mcp"' README.md
137138
```
138139
That should return no output.
139140

140141
> **Side note for users:** If you always want the latest version and prefer not
141142
> to pin, omit the `@vX.Y.Z` suffix and use the bare URL:
142-
> `git+https://github.com/luarss/openroad-mcp`. This trades supply chain
143+
> `git+https://github.com/The-OpenROAD-Project/openroad-mcp`. This trades supply chain
143144
> safety for convenience — acceptable for local/dev setups, not recommended
144145
> for shared or production environments.
145146
@@ -149,7 +150,7 @@ That should return no output.
149150
Today's date goes in the header. Add the link at the bottom:
150151

151152
```
152-
[X.Y.Z]: https://github.com/luarss/openroad-mcp/releases/tag/vX.Y.Z
153+
[X.Y.Z]: https://github.com/The-OpenROAD-Project/openroad-mcp/releases/tag/vX.Y.Z
153154
```
154155

155156
**ROADMAP.md** — Find the "Version Milestones" table and add a new row for
@@ -167,7 +168,7 @@ python -m pytest --tb=short -q
167168
If tests fail, report the failures to the user before proceeding. Do not commit
168169
a broken release.
169170

170-
### Step 6: Create the release commit
171+
### Step 6: Create the release commit and open a PR
171172

172173
Stage only the release-related files:
173174

@@ -181,10 +182,32 @@ Commit with the message:
181182
chore: release vX.Y.Z
182183
```
183184

184-
Do NOT push unless the user explicitly asks. The commit stays local for review.
185+
Then push to a dedicated release branch and open a PR:
186+
187+
```bash
188+
git checkout -b release/vX.Y.Z
189+
git push -u origin release/vX.Y.Z
190+
gh pr create \
191+
--title "chore: release vX.Y.Z" \
192+
--body "$(cat <<'EOF'
193+
## Release vX.Y.Z
194+
195+
See [CHANGELOG.md](CHANGELOG.md) for full details.
196+
197+
/cc @vvbandeira — please review and merge when ready.
198+
EOF
199+
)" \
200+
--reviewer vvbandeira
201+
```
202+
203+
**NEVER push directly to `main`.** The decision to merge and tag belongs exclusively
204+
to @vvbandeira. Once the PR is open, report the PR URL to the user and stop — do not
205+
merge, squash, or tag.
185206

186207
## Important details
187208

209+
- **Never push to `main` directly.** Always use a `release/vX.Y.Z` branch and open a PR.
210+
- **@vvbandeira must review and merge** — request them as a reviewer on every release PR.
188211
- Always use `uv lock` to regenerate the lockfile rather than editing it manually
189212
- The CHANGELOG date format is ISO: `YYYY-MM-DD`
190213
- Version tags use a `v` prefix: `v0.4.0` (but the version in files has no prefix)

tests/performance/test_response_sizes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""
22
Token efficiency and response quality benchmarks for OpenROAD-MCP.
33
4-
Addresses issue #42: https://github.com/luarss/openroad-mcp/issues/42
4+
Addresses issue #42: https://github.com/The-OpenROAD-Project/openroad-mcp/issues/42
55
Questions answered:
66
1. Are we following best practices for compact JSON representation?
77
2. Are there any benchmarks for latency? (not yet, but planned in follow-up PR)

0 commit comments

Comments
 (0)