Claude Code Tutorial - Learn Claude Code by doing
npx claudepluginhub safurrier/claude-code-tutorialInteractive tutorial for learning Claude Code - run /tutorial to start
Share bugs, ideas, or general feedback.
Learn Claude Code by doing. This plugin provides interactive tutorials that teach you Claude Code through hands-on exercises with your own code.
1. Install Claude Code (if you haven't already):
2. Install the tutorial plugin:
curl -fsSL https://raw.githubusercontent.com/safurrier/claude-code-tutorial/main/install.sh | bash
3. Start the tutorial:
claude
/claude-code-tutorial:tutorial
That's it!
| Command | Description |
|---|---|
/claude-code-tutorial:tutorial | Main tutorial - learn Claude Code basics with hands-on exercises |
/claude-code-tutorial:tutorial-advanced | Advanced tutorial - learn to extend Claude Code |
/claude-code-tutorial:cheat-sheet-basic | Quick reference for modes, workflow, and key commands |
/claude-code-tutorial:cheat-sheet-advanced | Quick reference for extending Claude Code |
Note: The full command format is plugin-name:command. You can also try just /tutorial if there's no naming conflict with other plugins.
Just type /claude-code-tutorial:tutorial and Claude will:
.claude/tutorial-progress.md so you can resume anytime/claude-code-tutorial:tutorial)Learn how to USE Claude Code:
/claude-code-tutorial:tutorial-advanced)Learn how to EXTEND Claude Code:
Plan → Review → Test First → Implement Step by Step → Verify → Commit
With AI coding, most time goes to THINKING, RESEARCHING, PLANNING, and REVIEWING - not writing. The writing is fast; front-load your thinking.
| Mode | File Edits | Shell Commands | Use When |
|---|---|---|---|
| Default | Ask | Ask | Learning, sensitive code |
| Accept Edits | Auto | Ask | Active development |
| Plan | Blocked | Blocked | Exploring, designing |
| Agent (YOLO)* | Auto | Auto | Parallel async work |
*Agent mode requires: claude --dangerously-skip-permissions on startup
| You have... | Create a... |
|---|---|
| Repeated workflow you run often | Slash command (/commit, /test) |
| Complex multi-step task | Agent (structured output, autonomous) |
| Domain knowledge Claude doesn't have | Skill (design system, internal APIs) |
| Something to auto-run after edits | Hook (format on save, lint) |
| File-specific guidelines | Rules (security rules for auth code) |
| Need live external data | MCP (live docs, browser automation) |
claude-code-tutorial/
├── plugins/claude-code-tutorial/
│ ├── .claude-plugin/
│ │ └── plugin.json # Plugin metadata
│ ├── commands/
│ │ ├── tutorial.md # Main tutorial entry point
│ │ ├── tutorial-advanced.md # Extending Claude Code
│ │ ├── cheat-sheet-basic.md # Quick reference - basics
│ │ └── cheat-sheet-advanced.md
│ ├── skills/
│ │ └── create-plugin/ # Plugin creation skill
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── create-plugin.py
│ └── .mcp.json # MCP config (Context7, Playwright)
├── CHANGELOG.md # Version history
├── QUICKSTART.md
└── README.md
Ask Claude to create a plugin for you:
> Create a plugin called my-helper for code review
Claude will use the create-plugin skill to scaffold the directory structure.
Or use the script directly:
# Interactive mode
python plugins/claude-code-tutorial/skills/create-plugin/scripts/create-plugin.py
# Or with arguments
python plugins/claude-code-tutorial/skills/create-plugin/scripts/create-plugin.py my-plugin "My plugin description" --author myusername --examples
Or manually:
# Create directory structure
mkdir -p my-plugin/.claude-plugin
mkdir -p my-plugin/commands