with one click
maintain-ci
// Maintain and review NeMo Relay GitHub Actions workflows with explicit per-job permissions, pinned action SHAs, deterministic caching, reusable workflow permission boundaries, and local validation
// Maintain and review NeMo Relay GitHub Actions workflows with explicit per-job permissions, pinned action SHAs, deterministic caching, reusable workflow permission boundaries, and local validation
Migrate applications, examples, integrations, documentation, package manifests, and repository code from NeMo Flow naming and packages to NeMo Relay across Python, Rust, Node.js, Go, WebAssembly, C FFI, CLI, config, and observability surfaces; use when a user asks to rename nemo_flow/nemo-flow/NeMo Flow APIs, automate a migration, update imports or dependencies, or validate a Flow-to-Relay conversion
Add or change a public NeMo Relay API surface across the core runtime and every affected binding
Add a new third-party framework integration maintained as a NeMo Relay patch set
Add a new guardrail or intercept type to the NeMo Relay middleware pipeline
Contribute a new NeMo Relay public API surface safely, with binding parity and docs in mind
Contribute documentation or example changes that stay aligned with NeMo Relay public behavior
| name | maintain-ci |
| description | Maintain and review NeMo Relay GitHub Actions workflows with explicit per-job permissions, pinned action SHAs, deterministic caching, reusable workflow permission boundaries, and local validation |
| author | NVIDIA Corporation and Affiliates |
| license | Apache-2.0 |
Use karpathy-guidelines alongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.
Use this skill when a change touches .github/workflows/*.yml or
.github/workflows/*.yaml, or when reviewing CI behavior for security,
reliability, or reproducibility.
permissions: on each job that needs token access.actions/cache.workflow_call.RELEASING.md: raw SemVer tags only,
no leading v.contents: read is the default minimum for checkout-based build, test, docs,
and packaging jobs.pull-requests: read is required for PR metadata lookup jobs.pages: write and id-token: write should be limited to Pages deployment
jobs and any caller that invokes them through a reusable workflow.astral-sh/setup-uv cache support with cache-dependency-glob
anchored to uv.lock.Swatinem/rust-cache with explicit shared-key and workspaces
instead of ad hoc target-directory caching.Start with the narrowest useful checks:
ruby -e 'require "yaml"; Dir[".github/workflows/*.{yml,yaml}"].each { |f| YAML.load_file(f) }; puts "yaml-ok"'
uv run pre-commit run --files .github/workflows/ci.yaml .github/workflows/ci_pipe.yml
Use ripgrep to inspect the workflow graph before editing:
rg -n "uses:|permissions:|workflow_call|secrets:|upload-artifact|download-artifact|upload-pages-artifact|deploy-pages|codecov|cache" .github/workflows
If local lint passes but the question is whether GitHub will authorize the run, inspect GitHub's permission model and the upstream action or reusable workflow source instead of assuming local success proves remote success.
.github/workflows/ci.yaml.github/workflows/ci_pipe.ymlRELEASING.md.pre-commit-config.yamlmaintain-packagingvalidate-change