在 Manus 中运行任何 Skill
一键导入
一键导入
一键在 Manus 中运行任何 Skill
开始使用ml-daily
星标0
分支0
更新时间2026年4月12日 04:10
ml-learning 每日课程生成与完整性维护流程。每次定时任务触发时使用。
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
文件资源管理器
5 个文件SKILL.md
readonly菜单
ml-learning 每日课程生成与完整性维护流程。每次定时任务触发时使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | ml-daily |
| description | ml-learning 每日课程生成与完整性维护流程。每次定时任务触发时使用。 |
本 Skill 定义 ml-learning-coach 子代理每次定时任务的完整执行流程。
运行验证脚本:
python3 skills/ml-daily/scripts/validate.py
脚本输出 JSON,关键字段:
pass: true → 无缺口,进入 Phase 3pass: false → 有错误,记录 errors 和 gaps 列表,进入 Phase 2根据 validate.py 的 gaps 列表逐项修复:
| 缺口类型 | 修复方式 |
|---|---|
missing_lesson | 按 notebook-template.md 生成缺失编号的课程 Notebook |
| Notebook cell 不足 | 补充内容(代码 cell + markdown cell) |
missing_nb_html | 从 ipynb 解析生成 docs/nb-{name}.html 片段 |
broken_lab_ref | 生成缺失的 HTML 片段,或更新 notes-lab.html 菜单 |
import json, markdown, base64, os
def notebook_to_html(nb_path):
with open(nb_path) as f:
nb = json.load(f)
cells_html = []
for cell in nb.get('cells', []):
cell_type = cell.get('cell_type', '')
source = ''.join(cell.get('source', []))
if cell_type == 'markdown':
content = markdown.markdown(source, extensions=['tables', 'fenced_code'])
cells_html.append(f'<div class="nb-cell nb-markdown">{content}</div>')
elif cell_type == 'code':
escaped = source.replace('&','&').replace('<','<').replace('>','>')
outputs_html = ''
for out in cell.get('outputs', []):
if out.get('output_type') == 'stream':
text = ''.join(out.get('text',[])).replace('&','&').replace('<','<').replace('>','>')
outputs_html += f'<div class="nb-output"><pre>{text}</pre></div>'
elif out.get('output_type') == 'execute_result':
for dtype, data in out.get('data', {}).items():
if 'text/plain' in dtype:
text = (''.join(data) if isinstance(data, list) else data).replace('&','&').replace('<','<').replace('>','>')
outputs_html += f'<div class="nb-output"><pre>{text}</pre></div>'
cells_html.append(f'''<div class="nb-cell nb-code">
<div class="nb-label">In [{cell.get("execution_count","?")}]</div>
<pre><code>{escaped}</code></pre>{outputs_html}
</div>''')
return '\n'.join(cells_html)
import markdown
with open('daily/YYYY-MM-DD.md') as f:
md = f.read()
html = markdown.markdown(md, extensions=['tables', 'fenced_code'])
with open('docs/daily-YYYY-MM-DD.html', 'w') as f:
f.write(html)
补齐后重新运行 validate.py,直到 pass: true。
| 文件 | 路径 | 参考 |
|---|---|---|
| Notebook | lessons/NN_课程名.ipynb | references/notebook-template.md |
| Daily 记录 | daily/YYYY-MM-DD.md | references/daily-template.md |
| 知识笔记 | notes/主题.md(如涉及新概念) | references/note-template.md |
必须同步生成:
docs/nb-NN_课程名.html(从 ipynb 渲染)docs/daily-YYYY-MM-DD.html(从 MD 渲染)docs/note-主题.html(如有新概念笔记)新增课程后,必须逐一更新以下文件:
<a href="#" class="tree-item" data-note="daily-YYYY-MM-DD" data-nb="nb-NN_课程名" data-title="第 N 课:课程名">
<span class="tree-icon">📖</span> N. 课程名
</a>
同步检查项:
再次运行 validate.py:
python3 skills/ml-daily/scripts/validate.py
git add -A
git commit -m "lesson: 第N课 课程名 + 完整性同步"
git push origin main
## 执行报告
### validate 结果
- Phase 1: [通过/失败 - 错误数]
- Phase 2: [无需修复/已修复N项]
- Phase 5: [通过/失败]
### 今日新增
- 第 N 课:课程名
- 新增文件:[列表]
### 修复内容(如有)
- [修复的具体内容]
### Git 状态
- commit: [hash]
- push: [成功/失败]