{"ref":"artifact:robertriedel-pod2-config-skill","page":"/artifacts/robertriedel-pod2-config-skill","json":"/artifacts/robertriedel-pod2-config-skill.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"robertriedel-pod2-config-skill","name":"pod2-config","artifact_type":"skill","ecosystem":"digital-manufacturing","domain":"ai-and-agents","secondary_domains":["ui-and-frontend-bridge"],"origin_ring":"independent","use_as":"dependency","description":{"one_line":"An agent skill that turns a described POD change into an importable [SAP Digital Manufacturing](external:sap-digital-manufacturing) POD 2.0 export, built from standard plugins and actions only.","what_it_solves":"Built as a Joule Desktop skill in the open `SKILL.md` format, with plain Node.js scripts beside it, so Claude Code and other agents that load skills run it as well. What you can ask for is a button, dialog, tab, page or menu on an existing POD, a Production Process call from a button or on page open, or a KPI dashboard from a short spec; all of it standard POD 2.0 configuration, limited to the plugin and action classes verified from real exports, with bindings and expressions on the POD context and the data coming from Production Processes you already model in DM. The workflow is file-based and makes no tenant calls: start from a real Manage PODs 2.0 export or one of the three bundled SAP templates, the agent prints its plan before writing JSON, and it patches a copy rather than the original. The bundled validator runs against the export's own baseline before and after, and the change is handed over only if it adds no errors; `preview-pod.js` writes a self-contained Fiori preview with real SAPUI5 controls against a mock POD context, which the README calls a layout check with sample values, not a functional test. A class the harvest never saw in an export is flagged instead of invented, and placeholders stand in for every tenant specific, the Production Process ID and key among them, resolved in the designer after import.","when_not_to_use":"A requirement that needs code: the skill generates configuration and states that it says so instead of faking it. Dialog and container targets have no verified enter event, so a dashboard placed there loads only through its Refresh button. Production Processes are outside it — it wires PODs to them and does not design them.","to_build_on_it":"The reference files are a harvest dated 2026-09-14, and `references/sources.md` records where each part came from, down to the help-portal request the catalogue of 147 POD 2.0 plugins and actions was read out of, with the instruction to re-harvest when SAP ships a new DM release. Classes the harvest did not find in a real export are marked unverified, so each one confirmed from an export widens what the generator can write without a designer round trip. The three scripts use Node built-ins only, and `build-panel.js` and `preview-pod.js` carry a `--self-test`."},"links":{"repo":"https://github.com/robertriedel/POD2_Config_Skill"},"compat":{"runtimes":["node"]},"type_properties":{"distribution":{"value":["copy"],"sources":[{"url":"https://github.com/robertriedel/POD2_Config_Skill","title":"pod2-config — README","checked":"2026-10-18","quote":"git clone https://github.com/robertriedel/POD2_Config_Skill.git"}]}},"provides":[{"capability":"capability:agent-guidance","what_it_does":"Hands an agent the POD 2.0 grammar as reference files it reads before writing JSON: the export and node shape with the container-to-aggregation map, the binding forms and expression cheat sheet, the runtime POD context schema captured from a running Order POD, the verified widget and action classes with the shape of the Production Process action, and 18 recipes. The procedure is in SKILL.md: plan first, patch a copy, validate against the baseline.","sources":[{"url":"https://github.com/robertriedel/pod2_config_skill","title":"robertriedel/POD2_Config_Skill — README","checked":"2026-10-17","quote":"It is built as a **Joule Desktop** skill. Because it uses the open `SKILL.md` format with plain Node.js scripts, it runs just as well in **Claude Code** and other agents that load skills."},{"url":"https://github.com/robertriedel/pod2_config_skill","title":"robertriedel/POD2_Config_Skill — README, How it works","checked":"2026-10-17","quote":"**Plan first.** The agent prints a short plan (target page, new widgets, action chain, bindings, placeholders) before writing JSON, and asks only what it can't default."},{"url":"https://raw.githubusercontent.com/robertriedel/POD2_Config_Skill/main/references/pod-context.md","title":"POD2_Config_Skill — references/pod-context.md, POD context schema","checked":"2026-10-17","quote":"The runtime JSON model behind every `{/…}` binding. Captured from a running **Order POD** (ORDER template, process order, plant 1710) on 2026-09-14"},{"url":"https://raw.githubusercontent.com/robertriedel/POD2_Config_Skill/main/references/actions.md","title":"POD2_Config_Skill — references/actions.md, Production Process","checked":"2026-10-17","quote":"Class: `sap.dm.dme.pod2.action.pp.ProductionProcess`. Triggers a PP (routing/rules) synchronously or asynchronously and (sync only) stores the response into `outputVariable`, readable elsewhere as `{/<var>/…}`."}]}],"requires":[{"ref":"external:sap-digital-manufacturing","for":"The product whose POD 2.0 configuration it writes: the run starts from a Manage PODs 2.0 export or a bundled SAP template, and the result is imported back into Manage PODs 2.0, where the Production Process placeholders are resolved in the designer.","requirement":"required","basis":"binding","role":"target-system","sources":[{"url":"https://github.com/robertriedel/pod2_config_skill","title":"robertriedel/POD2_Config_Skill — README, How it works","checked":"2026-10-17","quote":"Export your POD (Manage PODs 2.0 → ⋯ → Export) or start from a bundled template"},{"url":"https://github.com/robertriedel/pod2_config_skill","title":"robertriedel/POD2_Config_Skill — README, How it works","checked":"2026-10-17","quote":"You import the complete POD (Manage PODs 2.0 can't import single pages), resolve the Production Process placeholders in the designer's browse dialog, then **Save** and **Run**."}]}],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"maintainers":["actor:robertriedel"],"contributors":["actor:robertriedel09-blip"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no DIGITAL-MANUFACTURING release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no DIGITAL-MANUFACTURING release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 12 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-16","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2026-10-16T12:28:01Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":12031,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-10-16","last_commit":"2026-10-16","commits":5,"contributors":1,"readme_path":"README.md","readme_sha":"061be40ed5deccb477880ca3f18d66974e180084","repo_read":"2026-10-24"},"edges":{"maintainers":[{"ref":"actor:robertriedel","name":"robertriedel","json":"/actors/robertriedel.json"}],"contributors":[{"ref":"actor:robertriedel09-blip","name":"robertriedel09-blip","json":"/actors/robertriedel09-blip.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}