executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
ui-and-componentsLaunch and reason about Opyrator's Streamlit UI, schema-driven widgets, FileContent values, reusable output components, and custom UI hooks.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when the user asks how Opyrator renders an interactive Streamlit UI, how Pydantic schemas become widgets, how FileContent values move through uploads/downloads, or how to add custom input/output renderers.
launch_ui(opyrator_path, port=8501) or render_streamlit_ui(Opyrator(...)).Field(...) metadata such as title, description, default, example, ranges, max_length, mime_type, and enum types.opyrator.components.types.FileContent, including upload validation, base64 round-tripping, as_bytes(), as_str(), and media previews/downloads.ClassificationOutput and ScoredLabel.render_input_ui(streamlit, input_data) on an input model or render_output_ui(streamlit[, input=...]) on output models.call, export, deploy, or general command routing: use wrapping-and-cli.input typed as a Pydantic BaseModel, and a Pydantic BaseModel or list of models as return type. For the shared contract and API consequences, route through api-services.opyrator launch-ui module:function --port 8051 for an interactive server, or render_streamlit_ui(Opyrator(...)) only inside a Streamlit script.scripts/schema_smoke.py: safe deterministic smoke helper that builds a showcase-style Pydantic model, classifies its schema with opyrator.ui.schema_utils, verifies FileContent round-tripping, and checks custom renderer discovery without launching Streamlit or opening a browser.Run it from this sub-skill directory in an environment where Opyrator is installed:
python scripts/schema_smoke.py --json
Expected success signal: exit code 0, status: "ok", all expected field classifications present, file_round_trip.round_trip_bytes_match: true, and the hook summary matches the expected hook summary.