Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions .cursor/skills/gcnv-mcp-release/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
---
name: gcnv-mcp-release
description: >-
Release gcnv-mcp-server to npm via GitHub releases. Covers version bump draft
PRs, release notes from past GitHub format, pre-release MCP/Gemini testing,
publishing workflow, and post-release verification. Use when the user asks to
release, bump version, publish to npm, or cut a gcnv-mcp-server tag.
---

# gcnv-mcp-server Release

End-to-end release for [NetApp/gcnv-mcp-server](https://github.com/NetApp/gcnv-mcp-server).

**Hard rule:** Never commit or push directly to `main`. Always use draft PRs.

## Quick checklist

```
- [ ] Decide version (semver; patch for fixes, minor for features)
- [ ] Draft PR: bump package.json + package-lock.json version
- [ ] CI green on PR; get review if required
- [ ] Merge version-bump PR to main
- [ ] Draft release notes (see template below)
- [ ] Create GitHub release (tag vX.Y.Z, publish — triggers npm)
- [ ] Verify npm + GitHub Actions publish job
```

## How publishing works

- Workflow: `.github/workflows/release-publish.yml`
- Trigger: GitHub **Release published** (not draft → published)
- Action: checks out the release tag, runs `npm publish --access public --provenance`
- **Tag must match version:** tag `v1.2.1` ↔ `"version": "1.2.1"` in `package.json` on that tag

## Step 1 — Gather changes since last release

```bash
gh release view --repo NetApp/gcnv-mcp-server # latest tag
gh pr list --repo NetApp/gcnv-mcp-server --state merged --base main --limit 20
gh log vPREVIOUS..origin/main --oneline
```

Summarize **user-facing** changes only (tools, config, docs, breaking removals).

## Step 2 — Version bump (draft PR)

Branch from latest `origin/main`:

```bash
git fetch origin main
git checkout -b release/X.Y.Z origin/main
npm version X.Y.Z --no-git-tag-version
npm run build && npm test
git add package.json package-lock.json
git commit -m "chore: bump version to X.Y.Z"
git push -u origin release/X.Y.Z
gh pr create --draft --base main --title "chore: release X.Y.Z" --body "$(cat <<'EOF'
## Summary
- Bump version to X.Y.Z for npm release

## Test plan
- [ ] CI passes (lint, build, tests, security audit)
- [ ] Version in package.json matches intended tag vX.Y.Z

EOF
)"
```

Mark PR ready for review when CI is green; merge after approval.

## Step 3 — Release notes

Match recent patch/minor style: `## What's Changed` + bullet list (see [release-notes-examples.md](release-notes-examples.md)).

**Patch (x.y.Z):** short bullets, no long overview sections.

**Minor (x.Y.0):** optional title line + Highlights subsection (v1.1.0 style).

Draft notes in the PR body or paste into GitHub when creating the release.

## Step 4 — Create GitHub release

After the version-bump PR merges to `main`:

```bash
gh release create vX.Y.Z \
--repo NetApp/gcnv-mcp-server \
--target main \
--title "vX.Y.Z" \
--notes "$(cat <<'EOF'
## What's Changed

- ...
EOF
)"
```

Use `--draft` first if the user wants to review before publishing. **Publishing** (non-draft) triggers npm.

## Step 5 — Verify

```bash
gh run list --repo NetApp/gcnv-mcp-server --workflow "Publish on release" --limit 3
npm view gcnv-mcp-server version
gh release view vX.Y.Z --repo NetApp/gcnv-mcp-server
```

## Pre-release testing (recommended)

Run when the release includes MCP schema/handler changes.

### Cursor MCP

- Local build: `npm run build`
- Point `~/.cursor/mcp.json` at repo `build/index.js`
- Test affected tools against a GCNV project (e.g. list/get for backup, snapshot, replication, storage pool)

### Gemini CLI (Vertex AI)

Personal OAuth often fails; use gcloud ADC + Vertex:

```bash
export GEMINI_CLI_HOME=/tmp/gemini-vertex-home
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT=<project>
export GOOGLE_CLOUD_LOCATION=us-central1
# settings: selectedType vertex-ai, model gemini-2.5-flash
gemini # invoke MCP tools from PR test plan
```

### CI security audit

If `npm audit` fails on transitive deps, prefer **scoped** overrides in `package.json` (e.g. under `glob → minimatch → brace-expansion`), not global overrides.

## Version guidance

| Change type | Bump | Example |
|-------------|------|---------|
| Bug fix, schema fix, audit override | patch | 1.2.0 → 1.2.1 |
| New tools or features | minor | 1.2.0 → 1.3.0 |
| Breaking API/tool removal | major | 1.x → 2.0.0 |

## Additional resources

- Past release note formats: [release-notes-examples.md](release-notes-examples.md)
47 changes: 47 additions & 0 deletions .cursor/skills/gcnv-mcp-release/release-notes-examples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Release notes examples (gcnv-mcp-server)

Copied from past GitHub releases. Prefer the **v1.2.0** style for patch releases.

## v1.2.0 (patch/minor — preferred for small releases)

```markdown
## What's Changed

- Expanded setup documentation for Cursor, Claude Code, Codex CLI, Gemini CLI, and Antigravity/AGY clients.
- Added per-request Google access token support for HTTP/SSE transports, including configurable auth header support with `GCNV_AUTH_HEADER`.
- Added optional ONTAP Knowledge Graph discovery integration via `ONTAP_KG_URL`, with fallback to the bundled ONTAP API index.
- Removed delete tools for GCNV and ONTAP resources.
```

## v1.2.1 draft (template for schema-validation patch)

```markdown
## What's Changed

- Fixed MCP output schema validation for backup, replication, snapshot, storage pool, and quota rule tools so structured responses match declared Zod schemas.
- Hardened protobuf timestamp formatting to reject missing or invalid `seconds` values instead of emitting Unix epoch timestamps.
- Scoped npm audit override for `brace-expansion` to the `glob → minimatch` dependency chain only.
```

## v1.1.0 (minor with highlights)

```markdown
## v1.1.0 - ONTAP Mode Support

This release adds ONTAP Expert Mode support for Google Cloud NetApp Volumes MCP Server.

### Highlights

- Added support for creating FLEX Unified storage pools with `mode: ONTAP`.
- Added ONTAP Expert Mode tools for supported ONTAP REST operations through the GCNV control plane.
- Added `ontap_discover` to search bundled ONTAP REST endpoints before execution.
- Added `ontap_execute` for discovered ONTAP REST API calls.
```

## v1.0.2 (feature-heavy minor)

Uses `## Overview` paragraph, then `## New Features` with `###` subsections and **Tools:** lines naming affected MCP tools.

## v1.0.1 / v1.0.0

v1.0.1 was one line. v1.0.0 used a full first-release overview with `## What's included` tool categories.
Loading