Skip to content

feat: add Dataflow Gen2 data visuals skill for Claude and ChatGPT - #117

Open
Miguel Escobar (ptyx507x) wants to merge 2 commits into
microsoft:mainfrom
ptyx507x:dataflow-gen2-data-visuals-skill
Open

feat: add Dataflow Gen2 data visuals skill for Claude and ChatGPT#117
Miguel Escobar (ptyx507x) wants to merge 2 commits into
microsoft:mainfrom
ptyx507x:dataflow-gen2-data-visuals-skill

Conversation

@ptyx507x

@ptyx507x Miguel Escobar (ptyx507x) commented Sep 8, 2026

Copy link
Copy Markdown

Adds client-side knowledge for generating Dataflow Gen2 visualization documents in Power Query M. Visual is the canonical artifact name; dashboard, report, and chart are discovery synonyms.

Skills

  • claude-skills/datafactory-data-visuals.md (Claude)
  • chatgpt-skills/knowledge-data-visuals.md (ChatGPT)
  • docs/datafactory/data-visuals.md (in-repo agents, wired into the copilot-instructions.md routing table)

Both client indexes route visual/dashboard/report/chart/KPI requests, and claude-skills/SKILL.md gains four visual symptom-triage rows.

Content follows the published contract: flat five-column table (Name, Parent, PartType, Properties, Data), the closed 11-value PartType set, one-root/parent/cardinality rules, and Preview limitations. Safety guidance covers metadata-only discovery, no dynamic sibling evaluation, execute_query for non-persistent testing, and validateOnly plus connection rebinding around save_dataflow_definition.

Evals

  • EVAL-INT-M-021..023: five-column contract, chart-in-card column mappings, unsupported PartTypes
  • evals/dataflow-visuals-parity.md: provider-neutral checklist for comparing Claude and ChatGPT output

Eval runner fixes

These are pre-existing bugs found while wiring up the new evals:

  1. SKILLS_DIR pointed at a nonexistent path. Path(__file__).parent.parent resolved to evals/claude-skills, so the with-skills arm never loaded any skill and every integration eval compared baseline against baseline.
  2. Encoding. read_text() used the OS locale, so on Windows the arrow separator mangled and skill names failed to parse. Now UTF-8, with UTF-8 stdout to avoid UnicodeEncodeError on legacy consoles.
  3. datafactory-destinations mapped to a file that does not exist; that content lives in destinations/ subfiles. SKILL_FILES values are lists now.

Also corrected count drift in evals/README.md (pipelines 15 to 18; totals 97 + 23 = 120).

Verification

python evals/run_evals.py --dry-run
Dry run complete. 97 scenarios parsed.

python evals/integration/run_integration_evals.py --dry-run
Dry run complete. 23 scenarios, 99 total rules.

All six skills confirmed loading real content (core 3053, destinations 10407, performance 2533, advanced 4280, pipelines 6576, data-visuals 3096 chars).

Notes

No .csproj or NuGet packaging changes. These are client-side companion files; installing the MCP NuGet package does not register skills with Claude or ChatGPT.

Reviewers may prefer the three eval-runner fixes split into a separate PR, since they touch shared infrastructure affecting all skills rather than visuals alone. Happy to split if preferred.

Adds knowledge for generating Dataflow Gen2 visualization documents in Power Query M. Visual is the canonical artifact name; dashboard, report, and chart are discovery synonyms.

Skills: add datafactory-data-visuals.md (Claude), knowledge-data-visuals.md (ChatGPT), and docs/datafactory/data-visuals.md (repo agents); route visual requests from both client indexes; add visual symptom triage.

Evals: add EVAL-INT-M-021..023 covering the five-column contract, chart-in-card column mappings, and unsupported PartTypes; add a provider-neutral parity checklist.

Eval runner fixes: read files as UTF-8 so the skills arrow separator parses on Windows; correct SKILLS_DIR, which pointed at evals/claude-skills and meant no skill was ever loaded; map datafactory-destinations to the destinations/ subfiles that actually exist.
@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 21.88%. Comparing base (5cefbdc) to head (e626a4f).
⚠️ Report is 48 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #117      +/-   ##
==========================================
+ Coverage   14.85%   21.88%   +7.02%     
==========================================
  Files         129      160      +31     
  Lines        3884     4908    +1024     
  Branches      398      461      +63     
==========================================
+ Hits          577     1074     +497     
- Misses       3295     3812     +517     
- Partials       12       22      +10     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mavaali

Copy link
Copy Markdown

I traced the validation failure to the workflow’s PR-results comment step, not the tests. All restores, builds, integration tests, test reporting, and coverage passed. Because this PR comes from a fork, GitHub downgrades GITHUB_TOKEN write permissions for the pull_request workflow, so actions/github-script fails with Resource not accessible by integration.

The validated fix is to remove the unsupported include-prerelease input, always publish body through core.summary, and skip the PR-comment API call when the PR head repository differs from the base repository. I couldn’t push the patch directly because the authenticated mavaali account has read-only access to both the base repository and this fork branch.

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