NVIDIA-NeMo/nemo-platform/sdk/python/nemo-platform/src/nemo_platform/skills/nemo-build-agent/SKILL.md
nemo-build-agent
End-to-end NeMo Platform agent implementation from an approved agent spec. Registers and deploys the agent, generates evaluation data, runs evaluation, and signs off. Use for full spec-to-deployed-agent work, including builds from an existing legacy NAT workflow.
- Source repository stars
- 56
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-06
- Source checked
- 2026-08-06
Decision brief
What it does—and where it fits
Build a deployable NeMo Platform agent from an approved AGENT-SPEC.md. Use the Platform-managed nemo-agents-spec-v1 agent.yaml path by default. Treat NAT workflow YAML as a supported compatibility path, not the default output.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/NVIDIA-NeMo/nemo-platform --skill "sdk/python/nemo-platform/src/nemo_platform/skills/nemo-build-agent"Inspect the Agent Skill "nemo-build-agent" from https://github.com/NVIDIA-NeMo/nemo-platform/blob/f2d56031d6a584e8064024bbc3a8cad368ec33a7/sdk/python/nemo-platform/src/nemo_platform/skills/nemo-build-agent/SKILL.md at commit f2d56031d6a584e8064024bbc3a8cad368ec33a7. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Compatibility: existing NAT workflow YAML
If the user selected migration, preserve the original YAML. If a workflow, tool, or custom Python component has no supported harness equivalent, keep the NAT path or identify the need for a custom adapter. Never claim arbitrary NAT workflows convert mechanically.
If the user selected migration, preserve the original YAML. If a workflow, tool, or custom Python component has no supported harness equivalent, keep the NAT path or identify the need for a custom adapter. Never claim a…Use references/templates/agent.yml only when the user explicitly chooses the legacy NAT path or needs a new NAT compatibility workflow. - 02
Step 1: Register and deploy
For each operation retained by the selected lifecycle branch, follow the nemo-agent-config confirmation requirement. Show the create command and ask for explicit confirmation immediately before running it:
For each operation retained by the selected lifecycle branch, follow the nemo-agent-config confirmation requirement. Show the create command and ask for explicit confirmation immediately before running it:After create succeeds, show the deploy command and ask for explicit confirmation immediately before running it:If skills.paths is non-empty, show this command instead and ask for explicit confirmation immediately before running it: - 03
Step 2: Try the deployed agent
For the default path, invoke one question from each category in the spec. For an unchanged NAT-only run without a spec, use representative questions from the workflow and the user's stated requirements:
For an unchanged NAT-only run without AGENT-SPEC.md, stop after the smokeContinue into the spec-driven purpose selection and Data Designer flow onlyFor the default path, invoke one question from each category in the spec. For an unchanged NAT-only run without a spec, use representative questions from the workflow and the user's stated requirements: - 04
Step 3: Generate synthetic data
Use Data Designer for every synthetic dataset. Do not hand-author evaluation, knowledge-base, benchmark, persona, or training data.
Always select evaluation as a required data purpose. ReadWait for the user to choose any additional purposes. Evaluation cannot beInvoke data-designer once per selected purpose, passing the agent name, - 05
Step 3.5: Connect runtime data
If the generated data must be available during invocation, connect it through the selected harness's supported skills, MCP, or tool configuration. Update agents/$AGENTNAME-spec/agent.yaml through nemo-agent-config, then follow the confirmed replacement branch before creating and…
If the generated data must be available during invocation, connect it through the selected harness's supported skills, MCP, or tool configuration. Update agents/$AGENTNAME-spec/agent.yaml through nemo-agent-config, then…Do not invent a generic retriever field. If the selected harness cannot consume the required data, surface that limitation and choose a supported integration, the NAT compatibility path, or a custom adapter.For a legacy NAT workflow, NAT-specific retrievers may be wired into its functions and workflow blocks using the matching NAT RAG integration.
Permission review
Static risk signals and limitations
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 56 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- NVIDIA-NeMo/nemo-platform
- Skill path
- sdk/python/nemo-platform/src/nemo_platform/skills/nemo-build-agent/SKILL.md
- Commit
- f2d56031d6a584e8064024bbc3a8cad368ec33a7
- License
- Apache-2.0
- Collected
- 2026-08-06
- Default branch
- main
View the original SKILL.md
NeMo Platform agent build
Build a deployable NeMo Platform agent from an approved AGENT-SPEC.md. Use
the Platform-managed nemo-agents-spec-v1 agent.yaml path by default. Treat
NAT workflow YAML as a supported compatibility path, not the default output.
Use nemo-agent-config for the machine-readable config shape. Do not expose
Fabric SDK object names or raw runtime configuration to the user.
Select the config path
Choose the config path before pre-flight. Set shared names for either path:
AGENT_NAME=<agent-name>
DEPLOYMENT_NAME="${AGENT_NAME}-deployment"
If the user supplies an existing NAT workflow YAML, ask whether they want to
deploy it unchanged or migrate it best-effort to nemo-agents-spec-v1 with
nemo-agent-config. For an unchanged NAT-only run, preserve the original file
and also set:
NAT_WORKFLOW_PATH=<path-to-workflow-yaml>
Pre-flight
-
Run the platform probe owned by
nemo-status. If it reportsPLATFORM_DOWNorPLATFORM_WEDGED, route tonemo-setupand stop. -
Confirm the agents plugin is loaded:
.venv/bin/nemo agents --help 2>&1 | grep -q "create" -
Check for existing Agent entities and deployments. Ask whether to reuse or replace them. Follow the lifecycle branches below before create or deploy.
-
For an unchanged NAT-only run, confirm
$NAT_WORKFLOW_PATHexists and read it before continuing. Do not requireAGENT-SPEC.mdor a spec fileset. -
For the default Platform-managed path, confirm
agents/$AGENT_NAME-spec/AGENT-SPEC.mdexists. If it does not, route throughnemo-exploreandnemo-specfirst. -
Read the spec and extract the agent name, instructions, capabilities, model requirements, tools, constraints, and success criteria.
-
Confirm the canonical spec fileset exists:
.venv/bin/nemo files filesets get "${AGENT_NAME}-spec" \ --workspace "${WORKSPACE:-default}" >/dev/null 2>&1 \ && echo "spec_fileset_ok" \ || { echo "spec_fileset_missing - run nemo-spec first"; exit 1; }
Steps 5 through 7 apply only to the default Platform-managed path or an explicit NAT migration.
Existing-resource lifecycle
- Reuse: Do not run
agents createfor an existing Agent. If a deployment already exists, setDEPLOYMENT_NAMEto its name, do not runagents deploy, and continue to the smoke test. If only the Agent exists, skip create and run only the deploy command in Step 1. - Replace: Show each destructive command and require explicit confirmation
immediately before running it. Use
--yesonly after that confirmation. If the resource does not exist, skip its command.
For a confirmed replacement, undeploy first:
.venv/bin/nemo agents undeploy "$DEPLOYMENT_NAME" --yes
Wait until this command reports that the deployment is absent before continuing:
.venv/bin/nemo agents deployments get "$DEPLOYMENT_NAME"
Then show the Agent deletion command and require explicit confirmation before running it:
.venv/bin/nemo agents delete "$AGENT_NAME" --yes
Verify this command reports that the Agent is absent before running the create and deploy commands in Step 1:
.venv/bin/nemo agents get "$AGENT_NAME"
Prepare the selected config
Default: Platform-managed agent.yaml
For a new build, invoke nemo-agent-config and create:
agents/<agent-name>-spec/
AGENT-SPEC.md
agent.yaml
Delegate authoring to nemo-agent-config. It selects the supported harness and
uses nemo-model-selection to verify the exact model against that harness's
model contract before writing the model block. Translate the approved spec into
system instructions, skills, MCP servers, tools, environment paths, and
telemetry. Keep every local path relative to the directory containing
agent.yaml.
Before registration, inspect skills.paths:
-
If it is empty, continue with the normal deployment lifecycle below.
-
If it is non-empty, verify every relative directory is inside the agent packaging context and contains
SKILL.md. Package the complete bundle before deployment:IMAGE_TAG="${AGENT_NAME}:local" .venv/bin/nemo agents package \ --agent "agents/$AGENT_NAME-spec/agent.yaml" \ --tag "$IMAGE_TAG"Use the packaged-image deploy command below. Do not use subprocess deployment or the default container image because those paths materialize only
agent.yamland do not stage relative skill directories.
Compatibility: existing NAT workflow YAML
If the user selected migration, preserve the original YAML. If a workflow, tool, or custom Python component has no supported harness equivalent, keep the NAT path or identify the need for a custom adapter. Never claim arbitrary NAT workflows convert mechanically.
Use references/templates/agent.yml only when the user explicitly chooses the
legacy NAT path or needs a new NAT compatibility workflow.
Step 1: Register and deploy
For the default path:
For each operation retained by the selected lifecycle branch, follow the
nemo-agent-config confirmation requirement. Show the create command and ask
for explicit confirmation immediately before running it:
.venv/bin/nemo agents create \
--name "$AGENT_NAME" \
--agent-config "agents/$AGENT_NAME-spec/agent.yaml"
After create succeeds, show the deploy command and ask for explicit confirmation immediately before running it:
.venv/bin/nemo agents deploy \
--agent "$AGENT_NAME" \
--name "$DEPLOYMENT_NAME"
If skills.paths is non-empty, show this command instead and ask for explicit
confirmation immediately before running it:
.venv/bin/nemo agents deploy \
--agent "$AGENT_NAME" \
--name "$DEPLOYMENT_NAME" \
--mode docker \
--image "$IMAGE_TAG"
For Kubernetes, publish the packaged image and replace docker and
$IMAGE_TAG with k8s and the published image tag.
These commands assume the Agent and deployment are absent. If pre-flight found existing resources, complete the selected lifecycle branch before running them.
nemo agents deploy waits for running by default. If the user passed
--no-wait, wait explicitly:
.venv/bin/nemo agents deployments wait "$DEPLOYMENT_NAME"
Show agent.yaml and the deployment result. Stop and ask whether the config,
model, harness, and instructions look right before continuing.
For an unchanged NAT workflow, registration defaults configs without
config_format to nat-workflow-v1:
Apply the same immediate confirmation requirement. Show the create command and wait for explicit confirmation before running it:
.venv/bin/nemo agents create \
--name "$AGENT_NAME" \
--agent-config "$NAT_WORKFLOW_PATH"
After create succeeds, show the deploy command and wait for explicit confirmation before running it:
.venv/bin/nemo agents deploy \
--agent "$AGENT_NAME" \
--name "$DEPLOYMENT_NAME"
Step 2: Try the deployed agent
For the default path, invoke one question from each category in the spec. For an unchanged NAT-only run without a spec, use representative questions from the workflow and the user's stated requirements:
.venv/bin/nemo agents invoke \
--agent-deployment "$DEPLOYMENT_NAME" \
--input "<smoke-test question-1>"
.venv/bin/nemo agents invoke \
--agent-deployment "$DEPLOYMENT_NAME" \
--input "<smoke-test question-2>"
.venv/bin/nemo agents invoke \
--agent-deployment "$DEPLOYMENT_NAME" \
--input "<smoke-test question-3>"
Display each response verbatim. Stop and ask whether to adjust the agent or continue to evaluation.
Before Step 3, branch explicitly:
- For an unchanged NAT-only run without
AGENT-SPEC.md, stop after the smoke test. Do not execute Steps 3–5 and do not require an evaluation fileset. - Continue into the spec-driven purpose selection and Data Designer flow only
when the user requests it and
agents/$AGENT_NAME-spec/AGENT-SPEC.mdexists. If the user requests evaluation but the spec is absent, create and confirm the spec first; do not continue to Step 3 yet.
Step 3: Generate synthetic data
Use Data Designer for every synthetic dataset. Do not hand-author evaluation, knowledge-base, benchmark, persona, or training data.
- Always select evaluation as a required data purpose. Read
agents/$AGENT_NAME-spec/AGENT-SPEC.mdand list any additional plausible purposes: knowledge/RAG corpus, benchmark, personas/adversarial inputs, training, or another user-requested purpose. - Wait for the user to choose any additional purposes. Evaluation cannot be omitted. If they delegate the decision, add a knowledge base when the spec requires retrieval and adversarial personas when it contains safety constraints.
- Invoke
data-designeronce per selected purpose, passing the agent name, purpose, and spec path. - Require every generated config to read product context from
AGENT-SPEC.md; do not duplicate that context inline. - Run each generated config. For evaluation, validate the generated records,
verify the resulting fileset exists, and record its exact dataset reference
as
EVAL_DATASET_REF. - Show 3 to 5 sample records per purpose and ask for approval.
A validated $AGENT_NAME-eval-* fileset and its exact EVAL_DATASET_REF must
exist before evaluation proceeds.
Step 3.5: Connect runtime data
If the generated data must be available during invocation, connect it through
the selected harness's supported skills, MCP, or tool configuration. Update
agents/$AGENT_NAME-spec/agent.yaml through nemo-agent-config, then follow the
confirmed replacement branch before creating and deploying the Agent again.
Do not invent a generic retriever field. If the selected harness cannot consume the required data, surface that limitation and choose a supported integration, the NAT compatibility path, or a custom adapter.
For a legacy NAT workflow, NAT-specific retrievers may be wired into its
functions and workflow blocks using the matching NAT RAG integration.
After the replacement deployment, invoke a question that requires the data and verify the expected tool or retrieval path was actually used.
Step 4: Evaluate
Select the actual Platform model reference as EVAL_MODEL. Create
agents/$AGENT_NAME.eval-job.json from references/templates/eval-job.json and
replace every placeholder. Its model must equal EVAL_MODEL, and its
dataset must equal the recorded EVAL_DATASET_REF from Step 3.
Validate the rendered file before creating the benchmark job:
.venv/bin/python -m json.tool "agents/$AGENT_NAME.eval-job.json" >/dev/null
if grep -Eq '<[^>]+>' "agents/$AGENT_NAME.eval-job.json"; then
echo "eval job still contains template placeholders" >&2
exit 1
fi
Also read the validated payload back and confirm its model and dataset
values match EVAL_MODEL and EVAL_DATASET_REF. Do not invoke
benchmark-jobs create if JSON validation, model validation, dataset
validation, or fileset validation fails.
After all validation succeeds:
.venv/bin/nemo evaluation benchmarks list
.venv/bin/nemo evaluation benchmark-jobs create "$AGENT_NAME-eval" \
--input-file "agents/$AGENT_NAME.eval-job.json"
Poll until the job reaches completed or failed, then download aggregate
scores. Show the score table and compare it with the success bar in
AGENT-SPEC.md.
for i in $(seq 1 24); do
status=$(.venv/bin/nemo evaluation benchmark-jobs get-status "$AGENT_NAME-eval" 2>/dev/null)
echo "$status"
echo "$status" | grep -qE "completed|failed" && break
sleep 10
done
.venv/bin/nemo evaluation benchmark-jobs results aggregate-scores download \
"$AGENT_NAME-eval"
Step 5: Guardrails (optional)
For nemo-agents-spec-v1, AgentConfig has no guardrail field and the current
skills do not define a supported composition between an Agent and an IGW
guardrailed VirtualModel. Do not add guardrail fields to agent.yaml or claim
that guardrails are attached. If the spec requires guardrails, report this as an
unmet requirement and stop before sign-off. nemo-guardrails may be used to
configure IGW VirtualModel middleware as a separate workflow, but do not treat
it as integrated with the Agent until its model routing has been explicitly
configured and validated.
For a legacy NAT workflow, keep the NAT compatibility behavior: add supported
guardrail intercepts to the NAT workflow YAML, then follow the confirmed
replacement branch before creating and deploying it again. Never add NAT
intercepts to a nemo-agents-spec-v1 config.
For the NAT path, test one adversarial prompt and one legitimate prompt. Report both responses and do not continue to sign-off until the expected policy is enforced without blocking the legitimate request.
Step 6: Sign off
Invoke the success-criteria prompt from the spec against
$DEPLOYMENT_NAME. Print the verbatim response as the formal sign-off. Do not
claim success until the deployment is running, evaluation has completed, and
the sign-off returns an actual model response.
If verification fails
| Symptom | Cause | Recovery |
|---|---|---|
| Agents plugin unavailable | plugins/nemo-agents is not installed | Route to nemo-setup |
| Config validation fails | Config does not match its declared format | Use nemo-agent-config for nemo-agents-spec-v1; use NAT schema rules only for NAT YAML |
Deployment reaches failed | Runtime, adapter, image, or config startup failure | Run .venv/bin/nemo agents deployments get "$DEPLOYMENT_NAME" and .venv/bin/nemo agents logs "$DEPLOYMENT_NAME" |
| Referenced file is missing | Path is outside or absent from the staged agent directory | Keep paths relative to the config and package the complete agent bundle into the deployed image |
| Adapter or binary is missing | Selected harness dependency is not installed | Install the matching adapter/runtime package or select an available harness |
| Empty response | Runtime invocation failed or the selected configuration is incomplete | Inspect deployment logs and the returned structured error |
| Eval job fails | Dataset reference or model ID is invalid | Get the benchmark job details and correct the named input |
Hard rules
- Default new builds to
agents/$AGENT_NAME-spec/agent.yamlwithconfig_format: nemo-agents-spec-v1. - Keep
AGENT-SPEC.mdas the human-readable design andagent.yamlas the machine-readable implementation config. - Preserve legacy NAT YAML unless the user explicitly requests migration.
- Do not mix NAT-only keys such as
functions,llms,workflow, orinterceptsintonemo-agents-spec-v1. - Do not put Platform
agent.yamlfields into NAT workflow YAML. - Use a named deployment and invoke it with
--agent-deployment. - Keep local artifact paths relative to the config directory.
- After changing persisted Agent config, use the confirmed replacement branch before creating and deploying it again.
Alternatives
Compare before choosing
drafthq/draft
decompose
Decompose project or track into modules with dependency mapping. Project scope updates architecture.md and derives .ai-context.md. Track scope generates hld.md (always) and lld.md (when --lld or High-complexity module triggers it) — design-mandated artifacts that drive implement, deploy-checklist, and upload sign-off.
JasonColapietro/suede-creator-skills
suede-instagram-growth
Suede-owned Instagram growth operating system for account-specific audits, Reels, carousels, Stories, conversion mapping, calendars, and daily candidate-production loops. Use when the user names Instagram, IG, Reels, Stories, asks to analyze recent posts, grow a handle, run a daily workflow, create or repurpose Instagram content, or distinguish views from follows, leads, and sales. NOT FOR: multi-platform organic strategy (use suede-social), full video rendering or editing (use suede-video), pai
mission69b/t2000
sui-publish
Publishing, upgrading, and deploying Sui Move packages. Use this skill when the user needs to publish a package, upgrade a published package, deploy to multiple networks, serialize transactions for multisig signing, run a local Sui network (localnet), prepare for Mainnet launch, monitor production deployments, or debug dry run failures. Also use when the user asks about sui client publish, sui client upgrade, UpgradeCap, upgrade policies, Published.toml, --serialize-output, localnet, mainnet lau
eugenelim/agent-ready-repo
release-loop
Use to drive the deployed end-to-end validation outer loop — deploy the integrated whole to an ephemeral environment, run e2e, observe telemetry, feed deployed findings back to work-loop's inner loop, redeploy, and iterate until the deployed whole converges, then stop at the human consent gate for the prod ship. Run by the release-lead agent (a peer of work-loop's supervisor, not a work-loop mode). Triggers on "run the release loop", "deploy the integrated whole and iterate", "ship it to an ephe