docs: add research domains and resource registry

- add local external resources registry
- add research domain contract and per-repository research domains
- add raw fact snapshot governance and validation scripts

Validation:
- make test
- git diff --check HEAD~1..HEAD

Note:
- welcome workflow failed because its action input names are stale; core content CI passed.
This commit is contained in:
tradecatlabs
2026-07-03 08:20:22 +08:00
committed by GitHub
parent 2253a46935
commit a8099f52fe
254 changed files with 28589 additions and 165 deletions
@@ -0,0 +1,26 @@
# datawhalechina/easy-vibe 研究域 Agent 指南
本目录维护 `datawhalechina/easy-vibe` 的独立研究域。
## 目录职责
```text
datawhalechina-easy-vibe/
├── README.md # 研究域入口和判断层
├── AGENTS.md # 本目录维护规则
├── domain.yml # 事实摘要层:仓库元数据、研究角色、来源证据
├── analysis.md # L1 结构化研究结论、可借鉴点、风险和下一轮任务
├── deep-dive.md # L2 源码/结构深度研究、关键机制和可迁移模式
└── raw/ # 原始事实层:拉取到本地的一手材料快照
```
## 维护规则
- 本目录只研究 `datawhalechina/easy-vibe`,不要混入其他仓库的横向比较正文。
- 动态事实必须写入 `domain.yml.github_observed`,并更新 `observed_at`
- `raw/` 保存原始事实层,必须通过 `python3 scripts/fetch-research-raw.py` 刷新。
- 不手工改写 `raw/*.raw.*` 文件;稳定事实摘要再同步到 `domain.yml`
- README 只写判断、定位、使用方式和后续观察点,不堆外部 README 全文。
- `analysis.md` 写 L1 结构化理解;`deep-dive.md` 写 L2 源码证据、关键机制和可迁移模式。
- 如果需要横向比较,在 `docs/research/README.md` 或新的对比文档中处理,不把本目录重新变成聚合域。
- 修改后运行 `make sync-doc-toc``make test`
@@ -0,0 +1,58 @@
# datawhalechina/easy-vibe 研究域
## 字多不看
- 本目录研究 `datawhalechina/easy-vibe` 这个外部仓库。
- 当前优先级:P2;研究角色:中文分阶段交互式课程。
- GitHub 动态事实放在 `domain.yml`,观测日期为 2026-07-03。
## 快速导航
| 文档 | 定位 |
|:---|:---|
| [domain.yml](domain.yml) | 仓库事实快照、研究方向、优先级和来源证据。 |
| [analysis.md](analysis.md) | 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。 |
| [deep-dive.md](deep-dive.md) | L2 源码/结构深度研究、关键机制和可迁移模式。 |
| [AGENTS.md](AGENTS.md) | 本研究域维护规则。 |
<details>
<summary><strong>完整细粒度目录(点击展开/收起)</strong></summary>
### 细粒度目录
- [domain.yml](domain.yml) - 仓库事实快照、研究方向、优先级和来源证据。
- [analysis.md](analysis.md) - 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。
- [deep-dive.md](deep-dive.md) - L2 源码/结构深度研究、关键机制和可迁移模式。
- [AGENTS.md](AGENTS.md) - 本研究域维护规则。
</details>
## 使用方式
- 先读本 README 的判断,再读 `analysis.md``deep-dive.md` 的研究结论,最后读 `domain.yml`
- 需要引用 stars、forks、release、归档状态时,先重新核验 GitHub。
- 如果形成稳定方法论,再迁入 concepts、references、workflow 或 skills。
## 正文
### 研究定位
`datawhalechina/easy-vibe` 的当前研究定位是:中文分阶段交互式课程。
### 当前判断
适合研究学习地图、交互式教程和现代前端课程包装。
### 观察字段
- GitHub URLhttps://github.com/datawhalechina/easy-vibe
- 当前研究方向:`cn-onboarding`
- 当前优先级:P2
- 当前归档状态:`false`
- 主要语言:`JavaScript`
### 后续观察
- 是否有稳定文档结构、命令入口和可复用工作流。
- 是否能反哺本仓库的 concepts、references、workflow 或 skills。
- 是否存在许可证、归档状态、维护活跃度或生态迁移风险。
@@ -0,0 +1,44 @@
# datawhalechina/easy-vibe 研究分析
## 本轮结论
- Easy Vibe 是中文 Vibe Coding 课程型站点,重点在学习路径、课程包装和面向不同目标的路线分流。
- 它比单纯 awesome list 更接近产品化教程,有 `docs/``config/``scripts/``llms.txt``AGENTS.md``CLAUDE.md` 等 AI/文档工程资产。
- 本仓应重点吸收它的学习路径分层、课程入口设计、Agent 文档入口和多语言/站点化组织方式。
## 本地证据
- 研究对象:`datawhalechina/easy-vibe`
- 当前研究角色:中文分阶段交互式课程
- 本轮成熟度:L1 初步理解
- 原始仓库:`raw/repository/`
- 原始来源清单:`raw/sources.yml`
- 事实摘要:`domain.yml`
## 结构观察
- 根目录包含 `docs/``docs-readme/``config/``scripts/``assets/``Dockerfile``package.json`
- README 将用户分成 fast first win、idea to prototype、full-stack products、AI-Native advanced workflow、reference material 等学习路径。
- 存在 `AGENTS.md``CLAUDE.md``llms.txt`,说明它已经考虑 AI Agent 可读入口。
## 可借鉴点
- 学习路线不应只按技术栈组织,也应按用户目标和阶段组织。
- 课程站点可以同时服务人类读者和 AI 助手,关键是保留 `llms.txt` 与目录规则。
- 适合对照本仓 getting-started 和 docs/README 的新手路径设计。
## 风险和边界
- 课程内容规模大且多语言/多目录,直接迁移会增加维护成本。
- 它偏学习体验,不等同于企业级工程治理模板。
- 站点生成和课程结构需要拆开研究,不能混成一个结论。
## 下一轮研究任务
- 读取 `docs/` 的学习路径结构,抽象为本仓学习地图改进建议。
- 研究 `AGENTS.md``CLAUDE.md``llms.txt` 如何服务 AI 读取。
## 沉淀判断
- 本轮只完成 L1 理解,不直接迁入 concepts、references、workflow 或 skills。
- 只有经过 L2 源码阅读、实验验证或交叉对照后的结论,才进入稳定层。
@@ -0,0 +1,86 @@
# datawhalechina/easy-vibe 深度研究
## 研究级别
- 当前级别:L2 源码/结构深度研究。
- 研究对象:`datawhalechina/easy-vibe`
- 证据来源:本目录 `raw/` 下的 GitHub 元数据、README 快照和本地仓库工作树。
- 观察日期:2026-07-03。
## L2 结论
`datawhalechina/easy-vibe` 是课程站点化最强的中文 Vibe Coding 对标对象。它不是简单 Markdown
教程,而是用 VitePress、多语言目录、交互式组件、站点部署脚本、`llms.txt``AGENTS.md`
`CLAUDE.md` 把课程包装成面向人类和 AI 的学习产品。
对本仓最有价值的点不是复制它的站点复杂度,而是学习它如何把“零基础学习路径”拆成用户目标、
学习阶段、视觉演示、交互组件和 AI 可读入口。
## 源码证据
- `raw/repository/README.md`:主叙事入口,包含学习路径、多语言入口、在线阅读和本地运行说明。
- `raw/repository/docs/`VitePress 文档主体。
- `raw/repository/docs-readme/`:多语言 README 入口。
- `raw/repository/docs/zh-cn/index.md`:中文内容入口。
- `raw/repository/docs/en/index.md`:英文内容入口。
- `raw/repository/docs/public/llms.txt`:站点级 AI 读取入口。
- `raw/repository/llms.txt`:仓库级 AI 读取入口。
- `raw/repository/AGENTS.md`Agent 操作入口。
- `raw/repository/CLAUDE.md`Claude 入口。
- `raw/repository/docs/.vitepress/config.mjs`:站点配置、多语言和部署环境逻辑。
- `raw/repository/scripts/build-locales.mjs`:多语言构建脚本。
- `raw/repository/scripts/generate-sitemap.mjs`:站点 sitemap 生成脚本。
- `raw/repository/package.json`VitePress、Vue、Element Plus、Mermaid、Reveal.js 等站点依赖和命令。
## 关键机制
### 学习路径按用户目标组织
Easy Vibe 的 README 把读者导向不同路径,而不是只按技术章节线性排列。它面向的是“我是谁、
我想做什么、应该从哪开始”的 onboarding 问题。这比纯目录更适合零基础和跨背景读者。
### 课程站点和 AI 入口并存
仓库同时保留 VitePress 站点、`llms.txt``AGENTS.md``CLAUDE.md`。这说明成熟教程需要同时
服务三类读取者:浏览器用户、搜索引擎/AI 引用系统、AI Agent。
### 多语言是产品能力,不是翻译附件
`docs-readme/`、多语言目录和 `config.mjs` 中的 locale 配置说明,多语言不是附属文件,而是站点
路由、构建、SEO 和内容维护的一部分。多语言会显著提升触达,但也显著提高维护成本。
### 交互式解释降低新手门槛
assets 中的 IDE、RAG、terminal、diffusion 等视觉材料说明,零基础教程不能只靠概念解释。
可视化和交互式组件能把抽象工程概念变成可感知流程。
## 可迁移模式
- 本仓 getting-started 应按“用户身份 + 目标产出 + 当前阶段”重组入口,而不只按知识分类。
- 对关键教程增加“你将做出什么”“需要什么前置条件”“卡住怎么验证”。
- `llms.txt``assets/ai-citation/llms-full.txt` 应继续作为 AI 入口维护,而不是事后补充。
- 如果未来站点化,应先保留轻量结构,避免过早引入多语言构建复杂度。
- 对 RAG、terminal、Git、IDE、agent 等抽象主题增加可视化解释或最小交互示例。
## 对本仓的影响
本仓当前优势是治理、研究域、资源和质量门禁;Easy Vibe 的优势是课程产品化和新手体验。
两者结合后,本仓可形成两层入口:
- `getting-started/`:面向新手的目标导向学习路径。
- `references/``workflow/``research/`:面向进阶用户和维护者的工程治理层。
关键取舍是:吸收学习路径和 AI 入口设计,不复制完整多语言站点复杂度。
## 风险和待验证项
- 多语言和站点组件会显著增加维护成本,本仓不能为了展示效果牺牲文档治理稳定性。
- 本轮没有运行 Easy Vibe 的构建、测试和多语言脚本。
- 站点视觉资产丰富,但不等同于工程治理成熟度。
## 下一步 L3 验证任务
- 对照 Easy Vibe 的学习路径,重审本仓 `docs/getting-started/` 是否按用户目标组织。
- 为本仓补一个“零基础到第一个可部署产物”的路径表。
- 抽取 AI 入口设计经验,更新 `llms.txt` / `llms-full.txt` 维护规则。
- 评估是否需要为关键概念增加图片、流程图或交互式示例。
@@ -0,0 +1,52 @@
version: 1
repo:
name: datawhalechina/easy-vibe
source_name: datawhalechina/easy-vibe
url: https://github.com/datawhalechina/easy-vibe
research:
domain_id: datawhalechina-easy-vibe
domain_name: datawhalechina/easy-vibe 研究域
primary_direction: cn-onboarding
role: 中文分阶段交互式课程
priority: 2
why_study: 适合研究学习地图、交互式教程和现代前端课程包装。
github_observed:
observed_at: '2026-07-03'
source: gh repo view
stars: 17686
forks: 1673
archived: false
language: JavaScript
license: null
default_branch: main
pushed_at: '2026-06-17T01:53:13Z'
updated_at: '2026-07-02T21:29:04Z'
latest_release: null
homepage: https://datawhalechina.github.io/easy-vibe/
topics:
- ai
- course
- vibe-coding
- coding
- genai
- low-code
- no-code
- programming
- tutorial
- vibecoding
- vscode
- agent
- gemini
- gpt
- llm
- nextjs
- openai
- workflow
- mcp
- deepseek
source_evidence:
file: ChatGPT-中文Vibe Coding仓库 (2).md
line: 26
maintenance:
fact_policy: GitHub 动态字段只代表 observed_at 当日快照,更新结论前必须重新核验。
split_policy: 本目录已经是一等研究域;更深分析放入本目录新增文档。
@@ -0,0 +1,12 @@
# raw/ Agent 指南
本目录是 `datawhalechina/easy-vibe` 的原始事实层。
## 维护规则
- 只保存从研究对象拉取的一手材料,不写分析判断。
- `repository/` 是本地 Git 工作树,刷新时由脚本 clone 或 fast-forward pull。
- 不手工改写 `*.raw.*` 文件内容;需要刷新时运行 `python3 scripts/fetch-research-raw.py`
- `sources.yml` 必须记录拉取时间、来源命令和每个文件的状态。
- 外部 README 原文必须保存为 `.txt`,避免本仓库 Markdown 链接检查误判。
- 分析、判断、采用建议和沉淀路径写回上一级 `README.md``analysis.md``decisions.md`
@@ -0,0 +1,16 @@
# raw 事实层
本目录保存 `datawhalechina/easy-vibe` 的本地原始材料快照。
这里不写分析结论,只保存可复查的一手资料:
- `sources.yml`:来源清单、拉取时间、命令和文件状态。
- `repository/`Git 仓库工作树;本目录由 `.gitignore` 忽略,只作为本地研究材料。
- `github-repo.raw.json`GitHub 仓库元数据。
- `github-readme.raw.md.txt`GitHub README 原文快照。
- `github-license.raw.txt`GitHub license 原文快照;仓库无 license 时可能不存在。
- `github-root-contents.raw.json`:默认分支根目录内容快照。
- `github-languages.raw.json`GitHub language 统计快照。
- `github-latest-release.raw.json`:最新 release 快照;无 release 时可能不存在。
`repository/` 是外部源码快照,不参与本仓库 Markdown、链接、README/AGENTS 覆盖检查。原始 README 使用 `.txt` 后缀保存,避免其中的外部相对链接被本仓库 Markdown 链接检查误判。
@@ -0,0 +1,5 @@
{
"JavaScript": 17384,
"Dockerfile": 774,
"Shell": 502
}
@@ -0,0 +1,448 @@
<!-- trigger vercel build -->
<div align="center">
<img src="assets/easy-vibe-logo-hd.svg" alt="Easy-Vibe Logo" width="300">
<img src="assets/banner.png" alt="Easy-Vibe Banner" width="100%">
<p align="center" style="font-size: 1.2em; color: #666; margin: 20px 0;">
Jump right in and vibe together — if you can talk, you can build apps.<br>
<span style="font-size: 0.9em; color: #888;">直接上手,一起 vibe!会说话就会做应用。</span>
</p>
<a href="https://trendshift.io/repositories/22079" target="_blank"><img src="https://trendshift.io/api/badge/repositories/22079" alt="datawhalechina/easy-vibe | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<p align="center" style="font-size: 1.05em; color: #666; margin: 16px 0;">
你好 · Hello · 哈囉 · こんにちは · 안녕하세요 · Hola · Bonjour · Hallo · مرحبا · Xin chào<br>
Our tutorial supports 10 languages. Let's code together!<br>
<span style="font-size: 0.9em; color: #888;">我们的教程支持 10 种语言,欢迎世界各地的朋友一起 coding</span>
</p>
<p align="center">
🚀 <a href="https://datawhalechina.github.io/easy-vibe/welcome.html">Start Exploring</a> · ✨ <a href="https://datawhalechina.github.io/easy-vibe/en/appendix/">Interactive Tutorial</a> · 🦞 <a href="https://github.com/datawhalechina/hello-claw">Learn OpenClaw</a> · 📖 <a href="#table-of-contents">Table of Contents</a><br>
<span style="font-size: 0.85em; color: #888;">🚀 <a href="https://datawhalechina.github.io/easy-vibe/welcome.html">开始体验</a> · ✨ <a href="https://datawhalechina.github.io/easy-vibe/zh-cn/appendix/">交互式教程</a> · 🦞 <a href="https://github.com/datawhalechina/hello-claw">学习 OpenClaw</a> · 📖 <a href="#table-of-contents">查看目录</a></span>
</p>
<p align="center">
<a href="https://datawhalechina.github.io/easy-vibe/welcome.html">Read Online</a> ·
<a href="#-content-navigation">Learning Map</a><br>
<span style="font-size: 0.85em; color: #888;">
<a href="https://datawhalechina.github.io/easy-vibe/welcome.html">开始阅读</a> ·
<a href="#-content-navigation">学习地图</a>
</span>
</p>
<p align="center">
<a href="https://github.com/datawhalechina/easy-vibe/stargazers" target="_blank">
<img src="https://img.shields.io/github/stars/datawhalechina/easy-vibe?color=660874&style=for-the-badge&logo=star&logoColor=white&labelColor=1a1a2e" alt="Stars"></a>
<a href="https://github.com/datawhalechina/easy-vibe/network/members" target="_blank">
<img src="https://img.shields.io/github/forks/datawhalechina/easy-vibe?color=660874&style=for-the-badge&logo=git-fork&logoColor=white&labelColor=1a1a2e" alt="Forks"></a>
<a href="LICENSE" target="_blank">
<img src="https://img.shields.io/badge/License-CC_BY_NC_SA_4.0-4ecdc4?style=for-the-badge&logo=creative-commons&logoColor=white&labelColor=1a1a2e" alt="License"></a>
</p>
<p align="center">
<a href="README.md"><img alt="English" src="https://img.shields.io/badge/English-d9d9d9"></a>
<a href="docs-readme/zh-CN/README.md"><img alt="简体中文" src="https://img.shields.io/badge/简体中文-d9d9d9"></a>
<a href="docs-readme/zh-TW/README.md"><img alt="繁體中文" src="https://img.shields.io/badge/繁體中文-d9d9d9"></a>
<a href="docs-readme/ja-JP/README.md"><img alt="日本語" src="https://img.shields.io/badge/日本語-d9d9d9"></a>
<a href="docs-readme/es-ES/README.md"><img alt="Español" src="https://img.shields.io/badge/Español-d9d9d9"></a>
<a href="docs-readme/fr-FR/README.md"><img alt="Français" src="https://img.shields.io/badge/Français-d9d9d9"></a>
<a href="docs-readme/ko-KR/README.md"><img alt="한국어" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
<a href="docs-readme/ar-SA/README.md"><img alt="العربية" src="https://img.shields.io/badge/العربية-d9d9d9"></a>
<a href="docs-readme/vi-VN/README.md"><img alt="Tiếng_Việt" src="https://img.shields.io/badge/Tiếng_Việt-d9d9d9"></a>
<a href="docs-readme/de-DE/README.md"><img alt="Deutsch" src="https://img.shields.io/badge/Deutsch-d9d9d9"></a>
</p>
</div>
<table align="center">
<tr>
<td width="50%" valign="top" align="center">
<img src="assets/gif-header.png" width="100%">
<br>
<strong>A beginner-friendly learning map</strong>
<br>
<sub>Clear guidance from zero, so you can stop "learning and forgetting"</sub>
</td>
<td width="50%" valign="top" align="center">
<img src="assets/gif-tutorial.png" width="100%">
<br>
<strong>Step-by-step visual tutorials</strong>
<br>
<sub>Detailed walkthroughs that feel like learning with a private tutor</sub>
</td>
</tr>
<tr>
<td width="50%" valign="top" align="center">
<img src="assets/gif-ide.gif" width="100%">
<br>
<strong>Immersive simulated coding</strong>
<br>
<sub>Virtual mouse guidance helps you quickly learn the core IDE workflow</sub>
</td>
<td width="50%" valign="top" align="center">
<img src="assets/gif-diffusion.gif" width="100%">
<br>
<strong>Visible AI principles</strong>
<br>
<sub>Animated explanations make it easy to see how AI generates images</sub>
</td>
</tr>
<tr>
<td width="50%" valign="top" align="center">
<img src="assets/gif-rag.gif" width="100%">
<br>
<strong>Learn RAG like a game</strong>
<br>
<sub>Interactive components let you click through the full RAG data flow</sub>
</td>
<td width="50%" valign="top" align="center">
<img src="assets/git-terminal.gif" width="100%">
<br>
<strong>Visual terminal concepts</strong>
<br>
<sub>Command-line behavior becomes intuitive when the underlying logic is visualized</sub>
</td>
</tr>
</table>
<div align="center">
<h3>⭐ <a href="https://github.com/datawhalechina/easy-vibe" style="color: #d0cd16ff;">Star the repo here</a> to help accelerate updates ❤️</h3>
</div>
<div align="center" style="margin: 30px 0;">
<a href="https://github.com/datawhalechina/easy-vibe/issues/new?template=story_submission.md">
<img src="https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/assets/stories_image.png" alt="Share Your Vibe Story" width="80%" style="border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
</a>
<p style="margin-top: 15px; font-size: 1.1em; color: #666;">
📝 <strong>Have your own vibe coding story?</strong>
Submit it here and inspire others!
</p>
</div>
## Table of Contents
- [Why Easy-Vibe](#why-easy-vibe)
- [News](#-news)
- [Who This Is For](#who-this-is-for)
- [Your Learning Paths](#your-learning-paths)
- [Study Suggestions](#study-suggestions)
- [I. Beginner Entry](#i-beginner-entry)
- [II. Junior and Mid-Level Developers](#ii-junior-and-mid-level-developers)
- [III. Advanced Developers](#iii-advanced-developers)
- [Appendix Knowledge Base](#-appendix-knowledge-base)
- [How To Learn](#-how-to-learn)
- [Run Locally](#-run-locally)
- [Other Courses](#other-courses)
- [Contributing & Contributors](#-contributing--contributors)
- [LICENSE](#-license)
## Why Easy-Vibe
Want an expense tracker? Say it.
Need a booking system with WeChat login? Say it.
Want a blog with comments? Say it.
In the AI era, programming starts by describing what you want.
Easy-Vibe teaches you how to turn that into a real product.
## 🔥 News
- **[2026-06-17]** 🌍 **Full multilingual coverage complete**: All tutorial content (Stages 1-3) is now available in 10 languages (zh-cn, en, zh-tw, ja-jp, ko-kr, es-es, fr-fr, de-de, ar-sa, vi-vn), covering product prototyping, full-stack development, and cross-platform development.
- **[2026-03-29]** ✨ **Vibe Stories launched and upgraded with real user journeys**: Added a new homepage Vibe Stories section with an interactive carousel and dedicated story pages, then replaced placeholder content with four real user stories featuring a rural primary school teacher, a college student, a high school IT teacher, and a truck driver who built real products with AI. [👉 View the stories](https://datawhalechina.github.io/easy-vibe/zh-cn/vibe-stories/story-1.html)
- **[2026-03-26]** 🚀 **Major Stage 2 practice update**: Completed the SaaS capstone project "[Your First SaaS Full-Stack App: Copywriting Generator Website](https://datawhalechina.github.io/easy-vibe/en/stage-2/assignments/fullstack-app/)" and substantially expanded the "[How to integrate Stripe and payment systems](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/stripe-payment/)" section, plus key content around multi-product UI and WeChat Mini Program backend workflows.
- **[2026-03-25]** 📚 **New appendix: User Research and Requirement Validation**: Added four new articles covering idea sourcing, the Double Diamond model, Jobs to Be Done, and The Mom Test to help beginners discover and validate product ideas. [👉 Read the appendix](https://datawhalechina.github.io/easy-vibe/en/appendix/)
- **[2026-03-25]** 📚 **English documentation fully updated**: Stage 2 (Full-stack Development) and Stage 3 (Advanced Development) are now fully available in English. [👉 Start learning](https://datawhalechina.github.io/easy-vibe/en/stage-2/)
<details>
<summary>Past News</summary>
- **[2026-03-02]** 🦞 **OpenClaw and AI Agent friendly support**: Added `llms.txt` so OpenClaw, Claude, Cursor, Trae, and other AI agents can quickly understand the repository structure and find the right tutorial content.
- **[2026-03-01]** The [Advanced Development section](https://datawhalechina.github.io/easy-vibe/en/stage-3/) has been comprehensively upgraded with deep guides for Claude Code, including MCP, Skills, Agent Teams, and more, along with eight cross-platform project tutorials.
- **[2026-02-25]** Updated the [Appendix Knowledge Base](https://datawhalechina.github.io/easy-vibe/en/appendix/), now covering 9 knowledge areas and 80+ interactive topics.
- **[2026-01-27]** Added Android and iOS app development tutorials.
- **[2026-01-19]** Released interactive demos for Prompt Engineering, AI history, authentication design, Git principles, and more.
- **[2026-01-16]** Reorganized the project structure and formally established a beginner entry path.
- **[2026-01-14]** Completed a large update to the Stage 1 product prototyping docs.
- **[2026-01-13]** Refactored the documentation architecture and fully enabled multi-language support.
- **[2026-01-01]** Released the core learning map for the project.
</details>
## Who This Is For
- **Complete beginners**: Build your first project first, then understand how it works
- **Product managers / founders**: Validate ideas fast and build MVPs at low cost
- **Students**: Develop practical skills for the AI era
- **Junior developers**: Learn the full path from idea to launch
- **Mid-level and senior developers**: Upgrade your AI collaboration workflow for complex projects
## Your Learning Paths
### 🎮 I want a fast first win
**Best for**: Everyone
**What you will learn**: What AI coding actually feels like through a simple, concrete hands-on example
**What you will get**: A clear first impression of vibe coding and how to work with AI by conversation
[Start here](https://datawhalechina.github.io/easy-vibe/en/stage-1/ai-capabilities-through-games/)
### 💡 I want to turn an idea into a product prototype
**Best for**: Beginners / product managers / founders
**What you will learn**: Learning roadmap, AI IDE tools, idea validation, prototyping, AI capability integration, and full demo iteration
**What you will get**: A demoable AI product prototype you can actually show to users or teammates
[Start learning](https://datawhalechina.github.io/easy-vibe/en/stage-1/learning-map/)
### 🚀 I want to build full-stack products end to end
**Best for**: Junior developers / indie hackers / advanced learners
**What you will learn**: Frontend workflows, design-to-code, databases, backend APIs, deployment, billing, and major projects
**What you will get**: The ability to independently ship modern AI-enabled web applications
[Start learning](https://datawhalechina.github.io/easy-vibe/en/stage-2/)
### AI-Native: I want advanced Claude Code and agent workflows
**Best for**: Developers interested in AI-native engineering
**What you will learn**: Claude Code, MCP, Skills, Agent Teams, long-running tasks, Spec Coding, and cross-platform app delivery
**What you will get**: A stronger workflow for complex AI-assisted development and automation
[Go to advanced development](https://datawhalechina.github.io/easy-vibe/en/stage-3/)
### 📚 I want reference material and fundamentals
**Best for**: Everyone
**What you will learn**: Computer fundamentals, frontend/backend basics, infrastructure, AI principles, and engineering practices
**What you will get**: A long-term reference knowledge base covering 9 major knowledge areas
[Browse the knowledge base](https://datawhalechina.github.io/easy-vibe/en/appendix/)
## Study Suggestions
- If you are a beginner, product manager, or founder, start with [Stage 1](https://datawhalechina.github.io/easy-vibe/en/stage-1/learning-map/)
- If you want to move from prototypes to full-stack delivery, start with [Stage 2](https://datawhalechina.github.io/easy-vibe/en/stage-2/)
- If you want advanced Claude Code workflows or cross-platform projects, go to [Stage 3](https://datawhalechina.github.io/easy-vibe/en/stage-3/)
- If you get blocked by concepts or missing background knowledge, use the [Appendix Knowledge Base](https://datawhalechina.github.io/easy-vibe/en/appendix/)
### 📖 Content Navigation
<div align="center">
<img src="assets/readme-image1.png" alt="Learning Map" width="70%" style="border-radius: 10px; box-shadow: 0 8px 20px rgba(45,55,72,0.3); margin: 15px 0;"/>
</div>
### I. Beginner Entry
| Section | Key Content |
| :------ | :---------- |
| [Learning Map](https://datawhalechina.github.io/easy-vibe/en/stage-1/learning-map/) | A guided overview of the full learning journey |
| [AI Era: If You Can Speak, You Can Code](https://datawhalechina.github.io/easy-vibe/en/stage-1/ai-capabilities-through-games/) | Get your first feel for AI coding through examples like Snake |
| [Master AI Programming Tools](https://datawhalechina.github.io/easy-vibe/en/stage-1/introduction-to-ai-ide/) | Learn how AI IDE tools work and build simple local projects with them |
| [Find Great Ideas](https://datawhalechina.github.io/easy-vibe/en/stage-1/finding-great-idea/) | Learn how to discover and validate product ideas worth building |
| [Build Product Prototypes](https://datawhalechina.github.io/easy-vibe/en/stage-1/building-prototype/) | Move from requirements to single-page and multi-page product prototypes |
| [Integrate AI Capabilities](https://datawhalechina.github.io/easy-vibe/en/stage-1/integrating-ai-capabilities/) | Integrate text, image, and video AI features |
| [Complete project practice](https://datawhalechina.github.io/easy-vibe/en/stage-1/complete-project-practice/) | Simulate real scenarios, collect user feedback, and iterate on a full project |
#### Appendix: Product and Business Thinking
| Section | Key Content |
| :------ | :---------- |
| [Product Thinking and Solution Design](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-a-product-thinking/) | Core frameworks for going from zero to one with a product |
| [AI Industry Application Scenarios (B-end)](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-industry-scenarios/) | Understand how AI is applied across industries |
| [AI Consumer Scenarios Inspiration (C-end)](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-c-consumer-scenarios/) | Explore product opportunities in consumer AI |
#### Appendix: User Research and Requirement Validation
| Section | Key Content |
| :------ | :---------- |
| [Where to find ideas: 3 reference sources that work best for beginners](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-idea-sources/) | Build a reliable pipeline for finding concrete product opportunities |
| [Double Diamond: first do the right thing, then do it right](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-double-diamond/) | Use a structured process to move from scattered inspiration to a workable direction |
| [Use Jobs to Be Done to find what users really want done](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-jobs-to-be-done/) | Analyze user goals through real tasks instead of surface-level feature requests |
| [The Mom Test: a user interview method for validating demand](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-mom-test/) | Learn how to ask better questions and avoid false-positive feedback |
#### Appendix: Technical Solutions
| Section | Key Content |
| :------ | :---------- |
| [What to do if you encounter errors](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-b-common-errors/) | Common vibe coding issues and how to troubleshoot them |
| [Comparison of Seven AI Programming Tools](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-articles/example0-1/vibe-coding-tools-snake-game-tutorial) | Compare major AI coding platforms through hands-on testing |
| [Design Websites with Agents](https://datawhalechina.github.io/easy-vibe/en/stage-1/appendix-articles/example0-2/vibe-coding-tools-build-website-with-ai-coding-and-design-agents) | Learn multi-agent collaboration in practice |
### II. Junior and Mid-Level Developers
#### Frontend
| Section | Key Content |
| :------ | :---------- |
| [Frontend 0: Build Your Own Asset-Production Agent with Lovart](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/lovart-assets/) | Use Nanobanana and Lovart to batch-generate visual assets and build a drawing agent with intent recognition |
| [Frontend 1: Figma & MasterGo Basics](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/figma-mastergo/) | Learn the workflow from design drafts to implementation-ready UI thinking |
| [Frontend 2: Build Your First Modern App - UI Design](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/ui-design/) | Learn the UI design foundations behind modern application interfaces |
| [Frontend 3: UI Guidelines and Multi-Product Design](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/multi-product-ui/) | Improve consistency and aesthetics across multiple products with shared UI rules |
| [Frontend 4: Make Interfaces Beautiful with LLMs and Skills](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/llm-skills-beautiful/) | Use prompts and plugins to make AI generate more polished, distinctive interfaces |
| [Frontend 4: Let's Build Hogwarts Portraits](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/hogwarts-portraits/) | Build an interactive AI-image frontend project from scratch |
| [Frontend 6: From Design Prototype to Project Code](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/design-to-code/) | Turn design prototypes into frontend code that can really run in the browser |
| [Frontend 7: Upgrade Your UI with Modern Component Libraries](https://datawhalechina.github.io/easy-vibe/en/stage-2/frontend/modern-component-library/) | Use component libraries to build professional interfaces faster |
#### Backend
| Section | Key Content |
| :------ | :---------- |
| [Backend 1: Learn Git and GitHub](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/git-workflow/) | Master core version control operations and collaboration workflows with Git |
| [Backend 2: From Database to Supabase](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/database-supabase/) | Learn relational database basics and use Supabase as a modern BaaS platform |
| [Backend 3: Backend API Design and Development](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/ai-interface-code/) | Use AI to assist API design, backend code generation, and API documentation |
| [Backend 4: Ship Your Product Prototype](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/zeabur-deployment/) | Quickly deploy full-stack applications to the cloud with Zeabur |
| [Backend 5: From IDEs to CLI AI Coding Tools](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/modern-cli/) | Explore terminal-first AI coding workflows for modern development |
| [Backend 6: Integrate Stripe and Other Billing Systems](https://datawhalechina.github.io/easy-vibe/en/stage-2/backend/stripe-payment/) | Add monetization with payment and billing capabilities |
#### Major Projects
| Section | Key Content |
| :------ | :---------- |
| [Major Project 1: Your First SaaS Full-Stack App - AI Copywriting Website](https://datawhalechina.github.io/easy-vibe/en/stage-2/assignments/fullstack-app/) | Build an AI marketing copy workspace with login, generation, billing, and admin management |
| [Major Project 2: Online Exam and Management System](https://datawhalechina.github.io/easy-vibe/en/stage-2/assignments/modern-frontend-trae/) | Build an online exam system with question generation, test-taking flows, and admin tools |
#### AI Capabilities Appendix
| Section | Key Content |
| :------ | :---------- |
| [AI 1: Dify Basics & Knowledge Base Integration](https://datawhalechina.github.io/easy-vibe/en/stage-2/ai-capabilities/dify-knowledge-base/) | Learn to build AI applications with Dify and integrate private knowledge bases |
### III. Advanced Developers
#### Claude Code Core Skills
| Section | Key Content |
| :------ | :---------- |
| [Getting started with Claude Code](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/basics/) | Installation, setup, fundamentals, and useful commands |
| [Claude Code MCP guide](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/mcp/) | Connect Claude Code to GitHub, databases, APIs, and other services through MCP |
| [Claude Code Skills guide](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/skills/) | Package expertise into reusable skills you can use again and again |
| [How to keep Claude Code working for long-running tasks](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/long-running-tasks/) | Design long-running tasks so coding tools can keep working until the job is done |
| [Claude Agent Teams guide](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/agent-teams/) | Coordinate multiple AI instances like a real development team |
| [Claude Code Superpowers for engineering-grade development](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/superpowers/) | Help AI produce engineering-grade code with TDD and best practices |
| [Claude Code workflow best practices](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/workflow/) | Best practices for refactoring, code review, and daily development |
| [Claude Code remote development on mobile](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/mobile-development/) | Use Claude Code beyond the desktop and build a productive remote workflow on mobile devices |
| [Claude Agent SDK complete guide](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/claude-agent-sdk/) | Build custom agent workflows and integrate Claude into your own tools with the SDK |
| [From vibe coding to spec coding](https://datawhalechina.github.io/easy-vibe/en/stage-3/core-skills/spec-coding/) | Move from ad-hoc prompting to a more structured, specification-driven AI development workflow |
#### Cross-Platform Development
| Section | Key Content |
| :------ | :---------- |
| [How to choose the right platform for your app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/choose-platform/) | Compare app forms and choose the right platform based on users, scenarios, and delivery goals |
| [Build a WeChat Mini Program](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/wechat-miniprogram/) | Understand the ecosystem and ship a frontend mini program from template to launch |
| [Build a WeChat Mini Program with backend](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/wechat-miniprogram-backend/) | Add backend logic and databases to complete the full business loop |
| [Build an Android app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/android-app/) | Learn Android app development with a modern native workflow |
| [Build an iOS app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/ios-app/) | Learn iOS app development and the conventions of the Apple ecosystem |
| [Build a local PWA app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/pwa-local-app/) | Turn a website into a real app with offline support, push, and installation |
| [Build a browser AI assistant extension](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/browser-ai-extension/) | Create a Chrome extension that summarizes any page with either cloud APIs or built-in AI |
| [Build an Electron desktop app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/electron-voice-to-text/) | Build a voice-to-text desktop app with Electron for three platforms |
| [Rapidly build and mint an NFT](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/nft-minting/) | Write a smart contract from scratch, deploy it, and mint your own NFT |
| [Build a VS Code extension](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/vscode-extension/) | Build an AI project assistant with templates, code chat, and multi-file Q&A |
| [Build an industrial-grade Qt desktop app](https://datawhalechina.github.io/easy-vibe/en/stage-3/cross-platform/qt-industrial-hmi/) | Create a real-time Qt HMI system with trends, alerts, and monitoring |
#### AI Capabilities Appendix
| Section | Key Content |
| :------ | :---------- |
| [What is RAG and how does it work](https://datawhalechina.github.io/easy-vibe/en/stage-3/ai-advanced/rag-introduction/) | Build a systematic understanding of RAG principles and common architectures |
| [Intermediate and advanced RAG workflows with LangGraph](https://datawhalechina.github.io/easy-vibe/en/stage-3/ai-advanced/langgraph-advanced-rag/) | Design multi-step workflows and more advanced RAG systems |
### 📚 Appendix Knowledge Base
> Covering **9 major knowledge areas** and **80+ interactive topics**, this appendix uses animation and visual components to help you intuitively understand core concepts from computer fundamentals to the AI frontier.
>
> 👉 [View the full appendix](https://datawhalechina.github.io/easy-vibe/en/appendix/)
### 🎓 Other Courses
- [Hands-on Modern RL](#other-courses)
- [Learn Harness Engineering](#other-courses)
## 🛠️ How To Learn
- Read and practice the sections that match your current level. If you get stuck, feel free to open an issue.
## 💻 Run Locally
### Modern approach
In an AI IDE chat window such as VS Code, Cursor, or Trae, you can simply say:
```text
Please help me run this project locally.
```
### Traditional approach
1. `npm install`
2. `npm run dev`
3. Open `http://localhost:3000` in your browser.
## Other Courses
Our team has also created other courses! Check them out:
[![Hands-on Modern RL](https://img.shields.io/badge/HANDS--ON_MODERN_RL-0052cc?style=for-the-badge)](https://github.com/walkinglabs/hands-on-modern-rl)
**Hands-on Modern RL**: An open-source, hands-on curriculum bridging the gap from basic RL concepts to LLM alignment, RLVR, and advanced Agentic systems.
[![Learn Harness Engineering](https://img.shields.io/badge/LEARN_HARNESS_ENGINEERING-0052cc?style=for-the-badge)](https://github.com/walkinglabs/learn-harness-engineering/tree/main)
**Learn Harness Engineering**: A comprehensive guide to harness engineering.
## 🤝 Contributing & Contributors
- If you find an issue or see something that can be improved, feel free to open an issue. If nobody replies, you can also contact the [Datawhale support team](https://github.com/datawhalechina/DOPMC/blob/main/OP.md).
- If you want to contribute, open a pull request. If nobody replies, you can also contact the [Datawhale support team](https://github.com/datawhalechina/DOPMC/blob/main/OP.md).
- If you want to start a new Datawhale open-source project, please follow the [Datawhale Open Source Project Guide](https://github.com/datawhalechina/DOPMC/blob/main/GUIDE.md).
### 🙏 Contributors
- [Sanbu - Project Lead](https://github.com/sanbuphy) (Datawhale member)
- Fang Ke - Mentor (Datawhale member, Tsinghua University)
- [Yerim Kang](https://github.com/yerim25) (Practice projects, Tsinghua University)
- [Zhilin Zhao](https://github.com/ChileenZ) (Practice projects, Tsinghua University)
- [Yixuan Li](https://yixuan20.github.io/) (Visual design, Tsinghua University)
- Siyi Liu (Practice projects, Tsinghua University)
- [Lixin Liu](https://github.com/liulx25xx) (Practice projects, Tsinghua University)
- Everyone in the AI Vibe Coding 101 internal testing group who shared suggestions and feedback
### Special Thanks
- Thanks to [@Sm1les](https://github.com/Sm1les) for the help and support on this project
- Thanks to every contributor and everyone who supported the project with feedback and stars ❤️
<div align="center">
<a href="https://www.star-history.com/#datawhalechina/easy-vibe&type=timeline&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=datawhalechina/easy-vibe&type=timeline&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=datawhalechina/easy-vibe&type=timeline&legend=top-left" />
</picture>
</a>
</div>
<div align=center style="margin-top: 30px;">
<a href="https://github.com/datawhalechina/easy-vibe/graphs/contributors">
<img src="https://contrib.rocks/image?repo=datawhalechina/easy-vibe" />
</a>
</div>
## 📄 LICENSE
<div align="center">
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">
<img
alt="Creative Commons License"
style="border-width:0"
src="https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-lightgrey"
/>
</a>
<br />
This work is licensed under the
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
</a>.
</div>
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=datawhalechina/easy-vibe&type=date&legend=top-left)](https://www.star-history.com/#datawhalechina/easy-vibe&type=date&legend=top-left)
@@ -0,0 +1,87 @@
{
"createdAt": "2025-12-28T16:45:28Z",
"defaultBranchRef": {
"name": "main"
},
"description": "💻 vibe coding 2026 | Your First Modern Coding course beginners to master step by step.",
"forkCount": 1673,
"homepageUrl": "https://datawhalechina.github.io/easy-vibe/",
"isArchived": false,
"isFork": false,
"isMirror": false,
"latestRelease": null,
"licenseInfo": null,
"nameWithOwner": "datawhalechina/easy-vibe",
"primaryLanguage": {
"name": "JavaScript"
},
"pushedAt": "2026-06-17T01:53:13Z",
"repositoryTopics": [
{
"name": "ai"
},
{
"name": "course"
},
{
"name": "vibe-coding"
},
{
"name": "coding"
},
{
"name": "genai"
},
{
"name": "low-code"
},
{
"name": "no-code"
},
{
"name": "programming"
},
{
"name": "tutorial"
},
{
"name": "vibecoding"
},
{
"name": "vscode"
},
{
"name": "agent"
},
{
"name": "gemini"
},
{
"name": "gpt"
},
{
"name": "llm"
},
{
"name": "nextjs"
},
{
"name": "openai"
},
{
"name": "workflow"
},
{
"name": "mcp"
},
{
"name": "deepseek"
}
],
"stargazerCount": 17687,
"updatedAt": "2026-07-02T22:16:26Z",
"url": "https://github.com/datawhalechina/easy-vibe",
"watchers": {
"totalCount": 57
}
}
@@ -0,0 +1,386 @@
[
{
"name": ".dockerignore",
"path": ".dockerignore",
"sha": "1f9ac4e9d883c58a2a72a68c521b40a730c113fd",
"size": 204,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.dockerignore?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/.dockerignore",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/1f9ac4e9d883c58a2a72a68c521b40a730c113fd",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/.dockerignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.dockerignore?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/1f9ac4e9d883c58a2a72a68c521b40a730c113fd",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/.dockerignore"
}
},
{
"name": ".github",
"path": ".github",
"sha": "74698e80f6811c51f6439df6997a7b3f19af963d",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.github?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/.github",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/74698e80f6811c51f6439df6997a7b3f19af963d",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.github?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/74698e80f6811c51f6439df6997a7b3f19af963d",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/.github"
}
},
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "9041d2d868000075b93dfe1e0b7a90e9484e0a43",
"size": 476,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.gitignore?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/.gitignore",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/9041d2d868000075b93dfe1e0b7a90e9484e0a43",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.gitignore?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/9041d2d868000075b93dfe1e0b7a90e9484e0a43",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/.gitignore"
}
},
{
"name": ".husky",
"path": ".husky",
"sha": "fa06f162e64d2d3ac94185f2888e8ac300a878c6",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.husky?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/.husky",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/fa06f162e64d2d3ac94185f2888e8ac300a878c6",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.husky?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/fa06f162e64d2d3ac94185f2888e8ac300a878c6",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/.husky"
}
},
{
"name": ".prettierignore",
"path": ".prettierignore",
"sha": "6f797150353660385432710e57300ef558635ee8",
"size": 17,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.prettierignore?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/.prettierignore",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/6f797150353660385432710e57300ef558635ee8",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/.prettierignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.prettierignore?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/6f797150353660385432710e57300ef558635ee8",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/.prettierignore"
}
},
{
"name": ".prettierrc",
"path": ".prettierrc",
"sha": "a93b0d69e61ed22162dffb8ceae78026afe24d46",
"size": 268,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.prettierrc?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/.prettierrc",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/a93b0d69e61ed22162dffb8ceae78026afe24d46",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/.prettierrc",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.prettierrc?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/a93b0d69e61ed22162dffb8ceae78026afe24d46",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/.prettierrc"
}
},
{
"name": ".trae",
"path": ".trae",
"sha": "e3d37947ef73a7b0ebd7d8d210fc5cae14bf901e",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.trae?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/.trae",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/e3d37947ef73a7b0ebd7d8d210fc5cae14bf901e",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.trae?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/e3d37947ef73a7b0ebd7d8d210fc5cae14bf901e",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/.trae"
}
},
{
"name": ".vscode",
"path": ".vscode",
"sha": "e533aaf460464e7a529fea09745593a5646f9199",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.vscode?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/.vscode",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/e533aaf460464e7a529fea09745593a5646f9199",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/.vscode?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/e533aaf460464e7a529fea09745593a5646f9199",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/.vscode"
}
},
{
"name": "AGENTS.md",
"path": "AGENTS.md",
"sha": "8a8d9a4debb85f91b4be1598637f0b76b05841ca",
"size": 2200,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/AGENTS.md?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/AGENTS.md",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/8a8d9a4debb85f91b4be1598637f0b76b05841ca",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/AGENTS.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/AGENTS.md?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/8a8d9a4debb85f91b4be1598637f0b76b05841ca",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/AGENTS.md"
}
},
{
"name": "CLAUDE.md",
"path": "CLAUDE.md",
"sha": "60274bd55ae784cf38681cddd2a4af8327cbb234",
"size": 12222,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/CLAUDE.md?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/CLAUDE.md",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/60274bd55ae784cf38681cddd2a4af8327cbb234",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/CLAUDE.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/CLAUDE.md?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/60274bd55ae784cf38681cddd2a4af8327cbb234",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/CLAUDE.md"
}
},
{
"name": "Dockerfile",
"path": "Dockerfile",
"sha": "76f57b1fba8a4d9e1615353fa3ea7cae1d122ecc",
"size": 774,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/Dockerfile?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/Dockerfile",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/76f57b1fba8a4d9e1615353fa3ea7cae1d122ecc",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/Dockerfile",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/Dockerfile?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/76f57b1fba8a4d9e1615353fa3ea7cae1d122ecc",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/Dockerfile"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "733bddf81c3aad2c42d83c7998d624cdfd3ebc36",
"size": 30877,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/README.md?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/README.md",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/733bddf81c3aad2c42d83c7998d624cdfd3ebc36",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/README.md?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/733bddf81c3aad2c42d83c7998d624cdfd3ebc36",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/README.md"
}
},
{
"name": "assets",
"path": "assets",
"sha": "54ab3cf49cca52b0336cb618705e08674332e3e0",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/assets?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/assets",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/54ab3cf49cca52b0336cb618705e08674332e3e0",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/assets?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/54ab3cf49cca52b0336cb618705e08674332e3e0",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/assets"
}
},
{
"name": "config",
"path": "config",
"sha": "4ba824beac3291efac771425ae10eefe11e72343",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/config?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/config",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/4ba824beac3291efac771425ae10eefe11e72343",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/config?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/4ba824beac3291efac771425ae10eefe11e72343",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/config"
}
},
{
"name": "docs-readme",
"path": "docs-readme",
"sha": "ad8c4a9a2b0070bd9aa0e4f9aba3d1adc79ba8d8",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/docs-readme?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/docs-readme",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/ad8c4a9a2b0070bd9aa0e4f9aba3d1adc79ba8d8",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/docs-readme?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/ad8c4a9a2b0070bd9aa0e4f9aba3d1adc79ba8d8",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/docs-readme"
}
},
{
"name": "docs",
"path": "docs",
"sha": "dccac1e383ceef32353b9bdc4cd53bfd0ae3e893",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/docs?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/docs",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/dccac1e383ceef32353b9bdc4cd53bfd0ae3e893",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/docs?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/dccac1e383ceef32353b9bdc4cd53bfd0ae3e893",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/docs"
}
},
{
"name": "eslint.config.js",
"path": "eslint.config.js",
"sha": "ff7b71a0c917994b89ec3bc7e6364a6e7e0514a3",
"size": 2110,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/eslint.config.js?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/eslint.config.js",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/ff7b71a0c917994b89ec3bc7e6364a6e7e0514a3",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/eslint.config.js",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/eslint.config.js?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/ff7b71a0c917994b89ec3bc7e6364a6e7e0514a3",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/eslint.config.js"
}
},
{
"name": "llms.txt",
"path": "llms.txt",
"sha": "1b8857f05368197ea5fe3e678976c48cf402af70",
"size": 51093,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/llms.txt?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/llms.txt",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/1b8857f05368197ea5fe3e678976c48cf402af70",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/llms.txt",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/llms.txt?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/1b8857f05368197ea5fe3e678976c48cf402af70",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/llms.txt"
}
},
{
"name": "ms_deploy.json",
"path": "ms_deploy.json",
"sha": "febd0cbbae05772059cbdabb9bed02be0b85d29f",
"size": 170,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/ms_deploy.json?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/ms_deploy.json",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/febd0cbbae05772059cbdabb9bed02be0b85d29f",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/ms_deploy.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/ms_deploy.json?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/febd0cbbae05772059cbdabb9bed02be0b85d29f",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/ms_deploy.json"
}
},
{
"name": "nginx.conf",
"path": "nginx.conf",
"sha": "03b75bc5972dfefa12e2a58dad0941774aa3efff",
"size": 732,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/nginx.conf?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/nginx.conf",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/03b75bc5972dfefa12e2a58dad0941774aa3efff",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/nginx.conf",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/nginx.conf?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/03b75bc5972dfefa12e2a58dad0941774aa3efff",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/nginx.conf"
}
},
{
"name": "package-lock.json",
"path": "package-lock.json",
"sha": "9cb97f86a635f8395d7a40b87e0250a4363eded7",
"size": 185918,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/package-lock.json?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/package-lock.json",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/9cb97f86a635f8395d7a40b87e0250a4363eded7",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/package-lock.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/package-lock.json?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/9cb97f86a635f8395d7a40b87e0250a4363eded7",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/package-lock.json"
}
},
{
"name": "package.json",
"path": "package.json",
"sha": "184be23b6d9b3ac459e3b13a379bc0e817bcdd26",
"size": 1853,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/package.json?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/package.json",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/184be23b6d9b3ac459e3b13a379bc0e817bcdd26",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/package.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/package.json?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/184be23b6d9b3ac459e3b13a379bc0e817bcdd26",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/package.json"
}
},
{
"name": "scripts",
"path": "scripts",
"sha": "c4c9498c932f9cf1eacd639e094612ab306e9716",
"size": 0,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/scripts?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/tree/main/scripts",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/c4c9498c932f9cf1eacd639e094612ab306e9716",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/scripts?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/trees/c4c9498c932f9cf1eacd639e094612ab306e9716",
"html": "https://github.com/datawhalechina/easy-vibe/tree/main/scripts"
}
},
{
"name": "vercel.json",
"path": "vercel.json",
"sha": "a2849cc4d7366f9aa155c43622c53e0eff3809c8",
"size": 1099,
"url": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/vercel.json?ref=main",
"html_url": "https://github.com/datawhalechina/easy-vibe/blob/main/vercel.json",
"git_url": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/a2849cc4d7366f9aa155c43622c53e0eff3809c8",
"download_url": "https://raw.githubusercontent.com/datawhalechina/easy-vibe/main/vercel.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/datawhalechina/easy-vibe/contents/vercel.json?ref=main",
"git": "https://api.github.com/repos/datawhalechina/easy-vibe/git/blobs/a2849cc4d7366f9aa155c43622c53e0eff3809c8",
"html": "https://github.com/datawhalechina/easy-vibe/blob/main/vercel.json"
}
}
]
@@ -0,0 +1,39 @@
version: 1
domain_id: datawhalechina-easy-vibe
object:
type: github_repository
name: datawhalechina/easy-vibe
url: https://github.com/datawhalechina/easy-vibe
pulled_at: '2026-07-02T22:47:14+00:00'
puller: scripts/fetch-research-raw.py
files:
- path: repository/
kind: git-working-tree
status: ok
source: 'git clone --depth=1 --single-branch --no-tags https://github.com/datawhalechina/easy-vibe.git docs/research/datawhalechina-easy-vibe/raw/repository'
- path: github-repo.raw.json
kind: repository-metadata
status: ok
source: 'gh repo view datawhalechina/easy-vibe --json nameWithOwner,url,description,homepageUrl,isArchived,isFork,isMirror,defaultBranchRef,licenseInfo,primaryLanguage,repositoryTopics,stargazerCount,forkCount,watchers,createdAt,updatedAt,pushedAt,latestRelease --jq .'
- path: github-readme.raw.md.txt
kind: readme
status: ok
source: 'gh api repos/datawhalechina/easy-vibe/readme -H Accept: application/vnd.github.raw'
- path: github-license.raw.txt
kind: license
status: missing_or_error
source: 'gh api repos/datawhalechina/easy-vibe/license -H Accept: application/vnd.github.raw'
message: 'gh: Not Found (HTTP 404)'
- path: github-root-contents.raw.json
kind: root-contents
status: ok
source: 'gh api repos/datawhalechina/easy-vibe/contents'
- path: github-languages.raw.json
kind: languages
status: ok
source: 'gh api repos/datawhalechina/easy-vibe/languages'
- path: github-latest-release.raw.json
kind: latest-release
status: missing_or_error
source: 'gh api repos/datawhalechina/easy-vibe/releases/latest'
message: 'gh: Not Found (HTTP 404)'