@delta-infra/cli 1.1.17 → 1.1.19
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.
- package/README.md +520 -506
- package/checksums.txt +5 -5
- package/package.json +3 -2
- package/scripts/install-wizard.js +688 -701
- package/scripts/install.js +442 -442
- package/scripts/run.js +65 -65
- package/skills/delta-protein/AGENTS.md +73 -0
- package/skills/delta-protein/SKILL.md +389 -0
- package/skills/delta-protein/agents/openai.yaml +4 -0
- package/skills/delta-protein/references/bfitter.md +64 -0
- package/skills/delta-protein/references/catapro_predict.md +63 -0
- package/skills/delta-protein/references/catpred_predict.md +65 -0
- package/skills/delta-protein/references/caver_tunnel_analyze.md +63 -0
- package/skills/delta-protein/references/consensus_mutation.md +61 -0
- package/skills/delta-protein/references/consurf_predict.md +67 -0
- package/skills/delta-protein/references/crop_sequence.md +69 -0
- package/skills/delta-protein/references/dock.md +82 -0
- package/skills/delta-protein/references/dock_score.md +70 -0
- package/skills/delta-protein/references/easifa_predict_active_site.md +70 -0
- package/skills/delta-protein/references/ephod_predict_mutation.md +66 -0
- package/skills/delta-protein/references/ephod_predict_protein.md +61 -0
- package/skills/delta-protein/references/esmfold2_predict.md +67 -0
- package/skills/delta-protein/references/evcouplings_mutation.md +64 -0
- package/skills/delta-protein/references/fasta_to_sequence.md +59 -0
- package/skills/delta-protein/references/foldseek.md +61 -0
- package/skills/delta-protein/references/generate_msa.md +61 -0
- package/skills/delta-protein/references/interpro_analyze.md +63 -0
- package/skills/delta-protein/references/mpnn_design_sequence.md +71 -0
- package/skills/delta-protein/references/multievolve.md +73 -0
- package/skills/delta-protein/references/pisa_query.md +70 -0
- package/skills/delta-protein/references/plip_analyze.md +65 -0
- package/skills/delta-protein/references/pocket_prediction.md +63 -0
- package/skills/delta-protein/references/protein_design.md +65 -0
- package/skills/delta-protein/references/protein_evolution.md +77 -0
- package/skills/delta-protein/references/protein_sol_predict_mutation.md +66 -0
- package/skills/delta-protein/references/protein_sol_predict_protein.md +61 -0
- package/skills/delta-protein/references/protenix.md +66 -0
- package/skills/delta-protein/references/protrek_search.md +90 -0
- package/skills/delta-protein/references/pubchem_search.md +68 -0
- package/skills/delta-protein/references/pubmed_search.md +79 -0
- package/skills/delta-protein/references/reap_design_primer.md +69 -0
- package/skills/delta-protein/references/rfd3_design.md +65 -0
- package/skills/delta-protein/references/structure_to_sequence.md +61 -0
- package/skills/delta-protein/references/summarize_result.md +68 -0
- package/skills/delta-protein/references/surface_charge.md +84 -0
- package/skills/delta-protein/references/uniprot_batch_query.md +63 -0
- package/skills/delta-protein/references/uniprot_query.md +64 -0
- package/skills/delta-protein/references/zero_shot_mutant_candidates.md +76 -0
- package/skills/delta-protein/scripts/gen_references.py +167 -0
- package/skills/delta-protein/scripts/output_metadata.json +275 -0
- package/skills/delta-sandbox/SKILL.md +388 -388
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +58 -58
- package/skills/delta-sandbox/references/lifecycle.md +100 -100
- package/skills/delta-sandbox/references/recipes.md +138 -138
- package/skills/delta-science/AGENTS.md +47 -47
- package/skills/delta-science/SKILL.md +227 -185
- package/skills/delta-science/agents/openai.yaml +4 -4
- package/skills/delta-science/references/antbo.md +105 -100
- package/skills/delta-science/references/delta-bo.md +92 -89
- package/skills/delta-science/references/gsasii.md +118 -116
- package/skills/delta-science/references/lammps.md +68 -66
- package/skills/delta-science/references/ldm-bo.md +132 -129
- package/skills/delta-science/references/materials-design.md +130 -118
- package/skills/delta-science/references/pubchem.md +128 -126
- package/skills/delta-science/references/pymatgen.md +69 -68
- package/skills/delta-science/references/qe.md +134 -125
- package/skills/delta-science/references/rdkit.md +141 -138
- package/skills/delta-science/references/strbo.md +95 -87
- package/skills/delta-science/references/synbo.md +201 -198
- package/skills/delta-science/references/xrd.md +619 -101
- package/skills/delta-science/scripts/catalog.py +92 -92
- package/skills/delta-science/scripts/generated_catalog.py +69 -69
- package/skills/delta-science/scripts/invoke.py +346 -346
- package/skills/delta-shared/SKILL.md +113 -111
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/manifest.json +20 -19
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Planner
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
```yaml
|
|
10
|
-
required_outputs:
|
|
11
|
-
- kind: file
|
|
12
|
-
extensions: [".json"]
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
>
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
```json
|
|
22
|
-
{"status":"ok","key_metric_1":"value_1","key_metric_2":123}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
> SSE
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- **CUDA
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
## 1. GPU / CUDA
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```text
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
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
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
## 2.
|
|
61
|
-
|
|
62
|
-
```text
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
> `<wd>`
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## 3.
|
|
71
|
-
|
|
72
|
-
```text
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## 4.
|
|
79
|
-
|
|
80
|
-
```text
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
- skill
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
## 5.
|
|
92
|
-
|
|
93
|
-
```text
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
- skill
|
|
101
|
-
|
|
102
|
-
## 6.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
```text
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
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
|
|
118
|
-
|
|
119
|
-
> **GPU
|
|
120
|
-
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
##
|
|
130
|
-
|
|
131
|
-
- **SSE
|
|
132
|
-
- **SSE
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
1
|
+
# Standard task request patterns
|
|
2
|
+
|
|
3
|
+
This file provides recommended request patterns for common tasks handled by `delta-sandbox`. The examples are language-agnostic templates; the actual code is generated or written by the skill inside the sandbox.
|
|
4
|
+
|
|
5
|
+
## `required_outputs` when the Planner calls this skill
|
|
6
|
+
|
|
7
|
+
Every plan step that directly calls `delta-sandbox` should declare that it will write a `.json` file to disk. This allows the host to validate the deliverable in Phase-10B when the skill writes the sandbox `log_file` to the local `result.json` after running the command.
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
required_outputs:
|
|
11
|
+
- kind: file
|
|
12
|
+
extensions: [".json"]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
> This declares that the skill will create a `.json` result file; it does not require `.json` to appear in the user's request. Keep the user's request neutral in its wording, following the templates below.
|
|
16
|
+
|
|
17
|
+
## General script output template
|
|
18
|
+
|
|
19
|
+
To let the skill generate `RESULT:` consistently and avoid asking an LLM to summarise long logs, we recommend that every sandbox script print one line of structured JSON **at the end of execution**:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{"status":"ok","key_metric_1":"value_1","key_metric_2":123}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
> On the SSE path, the **complete frame for `sandbox run` / `run-bg --wait` already includes `result_summary`** (the CLI detects a valid JSON object in the last 50 lines of stdout and injects it, so there is no need to read and parse it manually). The script author only needs to ensure that the last line of stdout is valid JSON; the skill can then take `result_summary` directly from the complete frame. Only if the complete frame lacks this field (because there is no valid JSON at the end) should it fall back to `sandbox read` to read the `log_file` and scan backwards. `--summary` enrichment (including hints) still takes effect only on the legacy-server fallback path.
|
|
26
|
+
|
|
27
|
+
The skill extracts this as the `summary` in `result.json`, then generates `result_summary` and the final `RESULT:` line.
|
|
28
|
+
|
|
29
|
+
**Do not** output marker lines such as `FINAL_ANSWER: ...` or use a `final_answer` field in the JSON. Semantic fields in the summary (such as `output`, `result`, `generated_text` and `final_accuracy`) are enough to express the result.
|
|
30
|
+
|
|
31
|
+
Examples of key fields for different tasks:
|
|
32
|
+
|
|
33
|
+
- **CUDA check**: `status`, `torch_version`, `cuda_available`, `device_name`
|
|
34
|
+
- **Training task**: `status`, `epochs`, `final_loss`, `final_accuracy`, `model_file`
|
|
35
|
+
- **Inference task**: `status`, `input_samples`, `output_file`, `avg_latency_ms`
|
|
36
|
+
- **Data processing**: `status`, `input_rows`, `output_rows`, `output_file`
|
|
37
|
+
- **Compilation/build**: `status`, `build_time_s`, `output_binary`, `tests_passed`
|
|
38
|
+
|
|
39
|
+
## 1. GPU / CUDA availability check
|
|
40
|
+
|
|
41
|
+
Example user request:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
Run the standard PyTorch CUDA self-check script in a GPU sandbox; return exit_code, the torch version, whether CUDA is available, CUDA/cuDNN versions, the GPU name and memory information.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Notes:
|
|
48
|
+
|
|
49
|
+
- Do not include full code expressions such as `torch.cuda.is_available()` in the request; the host may mistake them for a `.cuda` file commitment. The corresponding plan step should still declare `.json` output using the template above.
|
|
50
|
+
- We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
|
|
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
|
+
- The skill extracts this JSON from `log_file` as the `summary` in the local `result.json`, then outputs only one `RESULT: ...` line.
|
|
58
|
+
- The full raw `nvidia-smi` output remains in the sandbox `log_file`.
|
|
59
|
+
|
|
60
|
+
## 2. Run a script the user already has
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
In sandbox <sandbox_id>, run <wd>/train.py with the arguments --epochs 10 --batch-size 32.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> `<wd>` is this sandbox's working directory (`/workspace/{user_id}/{sandbox_id}`; first check it with `delta-cli sandbox working-directory <id>`).
|
|
67
|
+
|
|
68
|
+
Notes: the file already exists, so use the neutral verb `run` rather than a commitment verb such as `create`.
|
|
69
|
+
|
|
70
|
+
## 3. Install dependencies and run a command
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
In the sandbox, run pip install -r <wd>/requirements.txt, then run python <wd>/app.py.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Notes: neither dependency installation nor command execution creates a new deliverable file, so describe them with neutral verbs.
|
|
77
|
+
|
|
78
|
+
## 4. Train and write metrics to disk
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
In a GPU sandbox, run a training script (for example, PyTorch-based MNIST training). When training finishes, print structured JSON at the end of stdout containing epochs, final_loss, final_accuracy and model_file.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Notes:
|
|
85
|
+
|
|
86
|
+
- Training logs can be long; do not have the skill read the entire log and then summarise it. Have the script output the key metrics itself.
|
|
87
|
+
- We recommend that the script finish by printing: `{"status":"ok","epochs":10,"final_loss":0.023,"final_accuracy":0.992,"model_file":"<wd>/model.pt"}`
|
|
88
|
+
- The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, epochs=10, ...`.
|
|
89
|
+
- To save the complete model file, use `sandbox read` or `sandbox upload` as needed; the model file is outside the scope of the `result.json` summary.
|
|
90
|
+
|
|
91
|
+
## 5. General data processing
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
In the sandbox, run a data-processing command that reads <wd>/input.csv and writes <wd>/output.csv, then prints structured JSON at the end of stdout containing input_rows, output_rows and output_file.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Notes:
|
|
98
|
+
|
|
99
|
+
- We recommend that the script finish by printing: `{"status":"ok","input_rows":10000,"output_rows":9876,"output_file":"<wd>/output.csv"}`
|
|
100
|
+
- The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, input_rows=10000, output_rows=9876, output_file=<wd>/output.csv`.
|
|
101
|
+
|
|
102
|
+
## 6. Model inference (Qwen / LLM / vision, etc.)
|
|
103
|
+
|
|
104
|
+
Example user request:
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
Run one inference in a GPU sandbox using Qwen/Qwen2.5-0.5B-Instruct from ModelScope, with "100+10" as input; return the model's output and a summary of CUDA availability.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Notes:
|
|
111
|
+
|
|
112
|
+
- Do not paste complete Python code into the request or specify a host file path (such as `@ROOT/inference.py` or a local absolute path), and do not ask the script to output a `FINAL_ANSWER:` marker line. The skill writes the script, downloads the model and sets the execution path inside the sandbox using `delta-cli sandbox write`.
|
|
113
|
+
- We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
|
|
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
|
+
- The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, cuda_available=True, generated_text=110, ...`.
|
|
118
|
+
|
|
119
|
+
> **Match GPU memory to the model:** The `--gpu-mem` value (in MiB) used to create the sandbox must match the model being run. Larger models and higher precision require more memory; putting a large model in a sandbox with too little `--gpu-mem` will cause OOM directly. The example above uses `Qwen2.5-0.5B` (a small 0.5B model); **do not use it as a memory reference for larger models such as 7B/9B/13B**. Before running a larger model, assess its memory requirements, increase `--gpu-mem` as appropriate, and consider verifying the workflow with a smaller model first.
|
|
120
|
+
|
|
121
|
+
## Notes
|
|
122
|
+
|
|
123
|
+
- Describe tasks in natural language where possible; the skill handles the full code internally.
|
|
124
|
+
- Mention extensions such as `*.py` / `*.json` / `*.csv` explicitly in the request only when the skill will actually create a file.
|
|
125
|
+
- Do not use phrasing such as `The script should output...` that puts a code fragment immediately after a commitment verb.
|
|
126
|
+
- **Task completion is determined by the execution result, not by the presence of a script file.** The Planner and skill should both treat the creation of the local `result.json` as the completion criterion. `required_outputs` must declare `.json`; do not declare only `{"kind": "file"}`.
|
|
127
|
+
- **Do not include complete code blocks or host-file-path concepts in `skill_request`** (such as `@ROOT/...` or `/Users/...`). The script should be written to the sandbox working directory (`/workspace/{user_id}/{sandbox_id}/...`) with `delta-cli sandbox write <id> --source <filename>`.
|
|
128
|
+
|
|
129
|
+
## Local `result.json` content contract
|
|
130
|
+
|
|
131
|
+
- **Preferred SSE path (recommended, one step):** The **complete frame for `sandbox run` / `run-bg --wait` includes `result_summary` directly** (the CLI injects detected trailing JSON from stdout), so the skill can extract it from the complete frame without reading and parsing the log.
|
|
132
|
+
- **SSE fallback path:** If the complete frame lacks `result_summary` (there is no valid JSON at the end of stdout), `delta-cli sandbox read <id> --path <log_file>` reads the run-envelope log file, then scans backwards through stdout to extract trailing JSON. The `log_file` path comes from the SSE `complete` frame (the CLI fills it in if needed) or the `sandbox logs` snapshot (after `finished=true`).
|
|
133
|
+
- **Legacy-server fallback path:** When `run` / `run-bg --wait` falls back to polling, it returns a `CommandResult` envelope whose `data.result_summary` field can be reused directly.
|
|
134
|
+
- The local `result.json` is a **concise summary** for host deliverable validation, not a complete log archive.
|
|
135
|
+
- It must include the `result_summary` field, with content matching the final `RESULT:` line, so the Runner can read the conclusion directly.
|
|
136
|
+
- Write only the key fields (`exit_code`, `finished`, `summary`, `result_summary`, `error`). **Do not** add fields such as `final_answer`.
|
|
137
|
+
- Do not put the full raw `stdout` in `result.json`; the host's `read_file` preview would be truncated, and the Runner might mistake this for a truncated file.
|
|
138
|
+
- Keep the full raw output in the sandbox `log_file` and use `sandbox read` to inspect it when needed.
|
|
@@ -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, xrd)
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## WHERE TO LOOK
|
|
24
|
-
|
|
25
|
-
| Path | Content |
|
|
26
|
-
|------|---------|
|
|
27
|
-
| `SKILL.md` | Service boundary,
|
|
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, xrd)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## WHERE TO LOOK
|
|
24
|
+
|
|
25
|
+
| Path | Content |
|
|
26
|
+
|------|---------|
|
|
27
|
+
| `SKILL.md` | Service boundary, security guardrails (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/`
|