feat(skills): add aiq-customize-prompts-models and aiq-maintain-ci - #282
Conversation
WalkthroughAdds two new agent skill documentation trees: ChangesNew Agent Skills and Registration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Address PR NVIDIA-AI-Blueprints#282 review feedback; every change verified against the repo. aiq-maintain-ci: - pytest and helm-lint are pre-commit `stages: [push]`, so `pre-commit run --all-files` does NOT run them (the prior "can be heavier than expected" note was backwards). Document `--hook-stage push` and that CI runs them as the dedicated test/helm-lint jobs; note the pre-commit job's SKIP= set. - Correct ui.yml job ids (install/lint/type-check/unit-test/build); name the skills-eval stages (detect-changes -> generate-datasets, which is creds-free -> harbor-eval); drop the tangential aiq-add-tool from Related Skills. aiq-customize-prompts-models: - The LLMProvider.configure(LLMRole.X) role binding is the deep-researcher pattern (add a field->role table: ORCHESTRATOR/ROUTER/RESEARCHER/PLANNER/ REPORT_WRITER); the clarifier passes planner_llm to its constructor instead. Unset deep-research roles fall back to orchestrator_llm (no generic `llm` field). Add source_router_llm to the example. - Adding a NEW template needs a one-line load_prompt wiring in the agent (prompts.md Step 3); soften "without changing agent code". Note prompts.md does not document every template's variables (source_router/writer/ source_registry) -- the .j2 files are authoritative. both: - Validation smoke must pass `--config_file <your config>` (a bare start_cli.sh runs the fixed default config); scope pytest to the agent's test dir. Validation: validate_skills.py (8 OK), pytest tests/test_agent_skills.py (4 passed), pre-commit (detect-secrets, validate-skills, markdown-link-check) on the changed files all pass. Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
…intainer skills DEVSKILLS-8 (under epic AIQ-3362) tracks later maintainer skills until their surfaces stabilize or become active release work. Two of those gates have now opened, so these skills move from the backlog into the set: - aiq-customize-prompts-models: prompt/model customization became active release work in 2.2 (per-agent LLM role fields orchestrator_llm/source_router_llm/ researcher_llm/planner_llm/writer_llm via NVIDIA-AI-Blueprints#267, plus the documented Jinja2 prompt templates and swapping-models guide). Routes editing src/aiq_agent/agents/*/prompts/*.j2 and assigning LLMs per role in the llms section and agent config. - aiq-maintain-ci: CI/governance became active release work (4 workflows, contributor governance setup, the skill-eval regression gate, copy-pr-bot mirroring, and an expanded pre-commit hook set). Routes changes to .github/workflows, .pre-commit-config.yaml, CODEOWNERS, .coderabbit.yaml, and the .github/skill-eval harness. Each skill is a SKILL.md plus two references and a .claude/skills compatibility symlink, following the existing maintainer-skill conventions. The other two DEVSKILLS-8 skills stay deferred: aiq-auth-data-source-integration (protected- source UX/API deferred to 2.2/2.3 per PR NVIDIA-AI-Blueprints#212) and aiq-ui-change (2.2 UI auth controls not yet settled). Doc example listings (agent-skills.md table, README) that enumerate maintainer skills are reworked in the separate PR NVIDIA-AI-Blueprints#281; kept disjoint here. Validation: scripts/validate_skills.py (8 skills OK), pytest tests/test_agent_skills.py (4 passed), and pre-commit (detect-secrets, validate-skills, markdown-link-check) on the new files all pass. Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
Address PR NVIDIA-AI-Blueprints#282 review feedback; every change verified against the repo. aiq-maintain-ci: - pytest and helm-lint are pre-commit `stages: [push]`, so `pre-commit run --all-files` does NOT run them (the prior "can be heavier than expected" note was backwards). Document `--hook-stage push` and that CI runs them as the dedicated test/helm-lint jobs; note the pre-commit job's SKIP= set. - Correct ui.yml job ids (install/lint/type-check/unit-test/build); name the skills-eval stages (detect-changes -> generate-datasets, which is creds-free -> harbor-eval); drop the tangential aiq-add-tool from Related Skills. aiq-customize-prompts-models: - The LLMProvider.configure(LLMRole.X) role binding is the deep-researcher pattern (add a field->role table: ORCHESTRATOR/ROUTER/RESEARCHER/PLANNER/ REPORT_WRITER); the clarifier passes planner_llm to its constructor instead. Unset deep-research roles fall back to orchestrator_llm (no generic `llm` field). Add source_router_llm to the example. - Adding a NEW template needs a one-line load_prompt wiring in the agent (prompts.md Step 3); soften "without changing agent code". Note prompts.md does not document every template's variables (source_router/writer/ source_registry) -- the .j2 files are authoritative. both: - Validation smoke must pass `--config_file <your config>` (a bare start_cli.sh runs the fixed default config); scope pytest to the agent's test dir. Validation: validate_skills.py (8 OK), pytest tests/test_agent_skills.py (4 passed), pre-commit (detect-secrets, validate-skills, markdown-link-check) on the changed files all pass. Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
Now that NVIDIA-AI-Blueprints#281 has merged, enumerate aiq-customize-prompts-models and aiq-maintain-ci alongside the other four maintainer skills in the .agents/skills/README.md and docs/source/integration/agent-skills.md examples tables, and add their .claude/skills symlinks to the documented symlink block. Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
cc4c1a7 to
fbc6062
Compare
|
/ok to test fbc6062 |
|
/nvskills-ci |
cdgamarose-nv
left a comment
There was a problem hiding this comment.
Minor comment, otherwise looks good!
Address review feedback on aiq-customize-prompts-models: add guidance that prompt templates must stay task-agnostic and not hard-code specific queries, domains, or source/tool names, since source/domain selection is data-driven via the data_source_registry and source_router.j2. Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.agents/skills/aiq-customize-prompts-models/references/prompt-templates.md (1)
43-54: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winClarify when a template edit is actually code-free.
This reads as if any existing
.j2edit needs no Python change, but adding/removing a Jinja variable still requires updating the caller to pass the new context orrender_prompt_template()will fail underStrictUndefined.Suggested wording
-4. Editing an existing `.j2` needs **no** code change. +4. Editing an existing `.j2` needs no code change if you only change text or reorder existing variables. + If you add or remove a template variable, update the agent's Python to pass the same context.🤖 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 @.agents/skills/aiq-customize-prompts-models/references/prompt-templates.md around lines 43 - 54, Clarify the “editing an existing .j2 needs no code change” guidance in prompt-templates.md so it only applies when the template’s variable contract stays the same. Mention that if an existing template adds, removes, or renames a Jinja variable, the corresponding Python caller must be updated to pass the new context before render_prompt_template is used, otherwise StrictUndefined will fail. Use the existing “Adding a new template” section and references to load_prompt and render_prompt_template to make the distinction explicit.
🤖 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.
Outside diff comments:
In @.agents/skills/aiq-customize-prompts-models/references/prompt-templates.md:
- Around line 43-54: Clarify the “editing an existing .j2 needs no code change”
guidance in prompt-templates.md so it only applies when the template’s variable
contract stays the same. Mention that if an existing template adds, removes, or
renames a Jinja variable, the corresponding Python caller must be updated to
pass the new context before render_prompt_template is used, otherwise
StrictUndefined will fail. Use the existing “Adding a new template” section and
references to load_prompt and render_prompt_template to make the distinction
explicit.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: fcffa599-7fb5-4571-af07-1d526e248800
📒 Files selected for processing (2)
.agents/skills/aiq-customize-prompts-models/SKILL.md.agents/skills/aiq-customize-prompts-models/references/prompt-templates.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (1)
{skills/**,.agents/skills/**,.claude/skills/**,.github/skill-eval/**}
⚙️ CodeRabbit configuration file
{skills/**,.agents/skills/**,.claude/skills/**,.github/skill-eval/**}: Review Agent Skill and skill-eval changes for valid skill metadata, deterministic eval specs, safe handling of
credentials, and clear generated-output boundaries. Do not flag SKILL.md files for missing SPDX headers when the
entrypoint intentionally starts with YAML frontmatter.
Files:
.agents/skills/aiq-customize-prompts-models/references/prompt-templates.md.agents/skills/aiq-customize-prompts-models/SKILL.md
🔇 Additional comments (1)
.agents/skills/aiq-customize-prompts-models/SKILL.md (1)
13-119: LGTM!
|
/ok to test ba03b1b |
|
/merge |
Overview
Adds two maintainer skills under
.agents/skills/, moving them out of theDEVSKILLS-8 "later skill backlog" (epic AIQ-3362) now that both surfaces are
active 2.2 release work:
aiq-customize-prompts-models— Jinja2 prompt-template editing(
src/aiq_agent/agents/*/prompts/*.j2,load_prompt/render_prompt_template)and per-agent model selection (the
llmssection + role fields likeorchestrator_llm/researcher_llm/planner_llm/writer_llm, bound viaLLMProvider/LLMRole). Prompt/model customization became release work in enhancement: make deep researcher customizable, flexible and less token expensive #267.aiq-maintain-ci— the GitHub Actions workflows, pre-commit hooks,CODEOWNERS/CodeRabbit/copy-pr-bot governance, and the
.github/skill-evalharness.Each skill is a
SKILL.md+ tworeferences/files + a.claude/skillscompatibility symlink, following the existing maintainer-skill conventions and
TEMPLATE.md. Both are now enumerated in the.agents/skills/README.mdanddocs/source/integration/agent-skills.mdskill tables (all six maintainer skills).Docs-only; no runtime code. Rebased on
developafter #281 merged.The middle commit addresses code-review feedback, each item verified against the
repo: corrected the pre-commit push-stage behavior (
pytest/helm-lintarestages: [push], sopre-commit run --all-filesskips them; CI runs them asdedicated jobs), the deep-researcher vs clarifier LLM role binding (added a
field→
LLMRoletable; the deep research agent has no genericllmfield), theui.ymljob ids, the skill-eval stages (detect-changes → generate-datasets → harbor-eval), the "adding a new template needsload_promptwiring" caveat, andstart_cli.sh --config_filein the validation smokes.Validation
validate_skills.py+tests/test_agent_skills.pycover them and pass.)git commit -s.Where should reviewers start?
.agents/skills/aiq-customize-prompts-models/SKILL.mdand.agents/skills/aiq-maintain-ci/SKILL.md, then theirreferences/. Themodel-selection field→
LLMRoletable mirrorsdeep_researcher/register.py, andthe CI reference reflects the real
.pre-commit-config.yamlstages andci.ymljobs.Related Issues
🤖 Generated with Claude Code
Summary by CodeRabbit
aiq-customize-prompts-models, including prompt template editing, model selection/config wiring, and related validation guidanceaiq-maintain-ci, covering CI/governance maintenance with workflow and evaluation-harness references