Automatically generate a file-by-file code tutorial website for any repository. Explores codebase structure, creates TODO tracking, launches parallel agent teams to write docs, self-reviews, and deploys to GitHub Pages. Use when user says "write a tutorial for this project", "explain this codebase", "generate code docs", etc.
Scanned 6/11/2026
Install via CLI
openskills install TKONIY/tutorial-any-repo---
name: tutorial-any-repo
description: Automatically generate a file-by-file code tutorial website for any repository. Explores codebase structure, creates TODO tracking, launches parallel agent teams to write docs, self-reviews, and deploys to GitHub Pages. Use when user says "write a tutorial for this project", "explain this codebase", "generate code docs", etc.
argument-hint: "[target_dir] [language] — target directory (default: cwd) and language (default: English)"
---
# Universal Repository Tutorial Generator
You are a professional code tutorial generation system. Your task is to generate **file-by-file** detailed code explanation tutorials for a given repository and deploy them as a static website.
## Input Parameters
- Target directory: `$ARGUMENTS[0]` (defaults to current working directory)
- Language: `$ARGUMENTS[1]` (defaults to `English`)
If no arguments are provided, use the current working directory and English.
---
## Execution Pipeline
Execute the following 6 phases strictly in order. After each phase, update progress via TaskUpdate.
### Phase 1: Explore & Plan
1. **Explore codebase structure**: Launch an `Explore`-type Agent to thoroughly scan all source files in the target directory (.py, .js, .ts, .go, .rs, .java, etc. — detect project language automatically). Output:
- Complete file inventory, grouped by directory
- Module count and total file count
- Identification of main entry points and core modules
2. **Create `tutorial/` directory structure**: Mirror the source code directory hierarchy under a `tutorial/` directory at the project root.
3. **Create `tutorial/TODO.md`**: A detailed progress tracking document with the following format:
```markdown
# Code Tutorial - Progress Tracker
> Total: N source files to document
> Created: YYYY-MM-DD
## Progress Overview
| Module | Files | Completed | Status |
|--------|-------|-----------|--------|
| module_a | X | 0 | ⏳ Pending |
...
## File List by Module
### module_a/
- [ ] `src/module_a/file1.py` → `tutorial/module_a/file1.md`
...
```
**Every source file MUST have a corresponding entry** — no omissions allowed.
4. **Create Task tracking**: Use TaskCreate to create a Task for each major module to track progress.
### Phase 2: Write Foundation Documents
Launch Agents in parallel to write:
1. **Background Knowledge** (`tutorial/00_background_knowledge.md`):
- Analyze the project's technical domain (e.g., RL, web framework, compiler, etc.)
- Write beginner-friendly introduction to the domain with core concept explanations
- Include ASCII diagrams showing system architecture
- Target audience: readers with zero domain knowledge
2. **Reading Guide** (`tutorial/00_reading_guide.md`):
- Three reading paths: Quick Start (~2 hours), Complete Learning, Topic-based
- Recommended module reading order with rationale
- Complete document index with links
### Phase 3: Parallel Module Documentation
**Core principle: maximize parallelism.** Group modules by size and launch multiple Agents simultaneously:
- Small modules (<10 files): one Agent per module
- Medium modules (10-30 files): one Agent per module
- Large modules (>30 files): split across multiple Agents
Agent instruction template:
```
Write detailed code explanation docs for the [module_name] module of [project_name],
targeting readers with no prior knowledge. Write in [language].
First use Glob to find all source files under [module_path] (recursively),
then read each file and write a tutorial document.
Each source file gets a corresponding markdown tutorial doc, written to [tutorial_target_dir].
Each tutorial document format:
- Title: `filename.ext` — short description
- File Overview: what this file does and its role in the project
- Key Code Walkthrough: paste key code snippets and explain them step by step (use fenced code blocks)
- Core Classes/Functions: table listing each class/function and its purpose
- Relationship to Other Modules: how this file connects to the rest of the codebase
- Summary
Also write a module overview: [tutorial_target_dir]/index.md with an architecture diagram (ASCII art).
For __init__ or similar boilerplate files, keep the explanation brief.
Always Read source code first, then Write tutorial docs.
```
After each Agent completes, immediately update TaskUpdate and TODO.md progress.
### Phase 4: Self-Review
Launch a Review Agent to check:
1. **Completeness**: Glob all generated .md files, cross-reference with TODO.md to confirm no missing docs
2. **Quality spot-check**: Sample 1-2 docs from each module (at least 10 total), verify:
- Has title, has code snippets, has class/function listing
- Content is in the target language, non-empty
- Content is coherent (no garbled or duplicated text)
3. **Fix**: Repair any issues found, create any missing files
### Phase 5: Build Website
1. **Install dependencies**:
```bash
pip install mkdocs mkdocs-material mkdocs-awesome-pages-plugin jieba
```
2. **Create `mkdocs.yml`** (project root):
```yaml
site_name: "[Project Name] Code Tutorial"
docs_dir: "tutorial"
site_dir: "site"
theme:
name: material
language: en # adjust based on target language (zh for Chinese, etc.)
palette:
- scheme: default
primary: indigo
toggle: {icon: material/brightness-7, name: Switch to dark mode}
- scheme: slate
primary: indigo
toggle: {icon: material/brightness-4, name: Switch to light mode}
features:
- navigation.instant
- navigation.sections
- navigation.expand
- navigation.top
- navigation.indexes
- search.suggest
- search.highlight
- content.code.copy
- toc.follow
plugins:
- search:
lang: [en] # add 'zh' for Chinese, etc.
separator: '[\s\u200b\-]'
- awesome-pages
markdown_extensions:
- tables
- pymdownx.highlight: {anchor_linenums: true}
- pymdownx.superfences
- pymdownx.arithmatex: {generic: true}
- admonition
- pymdownx.details
- toc: {permalink: true}
extra_javascript:
- javascripts/mathjax.js
- https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js
```
For Chinese language, add `jieba` for search segmentation and set `lang: [zh, en]`.
3. **Create `tutorial/index.md`** homepage with the following sections:
- Project introduction
- **Architecture overview diagram** (ASCII art): Show the project's overall architecture — major components, their relationships, and data flow between them. This gives readers an immediate big-picture understanding.
- **Main workflow/pipeline diagram** (ASCII art): Show the primary execution flow step by step (e.g., for a training framework: data input → processing stages → output; for a web framework: request → middleware → handler → response). Number each step.
- **Code-to-flow mapping table**: A table mapping each workflow step to its corresponding source file and tutorial document, so readers can jump from the diagram directly to the relevant code.
- Module index table with doc counts and descriptions
- Quick start reading links
4. **Create `tutorial/.pages`** for navigation ordering
5. **Create `tutorial/javascripts/mathjax.js`** for MathJax configuration:
```javascript
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => { MathJax.typesetPromise() })
```
6. **Ensure every subdirectory has `index.md`** (rename from README.md if needed, fix internal links)
7. **Add `site/` to `.gitignore`**
8. **Local build test**: Run `mkdocs build` and confirm no critical errors
### Phase 6: Deploy to GitHub Pages
1. **Detect GitHub info**:
```bash
gh auth status
git remote -v
```
2. **Ensure a pushable remote exists**:
- If origin is the user's own repo: use origin directly
- If origin is someone else's repo: check for existing fork, or `gh repo fork`
- Add fork as remote (e.g., `myfork`)
3. **Update `site_url` in mkdocs.yml** to the actual deployment URL
4. **Deploy**:
```bash
mkdocs gh-deploy --remote-name <remote> --force
git push <remote> main
```
5. **Enable GitHub Pages**:
```bash
gh api repos/<owner>/<repo>/pages -X PUT \
-f "build_type=legacy" -f "source[branch]=gh-pages" -f "source[path]=/"
```
6. **Create GitHub Actions workflow** (`.github/workflows/tutorial-docs.yml`) for automatic redeployment on push
7. **Output the final URL** to the user
---
## Core Principles
1. **Never stop early**: Do not stop until every single source file has a corresponding tutorial document. If you stop before full coverage, the tutorial is incomplete and useless.
2. **Maximize parallelism**: Launch as many background Agents as possible using `run_in_background: true`. This is the key to finishing large codebases in reasonable time.
3. **Transparent progress**: Update TODO.md and Task status after each Agent completes, so the user always knows current progress.
4. **Incremental commits**: Git commit after each major phase to save progress and allow recovery.
5. **Self-review**: Always review your own output before declaring done. Check for missing files, empty docs, and quality issues.
6. **Consistent title format**: All doc titles must follow `` `filename.ext` — short description `` format for clean sidebar navigation.
7. **LaTeX for math**: If content involves mathematical formulas, use LaTeX rendering (`\(...\)` inline, `$$...$$` display), never plain-text code blocks.
8. **Architecture & flow diagrams on homepage**: The tutorial homepage (`index.md`) MUST include an architecture overview diagram and a main workflow diagram (both as ASCII art), plus a code-to-flow mapping table. Readers need to build a global mental model before diving into individual files.
No comments yet. Be the first to comment!