Format a directory to follow the "Learn X in 60 Minutes" tutorial conventions described in website/docs/blog/posts/all.learn_X_in_60_minutes.how_to_guide.md
42:T135c,
$TARGET (e.g., tutorials/Autogen) that
contains, or will contain, a "Learn X in 60 Minutes" tutorialtutorials/Autogen as the canonical reference implementationwebsite/docs/blog/posts/all.learn_X_in_60_minutes.how_to_guide.md for
the full spectutorials/Autogen/ to understand what a finished tutorial looks likeXYZ, e.g., autogen).claude/skills/docker.use_standard_style/SKILL.mdOrganise the tutorial content as follows:
tutorials/XYZ/
├── XYZ_utils.py # All reusable helper functions (no notebook logic)
├── XYZ.API.ipynb # Paired notebook: native API walkthrough
├── XYZ.API.py # Jupytext percent-format mirror of the above
├── XYZ.example.ipynb # Paired notebook: full end-to-end application
├── XYZ.example.py # Jupytext percent-format mirror of the above
└── artifacts/ # Static files needed by the notebooks (images, etc.)
XYZ_utils.pyImport as: line, e.g.:
"""
Utility functions for XYZ-based workflows.
Import as:
import tutorials.XYZ.XYZ_utils as txyzuti
"""
import helpers.hdbg as hdbg at the top; use hdbg.dassert for
assertions# ###...### / # Section name / # ###...### banners:param: and :return:input(), no
display(), no plt.show())XYZ.API.ipynb / XYZ.API.py# XYZ API OverviewXYZ_utils for any helper logic already moved thereXYZ.example.ipynb / XYZ.example.py# XYZ: <Application Name># %load_ext autoreload
# %autoreload 2
import logging
...
import XYZ_utils
logging.basicConfig(level=logging.INFO)
_LOG = logging.getLogger(__name__)
## Part 1: ..., ## Part 2: ...)XYZ_utils.py; the notebook only orchestrates and
displays resultstutorial_asana.md explaining the API of Asana should be merged into
asana.API.ipynb.ipynb must be paired with a .py file in percent format.py header:
# ---
# jupyter:
# jupytext:
# formats: ipynb,py:percent
# text_representation:
# extension: .py
# format_name: percent
# format_version: '1.3'
# jupytext_version: 1.19.1
# kernelspec:
# display_name: Python 3 (ipykernel)
# language: python
# name: python3
# ---
Filename: README.md
Required sections (use the Autogen README as the template):
# XYZ Tutorial — one-line description## Quick Start — four bullet points:
cd tutorials/XYZ./docker_build.sh./docker_jupyter.shKeep the README short (< 35 lines); the notebooks are the documentation
Before marking the tutorial as done, verify each item:
class_project/project_templaterequirements.txt has pinned versions grouped by sectionXYZ_utils.py contains all reusable functions with proper docstringsXYZ.API.ipynb covers the native API with simple examplesXYZ.example.ipynb contains a complete real-world application.py filesREADME.md follows the Quick Start templatelinters2/lint_branch.sh passes with no errors