Uips config tree
Skill cprima-agents/cpm-agent-skills/skills/uips-config-tree
npx -y skills add cprima-agents/cpm-agent-skills --skill uips-config-treeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate a typed C# CodedConfig class and a UiPath clipboard snippet from a REFramework Config.xlsx. Use when a developer wants to replace dictionary-based settings lookups with strongly-typed C# properties in a UiPath REFramework project. Triggers on: typed config, CodedConfig, ConFormMold, Config.xlsx to class, typed settings, REFramework config, InitAllSettings typed, strongly-typed config.
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.5 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
UiPath REFramework — Typed Config Class Generator
Four phases: Initialize (guard + detect), Generate (agent runs all file changes), Implement (user reloads Studio), Finalize (TestCase patched automatically).
Initialize
Verify the working directory is a REFramework project, then resolve build variables. Abort if either file check fails.
# Both must be present — abort if either is missing
test -f Framework/InitAllSettings.xaml
ls Data/Config*.xlsx
| Check | Path | Absence means |
|---|---|---|
| REFramework indicator | Framework/InitAllSettings.xaml | Not a REFramework project — skill does not apply |
| Config input | Data/Config*.xlsx | Nothing to generate from — ask user for the file location |
Resolve DOTNET, ASSEMBLY, and CONFIG from project.json:
eval $(uv run config-tree detect)
echo "DOTNET=$DOTNET ASSEMBLY=$ASSEMBLY CONFIG=$CONFIG"
UiPath.System.Activities | DOTNET |
|---|---|
[25.*] | net8 |
[22.*] / [23.*] / [24.*] | net6 |
[21.*] and below | not supported — aborts |
Generate
Run all of the following in order. Each step is idempotent.
# Generate Lib/Config.cs
uv run config-tree generate "$CONFIG" --generate-tostring --dotnet-version "$DOTNET" > Lib/Config.cs
# Add UiPath.CodedWorkflows to project.json if absent
uv run config-tree patch-project
# Generate LoadTypedConfig.xaml clipboard snippet
uv run config-tree generate "$CONFIG" --generate-tostring --dotnet-version "$DOTNET" --output-xaml LoadTypedConfig.xaml
# Patch Framework/InitAllSettings.xaml
uv run config-tree patch-init-settings --assembly "$ASSEMBLY" --xaml LoadTypedConfig.xaml
# Patch Tests/TestCase_InitAllSettings.xaml
uv run config-tree patch-testcase --assembly "$ASSEMBLY"
Implement
Tell the user:
Generate is complete. Close the project and re-open it in Studio so Studio restores the new
UiPath.CodedWorkflowsdependency. The workflow will compile and run once the package restore finishes.After re-opening, Studio will show an "Import Arguments" prompt on the
InvokeWorkflowFileinTestCase_InitAllSettings.xaml— this is expected. The patcher has already set theout_ConFigTreebinding to[ConFigTree]; clicking Import Arguments simply confirms it.
Finalize
patch-testcase adds to Tests/TestCase_InitAllSettings.xaml:
xmlns:ccandCpmf.Confignamespace/assembly importsConFigTreetyped variable on the root sequenceout_ConFigTreeOutArgument binding onInvokeWorkflowFile- Two identity assertions (
IsNot Nothing,GetType().Name = "CodedConfig")
Property-value assertions (ConFigTree.Settings.X = expected) depend on the
project's test fixture data and must be added manually after verifying the
generated typed class against Data/Config_Test.xlsx.
patch-testcase is idempotent — re-running it on an already-patched file
preserves manually-added assertions. If the project files are reset from the
template, all manual additions are lost (the template does not include them).
Key CLI flags
| Flag | Default | Purpose |
|---|---|---|
--output-xaml PATH | — | Write ClipboardData XAML snippet to file |
--generate-tostring | off | Add ToString() override to each class |
--generate-tojson | off | Add ToJson() / FromJson() helpers |
--readonly | off | Use { get; init; } instead of { get; set; } |
--uipath-var NAME | out_ConFigTree | Variable name used in the XAML snippet |
Gotchas
- If Studio shows "Please import the UiPath.CodedWorkflows package", re-run the Generate phase — the dependency is missing from
project.json. - The project must be reloaded in Studio after Generate completes —
UiPath.CodedWorkflowsis a new dependency and Studio must restore it before it can compile. [WARN]on stderr means a sheet had an unrecognised header row; output is still generated best-effort.
What ships with it: 17 files
62.4 KB alongside SKILL.md, 11 of them executable
src/
- config_tree/cli.pyruns5.2 KB
- config_tree/detect.pyruns1.5 KB
- config_tree/generate.pyruns19.8 KB
- config_tree/__init__.pyruns102 B
- config_tree/__main__.pyruns41 B
- config_tree/patch_init_settings.pyruns5.2 KB
- config_tree/patch_project.pyruns759 B
- config_tree/patch_testcase.pyruns4.6 KB
- config_tree/resources/CodedConfig.cs.template43 B
- config_tree/resources/__init__.pyruns0 B
- config_tree/resources/LoadTypedConfig.xaml.template2.8 KB
tests/
- pyproject.toml434 B