원클릭으로
plainx-release
Releases plainx packages with version suggestions, changelog generation, and git tagging. Use when releasing a package to PyPI.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Releases plainx packages with version suggestions, changelog generation, and git tagging. Use when releasing a package to PyPI.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Captures and analyzes performance traces to identify slow queries and N+1 problems. Use when a page is slow, there are too many queries, or the user asks about performance.
Releases Plain packages with intelligent version suggestions and parallel release notes generation. Use when releasing packages to PyPI.
Upgrades Plain packages and applies required migration changes. Use when updating to newer package versions.
Answer questions about the Plain framework by researching docs and source code. Use when asked "how do I...", "does Plain support...", or "how does X work?" questions.
Check overall database health — schema correctness and operational health. Use when asked to check the database, validate schema, optimize indexes, or diagnose Postgres problems.
Submit a bug report for the Plain framework. Use when the user wants to report a bug, error, or unexpected behavior. Collects context and creates a GitHub issue.
| name | plainx-release |
| description | Releases plainx packages with version suggestions, changelog generation, and git tagging. Use when releasing a package to PyPI. |
| disable-model-invocation | true |
Release a plainx package with version bumping, changelog generation, and git tagging.
/plainx-release [--major|--minor|--patch]
--major: auto-select major release--minor: auto-select minor release--patch: auto-select patch release| Script | Purpose |
|---|---|
get-package-info | Get package metadata and commits since last release |
Check git status is clean:
git status --porcelain
If not clean, stop and ask user to commit or stash changes.
uv run ./.claude/skills/plainx-release/get-package-info
This outputs JSON with:
name: Package name from pyproject.tomlcurrent_version: Current versionchangelog_path: Path to CHANGELOG.mdlast_tag: Most recent git tag for this packagerepo_url: GitHub URL (extracted from pyproject.toml)commits: List of commits since last tag (excluding tests)If no commits since last release, inform the user and stop.
If current_version is 0.0.0, this is the first release:
uv version <version> to set it directly)--major, --minor, or --patch was passed, auto-select that typeFor first releases (from 0.0.0):
uv version <version>
Where <version> is the chosen version like 0.1.0 or 1.0.0.
For subsequent releases:
uv version --bump <type>
Where <type> is major, minor, or patch.
Get the new version:
uv version --short
Get the file changes since the last release:
git diff <last_tag>..HEAD -- . ":(exclude)tests"
If no last_tag, use the initial commit or recent history.
Read the existing <changelog_path> file.
Prepend a new release entry to the changelog.
For first releases:
## [<new_version>](<repo_url>/releases/v<new_version>) (<today's date>)
Initial release.
- Brief summary of what the package provides
- Key features or capabilities
For subsequent releases:
## [<new_version>](<repo_url>/releases/v<new_version>) (<today's date>)
### What's changed
- Summarize user-facing changes based on the actual diff (not just commit messages)
- Include commit hash links: ([abc1234](<repo_url>/commit/abc1234))
- Skip test changes, internal refactors that don't affect public API
### Upgrade instructions
- Specific steps if any API changed
- If no changes required: "- No changes required."
Guide the user through these steps explicitly:
Stage files:
git add pyproject.toml <changelog_path> uv.lock
Show what will be committed:
git diff --cached --stat
Create commit:
git commit -m "Release v<new_version>"
Create tag:
git tag -a v<new_version> -m "Release v<new_version>"
GitHub Workflow Setup (first release only):
Check if .github/workflows/release.yml exists. If not, ask:
"No release workflow found. Would you like to set up GitHub Actions to publish to PyPI when you push a tag?"
If yes, copy .claude/skills/plainx-release/release-workflow.yml to .github/workflows/release.yml, then amend the commit:
git add .github/workflows/release.yml
git commit --amend --no-edit
git tag -fa v<new_version> -m "Release v<new_version>"
Remind the user to configure PyPI trusted publishing after pushing:
Push commit and tag:
git push && git push --tags
Ask user to confirm before each destructive step (commit, push).
After pushing, wait for the GitHub workflow to publish to PyPI. Once published, ask the user if they want to create a GitHub release:
gh release create v<new_version> --notes "<changelog entry summary>"
Or to use the full changelog entry from the file, extract and pass it manually.
Consider the current version when suggesting release types:
Most packages stay pre-1.0 for a long time. For these packages:
Once a package has reached 1.0, follow semver strictly: