feat(skills): add aiq-configure-workflow skill for creating custom config workflows - #334
Conversation
Signed-off-by: Soumili Nandi <soumilin@nvidia.com>
WalkthroughAdds the ChangesWorkflow configuration authoring
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant ConfigAuthor
participant validate_config.py
participant YAMLParser
participant Environment
ConfigAuthor->>validate_config.py: Provide workflow YAML path
validate_config.py->>YAMLParser: Load and parse YAML
YAMLParser-->>validate_config.py: Return configuration mapping
validate_config.py->>Environment: Check referenced environment variables
Environment-->>validate_config.py: Return set or not-set status
validate_config.py-->>ConfigAuthor: Print errors and warnings with exit code
Possibly related PRs
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 1 warning)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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 @.agents/skills/aiq-configure-workflow/assets/config-scaffold.yml:
- Around line 41-52: Update the fallback scaffold’s workflow configuration to
satisfy validation: either define the required clarifier_agent function under
functions, or disable enable_clarifier when no clarifier implementation is
scaffolded. Keep the selected configuration consistent with the validator’s
requirement that enable_clarifier is true only when functions.clarifier_agent
exists.
In @.agents/skills/aiq-configure-workflow/references/env-vars.md:
- Around line 13-20: Add an `AIQ_CHECKPOINT_DB` entry to the Core runtime
environment-variable table in `env-vars.md`, documenting that it configures
`workflow.checkpoint_db` and defaults to `./checkpoints.db`, consistent with
`config-scaffold.yml` and `composing-config.md`.
In @.agents/skills/aiq-configure-workflow/scripts/validate_config.py:
- Around line 246-263: Move the REQUIRED_WORKFLOW_AGENTS validation in the
config validator outside the workflow is not None branch so it always runs
against declared_functions, including when workflow is absent. Keep the existing
workflow-specific type, clarifier, and async checks conditional on a mapping
workflow.
- Around line 259-263: Update the async deep-research warning condition in the
configuration validation flow to treat general.front_end as unset when it is
absent, null, or an empty mapping. Reuse the value returned by
_general_block(data) and check its truthiness rather than only testing key
presence, while preserving the existing warning message and workflow condition.
🪄 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: ASSERTIVE
Plan: Enterprise
Run ID: 867fe1cf-b46f-4ff2-8406-3c42bae6a813
📒 Files selected for processing (12)
.agents/skills/README.md.agents/skills/aiq-add-data-source/SKILL.md.agents/skills/aiq-add-tool/SKILL.md.agents/skills/aiq-configure-workflow/SKILL.md.agents/skills/aiq-configure-workflow/assets/config-scaffold.yml.agents/skills/aiq-configure-workflow/references/composing-config.md.agents/skills/aiq-configure-workflow/references/config-profiles.md.agents/skills/aiq-configure-workflow/references/config-schema.md.agents/skills/aiq-configure-workflow/references/env-vars.md.agents/skills/aiq-configure-workflow/scripts/validate_config.py.agents/skills/aiq-customize-prompts-models/SKILL.md.claude/skills/aiq-configure-workflow
📜 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/SKILL.md.claude/skills/aiq-configure-workflow.agents/skills/aiq-configure-workflow/references/config-profiles.md.agents/skills/aiq-add-data-source/SKILL.md.agents/skills/aiq-add-tool/SKILL.md.agents/skills/aiq-configure-workflow/SKILL.md.agents/skills/README.md.agents/skills/aiq-configure-workflow/references/config-schema.md.agents/skills/aiq-configure-workflow/assets/config-scaffold.yml.agents/skills/aiq-configure-workflow/references/env-vars.md.agents/skills/aiq-configure-workflow/references/composing-config.md.agents/skills/aiq-configure-workflow/scripts/validate_config.py
🪛 ast-grep (0.44.1)
.agents/skills/aiq-configure-workflow/scripts/validate_config.py
[warning] 268-268: XPath query is request-/variable-derived; use parameterized XPath to prevent injection.
Context: ENV_REF.findall(raw)
Note: [CWE-643] Improper Neutralization of Data within XPath Expressions ('XPath Injection').
(xpath-injection-python)
[warning] 65-65: File path is request-/variable-derived; validate and normalize to prevent path traversal.
Context: open(path, encoding="utf-8")
Note: [CWE-22] Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal').
(open-filename-from-request)
🪛 LanguageTool
.agents/skills/aiq-configure-workflow/SKILL.md
[style] ~40-~40: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ronment variables by config feature. - [references/config-schema.md](references/config-sch...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🔇 Additional comments (8)
.agents/skills/README.md (1)
27-27: LGTM!.agents/skills/aiq-add-data-source/SKILL.md (1)
92-92: LGTM!.agents/skills/aiq-add-tool/SKILL.md (1)
97-97: LGTM!.agents/skills/aiq-customize-prompts-models/SKILL.md (1)
115-115: LGTM!.claude/skills/aiq-configure-workflow (1)
1-1: LGTM!.agents/skills/aiq-configure-workflow/SKILL.md (1)
1-90: LGTM!.agents/skills/aiq-configure-workflow/references/config-profiles.md (1)
1-27: LGTM!.agents/skills/aiq-configure-workflow/references/composing-config.md (1)
21-21: 📐 Maintainability & Code Quality
aiq-deploysecrets link is correct
skills/aiq-deploy/references/env-and-secrets.mdis the right path here;aiq-deployis tracked underskills/, not.agents/skills/. Both references can stay as-is.> Likely an incorrect or invalid review comment.
Signed-off-by: Soumili Nandi <soumilin@nvidia.com>
|
/ok to test 843f947 |
|
/ok to test 843f947 |
|
/merge |
1 similar comment
|
/merge |
45a1934
into
NVIDIA-AI-Blueprints:release/2.2
#### Overview Fix the AI-Q 2.2 documentation publication contract and refresh release-facing documentation against the current `release/2.2` branch. The version selector had three independent sources of drift: - `conf.py` still rendered `version_match = 1.2.1` after the site was deployed under `2.2.0-rc1`. - `project.json` and the Sphinx release value had to be updated separately. - `../versions1.json` resolved to the publisher-managed root index on top-level pages but to the copied per-version file on nested pages. That copied file contained only one version and used the invalid `ai-blueprint` site slug. This change makes `docs/source/project.json` the single version authority, sets it to the exact `v2.2.0-rc1` artifact version, points every page at the canonical publisher-managed selector index, and removes the duplicated per-build `versions1.json`. The release-facing README, changelog, FAQ, troubleshooting, and navigation now cover Azure AI Search, You.com, Nimble, the standalone public MCP server, the workflow-configuration maintainer skill, and all eleven checked-in workflow profiles. The Nimble links use its canonical documentation, with narrowly scoped exclusions in both link checkers because Nimble's certificate chain is not accepted by Python/OpenSSL or the Node link checker. Developer impact: advancing the docs version now requires one edit to `project.json`; Sphinx and the NVIDIA Docs publisher consume the same value. #### DCO sign-off for the squash commit Signed-off-by: Ajay Thorve <AjayThorve@users.noreply.github.com> #### Validation ```text $ uv run ruff check docs/source/conf.py All checks passed! $ uv run ruff format --check docs/source/conf.py 1 file already formatted $ uv run --extra docs sphinx-build -M html docs/source docs/build -W --keep-going -n build succeeded. $ uv run --extra docs sphinx-build -M linkcheck docs/source docs/build -W --keep-going -n build succeeded. $ uv run python <metadata, config-inventory, and generated-HTML assertions> docs metadata, config inventory, and generated switcher contract: PASS $ uv run pre-commit run --files <complete PR diff> All applicable hooks passed, including Ruff, detect-secrets, and Markdown Link Check. ``` The live publisher index at `https://docs.nvidia.com/aiq-blueprint/versions1.json` currently reports `2.2.0-rc1`, `2.1.0`, `2.0.0`, and `1.2.1`. Generated top-level and nested pages both use that canonical index and match `2.2.0-rc1`. - [x] I ran the relevant local checks or explained why they are not applicable. - [x] I added or updated validation for behavior changes. - [x] I updated documentation for user-facing or contributor-facing changes. - [x] I confirmed this PR does not include secrets, credentials, or internal-only data. - [x] I certify this contribution under the Developer Certificate of Origin (DCO) and signed my commits with `git commit -s` or an equivalent sign-off. - [x] I replaced the DCO sign-off placeholder with my GitHub commit identity and kept the required angle brackets around the email address. #### Where should reviewers start? Start with `docs/source/conf.py`, `docs/source/project.json`, and the removal of `docs/source/versions1.json`; together they define the publication and selector invariant. Then review the config inventory in `README.md` and `docs/source/customization/configuration-reference.md`, followed by `docs/source/customization/you-com.md` and the Nimble link-check handling. #### Related Issues - Relates to #261, #308, #316, #319, and #334. ## Summary by CodeRabbit * **New Features** * Added documentation for You.com tools, configurable Nimble web search modes, Azure AI Search knowledge retrieval (API key and managed identity), and standalone MCP server setup. * Updated setup guidance with new Nimble/You.com data-source options. * **Documentation** * Expanded sources/integrations, authentication, and workflow configuration details. * Improved docs release metadata and versioning/switcher behavior; added additional configuration profiles and references. * Refreshed troubleshooting and FAQ entries for You.com and Azure AI Search. * **Chores** * Refreshed the secrets baseline metadata. * Improved markdown link-check ignore rules for specific Nimble URLs. Authors: - Ajay Thorve (https://github.com/AjayThorve) Approvers: - Eddy (https://github.com/eddy-nassif) - Kyle Zheng (https://github.com/KyleZheng1284) URL: #345
Overview
Adds a new maintainer skill,
aiq-configure-workflow, for composing and validating AI-Qconfigs/config_*.ymlworkflow files.The skill helps developers choose an existing config profile, combine tools/data sources/agents/workflow settings, configure telemetry and
aiq_api, and run a lightweight static validator before deployment.It also adds a
.claude/skillssymlink so Claude can discover the same skill, and links the new skill from related maintainer skills.Validation
aiq-add-data-sourceinstead of inventing a YAML-only toolExample Claude or other agents prompts reviewers can try:
Expected behavior for the last prompt: the skill should not invent a YAML-only tool. It should explain that a new data source requires a registered NAT function and route to
aiq-add-data-source.git commit -sor an equivalent sign-off.Where should reviewers start?
Start with
.agents/skills/aiq-configure-workflow/SKILL.mdand related reference files.Then review the validator
.agents/skills/aiq-configure-workflow/scripts/validate_config.pyRelated Issues
Summary by CodeRabbit
New Features
validate_configCLI to pre-flight-check workflow YAML, reporting errors/warnings and verifying referenced environment variables.Documentation