Skip to content

skills: prep for nvidia/skills catalog onboarding#1310

Open
rgsl888prabhu wants to merge 1 commit into
mainfrom
skills/onboarding-prep-securitymd-pii-descs
Open

skills: prep for nvidia/skills catalog onboarding#1310
rgsl888prabhu wants to merge 1 commit into
mainfrom
skills/onboarding-prep-securitymd-pii-descs

Conversation

@rgsl888prabhu
Copy link
Copy Markdown
Collaborator

Aligns this repo's skills with the NVIDIA Agent Skills Publishing Onboarding Guide.

  • Add top-level SECURITY.md so the catalog's Getting Help & Contributing links resolve once cuopt is registered in components.d/.
  • Shorten 5 SKILL.md descriptions that previously tripped the "Description very long" check (above 150 chars). Trigger keywords preserved.
  • Reformat inline numeric arrays in C/Python examples onto multi-line form to silence NV-BASE's GPS-coordinate PII false positives. No behavior change.

Out of scope: author frontmatter format change and skill-card.md / skill.oms.sig placement — both touch signed payloads and are deferred to a follow-up so NVCARPS re-signs in one pass.

Aligns with the NVIDIA Agent Skills Publishing Onboarding Guide:

* Add top-level SECURITY.md so the catalog's "Getting Help &
  Contributing" links resolve once this repo is registered in
  components.d/<slug>.yml (guide §"Recommended Repository Layout").

* Shorten SKILL.md descriptions for cuopt-install,
  cuopt-numerical-optimization-api-c,
  cuopt-numerical-optimization-api-python,
  numerical-optimization-formulation, and skill-evolution to fit the
  50-150 char range the NV-BASE quality scorer recommends. The
  previous CI run reported "Description very long" on several of
  these (guide §"Writing Skills for Good Agent Triggering").

* Work around NV-BASE PII false positives on inline numeric arrays
  in C/Python examples by formatting each value on its own line. The
  validator's GPS-coordinate heuristic was firing on patterns like
  '{3.0, 4.0, 2.7, 10.1}' and '[40.0, 30.0]' across LP/MILP/QP
  example clients and portfolio/qp model files.

No behavior change; documentation/metadata only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
@rgsl888prabhu rgsl888prabhu requested a review from a team as a code owner May 27, 2026 20:34
@rgsl888prabhu rgsl888prabhu requested a review from Iroy30 May 27, 2026 20:34
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 27, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds NVIDIA's security vulnerability reporting policy and updates skill documentation across the cuOpt repository. Changes include a new SECURITY.md file with vulnerability report guidance, refined skill metadata descriptions, and reformatted code examples for improved readability without altering numeric values or functionality.

Changes

Security Policy

Layer / File(s) Summary
Security vulnerability reporting policy
SECURITY.md
Introduces complete vulnerability reporting process: non-public issue reporting requirement, PSIRT contact methods (portal and email), required report contents (description, reproduction steps, proof-of-concept), PGP encryption for sensitive data, supported versions for fixes (latest main and recent release/* branches), and coordinated disclosure timeline with acknowledgment and updates.

Skills Documentation and Examples

Layer / File(s) Summary
Skill metadata descriptions
skills/cuopt-install/SKILL.md, skills/cuopt-numerical-optimization-api-python/SKILL.md, skills/numerical-optimization-formulation/SKILL.md, skills/skill-evolution/SKILL.md
Updates front-matter description fields to clarify supported optimization types (LP/MILP/QP), features (linear/quadratic objectives, integer variables), use-cases (scheduling, portfolio, least squares), and skill scope.
C API example array formatting
skills/cuopt-numerical-optimization-api-c/SKILL.md, skills/cuopt-numerical-optimization-api-c/references/examples.md
Expands numeric array initializers (constraint matrix values, objective coefficients, constraint bounds, variable bounds) from single-line to multi-line format in both Simple LP and MILP examples for improved readability; numeric values unchanged.
Python and server API example formatting
skills/cuopt-numerical-optimization-api-python/SKILL.md, skills/cuopt-numerical-optimization-api-python/assets/mps_solver/results.md, skills/cuopt-numerical-optimization-api-python/assets/portfolio/model.py, skills/cuopt-numerical-optimization-api-python/references/qp_examples.md, skills/cuopt-server-api-python/assets/lp_basic/client.py, skills/cuopt-server-api-python/assets/milp_basic/client.py
Reformats numeric array literals and matrix definitions to multi-line structures in building expressions example, portfolio model return rates, quadratic programming covariance matrices, server API LP/MILP client payloads, and solver output documentation; all numeric contents and request semantics remain unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • NVIDIA/cuopt#1271: Both PRs modify the skills/skill-evolution/SKILL.md front-matter, with this PR updating the description and the related PR updating the version.

Suggested labels

doc, non-breaking, improvement

Suggested reviewers

  • Iroy30
  • bdice
  • tmckayus
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly summarizes the main objective of the PR: preparing the skills repository for NVIDIA catalog onboarding, which is the core theme across all changes.
Description check ✅ Passed The description comprehensively explains the changes made (SECURITY.md addition, description shortening, array reformatting) and aligns perfectly with the actual changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch skills/onboarding-prep-securitymd-pii-descs

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/cuopt-install/SKILL.md`:
- Line 4: This PR touching skills/cuopt-install/SKILL.md is missing confirmation
that required skills-validation steps were executed; please run pre-commit hooks
and linting (pre-commit run --all-files and pre-commit run --all-files
--show-diff-on-failure), post the NVSkills CI trigger by commenting
"/nvskills-ci" on the PR, and ensure the original signature commit for the
skills change remains in the PR before merging so the repo policy for the
skills/ directory is satisfied.

In `@skills/cuopt-numerical-optimization-api-python/assets/portfolio/model.py`:
- Around line 18-20: Add a pytest that imports the portfolio.model module and
asserts the changed constants r1, r2, r3 have the expected values (0.12, 0.08,
0.05) so the change is covered by tests; place the test in the repository's
Python test suite following the existing pytest conventions and naming (e.g.,
test_*.py) and ensure it is discoverable by the CI test runner.

In `@skills/cuopt-numerical-optimization-api-python/references/qp_examples.md`:
- Around line 26-28: This PR changes content under skills/ (see qp_examples.md)
so before merging, post the comment `/nvskills-ci` on the pull request to
trigger NVSkills CI and verify the signature commit is still present in the PR
history; if the signature commit is missing, re-add it or restore the signed
commit before running the CI trigger.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3f106cc4-eca5-48bc-83bb-c2a1bbcf4da8

📥 Commits

Reviewing files that changed from the base of the PR and between 16276d2 and b3430aa.

📒 Files selected for processing (12)
  • SECURITY.md
  • skills/cuopt-install/SKILL.md
  • skills/cuopt-numerical-optimization-api-c/SKILL.md
  • skills/cuopt-numerical-optimization-api-c/references/examples.md
  • skills/cuopt-numerical-optimization-api-python/SKILL.md
  • skills/cuopt-numerical-optimization-api-python/assets/mps_solver/results.md
  • skills/cuopt-numerical-optimization-api-python/assets/portfolio/model.py
  • skills/cuopt-numerical-optimization-api-python/references/qp_examples.md
  • skills/cuopt-server-api-python/assets/lp_basic/client.py
  • skills/cuopt-server-api-python/assets/milp_basic/client.py
  • skills/numerical-optimization-formulation/SKILL.md
  • skills/skill-evolution/SKILL.md

name: cuopt-install
version: "26.08.00"
description: Install cuOpt for Python, C, or as a server (pip, conda, Docker) — system requirements, install commands, and verification. Use when the user wants to install or verify cuOpt for any user-facing interface. For building cuOpt from source or contributing to cuOpt, see cuopt-developer.
description: Install cuOpt for Python, C, or server via pip, conda, or Docker; verify the install. For building cuOpt from source, see cuopt-developer.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Please confirm required skills-validation steps were executed before merge.

For this skills/ PR, please confirm you ran pre-commit checks, posted /nvskills-ci, and kept the signature commit in the PR as required by repo policy.

As per coding guidelines, "Install pre-commit hooks and run pre-commit run --all-files before committing code to ensure linting and formatting compliance", "Use pre-commit run --all-files --show-diff-on-failure to check code formatting and linting on all files before committing", and "For PRs changing content under skills/ directory, request NVSkills CI validation by commenting /nvskills-ci and ensure the signature commit remains in the PR".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/cuopt-install/SKILL.md` at line 4, This PR touching
skills/cuopt-install/SKILL.md is missing confirmation that required
skills-validation steps were executed; please run pre-commit hooks and linting
(pre-commit run --all-files and pre-commit run --all-files
--show-diff-on-failure), post the NVSkills CI trigger by commenting
"/nvskills-ci" on the PR, and ensure the original signature commit for the
skills change remains in the PR before merging so the repo policy for the
skills/ directory is satisfied.

Comment on lines +18 to +20
r1 = 0.12
r2 = 0.08
r3 = 0.05
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add/point to pytest coverage for this Python code change.

This .py asset changed but no corresponding test update is included in this review set; please add (or explicitly reference existing) pytest coverage for this path.

As per coding guidelines, "**/*.{cpp,cc,cxx,c,h,hpp,py}: Add unit tests for code changes; refer to cpp/src/tests for C/C++ gtest examples and python/cuopt/cuopt/tests for Python pytest examples".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/cuopt-numerical-optimization-api-python/assets/portfolio/model.py`
around lines 18 - 20, Add a pytest that imports the portfolio.model module and
asserts the changed constants r1, r2, r3 have the expected values (0.12, 0.08,
0.05) so the change is covered by tests; place the test in the repository's
Python test suite following the existing pytest conventions and naming (e.g.,
test_*.py) and ensure it is discoverable by the CI test runner.

Comment on lines +26 to +28
r1 = 0.12 # 12%
r2 = 0.08 # 8%
r3 = 0.05 # 5%
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Please trigger NVSkills CI validation for this skills PR.

Before merge, comment /nvskills-ci on the PR and confirm the signature commit is still present.

As per coding guidelines, "skills/**/*: For PRs changing content under skills/ directory, request NVSkills CI validation by commenting /nvskills-ci and ensure the signature commit remains in the PR".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/cuopt-numerical-optimization-api-python/references/qp_examples.md`
around lines 26 - 28, This PR changes content under skills/ (see qp_examples.md)
so before merging, post the comment `/nvskills-ci` on the pull request to
trigger NVSkills CI and verify the signature commit is still present in the PR
history; if the signature commit is missing, re-add it or restore the signed
commit before running the CI trigger.

@rgsl888prabhu rgsl888prabhu mentioned this pull request May 27, 2026
rgsl888prabhu added a commit that referenced this pull request May 27, 2026
…to dodge GPS-coord PII false-positives

Last CI run on this branch (commit b531169) cleared all 4 AGENT_EVAL
HIGHs from the eval simplification, but a single HIGH still gated:
the PII detector flagged 9 MEDIUM "GPS coordinates" findings on
inline numeric arrays in C example code, which the gate aggregates
into one HIGH.

Files / lines previously flagged:
* SKILL.md:33               — cuopt_float_t values[] = {2.0, 3.0, 4.0, 2.0};
* references/examples.md:49 — cuopt_float_t values[] = {3.0, 4.0, 2.7, 10.1};
* references/examples.md:52 — cuopt_float_t objective_coefficients[] = {-0.2, 0.1};
* references/examples.md:55 — cuopt_float_t constraint_upper_bounds[] = {5.4, 4.9};
* references/examples.md:59 — cuopt_float_t var_lower_bounds[] = {0.0, 0.0};
* references/examples.md:143, 145, 146, 148 — same in the MILP example
  (values, objective_coefficients, constraint_upper, var_lower).

The detector regex matches the inline-array shape "{N.N, N.N, ...};"
as a GPS coordinate pair. Reformatting the arrays multi-line breaks
that shape — one value per line — without changing C semantics.

Identical to the fix applied to other numerical-optimization assets
on PR #1310 (skills/onboarding-prep-securitymd-pii-descs). Ported
here directly because PR #1310 will not merge before this PR needs
to clear CI.

No content change — only whitespace/formatting on the array literals.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant