skills/plantuml-image-generator/SKILL.md
Triggered when the user requests an image (e.g., architecture, flowchart, sequence diagram) or needs a technical illustration inserted into a document. This skill dynamically generates and inserts images using the official PlantUML public API.
npx skillsauth add imhansiy/my-skills plantuml-image-generatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Requirement Analysis & Code Generation:
@startuml and end with @enduml).Core Encoding Logic (URL Generation):
Convert the generated PlantUML code into ENCODED_TEXT using specific encoding rules:
UTF-8.zlib / Deflate algorithm.0-9, A-Z, a-z, -, _).URL Assembly:
Append the generated ENCODED_TEXT to the official main service URL, supporting two mainstream formats:
http://www.plantuml.com/plantuml/png/{ENCODED_TEXT}http://www.plantuml.com/plantuml/svg/{ENCODED_TEXT}Rendering & Insertion:
If you need to write a script to quickly verify the encoding process, refer to the following conversion logic:
import zlib
import base64
def generate_plantuml_url(uml_text: str, output_format: str = "svg") -> str:
utf8_data = uml_text.encode('utf-8')
compressor = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS)
compressed_data = compressor.compress(utf8_data) + compressor.flush()
b64_str = base64.b64encode(compressed_data)
trans = bytes.maketrans(
b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_"
)
encoded_str = b64_str.translate(trans).decode('utf-8').rstrip('=')
return f"http://www.plantuml.com/plantuml/{output_format}/{encoded_str}"
Input Context: "Boss: Add a sequence diagram to the README explaining the user login process."
Internal Execution (PlantUML Source):
@startuml
User -> Server: Send username and password
Server -> Database: Validate credentials
Database --> Server: Return UserID and Token
Server --> User: Login successful
@enduml
Your Final Output (Written directly in the document or feedback message):

tools
MUST USE before playwright/dev-browser/local browser tools when any remote Browserless target is configured or when the user mentions Browserless, remote browser, headless Chrome endpoint, screenshots, PDFs, rendered HTML, scraping, dynamic public webpages, browser automation, webpage debugging, clicking/typing page elements, Puppeteer/Playwright sessions, or provides a Browserless URL/token/name. This skill has priority over generic browser skills for public HTTP(S) pages; use remote Browserless first, then fall back to local Playwright/dev-browser only after Browserless health/action failure, unreachable target, or a local/private page that cannot be exposed publicly. Manages Browserless endpoints/tokens and uses the bundled Node.js script for automation.
tools
Manage CLIProxyAPI or CLIProxyAPIPlus only: save CLIProxyAPI Management API URL and password under the user's home .config/cliproxyapi directory, call every CLIProxyAPI Management API endpoint, manage config/auth files/provider keys/model aliases/logs/usage/OAuth URLs, and work on Windows, Linux, and macOS without opening the web UI.
development
Use proactively for Odoo work. Connect AI coding agents to Odoo through Python OdooRPC profiles, inspect live records, troubleshoot models, fields, access rights, modules, companies, connectors, imports, synchronization issues, odoo.conf, addons paths, backup restore, filestore checks, and guarded create/update/delete workflows.
testing
Standardize responses with a fixed execution structure. Use when users ask for workflow-style outputs, consistent task breakdowns, or reusable delivery checklists.