mcpField
S
skill-test

skill-test

github.com/databricks-solutionsTesting & quality2.0k71 installsUpdated 1d ago
Repository

About skill-test

skill-test is an offline, YAML-first evaluation framework for Databricks skills, with an interactive CLI for running tests and improving skill test cases. It supports regression comparisons, trace evaluation, and optional MLflow evaluation with LLM judges.

Key features

  1. 01YAML-based evaluation and ground truth
  2. 02Interactive test-case creation and review
  3. 03Regression checks against saved baselines
  4. 04Trace evaluation
  5. 05MLflow evaluation with LLM judges
  6. 06Configurable scorers and quality gates

Use cases

  1. 01Evaluate a Databricks skill against ground truth
  2. 02Compare results with a saved baseline
  3. 03Create and review skill test cases
  4. 04Assess execution traces against expectations

MCP support

The instructions say to create a CLIContext with MCP tools before running commands. The project does not describe MCP server capabilities it exposes.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/databricks-solutions/ai-dev-kit --skill skill-test

After installing, type/skill-testin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

CUSTOMIZATION_GUIDE.md
install_skill_test.sh
pyproject.toml
README.md
baselines/databricks-agent-bricks/
baseline.yaml
baselines/databricks-aibi-dashboards/
baseline.yaml
baselines/databricks-apps-python/
baseline.yaml
baselines/databricks-bundles/
baseline.yaml
baselines/databricks-genie/
baseline.yaml
baselines/databricks-model-serving/
baseline.yaml
baselines/databricks-python-sdk/
baseline.yaml
baselines/databricks-spark-declarative-pipelines/
baseline.yaml
baselines/databricks-synthetic-data-gen/
baseline.yaml
baselines/databricks-zerobus-ingest/
baseline.yaml
eval-criteria/sql-correctness/references/
DATABRICKS_SQL_PATTERNS.md
eval-criteria/tool-selection/references/
MCP_TOOL_GUIDE.md
notebooks/
gepa_skill_optimization_demo.ipynb
references/
python-api.md
scorers.md
trace-eval.md
workflows.md
yaml-schemas.md
scripts/
_common.py
add_example.py
add.py
baseline.py
generate_examples.py
generate_ground_truth.py
init_skill.py
list_traces.py

Details

From the project README

Databricks Skills Testing Framework

Offline YAML-first evaluation with human-in-the-loop review and interactive skill improvement.

Quick References

/skill-test Command

The /skill-test command provides an interactive CLI for testing Databricks skills with real execution on Databricks.

Basic Usage
/skill-test <skill-name> [subcommand]
Subcommands
SubcommandDescription
runRun evaluation against ground truth (default)
regressionCompare current results against baseline
initInitialize test scaffolding for a new skill
addInteractive: prompt -> invoke skill -> test -> save
add --traceAdd test case with trace evaluation
reviewReview pending candidates interactively
review --batchBatch approve all pending candidates
baselineSave current results as regression baseline
mlflowRun full MLflow evaluation with LLM judges
trace-evalEvaluate traces against skill expectations
list-tracesList available traces (MLflow or local)
scorersList configured scorers for a skill
scorers updateAdd/remove scorers or update default guidelines
syncSync YAML to Unity Catalog (Phase 2)
Quick Examples
/skill-test databricks-spark-declarative-pipelines run
/skill-test databricks-spark-declarative-pipelines add --trace
/skill-test databricks-spark-declarative-pipelines review --batch --filter-success
/skill-test my-new-skill init

See Workflows for detailed examples of each subcommand.

Execution Instructions

Environment Setup
uv pip install -e .test/

Environment variables for Databricks MLflow:

  • DATABRICKS_CONFIG_PROFILE - Databricks CLI profile (default: "DEFAULT")
  • MLFLOW_TRACKING_URI - Set to "databricks" for Databricks MLflow
  • MLFLOW_EXPERIMENT_NAME - Experiment path (e.g., "/Users/{user}/skill-test")
Running Scripts

All subcommands have corresponding scripts in .test/scripts/:

uv run python .test/scripts/{subcommand}.py {skill_name} [options]
SubcommandScript
runrun_eval.py
regressionregression.py
initinit_skill.py
addadd.py
reviewreview.py
baselinebaseline.py
mlflowmlflow_eval.py
scorersscorers.py
scorers updatescorers_update.py
syncsync.py
trace-evaltrace_eval.py
list-traceslist_traces.py
_routing mlflowrouting_eval.py

Use --help on any script for available options.

Command Handler

When /skill-test is invoked, parse arguments and execute the appropriate command.

Argument Parsing
  • args[0] = skill_name (required)
  • args[1] = subcommand (optional, default: "run")
Subcommand Routing
SubcommandAction
runExecute run(skill_name, ctx) and display results
regressionExecute regression(skill_name, ctx) and display comparison
initExecute init(skill_name, ctx) to create scaffolding
addPrompt for test input, invoke skill, run interactive()
reviewExecute review(skill_name, ctx) to review pending candidates
baselineExecute baseline(skill_name, ctx) to save as regression baseline
mlflowExecute mlflow_eval(skill_name, ctx) with MLflow logging
scorersExecute scorers(skill_name, ctx) to list configured scorers
scorers updateExecute scorers_update(skill_name, ctx, ...) to modify scorers
init Behavior

When running /skill-test <skill-name> init:

  1. Read the skill's SKILL.md to understand its purpose
  2. Create manifest.yaml with appropriate scorers and trace_expectations
  3. Create empty ground_truth.yaml and candidates.yaml templates
  4. Recommend test prompts based on documentation examples

Follow with /skill-test <skill-name> add using recommended prompts.

Context Setup

Create CLIContext with MCP tools before calling any command. See Python API for details.

File Locations

Important: All test files are stored at the repository root level, not relative to this skill's directory.

File TypePath
Ground truth{repo_root}/.test/skills/{skill-name}/ground_truth.yaml
Candidates{repo_root}/.test/skills/{skill-name}/candidates.yaml
Manifest{repo_root}/.test/skills/{skill-name}/manifest.yaml
Routing tests{repo_root}/.test/skills/_routing/ground_truth.yaml
Baselines{repo_root}/.test/baselines/{skill-name}/baseline.yaml

For example, to test databricks-spark-declarative-pipelines in this repository:

/Users/.../ai-dev-kit/.test/skills/databricks-spark-declarative-pipelines/ground_truth.yaml

Not relative to the skill definition:

/Users/.../ai-dev-kit/.claude/skills/skill-test/skills/...  # WRONG

Directory Structure

.test/                          # At REPOSITORY ROOT (not skill directory)
├── pyproject.toml              # Package config (pip install -e ".test/")
├── README.md                   # Contributor documentation
├── SKILL.md                    # Source of truth (synced to .claude/skills/)
├── install_skill_test.sh       # Sync script
├── scripts/                    # Wrapper scripts
│   ├── _common.py              # Shared utilities
│   ├── run_eval.py
│   ├── regression.py
│   ├── init_skill.py
│   ├── add.py
│   ├── baseline.py
│   ├── mlflow_eval.py
│   ├── routing_eval.py
│   ├── trace_eval.py           # Trace evaluation
│   ├── list_traces.py          # List available traces
│   ├── scorers.py
│   ├── scorers_update.py
│   └── sync.py
├── src/
│   └── skill_test/             # Python package
│       ├── cli/                # CLI commands module
│       ├── fixtures/           # Test fixture setup
│       ├── scorers/            # Evaluation scorers
│       ├── grp/                # Generate-Review-Promote pipeline
│       └── runners/            # Evaluation runners
├── skills/                     # Per-skill test definitions
│   ├── _routing/               # Routing test cases
│   └── {skill-name}/           # Skill-specific tests
│       ├── ground_truth.yaml
│       ├── candidates.yaml
│       └── manifest.yaml
├── tests/                      # Unit tests
├── references/                 # Documentation references
└── baselines/                  # Regression baselines

References

Comments

Markdown supported