CtrlK
BlogDocsLog inGet started
Tessl Logo

release

Orchestrate an Open Notebook release — changelog audit, risk-based A/B/C test matrix, Docker image gate (fresh + upgrade), fix loop via PRs, cut, publication with credits, retro. Use when preparing, testing, cutting or publishing a release.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

The canonical home for this skill is release in lfnovo/open-notebook

SKILL.md
Quality
Evals
Security

Open Notebook Release Orchestrator

You are conducting a release of Open Notebook, reproducing the process established in v1.11.0. The source of truth for the process is .github/RELEASE_PROCESS.md — read it first. This skill adds the orchestration order, the exact commands, and the human gates.

Ground rules for the whole run:

  • The release happens in a single session. Track phases with the task tools (TaskCreate/TaskUpdate) so the owner sees progress.
  • Every repo change goes through a PR (branch → PR → CI + cubic → merge). Never push to main. Confirm the owner authorizes you to merge your own PRs when clean; otherwise hand merges to them.
  • Interact in the owner's language; write code, commits and docs in English.
  • Read ${CLAUDE_SKILL_DIR}/gates.md NOW — it defines what you may do autonomously and what requires an explicit GO.

Phase 0 — Scope and changelog audit

  1. git fetch --tags · find the last release tag and gh release list.
  2. List everything merged since: git log <last-tag>..origin/main --oneline.
  3. Audit the CHANGELOG [Unreleased] section against that list. Convention: entries reference the issue number when one exists, the PR number otherwise. Close every gap via PR.
  4. Check open Dependabot alerts (gh api repos/{owner}/{repo}/dependabot/alerts?state=open) — a security-themed release with open highs is incoherent. Triage them into the fix loop or document acceptance.

Phase 1 — Risk-based test matrix

Read ${CLAUDE_SKILL_DIR}/test-matrix.md and instantiate it against the actual release diff. Classify each change: what can it break, for whom, which bucket (A/B/C) verifies it. Refine the matrix with the owner before executing — they decide bucket-B investments and own bucket C.

Phase 2 — Execute bucket A

Run in parallel where possible:

  • uv run pytest tests/ · ruff check . · uv run python -m mypy . (all three are required CI gates since the July 2026 cleanup; mypy must exit 0)
  • Frontend: npm run lint, npm run test, npm run build (production build; a stale node_modules produces false build failures — npm ci first if so)
  • The smoke-e2e agent against the local dev stack (start it: database → api → worker → frontend; check ports are free first — another project may hold 3000/8000: identify the owner via lsof + process cwd, never kill blind; the frontend runs fine on PORT=3001 npm run dev — pass the URL to the smoke agent. Also note the dev .env may point at a standalone SurrealDB, not the repo-compose one)
  • Dev-DB leak check: snapshot per-table record counts (at least credentials) before and after the backend suite — a diff means a test is writing to the live database (caught 48 leaked credentials in v1.12.0)
  • The targeted probes from the matrix (legitimate-use regression checks for security changes)

Phase 3 — Image gate + bucket C kickoff

  • make docker-build-local, then make release-test TAG=<ver> OLD_TAG=<prev> (pull the genuine previous tag first — see gotchas in RELEASE_PROCESS.md).
  • Hand the owner their bucket-C checklist (from the matrix) so they test in parallel — do not leave them as the bottleneck at the end.

Phase 4 — Fix loop

For each finding: reproduce → root-cause → focused PR with regression tests → CI + cubic → merge (per gates.md). Apply the re-test policy from RELEASE_PROCESS.md after each merge. Pre-existing bugs that are not release regressions become backlog issues (ask the owner before creating issues). Verify UI fixes in the real browser (Playwright) before opening the PR.

Phase 5 — Cut

  1. Cut PR off updated main: bump pyproject.toml, date the changelog section.
  2. After merge: make tag.
  3. Rebuild the image from final main and re-run the image gate against it.
  4. Push version images via CI: gh workflow run build-and-release.yml --ref main -f push_latest=false and watch the run. (Local make docker-push needs docker login.)
  5. Verify the pushed manifests (see ${CLAUDE_SKILL_DIR}/runbook.md).

Phase 6 — Pushed-image verification (human gate)

Offer the owner a browsable RC stack on this machine: make release-stack TAG=<ver> [DUMP=<dump>] — with a copy of their dev data for realism (export command in the runbook). Support them through it; findings go back to Phase 4. Do not proceed without their GO.

Phase 7 — Publish (human gate)

  1. Draft release notes per ${CLAUDE_SKILL_DIR}/comms-templates.md — the Thanks section is mandatory; collect every contributor with the commands in the template. Show the owner for review.
  2. With their explicit GO: gh release create v<ver> --title ... --notes-file ... --latest. Publication triggers CI to push v1-latest — watch it, then verify the latest manifests (runbook).
  3. Mark shipped issues with the released label (ask before mass-labeling).
  4. Deliver the Discord post text (the owner posts it).

Phase 8 — Cleanup

make release-stack-down, remove temp dumps/data dirs, stop watchers, ensure git status is clean on main and no test containers remain.

Phase 9 — Retro (always runs)

Ask the owner: "what should improve in this process?" — and apply the accepted improvements now: edit .github/RELEASE_PROCESS.md, scripts/release-test/*, and this skill's files while context is fresh. New gotchas discovered during the run go into RELEASE_PROCESS.md's Known Gotchas via the same PR flow.

Repository
lfnovo/open-notebook
Last updated
First committed

Canonical home

lfnovo/open-notebook
In sync

since Jul 24, 2026

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.