[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-minimax-python-analysis":3,"mdc--9gfmkf-key":37,"related-org-minimax-python-analysis":1186,"related-repo-minimax-python-analysis":1389},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"python-analysis","perform scientific data analysis with Python","当用户使用 Python 做科研数据分析、统计建模、机器学习实验或批量数据处理，说\"用 Python 跑一下分析\"\"做个统计\"\"清洗数据\"\"画结果图\"\"跑个脚本\"时使用。本技能规定本地 Python 分析的统一操作规程：环境优先 uv\u002Fvenv 隔离、依赖写入 requirements.txt 并通过 record_run 记录环境指纹、随机种子固定并登记、原始数据只读（清洗另存新文件）、产物落盘 output\u002F\u003Cskill>\u002F\u003Cslug>\u002Flatest\u002F、图表 PNG+PDF 双格式 300dpi，并附 stats_integrity_check.py 对报告数字做确定性体检。同义触发场景：Python 分析、跑数据、统计分析、数据处理、画图、pandas、matplotlib、分析环境怎么配。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"minimax","MiniMax","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fminimax.jpg","MiniMax-AI",[13,17,20,23],{"name":14,"slug":15,"type":16},"Data Analysis","data-analysis","tag",{"name":18,"slug":19,"type":16},"Python","python",{"name":21,"slug":22,"type":16},"Data Cleaning","data-cleaning",{"name":24,"slug":25,"type":16},"Statistics","statistics",5,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002FMiniMax-Code-Plugins","2026-08-21T03:59:17.9774",null,2,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Community registry and contribution toolkit for MiniMax Code plugins.","https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002FMiniMax-Code-Plugins\u002Ftree\u002FHEAD\u002Fplugins\u002FHylouis233\u002Fopenscience\u002Fskills\u002Fpython-analysis","---\nname: python-analysis\ndescription: >-\n  当用户使用 Python 做科研数据分析、统计建模、机器学习实验或批量数据处理，说\"用 Python 跑一下分析\"\"做个统计\"\"清洗数据\"\"画结果图\"\"跑个脚本\"时使用。本技能规定本地 Python 分析的统一操作规程：环境优先 uv\u002Fvenv 隔离、依赖写入 requirements.txt 并通过 record_run 记录环境指纹、随机种子固定并登记、原始数据只读（清洗另存新文件）、产物落盘 output\u002F\u003Cskill>\u002F\u003Cslug>\u002Flatest\u002F、图表 PNG+PDF 双格式 300dpi，并附 stats_integrity_check.py 对报告数字做确定性体检。同义触发场景：Python 分析、跑数据、统计分析、数据处理、画图、pandas、matplotlib、分析环境怎么配。\nargument-hint: '[分析任务描述]'\nmetadata:\n  domains: [compute]\n  last_reviewed: '2026-08-18'\n---\n\n# python-analysis：Python 分析规程\n\n## 目的\n\nPython 是科研计算的主力工具，也是\"跑过一次就复现不出来\"的重灾区：依赖版本漂移、随机种子没固定、原始数据被顺手改掉、图只存了屏幕截图。本技能把每一次本地 Python 分析约束为可复现的最小闭环：\n\n1. 环境可重建：隔离环境 + requirements.txt + 环境指纹进 provenance；\n2. 结果可复算：随机种子固定并写进记录；\n3. 数据可追溯：原始数据只读，清洗产物另存；\n4. 产物可定位：统一落盘 `output\u002F\u003Cskill>\u002F\u003Cslug>\u002F`，图表双格式；\n5. 报告数字可机检：交付前过一遍 `stats_integrity_check.py`。\n\n本技能只规定规程，不规定具体算法；算法选择由研究问题决定（必要时标注 `[模型知识—待核实]` 并与用户确认）。\n\n## 前置检查\n\n1. 确认当前目录是工作区根目录（结构约定见 research-workspace）；产物路径契约 `output\u002F\u003Cskill>\u002F\u003Cslug>\u002Flatest\u002F` 在这里同样适用，本技能的 `\u003Cskill>` 名即 `python-analysis`（用户自建脚本的分析产物可用 `analysis` 作为 skill 名，保持与既有产物一致即可）。\n2. 确认原始数据已在 `data\u002F` 下且按只读原则管理；数据还没就位时先停下来请用户放数据，不要用\"示例数据\"冒充真实数据跑分析。\n3. 检查是否已有可用环境：项目根存在 `.venv\u002F` 或 `requirements.txt` 时优先复用，不要每次分析都新建环境。\n4. 涉及人体、患者、涉密数据的分析，先对照画像\"伦理与数据合规要求\"一节：红线数据不得离开规定机器，更不得上传到第三方在线工具（guardrail 第 8 条）。\n\n## 1 · 环境：优先 uv，其次 venv\n\n按以下优先级选择环境管理工具：\n\n1. **uv**（已安装时）：`uv venv` 创建 `.venv\u002F`，`uv pip install -r requirements.txt` 安装依赖。速度快、锁文件友好。\n2. **venv + pip**（uv 不可用时）：`python -m venv .venv`，激活后 `pip install -r requirements.txt`。\n3. 不用 conda 新建环境，除非画像\"算力环境\"一节明确写了 conda——与画像保持一致优先于本规程。\n\n纪律：\n\n- 每个项目一个 `.venv\u002F`，放在工作区根目录；不在系统 Python 里 `pip install` 任何分析依赖。\n- 新装依赖后立刻 `pip freeze > requirements.txt`（uv 同理）更新锁定；requirements.txt 是产物的一部分。\n- 首次在某环境跑分析时，用 provenance-record 登记一次环境（脚本自动写 `.openscience\u002Fenv\u002F\u003Chash>.txt`）；此后每次登记的 env_hash 自动关联。\n\n## 2 · 随机种子：固定并登记\n\n1. 脚本开头统一设种子：\n\n   ```python\n   import random\n   import numpy as np\n\n   SEED = 42\n   random.seed(SEED)\n   np.random.seed(SEED)\n   ```\n\n   用到其他带随机性的库（如 torch、sklearn 的 `random_state`）时，把同一个 SEED 传进去。\n2. 种子值写进 record_run 的 `--note`（如 `seed=42`）；换种子重跑视为一次新实验，登记新记录并说明换种子的原因。\n3. 不允许\"先不固定种子看看效果\"——探索性运行同样登记，大不了 note 里写\"探索性，未固定种子\"，让读者知道这条结果的复现等级。\n\n## 3 · 数据：原始只读，清洗另存\n\n1. 从 `data\u002F` 读，永不写 `data\u002F` 下已存在的文件；任何脚本检测到自己在覆盖 `data\u002F` 文件，立即停止并报告（research-workspace 原始数据只读原则）。\n2. 清洗、转换、筛选的产物是新文件：中间产物放 `output\u002Fpython-analysis\u002F\u003Cslug>\u002F\u003Ctimestamp>\u002F`；需要跨分析复用的清洗后数据集放项目自建的 `derived\u002F`（不存在则创建），并在 README 或 note 里写清由哪份原始数据经哪步处理而来。\n3. 数据纠错走增补：发现原始数据有误时新存修正版 + `README-correction.md`，原文件保留。\n4. 大文件读取失败（内存不足）时，改用分块（`pandas.read_csv(..., chunksize=...)`）或先抽样探索，不要在报告里假装全量分析过。\n\n## 4 · 分析脚本：可重复执行\n\n1. 脚本放 `scripts\u002F`，命名 kebab-case（如 `analyze-cycle-life.py`）；一次性探索可以用 notebooks\u002F，但进入产物的分析必须落成脚本。\n2. 脚本满足\"从头跑到尾不交互\"：`python scripts\u002Fxxx.py` 一条命令完成，不弹 input()、不依赖 notebook 单元格顺序。\n3. 参数用 argparse 或脚本顶部常量集中声明；硬编码路径只允许指向工作区内相对路径。\n4. 输出目录按时间戳创建（`YYYYMMDD-HHMMSS`），本次全部产物写入其中。\n\n## 5 · 产物落盘与图表规范\n\n1. 目录契约（与 research-workspace 一致）：\n\n   ```text\n   output\u002Fpython-analysis\u002F\u003Cslug>\u002F\u003Ctimestamp>\u002F   # 本次运行全部产物\n   output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F        # 运行结束后的完整副本\n   ```\n\n2. 图表一律双格式导出：PNG（预览、贴报告）+ PDF（排版、投稿矢量），均 300 dpi：\n\n   ```python\n   fig.savefig(out \u002F \"cycle-life.png\", dpi=300, bbox_inches=\"tight\")\n   fig.savefig(out \u002F \"cycle-life.pdf\", bbox_inches=\"tight\")\n   ```\n\n3. 统计结果（表格、模型参数、p 值）同时落一份机器可读文件（CSV 或 JSON），不要只存在图里或打印在 stdout——报告里的每个数字都应能指回这份文件。\n4. 运行结束后刷新 `latest\u002F`（先清空再放副本），然后用 provenance-record 登记：\n\n   ```bash\n   python \u003C插件包路径>\u002Fskills\u002Fprovenance-record\u002Fscripts\u002Frecord_run.py \\\n     --path output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F \\\n     --tool \"python scripts\u002Fanalyze-cycle-life.py\" \\\n     --note \"循环寿命分析，seed=42，数据 data\u002F2026-08-cycling\u002F\"\n   ```\n\n## 6 · 报告数字体检：stats_integrity_check.py\n\n分析结论写进 markdown 报告后、交付前，运行本技能自带脚本做确定性数字检查（纯标准库）：\n\n```bash\npython \u003C插件路径>\u002Fskills\u002Fpython-analysis\u002Fscripts\u002Fstats_integrity_check.py \\\n  --path reports\u002F\u003C报告>.md --format json\n```\n\n检查项：\n\n1. 百分比在 0-100 内；同一行疑似构成组的百分比之和 ≈ 100±0.5；\n2. p 值格式（`p\u003C0.001` 或 `p=0.xxx`）与取值在 0-1 内；\n3. `N=n` 多次出现时数值一致；\n4. 置信区间下界不超过上界。\n\n脚本输出 `{issues: [{check, location, detail, level}]}`，error 级问题修复前不得交付（guardrail 第 7 条）；脚本退出码为 1 表示存在 error 级问题，可接入流水线。脚本是确定性规则，不替代统计判断——它查\"数字写得对不对\"，不查\"数字算得对不对\"。\n\n## 输出模板\n\n分析完成后的汇报：\n\n```markdown\n## Python 分析完成（\u003C任务名>）\n\n- 环境：.venv\u002F（uv \u002F venv），requirements.txt 已更新，env_hash=\u003Chash>\n- 种子：seed=\u003CN>（已登记）\n- 产物：output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F（清单：…）\n- 图表：…（PNG+PDF，300dpi）\n- 数字体检：stats_integrity_check 通过 \u002F N 条 warn（列出）\u002F N 条 error（修复中）\n- provenance：已登记（note：…）\n\n下一步：…\n```\n\n## 本技能不做什么\n\n- 不替用户选统计方法或模型：方法适用性是领域判断，本技能最多提示\"该选择需要领域依据\"，必要时标注 `[模型知识—待核实]` 并请用户确认。\n- 不动原始数据：任何清洗、纠错都生成新文件（research-workspace 只读原则）。\n- 不管理远程与集群任务：SSH 远程算力见 remote-compute，Slurm 集群见 hpc-slurm，长任务后台管理见 run-monitor。\n- 不保证统计正确性：stats_integrity_check.py 只做格式与一致性机检，显著性解释、多重比较校正等仍需用户与 reviewer 把关。\n- 不自动安装系统级软件：装 Python 本身、装 uv 属环境准备，向用户说明后由用户执行。\n\n## 收尾与下一步\n\n- 产物进入报告或论文前：刷新 `latest\u002F`、确认 provenance 登记完整、跑 stats_integrity_check.py 清零 error。\n- 分析结论要支撑论文级论断时，进入 evidence-capsule 冻结流程（脚本、环境、数据版本一并打包）。\n- 报告交付前按 reviewer-protocol 接受审查；数字类意见（check=number）与本技能体检结果一并处理。\n- 分析耗时超过分钟级时，改用 run-monitor 后台运行，不要让人机会话空等任务结束。\n",{"data":38,"body":44},{"name":4,"description":6,"argument-hint":39,"metadata":40},"[分析任务描述]",{"domains":41,"last_reviewed":43},[42],"compute","2026-08-18",{"type":45,"children":46},"root",[47,56,62,68,115,128,133,211,217,222,289,294,344,350,463,469,545,551,606,612,816,822,827,912,917,961,974,979,984,1105,1110,1145,1150,1180],{"type":48,"tag":49,"props":50,"children":52},"element","h1",{"id":51},"python-analysispython-分析规程",[53],{"type":54,"value":55},"text","python-analysis：Python 分析规程",{"type":48,"tag":57,"props":58,"children":60},"h2",{"id":59},"目的",[61],{"type":54,"value":59},{"type":48,"tag":63,"props":64,"children":65},"p",{},[66],{"type":54,"value":67},"Python 是科研计算的主力工具，也是\"跑过一次就复现不出来\"的重灾区：依赖版本漂移、随机种子没固定、原始数据被顺手改掉、图只存了屏幕截图。本技能把每一次本地 Python 分析约束为可复现的最小闭环：",{"type":48,"tag":69,"props":70,"children":71},"ol",{},[72,78,83,88,102],{"type":48,"tag":73,"props":74,"children":75},"li",{},[76],{"type":54,"value":77},"环境可重建：隔离环境 + requirements.txt + 环境指纹进 provenance；",{"type":48,"tag":73,"props":79,"children":80},{},[81],{"type":54,"value":82},"结果可复算：随机种子固定并写进记录；",{"type":48,"tag":73,"props":84,"children":85},{},[86],{"type":54,"value":87},"数据可追溯：原始数据只读，清洗产物另存；",{"type":48,"tag":73,"props":89,"children":90},{},[91,93,100],{"type":54,"value":92},"产物可定位：统一落盘 ",{"type":48,"tag":94,"props":95,"children":97},"code",{"className":96},[],[98],{"type":54,"value":99},"output\u002F\u003Cskill>\u002F\u003Cslug>\u002F",{"type":54,"value":101},"，图表双格式；",{"type":48,"tag":73,"props":103,"children":104},{},[105,107,113],{"type":54,"value":106},"报告数字可机检：交付前过一遍 ",{"type":48,"tag":94,"props":108,"children":110},{"className":109},[],[111],{"type":54,"value":112},"stats_integrity_check.py",{"type":54,"value":114},"。",{"type":48,"tag":63,"props":116,"children":117},{},[118,120,126],{"type":54,"value":119},"本技能只规定规程，不规定具体算法；算法选择由研究问题决定（必要时标注 ",{"type":48,"tag":94,"props":121,"children":123},{"className":122},[],[124],{"type":54,"value":125},"[模型知识—待核实]",{"type":54,"value":127}," 并与用户确认）。",{"type":48,"tag":57,"props":129,"children":131},{"id":130},"前置检查",[132],{"type":54,"value":130},{"type":48,"tag":69,"props":134,"children":135},{},[136,172,185,206],{"type":48,"tag":73,"props":137,"children":138},{},[139,141,147,149,155,157,162,164,170],{"type":54,"value":140},"确认当前目录是工作区根目录（结构约定见 research-workspace）；产物路径契约 ",{"type":48,"tag":94,"props":142,"children":144},{"className":143},[],[145],{"type":54,"value":146},"output\u002F\u003Cskill>\u002F\u003Cslug>\u002Flatest\u002F",{"type":54,"value":148}," 在这里同样适用，本技能的 ",{"type":48,"tag":94,"props":150,"children":152},{"className":151},[],[153],{"type":54,"value":154},"\u003Cskill>",{"type":54,"value":156}," 名即 ",{"type":48,"tag":94,"props":158,"children":160},{"className":159},[],[161],{"type":54,"value":4},{"type":54,"value":163},"（用户自建脚本的分析产物可用 ",{"type":48,"tag":94,"props":165,"children":167},{"className":166},[],[168],{"type":54,"value":169},"analysis",{"type":54,"value":171}," 作为 skill 名，保持与既有产物一致即可）。",{"type":48,"tag":73,"props":173,"children":174},{},[175,177,183],{"type":54,"value":176},"确认原始数据已在 ",{"type":48,"tag":94,"props":178,"children":180},{"className":179},[],[181],{"type":54,"value":182},"data\u002F",{"type":54,"value":184}," 下且按只读原则管理；数据还没就位时先停下来请用户放数据，不要用\"示例数据\"冒充真实数据跑分析。",{"type":48,"tag":73,"props":186,"children":187},{},[188,190,196,198,204],{"type":54,"value":189},"检查是否已有可用环境：项目根存在 ",{"type":48,"tag":94,"props":191,"children":193},{"className":192},[],[194],{"type":54,"value":195},".venv\u002F",{"type":54,"value":197}," 或 ",{"type":48,"tag":94,"props":199,"children":201},{"className":200},[],[202],{"type":54,"value":203},"requirements.txt",{"type":54,"value":205}," 时优先复用，不要每次分析都新建环境。",{"type":48,"tag":73,"props":207,"children":208},{},[209],{"type":54,"value":210},"涉及人体、患者、涉密数据的分析，先对照画像\"伦理与数据合规要求\"一节：红线数据不得离开规定机器，更不得上传到第三方在线工具（guardrail 第 8 条）。",{"type":48,"tag":57,"props":212,"children":214},{"id":213},"_1-环境优先-uv其次-venv",[215],{"type":54,"value":216},"1 · 环境：优先 uv，其次 venv",{"type":48,"tag":63,"props":218,"children":219},{},[220],{"type":54,"value":221},"按以下优先级选择环境管理工具：",{"type":48,"tag":69,"props":223,"children":224},{},[225,259,284],{"type":48,"tag":73,"props":226,"children":227},{},[228,234,236,242,244,249,251,257],{"type":48,"tag":229,"props":230,"children":231},"strong",{},[232],{"type":54,"value":233},"uv",{"type":54,"value":235},"（已安装时）：",{"type":48,"tag":94,"props":237,"children":239},{"className":238},[],[240],{"type":54,"value":241},"uv venv",{"type":54,"value":243}," 创建 ",{"type":48,"tag":94,"props":245,"children":247},{"className":246},[],[248],{"type":54,"value":195},{"type":54,"value":250},"，",{"type":48,"tag":94,"props":252,"children":254},{"className":253},[],[255],{"type":54,"value":256},"uv pip install -r requirements.txt",{"type":54,"value":258}," 安装依赖。速度快、锁文件友好。",{"type":48,"tag":73,"props":260,"children":261},{},[262,267,269,275,277,283],{"type":48,"tag":229,"props":263,"children":264},{},[265],{"type":54,"value":266},"venv + pip",{"type":54,"value":268},"（uv 不可用时）：",{"type":48,"tag":94,"props":270,"children":272},{"className":271},[],[273],{"type":54,"value":274},"python -m venv .venv",{"type":54,"value":276},"，激活后 ",{"type":48,"tag":94,"props":278,"children":280},{"className":279},[],[281],{"type":54,"value":282},"pip install -r requirements.txt",{"type":54,"value":114},{"type":48,"tag":73,"props":285,"children":286},{},[287],{"type":54,"value":288},"不用 conda 新建环境，除非画像\"算力环境\"一节明确写了 conda——与画像保持一致优先于本规程。",{"type":48,"tag":63,"props":290,"children":291},{},[292],{"type":54,"value":293},"纪律：",{"type":48,"tag":295,"props":296,"children":297},"ul",{},[298,318,331],{"type":48,"tag":73,"props":299,"children":300},{},[301,303,308,310,316],{"type":54,"value":302},"每个项目一个 ",{"type":48,"tag":94,"props":304,"children":306},{"className":305},[],[307],{"type":54,"value":195},{"type":54,"value":309},"，放在工作区根目录；不在系统 Python 里 ",{"type":48,"tag":94,"props":311,"children":313},{"className":312},[],[314],{"type":54,"value":315},"pip install",{"type":54,"value":317}," 任何分析依赖。",{"type":48,"tag":73,"props":319,"children":320},{},[321,323,329],{"type":54,"value":322},"新装依赖后立刻 ",{"type":48,"tag":94,"props":324,"children":326},{"className":325},[],[327],{"type":54,"value":328},"pip freeze > requirements.txt",{"type":54,"value":330},"（uv 同理）更新锁定；requirements.txt 是产物的一部分。",{"type":48,"tag":73,"props":332,"children":333},{},[334,336,342],{"type":54,"value":335},"首次在某环境跑分析时，用 provenance-record 登记一次环境（脚本自动写 ",{"type":48,"tag":94,"props":337,"children":339},{"className":338},[],[340],{"type":54,"value":341},".openscience\u002Fenv\u002F\u003Chash>.txt",{"type":54,"value":343},"）；此后每次登记的 env_hash 自动关联。",{"type":48,"tag":57,"props":345,"children":347},{"id":346},"_2-随机种子固定并登记",[348],{"type":54,"value":349},"2 · 随机种子：固定并登记",{"type":48,"tag":69,"props":351,"children":352},{},[353,437,458],{"type":48,"tag":73,"props":354,"children":355},{},[356,358,423,427,429,435],{"type":54,"value":357},"脚本开头统一设种子：",{"type":48,"tag":359,"props":360,"children":364},"pre",{"className":361,"code":362,"language":19,"meta":363,"style":363},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import random\nimport numpy as np\n\nSEED = 42\nrandom.seed(SEED)\nnp.random.seed(SEED)\n","",[365],{"type":48,"tag":94,"props":366,"children":367},{"__ignoreMap":363},[368,379,387,397,406,414],{"type":48,"tag":369,"props":370,"children":373},"span",{"class":371,"line":372},"line",1,[374],{"type":48,"tag":369,"props":375,"children":376},{},[377],{"type":54,"value":378},"import random\n",{"type":48,"tag":369,"props":380,"children":381},{"class":371,"line":30},[382],{"type":48,"tag":369,"props":383,"children":384},{},[385],{"type":54,"value":386},"import numpy as np\n",{"type":48,"tag":369,"props":388,"children":390},{"class":371,"line":389},3,[391],{"type":48,"tag":369,"props":392,"children":394},{"emptyLinePlaceholder":393},true,[395],{"type":54,"value":396},"\n",{"type":48,"tag":369,"props":398,"children":400},{"class":371,"line":399},4,[401],{"type":48,"tag":369,"props":402,"children":403},{},[404],{"type":54,"value":405},"SEED = 42\n",{"type":48,"tag":369,"props":407,"children":408},{"class":371,"line":26},[409],{"type":48,"tag":369,"props":410,"children":411},{},[412],{"type":54,"value":413},"random.seed(SEED)\n",{"type":48,"tag":369,"props":415,"children":417},{"class":371,"line":416},6,[418],{"type":48,"tag":369,"props":419,"children":420},{},[421],{"type":54,"value":422},"np.random.seed(SEED)\n",{"type":48,"tag":424,"props":425,"children":426},"br",{},[],{"type":54,"value":428},"用到其他带随机性的库（如 torch、sklearn 的 ",{"type":48,"tag":94,"props":430,"children":432},{"className":431},[],[433],{"type":54,"value":434},"random_state",{"type":54,"value":436},"）时，把同一个 SEED 传进去。",{"type":48,"tag":73,"props":438,"children":439},{},[440,442,448,450,456],{"type":54,"value":441},"种子值写进 record_run 的 ",{"type":48,"tag":94,"props":443,"children":445},{"className":444},[],[446],{"type":54,"value":447},"--note",{"type":54,"value":449},"（如 ",{"type":48,"tag":94,"props":451,"children":453},{"className":452},[],[454],{"type":54,"value":455},"seed=42",{"type":54,"value":457},"）；换种子重跑视为一次新实验，登记新记录并说明换种子的原因。",{"type":48,"tag":73,"props":459,"children":460},{},[461],{"type":54,"value":462},"不允许\"先不固定种子看看效果\"——探索性运行同样登记，大不了 note 里写\"探索性，未固定种子\"，让读者知道这条结果的复现等级。",{"type":48,"tag":57,"props":464,"children":466},{"id":465},"_3-数据原始只读清洗另存",[467],{"type":54,"value":468},"3 · 数据：原始只读，清洗另存",{"type":48,"tag":69,"props":470,"children":471},{},[472,498,519,532],{"type":48,"tag":73,"props":473,"children":474},{},[475,477,482,484,489,491,496],{"type":54,"value":476},"从 ",{"type":48,"tag":94,"props":478,"children":480},{"className":479},[],[481],{"type":54,"value":182},{"type":54,"value":483}," 读，永不写 ",{"type":48,"tag":94,"props":485,"children":487},{"className":486},[],[488],{"type":54,"value":182},{"type":54,"value":490}," 下已存在的文件；任何脚本检测到自己在覆盖 ",{"type":48,"tag":94,"props":492,"children":494},{"className":493},[],[495],{"type":54,"value":182},{"type":54,"value":497}," 文件，立即停止并报告（research-workspace 原始数据只读原则）。",{"type":48,"tag":73,"props":499,"children":500},{},[501,503,509,511,517],{"type":54,"value":502},"清洗、转换、筛选的产物是新文件：中间产物放 ",{"type":48,"tag":94,"props":504,"children":506},{"className":505},[],[507],{"type":54,"value":508},"output\u002Fpython-analysis\u002F\u003Cslug>\u002F\u003Ctimestamp>\u002F",{"type":54,"value":510},"；需要跨分析复用的清洗后数据集放项目自建的 ",{"type":48,"tag":94,"props":512,"children":514},{"className":513},[],[515],{"type":54,"value":516},"derived\u002F",{"type":54,"value":518},"（不存在则创建），并在 README 或 note 里写清由哪份原始数据经哪步处理而来。",{"type":48,"tag":73,"props":520,"children":521},{},[522,524,530],{"type":54,"value":523},"数据纠错走增补：发现原始数据有误时新存修正版 + ",{"type":48,"tag":94,"props":525,"children":527},{"className":526},[],[528],{"type":54,"value":529},"README-correction.md",{"type":54,"value":531},"，原文件保留。",{"type":48,"tag":73,"props":533,"children":534},{},[535,537,543],{"type":54,"value":536},"大文件读取失败（内存不足）时，改用分块（",{"type":48,"tag":94,"props":538,"children":540},{"className":539},[],[541],{"type":54,"value":542},"pandas.read_csv(..., chunksize=...)",{"type":54,"value":544},"）或先抽样探索，不要在报告里假装全量分析过。",{"type":48,"tag":57,"props":546,"children":548},{"id":547},"_4-分析脚本可重复执行",[549],{"type":54,"value":550},"4 · 分析脚本：可重复执行",{"type":48,"tag":69,"props":552,"children":553},{},[554,575,588,593],{"type":48,"tag":73,"props":555,"children":556},{},[557,559,565,567,573],{"type":54,"value":558},"脚本放 ",{"type":48,"tag":94,"props":560,"children":562},{"className":561},[],[563],{"type":54,"value":564},"scripts\u002F",{"type":54,"value":566},"，命名 kebab-case（如 ",{"type":48,"tag":94,"props":568,"children":570},{"className":569},[],[571],{"type":54,"value":572},"analyze-cycle-life.py",{"type":54,"value":574},"）；一次性探索可以用 notebooks\u002F，但进入产物的分析必须落成脚本。",{"type":48,"tag":73,"props":576,"children":577},{},[578,580,586],{"type":54,"value":579},"脚本满足\"从头跑到尾不交互\"：",{"type":48,"tag":94,"props":581,"children":583},{"className":582},[],[584],{"type":54,"value":585},"python scripts\u002Fxxx.py",{"type":54,"value":587}," 一条命令完成，不弹 input()、不依赖 notebook 单元格顺序。",{"type":48,"tag":73,"props":589,"children":590},{},[591],{"type":54,"value":592},"参数用 argparse 或脚本顶部常量集中声明；硬编码路径只允许指向工作区内相对路径。",{"type":48,"tag":73,"props":594,"children":595},{},[596,598,604],{"type":54,"value":597},"输出目录按时间戳创建（",{"type":48,"tag":94,"props":599,"children":601},{"className":600},[],[602],{"type":54,"value":603},"YYYYMMDD-HHMMSS",{"type":54,"value":605},"），本次全部产物写入其中。",{"type":48,"tag":57,"props":607,"children":609},{"id":608},"_5-产物落盘与图表规范",[610],{"type":54,"value":611},"5 · 产物落盘与图表规范",{"type":48,"tag":69,"props":613,"children":614},{},[615,630,658,663],{"type":48,"tag":73,"props":616,"children":617},{},[618,620],{"type":54,"value":619},"目录契约（与 research-workspace 一致）：",{"type":48,"tag":359,"props":621,"children":625},{"className":622,"code":624,"language":54,"meta":363},[623],"language-text","output\u002Fpython-analysis\u002F\u003Cslug>\u002F\u003Ctimestamp>\u002F   # 本次运行全部产物\noutput\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F        # 运行结束后的完整副本\n",[626],{"type":48,"tag":94,"props":627,"children":628},{"__ignoreMap":363},[629],{"type":54,"value":624},{"type":48,"tag":73,"props":631,"children":632},{},[633,635],{"type":54,"value":634},"图表一律双格式导出：PNG（预览、贴报告）+ PDF（排版、投稿矢量），均 300 dpi：",{"type":48,"tag":359,"props":636,"children":638},{"className":361,"code":637,"language":19,"meta":363,"style":363},"fig.savefig(out \u002F \"cycle-life.png\", dpi=300, bbox_inches=\"tight\")\nfig.savefig(out \u002F \"cycle-life.pdf\", bbox_inches=\"tight\")\n",[639],{"type":48,"tag":94,"props":640,"children":641},{"__ignoreMap":363},[642,650],{"type":48,"tag":369,"props":643,"children":644},{"class":371,"line":372},[645],{"type":48,"tag":369,"props":646,"children":647},{},[648],{"type":54,"value":649},"fig.savefig(out \u002F \"cycle-life.png\", dpi=300, bbox_inches=\"tight\")\n",{"type":48,"tag":369,"props":651,"children":652},{"class":371,"line":30},[653],{"type":48,"tag":369,"props":654,"children":655},{},[656],{"type":54,"value":657},"fig.savefig(out \u002F \"cycle-life.pdf\", bbox_inches=\"tight\")\n",{"type":48,"tag":73,"props":659,"children":660},{},[661],{"type":54,"value":662},"统计结果（表格、模型参数、p 值）同时落一份机器可读文件（CSV 或 JSON），不要只存在图里或打印在 stdout——报告里的每个数字都应能指回这份文件。",{"type":48,"tag":73,"props":664,"children":665},{},[666,668,674,676],{"type":54,"value":667},"运行结束后刷新 ",{"type":48,"tag":94,"props":669,"children":671},{"className":670},[],[672],{"type":54,"value":673},"latest\u002F",{"type":54,"value":675},"（先清空再放副本），然后用 provenance-record 登记：",{"type":48,"tag":359,"props":677,"children":681},{"className":678,"code":679,"language":680,"meta":363,"style":363},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python \u003C插件包路径>\u002Fskills\u002Fprovenance-record\u002Fscripts\u002Frecord_run.py \\\n  --path output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F \\\n  --tool \"python scripts\u002Fanalyze-cycle-life.py\" \\\n  --note \"循环寿命分析，seed=42，数据 data\u002F2026-08-cycling\u002F\"\n","bash",[682],{"type":48,"tag":94,"props":683,"children":684},{"__ignoreMap":363},[685,726,767,794],{"type":48,"tag":369,"props":686,"children":687},{"class":371,"line":372},[688,693,699,705,711,716,721],{"type":48,"tag":369,"props":689,"children":691},{"style":690},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[692],{"type":54,"value":19},{"type":48,"tag":369,"props":694,"children":696},{"style":695},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[697],{"type":54,"value":698}," \u003C",{"type":48,"tag":369,"props":700,"children":702},{"style":701},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[703],{"type":54,"value":704},"插件包路",{"type":48,"tag":369,"props":706,"children":708},{"style":707},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[709],{"type":54,"value":710},"径",{"type":48,"tag":369,"props":712,"children":713},{"style":695},[714],{"type":54,"value":715},">",{"type":48,"tag":369,"props":717,"children":718},{"style":701},[719],{"type":54,"value":720},"\u002Fskills\u002Fprovenance-record\u002Fscripts\u002Frecord_run.py",{"type":48,"tag":369,"props":722,"children":723},{"style":707},[724],{"type":54,"value":725}," \\\n",{"type":48,"tag":369,"props":727,"children":728},{"class":371,"line":30},[729,734,739,744,749,754,758,763],{"type":48,"tag":369,"props":730,"children":731},{"style":701},[732],{"type":54,"value":733},"  --path",{"type":48,"tag":369,"props":735,"children":736},{"style":701},[737],{"type":54,"value":738}," output\u002Fpython-analysis\u002F",{"type":48,"tag":369,"props":740,"children":741},{"style":695},[742],{"type":54,"value":743},"\u003C",{"type":48,"tag":369,"props":745,"children":746},{"style":701},[747],{"type":54,"value":748},"slu",{"type":48,"tag":369,"props":750,"children":751},{"style":707},[752],{"type":54,"value":753},"g",{"type":48,"tag":369,"props":755,"children":756},{"style":695},[757],{"type":54,"value":715},{"type":48,"tag":369,"props":759,"children":760},{"style":701},[761],{"type":54,"value":762},"\u002Flatest\u002F",{"type":48,"tag":369,"props":764,"children":765},{"style":707},[766],{"type":54,"value":725},{"type":48,"tag":369,"props":768,"children":769},{"class":371,"line":389},[770,775,780,785,790],{"type":48,"tag":369,"props":771,"children":772},{"style":701},[773],{"type":54,"value":774},"  --tool",{"type":48,"tag":369,"props":776,"children":777},{"style":695},[778],{"type":54,"value":779}," \"",{"type":48,"tag":369,"props":781,"children":782},{"style":701},[783],{"type":54,"value":784},"python scripts\u002Fanalyze-cycle-life.py",{"type":48,"tag":369,"props":786,"children":787},{"style":695},[788],{"type":54,"value":789},"\"",{"type":48,"tag":369,"props":791,"children":792},{"style":707},[793],{"type":54,"value":725},{"type":48,"tag":369,"props":795,"children":796},{"class":371,"line":399},[797,802,806,811],{"type":48,"tag":369,"props":798,"children":799},{"style":701},[800],{"type":54,"value":801},"  --note",{"type":48,"tag":369,"props":803,"children":804},{"style":695},[805],{"type":54,"value":779},{"type":48,"tag":369,"props":807,"children":808},{"style":701},[809],{"type":54,"value":810},"循环寿命分析，seed=42，数据 data\u002F2026-08-cycling\u002F",{"type":48,"tag":369,"props":812,"children":813},{"style":695},[814],{"type":54,"value":815},"\"\n",{"type":48,"tag":57,"props":817,"children":819},{"id":818},"_6-报告数字体检stats_integrity_checkpy",[820],{"type":54,"value":821},"6 · 报告数字体检：stats_integrity_check.py",{"type":48,"tag":63,"props":823,"children":824},{},[825],{"type":54,"value":826},"分析结论写进 markdown 报告后、交付前，运行本技能自带脚本做确定性数字检查（纯标准库）：",{"type":48,"tag":359,"props":828,"children":830},{"className":678,"code":829,"language":680,"meta":363,"style":363},"python \u003C插件路径>\u002Fskills\u002Fpython-analysis\u002Fscripts\u002Fstats_integrity_check.py \\\n  --path reports\u002F\u003C报告>.md --format json\n",[831],{"type":48,"tag":94,"props":832,"children":833},{"__ignoreMap":363},[834,867],{"type":48,"tag":369,"props":835,"children":836},{"class":371,"line":372},[837,841,845,850,854,858,863],{"type":48,"tag":369,"props":838,"children":839},{"style":690},[840],{"type":54,"value":19},{"type":48,"tag":369,"props":842,"children":843},{"style":695},[844],{"type":54,"value":698},{"type":48,"tag":369,"props":846,"children":847},{"style":701},[848],{"type":54,"value":849},"插件路",{"type":48,"tag":369,"props":851,"children":852},{"style":707},[853],{"type":54,"value":710},{"type":48,"tag":369,"props":855,"children":856},{"style":695},[857],{"type":54,"value":715},{"type":48,"tag":369,"props":859,"children":860},{"style":701},[861],{"type":54,"value":862},"\u002Fskills\u002Fpython-analysis\u002Fscripts\u002Fstats_integrity_check.py",{"type":48,"tag":369,"props":864,"children":865},{"style":707},[866],{"type":54,"value":725},{"type":48,"tag":369,"props":868,"children":869},{"class":371,"line":30},[870,874,879,883,888,893,897,902,907],{"type":48,"tag":369,"props":871,"children":872},{"style":701},[873],{"type":54,"value":733},{"type":48,"tag":369,"props":875,"children":876},{"style":701},[877],{"type":54,"value":878}," reports\u002F",{"type":48,"tag":369,"props":880,"children":881},{"style":695},[882],{"type":54,"value":743},{"type":48,"tag":369,"props":884,"children":885},{"style":701},[886],{"type":54,"value":887},"报",{"type":48,"tag":369,"props":889,"children":890},{"style":707},[891],{"type":54,"value":892},"告",{"type":48,"tag":369,"props":894,"children":895},{"style":695},[896],{"type":54,"value":715},{"type":48,"tag":369,"props":898,"children":899},{"style":701},[900],{"type":54,"value":901},".md",{"type":48,"tag":369,"props":903,"children":904},{"style":701},[905],{"type":54,"value":906}," --format",{"type":48,"tag":369,"props":908,"children":909},{"style":701},[910],{"type":54,"value":911}," json\n",{"type":48,"tag":63,"props":913,"children":914},{},[915],{"type":54,"value":916},"检查项：",{"type":48,"tag":69,"props":918,"children":919},{},[920,925,945,956],{"type":48,"tag":73,"props":921,"children":922},{},[923],{"type":54,"value":924},"百分比在 0-100 内；同一行疑似构成组的百分比之和 ≈ 100±0.5；",{"type":48,"tag":73,"props":926,"children":927},{},[928,930,936,937,943],{"type":54,"value":929},"p 值格式（",{"type":48,"tag":94,"props":931,"children":933},{"className":932},[],[934],{"type":54,"value":935},"p\u003C0.001",{"type":54,"value":197},{"type":48,"tag":94,"props":938,"children":940},{"className":939},[],[941],{"type":54,"value":942},"p=0.xxx",{"type":54,"value":944},"）与取值在 0-1 内；",{"type":48,"tag":73,"props":946,"children":947},{},[948,954],{"type":48,"tag":94,"props":949,"children":951},{"className":950},[],[952],{"type":54,"value":953},"N=n",{"type":54,"value":955}," 多次出现时数值一致；",{"type":48,"tag":73,"props":957,"children":958},{},[959],{"type":54,"value":960},"置信区间下界不超过上界。",{"type":48,"tag":63,"props":962,"children":963},{},[964,966,972],{"type":54,"value":965},"脚本输出 ",{"type":48,"tag":94,"props":967,"children":969},{"className":968},[],[970],{"type":54,"value":971},"{issues: [{check, location, detail, level}]}",{"type":54,"value":973},"，error 级问题修复前不得交付（guardrail 第 7 条）；脚本退出码为 1 表示存在 error 级问题，可接入流水线。脚本是确定性规则，不替代统计判断——它查\"数字写得对不对\"，不查\"数字算得对不对\"。",{"type":48,"tag":57,"props":975,"children":977},{"id":976},"输出模板",[978],{"type":54,"value":976},{"type":48,"tag":63,"props":980,"children":981},{},[982],{"type":54,"value":983},"分析完成后的汇报：",{"type":48,"tag":359,"props":985,"children":989},{"className":986,"code":987,"language":988,"meta":363,"style":363},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Python 分析完成（\u003C任务名>）\n\n- 环境：.venv\u002F（uv \u002F venv），requirements.txt 已更新，env_hash=\u003Chash>\n- 种子：seed=\u003CN>（已登记）\n- 产物：output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F（清单：…）\n- 图表：…（PNG+PDF，300dpi）\n- 数字体检：stats_integrity_check 通过 \u002F N 条 warn（列出）\u002F N 条 error（修复中）\n- provenance：已登记（note：…）\n\n下一步：…\n","markdown",[990],{"type":48,"tag":94,"props":991,"children":992},{"__ignoreMap":363},[993,1006,1013,1026,1038,1050,1062,1075,1088,1096],{"type":48,"tag":369,"props":994,"children":995},{"class":371,"line":372},[996,1001],{"type":48,"tag":369,"props":997,"children":998},{"style":695},[999],{"type":54,"value":1000},"## ",{"type":48,"tag":369,"props":1002,"children":1003},{"style":690},[1004],{"type":54,"value":1005},"Python 分析完成（\u003C任务名>）\n",{"type":48,"tag":369,"props":1007,"children":1008},{"class":371,"line":30},[1009],{"type":48,"tag":369,"props":1010,"children":1011},{"emptyLinePlaceholder":393},[1012],{"type":54,"value":396},{"type":48,"tag":369,"props":1014,"children":1015},{"class":371,"line":389},[1016,1021],{"type":48,"tag":369,"props":1017,"children":1018},{"style":695},[1019],{"type":54,"value":1020},"-",{"type":48,"tag":369,"props":1022,"children":1023},{"style":707},[1024],{"type":54,"value":1025}," 环境：.venv\u002F（uv \u002F venv），requirements.txt 已更新，env_hash=\u003Chash>\n",{"type":48,"tag":369,"props":1027,"children":1028},{"class":371,"line":399},[1029,1033],{"type":48,"tag":369,"props":1030,"children":1031},{"style":695},[1032],{"type":54,"value":1020},{"type":48,"tag":369,"props":1034,"children":1035},{"style":707},[1036],{"type":54,"value":1037}," 种子：seed=\u003CN>（已登记）\n",{"type":48,"tag":369,"props":1039,"children":1040},{"class":371,"line":26},[1041,1045],{"type":48,"tag":369,"props":1042,"children":1043},{"style":695},[1044],{"type":54,"value":1020},{"type":48,"tag":369,"props":1046,"children":1047},{"style":707},[1048],{"type":54,"value":1049}," 产物：output\u002Fpython-analysis\u002F\u003Cslug>\u002Flatest\u002F（清单：…）\n",{"type":48,"tag":369,"props":1051,"children":1052},{"class":371,"line":416},[1053,1057],{"type":48,"tag":369,"props":1054,"children":1055},{"style":695},[1056],{"type":54,"value":1020},{"type":48,"tag":369,"props":1058,"children":1059},{"style":707},[1060],{"type":54,"value":1061}," 图表：…（PNG+PDF，300dpi）\n",{"type":48,"tag":369,"props":1063,"children":1065},{"class":371,"line":1064},7,[1066,1070],{"type":48,"tag":369,"props":1067,"children":1068},{"style":695},[1069],{"type":54,"value":1020},{"type":48,"tag":369,"props":1071,"children":1072},{"style":707},[1073],{"type":54,"value":1074}," 数字体检：stats_integrity_check 通过 \u002F N 条 warn（列出）\u002F N 条 error（修复中）\n",{"type":48,"tag":369,"props":1076,"children":1078},{"class":371,"line":1077},8,[1079,1083],{"type":48,"tag":369,"props":1080,"children":1081},{"style":695},[1082],{"type":54,"value":1020},{"type":48,"tag":369,"props":1084,"children":1085},{"style":707},[1086],{"type":54,"value":1087}," provenance：已登记（note：…）\n",{"type":48,"tag":369,"props":1089,"children":1091},{"class":371,"line":1090},9,[1092],{"type":48,"tag":369,"props":1093,"children":1094},{"emptyLinePlaceholder":393},[1095],{"type":54,"value":396},{"type":48,"tag":369,"props":1097,"children":1099},{"class":371,"line":1098},10,[1100],{"type":48,"tag":369,"props":1101,"children":1102},{"style":707},[1103],{"type":54,"value":1104},"下一步：…\n",{"type":48,"tag":57,"props":1106,"children":1108},{"id":1107},"本技能不做什么",[1109],{"type":54,"value":1107},{"type":48,"tag":295,"props":1111,"children":1112},{},[1113,1125,1130,1135,1140],{"type":48,"tag":73,"props":1114,"children":1115},{},[1116,1118,1123],{"type":54,"value":1117},"不替用户选统计方法或模型：方法适用性是领域判断，本技能最多提示\"该选择需要领域依据\"，必要时标注 ",{"type":48,"tag":94,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":54,"value":125},{"type":54,"value":1124}," 并请用户确认。",{"type":48,"tag":73,"props":1126,"children":1127},{},[1128],{"type":54,"value":1129},"不动原始数据：任何清洗、纠错都生成新文件（research-workspace 只读原则）。",{"type":48,"tag":73,"props":1131,"children":1132},{},[1133],{"type":54,"value":1134},"不管理远程与集群任务：SSH 远程算力见 remote-compute，Slurm 集群见 hpc-slurm，长任务后台管理见 run-monitor。",{"type":48,"tag":73,"props":1136,"children":1137},{},[1138],{"type":54,"value":1139},"不保证统计正确性：stats_integrity_check.py 只做格式与一致性机检，显著性解释、多重比较校正等仍需用户与 reviewer 把关。",{"type":48,"tag":73,"props":1141,"children":1142},{},[1143],{"type":54,"value":1144},"不自动安装系统级软件：装 Python 本身、装 uv 属环境准备，向用户说明后由用户执行。",{"type":48,"tag":57,"props":1146,"children":1148},{"id":1147},"收尾与下一步",[1149],{"type":54,"value":1147},{"type":48,"tag":295,"props":1151,"children":1152},{},[1153,1165,1170,1175],{"type":48,"tag":73,"props":1154,"children":1155},{},[1156,1158,1163],{"type":54,"value":1157},"产物进入报告或论文前：刷新 ",{"type":48,"tag":94,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":54,"value":673},{"type":54,"value":1164},"、确认 provenance 登记完整、跑 stats_integrity_check.py 清零 error。",{"type":48,"tag":73,"props":1166,"children":1167},{},[1168],{"type":54,"value":1169},"分析结论要支撑论文级论断时，进入 evidence-capsule 冻结流程（脚本、环境、数据版本一并打包）。",{"type":48,"tag":73,"props":1171,"children":1172},{},[1173],{"type":54,"value":1174},"报告交付前按 reviewer-protocol 接受审查；数字类意见（check=number）与本技能体检结果一并处理。",{"type":48,"tag":73,"props":1176,"children":1177},{},[1178],{"type":54,"value":1179},"分析耗时超过分钟级时，改用 run-monitor 后台运行，不要让人机会话空等任务结束。",{"type":48,"tag":1181,"props":1182,"children":1183},"style",{},[1184],{"type":54,"value":1185},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1187,"total":1388},[1188,1212,1228,1247,1262,1282,1300,1318,1333,1349,1368,1378],{"slug":1189,"name":1189,"fn":1190,"description":1191,"org":1192,"tags":1193,"stars":1209,"repoUrl":1210,"updatedAt":1211},"android-native-dev","develop Android native applications","Android native application development and UI design guide. Covers Material Design 3, Kotlin\u002FCompose development, project configuration, accessibility, and build troubleshooting. Read this before Android native application development.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1194,1197,1200,1203,1206],{"name":1195,"slug":1196,"type":16},"Accessibility","accessibility",{"name":1198,"slug":1199,"type":16},"Android","android",{"name":1201,"slug":1202,"type":16},"Kotlin","kotlin",{"name":1204,"slug":1205,"type":16},"Mobile","mobile",{"name":1207,"slug":1208,"type":16},"UI Components","ui-components",13030,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002Fskills","2026-07-13T06:16:54.247834",{"slug":1213,"name":1213,"fn":1214,"description":1215,"org":1216,"tags":1217,"stars":1209,"repoUrl":1210,"updatedAt":1227},"buddy-sings","generate singing performances for AI companions","Use when user wants their Claude Code pet (\u002Fbuddy) to sing a song. Triggers on any request that combines the concept of their Claude Code buddy, pet, or companion with singing or music. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1218,1221,1224],{"name":1219,"slug":1220,"type":16},"Agents","agents",{"name":1222,"slug":1223,"type":16},"Audio","audio",{"name":1225,"slug":1226,"type":16},"Creative","creative","2026-07-13T06:16:35.130644",{"slug":1229,"name":1229,"fn":1230,"description":1231,"org":1232,"tags":1233,"stars":1209,"repoUrl":1210,"updatedAt":1246},"color-font-skill","select color palettes and font pairings","Choose presentation-ready color palettes and font pairings for PPT\u002Fdesign tasks. Use when users ask for visual theme choices, brand-safe palettes, or font recommendations. Triggers include: 配色, 色板, 字体, color palette, font, PPT配色, 字体搭配.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1234,1237,1240,1243],{"name":1235,"slug":1236,"type":16},"Design","design",{"name":1238,"slug":1239,"type":16},"Presentations","presentations",{"name":1241,"slug":1242,"type":16},"Themes","themes",{"name":1244,"slug":1245,"type":16},"Typography","typography","2026-07-13T06:17:02.785587",{"slug":1248,"name":1248,"fn":1249,"description":1250,"org":1251,"tags":1252,"stars":1209,"repoUrl":1210,"updatedAt":1261},"design-style-skill","select visual design systems for presentations","Select a consistent visual design system for PPT slides using radius\u002Fspacing style recipes. Use when users ask for overall style direction or component styling consistency. Includes Sharp\u002FSoft\u002FRounded\u002FPill recipes, component mappings, typography\u002Fspacing rules, and mixing guidance. Triggers: 风格, style, radius, spacing, 圆角, 间距, PPT风格, 视觉风格, design style, component style.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1253,1254,1257,1260],{"name":1235,"slug":1236,"type":16},{"name":1255,"slug":1256,"type":16},"Design System","design-system",{"name":1258,"slug":1259,"type":16},"PowerPoint","powerpoint",{"name":1238,"slug":1239,"type":16},"2026-07-13T06:17:10.398389",{"slug":1263,"name":1263,"fn":1264,"description":1265,"org":1266,"tags":1267,"stars":1209,"repoUrl":1210,"updatedAt":1281},"flutter-dev","build cross-platform apps with Flutter","Flutter cross-platform development guide covering widget patterns, Riverpod\u002FBloc state management, GoRouter navigation, performance optimization, and platform-specific implementations. Includes const optimization, responsive layouts, testing strategies, and DevTools profiling.\nUse when: building Flutter apps, implementing state management (Riverpod\u002FBloc), setting up GoRouter navigation, creating custom widgets, optimizing performance, writing widget tests, cross-platform development.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1268,1271,1274,1275,1278],{"name":1269,"slug":1270,"type":16},"Dart","dart",{"name":1272,"slug":1273,"type":16},"Flutter","flutter",{"name":1204,"slug":1205,"type":16},{"name":1276,"slug":1277,"type":16},"Performance","performance",{"name":1279,"slug":1280,"type":16},"State Management","state-management","2026-07-13T06:16:36.626679",{"slug":1283,"name":1283,"fn":1284,"description":1285,"org":1286,"tags":1287,"stars":1209,"repoUrl":1210,"updatedAt":1299},"frontend-dev","build visually striking frontend web pages","Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1288,1291,1292,1293,1296],{"name":1289,"slug":1290,"type":16},"Animation","animation",{"name":1225,"slug":1226,"type":16},{"name":1235,"slug":1236,"type":16},{"name":1294,"slug":1295,"type":16},"Frontend","frontend",{"name":1297,"slug":1298,"type":16},"Web Development","web-development","2026-07-13T06:16:39.108827",{"slug":1301,"name":1301,"fn":1302,"description":1303,"org":1304,"tags":1305,"stars":1209,"repoUrl":1210,"updatedAt":1317},"fullstack-dev","build full-stack web applications","Full-stack backend architecture and frontend-backend integration guide.\nTRIGGER when: building a full-stack app, creating REST API with frontend, scaffolding backend service,\nbuilding todo app, building CRUD app, building real-time app, building chat app,\nExpress + React, Next.js API, Node.js backend, Python backend, Go backend,\ndesigning service layers, implementing error handling, managing config\u002Fauth,\nsetting up API clients, implementing auth flows, handling file uploads,\nadding real-time features (SSE\u002FWebSocket), hardening for production.\nDO NOT TRIGGER when: pure frontend UI work, pure CSS\u002Fstyling, database schema only.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1306,1309,1310,1313,1316],{"name":1307,"slug":1308,"type":16},"Backend","backend",{"name":1294,"slug":1295,"type":16},{"name":1311,"slug":1312,"type":16},"Full-stack","full-stack",{"name":1314,"slug":1315,"type":16},"REST API","rest-api",{"name":1297,"slug":1298,"type":16},"2026-07-13T06:16:43.219005",{"slug":1319,"name":1319,"fn":1320,"description":1321,"org":1322,"tags":1323,"stars":1209,"repoUrl":1210,"updatedAt":1332},"gif-sticker-maker","create animated GIF stickers from photos","Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions.\nUse when: user wants to create cartoon stickers, GIF expressions, emoji packs, animated avatars,\nor convert photos to Funko Pop \u002F Pop Mart blind box style animations.\nTriggers: sticker, GIF, cartoon, emoji, expression pack, avatar animation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1324,1325,1326,1329],{"name":1289,"slug":1290,"type":16},{"name":1225,"slug":1226,"type":16},{"name":1327,"slug":1328,"type":16},"Images","images",{"name":1330,"slug":1331,"type":16},"Media","media","2026-07-13T06:16:51.74461",{"slug":1334,"name":1334,"fn":1335,"description":1336,"org":1337,"tags":1338,"stars":1209,"repoUrl":1210,"updatedAt":1348},"ios-application-dev","develop iOS applications with SwiftUI and UIKit","iOS application development guide covering UIKit, SnapKit, and SwiftUI. Includes touch targets, safe areas, navigation patterns, Dynamic Type, Dark Mode, accessibility, collection views, common UI components, and SwiftUI design guidelines. For detailed references on specific topics, see the reference files.\nUse when: developing iOS apps, implementing UI, reviewing iOS code, working with UIKit\u002FSnapKit\u002FSwiftUI layouts, building iPhone interfaces, Swift mobile development, Apple HIG compliance, iOS accessibility implementation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1339,1340,1343,1344,1347],{"name":1195,"slug":1196,"type":16},{"name":1341,"slug":1342,"type":16},"iOS","ios",{"name":1204,"slug":1205,"type":16},{"name":1345,"slug":1346,"type":16},"SwiftUI","swiftui",{"name":1207,"slug":1208,"type":16},"2026-07-13T06:16:55.686092",{"slug":1350,"name":1350,"fn":1351,"description":1352,"org":1353,"tags":1354,"stars":1209,"repoUrl":1210,"updatedAt":1367},"minimax-docx","create and edit DOCX documents","Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET). Three pipelines: (A) create new documents from scratch, (B) fill\u002Fedit content in existing documents, (C) apply template formatting with XSD validation gate-check. MUST use this skill whenever the user wants to produce, modify, or format a Word document — including when they say \"write a report\", \"draft a proposal\", \"make a contract\", \"fill in this form\", \"reformat to match this template\", or any task whose final output is a .docx file. Even if the user doesn't mention \"docx\" explicitly, if the task implies a printable\u002Fformal document, use this skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1355,1358,1361,1364],{"name":1356,"slug":1357,"type":16},"Documents","documents",{"name":1359,"slug":1360,"type":16},"DOCX","docx",{"name":1362,"slug":1363,"type":16},"Office","office",{"name":1365,"slug":1366,"type":16},"Templates","templates","2026-07-13T06:16:40.461868",{"slug":1369,"name":1369,"fn":1370,"description":1371,"org":1372,"tags":1373,"stars":1209,"repoUrl":1210,"updatedAt":1377},"minimax-music-gen","generate music and audio tracks","Use when user wants to generate music, songs, or audio tracks. Triggers on any request involving music creation, song writing, lyrics generation, audio production, or covers. Also triggers when user provides lyrics and wants them turned into a song, or describes a mood\u002Fscene and wants background music. Supports multilingual triggers — match equivalent phrases in any language. Do NOT use for music playback of existing files, music theory questions, or music recommendation without generation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1374,1375,1376],{"name":1222,"slug":1223,"type":16},{"name":1225,"slug":1226,"type":16},{"name":1330,"slug":1331,"type":16},"2026-07-13T06:16:50.381758",{"slug":1379,"name":1379,"fn":1380,"description":1381,"org":1382,"tags":1383,"stars":1209,"repoUrl":1210,"updatedAt":1387},"minimax-music-playlist","generate personalized music playlists","Generate personalized music playlists by analyzing the user's music taste and generation feedback history. Triggers on any request involving playlist generation, music taste profiling, or personalized music recommendations. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1384,1385,1386],{"name":1222,"slug":1223,"type":16},{"name":1225,"slug":1226,"type":16},{"name":1330,"slug":1331,"type":16},"2026-07-13T06:16:57.002997",84,{"items":1390,"total":1489},[1391,1407,1426,1438,1448,1463,1477],{"slug":1392,"name":1392,"fn":1393,"description":1394,"org":1395,"tags":1396,"stars":26,"repoUrl":27,"updatedAt":1406},"article2tasks","convert articles into Dida365 tasks","将技术周报（批量）或单篇文章整理为滴答清单待办事项，自动分类到已有清单并打标签，全程通过 MCP 写入，跨平台无需任何本地脚本。当用户提供周报内容、文章链接，或提及「周报」「文章汇总」「添加到滴答」时，使用此技能。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1397,1400,1403],{"name":1398,"slug":1399,"type":16},"Content Creation","content-creation",{"name":1401,"slug":1402,"type":16},"MCP","mcp",{"name":1404,"slug":1405,"type":16},"Task Management","task-management","2026-08-18T03:49:38.751656",{"slug":1408,"name":1408,"fn":1409,"description":1410,"org":1411,"tags":1412,"stars":26,"repoUrl":27,"updatedAt":1425},"citation-verify","verify academic citation accuracy","当用户需要核验参考文献真实性、检查 BibTeX 条目是否有误、审查论文引用是否可靠、 排查 bibliography 中的错误条目、验证 DOI 与题录是否对得上、发现参考文献张冠李戴、 做投稿前引用体检或审稿引用抽查时使用。同义场景：参考文献核验、引用核查、 文献真伪鉴别、bib 文件检查、参考文献纠错、引用元数据比对、 \"帮我看看这些参考文献有没有问题\"\"这个 DOI 对得上吗\"\"有没有编造的引用\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1413,1416,1419,1422],{"name":1414,"slug":1415,"type":16},"Code Analysis","code-analysis",{"name":1417,"slug":1418,"type":16},"Documentation","documentation",{"name":1420,"slug":1421,"type":16},"QA","qa",{"name":1423,"slug":1424,"type":16},"Research","research","2026-08-21T03:59:17.615117",{"slug":1427,"name":1427,"fn":1428,"description":1429,"org":1430,"tags":1431,"stars":26,"repoUrl":27,"updatedAt":1437},"claim-check","verify research claims against evidence","当需要检查论文草稿中的事实性论断是否有证据支撑、做引用-论断对齐审计、 找出没有出处的陈述、核对文内引用是否真能支撑所在句子时加载使用； 通常由 evidence-loop 或审稿类流程调用，不直接面向用户。同义场景： 论断支撑检查、claim 支撑审计、无支撑断言排查、证据覆盖检查、 引用与论断对齐、\"这段话有没有文献撑\"\"哪些说法没有引用\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1432,1435,1436],{"name":1433,"slug":1434,"type":16},"Audit","audit",{"name":1414,"slug":1415,"type":16},{"name":1423,"slug":1424,"type":16},"2026-08-21T03:59:02.154691",{"slug":1439,"name":1439,"fn":1440,"description":1441,"org":1442,"tags":1443,"stars":26,"repoUrl":27,"updatedAt":1447},"cn-literature","search and organize Chinese academic literature","当用户需要检索或整理中文文献（CNKI 知网、万方、维普、超星）、把中文数据库 导出的题录文件解析成统一 PaperDocument、或把中文文献与英文检索结果合并去重 时使用。同义场景：中文文献检索、知网导出题录解析、万方检索、Refworks\u002FEndNote 格式转换、\"帮我把这份 CNKI 导出的 txt 整理成文献表\"\"中文核心期刊上关于 X 有哪些研究\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1444,1445,1446],{"name":21,"slug":22,"type":16},{"name":1356,"slug":1357,"type":16},{"name":1423,"slug":1424,"type":16},"2026-08-21T03:59:12.24404",{"slug":1449,"name":1449,"fn":1450,"description":1451,"org":1452,"tags":1453,"stars":26,"repoUrl":27,"updatedAt":1462},"cold-start-interview","initialize research profiles via interviews","当用户首次使用科研工作台、研究画像仍为空白，或用户主动说\"先做个访谈\"\"重新设置我的研究信息\"\"初始化画像\"\"cold start\"\"重新 interview\"时使用。本技能通过结构化访谈收集用户的研究领域、常用数据源、算力环境、写作语言与目标期刊、引用格式、团队协作规范、伦理合规要求，并把回答以散文形式写回插件根目录 CLAUDE.md 的研究画像部分。支持 quick（2 分钟 5 问）、full（完整 15 问）、--redo（推翻重谈）、--check（只检查画像完整度不提问）四种模式，支持中断后续谈。同义触发场景：新用户引导、首次配置、研究背景调查、填研究档案、更新个人研究信息、check 画像。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1454,1455,1458,1461],{"name":1417,"slug":1418,"type":16},{"name":1456,"slug":1457,"type":16},"Onboarding","onboarding",{"name":1459,"slug":1460,"type":16},"Productivity","productivity",{"name":1423,"slug":1424,"type":16},"2026-08-21T03:59:58.579998",{"slug":1464,"name":1464,"fn":1465,"description":1466,"org":1467,"tags":1468,"stars":26,"repoUrl":27,"updatedAt":1476},"customize","customize research guardrails and settings","当用户想修改研究画像或共享守则（guardrails）时使用：换了研究领域、换了目标期刊、换了引用格式、换了算力环境、合规要求变化、想调整某条 guardrail 的严格程度。同义触发场景：改一下画像、更新我的研究信息、修改 CLAUDE.md、调整设置、换引用格式、customize、个性化配置、改规则、重新配置工作台。本技能是画像与守则的唯一维护入口：读取 CLAUDE.md、与用户逐项确认修改点、写回文件、并明确告知哪些 skill 的行为会因此变化。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1469,1472,1475],{"name":1470,"slug":1471,"type":16},"Best Practices","best-practices",{"name":1473,"slug":1474,"type":16},"Configuration","configuration",{"name":1423,"slug":1424,"type":16},"2026-08-21T03:59:35.867596",{"slug":1478,"name":1478,"fn":1479,"description":1480,"org":1481,"tags":1482,"stars":26,"repoUrl":27,"updatedAt":1488},"dida365","manage Dida365 tasks and habits","Manage 滴答清单 (Dida365 China) tasks, lists, habits, focus records and countdowns through the official Dida365 MCP server at mcp.dida365.com. Use when the user asks to check, plan, create, update, complete or review tasks and habits on dida365.com, or asks about focus history and countdowns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1483,1484,1487],{"name":1401,"slug":1402,"type":16},{"name":1485,"slug":1486,"type":16},"Scheduling","scheduling",{"name":1404,"slug":1405,"type":16},"2026-08-18T03:49:37.126385",36]