소스 정보
- 저장소
- ranxi2001/zero2Leetcode
- 최근 소스 활동
- 2026년 8월 2일 16:02
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 35
- 포크
- 3
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ranxi2001/zero2Leetcode --skill frontend-dev명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
将大厂笔试/机试/面试真题整理为项目文章,发布到 04_real_interviews/ 目录。 文章包含题目描述、详细思路解析、Python 题解代码、复杂度分析和小结。 当用户提供真题内容(文字/截图/微信文章链接)并要求"写成文章""整理成博文""加到真题里"时触发。 也可通过关键词触发:真题题解、笔试题解、面经整理、大厂真题文章等。
Publish, update, inspect, and organize local Markdown articles on cnblogs.com through the MetaWeblog API and an optional Playwright collection workflow. Use when the user explicitly asks to publish or update an article on CNBlogs, list or inspect existing CNBlogs posts, or add posts to a CNBlogs collection.
用于诊断用户在 LeetCode / Python / 数据结构与算法练习中的思路错误、代码错误、复杂度问题,并给出适合初学者理解的分步纠错与正确写法。特别适合“我有思路但写错了”“我不知道哪里错了”“我不理解这句代码为什么这样写”等场景。
SOC 직업 분류 기준
SKILL.md 표시 중
| name | frontend-dev |
| description | Zero2Leetcode 前端开发技能 — 快速理解项目技术栈、架构、CSS/JS 模式,指导页面调整与功能添加。 |
你是 Zero2Leetcode 项目的前端开发助手。帮助开发者理解项目架构、调整页面、添加新功能。
除非用户明确指定别的做法,否则当涉及前端开发相关问题时默认按本技能执行。
当用户出现以下需求时,使用本技能:
| 分类 | 技术 |
|---|---|
| 框架 | 纯 HTML/CSS/JavaScript(无框架) |
| 静态生成 | Jekyll(GitHub Pages) |
| 代码编辑器 | CodeMirror 5(CDN 引入) |
| Python 运行时 | Pyodide v0.26.4(浏览器端 Python) |
| Go 运行时 | 官方 Go Playground(远程编译执行) |
| Java 运行时 | CheerpJ 4.3 + ECJ 3.42.0(浏览器端 Java 17) |
| Markdown 渲染 | Marked.js |
| AI 集成 | OpenRouter API(SSE 流式) |
| 部署 | GitHub Pages + GitHub Actions |
| 样式方案 | 纯 CSS + CSS 自定义属性(无 Tailwind/预处理器) |
| 状态存储 | localStorage + 全局 window 变量 |
| 字体 | Google Fonts(Inter + Fira Code) |
zero2Leetcode/
├── index.html # 首页(学习路线、知识模块、题目清单)
├── playground.html # 在线练习场(三栏布局:题目|编辑器|AI)
├── acm-playground.html # ACM 模拟 IDE(Python/Go/Java、stdin/stdout、调试)
├── _config.yml # Jekyll 配置
│
├── assets/
│ ├── css/
│ │ ├── style.css # 全局样式 + CSS 变量(主题系统)
│ │ ├── playground.css # 练习场专用样式
│ │ ├── acm-playground.css # ACM 模拟 IDE 专用样式
│ │ └── docs.css # 文档页样式
│ ├── js/
│ │ ├── app.js # 首页逻辑(导航、筛选、搜索、表格)
│ │ ├── playground.js # 练习场核心(~2300 LOC)
│ │ ├── acm-playground.js # ACM 模拟 IDE 核心逻辑
│ │ ├── acm-bridge.js # 真题文章与 ACM IDE 的代码/样例桥接
│ │ ├── java-runner-worker.js # CheerpJ Java 编译执行 Worker
│ │ ├── ai-assistant.js # AI 助手 UI + API 调用
│ │ ├── problems-data.js # 题目元数据总表
│ │ └── playground-extra/ # 批次扩展题目文件
│ │ └── batch-*.js # 当前为 batch-1.js ... batch-8.js
│ ├── vendor/
│ │ └── zero2leetcode-java-runner.jar # ECJ + 浏览器 runner
│ └── images/
│ └── logo.svg
│
├── _layouts/ # Jekyll 模板
├── docs/ # 文档与学习指南
├── 00_python_basics/ # 学习路径阶段 1
├── 01_data_structures/ # 学习路径阶段 2
├── 02_algorithms/ # 学习路径阶段 3
├── 03_leetcode_practice/ # 学习路径阶段 4
│
├── .github/workflows/deploy.yml # CI/CD 部署
└── .claude/skills/ # 项目技能目录
style.cssproblems-data.js → app.jsnav.navbar — 顶部导航栏header.hero — 首页横幅(统计数据、CTA 按钮)section#roadmap — 学习路线(4 阶段时间线)section#modules — 知识模块卡片网格section#problems — 题目清单表格(带筛选/搜索)footer.footer — 页脚DOMContentLoaded → initNavbar() / initProblemsTable() / initFilters() / initSearch() / initModuleCards()style.css + playground.css + CodeMirror CSS(CDN)marked.min.js(defer)problems-data.jsplayground.jsplayground-extra/batch-*.jsai-assistant.jsnav.navbar — 顶部导航栏(与首页共享结构).playground-toolbar — 工具栏(题目选择、运行按钮、Pyodide 状态).playground-layout — 三栏布局:
.panel-problem — 左侧题目描述面板.panel-editor — 中间代码编辑器 + 输出面板.panel-ai — 右侧 AI 助手面板window.currentProblem — 当前选中的题目对象window.editor — CodeMirror 实例window.PROBLEMS_DATA — 题目元数据数组(来自 problems-data.js)window.PROBLEMS — playground.js 合并详细题目与 fallback 后的运行时数组window.PLAYGROUND_EXTRA_PROBLEMS — 扩展题目数组style.css + acm-playground.css + CodeMirror CSS(CDN)acm-playground.js.acm-toolbar — 语言、输入模板、超时、运行/调试/重置/保存代码.acm-layout — 左侧代码编辑器,右侧 stdin/stdout/期望输出与调试面板.acm-statusbar — 执行状态与调试提示.py/.go/.java,练习包使用 JSON 导入导出;真题文章由 acm-bridge.js 识别三种语言并注入跳转参数所有颜色、间距、圆角、阴影、字体都通过 CSS 自定义属性定义在 :root 中。修改视觉风格时优先调整变量,而不是硬编码值。
/* 关键变量分组 */
--primary / --primary-dark / --primary-light / --primary-glow /* 主色调(紫色系 hue=250) */
--accent / --accent-dark /* 强调色(青色系 hue=170) */
--easy / --medium / --hard /* 难度颜色 */
--bg-primary / --bg-secondary / --bg-tertiary / --bg-card /* 背景层级(深色主题) */
--text-primary / --text-secondary / --text-muted /* 文字层级 */
--border-color / --border-hover /* 边框 */
--spacing-xs ~ --spacing-3xl /* 间距梯度 */
--radius-sm ~ --radius-xl /* 圆角梯度 */
--shadow-sm ~ --shadow-glow /* 阴影梯度 */
--transition-fast / --transition-base / --transition-slow /* 过渡速度 */
--font-sans / --font-mono /* 字体族 */
:root 提供默认变量,html[data-theme="light"] 覆盖亮色变量;主题选择保存在 z2l-theme,未设置时跟随系统偏好--bg-card + --border-color + --radius-md,hover 时用 --bg-card-hover.btn 基础类 + .btn-primary / .btn-secondary / .btn-run / .btn-reset 变体max-width 媒体查询在小屏下折叠和重排var(--transition-base),微交互用 var(--transition-fast).gradient-text 类实现渐变效果.panel-header、.nav-link-active、.hero-stats)assets/css/style.cssassets/css/playground.cssassets/css/docs.css项目使用函数式组织方式,无模块打包器。每个 JS 文件通过 <script> 标签加载,通过 window 全局变量通信。
problems-data.js → window.PROBLEMS_DATA(题目元数据数组)
playground.js → window.editor, window.currentProblem, DETAILED_PROBLEMS 等
batch-*.js → window.PLAYGROUND_EXTRA_PROBLEMS(扩展题目)
ai-assistant.js → 读取 window.currentProblem 获取当前题目上下文
app.js → 读取 window.PROBLEMS_DATA 构建首页表格
acm-playground.js → 管理 ACM 编辑器、Python/Go/Java 执行、调试与文件导入导出
java-runner-worker.js → 加载 CheerpJ 与 ECJ runner,在独立 Worker 中执行 Java
document.querySelector / document.getElementById,无 jQueryaddEventListener 绑定在 DOMContentLoaded 之后innerHTMLlocalStorage.getItem/setItem + JSON 序列化async/await 用于 Pyodide、远程 Go、Java Worker 和 AI API 调用fetch + ReadableStream 读取 SSE 事件流| 功能类型 | 修改文件 | 入口函数 |
|---|---|---|
| 首页新板块 | index.html + style.css + app.js | 在 DOMContentLoaded 回调中添加 initXxx() |
| 练习场新面板 | playground.html + playground.css + playground.js | 在页面初始化流程中添加 |
| ACM IDE 功能 | acm-playground.html + acm-playground.css + acm-playground.js | 在 DOMContentLoaded 初始化与 bindEvents() 中接入 |
| AI 助手功能 | ai-assistant.js + playground.css | 修改 AI 面板逻辑 |
| 新独立页面 | 新建 xxx.html + 对应 CSS/JS | 复制导航栏结构,引入 style.css |
步骤:
1. 在 index.html 中合适位置添加 <section> 结构
2. 在 style.css 中添加板块样式(使用 CSS 变量)
3. 如果需要交互,在 app.js 中添加初始化函数并在 DOMContentLoaded 中调用
步骤:
1. 阅读 playground.html 理解三栏结构
2. 修改 playground.css 中的 .playground-layout grid 定义
3. 如果添加新面板,需要同时更新 HTML 结构和 CSS grid 模板
4. 注意保持响应式:检查 @media 查询的移动端适配
步骤:
1. HTML:在目标页面添加 DOM 结构
2. CSS:使用项目 CSS 变量保持视觉一致性
- 卡片:var(--bg-card), var(--border-color), var(--radius-md)
- 按钮:复用 .btn 基础类
- 文字:var(--text-primary) / var(--text-secondary)
3. JS:在对应 JS 文件中添加逻辑
- 使用 querySelector 获取 DOM
- 使用 addEventListener 绑定事件
- 数据持久化用 localStorage
步骤:
1. 复制 index.html 的 <head> 和 <nav> 部分作为基础
2. 引入 style.css(全局样式)
3. 如需独立样式,新建 assets/css/xxx.css
4. 如需逻辑,新建 assets/js/xxx.js
5. 更新共享模板中的导航;对仍使用内联导航的独立 HTML 页面同步修改
6. 顶层 HTML 默认会被 Jekyll 复制;只有文件受 include/exclude 配置影响时才调整 `_config.yml`
- 题目元数据(标题、难度、链接)→ assets/js/problems-data.js
- 题目详情(描述、模板、测试用例)→ assets/js/playground.js 或 playground-extra/batch-*.js
- 修改后需验证:
- 首页表格是否正常显示
- playground 下拉列表是否包含该题
- playground.html?id=<id> 是否能正确路由
<script src="assets/js/problems-data.js"></script> <!-- 题目数据 -->
<script src="assets/js/app.js"></script> <!-- 首页逻辑 -->
<!-- 1. 第三方库 -->
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/mode/python/python.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/addon/hint/show-hint.min.js"></script>
<!-- 2. 数据层 -->
<script src="assets/js/problems-data.js"></script>
<!-- 3. 核心逻辑(定义 LINKED_LIST_SETUP、BINARY_TREE_SETUP 等) -->
<script src="assets/js/playground.js"></script>
<!-- 4. 扩展题目(依赖 playground.js 中的 setup 常量) -->
<script src="assets/js/playground-extra/batch-1.js"></script>
<script src="assets/js/playground-extra/batch-2.js"></script>
<script =>
新增脚本时必须注意加载顺序:数据层 → 核心逻辑 → 扩展数据 → 附加功能。
<!-- 第三方编辑器与运行时均使用 CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/mode/python/python.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/mode/go/go.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.18/mode/clike/clike.min.js"></script>
<script src="https://cdn.jsdelivr.net/pyodide/v0.26.4/full/pyodide.js"></script>
<!-- 页面逻辑最后加载 -->
<script src="assets/js/acm-playground.js?v=<version>"></script>
Java 不在页面主线程加载 JVM。acm-playground.js 按需创建 java-runner-worker.js,Worker 从 CheerpJ 官方 CDN 加载运行时,并从 assets/vendor/ 读取随站点发布的 runner JAR。修改 Worker 或 runner 时必须同步递增资源版本并运行 tests/acm-java.test.cjs。
# 方式 1:已安装 Jekyll 时渲染完整站点
jekyll serve
# 方式 2:简单 HTTP 服务(不需要 Jekyll 编译时)
python3 -m http.server 8000
# 或
npx serve .
仓库当前没有 Gemfile;不要使用 bundle exec jekyll serve,除非后续补充了 Bundler 配置。
GitHub Pages 会强缓存 CSS/JS,修改样式后部署不生效是常见问题。所有 CSS/JS 引用必须带版本号:
<link rel="stylesheet" href="assets/css/style.css?v=2">
<script src="assets/js/app.js?v=9"></script>
每次修改后递增版本号,否则用户看到的是旧样式。
浮动代码块(如首页右侧的代码装饰)正确写法:
.hero { position: relative; overflow: hidden; } /* 父容器 */
.hero-inner { position: relative; z-index: 1; } /* 内容层,必须高于装饰 */
.hero-decoration { /* 装饰层 */
position: absolute;
right: -60px; top: 50%;
transform: translateY(-50%) rotate(-5deg);
opacity: 0.55;
pointer-events: none;
}
常见错误:
position: relative → 装饰块定位到 viewportoverflow: hidden → 装饰块溢出产生横向滚动条z-index → 装饰块遮挡文字/按钮的点击两个项目使用同一套 {0} logo,通过渐变色区分:
#818cf8 → #14b8a6#10b981 → #f59e0bSVG logo 要点:
linearGradient + stroke="url(#logoGradient)" 实现渐变描边viewBox="0 0 48 48" 统一尺寸<ellipse>、<circle>、<path> 的简单曲线友情链接应使用对方项目的品牌色,而非本项目色:
/* zero2Agent 站内的 zero2Leetcode 链接 → 用紫青色 */
.nav-friend-link { color: #818cf8; border-color: rgba(129,140,248,0.3); }
.nav-friend-link:hover { color: #14b8a6; }
/* zero2Leetcode 站内的 Zero2Agent 链接 → 用绿橙色 */
.nav-friend-link { color: #10b981; border-color: rgba(16,185,129,0.3); }
.nav-friend-link:hover { color: #f59e0b; }
免费静态站计数器,零后端,CDN 加载:
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<!-- 容器初始 display:none,busuanzi 加载完自动显示 -->
<span id="busuanzi_container_site_uv" style="display:none">
你是第 <span id="busuanzi_value_site_uv"></span> 位读者
</span>
<span id="busuanzi_container_page_pv" style="display:none">
本文 <span id="busuanzi_value_page_pv"></span> 次阅读
</span>
通过 JS 在页面底部生成 prev/next 按钮,并注入 <link rel="prefetch"> 实现秒开:
var lnk = document.createElement('link');
lnk.rel = 'prefetch';
lnk.href = nextPageUrl;
document.head.appendChild(lnk);
导航数据从模板引擎(Jekyll Liquid)注入 window.Z2A_NAV 全局数组,JS 匹配当前 URL 找到前后文章。
用 scroll 事件 + { passive: true } 监听,超过 320px 显示,用 CSS opacity + transform 过渡:
.back-to-top {
position: fixed; right: 28px; bottom: 72px;
opacity: 0; transform: translateY(14px);
transition: opacity 0.25s, transform 0.25s;
}
.back-to-top.is-visible { opacity: 1; transform: translateY(0); }
<br/>\nflowchart TD/LR、stateDiagram-v2、sequenceDiagramstartOnLoad: false,手动调用 mermaid.init(undefined, els)?v=N),否则部署后缓存不刷新position: absolute + pointer-events: none,内容层用 z-index 保持可交互