npx skills add ...
npx skills add zc277584121/marketing-skills --skill jupyter-notebook-writing
Write Milvus application-level Jupyter notebook examples using a Markdown-first workflow with jupyter-switch for format conversion.
npx skills add zc277584121/marketing-skills --skill jupyter-notebook-writing
Write Milvus application-level Jupyter notebook examples as a DevRel workflow. Uses a Markdown-first approach — AI edits .md files, then converts to .ipynb via jupyter-switch.
Prerequisites: Python >= 3.10, uv (
uvxcommand available)
The user wants to create or edit a Jupyter notebook example, typically demonstrating Milvus usage in an application context (RAG, semantic search, hybrid search, etc.).
Jupyter .ipynb files contain complex JSON with metadata, outputs, and execution counts — painful for AI to edit directly. Instead:
.md file — AI works with clean Markdown.ipynb — using jupyter-switch for runnable notebook.md is the source of truth for editingIn the .md file:
```python ... ```) become code cells in the notebook.md (they get generated when running the notebook).bak backup is created automaticallyexample.md with the content (see structure below)uvx jupyter-switch example.mdexample.md and example.ipynb now exist.ipynb exists, convert first: uvx jupyter-switch example.ipynb.md fileuvx jupyter-switch example.mdBefore running any notebook, you must determine which Python environment to use. The system default jupyter execute may not have the required packages installed.
Step A — Detect available environments.
Step B — Ask the user which environment to use. Present a numbered list of choices. Include all detected environments:
jupyter execute as-is, no --kernel_name.venv/ or venv/ found in working directory) — the Python inside that venvNote on uv projects: If the working directory has
pyproject.toml+.venv/(a uv-managed project), the local venv option covers this case. The user can also runuv run jupyter execute example.ipynbdirectly if jupyter is a project dependency.
Example prompt:
Step C — Apply the chosen environment:
| Scenario | Action |
|---|---|
| Already a registered Jupyter kernel | Use jupyter execute --kernel_name=<name> |
| Conda env not yet registered as kernel | Register first: <env-python> -m ipykernel install --user --name <name> --display-name "<label>", then use --kernel_name=<name> |
| Custom Python path | Same as above — register as kernel first, then use --kernel_name |
Before running, comment out "setup-only" cells in the .md file — cells that are meant for first-time users but should not run in an automated test environment. Specifically:
pip install cells — dependencies should already be installed in the chosen Jupyter environment. If any packages are missing or need upgrading, install them externally in the target environment (with --upgrade), not inside the notebook.os.environ["OPENAI_API_KEY"] = "sk-***********". Instead, set environment variables externally before running (export in shell, or inject via code before jupyter execute).To comment out a cell, wrap its content in a block comment so the cell still executes (producing empty output) but does nothing:
This keeps the notebook structure intact (cell count, ordering) while preventing conflicts with the external Jupyter environment.
For environment variables: either export them in the shell before running jupyter execute, or prepend them to the command:
.md to .ipynb if needed<env-python> -m pip install --upgrade <packages>jupyter execute --kernel_name=<name> example.ipynb (omit --kernel_name if using system default).md file, uncomment setup cells if needed for debugging, and re-convertA typical Milvus example notebook follows this structure:
This skill includes two reference documents under references/. Read them when the task involves their topics.
| Reference | When to Read | File |
|---|---|---|
| Bootcamp Format | Writing a Milvus integration tutorial (badges, document structure, section format, example layout) | references/bootcamp-format.md |
| Milvus Code Style | Writing pymilvus code (collection creation, MilvusClient connection args, schema patterns, best practices) | references/milvus-code-style.md |
references/bootcamp-format.md)Read this when the user is writing a Milvus integration tutorial for the bootcamp repository. It covers:
"sk-***********")references/milvus-code-style.md)Read this when the notebook involves pymilvus code. Key rules:
MilvusClient API — never use the legacy ORM layer (connections.connect(), Collection(), FieldSchema(), etc.)create_schema + add_field) — do not use the shortcut create_collection(dimension=...) without schemahas_collection check before creating collectionsconsistency_level="Strong" line in create_collection()load_collection() — collections auto-load on creationuri options (Milvus Lite / Docker / Zilliz Cloud).md file, not the .ipynb directly. The .md is easier for AI to read and write..md for editing, .ipynb for running/sharing..md, always re-run uvx jupyter-switch example.md to sync the .ipynb.# Discover conda/mamba environments
conda env list 2>/dev/null || mamba env list 2>/dev/null
# Discover registered Jupyter kernels
jupyter kernelspec list 2>/dev/null
# Check system default Python
which python3 2>/dev/null && python3 --version 2>/dev/null
# Check for local virtual environment in the working directory
ls -d .venv/ venv/ 2>/dev/null
# Check if a uv-managed project (pyproject.toml + .venv)
test -f pyproject.toml && test -d .venv && echo "uv/pip project venv detected"Which Python environment should I use to run this notebook?
1. System default (jupyter execute as-is)
2. conda: myenv (/path/to/envs/myenv)
3. Jupyter kernel: some-kernel
4. Local venv (.venv/)
5. Custom — enter a path or environment name# # pip install --upgrade langchain pymilvus
# import os
# os.environ["OPENAI_API_KEY"] = "sk-***********"OPENAI_API_KEY="sk-real-key" jupyter execute --kernel_name=<name> example.ipynb# Title
Brief description of what this notebook demonstrates.
## Prerequisites
Install dependencies:
` ``python
!pip install pymilvus some-other-package
` ``
## Setup
Import and configuration:
` ``python
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
` ``
## Prepare Data
Load or generate example data:
` ``python
# data preparation code
` ``
## Create Collection & Insert Data
` ``python
# collection creation and data insertion
` ``
## Query / Search
` ``python
# search or query examples
` ``
## Cleanup
` ``python
client.drop_collection("example_collection")
` ``