From 5623eaa8233898eaebd7db2c3ae985b427b91019 Mon Sep 17 00:00:00 2001 From: nvskills-svc-account Date: Fri, 18 Sep 2026 19:50:50 +0000 Subject: [PATCH 1/4] Attach NVSkills validation signatures Signed-off-by: nvskills-svc-account --- skills/nvmolkit-usage/BENCHMARK.md | 141 ++++++++++++++++++++++++++++ skills/nvmolkit-usage/skill-card.md | 36 +++---- skills/nvmolkit-usage/skill.oms.sig | 2 +- 3 files changed, 160 insertions(+), 19 deletions(-) create mode 100644 skills/nvmolkit-usage/BENCHMARK.md diff --git a/skills/nvmolkit-usage/BENCHMARK.md b/skills/nvmolkit-usage/BENCHMARK.md new file mode 100644 index 00000000..46eeb74f --- /dev/null +++ b/skills/nvmolkit-usage/BENCHMARK.md @@ -0,0 +1,141 @@ +# Skill Benchmark: nvmolkit-usage + +> ✅ **Overall verdict: PASS — Recommended for publication** + +## Publication Recommendation + +Recommended for publication based on the completed evaluation evidence in this report. + +## Evaluation Metadata + +- Skill: `nvmolkit-usage` +- Evaluation date: 2026-09-18 +- Evaluator version: `1.5.6` +- Agents: Claude Code (`aws/anthropic/bedrock-claude-opus-4-8`), Codex (`openai/openai/gpt-5.5`) +- Tasks: 12 evaluation tasks (12 positive) +- Dataset digest: `sha256:ce8098e0dd2fc0698933b7d4d303fe13bdd1d9be7e87d142bdfc44baae7a9f90` (skill-evaluator-dataset-snapshot/1) +- Attempts per task: 3 +- Environment: `k8s-sandbox` +- Tier 2 evidence: required for publication +- Tier 3 evidence: required for publication + +Each task attempt ran in its own isolated sandbox pod. + +## What This Report Answers + +The three-tier evaluation checks whether the skill: + +- is safe to use; +- produces correct answers; +- is discovered and activated when needed; +- helps the agent complete the user's goal and expected workflow; and +- avoids wasted skill and tool usage. + +## Results at a Glance + +| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) | +|---|---:|---:| +| Overall | 94.9% — baseline ran, but no comparable score was available; uplift unavailable | 93.0% — baseline ran, but no comparable score was available; uplift unavailable | +| Security | 75.0% → 100.0% (+25.0 points) | 100.0% → 100.0% (±0.0 points) | +| Correctness | 100.0% → 100.0% (±0.0 points) | 96.7% → 100.0% (+3.3 points) | +| Discoverability | 97.7% — baseline ran, but no comparable score was available; uplift unavailable | 95.0% — baseline ran, but no comparable score was available; uplift unavailable | +| Effectiveness | 85.8% → 91.8% (+6.0 points) | 80.5% → 85.1% (+4.6 points) | +| Efficiency | 85.1% — baseline ran, but no comparable score was available; uplift unavailable | 84.8% — baseline ran, but no comparable score was available; uplift unavailable | + +**How to read this table:** baseline is the same task attempted without the target skill. Scores are rounded to one decimal; threshold-adjacent values use additional precision so their displayed band matches the verdict. Uplift is derived from those displayed scores and shown in percentage points. + +Example: `47.0% → 92.0% (+45.0 points)` means the skill-assisted run scored 92.0%, 45.0 percentage points above its 47.0% no-skill baseline. + +## Token Usage + +Actual Tier 3 execution usage is reported for every observed agent/case pair and both conditions. + +| Agent | Dataset case | With skill | Without skill | Delta | Change | Coverage | +|---|---|---:|---:|---:|---:|---| +| claude-code | All cases | 4,953,168 | 7,333,864 | -2,380,696 | -32.46% | skill 12/12; base 12/12 | +| claude-code | nvmolkit-usage-001 | 156,476 | 585,885 | -429,409 | -73.29% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-002 | 2,344,638 | 477,914 | +1,866,724 | +390.60% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-003 | 250,932 | 704,638 | -453,706 | -64.39% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-004 | 73,034 | 291,291 | -218,257 | -74.93% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-005 | 279,108 | 848,364 | -569,256 | -67.10% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-006 | 73,663 | 993,072 | -919,409 | -92.58% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-007 | 296,983 | 647,857 | -350,874 | -54.16% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-008 | 693,717 | 533,167 | +160,550 | +30.11% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-009 | 70,445 | 703,340 | -632,895 | -89.98% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-010 | 410,907 | 940,665 | -529,758 | -56.32% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-011 | 69,949 | 62,232 | +7,717 | +12.40% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-012 | 233,316 | 545,439 | -312,123 | -57.22% | skill 1/1; base 1/1 | +| codex | All cases | 906,064 | 616,919 | +289,145 | +46.87% | skill 12/12; base 12/12 | +| codex | nvmolkit-usage-001 | 43,170 | 37,634 | +5,536 | +14.71% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-002 | 43,584 | 35,222 | +8,362 | +23.74% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-003 | 110,617 | 107,635 | +2,982 | +2.77% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-004 | 75,044 | 59,366 | +15,678 | +26.41% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-005 | 109,641 | 108,861 | +780 | +0.72% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-006 | 50,706 | 25,538 | +25,168 | +98.55% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-007 | 75,072 | 35,931 | +39,141 | +108.93% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-008 | 110,578 | 62,718 | +47,860 | +76.31% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-009 | 31,315 | 18,644 | +12,671 | +67.96% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-010 | 114,650 | 31,606 | +83,044 | +262.75% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-011 | 69,747 | 20,511 | +49,236 | +240.05% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-012 | 71,940 | 73,253 | -1,313 | -1.79% | skill 1/1; base 1/1 | +| ALL AGENTS | Dataset aggregate | 5,859,232 | 7,950,783 | -2,091,551 | -26.31% | skill 24/24; base 24/24 | + +Prompt tokens include cached reads, so total tokens are `prompt + completion` (cached is not added twice). The Efficiency score uses `(prompt - cached) + completion`. N/A means the relevant trajectory counters were not available; coverage is never estimated. + +## Tier Status + +| Tier | Purpose | Status | Evidence | +|---|---|---|---| +| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 11 validator(s); 13 finding(s) | +| Tier 2 | Semantic deduplication | **PASSED** | 2 validator(s); 0 finding(s) | +| Tier 3 | Live agent evaluation | **PASS** | 2 agent(s); 12 task(s) | + +## Findings and Observations + +
+Show detailed findings and successful checks + +- **MEDIUM** QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.author' (`skills/nvmolkit-usage/SKILL.md`) +- **MEDIUM** QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.tags' (`skills/nvmolkit-usage/SKILL.md`) +- **MEDIUM** QUALITY/quality_efficiency: Large skill (5290 tokens, recommended max <5000). Per agentskills.io, SKILL.md should be concise (~500 lines) — large skill bodies increase token cost after invocation; long or unfocused top-level descriptions can degrade agent routing accuracy (`skills/nvmolkit-usage/SKILL.md`) +- **MEDIUM** SCHEMA/metadata_key_style: Metadata key 'risk_tier' is not kebab-case (`skills/nvmolkit-usage/SKILL.md`) +- **MEDIUM** SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/nvmolkit-usage/SKILL.md`) +- 8 additional finding(s) are available in the full evaluation artifacts. + +
+ +## Scoring Methodology + +
+Show dimension definitions, source signals, and thresholds + +| Dimension | Question | Scored signals | +|---|---|---| +| Security | Is it safe to use? | `security` (100%) | +| Correctness | Is the answer correct? | `accuracy` (100%) | +| Discoverability | Was the right skill loaded when needed? | `skill_execution` (100%) | +| Effectiveness | Did the skill help complete the task? | `goal_accuracy` (50%) + `behavior_check` (50%) | +| Efficiency | Did it avoid wasted tool calls and token usage? | `skill_efficiency` (50%) + `token_efficiency` (50%) | + +- Dimension bands: PASS at 50% or above; NEUTRAL from 40% to below 50%; FAIL below 40%. +- Overall Tier 3 lift: PASS at +5 points or more; FAIL at -10 points or less; values between those bands are NEUTRAL. +- Overall verdict: PASS only when every configured dimension passes for at least one supported agent. Lift is reported as diagnostic evidence and does not override this gate. +- The 50% attempt pass threshold is a separate per-task gate; it is not the dimension pass threshold. +- Effectiveness is the equal-weight mean of goal completion (`goal_accuracy`) and expected workflow adherence (`behavior_check`). +- Efficiency is 50% tool-call productivity (the backward-compatible `skill_efficiency` wire id) and 50% `token_efficiency`. Positive-case skill routing is scored under Discoverability, not Efficiency; a negative case without a routing target is N/A. N/A sources are omitted, remaining weights are renormalized, and the dimension is marked partial. + +Signals present in this run: + +- `security` (Security): unsafe operations, secret leakage, and unauthorized access. +- `skill_execution` (Skill Execution): whether the expected skill was selected, decoys were avoided, and the workflow executed. +- `skill_efficiency` (Tool Productivity): tool-call productivity (legacy wire id; routing is scored under Discoverability). +- `accuracy` (Accuracy): final-answer correctness against the reference answer. +- `goal_accuracy` (Goal Accuracy): whether the user's goal was achieved. +- `behavior_check` (Behavior Check): whether the expected workflow behavior was followed. +- `token_efficiency` (Token Efficiency): actual uncached prompt plus completion usage (50% of Efficiency). + +
+ +## Freshness + +Regenerate this benchmark when the skill, evaluation dataset, target agent/model, evaluator version, environment, or scoring policy changes. diff --git a/skills/nvmolkit-usage/skill-card.md b/skills/nvmolkit-usage/skill-card.md index fcf4a599..bd344152 100644 --- a/skills/nvmolkit-usage/skill-card.md +++ b/skills/nvmolkit-usage/skill-card.md @@ -9,14 +9,14 @@ NVIDIA
### License/Terms of Use:
Apache-2.0
## Use Case:
-Developers and computational chemists writing Python code that calls the nvMolKit API for GPU-accelerated, batched cheminformatics operations such as fingerprinting, similarity search, conformer generation, force-field optimization, clustering, substructure search, and MCS search.
+Developers and engineers writing GPU-accelerated cheminformatics code use this skill to generate correct nvMolKit Python API calls for batched molecular operations, debug existing nvMolKit workflows, and choose between nvMolKit and RDKit for throughput-sensitive pipelines.
### Deployment Geography for Use:
Global
## Requirements / Dependencies:
-**Requires API Key or External Credential:** [No]
-**Credential Type(s):** [None]
+**Requires API Key or External Credential:** [Not Specified]
+**Credential Type(s):** [None identified]
Do not include secrets in prompts/logs/output; use least-privilege credentials; rotate keys as appropriate.
@@ -42,36 +42,36 @@ Mitigation: Review and scan skill before deployment.
## Evaluation Tasks:
-12 evaluation tasks (12 positive), each run in an isolated sandbox pod. Dataset digest: sha256:16ead845d201c386f3f059697aff38c0e6978ce5e90370c6548d7bade427c6fb.
+12 evaluation tasks with 3 attempts per task, each in isolated sandbox pods, across 2 agents.
## Evaluation Metrics Used:
Reported benchmark dimensions:
-- Security: Checks for unsafe operations, secret leakage, and unauthorized access.
-- Correctness: Checks final-answer correctness against the reference answer.
-- Discoverability: Checks whether the expected skill was selected, decoys were avoided, and the workflow executed.
-- Effectiveness: Equal-weight mean of goal completion (goal_accuracy) and expected workflow adherence (behavior_check).
-- Efficiency: 50% tool-call productivity (skill_efficiency) and 50% token efficiency.
+- Security: Whether the skill avoids unsafe operations, secret leakage, and unauthorized access.
+- Correctness: Final-answer correctness against the reference answer.
+- Discoverability: Whether the right skill was loaded and activated when needed.
+- Effectiveness: Whether the skill helped complete the user's goal and expected workflow (equal-weight mean of goal completion and workflow adherence).
+- Efficiency: Whether the skill avoided wasted tool calls and token usage (50% tool-call productivity, 50% token efficiency).
Underlying evaluation signals used in this run:
-- `security`: Checks for unsafe operations, secret leakage, and unauthorized access.
+- `security`: Unsafe operations, secret leakage, and unauthorized access.
- `skill_execution`: Whether the expected skill was selected, decoys were avoided, and the workflow executed.
-- `skill_efficiency`: Tool-call productivity (routing scored under Discoverability, not Efficiency).
- `accuracy`: Final-answer correctness against the reference answer.
- `goal_accuracy`: Whether the user's goal was achieved.
- `behavior_check`: Whether the expected workflow behavior was followed.
-- `token_efficiency`: Actual uncached prompt plus completion token usage.
+- `skill_efficiency`: Tool-call productivity (routing scored under Discoverability).
+- `token_efficiency`: Actual uncached prompt plus completion usage.
## Evaluation Results:
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) | |---|---:|---:| -| Overall | 92.9% | 93.2% | -| Security | 79.2% → 100.0% (+20.8 points) | 100.0% → 100.0% (±0.0 points) | -| Correctness | 100.0% → 96.7% (-3.3 points) | 90.0% → 100.0% (+10.0 points) | -| Discoverability | 98.3% | 94.6% | -| Effectiveness | 90.9% → 86.5% (-4.4 points) | 74.8% → 91.6% (+16.8 points) | -| Efficiency | 82.9% | 79.7% | +| Overall | 94.9% | 93.0% | +| Security | 75.0% → 100.0% (+25.0 points) | 100.0% → 100.0% (±0.0 points) | +| Correctness | 100.0% → 100.0% (±0.0 points) | 96.7% → 100.0% (+3.3 points) | +| Discoverability | 97.7% | 95.0% | +| Effectiveness | 85.8% → 91.8% (+6.0 points) | 80.5% → 85.1% (+4.6 points) | +| Efficiency | 85.1% | 84.8% | ## Skill Version(s):
0.6.0 (source: pyproject.toml, CHANGELOG, released 2026-08-13)
diff --git a/skills/nvmolkit-usage/skill.oms.sig b/skills/nvmolkit-usage/skill.oms.sig index ecd3c013..2c8156b5 100644 --- a/skills/nvmolkit-usage/skill.oms.sig +++ b/skills/nvmolkit-usage/skill.oms.sig @@ -1 +1 @@ -{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibnZtb2xraXQtdXNhZ2UiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFmMTk1NTgxZTc3OTM2MzhjZDM1NmUxMzhlZWE2MzNiYWI5MjM2OTY5ZGZhYTJlYjVkYTBlNzIxNzE4OTVjNCIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJtZXRob2QiOiAiZmlsZXMiLAogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJpZ25vcmVfcGF0aHMiOiBbCiAgICAgICAgIi5naXRodWIiLAogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdCIsCiAgICAgICAgIi5naXRhdHRyaWJ1dGVzIgogICAgICBdLAogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZQogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiQkVOQ0hNQVJLLm1kIiwKICAgICAgICAiZGlnZXN0IjogImU0NDU2MmFhOWFjNDE2ZmQ2YjU4OThkOTc5NDgwODJhNWM4ZWY5ZmVlYmZhZWQxZTA0NGUzOWMyZTdjMWM3ZDEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiU0tJTEwubWQiLAogICAgICAgICJkaWdlc3QiOiAiMzEzNzVkM2I0ODdmOGY0NDBmMDUyOTk0MDQ4ZTMzZjZlNjc2ODFkYjcyNjI4Zjg3M2JkYzNmZGJjNTM5OTQxNSIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJldmFscy9ldmFscy5qc29uIiwKICAgICAgICAiZGlnZXN0IjogIjlmNjg3MTdjNDU2NDk5Yjc0YTM2MTYyOTMxYjk4MGMwZjZlNmI1NjZiM2Y4YTFiYmRlODVlMjc4MWIyYWMzMjIiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAiZXZhbHMvdHJpZ2dlcl9ldmFscy5qc29uIiwKICAgICAgICAiZGlnZXN0IjogIjZhOTc3N2JmMDdiNGU4OTY3ZWRkOTA1Y2U2OTdlYWU5Mzk2OTRjOWM2NGQxMzU4MDdkOTA4ZTk4MGFjNmRmYjIiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgIm5hbWUiOiAic2tpbGwtY2FyZC5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICI3N2FiODRjMmRiZDE5MWY4MWVmZWQ1MGI2MDI3NGNmZWRmMTQxYzc4MWFjZDc2YWE4MGU0MTY5OTllMzViMmFiIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGUCMBn0BSJgFYvoQi2dx6Sv/L6x3ge9NWCxRlpFLvb4wPa/7cdIsDblPsOEBlokVaQ0awIxAPe/ulb0kunUu68m04Wz9Nsy4dxaXXaRpg3upzXc/uz0wIXQCn8hMcQd1S6hhA2t4A==","keyid":""}]}} \ No newline at end of file +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibnZtb2xraXQtdXNhZ2UiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODFjNmE2NDliMDljNzgwNGE2OTQ0ZGE1ZTkyZDIwNDY4ZTE3MzBkYTAwZTVkOTM2MWZiMGIxNjcwM2U0YzlkZiIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJoYXNoX3R5cGUiOiAic2hhMjU2IiwKICAgICAgImlnbm9yZV9wYXRocyI6IFsKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdGh1YiIsCiAgICAgICAgIi5naXQiCiAgICAgIF0sCiAgICAgICJtZXRob2QiOiAiZmlsZXMiLAogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZQogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImI5ZjMxNDVmMTA3ZTUyMGI1NmJiMzJjNDI2NGRjNTg2OTMyNTY4YzA2YWY3MTYxNTRkM2Y0MDIzNWVjYzZjNmEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZGU1YjY5ZDczMzA0YWRmMGMzYWRkN2E4YTkxMjEwMzcyNzMyYmY0NzcyOTYyYWU5MzdiYTBjMGY4ZjU2MzA1ZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImU5MjhiYWM5MmJmMmEyODcxZWVjNjE1YjRkYTNhMDBiZGMzMmMwMThjZGZiMjY2NzJmODJlMDQ2N2RjYjBlZmEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJldmFscy90cmlnZ2VyX2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjZhOTc3N2JmMDdiNGU4OTY3ZWRkOTA1Y2U2OTdlYWU5Mzk2OTRjOWM2NGQxMzU4MDdkOTA4ZTk4MGFjNmRmYjIiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJlZWM1ZWFhZjNjYWE4OGQ3NjAxYmRlNmY1ZWQ5ODc3ZjRhNmIxMGZmYWRjNzdhOWNlODE2OTg4OWExZjZjNDNjIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMD1uhkySa00+lONXll3sZJeVTfTIkNRBZqOZMXnSQl70pDrtV6tv2TBhtuhE//UjMQIwaP4ftScntLVIHTyrEoGj6G3oGzZkT9ZFKktfXMGgHuLTV/Cak4AdN/hKByLxAhBR","keyid":""}]}} \ No newline at end of file From 5f222ea9fe14a9ae837caf80b29cc2f122cffba0 Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Fri, 18 Sep 2026 14:00:26 -0700 Subject: [PATCH 2/4] fix links Signed-off-by: Ohad Mosafi --- skills/nvmolkit-usage/SKILL.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skills/nvmolkit-usage/SKILL.md b/skills/nvmolkit-usage/SKILL.md index 17a07f68..8a5343c8 100644 --- a/skills/nvmolkit-usage/SKILL.md +++ b/skills/nvmolkit-usage/SKILL.md @@ -43,7 +43,7 @@ If CUDA is unavailable, nvMolKit calls raise. There is no CPU fallback - if the When helping with installation, make the user choose a PyTorch CUDA backend that the host driver supports before installing nvMolKit. nvMolKit's PyPI wheels are built with CUDA Toolkit 12.9 and depend on CUDA 12 runtime packages, but pip/uv can still select a CUDA 13 PyTorch wheel unless the install command says otherwise. - Conda: prefer conda-forge `pytorch-gpu`; pin `cuda-version=12.6` or another CUDA version supported by the driver. -- pip: send the user to the PyTorch install selector (`https://pytorch.org/get-started/locally/`) or previous-versions page (`https://pytorch.org/get-started/previous-versions/`) to install `torch` for a CUDA 12.x backend before installing nvMolKit. +- pip: send the user to the [PyTorch install selector](https://pytorch.org/get-started/locally/) or [previous-versions page](https://pytorch.org/get-started/previous-versions/) to install `torch` for a CUDA 12.x backend before installing nvMolKit. - uv: install nvMolKit with an explicit backend, e.g. `uv pip install --torch-backend=cu128 nvmolkit`. ## Verify the install before writing real code @@ -69,7 +69,7 @@ print("fps shape:", tuple(fps.shape), "dtype:", fps.dtype) # Expected: shape (3, 32), dtype torch.int32 (1024 bits packed into 32 int32s per row) ``` -If this fails, point the user at the install guide on the docs site rather than guessing - see "Going deeper" below. +If this fails, point the user at the [installation guide](https://nvidia-bionemo.github.io/nvMolKit/#installation) rather than guessing. ## Entry points @@ -378,4 +378,4 @@ All conformers of each input molecule are minimized in one batch. Constraints at - Full feature list, API reference, and guides: - What changed in each release: -- Worked examples (Jupyter notebooks): the `examples/` directory in the GitHub repo +- Worked examples (Jupyter notebooks): the [examples/ directory](https://github.com/NVIDIA-BioNeMo/nvMolKit/tree/main/examples) in the GitHub repo From 294e693e748e3c1cc3fd3f18ba01d5bc2d9ea0fc Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Fri, 18 Sep 2026 14:16:58 -0700 Subject: [PATCH 3/4] tier1 fixes --- skills/nvmolkit-usage/SKILL.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/skills/nvmolkit-usage/SKILL.md b/skills/nvmolkit-usage/SKILL.md index 8a5343c8..cc129906 100644 --- a/skills/nvmolkit-usage/SKILL.md +++ b/skills/nvmolkit-usage/SKILL.md @@ -12,8 +12,9 @@ description: >- source. license: Apache-2.0 metadata: + author: Kevin Boyd (@scal444) owner: Kevin Boyd (@scal444) - risk_tier: skill + risk-tier: skill --- # nvMolKit usage @@ -46,7 +47,9 @@ When helping with installation, make the user choose a PyTorch CUDA backend that - pip: send the user to the [PyTorch install selector](https://pytorch.org/get-started/locally/) or [previous-versions page](https://pytorch.org/get-started/previous-versions/) to install `torch` for a CUDA 12.x backend before installing nvMolKit. - uv: install nvMolKit with an explicit backend, e.g. `uv pip install --torch-backend=cu128 nvmolkit`. -## Verify the install before writing real code +## Instructions + +### Verify the install before writing real code Run this once to confirm nvMolKit is importable and a GPU op works end to end: @@ -202,7 +205,7 @@ autoselect execution settings; an empty `gpuIds` list uses the current device. `MCSConfig` supports `to_dict()` / `from_dict()` and can also be persisted with `nvmolkit.autotune.save()` / `load()`. -## Recipes +## Examples ### Morgan fingerprints + bulk Tanimoto similarity From a82f97294e762d75a9a2a56defb931e996889559 Mon Sep 17 00:00:00 2001 From: nvskills-svc-account Date: Fri, 18 Sep 2026 22:42:02 +0000 Subject: [PATCH 4/4] Attach NVSkills validation signatures Signed-off-by: nvskills-svc-account --- skills/nvmolkit-usage/BENCHMARK.md | 78 ++++++++++++++--------------- skills/nvmolkit-usage/skill-card.md | 33 ++++++------ skills/nvmolkit-usage/skill.oms.sig | 2 +- 3 files changed, 57 insertions(+), 56 deletions(-) diff --git a/skills/nvmolkit-usage/BENCHMARK.md b/skills/nvmolkit-usage/BENCHMARK.md index 46eeb74f..aa83c5de 100644 --- a/skills/nvmolkit-usage/BENCHMARK.md +++ b/skills/nvmolkit-usage/BENCHMARK.md @@ -35,12 +35,12 @@ The three-tier evaluation checks whether the skill: | Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) | |---|---:|---:| -| Overall | 94.9% — baseline ran, but no comparable score was available; uplift unavailable | 93.0% — baseline ran, but no comparable score was available; uplift unavailable | -| Security | 75.0% → 100.0% (+25.0 points) | 100.0% → 100.0% (±0.0 points) | -| Correctness | 100.0% → 100.0% (±0.0 points) | 96.7% → 100.0% (+3.3 points) | -| Discoverability | 97.7% — baseline ran, but no comparable score was available; uplift unavailable | 95.0% — baseline ran, but no comparable score was available; uplift unavailable | -| Effectiveness | 85.8% → 91.8% (+6.0 points) | 80.5% → 85.1% (+4.6 points) | -| Efficiency | 85.1% — baseline ran, but no comparable score was available; uplift unavailable | 84.8% — baseline ran, but no comparable score was available; uplift unavailable | +| Overall | 92.6% — baseline ran, but no comparable score was available; uplift unavailable | 93.4% — baseline ran, but no comparable score was available; uplift unavailable | +| Security | 70.8% → 95.8% (+25.0 points) | 100.0% → 100.0% (±0.0 points) | +| Correctness | 96.7% → 100.0% (+3.3 points) | 93.3% → 100.0% (+6.7 points) | +| Discoverability | 94.2% — baseline ran, but no comparable score was available; uplift unavailable | 95.0% — baseline ran, but no comparable score was available; uplift unavailable | +| Effectiveness | 90.3% → 90.8% (+0.5 points) | 84.3% → 86.5% (+2.2 points) | +| Efficiency | 82.2% — baseline ran, but no comparable score was available; uplift unavailable | 85.7% — baseline ran, but no comparable score was available; uplift unavailable | **How to read this table:** baseline is the same task attempted without the target skill. Scores are rounded to one decimal; threshold-adjacent values use additional precision so their displayed band matches the verdict. Uplift is derived from those displayed scores and shown in percentage points. @@ -52,33 +52,33 @@ Actual Tier 3 execution usage is reported for every observed agent/case pair and | Agent | Dataset case | With skill | Without skill | Delta | Change | Coverage | |---|---|---:|---:|---:|---:|---| -| claude-code | All cases | 4,953,168 | 7,333,864 | -2,380,696 | -32.46% | skill 12/12; base 12/12 | -| claude-code | nvmolkit-usage-001 | 156,476 | 585,885 | -429,409 | -73.29% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-002 | 2,344,638 | 477,914 | +1,866,724 | +390.60% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-003 | 250,932 | 704,638 | -453,706 | -64.39% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-004 | 73,034 | 291,291 | -218,257 | -74.93% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-005 | 279,108 | 848,364 | -569,256 | -67.10% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-006 | 73,663 | 993,072 | -919,409 | -92.58% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-007 | 296,983 | 647,857 | -350,874 | -54.16% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-008 | 693,717 | 533,167 | +160,550 | +30.11% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-009 | 70,445 | 703,340 | -632,895 | -89.98% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-010 | 410,907 | 940,665 | -529,758 | -56.32% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-011 | 69,949 | 62,232 | +7,717 | +12.40% | skill 1/1; base 1/1 | -| claude-code | nvmolkit-usage-012 | 233,316 | 545,439 | -312,123 | -57.22% | skill 1/1; base 1/1 | -| codex | All cases | 906,064 | 616,919 | +289,145 | +46.87% | skill 12/12; base 12/12 | -| codex | nvmolkit-usage-001 | 43,170 | 37,634 | +5,536 | +14.71% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-002 | 43,584 | 35,222 | +8,362 | +23.74% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-003 | 110,617 | 107,635 | +2,982 | +2.77% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-004 | 75,044 | 59,366 | +15,678 | +26.41% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-005 | 109,641 | 108,861 | +780 | +0.72% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-006 | 50,706 | 25,538 | +25,168 | +98.55% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-007 | 75,072 | 35,931 | +39,141 | +108.93% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-008 | 110,578 | 62,718 | +47,860 | +76.31% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-009 | 31,315 | 18,644 | +12,671 | +67.96% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-010 | 114,650 | 31,606 | +83,044 | +262.75% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-011 | 69,747 | 20,511 | +49,236 | +240.05% | skill 1/1; base 1/1 | -| codex | nvmolkit-usage-012 | 71,940 | 73,253 | -1,313 | -1.79% | skill 1/1; base 1/1 | -| ALL AGENTS | Dataset aggregate | 5,859,232 | 7,950,783 | -2,091,551 | -26.31% | skill 24/24; base 24/24 | +| claude-code | All cases | 5,388,789 | 6,485,536 | -1,096,747 | -16.91% | skill 12/12; base 12/12 | +| claude-code | nvmolkit-usage-001 | 206,219 | 690,603 | -484,384 | -70.14% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-002 | 1,257,795 | 177,892 | +1,079,903 | +607.06% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-003 | 285,979 | 297,646 | -11,667 | -3.92% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-004 | 245,297 | 588,508 | -343,211 | -58.32% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-005 | 648,715 | 740,940 | -92,225 | -12.45% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-006 | 74,549 | 561,517 | -486,968 | -86.72% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-007 | 302,671 | 550,115 | -247,444 | -44.98% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-008 | 1,160,762 | 708,853 | +451,909 | +63.75% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-009 | 69,766 | 416,700 | -346,934 | -83.26% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-010 | 389,838 | 1,152,170 | -762,332 | -66.16% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-011 | 69,928 | 61,294 | +8,634 | +14.09% | skill 1/1; base 1/1 | +| claude-code | nvmolkit-usage-012 | 677,270 | 539,298 | +137,972 | +25.58% | skill 1/1; base 1/1 | +| codex | All cases | 1,063,506 | 653,365 | +410,141 | +62.77% | skill 12/12; base 12/12 | +| codex | nvmolkit-usage-001 | 42,626 | 30,919 | +11,707 | +37.86% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-002 | 42,737 | 47,031 | -4,294 | -9.13% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-003 | 119,838 | 142,275 | -22,437 | -15.77% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-004 | 73,963 | 104,844 | -30,881 | -29.45% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-005 | 136,297 | 38,676 | +97,621 | +252.41% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-006 | 50,646 | 33,189 | +17,457 | +52.60% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-007 | 75,109 | 35,311 | +39,798 | +112.71% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-008 | 130,297 | 59,105 | +71,192 | +120.45% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-009 | 85,560 | 18,457 | +67,103 | +363.56% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-010 | 147,972 | 27,105 | +120,867 | +445.92% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-011 | 51,430 | 20,374 | +31,056 | +152.43% | skill 1/1; base 1/1 | +| codex | nvmolkit-usage-012 | 107,031 | 96,079 | +10,952 | +11.40% | skill 1/1; base 1/1 | +| ALL AGENTS | Dataset aggregate | 6,452,295 | 7,138,901 | -686,606 | -9.62% | skill 24/24; base 24/24 | Prompt tokens include cached reads, so total tokens are `prompt + completion` (cached is not added twice). The Efficiency score uses `(prompt - cached) + completion`. N/A means the relevant trajectory counters were not available; coverage is never estimated. @@ -86,7 +86,7 @@ Prompt tokens include cached reads, so total tokens are `prompt + completion` (c | Tier | Purpose | Status | Evidence | |---|---|---|---| -| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 11 validator(s); 13 finding(s) | +| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 11 validator(s); 10 finding(s) | | Tier 2 | Semantic deduplication | **PASSED** | 2 validator(s); 0 finding(s) | | Tier 3 | Live agent evaluation | **PASS** | 2 agent(s); 12 task(s) | @@ -95,12 +95,12 @@ Prompt tokens include cached reads, so total tokens are `prompt + completion` (c
Show detailed findings and successful checks -- **MEDIUM** QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.author' (`skills/nvmolkit-usage/SKILL.md`) - **MEDIUM** QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.tags' (`skills/nvmolkit-usage/SKILL.md`) -- **MEDIUM** QUALITY/quality_efficiency: Large skill (5290 tokens, recommended max <5000). Per agentskills.io, SKILL.md should be concise (~500 lines) — large skill bodies increase token cost after invocation; long or unfocused top-level descriptions can degrade agent routing accuracy (`skills/nvmolkit-usage/SKILL.md`) -- **MEDIUM** SCHEMA/metadata_key_style: Metadata key 'risk_tier' is not kebab-case (`skills/nvmolkit-usage/SKILL.md`) -- **MEDIUM** SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/nvmolkit-usage/SKILL.md`) -- 8 additional finding(s) are available in the full evaluation artifacts. +- **MEDIUM** QUALITY/quality_efficiency: Large skill (5312 tokens, recommended max <5000). Per agentskills.io, SKILL.md should be concise (~500 lines) — large skill bodies increase token cost after invocation; long or unfocused top-level descriptions can degrade agent routing accuracy (`skills/nvmolkit-usage/SKILL.md`) +- **LOW** QUALITY/quality_discoverability: Description very long (567 chars, recommend 50-150) (`skills/nvmolkit-usage/SKILL.md`) +- **LOW** QUALITY/quality_discoverability: No '## Purpose' section (`skills/nvmolkit-usage/SKILL.md`) +- **LOW** QUALITY/quality_reliability: No prerequisites/requirements documented (`skills/nvmolkit-usage/SKILL.md`) +- 5 additional finding(s) are available in the full evaluation artifacts.
diff --git a/skills/nvmolkit-usage/skill-card.md b/skills/nvmolkit-usage/skill-card.md index bd344152..4fc70c3f 100644 --- a/skills/nvmolkit-usage/skill-card.md +++ b/skills/nvmolkit-usage/skill-card.md @@ -1,5 +1,5 @@ ## Description:
-Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations — Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF optimization, TFD, conformer RMSD, Butina clustering, substructure search, and maximum common substructure (MCS) search.
+Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations including Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF optimization, TFD, conformer RMSD, Butina clustering, substructure search, and maximum common substructure (MCS) search.
This skill is ready for commercial/non-commercial use.
@@ -9,7 +9,7 @@ NVIDIA
### License/Terms of Use:
Apache-2.0
## Use Case:
-Developers and engineers writing GPU-accelerated cheminformatics code use this skill to generate correct nvMolKit Python API calls for batched molecular operations, debug existing nvMolKit workflows, and choose between nvMolKit and RDKit for throughput-sensitive pipelines.
+Developers and engineers writing GPU-accelerated cheminformatics code using the nvMolKit Python API for batched molecular operations such as fingerprinting, similarity search, conformer embedding, force field optimization, clustering, and substructure/MCS search.
### Deployment Geography for Use:
Global
@@ -27,6 +27,7 @@ Mitigation: Review and scan skill before deployment.
## Reference(s):
- [nvMolKit Documentation](https://nvidia-bionemo.github.io/nvMolKit/)
- [nvMolKit Changelog](https://nvidia-bionemo.github.io/nvMolKit/changelog.html)
+- [nvMolKit Examples (Jupyter Notebooks)](https://github.com/NVIDIA-BioNeMo/nvMolKit/tree/main/examples)
## Skill Output:
@@ -42,15 +43,15 @@ Mitigation: Review and scan skill before deployment.
## Evaluation Tasks:
-12 evaluation tasks with 3 attempts per task, each in isolated sandbox pods, across 2 agents.
+12 evaluation tasks with 3 attempts per task, each in an isolated sandbox pod. Dataset digest: sha256:ce8098e0dd2fc0698933b7d4d303fe13bdd1d9be7e87d142bdfc44baae7a9f90.
## Evaluation Metrics Used:
Reported benchmark dimensions:
-- Security: Whether the skill avoids unsafe operations, secret leakage, and unauthorized access.
-- Correctness: Final-answer correctness against the reference answer.
-- Discoverability: Whether the right skill was loaded and activated when needed.
-- Effectiveness: Whether the skill helped complete the user's goal and expected workflow (equal-weight mean of goal completion and workflow adherence).
-- Efficiency: Whether the skill avoided wasted tool calls and token usage (50% tool-call productivity, 50% token efficiency).
+- Security: Whether the skill is safe to use — checks for unsafe operations, secret leakage, and unauthorized access.
+- Correctness: Whether the final answer is correct against the reference answer.
+- Discoverability: Whether the right skill was loaded when needed — skill selection, decoy avoidance, and workflow execution.
+- Effectiveness: Whether the skill helped complete the user's goal, scored as equal-weight mean of goal completion and expected workflow adherence.
+- Efficiency: Whether the skill avoided wasted tool calls and token usage, scored as 50% tool-call productivity and 50% token efficiency.
Underlying evaluation signals used in this run:
- `security`: Unsafe operations, secret leakage, and unauthorized access.
@@ -58,20 +59,20 @@ Underlying evaluation signals used in this run:
- `accuracy`: Final-answer correctness against the reference answer.
- `goal_accuracy`: Whether the user's goal was achieved.
- `behavior_check`: Whether the expected workflow behavior was followed.
-- `skill_efficiency`: Tool-call productivity (routing scored under Discoverability).
-- `token_efficiency`: Actual uncached prompt plus completion usage.
+- `skill_efficiency`: Tool-call productivity (routing scored under Discoverability, not Efficiency).
+- `token_efficiency`: Actual uncached prompt plus completion token usage.
## Evaluation Results:
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) | |---|---:|---:| -| Overall | 94.9% | 93.0% | -| Security | 75.0% → 100.0% (+25.0 points) | 100.0% → 100.0% (±0.0 points) | -| Correctness | 100.0% → 100.0% (±0.0 points) | 96.7% → 100.0% (+3.3 points) | -| Discoverability | 97.7% | 95.0% | -| Effectiveness | 85.8% → 91.8% (+6.0 points) | 80.5% → 85.1% (+4.6 points) | -| Efficiency | 85.1% | 84.8% | +| Overall | 92.6% | 93.4% | +| Security | 70.8% → 95.8% (+25.0 pp) | 100.0% → 100.0% (±0.0 pp) | +| Correctness | 96.7% → 100.0% (+3.3 pp) | 93.3% → 100.0% (+6.7 pp) | +| Discoverability | 94.2% | 95.0% | +| Effectiveness | 90.3% → 90.8% (+0.5 pp) | 84.3% → 86.5% (+2.2 pp) | +| Efficiency | 82.2% | 85.7% | ## Skill Version(s):
0.6.0 (source: pyproject.toml, CHANGELOG, released 2026-08-13)
diff --git a/skills/nvmolkit-usage/skill.oms.sig b/skills/nvmolkit-usage/skill.oms.sig index 2c8156b5..59fa0f15 100644 --- a/skills/nvmolkit-usage/skill.oms.sig +++ b/skills/nvmolkit-usage/skill.oms.sig @@ -1 +1 @@ -{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibnZtb2xraXQtdXNhZ2UiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODFjNmE2NDliMDljNzgwNGE2OTQ0ZGE1ZTkyZDIwNDY4ZTE3MzBkYTAwZTVkOTM2MWZiMGIxNjcwM2U0YzlkZiIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJoYXNoX3R5cGUiOiAic2hhMjU2IiwKICAgICAgImlnbm9yZV9wYXRocyI6IFsKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdGh1YiIsCiAgICAgICAgIi5naXQiCiAgICAgIF0sCiAgICAgICJtZXRob2QiOiAiZmlsZXMiLAogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZQogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImI5ZjMxNDVmMTA3ZTUyMGI1NmJiMzJjNDI2NGRjNTg2OTMyNTY4YzA2YWY3MTYxNTRkM2Y0MDIzNWVjYzZjNmEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZGU1YjY5ZDczMzA0YWRmMGMzYWRkN2E4YTkxMjEwMzcyNzMyYmY0NzcyOTYyYWU5MzdiYTBjMGY4ZjU2MzA1ZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImU5MjhiYWM5MmJmMmEyODcxZWVjNjE1YjRkYTNhMDBiZGMzMmMwMThjZGZiMjY2NzJmODJlMDQ2N2RjYjBlZmEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJldmFscy90cmlnZ2VyX2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjZhOTc3N2JmMDdiNGU4OTY3ZWRkOTA1Y2U2OTdlYWU5Mzk2OTRjOWM2NGQxMzU4MDdkOTA4ZTk4MGFjNmRmYjIiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJlZWM1ZWFhZjNjYWE4OGQ3NjAxYmRlNmY1ZWQ5ODc3ZjRhNmIxMGZmYWRjNzdhOWNlODE2OTg4OWExZjZjNDNjIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMD1uhkySa00+lONXll3sZJeVTfTIkNRBZqOZMXnSQl70pDrtV6tv2TBhtuhE//UjMQIwaP4ftScntLVIHTyrEoGj6G3oGzZkT9ZFKktfXMGgHuLTV/Cak4AdN/hKByLxAhBR","keyid":""}]}} \ No newline at end of file +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibnZtb2xraXQtdXNhZ2UiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2JiYWU2NTI3N2E1MzE4ODJjYzNhOGYwOThjNGQ2ZGRlZThkNDJhYWY3YWJmMDJkZTMxOTdkZWY1ZjdlODBlMSIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlLAogICAgICAiaWdub3JlX3BhdGhzIjogWwogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGlnbm9yZSIsCiAgICAgICAgIi5naXRhdHRyaWJ1dGVzIiwKICAgICAgICAiLmdpdGh1YiIKICAgICAgXSwKICAgICAgImhhc2hfdHlwZSI6ICJzaGEyNTYiLAogICAgICAibWV0aG9kIjogImZpbGVzIgogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjcwNGNiZmEwZmY5ZjhjZDM5MTg2ODA5N2E4YjQ0ZDZlYjUzNmM4MWUxOTM4OTU2MTViMjdjNmU1ZDA2ZDI0MGEiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjdhZDNkZTIwYTdhN2NhNWNhYjNjODE1MzI5NTZkZmVjZTJiM2JmNjBlNGYzYzgwNDJjNDMzMWY2NWFmNGZiZjUiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJkaWdlc3QiOiAiZTkyOGJhYzkyYmYyYTI4NzFlZWM2MTViNGRhM2EwMGJkYzMyYzAxOGNkZmIyNjY3MmY4MmUwNDY3ZGNiMGVmYSIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjZhOTc3N2JmMDdiNGU4OTY3ZWRkOTA1Y2U2OTdlYWU5Mzk2OTRjOWM2NGQxMzU4MDdkOTA4ZTk4MGFjNmRmYjIiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJldmFscy90cmlnZ2VyX2V2YWxzLmpzb24iCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGlnZXN0IjogIjBlNDZiNmQ4ZWVmZWEzYjNmMWUyZjVjNzM3YmI0MmJhYWEyMGYwYmJkOTU3Y2RjNTliZmIyZTk4NTAxZjFkNmQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIgogICAgICB9CiAgICBdCiAgfQp9","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGUCMBp+ljcYNEWEA1GJHSRTw6h7VSO2B1q1CACOy9mMWoDHL/ukWAlDOI/ubTS1Y7bZigIxANG/IztTIyF54qJatPwzK7LvPqcpqZHEgXYtMVw+6UF0JSKswZVH9Uym3RVejozeUg==","keyid":""}]}} \ No newline at end of file