yjh051108/mmkit/assets-inventory
Claude Code and agent skill by yjh051108/mmkit
- community
Checking that the SKILL.md file is still in the repository.
扫描用户上传的资产(题目/代码/数据/图/结果),输出资产清单 ASSETS_INVENTORY.md 与一致性冲突报告 ASSETS_CONFLICTS.md,供后续步骤决定哪些资产已有、哪些需要补全。Use when user says \"资产清点\", \"assets inventory\", \"已有资产\".
Install
npx vskill@latest install yjh051108/mmkit/assets-inventorySKILL.md
已有资产清点 + 一致性检查
把用户上传到 user_data/ 的所有资产做一次盘点,并交叉检查这些资产之间是否一致。这是「从已有资产生成论文」工作流的第一步。
输入
user_data/下的所有上传文件CLAUDE.md中的"用户自定义写作要求"段落(如果有)- 论文类型(从工作流参数
paper_type_target读取,可能值:academic_zh / academic_en / competition / course / nature)
必须输出
ASSETS_INVENTORY.md— 资产清单ASSETS_CONFLICTS.md— 冲突报告(只在检测到不一致时才写;没冲突就不写这个文件)
工作流程
Step 1: 扫描 user_data/
Step 2: 分类识别(基于文件后缀+内容启发式)
对每个文件,判断它属于以下哪一类(一个文件只能归一类,按优先级):
| 类别 | 识别规则 | 示例 | |
|---|---|---|---|
problem 题目 | 文件名含 problem/题目/赛题/requirement,或目录中只有 1 个 PDF/DOCX | problem.pdf, 2024 A 题.pdf, requirements.md | |
code 代码 | 后缀 .py/.ipynb/.zip/.r/.m/.cpp/.java | main.py, analysis.ipynb | |
data 数据 | 后缀 .csv/.xlsx/.xls/.tsv/.json/.parquet | load.csv, train.json | |
figure 图 | 后缀 .png/.jpg/.jpeg/.svg,或非题目类 PDF | fig1.png | |
result 结果 | 文件名含 results/output/RESULTS,或 .json 含数值结果 | results.json, RESULTS.md | |
template 模板 | 后缀 .tex/.cls/.sty/.docx/.dotx,且和已有题目区分 | thesis.cls, template.docx |
边缘情况处理:
- 文件名含特殊字符/中文/空格 → 在清单中保留原名,不重命名
- 同名多版本(如
results_v1.json,results_final.json)→ 都列出,按修改时间标注最新 .zip文件 → 列出,不自动解压(在清单里写明"建议手动解压").ipynb→ 标注"含代码 + 已有 cell 输出,可作为代码 + 结果同时使用"- 已有
*_extracted.txt(系统已自动提取的 PDF 文本)→ 跳过,不重复列出
Step 3: 把已识别资产从 user_data/ 复制/移动到工作目录
按类别移动到工作目录(只复制不删除,保留 user_data/ 原件):
| 类别 | 目标目录 | 命名规则 | |
|---|---|---|---|
code | code/ | 保留原名 | |
data | data/ | 保留原名 | |
figure | figures/ | 保留原名(如果原名不以 fig_ 开头,加前缀 user_fig_ 避免与自动生成的图冲突) | |
result | 工作根目录 | results.json 或 RESULTS.md 直接用 | |
template | _user_templates/ | 保留原名 | |
problem | 不动 | 留在 user_data/ |
Step 4: 一致性检查(核心边缘情况防御)
⛔ 必须做的 6 项交叉检查:
4.1 数据 vs 代码(数据维度匹配?)
- 读
code/main.py(或其他.py),找pd.read_csv("xxx.csv")或np.load(...) - 看代码引用的数据文件名是否在
data/中存在 - 看代码假设的数据形状(如
df.shape)是否与实际 CSV 维度匹配
4.2 图 vs 数据(图描述了的数据是否存在?)
- 看图文件名(如
fig1_load_curve.png)→ 推测该图描述的内容 - 在
data/或results.json中找对应数据 - 找不到 → 标记"figure-data orphan"
4.3 图 vs 代码(图中算法/方法 vs 代码用的算法?)
- 用 vision 描述(已自动放在 CLAUDE.md "上传图片内容(AI 自动识别)" 段)找出图中提到的方法名(NSGA-II / LSTM / ...)
- 在代码中搜对应关键词
- 不匹配 → 标记"method-mismatch"
4.4 结果数值 vs 图中数值(最严重的不一致类型)
- 解析
results.json中的关键数值(best_obj, accuracy, RMSE 等) - 看 vision 识别的图描述里是否有相近但不同的数值(如 results 写 0.847,图标注 0.85)
- 差异 > 5% 视为严重;差异 < 1% 视为可接受
4.5 数据/题目 主题对齐?
- 题目要预测电力负荷,数据传的是房价 → "topic-mismatch" 严重
- 用关键词匹配:题目里出现的核心词(如"光伏"、"电力")应该在数据列名/代码注释里出现
4.6 完整性检查
- 题目说有 4 问,看是否每问都有对应的代码/结果
- 没覆盖的问号 → 标记"missing-coverage"
4.7 ⛔ 竞赛模式: 赛题问号覆盖度(核心检查)
仅当 `paper_type_target=competition` 时执行。
- 通读题目 PDF/MD,列出所有问号编号(Q1/Q2/Q3/Q4 或"问题一/二/三/四"或主要任务点)
- 对每个问号检查 3 类证据:
- 代码证据:
code/q1_*.py/code/main.py中是否有针对 Q1 的求解块 - 结果证据:
results.json中是否有q1_*字段,或RESULTS.md中 "Q1 / 问题一" 段 - 图证据:
figures/中文件名含q1_/ 内容是 Q1 输出
- 输出对照表(必须打印到终端,写入
_assets_index.json的competition_coverage字段):
`` === 赛题覆盖度对照 === Q1: ✓ 已有 (code/q1_*.py + results.q1_obj=0.847) Q2: ✓ 已有 (code/q2_*.py + results.q2_pareto) Q3: ✗ 缺失 — 需要 comp-modeling + comp-code 补全 Q4: ✗ 缺失 — 需要 comp-modeling + comp-code 补全 ``
- 如果题目里没有明确问号编号(纯文本要求),按主要任务点拆分,每个任务点视为一个虚拟"问号"
- 在
_assets_index.json中输出:
``json { "competition_coverage": { "total_questions": 4, "covered": ["Q1", "Q2"], "missing": ["Q3", "Q4"] } } ` 并在 missing_assets 中追加 q3_code、q3_results、q4_code、q4_results` 等具体缺口标识
Step 5: 输出 ASSETS_INVENTORY.md
按下面的固定结构输出(字段不能省略,找不到的写"无"):
{ "problem": ["user_data/problem.pdf"], "problem_text": ["user_data/problem_extracted.txt"], "code": ["code/main.py", "code/utils.py", "user_data/notebook.ipynb"], "data": ["data/load.csv", "data/poi.json"], "figures": ["figures/user_fig_demand.png", "figures/user_fig_pareto.pdf"], "results": ["RESULTS.md", "results.json"], "templates": ["_user_templates/thesis.cls", "_user_templates/main.tex"] }
Step 6: 输出 ASSETS_CONFLICTS.md(仅当有冲突)
只有当 Step 4 检测到 >= 1 处不一致 时才创建此文件。结构:
Step 7: 写 _assets_index.json(机器可读,供 workflow_engine 读)
字段含义(workflow_engine 决定动态步骤跳过/执行时读这些字段):
has_*:用户是否提供了对应类别的资产missing_assets:缺失的资产标识(用于决定哪些步骤要跑)conflicts[].severity:high / medium / lowhigh_severity_count:高严重等级冲突数(>0 时工作流应暂停让用户确认)
自检(写入 ASSETS_INVENTORY.md 后必做)
边缘情况清单(必须处理)
| 边缘情况 | 处理策略 | |
|---|---|---|
| user_data/ 完全空 | 写极简版 ASSETS_INVENTORY.md,标注「无任何资产,将退化到全自动模式」,has_* 全为 false | |
| 只有题目,没其他资产 | 正常输出清单,missing_assets 列出全部缺口(code/data/figures/results/roadmap_figure 等) | |
| 同名多版本(results_v1.json + results_final.json) | 都列出,按 mtime 选最新作为权威,旧版本标注 [archive] | |
| .zip 文件 | 列出但不自动解压;ASSETS_INVENTORY.md 中提示用户手动解压 | |
| .ipynb 文件 | 标注"代码+已有 cell 输出"双角色 | |
| 文件名含中文/空格/特殊字符 | 保留原名,引用时用反引号包裹路径 | |
| results.json 格式不规范(不是 JSON) | 当 RESULTS.md 处理(纯文本) | |
| 中文图但要写英文论文 | 在 conflicts 里标注 "language-mismatch",建议重绘 | |
| 图分辨率太低(< 800px) | 在 conflicts 里标注 "low-resolution-figure",建议重绘 | |
| 文件超过 100MB | 在 inventory 中标注大小,提示无法直接 cat,需 sample 处理 | |
| code/ 中有 .py 但没 main.py | 选最大的 .py 文件作为入口标注 | |
| 同时有 zip 和解压后的目录 | 优先用解压目录,zip 标注「重复,已忽略」 |
不做的事
- ⛔ 不重新跑用户的代码(避免与用户结果冲突)
- ⛔ 不修改
user_data/中的原始文件 - ⛔ 不重绘用户上传的图
- ⛔ 不编造数值(即使 results.json 缺失某指标,也不补,让后续步骤补)
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/assets-inventory/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/yjh051108/mmkit/assets-inventory)