Individual skill
test-native-extension
Validate a third-party control repo across four automated layers plus one printed manual recipe. Layer 1 asserts native-source structure (Android getName() and iOS +moduleName to manifest nativeModule; @ReactMethod / RCT_EXPORT_METHOD to methods; no @ReactModule) plus load/init readiness (ReactPackage public no-arg constructor, iOS [cls new] no-arg init, requiresMainQueueSetup NO, non-throwing eager construction), so launch-time crashes surface before any build. Layer 2 validates the committed `./manifest.json` against the ppmplugin-format rules. Layer 3 asserts request/response/error-code agreement across native and PCF. Layer 4 compiles the PCF (auto-skipped if absent). Layer 5 prints a device end-to-end recipe. Native compile belongs to /build-android-binary and /build-ios-binary — this is the cheap structural pre-flight before those slow builds. Reports pass/fail per layer with a fix hint and updates .extension-state.md.
plugins/power-apps-mobile-extension/skills/test-native-extension/SKILL.md
Source commit 9a3cf2e61277cb3d96e103b0cdd73017829476fa
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 5, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 1,127
- Repository last updated
- Nov 8, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- claude-code-plugin Repository topic
- claude-code-skills Repository topic
- power-apps Repository topic
- power-pages Repository topic
- power-platform Repository topic
- code-apps Repository topic
- github-copilot-plugin Repository topic
- testing Derived category
- testing-browser Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytesSKILL.mdcore · 65,280 bytes
Read excerpt
# /test-native-extension
Runs the 4-layer validation ladder for a third-party control repo — the one that ships as a `.ppmplugin` binary bundle, not as a TypeScript extension. Layers 1–4 are automated; Layer 5 is interactive (requires a real device or simulator and the Companion PCF deployed to a test environment).
| Layer | What | Mode | Speed | Requires |
|---|---|---|---|---|
| 0 | Holistic contract consistency (native ↔ manifest ↔ PCF cross-check) | Automated, **warn-only** | seconds | at least a native module on disk |
| 1 | Native-source structure asserts (Android `getName()` ↔ iOS `+moduleName` ↔ manifest) | Automated, grep/parse | seconds | `android/` and/or `ios/` |
| 2 | Manifest validation (`ppmplugin-format §4` rules) | Automated | seconds (skipped only if no manifest on disk) | `./manifest.json` (committed; else staged copy) |
| 3 | Native-source contract asserts (request/response/error grep cross-check) | Automated | seconds | native module(s) |
| 4 | PCF compile (`npm run build` in `pcf/<Pascal>PCF/`) | Automated | seconds (after first install) | `pcf/<Pascal>PCF/` must exist (skipped otherwise) |
| 5 | Manual device / simulator end-to-end | **Recipe-only — skill prints, user runs on own time** | 5–10m, off-skill | `pcf/` must exist + PCF deployed |
Run order is layer-by-layer for Layers 1–4. **Stop on the first failure** in the automated layers. Layer 5 is **not** gated by the skill — it prints the device recipe and exits; the user runs it on their own time and updates `.extension-state.md` manually.