Jupyter deploy
nagi (凪): AI agent orchestration framework (remake nanoclaw)
npx -y skills add yukihirop/nagi --skill jupyter-deployAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Create a Jupyter notebook from a user's request, execute it to generate outputs, convert to HTML, and deploy to Vercel. Use when the user says "notebook", "ノートブック", "Jupyter", "ジュピター", "データ分析", "data analysis notebook", "create notebook", "ノートブック作って", "分析して", "analyze and deploy", "notebook deploy", or asks to create a notebook and share/deploy the results.
SKILL.md
4.9 KB, as published. Nobody here has run it
Jupyter Notebook Deploy
Create, execute, and deploy Jupyter notebooks as interactive HTML pages on Vercel.
Step 1: Understand the Request
The user will describe what they want analyzed, visualized, or computed. Clarify if needed, but generally proceed directly with creating the notebook.
Step 2: Create the Notebook
Use the NotebookEdit tool to create a .ipynb file in the working directory.
File naming: Use a descriptive slug based on the request, e.g., sales-analysis.ipynb, prime-numbers.ipynb. If the user specifies a name, use that.
Notebook structure guidelines:
- First cell: Markdown title and description of the analysis
- Import cells: Group all imports in one cell near the top
- Logic cells: Break the work into logical steps, each in its own cell
- Visualization cells: Use matplotlib/pandas plotting; always call
plt.show()or use inline display - Matplotlib setup: Always include this in your setup cell:
Use the default matplotlib style (white background, black text). Do NOT use dark themes — they are hard to read in notebook HTML output.import matplotlib matplotlib.rcParams['font.family'] = 'Noto Sans CJK JP' # Japanese font support - Summary cell: Final markdown cell summarizing findings
- Only use libraries available in the container:
numpy,pandas,matplotlib(standard library modules are also available) - If the user needs a library that is not installed, tell them it is unavailable and suggest an alternative using the installed libraries
Important: Set the kernel to python3 in the notebook metadata.
Step 3: Execute the Notebook
Run the notebook to generate outputs (charts, tables, printed values):
jupyter nbconvert --to notebook --execute --inplace <notebook-file>.ipynb
This executes the notebook and writes outputs back in-place. Do NOT use jupyter execute as it may not persist outputs to the file.
If execution fails:
- Read the error from the output
- Fix the notebook using
NotebookEdit - Re-execute
- Retry up to 2 times. If it still fails, report the error to the user and stop.
Step 4: Convert to HTML
jupyter nbconvert --to html --template classic <notebook-file>.ipynb
IMPORTANT: Always use --template classic. The default lab template uses JupyterLab CSS variables (--jp-*) that are undefined outside JupyterLab, causing the page to render with no styling. The classic template produces self-contained, standalone HTML that looks correct in any browser.
By default, code cells are shown (notebook style with In [n]: prompts). If the user explicitly asks to hide the code, add --no-input to produce a clean report-style output.
The output file will be <notebook-file>.html in the same directory.
Step 5: Read the HTML
Read the generated HTML file using the Read tool.
If the HTML is too large (over 500KB), the Vercel deploy may fail. In that case:
- Try
--no-inputif not already used - Reduce the number of high-resolution plots
- Report to the user if it cannot be reduced
Step 6: Deploy to Vercel
Determine the project name:
- If the user specified a name, use it (lowercase, hyphens only)
- Otherwise, generate from the notebook filename: e.g.,
sales-analysis.ipynbbecomesjupyter-sales-analysis - Always prefix with
jupyter-to avoid collisions with other projects
Deploy using the MCP tool:
mcp__vercel__vercel_deploy({
name: "<project-name>",
files: [
{ file: "index.html", data: "<the full HTML content>" }
]
})
Step 7: Return Result
Respond to the user with:
- The deployed URL
- A brief summary of what the notebook contains
- Key outputs or findings (if applicable)
Example:
Notebook deployed!
URL: https://jupyter-sales-analysis-xxx.vercel.app
Created a sales analysis notebook with:
- Monthly revenue trends (line chart)
- Top 10 products by sales (bar chart)
- Summary statistics table
The notebook used sample data with 1,000 transactions.
Error Handling
- Notebook creation fails: Report the NotebookEdit error to the user
- Execution fails after retries: Share the error message and the notebook file (user can debug)
- nbconvert fails: Try without
--no-input; if still failing, report error - Vercel deploy fails: Check if HTML is too large; report error with details
- Missing library: Do NOT try to pip install (will fail as non-root). Tell the user which libraries are available and suggest alternatives
Gives 0 of the 12 instructions most ship operate skills give
Counted across 779 of the 1,178 authors here whose files we hold, read 2026-08-06
- document a rollback plan before deploymentin 40 of 779, across 21 files
- create an annotated git tagin 21 of 779, across 20 files
- Run the test suitein 20 of 779
- update the changelogin 20 of 779, across 18 files
- verify deployment health after launchin 19 of 779, across 10 files
- clean up feature flags after full rolloutin 18 of 779, across 10 files
- verify the working tree is cleanin 18 of 779
- test both feature flag statesin 17 of 779, across 9 files
- Make database migrations backward-compatiblein 16 of 779, across 8 files
- set up error monitoring before launchin 15 of 779, across 7 files
- monitor metrics at each rollout stagein 14 of 779, across 5 files
- create a github releasein 14 of 779
Said here and by no other author read
- use notebookedit to create the notebook
- use a descriptive slug for the filename
- add a markdown title in the first cell
- group all imports in one cell
- set matplotlib font family to noto sans cjk jp
- always call plt.show for visualizations
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.