Skip to content

feat(ui5): Add OPA5 guidelines as Skills#64

Open
kineticjs wants to merge 5 commits into
UI5:mainfrom
kineticjs:opa5
Open

feat(ui5): Add OPA5 guidelines as Skills#64
kineticjs wants to merge 5 commits into
UI5:mainfrom
kineticjs:opa5

Conversation

@kineticjs
Copy link
Copy Markdown

Adding skills for OPA5 integration testing.

JIRA: BGSOFUIPIRIN-6914

@kineticjs kineticjs marked this pull request as ready for review June 2, 2026 08:01
@kineticjs kineticjs force-pushed the opa5 branch 2 times, most recently from b3fb084 to 1b917cd Compare June 2, 2026 08:24
@d3xter666
Copy link
Copy Markdown
Member

Hi @kineticjs ,

Please also add plugin.json files for the skill. You can have a look at: https://github.com/UI5/plugins-coding-agents/tree/main/plugins/ui5/

They are pretty much the same. The only diff is that plugins/ui5/plugin.json has skills property.
We need this, so that skills are correctly discoverable under the agents

Comment thread plugins/ui5/skills/opa5/SKILL.md Outdated
@@ -0,0 +1,38 @@
---
name: opa5
description: ALWAYS load before any OPA5 task — implementing, updating, or verifying a test. Provides best practices for structuring the test and tools for efficient diagnosis of test failures.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description is not in third-person form and contains no trigger phrases. The description is the only signal the model uses to decide whether to load the skill, so it must include concrete phrases the user would actually type ("write an OPA5 test", "my OPA5 test fails", "add a page object"). The current text reads as an instruction to the model rather than a description of when the skill applies. Suggested rewrite: This skill should be used when the user asks to "write an OPA5 test", "fix a failing OPA5 test", "add a page object", or mentions OPA5, opaTest, page objects, journeys.

Copy link
Copy Markdown
Author

@kineticjs kineticjs Jun 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, eventually came up with a version that compiles with the skill-reviewer agent

Comment thread plugins/ui5/skills/opa5/SKILL.md Outdated

### 2. **ALWAYS** enable pause-on-failure mode (all UI5 versions)
**Purpose:** When enabled, execution pauses on the first test failure and the app remains live in the browser exactly as it was at the point of failure — no teardown, no reload happens automatically. The paused state persists until you explicitly navigate away, so you can inspect the actual UI directly (without reloading) in the browser to compare it against what the test expected.
**Setup:** Add the following line to your test setup (e.g. before the first `opaTest` of your Journey under test):
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure about why this isn't reccodemnded but -

Second-person voice here — "so you can inspect the actual UI directly" and "until you explicitly navigate away". The guidelines require imperative form throughout the body. Suggest rephrasing to e.g. "so the actual UI can be inspected directly" and "until explicit navigation occurs".

Comment thread plugins/ui5/skills/opa5/SKILL.md Outdated
1. Enable the test environment setup above and load the test in the browser.
2. When the test pauses on failure, inspect the app first — verify the full causal chain with no gaps before changing any code. **ALWAYS** rule out app-side issues before assuming the test is wrong.
3. Once each new/updated journey succeeds in isolation, restore all journey imports for final validation.
4. Once all journeys pass with imports restored, remove the `sap.ui.testrecorder` library from the app and disable pause-on-failure.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ALWAYS appears six or more times across SKILL.md and the reference files. Emphasis only carries weight when it is rare; when every rule is marked critical, none of them register as critical, and the model loses the signal for which rules are genuinely load-bearing. Recommend keeping it only on this line ("ALWAYS rule out app-side issues before assuming the test is wrong"), which counters a real failure mode, and removing it elsewhere where the prose already states the rule plainly. Also note: trailing whitespace at the end of this line (two spaces after "final validation."). Appears to be a markdown line-break, but it is not needed since the next line is a numbered list item rather than a continuation.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reduced the count to 3 occurrences

Opa5.extendConfig({
autoWait: true,
viewNamespace: "com.myorg.myapp.view."
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sap.ui.define callback is not closed — the snippet terminates inside the callback body. Anyone copy-pasting will get a syntax error, and the broken bracketing weakens the file as a reliable reference. Either close the block properly, or drop the sap.ui.define wrapper and show only the extendConfig call with a brief note that the bootstrap is omitted.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

closed the callback and added //.... to show the snippet intends to show partial content. Seems more consistent now indeed.

✅ Correct Pattern:
Place the assertion for the `App.view.xml` in page object file `integration/pages/App.js`

Example 2:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heading punctuation is inconsistent: Example 1 (line 5) has no colon, Example 2: does. Minor, but visible at a glance in a short file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@dobrinyonkov
Copy link
Copy Markdown

dobrinyonkov commented Jun 3, 2026

Hey, I ran the official Claude Code skill-development skill and the skill-reviewer agent (both from Anthropic's plugin-dev plugin) against this skill, and they flagged a few potential issues we might want to address. Inline comments above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants