You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/curate-aroma-data/SKILL.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,8 @@ description: Use AromaNexus to validate, normalize, enrich, and export flavor, o
7
7
8
8
Build traceable compound tables through the repository's `aromanexus` CLI. Keep the skill as an orchestration layer; modify provider behavior in the Python package, not here.
9
9
10
+
If the console launcher is unavailable, replace `aromanexus ...` with the equivalent `python -m aromanexus ...` invocation.
11
+
10
12
## Workflow
11
13
12
14
1. Inspect the input without modifying it.
@@ -21,12 +23,14 @@ Build traceable compound tables through the repository's `aromanexus` CLI. Keep
21
23
- Use Pyrfume only for explicitly selected archives after reviewing each manifest note.
22
24
- Use M2OR only when receptor bioassay evidence is relevant; label species and assay scope.
23
25
3. Preview the operation.
24
-
- State the input, selected worksheet for XLSX, new output path, selected provider, expected columns, skip patterns, approximate request count, cache behavior, and material access caveats.
26
+
- State the input, selected worksheet for XLSX, new output path, selected provider, expected columns, skip patterns, whether odor annotations are requested, any existing-CAS confirmation column, approximate request count, cache behavior, and material access caveats.
25
27
- Write a sibling output by default. Never reuse the input path as the output path; `--force` is only for a separate existing destination.
26
28
- Keep XLSX input and output when worksheet formulas, formatting, or other workbook content must survive; CSV/TSV output is a flat export.
@@ -35,10 +39,10 @@ Build traceable compound tables through the repository's `aromanexus` CLI. Keep
35
39
- For XLSX only, append `--sheet "SHEET"` to any table command when the target is not the first worksheet. Never pass `--sheet` for CSV or TSV.
36
40
5. Verify the result.
37
41
- Re-run the inspection script on the same worksheet for XLSX, or without `--sheet` for CSV/TSV.
38
-
- Confirm identical row order and row count, expected new fields, typed status counts, source URL, retrieval time, version, and license/access fields.
42
+
- Confirm identical row order and row count, expected new fields, typed status counts, source URL, retrieval time, version, and license/access fields. Treat a blank retrieval time as correct when no provider or cached representation was obtained, including an explicit pre-request skip.
39
43
- For XLSX output, also compare worksheet order and names, per-sheet content digests, workbook properties, non-target-sheet content, untargeted source formulas and cached values, styles, dimensions, and reported workbook features.
40
44
- Treat `PubChem Status` as provider execution state, not proof of a uniquely resolved CAS. Check `PubChem CAS Resolution`, candidate count, and `Resolved CAS` separately.
41
-
- Leave `multiple`and `missing` CAS resolutions unresolved; retain all candidates and route only the affected rows to a targeted fallback source or manual review.
45
+
- Leave `multiple`, `missing`, `input_cas_conflict`, and `input_cas_invalid` CAS resolutions unresolved; retain all candidates and route only the affected rows to a targeted fallback source or manual review.
42
46
- Treat `http_error`, `network_error`, `parse_error`, `missing_data`, `data_error`, `partial`, `blocked`, and `skipped` separately from `not_found`.
43
47
- Consult [references/output-schema.md](references/output-schema.md) when reconciling columns or statuses.
44
48
6. Report the output path, provider versions, status counts, partial failures, and any source terms the user must still review.
@@ -54,3 +58,4 @@ Build traceable compound tables through the repository's `aromanexus` CLI. Keep
54
58
- Preserve merged cells outside the selected tabular rectangle; stop before provider calls when a merge intersects that rectangle.
55
59
- Stop before provider calls if XLSX preflight reports a known unsafe feature or any OOXML package part that the in-memory trial write would discard.
56
60
- Never select the first PubChem CAS candidate merely because the provider status is `ok`.
61
+
- Use an existing CAS column only to confirm a returned candidate for a non-CAS query. Never overwrite it or use a conflicting/invalid value to force resolution.
Copy file name to clipboardExpand all lines: .agents/skills/curate-aroma-data/references/output-schema.md
+15-2Lines changed: 15 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,11 +15,14 @@ Keep provider execution and CAS curation in separate columns:
15
15
-`PubChem CAS Numbers`: every checksum-valid candidate retained for review.
16
16
-`PubChem CAS Candidate Count`: the number of distinct valid candidates.
17
17
-`PubChem CAS Resolution`: the conservative resolution decision.
18
-
-`Resolved CAS`: populate only for `query_confirmed` or `unique`.
18
+
-`Resolved CAS`: populate only for `query_confirmed`, `input_cas_confirmed`, or `unique`.
19
19
20
20
Interpret `PubChem CAS Resolution` as follows:
21
21
22
22
-`query_confirmed`: the input was a checksum-valid CAS and PubChem resolved its record.
23
+
-`input_cas_confirmed`: for a non-CAS query, the optional existing CAS was valid and appeared among the returned candidates.
24
+
-`input_cas_conflict`: the optional existing CAS was valid but absent from the returned candidates; keep `Resolved CAS` empty.
25
+
-`input_cas_invalid`: the optional existing CAS was nonblank but invalid; keep `Resolved CAS` empty.
23
26
-`unique`: a successful name lookup returned exactly one valid CAS candidate.
24
27
-`multiple`: more than one valid candidate remains; keep `Resolved CAS` empty.
25
28
-`missing`: a successful record returned no valid CAS candidate; keep `Resolved CAS` empty.
@@ -43,10 +46,20 @@ Interpret `PubChem CAS Resolution` as follows:
43
46
44
47
Do not merge an access, transport, HTTP, snapshot, parse, or partial failure into `not_found`.
45
48
49
+
When the optional existing-CAS cell is blank or missing, use the normal `unique`, `multiple`, or `missing` rule. A valid CAS query itself always takes precedence as `query_confirmed`. Never modify the existing-CAS column or remove candidates from `PubChem CAS Numbers`.
50
+
51
+
For a `partial` provider result, accept only positive `query_confirmed` or `input_cas_confirmed` evidence. Do not infer `unique`, `multiple`, `missing`, `input_cas_conflict`, or `input_cas_invalid` from a potentially incomplete secondary response; use `not_evaluated` instead.
52
+
53
+
## Optional odor columns
54
+
55
+
PubChem odor enrichment is enabled by default. With `--no-odor`, skip PUG-View requests and do not add or update `PubChem Odor`, `PubChem Odor Annotations`, `PubChem Odor Sources`, `PubChem Odor Source URLs`, or `PubChem Odor License URLs`. Preserve any such columns already present in the input.
56
+
46
57
## Provenance
47
58
48
59
Keep provider status, source URL, retrieval time, cache-hit flag, pinned version or snapshot, license URL, and message columns. For PubChem odor text, also keep contributor source names, URLs, and license URLs.
49
60
61
+
`Retrieved At` is the timestamp of an actual provider or cached representation. Leave it empty for outcomes decided before any representation was obtained, including explicit skips, local input validation failures, and transport failures before a response. A received HTTP or parse-error response retains its retrieval timestamp.
62
+
50
63
## Workbook QA
51
64
52
65
After every run, confirm:
@@ -57,7 +70,7 @@ After every run, confirm:
57
70
4. Every processed row has a typed status.
58
71
5. Remote strings beginning with `=`, `+`, `-`, or `@` are stored as literal text.
59
72
6. Partial outputs are reported separately if a run is interrupted.
60
-
7.`multiple`, `missing`, `not_evaluated`, and `skipped` PubChem CAS resolutions never contain an automatic `Resolved CAS`.
73
+
7.`multiple`, `missing`, `input_cas_conflict`, `input_cas_invalid`, `not_evaluated`, and `skipped` PubChem CAS resolutions never contain an automatic `Resolved CAS`.
61
74
8. XLSX worksheet order and names match the input, and supported non-target worksheet content and features are unchanged.
62
75
9. Source formulas and cached results outside explicitly targeted output cells, plus styles, dimensions, freeze panes, filters, tables, data validation, conditional formatting, and workbook properties, remain present where applicable.
63
76
10. Merged cells outside the selected tabular rectangle remain present; a merge intersecting that rectangle is rejected before provider access.
PubChem 会单独报告 CAS 解析状态。仅当查询本身是已确认的 CAS、名称查询只剩一个校验有效的候选,或 `--existing-cas-column` 中的有效 CAS 确实出现在返回候选里时,才填入 `Resolved CAS`。已有 CAS 与候选冲突或本身无效时保持未解析;空单元格会回退到原有的 `unique`、`multiple` 或 `missing` 规则。对于 `partial` 数据源结果,只接受查询或已有 CAS 的正向确认;依赖完整候选集合的判断会保持 `not_evaluated`。原始标识符列和已有 CAS 列都不会被改写;若已有 CAS 列名与当前输出列重叠,CLI 会在请求前拒绝运行。
@@ -125,7 +134,11 @@ For XLSX-to-XLSX runs, AromaNexus starts from an immutable copy of the source pa
125
134
126
135
[Openpyxl cannot preserve every OOXML feature](https://openpyxl.readthedocs.io/en/3.1/tutorial.html). AromaNexus therefore performs an in-memory trial round trip and stops before provider calls when it detects known unsafe content—such as drawing shapes, comments, ActiveX/OLE controls, slicers, threaded comments, VML, or digital signatures—or any package part that the trial would discard. Excel's optional calculation chain may be removed so spreadsheet software can rebuild it. An explicit CSV/TSV output is a flat export and cannot retain Excel-only content.
127
136
128
-
By default, provenance columns include provider status, source URL, retrieval timestamp, cache hit, pinned version, license URL, and a diagnostic message. PubChem reports CAS resolution separately and populates `Resolved CAS` only when the input is a confirmed CAS or exactly one checksum-valid candidate remains. Multiple or missing candidates stay unresolved. Use `--no-provenance` only for legacy-shaped output.
137
+
By default, provenance columns include provider status, source URL, retrieval timestamp, cache hit, pinned version, license URL, and a diagnostic message. `Retrieved At` records when a provider or cached representation was actually obtained. It stays empty for local pre-request outcomes such as an explicit `skipped` row, invalid input, or a network failure before any response. Use `--no-provenance` only for legacy-shaped output.
138
+
139
+
PubChem reports CAS resolution separately and populates `Resolved CAS` only when the query itself is a confirmed CAS, a name lookup has exactly one checksum-valid candidate, or `--existing-cas-column` supplies a valid CAS that appears among the returned candidates. A conflicting or invalid existing CAS keeps the result unresolved; a blank cell falls back to the normal `unique`, `multiple`, or `missing` decision. For a `partial` provider result, only positive query or existing-CAS confirmation can resolve the row; decisions that depend on a complete candidate set remain `not_evaluated`. The original identifier and existing-CAS columns are never rewritten, and the CLI rejects an existing-CAS column name that overlaps an active output column.
140
+
141
+
PubChem odor enrichment is enabled by default. `--no-odor` skips PUG-View requests and does not add or update `PubChem Odor`, `PubChem Odor Annotations`, `PubChem Odor Sources`, `PubChem Odor Source URLs`, or `PubChem Odor License URLs`. If those columns already exist in the input, they are preserved unchanged.
0 commit comments