@delta-infra/cli 1.1.13 → 1.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +493 -493
  2. package/checksums.txt +5 -5
  3. package/package.json +1 -1
  4. package/scripts/install-wizard.js +701 -701
  5. package/scripts/install.js +442 -442
  6. package/scripts/run.js +65 -65
  7. package/skills/delta-sandbox/SKILL.md +386 -386
  8. package/skills/delta-sandbox/agents/openai.yaml +4 -4
  9. package/skills/delta-sandbox/references/commands.md +58 -58
  10. package/skills/delta-sandbox/references/lifecycle.md +100 -100
  11. package/skills/delta-sandbox/references/recipes.md +138 -138
  12. package/skills/delta-science/AGENTS.md +47 -47
  13. package/skills/delta-science/SKILL.md +182 -174
  14. package/skills/delta-science/agents/openai.yaml +4 -4
  15. package/skills/delta-science/references/antbo.md +100 -100
  16. package/skills/delta-science/references/delta-bo.md +89 -89
  17. package/skills/delta-science/references/gsasii.md +116 -116
  18. package/skills/delta-science/references/lammps.md +66 -66
  19. package/skills/delta-science/references/ldm-bo.md +129 -129
  20. package/skills/delta-science/references/materials-design.md +118 -118
  21. package/skills/delta-science/references/pubchem.md +126 -126
  22. package/skills/delta-science/references/pymatgen.md +68 -68
  23. package/skills/delta-science/references/qe.md +125 -125
  24. package/skills/delta-science/references/rdkit.md +138 -138
  25. package/skills/delta-science/references/strbo.md +87 -87
  26. package/skills/delta-science/references/synbo.md +198 -198
  27. package/skills/delta-science/scripts/catalog.py +92 -92
  28. package/skills/delta-science/scripts/generated_catalog.py +69 -69
  29. package/skills/delta-science/scripts/invoke.py +346 -346
  30. package/skills/delta-shared/SKILL.md +111 -111
  31. package/skills/delta-shared/agents/openai.yaml +4 -4
  32. package/skills/manifest.json +19 -19
@@ -1,138 +1,138 @@
1
- # 标准任务请求模式
2
-
3
- 本文件提供 `delta-sandbox` 处理常见任务时的推荐请求写法。这些示例是语言无关的模板,实际代码由 skill 在 sandbox 内部生成或写入。
4
-
5
- ## Planner 调用本 skill 时的 required_outputs
6
-
7
- 所有直接调用 `delta-sandbox` 的 plan step 都应该声明会落盘一个 `.json` 文件。这样 skill 运行命令后把 sandbox `log_file` 写入本地 `result.json` 时,host 可以正确通过 Phase-10B deliverable 校验。
8
-
9
- ```yaml
10
- required_outputs:
11
- - kind: file
12
- extensions: [".json"]
13
- ```
14
-
15
- > 说明:这是声明 skill 会创建 `.json` 结果文件,不是要求用户请求中出现 `.json`。用户请求仍按下面的模板使用中性动词。
16
-
17
- ## 通用脚本输出模板
18
-
19
- 为了让 skill 用同一套流程生成 `RESULT:` 并避免大模型去摘要长日志,推荐任何 sandbox 脚本在**执行结束时**打印一行结构化 JSON:
20
-
21
- ```json
22
- {"status":"ok","key_metric_1":"value_1","key_metric_2":123}
23
- ```
24
-
25
- > SSE 路径下 `sandbox run` / `run-bg --wait` 的 **complete 帧已带 `result_summary`**(CLI 检测 stdout 末尾 50 行内的合法 JSON 对象并注入,无需手动 read+parse)。脚本作者保证 stdout 最后一行是合法 JSON 即可,skill 端直接从 complete 帧取 `result_summary`;仅当 complete 帧缺失该字段(末尾无合法 JSON)时才退化为 `sandbox read` 读取 `log_file` 反向扫描提取。`--summary` 富化(含 hints)仍仅旧服务器回退路径生效。
26
-
27
- SKILL 会把它提取为 `result.json` 的 `summary`,并生成 `result_summary` 与最终 `RESULT:` 行。
28
-
29
- **不要**再输出 `FINAL_ANSWER: ...` 这样的标记行,也不要在 JSON 里使用 `final_answer` 字段。summary 里的语义字段(如 `output`、`result`、`generated_text`、`final_accuracy`)已经足够表达结果。
30
-
31
- 不同任务的关键字段示例:
32
-
33
- - **CUDA 检查**:`status`, `torch_version`, `cuda_available`, `device_name`
34
- - **训练任务**:`status`, `epochs`, `final_loss`, `final_accuracy`, `model_file`
35
- - **推理任务**:`status`, `input_samples`, `output_file`, `avg_latency_ms`
36
- - **数据处理**:`status`, `input_rows`, `output_rows`, `output_file`
37
- - **编译/构建**:`status`, `build_time_s`, `output_binary`, `tests_passed`
38
-
39
- ## 1. GPU / CUDA 可用性检查
40
-
41
- 用户请求示例:
42
-
43
- ```text
44
- 在 GPU sandbox 中运行标准 PyTorch CUDA 自检脚本,返回 exit_code、torch 版本、CUDA 是否可用、CUDA/cuDNN 版本、GPU 名称与显存信息。
45
- ```
46
-
47
- 说明:
48
-
49
- - 不要在请求里出现 `torch.cuda.is_available()` 等完整代码 token,避免被 host 误判为 `.cuda` 文件承诺。对应的 plan step 仍按上面模板声明 `.json` 输出。
50
- - 推荐让脚本在 `stdout` 末尾输出一行结构化 JSON,例如:
51
- ```json
52
- {"torch_version":"2.7.0+cu128","cuda_available":true,"device_count":1,
53
- "device_name":"NVIDIA GeForce RTX 3090","tensor_op":"[101.0]",
54
- "memory_before_mb":{"allocated":0,"reserved":0,"max_allocated":0},
55
- "memory_after_mb":{"allocated":0.0005,"reserved":2.0,"max_allocated":0.001}}
56
- ```
57
- - skill 会从 `log_file` 提取这个 JSON 作为本地 `result.json` 的 `summary`,最终只输出一行 `RESULT: ...`。
58
- - 完整 `nvidia-smi` 原始输出保留在 sandbox 的 `log_file` 中。
59
-
60
- ## 2. 运行用户已有的脚本
61
-
62
- ```text
63
- 在 sandbox <sandbox_id> 中运行 <wd>/train.py,参数为 --epochs 10 --batch-size 32。
64
- ```
65
-
66
- > `<wd>` 为该 sandbox 的 working-directory(`/workspace/{user_id}/{sandbox_id}`,先 `delta-cli sandbox working-directory <id>` 查询)。
67
-
68
- 说明:文件已存在,用中性动词 `运行`,不使用 `创建` 等承诺动词。
69
-
70
- ## 3. 安装依赖并执行命令
71
-
72
- ```text
73
- 在 sandbox 中运行 pip install -r <wd>/requirements.txt,然后运行 python <wd>/app.py。
74
- ```
75
-
76
- 说明:依赖安装和命令执行都没有落盘新文件,使用中性动词描述。
77
-
78
- ## 4. 训练并将指标落盘
79
-
80
- ```text
81
- 在 GPU sandbox 中运行训练脚本(例如基于 PyTorch 的 MNIST 训练),训练完成后在 stdout 末尾打印包含 epochs、final_loss、final_accuracy、model_file 的结构化 JSON。
82
- ```
83
-
84
- 说明:
85
-
86
- - 训练日志可能很长,不要让 skill 去读整段日志再摘要;让脚本自己输出关键指标。
87
- - 推荐脚本最终打印:`{"status":"ok","epochs":10,"final_loss":0.023,"final_accuracy":0.992,"model_file":"<wd>/model.pt"}`
88
- - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, epochs=10, ...`。
89
- - 如需保存完整模型文件,可再用 `sandbox read` 或 `sandbox upload` 处理,不属于 `result.json` 的摘要范围。
90
-
91
- ## 5. 通用数据处理
92
-
93
- ```text
94
- 在 sandbox 中运行数据处理命令,读取 <wd>/input.csv,输出 <wd>/output.csv,并在 stdout 末尾打印包含 input_rows、output_rows、output_file 的结构化 JSON。
95
- ```
96
-
97
- 说明:
98
-
99
- - 推荐脚本最终打印:`{"status":"ok","input_rows":10000,"output_rows":9876,"output_file":"<wd>/output.csv"}`
100
- - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, input_rows=10000, output_rows=9876, output_file=<wd>/output.csv`。
101
-
102
- ## 6. 模型推理(Qwen / LLM / 视觉等)
103
-
104
- 用户请求示例:
105
-
106
- ```text
107
- 在 GPU sandbox 中用 ModelScope 上的 Qwen/Qwen2.5-0.5B-Instruct 运行一次推理,输入 "100+10",返回模型的输出结果及 CUDA 可用性摘要。
108
- ```
109
-
110
- 说明:
111
-
112
- - 请求里不要贴完整 Python 代码,也不要指定宿主文件路径(如 `@ROOT/inference.py`、本地绝对路径等),更不要要求脚本输出 `FINAL_ANSWER:` 标记行。脚本内容、模型下载、执行路径都由 skill 内部通过 `delta-cli sandbox write` 写入 sandbox 后运行。
113
- - 推荐让脚本在 `stdout` 末尾打印一行结构化 JSON,例如:
114
- ```json
115
- {"status":"ok","cuda_available":true,"device":"cuda","model":"Qwen/Qwen2.5-0.5B-Instruct","input":"100+10","generated_text":"110"}
116
- ```
117
- - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, cuda_available=True, generated_text=110, ...`。
118
-
119
- > **GPU 显存与模型匹配**:创建 sandbox 时的 `--gpu-mem`(单位 MiB)必须匹配实际运行的模型。模型参数量/精度越大,所需显存越大;把大模型塞进过小的 `--gpu-mem` 会直接 OOM。上面的示例用的是 `Qwen2.5-0.5B`(0.5B 小模型),**不要把它当作更大模型(如 7B/9B/13B)的显存参考**。跑较大模型前先评估其显存需求、适当调大 `--gpu-mem`,并建议先用小模型验证流程是否跑通。
120
-
121
- ## 注意事项
122
-
123
- - 尽量用自然语言描述任务,完整代码由 skill 内部处理。
124
- - 只有在 skill 会真实创建文件时,才在请求中显式写出 `*.py` / `*.json` / `*.csv` 等扩展名。
125
- - 不要使用 `脚本需输出...` 这类把代码片段直接跟在承诺动词后的句式。
126
- - **任务完成的标准是执行结果,不是脚本文件存在**。Planner 和 skill 都要以本地 `result.json` 的生成作为完成标志;`required_outputs` 必须声明 `.json`,不要只声明 `{"kind": "file"}`。
127
- - **`skill_request` 里不要出现完整代码块或宿主文件路径概念**(如 `@ROOT/...`、`/Users/...`)。脚本应通过 `delta-cli sandbox write <id> --source <文件名>` 写入 sandbox 的 working-directory(`/workspace/{user_id}/{sandbox_id}/...`)。
128
-
129
- ## 本地 `result.json` 的内容约定
130
-
131
- - **SSE 首选路径(推荐,一步到位)**:`sandbox run` / `run-bg --wait` 的 **complete 帧直接带 `result_summary`**(CLI 检测 stdout 末尾 JSON 注入),skill 从 complete 帧提取即可,无需 read+parse。
132
- - **SSE 回退路径**:complete 帧缺失 `result_summary`(stdout 末尾无合法 JSON)时,`delta-cli sandbox read <id> --path <log_file>` 读取 run envelope 日志文件 + 反向扫描 stdout 末尾 JSON 提取。`log_file` 路径来自 SSE `complete` 帧(CLI 已兜底补全)或 `sandbox logs` 快照(`finished=true` 后)。
133
- - **旧服务器回退路径**:`run` / `run-bg --wait` 走轮询回退时返回 `CommandResult` 信封,可直接复用 `data.result_summary` 字段。
134
- - 本地 `result.json` 是一份**精简摘要**,用于 host deliverable 校验,不是完整日志存档。
135
- - 必须包含 `result_summary` 字段,内容与最终 `RESULT:` 行一致,方便 Runner 直接读取结论。
136
- - 只写入关键字段(`exit_code`、`finished`、`summary`、`result_summary`、`error`)。**不要**额外添加 `final_answer` 等字段。
137
- - 不要把完整原始 `stdout` 塞进 `result.json`,否则 host 的 `read_file` 工具预览时会截断,Runner 可能误以为文件被截断。
138
- - 完整原始输出保留在 sandbox 的 `log_file` 中,需要时再 `sandbox read`。
1
+ # 标准任务请求模式
2
+
3
+ 本文件提供 `delta-sandbox` 处理常见任务时的推荐请求写法。这些示例是语言无关的模板,实际代码由 skill 在 sandbox 内部生成或写入。
4
+
5
+ ## Planner 调用本 skill 时的 required_outputs
6
+
7
+ 所有直接调用 `delta-sandbox` 的 plan step 都应该声明会落盘一个 `.json` 文件。这样 skill 运行命令后把 sandbox `log_file` 写入本地 `result.json` 时,host 可以正确通过 Phase-10B deliverable 校验。
8
+
9
+ ```yaml
10
+ required_outputs:
11
+ - kind: file
12
+ extensions: [".json"]
13
+ ```
14
+
15
+ > 说明:这是声明 skill 会创建 `.json` 结果文件,不是要求用户请求中出现 `.json`。用户请求仍按下面的模板使用中性动词。
16
+
17
+ ## 通用脚本输出模板
18
+
19
+ 为了让 skill 用同一套流程生成 `RESULT:` 并避免大模型去摘要长日志,推荐任何 sandbox 脚本在**执行结束时**打印一行结构化 JSON:
20
+
21
+ ```json
22
+ {"status":"ok","key_metric_1":"value_1","key_metric_2":123}
23
+ ```
24
+
25
+ > SSE 路径下 `sandbox run` / `run-bg --wait` 的 **complete 帧已带 `result_summary`**(CLI 检测 stdout 末尾 50 行内的合法 JSON 对象并注入,无需手动 read+parse)。脚本作者保证 stdout 最后一行是合法 JSON 即可,skill 端直接从 complete 帧取 `result_summary`;仅当 complete 帧缺失该字段(末尾无合法 JSON)时才退化为 `sandbox read` 读取 `log_file` 反向扫描提取。`--summary` 富化(含 hints)仍仅旧服务器回退路径生效。
26
+
27
+ SKILL 会把它提取为 `result.json` 的 `summary`,并生成 `result_summary` 与最终 `RESULT:` 行。
28
+
29
+ **不要**再输出 `FINAL_ANSWER: ...` 这样的标记行,也不要在 JSON 里使用 `final_answer` 字段。summary 里的语义字段(如 `output`、`result`、`generated_text`、`final_accuracy`)已经足够表达结果。
30
+
31
+ 不同任务的关键字段示例:
32
+
33
+ - **CUDA 检查**:`status`, `torch_version`, `cuda_available`, `device_name`
34
+ - **训练任务**:`status`, `epochs`, `final_loss`, `final_accuracy`, `model_file`
35
+ - **推理任务**:`status`, `input_samples`, `output_file`, `avg_latency_ms`
36
+ - **数据处理**:`status`, `input_rows`, `output_rows`, `output_file`
37
+ - **编译/构建**:`status`, `build_time_s`, `output_binary`, `tests_passed`
38
+
39
+ ## 1. GPU / CUDA 可用性检查
40
+
41
+ 用户请求示例:
42
+
43
+ ```text
44
+ 在 GPU sandbox 中运行标准 PyTorch CUDA 自检脚本,返回 exit_code、torch 版本、CUDA 是否可用、CUDA/cuDNN 版本、GPU 名称与显存信息。
45
+ ```
46
+
47
+ 说明:
48
+
49
+ - 不要在请求里出现 `torch.cuda.is_available()` 等完整代码 token,避免被 host 误判为 `.cuda` 文件承诺。对应的 plan step 仍按上面模板声明 `.json` 输出。
50
+ - 推荐让脚本在 `stdout` 末尾输出一行结构化 JSON,例如:
51
+ ```json
52
+ {"torch_version":"2.7.0+cu128","cuda_available":true,"device_count":1,
53
+ "device_name":"NVIDIA GeForce RTX 3090","tensor_op":"[101.0]",
54
+ "memory_before_mb":{"allocated":0,"reserved":0,"max_allocated":0},
55
+ "memory_after_mb":{"allocated":0.0005,"reserved":2.0,"max_allocated":0.001}}
56
+ ```
57
+ - skill 会从 `log_file` 提取这个 JSON 作为本地 `result.json` 的 `summary`,最终只输出一行 `RESULT: ...`。
58
+ - 完整 `nvidia-smi` 原始输出保留在 sandbox 的 `log_file` 中。
59
+
60
+ ## 2. 运行用户已有的脚本
61
+
62
+ ```text
63
+ 在 sandbox <sandbox_id> 中运行 <wd>/train.py,参数为 --epochs 10 --batch-size 32。
64
+ ```
65
+
66
+ > `<wd>` 为该 sandbox 的 working-directory(`/workspace/{user_id}/{sandbox_id}`,先 `delta-cli sandbox working-directory <id>` 查询)。
67
+
68
+ 说明:文件已存在,用中性动词 `运行`,不使用 `创建` 等承诺动词。
69
+
70
+ ## 3. 安装依赖并执行命令
71
+
72
+ ```text
73
+ 在 sandbox 中运行 pip install -r <wd>/requirements.txt,然后运行 python <wd>/app.py。
74
+ ```
75
+
76
+ 说明:依赖安装和命令执行都没有落盘新文件,使用中性动词描述。
77
+
78
+ ## 4. 训练并将指标落盘
79
+
80
+ ```text
81
+ 在 GPU sandbox 中运行训练脚本(例如基于 PyTorch 的 MNIST 训练),训练完成后在 stdout 末尾打印包含 epochs、final_loss、final_accuracy、model_file 的结构化 JSON。
82
+ ```
83
+
84
+ 说明:
85
+
86
+ - 训练日志可能很长,不要让 skill 去读整段日志再摘要;让脚本自己输出关键指标。
87
+ - 推荐脚本最终打印:`{"status":"ok","epochs":10,"final_loss":0.023,"final_accuracy":0.992,"model_file":"<wd>/model.pt"}`
88
+ - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, epochs=10, ...`。
89
+ - 如需保存完整模型文件,可再用 `sandbox read` 或 `sandbox upload` 处理,不属于 `result.json` 的摘要范围。
90
+
91
+ ## 5. 通用数据处理
92
+
93
+ ```text
94
+ 在 sandbox 中运行数据处理命令,读取 <wd>/input.csv,输出 <wd>/output.csv,并在 stdout 末尾打印包含 input_rows、output_rows、output_file 的结构化 JSON。
95
+ ```
96
+
97
+ 说明:
98
+
99
+ - 推荐脚本最终打印:`{"status":"ok","input_rows":10000,"output_rows":9876,"output_file":"<wd>/output.csv"}`
100
+ - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, input_rows=10000, output_rows=9876, output_file=<wd>/output.csv`。
101
+
102
+ ## 6. 模型推理(Qwen / LLM / 视觉等)
103
+
104
+ 用户请求示例:
105
+
106
+ ```text
107
+ 在 GPU sandbox 中用 ModelScope 上的 Qwen/Qwen2.5-0.5B-Instruct 运行一次推理,输入 "100+10",返回模型的输出结果及 CUDA 可用性摘要。
108
+ ```
109
+
110
+ 说明:
111
+
112
+ - 请求里不要贴完整 Python 代码,也不要指定宿主文件路径(如 `@ROOT/inference.py`、本地绝对路径等),更不要要求脚本输出 `FINAL_ANSWER:` 标记行。脚本内容、模型下载、执行路径都由 skill 内部通过 `delta-cli sandbox write` 写入 sandbox 后运行。
113
+ - 推荐让脚本在 `stdout` 末尾打印一行结构化 JSON,例如:
114
+ ```json
115
+ {"status":"ok","cuda_available":true,"device":"cuda","model":"Qwen/Qwen2.5-0.5B-Instruct","input":"100+10","generated_text":"110"}
116
+ ```
117
+ - skill 会把它提取为 `result.json` 的 `summary`,最终输出 `RESULT: exit_code=0, status=ok, cuda_available=True, generated_text=110, ...`。
118
+
119
+ > **GPU 显存与模型匹配**:创建 sandbox 时的 `--gpu-mem`(单位 MiB)必须匹配实际运行的模型。模型参数量/精度越大,所需显存越大;把大模型塞进过小的 `--gpu-mem` 会直接 OOM。上面的示例用的是 `Qwen2.5-0.5B`(0.5B 小模型),**不要把它当作更大模型(如 7B/9B/13B)的显存参考**。跑较大模型前先评估其显存需求、适当调大 `--gpu-mem`,并建议先用小模型验证流程是否跑通。
120
+
121
+ ## 注意事项
122
+
123
+ - 尽量用自然语言描述任务,完整代码由 skill 内部处理。
124
+ - 只有在 skill 会真实创建文件时,才在请求中显式写出 `*.py` / `*.json` / `*.csv` 等扩展名。
125
+ - 不要使用 `脚本需输出...` 这类把代码片段直接跟在承诺动词后的句式。
126
+ - **任务完成的标准是执行结果,不是脚本文件存在**。Planner 和 skill 都要以本地 `result.json` 的生成作为完成标志;`required_outputs` 必须声明 `.json`,不要只声明 `{"kind": "file"}`。
127
+ - **`skill_request` 里不要出现完整代码块或宿主文件路径概念**(如 `@ROOT/...`、`/Users/...`)。脚本应通过 `delta-cli sandbox write <id> --source <文件名>` 写入 sandbox 的 working-directory(`/workspace/{user_id}/{sandbox_id}/...`)。
128
+
129
+ ## 本地 `result.json` 的内容约定
130
+
131
+ - **SSE 首选路径(推荐,一步到位)**:`sandbox run` / `run-bg --wait` 的 **complete 帧直接带 `result_summary`**(CLI 检测 stdout 末尾 JSON 注入),skill 从 complete 帧提取即可,无需 read+parse。
132
+ - **SSE 回退路径**:complete 帧缺失 `result_summary`(stdout 末尾无合法 JSON)时,`delta-cli sandbox read <id> --path <log_file>` 读取 run envelope 日志文件 + 反向扫描 stdout 末尾 JSON 提取。`log_file` 路径来自 SSE `complete` 帧(CLI 已兜底补全)或 `sandbox logs` 快照(`finished=true` 后)。
133
+ - **旧服务器回退路径**:`run` / `run-bg --wait` 走轮询回退时返回 `CommandResult` 信封,可直接复用 `data.result_summary` 字段。
134
+ - 本地 `result.json` 是一份**精简摘要**,用于 host deliverable 校验,不是完整日志存档。
135
+ - 必须包含 `result_summary` 字段,内容与最终 `RESULT:` 行一致,方便 Runner 直接读取结论。
136
+ - 只写入关键字段(`exit_code`、`finished`、`summary`、`result_summary`、`error`)。**不要**额外添加 `final_answer` 等字段。
137
+ - 不要把完整原始 `stdout` 塞进 `result.json`,否则 host 的 `read_file` 工具预览时会截断,Runner 可能误以为文件被截断。
138
+ - 完整原始输出保留在 sandbox 的 `log_file` 中,需要时再 `sandbox read`。
@@ -1,47 +1,47 @@
1
- # skills/delta-science — Science Skill Package
2
-
3
- **Generated:** 2026-09-07
4
- **Parent:** `../AGENTS.md`
5
-
6
- ## OVERVIEW
7
-
8
- Single public `delta-science` skill: the company online-Science unified entrypoint. It is host-neutral and routed exclusively through Delta CLI (`science invoke`, durable `science task`, or controlled `science file`) to the Science Server. Per-tool operation contracts live in `references/` and are loaded on demand; there are no separate planner-visible per-tool skills.
9
-
10
- ## STRUCTURE
11
-
12
- ```
13
- delta-science/
14
- ├── SKILL.md # single entrypoint: routing, CLI-only execution, cross-tool handoff
15
- ├── agents/
16
- │ └── openai.yaml # host agent registration
17
- └── references/
18
- └── <tool>.md # one real tool's operation contract (pubchem, rdkit, pymatgen,
19
- # gsasii, lammps, delta-bo, ldm-bo, materials-design, qe,
20
- # strbo, synbo, antbo)
21
- ```
22
-
23
- ## WHERE TO LOOK
24
-
25
- | Path | Content |
26
- |------|---------|
27
- | `SKILL.md` | Service boundary, 安全红线 (no curl/requests/httpx/browser direct gateway), invoke/task/file templates, cross-tool handoff |
28
- | `references/<tool>.md` | One real tool's authoritative operation, request-field, response and failure schema |
29
-
30
- ## CONVENTIONS
31
-
32
- - JSON endpoint operations go through `delta-cli science invoke`; durable jobs go through `delta-cli science task`; raw/multipart operations go through `delta-cli science file`; no direct HTTP alternate routes
33
- - Tool/endpoint names are exact contracts from the server DB — read the matching reference first; never invent fields/enums from memory
34
- - Success is reported only when subprocess exit is 0 AND top-level JSON `ok` is `true`; `data` holds the service response
35
- - `references/` contains only one real tool per file; routing, service maps, catalogs and workflows belong in `SKILL.md` or live CLI discovery, not here
36
- - `retired_skills` (old per-tool skills) are removed, not referenced
37
- - Host-neutral: `delta-cli` is the sole service boundary; no host-specific tool/env dependencies
38
- - Discover newly-deployed tools via `delta-cli science list` / `delta-cli science endpoints list <tool>`; do not copy the server registry into the Skill
39
-
40
- ## ANTI-PATTERNS
41
-
42
- - Do not call `curl`/`requests`/`httpx`/browser/PowerShell web directly against the gateway
43
- - Do not bypass delta-cli via the legacy `large-discovery-model` Skill or gateway scripts
44
- - Do not fabricate science data or mislabel local-tool (RDKit/pymatgen/LAMMPS/etc.) results as Science results
45
- - Do not create extra JSON/CSV/report/image artifacts unless the user explicitly asks to save/export/plot
46
- - Do not embed realistic credentials or API keys in examples
47
- - Do not break relative links between SKILL.md and `references/`
1
+ # skills/delta-science — Science Skill Package
2
+
3
+ **Generated:** 2026-09-07
4
+ **Parent:** `../AGENTS.md`
5
+
6
+ ## OVERVIEW
7
+
8
+ Single public `delta-science` skill: the company online-Science unified entrypoint. It is host-neutral and routed exclusively through Delta CLI (`science invoke`, durable `science task`, or controlled `science file`) to the Science Server. Per-tool operation contracts live in `references/` and are loaded on demand; there are no separate planner-visible per-tool skills.
9
+
10
+ ## STRUCTURE
11
+
12
+ ```
13
+ delta-science/
14
+ ├── SKILL.md # single entrypoint: routing, CLI-only execution, cross-tool handoff
15
+ ├── agents/
16
+ │ └── openai.yaml # host agent registration
17
+ └── references/
18
+ └── <tool>.md # one real tool's operation contract (pubchem, rdkit, pymatgen,
19
+ # gsasii, lammps, delta-bo, ldm-bo, materials-design, qe,
20
+ # strbo, synbo, antbo)
21
+ ```
22
+
23
+ ## WHERE TO LOOK
24
+
25
+ | Path | Content |
26
+ |------|---------|
27
+ | `SKILL.md` | Service boundary, 安全红线 (no curl/requests/httpx/browser direct gateway), invoke/task/file templates, cross-tool handoff |
28
+ | `references/<tool>.md` | One real tool's authoritative operation, request-field, response and failure schema |
29
+
30
+ ## CONVENTIONS
31
+
32
+ - JSON endpoint operations go through `delta-cli science invoke`; durable jobs go through `delta-cli science task`; raw/multipart operations go through `delta-cli science file`; no direct HTTP alternate routes
33
+ - Tool/endpoint names are exact contracts from the server DB — read the matching reference first; never invent fields/enums from memory
34
+ - Success is reported only when subprocess exit is 0 AND top-level JSON `ok` is `true`; `data` holds the service response
35
+ - `references/` contains only one real tool per file; routing, service maps, catalogs and workflows belong in `SKILL.md` or live CLI discovery, not here
36
+ - `retired_skills` (old per-tool skills) are removed, not referenced
37
+ - Host-neutral: `delta-cli` is the sole service boundary; no host-specific tool/env dependencies
38
+ - Discover newly-deployed tools via `delta-cli science list` / `delta-cli science endpoints list <tool>`; do not copy the server registry into the Skill
39
+
40
+ ## ANTI-PATTERNS
41
+
42
+ - Do not call `curl`/`requests`/`httpx`/browser/PowerShell web directly against the gateway
43
+ - Do not bypass delta-cli via the legacy `large-discovery-model` Skill or gateway scripts
44
+ - Do not fabricate science data or mislabel local-tool (RDKit/pymatgen/LAMMPS/etc.) results as Science results
45
+ - Do not create extra JSON/CSV/report/image artifacts unless the user explicitly asks to save/export/plot
46
+ - Do not embed realistic credentials or API keys in examples
47
+ - Do not break relative links between SKILL.md and `references/`