|
| 1 | +--- |
| 2 | +name: curate-flavor-data |
| 3 | +description: Validate, normalize, enrich, and export flavor, odor, aroma, and chemical-sensory datasets with source-level provenance. Use for XLSX, CSV, or TSV workbooks containing CAS numbers, compound names, calculated retention indices, sensory descriptors, odor thresholds, or olfactory-receptor evidence; for selecting among NIST, PubChem, Pyrfume, M2OR, MFFI, and the permission-gated ChemicalBook compatibility connector; and for verifying analysis-ready outputs. Do not use to bypass access controls, relicense source data, or make biomedical or machine-learning claims unsupported by the exported evidence. |
| 4 | +--- |
| 5 | + |
| 6 | +# Curate Flavor Data |
| 7 | + |
| 8 | +Build traceable compound tables through the repository's `flavor-data` CLI. Keep the skill as an orchestration layer; modify provider behavior in the Python package, not here. |
| 9 | + |
| 10 | +## Workflow |
| 11 | + |
| 12 | +1. Inspect the input without modifying it. |
| 13 | + - Run `python .agents/skills/curate-flavor-data/scripts/inspect_workbook.py INPUT` from the repository root. |
| 14 | + - Confirm the row count, exact column names, identifier quality, duplicates, and formula-like cells. |
| 15 | +2. Choose the smallest provider set that supplies the requested fields. |
| 16 | + - Read [references/provider-matrix.md](references/provider-matrix.md) before any network or browser operation. |
| 17 | + - Prefer PubChem for canonical identity and sourced odor annotations. |
| 18 | + - Use NIST only for the existing retention-index or name-resolution workflows. |
| 19 | + - Use Pyrfume only for explicitly selected archives after reviewing each manifest note. |
| 20 | + - Use M2OR only when receptor bioassay evidence is relevant; label species and assay scope. |
| 21 | +3. Preview the operation. |
| 22 | + - State the input, new output path, selected provider, expected columns, approximate request count, cache behavior, and material access caveats. |
| 23 | + - Write a sibling output by default. Do not pass `--force` or overwrite the input unless the user explicitly requests that exact replacement. |
| 24 | +4. Run one focused command. |
| 25 | + - Identity and odor metadata: `flavor-data pubchem INPUT --identifier-column "CAS Number"` |
| 26 | + - Retention indices: `flavor-data nist-ri INPUT --cas-column "CAS Number" --calculated-ri-column "Calculated RI"` |
| 27 | + - Names to CAS: `flavor-data resolve-cas INPUT --name-column "Name"` |
| 28 | + - Curated descriptors: `flavor-data pyrfume INPUT --archives aromadb,superscent` |
| 29 | + - Receptor evidence: `flavor-data m2or INPUT --cas-column "CAS Number"` |
| 30 | + - Source inventory: `flavor-data sources` |
| 31 | +5. Verify the result. |
| 32 | + - Re-run the inspection script on the output. |
| 33 | + - Confirm identical row order and row count, expected new fields, typed status counts, source URL, retrieval time, version, and license/access fields. |
| 34 | + - Treat `http_error`, `network_error`, `parse_error`, `missing_data`, `data_error`, `partial`, `blocked`, and `skipped` separately from `not_found`. |
| 35 | + - Consult [references/output-schema.md](references/output-schema.md) when reconciling columns or statuses. |
| 36 | +6. Report the output path, provider versions, status counts, partial failures, and any source terms the user must still review. |
| 37 | + |
| 38 | +## Guardrails |
| 39 | + |
| 40 | +- Keep NIST's interval at five seconds or slower and retain caching. |
| 41 | +- Never automate CAPTCHA solving. Keep browser sources visible when user intervention may be required. |
| 42 | +- Do not run ChemicalBook automation unless the user confirms documented permission; its current robots policy excludes the legacy routes. |
| 43 | +- Do not describe the toolkit as AI-powered. Say that structured exports can support downstream statistics, cheminformatics, or machine-learning experiments. |
| 44 | +- Do not bundle or republish downloaded Pyrfume or M2OR data in the repository. |
| 45 | +- Preserve remote text as literal spreadsheet cells to prevent formula execution. |
0 commit comments