Skip to content

feat(skills): add aiq-configure-workflow skill for creating custom config workflows - #334

Merged
rapids-bot[bot] merged 3 commits into
NVIDIA-AI-Blueprints:release/2.2from
soumilinandi:feat/aiq-configure-workflow
Jul 15, 2026
Merged

feat(skills): add aiq-configure-workflow skill for creating custom config workflows #334
rapids-bot[bot] merged 3 commits into
NVIDIA-AI-Blueprints:release/2.2from
soumilinandi:feat/aiq-configure-workflow

Conversation

@soumilinandi

@soumilinandi soumilinandi commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Overview

Adds a new maintainer skill, aiq-configure-workflow, for composing and validating AI-Q configs/config_*.yml workflow 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/skills symlink so Claude can discover the same skill, and links the new skill from related maintainer skills.

Validation

  • Ran the static config validator against shipped configs
  • Ran lint on the validator
  • Verified pre-commit during signed commit:
  • Manually tested skill behavior in Claude(GPT 5.5) with realistic config-authoring prompts:
    • Tavily + OpenSearch + OpenShell + MinIO + async web API config
    • Tavily + LlamaIndex + Phoenix + async web API config
    • Unknown data-source request, where the skill correctly routed to aiq-add-data-source instead of inventing a YAML-only tool

Example Claude or other agents prompts reviewers can try:

Create an AI-Q web config that uses Tavily, LlamaIndex knowledge retrieval, Phoenix tracing, async jobs, and Nemotron models. Validate it and tell me what env vars I need.
Create an AI-Q web config for a deployment that uses Tavily, OpenSearch knowledge retrieval, OpenShell sandbox execution, and S3-compatible artifact storage with MinIO. Use Nemotron models. Enable async deep research through the web API. Validate the config and tell me what env vars I need.
Create a config where intent classification uses a fast Nemotron model, but planner, researcher, and writer use the strongest Nemotron model. Enable Tavily and paper search. Make it work with the web UI and validate it.
Create a config that uses a new data source called my_internal_search. Just add it to YAML.

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.

  • I ran the relevant local checks or explained why they are not applicable.
  • I added or updated tests for behavior changes.
  • I updated documentation for user-facing or contributor-facing changes.
  • I confirmed this PR does not include secrets, credentials, or internal-only data.
  • I certify this contribution under the Developer Certificate of Origin (DCO) and signed my commits with git commit -s or an equivalent sign-off.

Where should reviewers start?

Start with .agents/skills/aiq-configure-workflow/SKILL.md and related reference files.

Then review the validator .agents/skills/aiq-configure-workflow/scripts/validate_config.py

Related Issues

Summary by CodeRabbit

  • New Features

    • Added a new AI-Q workflow “configure” skill with a default scaffold for workflow, model, telemetry, checkpoints, and data source setup.
    • Introduced a validate_config CLI to pre-flight-check workflow YAML, reporting errors/warnings and verifying referenced environment variables.
  • Documentation

    • Added detailed guides for composing workflow configs, choosing config profiles, understanding schema rules, and using environment-variable references.
    • Updated “Related Skills” listings to link workflow configuration from adjacent skill docs.
    • Synced the supported assistant skill entry to point to the new workflow skill documentation.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds the aiq-configure-workflow skill with configuration guidance, a fallback scaffold, reference documentation, and a validation CLI. Related maintainer skills now cross-link to it, and the Claude skill path points to the shared implementation.

Changes

Workflow configuration authoring

Layer / File(s) Summary
Skill contract and configuration scaffold
.agents/skills/aiq-configure-workflow/SKILL.md, .agents/skills/aiq-configure-workflow/assets/config-scaffold.yml, .agents/skills/aiq-configure-workflow/references/config-profiles.md
Defines workflow configuration composition steps, profile selection, validation commands, handoffs, and a fallback YAML scaffold.
Configuration composition references
.agents/skills/aiq-configure-workflow/references/composing-config.md, .agents/skills/aiq-configure-workflow/references/config-schema.md, .agents/skills/aiq-configure-workflow/references/env-vars.md
Documents configuration structure, telemetry, front-end settings, LLM and agent wiring, workflow options, schema checks, and environment variables.
Configuration validation CLI
.agents/skills/aiq-configure-workflow/scripts/validate_config.py
Parses workflow YAML, validates aliases and configuration blocks, reports environment-variable status, and returns validation-specific exit codes.
Skill discoverability and shared path wiring
.agents/skills/README.md, .agents/skills/aiq-add-data-source/SKILL.md, .agents/skills/aiq-add-tool/SKILL.md, .agents/skills/aiq-customize-prompts-models/SKILL.md, .claude/skills/aiq-configure-workflow
Adds cross-references to the new skill and points the Claude skill path to the shared agent skill.

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
Loading

Possibly related PRs


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
Title check ❌ Error The title uses Conventional Commits but exceeds the 72-character limit required by the repo. Shorten the title to under 72 characters while keeping the feat(scope): summary format.
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The description includes all required sections and the validation checklist, with only minor detail gaps.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between e7abd3d and ee069d9.

📒 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-deploy secrets link is correct

skills/aiq-deploy/references/env-and-secrets.md is the right path here; aiq-deploy is tracked under skills/, not .agents/skills/. Both references can stay as-is.

			> Likely an incorrect or invalid review comment.

Comment thread .agents/skills/aiq-configure-workflow/assets/config-scaffold.yml
Comment thread .agents/skills/aiq-configure-workflow/references/env-vars.md
Comment thread .agents/skills/aiq-configure-workflow/scripts/validate_config.py Outdated
Comment thread .agents/skills/aiq-configure-workflow/scripts/validate_config.py Outdated
Signed-off-by: Soumili Nandi <soumilin@nvidia.com>
@soumilinandi soumilinandi changed the title Add AI-Q workflow configuration skill feat(aiq-configure-workflow): add workflow configuration skill Jul 14, 2026
@soumilinandi soumilinandi changed the title feat(aiq-configure-workflow): add workflow configuration skill feat(skills): add aiq-configure-workflow skill for creating custom config workflows Jul 14, 2026
@AjayThorve AjayThorve added this to the v2.2 milestone Jul 14, 2026
@AjayThorve
AjayThorve changed the base branch from develop to release/2.2 July 14, 2026 19:36
@AjayThorve

Copy link
Copy Markdown
Member

/ok to test 843f947

@AjayThorve AjayThorve left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is fantastic!

@AjayThorve

Copy link
Copy Markdown
Member

/ok to test 843f947

2 similar comments
@AjayThorve

Copy link
Copy Markdown
Member

/ok to test 843f947

@AjayThorve

Copy link
Copy Markdown
Member

/ok to test 843f947

@dagardner-nv

Copy link
Copy Markdown
Collaborator

/merge

1 similar comment
@AjayThorve

Copy link
Copy Markdown
Member

/merge

@rapids-bot
rapids-bot Bot merged commit 45a1934 into NVIDIA-AI-Blueprints:release/2.2 Jul 15, 2026
11 checks passed
rapids-bot Bot pushed a commit that referenced this pull request Jul 15, 2026
#### 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants