[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXJ4WRPMMBPADDY22KS3RG":3,"skill-same:01M6BXJ4WRPMMBPADDY22KS3RG":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":33,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6BXJ4WRPMMBPADDY22KS3RG","audio-stage-authoring",null,"Make a new or existing NeMo Curator audio stage agent-ready so the audio agent can discover, configure and chain it. Use when adding an audio stage, writing or fixing its describe() contract or StageContract, adding *_key fields or semantic roles, writing a capability card, or when card conformance or assert_agent_ready fails. This is for authoring stage code in a Curator checkout, not for curating a dataset - use the audio-curation skill for that.","NVIDIA-NeMo\u002FCurator","NVIDIA-NeMo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F213689629?v=4","01M6BXH6HS4CXMTZ8GCBQTKPAP","01M6BXH6PD7DSNJ54NXBQ577TR",1857,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-stage-authoring\u002FSKILL.md",[17,22,25,28],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":29,"categoryName":30,"taxonomyType":31,"taxonomyTypeDesc":32},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[34,35,36,37,38,39],"Audio","audio stage authoring","writing","code","NeMo","configure","2026-11-10 10:12:30",false,"---\nname: audio-stage-authoring\ndescription: Make a new or existing NeMo Curator audio stage agent-ready so the audio agent can discover, configure and chain it. Use when adding an audio stage, writing or fixing its describe() contract or StageContract, adding *_key fields or semantic roles, writing a capability card, or when card conformance or assert_agent_ready fails. This is for authoring stage code in a Curator checkout, not for curating a dataset - use the audio-curation skill for that.\n---\n\n# Making an audio stage agent-ready\n\nThis skill is the **procedure**. The authoritative checklist it drives is\n`nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` — read that file for the mechanical\ncontract rather than working from memory, and do not restate it here.\n\n**Golden rule, from that document:** every new knob defaults to today's behavior.\nAgent-readiness must never change how a stage runs in an existing pipeline. If a\nchange alters existing output, it is a behavior change and needs its own justification.\n\n## Before writing code, read these\n\n- `nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` — the contract: `AgentReady` + `describe()`\n  returning `reads`, `writes`, `cardinality`, honest `gates`; `*_key` constructor fields;\n  `ConditionalWrite`; what is auto-derived and must not be hand-written.\n- `nemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fknowledge\u002FCARD_SCHEMA.md` — the capability card schema.\n- `.cursor\u002Frules\u002Fprocessing-stage-patterns.mdc` and `.cursor\u002Frules\u002Fcomposite-stage-patterns.mdc` —\n  the repo's own conventions for `ProcessingStage` and `CompositeStage`. These are\n  upstream-maintained framework rules; read them, do not copy from them, and never edit them.\n  (Checkout-only: they are not part of the installed package.)\n\n## The order that works\n\n1. **Write the stage the normal way first**, following the two pattern rules above.\n   Agent-readiness is a declaration layer over working code, not a substitute for it.\n2. **Turn every `task.data` key into a `*_key` constructor field.** A bare key literal\n   inside `process()` is invisible to the agent and cannot be remapped when wiring two\n   stages together. This is the single most common omission.\n3. **Implement `describe()`** with `reads`, `writes`, `cardinality`, and honest `gates`.\n   Do not put `params` in it — those are auto-derived from the dataclass fields.\n4. **Reuse an existing semantic role** with a class-local `KEY_ROLE_OVERRIDES` mapping\n   when a new key parameter means an existing concept. Add a shared `_roles.KEY_ROLES`\n   entry only for a new cross-stage concept; declare genuinely internal keys in the\n   stage's `INTERNAL_KEY_FIELDS`. Internal fields are unioned across the MRO.\n5. **Write the capability card** with the meaning of every externally consumed output:\n   meaning, unit or range, provenance, scope or granularity, propagation across\n   fan-out\u002Fnesting\u002Faggregation, and at least one counterexample. Roles prove that two\n   stages *can* connect; only the card lets the host judge whether connecting them\n   achieves the user's intent.\n6. **Add the conformance test**: `assert_agent_ready(MyStage(...), fixture_factory=...)`.\n   For GPU or model stages, reuse the fake-model or stub setup in the relevant stage's\n   test module so the conformance test needs no GPU.\n7. **Run the card gate**: `card_conformance.audit()` must report zero violations, and an\n   unknown top-level card key is a violation rather than something silently ignored.\n\n## Declare honestly, especially where it costs you\n\nThe contract is a promise the agent plans against, so an optimistic declaration is worse\nthan a missing one. Three traps worth naming:\n\n- **A stage that may drop rows is `cardinality=\"filter\"`**, even when dropping is a side\n  effect of something else. A strict sample-rate check that returns `[]` for a mismatched\n  row is filtering, and declaring `1:1` makes validation treat a silently discarded corpus\n  as a pass-through.\n- **`gates` are environment facts, not aspirations.** `writes_to_disk=True` with an empty\n  `output_path_params` is refused by smoke, because it claims disk writes while offering\n  nothing to redirect into the sandbox.\n- **Durable task-ID dependencies are resume facts.** If framework `task.task_id` enters an\n  output filename, archive member, or durable row identifier, declare\n  `gates.requires_stable_task_id=True`; metadata checkpoints do not serialize that identity.\n- **`ConditionalWrite` labels possibility, not intent.** Its `condition` must describe a\n  real code branch using configured key values. Use `value_origin=\"upstream_same_key\"` when\n  the stage merely copies a field, so the original producer keeps credit for the meaning and\n  the copier is not presented as a new metric producer.\n\n## Verify\n\n```bash\n.venv\u002Fbin\u002Fpython -m pytest tests\u002Fstages\u002Faudio -m \"not gpu\" -q\n.venv\u002Fbin\u002Fpython -m nemo_curator.stages.audio.audio_agent describe MyStage --params '{\"score_key\": \"my_score\"}'\n```\n\n`describe` is the agent's view of the stage. If its `reads`\u002F`writes` do not match what the\ncode actually touches for those params, the contract is wrong no matter what the tests say.\n\nThen confirm the stage is reachable through the public surface, not the private catalog:\n\n```python\nfrom nemo_curator.stages.audio import agent\nagent.list_agent_ready_stages()   # your stage should appear\n```\n\n## Checklist\n\nCopy the PR checklist at the end of `nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` rather than\na paraphrase of it — that list is maintained with the framework and this file is not.\n","# Making an audio stage agent-ready\n\nThis skill is the **procedure**. The authoritative checklist it drives is\n`nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` — read that file for the mechanical\ncontract rather than working from memory, and do not restate it here.\n\n**Golden rule, from that document:** every new knob defaults to today's behavior.\nAgent-readiness must never change how a stage runs in an existing pipeline. If a\nchange alters existing output, it is a behavior change and needs its own justification.\n\n## Before writing code, read these\n\n- `nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` — the contract: `AgentReady` + `describe()`\n  returning `reads`, `writes`, `cardinality`, honest `gates`; `*_key` constructor fields;\n  `ConditionalWrite`; what is auto-derived and must not be hand-written.\n- `nemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fknowledge\u002FCARD_SCHEMA.md` — the capability card schema.\n- `.cursor\u002Frules\u002Fprocessing-stage-patterns.mdc` and `.cursor\u002Frules\u002Fcomposite-stage-patterns.mdc` —\n  the repo's own conventions for `ProcessingStage` and `CompositeStage`. These are\n  upstream-maintained framework rules; read them, do not copy from them, and never edit them.\n  (Checkout-only: they are not part of the installed package.)\n\n## The order that works\n\n1. **Write the stage the normal way first**, following the two pattern rules above.\n   Agent-readiness is a declaration layer over working code, not a substitute for it.\n2. **Turn every `task.data` key into a `*_key` constructor field.** A bare key literal\n   inside `process()` is invisible to the agent and cannot be remapped when wiring two\n   stages together. This is the single most common omission.\n3. **Implement `describe()`** with `reads`, `writes`, `cardinality`, and honest `gates`.\n   Do not put `params` in it — those are auto-derived from the dataclass fields.\n4. **Reuse an existing semantic role** with a class-local `KEY_ROLE_OVERRIDES` mapping\n   when a new key parameter means an existing concept. Add a shared `_roles.KEY_ROLES`\n   entry only for a new cross-stage concept; declare genuinely internal keys in the\n   stage's `INTERNAL_KEY_FIELDS`. Internal fields are unioned across the MRO.\n5. **Write the capability card** with the meaning of every externally consumed output:\n   meaning, unit or range, provenance, scope or granularity, propagation across\n   fan-out\u002Fnesting\u002Faggregation, and at least one counterexample. Roles prove that two\n   stages *can* connect; only the card lets the host judge whether connecting them\n   achieves the user's intent.\n6. **Add the conformance test**: `assert_agent_ready(MyStage(...), fixture_factory=...)`.\n   For GPU or model stages, reuse the fake-model or stub setup in the relevant stage's\n   test module so the conformance test needs no GPU.\n7. **Run the card gate**: `card_conformance.audit()` must report zero violations, and an\n   unknown top-level card key is a violation rather than something silently ignored.\n\n## Declare honestly, especially where it costs you\n\nThe contract is a promise the agent plans against, so an optimistic declaration is worse\nthan a missing one. Three traps worth naming:\n\n- **A stage that may drop rows is `cardinality=\"filter\"`**, even when dropping is a side\n  effect of something else. A strict sample-rate check that returns `[]` for a mismatched\n  row is filtering, and declaring `1:1` makes validation treat a silently discarded corpus\n  as a pass-through.\n- **`gates` are environment facts, not aspirations.** `writes_to_disk=True` with an empty\n  `output_path_params` is refused by smoke, because it claims disk writes while offering\n  nothing to redirect into the sandbox.\n- **Durable task-ID dependencies are resume facts.** If framework `task.task_id` enters an\n  output filename, archive member, or durable row identifier, declare\n  `gates.requires_stable_task_id=True`; metadata checkpoints do not serialize that identity.\n- **`ConditionalWrite` labels possibility, not intent.** Its `condition` must describe a\n  real code branch using configured key values. Use `value_origin=\"upstream_same_key\"` when\n  the stage merely copies a field, so the original producer keeps credit for the meaning and\n  the copier is not presented as a new metric producer.\n\n## Verify\n\n```bash\n.venv\u002Fbin\u002Fpython -m pytest tests\u002Fstages\u002Faudio -m \"not gpu\" -q\n.venv\u002Fbin\u002Fpython -m nemo_curator.stages.audio.audio_agent describe MyStage --params '{\"score_key\": \"my_score\"}'\n```\n\n`describe` is the agent's view of the stage. If its `reads`\u002F`writes` do not match what the\ncode actually touches for those params, the contract is wrong no matter what the tests say.\n\nThen confirm the stage is reachable through the public surface, not the private catalog:\n\n```python\nfrom nemo_curator.stages.audio import agent\nagent.list_agent_ready_stages()   # your stage should appear\n```\n\n## Checklist\n\nCopy the PR checklist at the end of `nemo_curator\u002Fstages\u002Faudio\u002FAGENT_READY.md` rather than\na paraphrase of it — that list is maintained with the framework and this file is not.\n",{"name":5,"description":7},"main","8a9a217c90127d424a8f503cb948698d7203002a","nemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-stage-authoring",371,"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo","https:\u002F\u002Fnvidia.com\u002F","2026-11-11 08:35:27",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add NVIDIA-NeMo\u002FCurator --skill audio-stage-authoring",{"tool":59,"command":60},"bunx","bunx skills add NVIDIA-NeMo\u002FCurator --skill audio-stage-authoring",{"tool":62,"command":63},"pnpm","pnpm dlx skills add NVIDIA-NeMo\u002FCurator --skill audio-stage-authoring","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-stage-authoring\u002FSKILL.md",true,[],[68,82,96,109,124,130],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":40},"01M6BXJ86EP64TND1NAHC9MHSS","checkpoint-placement","Select a core-proven metadata checkpoint for same-dataset parameter feedback. Use after recipe validation and semantic critique, before authoritative smoke, when the user expects to tune a declared downstream decision after seeing results.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Fcheckpoint-placement\u002FSKILL.md",[],[75,76,77,78,79,80,81],"checkpoint placement","checkpoint","feedback","critique","metadata","validation","core",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":90,"publishedAt":40},"01M6BXJ1FTZZ76B6E79ZCJP2Q6","audio-curation","Build and run a NeMo Curator audio curation pipeline from a natural-language goal (host-driven planner over the audio_agent tool core). Use for any audio, speech or audio-dataset task - quality filtering, transcription, WER filtering, VAD, diarization, ALM windowing, resampling, channel conversion, or inspecting an audio corpus. Route such work through this skill rather than writing ad-hoc ffprobe, librosa or soundfile scripts.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-curation\u002FSKILL.md",[88,89],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},[91,34,92,93,94,38,95,81,36],"audio curation","run","tool","pipeline","speech",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":40},"01M6BXHYGV7VCDAMVQXPJ1CMDE","nemo-curator-docs","Maintain the NeMo Curator Fern docs site — add, update, move, or remove pages under fern\u002F. Use for any documentation changes.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fnemo-curator-docs\u002FSKILL.md",[],[103,38,104,105,106,107,108],"nemo curator docs","docs","docs site","site","update","documentation",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":116,"publishedAt":40},"01M6BXHT5YPZDFEMBJD7HRW5TB","getting-started","Set up NeMo Curator for data curation (text, image, video, audio)","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgetting-started\u002FSKILL.md",[115],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[117,118,34,38,119,120,121,122,123],"getting started","image","data","SET","Video","data curation","text",{"skillNo":125,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":40},"01M6BXHQ573S6BCYDZ224MEX9K","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Faudio-curation\u002FSKILL.md",[128],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[34,91],{"skillNo":131,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":40},"01M6BXHM5EPNGD9S4ED7P7KEYS","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcheckpoint-placement\u002FSKILL.md",[],[75,76]]