outsystems-custom-code
[Beta] Reference + workflow for building, testing, and deploying C# class-library "External Logic" libraries for OutSystems…
[Beta] Generate an interactive HTML graph of a single OutSystems app's architecture — UI flows + screens, server/client/service actions with signatures, entities with attributes and relationships, static enums, structures, roles, AI model connections, library dependencies and
Claude Code
$ npx -y skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture --agent claude-code
Codex
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a codex -y
Cursor
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a cursor -y
Gemini CLI
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a gemini-cli -y
GitHub Copilot
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a github-copilot -y
OpenCode
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a opencode -y
Windsurf
$ npx skills add OutSystems/outsystems-mcp --skill outsystems-app-architecture -a windsurf -y
name: outsystems-app-architecture
description: "[Beta] Generate an interactive HTML graph of a single OutSystems app's architecture — UI flows + screens, server/client/service actions with signatures, entities with attributes and relationships, static enums, structures, roles, AI model connections, library dependencies and where the app is deployed — with OutSystems-themed dark mode styling. ONE app per invocation — do NOT iterate over multiple apps in a single call (run the skill explicitly per-app; for more than 3 named apps, ask the user and wait for an explicit answer first). For 'every app' / 'all apps' requests and tenant-wide views, use outsystems-tenant-architecture instead: its scope guard asks before any per-app run, without listing the apps first. Use when the user asks for the architecture of a specific app, 'show me the architecture of [app]', 'explore [app]', 'what's inside [app]', 'give me an overview of [app]', or similar. Not for OutSystems 11 (O11) or Service Studio."
license: MIT
compatibility: Needs an agent that can run shell commands and Python 3.8+ (standard library only), with the OutSystems MCP server connected and signed in. Validated on Claude Code. Claude Desktop's Chat tab has no shell and cannot run it. The generated HTML loads its graph library from a CDN; offline it shows a plain listing instead.
allowed-tools: Bash(python3 ${CLAUDE_PLUGIN_ROOT}/skills/outsystems-app-architecture/scripts/build.py *) Bash(python3 "${CLAUDE_PLUGIN_ROOT}/skills/outsystems-app-architecture/scripts/build.py" *) Write mcp__plugin_outsystems_outsystems__app_list mcp__plugin_outsystems_outsystems__app_info mcp__plugin_outsystems_outsystems__app_refs mcp__plugin_outsystems_outsystems__app_revisions mcp__plugin_outsystems_outsystems__env_list mcp__plugin_outsystems_outsystems__env_apps mcp__plugin_outsystems_outsystems__context_screens mcp__plugin_outsystems_outsystems__context_actions mcp__plugin_outsystems_outsystems__context_entities mcp__plugin_outsystems_outsystems__context_structures mcp__plugin_outsystems_outsystems__context_roles mcp__plugin_outsystems_outsystems__context_connections mcp__outsystems__app_list mcp__outsystems__app_info mcp__outsystems__app_refs mcp__outsystems__app_revisions mcp__outsystems__env_list mcp__outsystems__env_apps mcp__outsystems__context_screens mcp__outsystems__context_actions mcp__outsystems__context_entities mcp__outsystems__context_structures mcp__outsystems__context_roles mcp__outsystems__context_connections
metadata:
version: "1.7.0"
maturity: beta
author: OutSystems**Beta Feature.** This skill is a Beta Feature: a non-final OutSystems capability provided to collect customer feedback. It can change significantly, including through breaking changes, or be discontinued. The first time you use this skill in a conversation, tell the user it's a Beta Feature and share https://www.outsystems.com/legal/beta-features-agreement.
Produces a single HTML file with a force-directed graph of one app's internal structure: UI flows → screens, action groups → server, client and service actions, data layer (entities / enums / structures, with entity → entity reference edges), security (roles), and **dependencies** — AI model connections and referenced libraries. OutSystems dark theme, filter-by-category sidebar, click a node for its attributes, signature or input parameters. The sidebar also shows where the app is deployed and its recent revisions.
The app data is inlined in the file. The graph library (vis-network 9.1.9, pinned with a Subresource Integrity hash) and the fonts load from CDNs: without network access, or if the CDN serves anything but the pinned file, the page shows a plain HTML listing of the same data instead of the graph.
the tools named below; tool names here are the server's own, and your harness may show them with a prefix (in Claude Code, `mcp__plugin_outsystems_outsystems__app_info` for `app_info`).
script reads the saved tool results from disk and writes the HTML; it never calls the server and holds no sign-in of its own.
file (in the OutSystems plugin, `skills/outsystems-app-architecture/`), so `<skill-folder>/scripts/build.py` is the script next to it. Values in angle brackets are placeholders you substitute; quote every path, since a home folder can contain spaces.
it: the skill's permissions match `python3 "<skill-folder>/scripts/build.py" ...` and nothing else, so an added redirect (`2>&1`), pipe or chained command (`;`, `&&`) makes the harness stop and ask the user.
example Claude Code, not Claude Desktop's Chat tab); don't try to build the page by hand.
**The core rule: keep large data off the model's context.** Tool results go to disk, `build.py` reads them from there, and the HTML comes out the other side. Never read a saved result back into the conversation.
This skill produces **one app's architecture** per invocation. Read the user's request and route:
**Branch A — One specific app** ("architecture of Banking Portal", "show me TaskTracker") → Continue.
**Branch B — Multiple specific apps** ("architecture of Banking Portal AND TaskTracker AND ...") → For N ≤ 3, run this skill once per app sequentially. For N > 3, **ask the user** — it's ~10K tokens each, ~50K + ~5 min for 5 apps. Confirm before chaining.
**Branch C — Whole tenant** ("architecture of everything", "all my apps") → **Stop and route to `outsystems-tenant-architecture`.** That skill is a single tenant-level pass at ~3-10K tokens, not 100× per-app calls. Tell the user: *"
Distribution repo for the OutSystems MCP. To install, paste the matching prompt below into your AI assistant. Every harness section below sets up two artifacts and says how to keep the skill current.
[Beta] Reference + workflow for building, testing, and deploying C# class-library "External Logic" libraries for OutSystems…
[Beta] Build an interactive HTML REVERSE-dependency explorer — answers 'who depends on this library/agent/connection?' from the…
[Beta] Drive ODC Mentor to bootstrap an OutSystems app from a design source — Figma URL, screenshot/image, HTML mockup, or…
[Beta] Drive ODC Mentor to bootstrap an OutSystems app from a TEXT-ONLY structured spec. For Figma/image/HTML inputs, use…
[Beta] Generate an interactive HTML graph of an OutSystems Developer Cloud tenant's assets (web/mobile apps, agents and agent…
OutSystems Developer Cloud (ODC) over MCP. Edit apps, publish, deploy, search tenant elements, manage external libraries. Load…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.