Skip to main content
ClaudeWave
Skill450 repo starsupdated 16d ago

light-project-structure

规范整洁的项目文件夹整理。当任务涉及新建项目、整理已有项目结构、规整文件命名与版本时使用。规划 data、src、models、results、figures、docs、paper、ppt、patent、software-copyright、experiments、logs、configs、references、assets、notebooks 等目录,保证结构清晰、命名规范、版本可追踪,便于写论文、答辩、申请软著专利与复现实验。

Install in Claude Code
Copy
git clone --depth 1 https://github.com/Light0305/Light-skills /tmp/light-project-structure && cp -r /tmp/light-project-structure/skills/light-project-structure ~/.claude/skills/light-project-structure
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# 项目文件夹规范整理

## 标准科研项目骨架
```
project-name/
├── data/            原始/中间/处理后数据(大文件走 DVC)
│   ├── raw/ interim/ processed/ external/
├── src/             源代码
├── models/          模型权重与定义
├── results/         实验结果(指标、输出文件)
├── figures/         论文/报告用图
├── docs/            项目文档
├── paper/           论文(LaTeX/Word 工程)
├── ppt/             演示文稿
├── patent/          专利材料
├── software-copyright/  软著材料
├── experiments/     实验脚本与配置(按实验编号)
├── logs/            运行日志(MLflow/W&B 本地)
├── configs/         配置(Hydra yaml)
├── references/      文献库(Zotero 导出/.bib)
├── assets/          图标/模板/素材
├── notebooks/       探索性分析
├── .light/          编排台账 passport.yaml + handoff/ 会话衔接卡(纳入版本控制)
├── README.md  CHANGELOG.md  .gitignore  pyproject.toml
```

数据分层沿用 Cookiecutter Data Science:`raw/`(原始不可变) `interim/`(中间) `processed/`(建模用最终) `external/`(第三方源)。notebooks 用"编号-缩写-描述"命名(如 `1.0-jl-eda.ipynb`)。

## 数据流即 DAG(核心方法)

把整个项目想成一张**有向无环图**:节点是数据/产物,边是确定性变换脚本。沿三条铁律组织目录:

1. **raw 不可变(immutable)**:`data/raw/` 一旦落地永不就地修改、永不被脚本写回。任何清洗/转换都读 raw、写 `interim/` 或 `processed/`。这样原始事实始终可回溯,DAG 有可信源头。
2. **每个产物都能从上游重算**:`processed/`、`models/`、`results/`、`figures/` 都是 DAG 的下游节点,删掉也能由"上游数据 + 代码 + params"重新生成——因此它们进 `.gitignore`/DVC,不进 Git 文本库。能重算的不入库,是 DAG 思路的直接推论。
3. **notebooks 拆探索 vs 报告**:`notebooks/exploratory/`(草稿、可乱、编号命名 `1.0-jl-eda.ipynb`)与 `notebooks/reports/`(干净、可重跑、产出对外图表)分流。探索性 notebook 不进 DAG 关键路径;定稿逻辑要下沉到 `src/`,被 notebook 和管线共同 import,避免"逻辑只活在某个 cell 里"。

用 `dvc.yaml` 把这张 DAG 显式声明出来(stage 的 `deps`→`outs` 就是图的边),`dvc repro` 据此只重跑受影响的下游节点;`dvc dag` 可打印依赖图。

## 命名规范
- 目录/文件用小写+连字符或下划线,不用空格中文。
- 实验/版本带日期或序号:`exp_004_ablation`, `paper_v3`, `fig3_ablation_v2`。
- 数据文件含版本/划分标记;结果文件名映射到实验编号,可追溯。

## 整理动作
1. 盘点已有项目(借 repo-intake-and-plan 思路):先读 README→扫 setup 脚本与文档化命令→把工作流归类为 推理/训练/评估,再据此给散落文件归位。
2. 新项目骨架:**首选 `scripts/scaffold.py`**——一条命令建全树 + 拷模板 + 可选 `--dvc/--uv|--poetry`:
   `python scripts/scaffold.py ./my-proj --name my-proj --dvc`(生成 data 四分层 + notebooks 探索/报告分流 + src 包 + `.light/`(passport 台账 + handoff/ 衔接卡目录,纳入版本控制)+ 落地 7 模板 + pyproject.toml;目标非空需 `--force`)。pyproject 默认 **uv 后端**(与 a03 推荐一致),加 `--poetry` 切 Poetry 备选。或用 CCDS(`pipx install cookiecutter-data-science` 后 `ccds`);或按上面骨架手工生成。无论哪种,都要落 README/CHANGELOG/PROJECT_PLAN/.gitignore/.editorconfig/pyproject.toml。
3. 重命名规范化→补 README/CHANGELOG→产出"文件归位说明"(借 handoff 结构:Key Decisions 表 + 失败尝试 + 警告)。

## 版本与依赖
- Git 管文本,DVC 管大文件:`dvc init`→`dvc add data/x.csv`(生成 `.dvc` 小文件并自动写 .gitignore)→`git add *.dvc .gitignore`→`dvc remote add -d storage s3://...`→`dvc push`。拉取:`git pull && dvc pull`。`.dvc`/`dvc.yaml`/`dvc.lock`/`.dvc/config` 入 Git,数据本体进 DVC。
- 多阶段管线用 `dvc.yaml`(stage 字段:`cmd` 必填、`deps`、`params`、`outs`、`metrics`、`plots`),`dvc repro` 只重跑变更阶段(`frozen:true` 阶段跳过);实验用 `dvc exp run/show/diff`。
- 依赖锁定**默认 uv**(与 a03 backend-coding 一致,快且 lock 跨平台):`uv init`→`uv add`→`uv sync`(按 `uv.lock` 精确装);dev/test 依赖 `uv add --dev` 进 `[dependency-groups]`;应用项目提交 `uv.lock`。**备选 Poetry**:`poetry init`→`poetry add`→`poetry install`,dev/test 放 `[tool.poetry.group.dev.dependencies]`,提交 `poetry.lock`。scaffold 默认出 uv 版 pyproject,`--poetry` 切备选。

## 质量门(配置要点)
四件套——Ruff(替代 flake8+black+isort)、pre-commit(rev 钉死 tag、接 ruff-pre-commit)、EditorConfig(root=true 统一缩进/换行)、.gitignore(GitHub Python 模板 + 科研条目)——的配置已落进 `templates/` 对应模板,逐项 `[tool.*]` 键与命令见 `references.md`;质量门口径与 a03 backend-coding 一致(a03 为代码侧单一真相源)。任务运行器二选一:make 已有则 Makefile;要跨平台+可读用 Taskfile(checksum 跳过、`task -l`)。

## 与项目库对应
目录结构与 db09 project_card 的各 status 字段一一对应(paper_status↔paper/,code_status↔src/,data_status↔data/…),便于 a02 跟踪进度。

## 现成模板(本技能目录 `templates/`,可直接复制使用)
- `scripts/scaffold.py` — **一条命令生成全套骨架**:建目录树 + 拷 7 模板到项目根(去 `.template` 后缀)+ 写 `src/<module>/__init__.py` + 始终落 `pyproject.toml`(默认 **uv** 后端,`--poetry` 切备选,均带 Ruff);`--dvc` 加写 `dvc.yaml`,`--force` 覆盖非空。已实测两路径 selftest 通过。
- 7 份模板:`PROJECT_STRUCTURE.md`(目录规范+命名+db09 对应)、`README.template.md`、`PROJECT_PLAN.template.md`(可勾选任务+No-Placeholders)、`CHANGELOG.template.md`(Keep a Changelog+SemVer)、`python-research.gitignore`(基线取 GitHub 官方 Python.gitignore,HTTP 200@2026-06-06,补科研条目)、`editorconfig.template`、`pre-commit-config.template.yaml`(rev 钉死 tag,`pre-commit autoupdate --freeze` 维护,仅 git 仓库内 `pre-commit install` 后生效)。各模板用途与配置项细节见 `references.md`。

新建项目时优先 `python scripts/scaffold.py <dir> [--poetry --dvc]` 一步到位;或手工把上述文件复制到项目根(gitignore/editorconfig 去掉模板后缀),填充 README/CHANGELOG/PROJECT_PLAN 中的 `{{占位符}}` 即可。

## 产出
规整后的目录树 + 上面 `templates/` 的 README/CHANGELOG/.gitignore/.editorconfig 落地文件 + 一份"文件归位说明"。

## 衔接
为 m05/a03/a04 提供落地结构;为 m15(软著专利)、m07(论文)、m16(PPT) 预留对应目录;状态同步 a02/db09。
整理任务量大时按"可独立完成+带验收标准+标依赖顺序"拆解(借 to-issues 的垂直切片思路:每个任务是一条端到端可独立认领的路径,而非横向按层切);复杂整理先出"精确路径+具体动作+验证步骤"的计划再执行,写到无上下文者也能照做的程度(借 writing-plans,任务粒度 2–5 分钟)。复现/审计场景固定 `repro_outputs/` 归档每次跑的结果,落 verified/partial/blocked 三态标记 + 输出 + `PATCHES.md`(改了哪些文件)+ 假设与阻塞清单(借 minimal-run-and-audit)。

> 工具与方法的可核查细节(真实命令/配置/端点/链接)见同目录 `references.md`;现成可复制模板见同目录 `templates/`。
light-backend-codingSkill

后端代码编写、逻辑强、安全性高、可读性好、版本控制、代码审查。当任务需要写实验代码、模型代码、数据处理代码、可视化代码、后端接口或系统逻辑时使用。要求逻辑清晰、安全、可读、可维护、便于复现/扩展/部署。支持 Git 版本管理、代码审查、注释规范、README、依赖管理、环境配置、运行说明与项目结构整理。

light-citationSkill

论文引用规划、审查与多格式生成。当用户需要处理参考文献、引用、bibtex 时使用。审查引用的关联度、真实性、权威性、时效性、数量、中外占比,是否引用了经典/最新/代表性/对比工作。避免虚假引用、过度引用、无关引用、堆砌、遗漏关键文献、低质量来源、引用与正文不匹配。生成 BibTeX/EndNote/GB-T 7714/APA/IEEE 等格式并按目标 venue 调整。

light-competitionSkill

竞赛与项目申报材料辅助。当用户做统计建模、数学建模、互联网+、挑战杯、大创、创新创业、科研训练等项目时使用。辅助写申报书、项目计划书、商业计划书、路演 PPT、答辩稿、项目摘要、技术路线、创新点、可行性分析、市场分析、研究基础、预期成果、经费预算、团队分工。用于非论文投稿场景,可与论文/软著/专利/PPT 联动。

light-consistencySkill

统一风格与一致性维护。在论文、PPT、图表、代码、项目文档之间保持术语一致、视觉风格一致、逻辑线索一致、创新点表述一致(常驻,所有任务后台生效)。避免同一项目在不同材料中出现说法不一致、指标名称不统一、图表风格混乱、创新点前后矛盾、方法名称变化、数据集名称不统一、论文与 PPT 逻辑不一致、软著与系统功能不一致。

light-data-engineeringSkill

数据处理、数据质量分析与数据集构建。当用户需要清洗数据、处理缺失/异常值、特征工程、数据增强、划分数据集、评估数据质量,或需自建数据集(采集、标注规范、格式、说明文档、隐私合规、发布)时使用。在提 idea 前优先判断现有数据是否足以支撑研究。

light-figure-drawingSkill

从顶会大牛角度进行专业绘图与组图。当用户需要把规划好的图实际画出来时使用。按情况用 Python(matplotlib/seaborn/plotly/altair)、R(ggplot2)、MATLAB、Visio、Origin、LaTeX/TikZ、Illustrator、PowerPoint 等。审美统一、专业清晰、配色合理、字体规范、线条清楚、高分辨率,适合直接投稿。不仅画图,还从论文表达角度判断怎么排、怎么组、怎么标注、怎么突出重点。

light-figure-planningSkill

根据论文内容规划应该做哪些图、哪些表、插在哪里、各起什么作用。当用户需要论文图表规划时使用。图表不限于统计图,也包括数据集真实效果图、模型输出示例、案例展示、可解释性可视化等。规划框架图、技术路线图、数据集示意图、模型结构图、算法流程图、结果对比/消融/敏感性图、真实效果图、统计表/对比表等,以审稿人标准判断哪些必做、哪些冗余。

light-file-readingSkill

强大地读文件并学习——Word、PDF、PPTX、Excel、CSV、图片、视频、代码、压缩包等。当用户提供任何文件、问"这个文件讲了什么"、或任务需要理解已有材料时使用(常驻,自动触发)。不只提取文字,而是理解结构、逻辑、图表、数据、实验结果、格式要求、章节关系、视觉风格、隐含要求与可复用内容,并转化为可执行任务。