MCP Server Workflows
SAP-samples/hana-developer-cli-tool-example
Create or update MCP server tools, JSON-RPC handlers, and registrations.
Add visual filters (chart-based) to SAP Fiori Elements filter bar or value help using CAP or ABAP RAP.
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filter --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .claude/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .claude/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filterType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filter --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .agents/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .agents/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filter --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .cursor/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .cursor/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SAP/open-ux-tools.git --path plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filter --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .gemini/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .gemini/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filterInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .github/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .github/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SAP/open-ux-tools sap-fiori-add-visual-filter --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SAP/open-ux-tools.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter .opencode/skills/sap-fiori-add-visual-filter && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sap-fiori-add-visual-filter" agent skill from https://github.com/SAP/open-ux-tools/tree/main/plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter into .opencode/skills/sap-fiori-add-visual-filter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-fiori-add-visual-filter", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sap-fiori-add-visual-filterAdd visual filters (chart-based) to SAP Fiori Elements filter bar or value help using CAP or ABAP RAP.
Sap Fiori Add Visual Filter is an agent skill from SAP/open-ux-tools, published by the product's own GitHub organization. Add visual filters (chart-based) to SAP Fiori Elements filter bar or value help using CAP or ABAP RAP. Use when asked to add chart filters, bar chart selectors, or visual filter bars to a Fiori Elements application.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with SAP, Visual Studio Code and Model Context Protocol. The repository describes itself as: Enable community collaboration to jointly promote and facilitate best in class tooling capabilities. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ddeddbe. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are cds, abap, xml and json).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
help.sap.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sap Fiori Add Visual Filter loads about 3k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 947 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SAP/open-ux-tools at commit ddeddbe, republished under its Apache-2.0 licence (© SAP). 947 words, ~3,009 tokens.
.claude/skills/sap-fiori-add-visual-filter/SKILL.md (or your agent's skills folder).Add chart-based filters (Bar/Line) to filter bar or value help dialog (OData V4).
CAP Projects:
ABAP RAP Projects:
STOP and ASK the user for ALL of these inputs if ANY are missing from the prompt:
DO NOT proceed with implementation until all inputs are confirmed.
@Aggregation.ApplySupported: {
Transformations: ['aggregate','groupby'],
AggregatableProperties: [{ Property: Amount }],
GroupableProperties: [Category]
}Analytics.AggregatedProperty #Amount_sum : {
$Type: 'Analytics.AggregatedPropertyType',
Name: 'Amount_sum',
AggregatableProperty: Amount,
AggregationMethod: 'sum',
![@Common.Label]: 'Total Amount'
}Valid AggregationMethod values (lowercase string):
sum - Sum of the non-null valuesmin - Smallest of the non-null valuesmax - Largest of the non-null valuesaverage - Sum of non-null values divided by count of non-null valuescountdistinct - Count of distinct values, omitting null values⚠️ CRITICAL: Must be a lowercase string (e.g., 'sum'), NOT an enum (e.g., #SUM). Using an enum will cause SQL generation errors.
UI.Chart #visualFilter : {
ChartType: #Bar,
Dimensions: [Category],
DynamicMeasures: ['@Analytics.AggregatedProperty#Amount_sum']
}✅ Uses DynamicMeasures
UI.PresentationVariant #visualFilter: {
Visualizations: ['@UI.Chart#visualFilter']
}Category @Common.ValueList #visualFilter: {
$Type: 'Common.ValueListType',
CollectionPath: 'EntityName',
Parameters: [
{ $Type: 'Common.ValueListParameterInOut', LocalDataProperty: Category, ValueListProperty: 'Category' }
],
PresentationVariantQualifier: 'visualFilter'
}UI.SelectionFields: [Category]refer to the "Manifest Configuration" section below.
Missing ANY of these will cause the visual filter to fail:
@OData.applySupportedForAggregation: #FULL on projection view (ZC_*)@Aggregation.default: #SUM (or #AVG, #MIN, #MAX) on measure field@UI.chart annotation with correct qualifier in metadata extension@UI.selectionField on dimension fieldCommon.ValueList annotation in annotation.xmlcontrolConfiguration with visual filter settings⚠️ CRITICAL: @OData.applySupportedForAggregation annotation is MANDATORY
WITHOUT this annotation:
Placement:
TRANSACTIONAL_QUERY contractCORRECT Example:
// MANDATORY! Must be present!
@OData.applySupportedForAggregation: #FULL
define root view entity ZC_ENTITY
provider contract TRANSACTIONAL_QUERY
as projection on ZR_ENTITY
{
@Aggregation.default: #SUM // Specify aggregation method for measure
Amount;
Category; // Dimension field (no aggregation annotation needed)
}WRONG Example:
// ❌ WRONG - Don't put on interface view
// WRONG PLACE!
@OData.applySupportedForAggregation: #FULL
define root view entity ZR_ENTITY
as select from TABLE⚠️ CRITICAL: @UI.chart and @UI.presentationVariant are ENTITY-LEVEL (header) annotations.
Place them in the header block — BEFORE annotate view ZC_ENTITY with (alongside @UI.headerInfo.*), NOT inside the { ... } field block and NOT on a field (e.g. the dimension field).
Attaching @UI.chart to a field fails activation with: Annotation 'UI.chart.qualifier' used at wrong position (wrong scope).
// ↓↓↓ HEADER SCOPE: these go BEFORE `annotate view`, never on a field ↓↓↓
@UI.chart: [{
qualifier: 'visualFilter',
chartType: #BAR,
dimensions: ['Category'],
measures: ['Amount']
}]
@UI.presentationVariant: [{
qualifier: 'visualFilter',
visualizations: [{
type: #AS_CHART,
qualifier: 'visualFilter'
}]
}]
annotate view ZC_ENTITY with
{
@UI.selectionField: [{ position: 10 }]
Category;
@EndUserText.label: 'Amount'
Amount;
}ValueList Annotation on Dimension Field:
<Annotations Target="<YourServiceNamespace>.<YourEntityType>/Category">
<Annotation Term="Common.ValueList" Qualifier="visualFilter">
<Record Type="Common.ValueListType">
<PropertyValue Property="CollectionPath" String="<YourEntitySet>"/>
<PropertyValue Property="PresentationVariantQualifier" String="visualFilter"/>
<PropertyValue Property="Parameters">
<Collection>
<Record Type="Common.ValueListParameterInOut">
<PropertyValue Property="LocalDataProperty" PropertyPath="Category"/>
<PropertyValue Property="ValueListProperty" String="Category"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
</Annotations>Important: Replace placeholders:
<YourServiceNamespace> - e.g., com.sap.gateway.srvd.ztravel.v0001<YourEntityType> - e.g., TravelType<YourEntitySet> - e.g., TravelAfter activating both DDLS and DDLX, verify the changes are live:
⚠️ IMPORTANT: DDLS and DDLX are Separate Objects
The projection view (DDLS file) and metadata extension (DDLX file) are separate ABAP development objects that happen to share the same entity name.
Key points:
Activation:
Verification Steps:
Verify Activation Status:
Check OData $metadata:
<service-url>/$metadata<Annotation Term="UI.Chart" Qualifier="visualFilter"><Annotation Term="UI.PresentationVariant" Qualifier="visualFilter">refer to the "Manifest Configuration" section below.
Complete manifest.json structure:
"sap.ui5": {
"routing": {
"targets": {
"<YourListReport>": { // Replace with your actual List Report target name
"type": "Component",
"name": "sap.fe.templates.ListReport",
"options": {
"settings": {
"contextPath": "/<YourEntitySet>", // Replace with your entity set path
"controlConfiguration": {
"@com.sap.vocabularies.UI.v1.SelectionFields": {
"layout": "CompactVisual",
"initialLayout": "Visual",
"filterFields": {
"Category": {
"visualFilter": {
"valueList": "com.sap.vocabularies.Common.v1.ValueList#visualFilter"
}
}
}
}
}
}
}
}
}
}
}Path: sap.ui5.routing.targets.<ListReport>.options.settings.controlConfiguration
Important placeholders:
<YourListReport> - Your List Report target name (e.g., TravelList)<YourEntitySet> - Your entity set path (e.g., /Travel)Category - Your dimension field namevisualFilter - Must match the qualifier in your annotationsVisual filter settings go under controlConfiguration, NOT directly under settings!
Refer to the Application Preview Guidelines section in the sap-fiori-app-development skill for detailed testing instructions, including:
CAP:
RAP:
RAP:
RAP Specific:
© SAP, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter of SAP/open-ux-tools.
Open the folder on GitHubat commit ddeddbe
Sap Fiori Add Visual Filter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sap Fiori Add Visual Filter this skillSAP/open-ux-tools | 158 | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server WorkflowsSAP-samples/hana-developer-cli-tool-example | 112 | — | ~310 | Automated safety check: Pass | Apache-2.0 | |
| Sap Fiori Toolssecondsky/sap-skills | 462 | — | ~4.1k | Automated safety check: Pass | GPL-3.0 | |
| Ketch1broseidon/ketch | 702 | 1 repos | ~3.9k | Automated safety check: Pass | MIT | |
| CC Workflow Studio AI Editorbreaking-brake/cc-wf-studio | 5.4k | — | ~561 | Automated safety check: Pass | Custom licence | |
| Cao MCP Appsawslabs/cli-agent-orchestrator | 1.4k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 |
SAP-samples/hana-developer-cli-tool-example
Create or update MCP server tools, JSON-RPC handlers, and registrations.
secondsky/sap-skills
Develops SAP Fiori applications using SAP Fiori tools extensions for VS Code and SAP Business Application Studio.
1broseidon/ketch
Research skill for ketch — a fast stateless CLI for web search, OSS code search, curated library docs, page scraping, and site crawling; an optional MCP server exists for operators who want it, but…
breaking-brake/cc-wf-studio
Creates and edits visual agent workflows in CC Workflow Studio through conversation, with the agent reading and writing the canvas over MCP.
awslabs/cli-agent-orchestrator
Enable, operate, and extend CAO's MCP Apps surface — the host-rendered fleet dashboard visible inside MCP App hosts (Claude Desktop, ChatGPT, VS Code Copilot, Goose, Postman).
Azure/azure-functions-templates
Add a new Azure Functions sample/quickstart to the Template Manifest.
SAP/open-ux-tools
Develop a new ESLint rule for @sap-ux/eslint-plugin-fiori-tools.
SAP/open-ux-tools
A skill your agent uses when writing, fixing, extending, or reviewing OPA5 integration tests for SAP Fiori Elements applications - whether the app uses OData V4 (sap.fe.test library) or OData V2…
SAP/open-ux-tools
Sync odata-vocabularies package — update all vocabulary resource files to their latest published versions, and optionally add a new vocabulary given its JSON URL.
SAP/open-ux-tools
Add analytical chart (chart + table hybrid) to SAP Fiori Elements List Report using aggregated data.
SAP/open-ux-tools
Guidelines for SAP Fiori app development for CAP and standalone projects.
SAP/open-ux-tools
Configure, migrate, or run ESLint with @sap-ux/eslint-plugin-fiori-tools in SAP Fiori projects (standalone or CAP).
Add visual filters (chart-based) to SAP Fiori Elements filter bar or value help using CAP or ABAP RAP. Sap Fiori Add Visual Filter is an agent skill from SAP/open-ux-tools, published by the product's own GitHub organization. Add visual filters (chart-based) to SAP Fiori Elements filter bar or value help using CAP or ABAP RAP.
Sap Fiori Add Visual Filter fits situations like: asked to add chart filters; bar chart selectors; visual filter bars to a Fiori Elements application.
Run `npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a claude-code`. Or copy the skill folder (plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter in SAP/open-ux-tools) into .claude/skills/sap-fiori-add-visual-filter in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a codex`. Or copy the skill folder (plugins-coding-agents/fiori/skills/sap-fiori-add-visual-filter in SAP/open-ux-tools) into .agents/skills/sap-fiori-add-visual-filter in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SAP/open-ux-tools --skill sap-fiori-add-visual-filter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sap-fiori-add-visual-filter, .gemini/skills/sap-fiori-add-visual-filter, .github/skills/sap-fiori-add-visual-filter and .opencode/skills/sap-fiori-add-visual-filter in your project.
SKILL.md names no scripts, command-line tools or credentials: Sap Fiori Add Visual Filter is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: help.sap.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sap Fiori Add Visual Filter is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sap Fiori Add Visual Filter: MCP Server Workflows (SAP-samples/hana-developer-cli-tool-example, 112 stars), Sap Fiori Tools (secondsky/sap-skills, 462 stars), Ketch (1broseidon/ketch, 702 stars) and CC Workflow Studio AI Editor (breaking-brake/cc-wf-studio, 5.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SAP (a GitHub organization, an official publisher) maintains it in SAP/open-ux-tools, which has 158 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 10, 2026.
Source: SAP/open-ux-tools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.