CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

add-native

Public entry point for native device capabilities and native controls — camera, image picker, barcode/QR scanner, document picker, file picker, secure storage, file system, sharing, haptic feedback, PDF generation/viewing, pen/signature capture, background GPS/geolocation tracking, or supported local file workflows — in a Power Apps mobile app. Also owns routing to internal camera/PDF/pen/geolocation implementation helpers and the guidance boundary between native wrappers and Dataverse File/Image host controls.

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./plugins/mobile-apps/skills/add-native/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable skill with gated, validated workflows and copy-paste code, all grounded in non-obvious Power Apps/Dataverse constraints. Its weaknesses are redundancy — routing logic is repeated across three overlapping tables and two rule sections — and per-capability wrapper code inlined in the entry-point file instead of separate reference files.

Suggestions

Consolidate the three overlapping routing tables (dedicated helpers, Native capability gate, Supported capabilities) into a single capability-to-route map; the same "routes internally to add-X" facts currently appear 3-4 times.

Move the full haptics wrapper and secureStore skeleton code listings into per-capability reference files (or into the relevant nested helper skills) so they are loaded only when that capability is requested.

Trim the repeated picker JSX/service-call examples in the File/Image Picker Ownership section to one canonical example per column type.

DimensionReasoningScore

Conciseness

The body assumes Claude's competence (no generic concept explanations, dense tables) but restates routing facts across four overlapping places — the dedicated-helpers table, the Native capability gate table, the Supported capabilities table ("routes internally to add-X" repeated per row), the PDF/pen routing rules, plus Step 3's case statement and Step 2's alias list. Mostly efficient but could be tightened by consolidating these tables, so it fits anchor 3 rather than 4.

3 / 5

Actionability

Fully executable throughout: guard-complete bash (cd -- '<working_dir>' || { echo "BLOCKED…" >&2; exit 1; }), a node -e package.json gate, complete copy-paste TypeScript wrappers (haptics, secureStore), concrete JSX and service upload/download call patterns, and an explicit npx --no-install tsc --noEmit verification. The <capability>/<working_dir> placeholders are justified template conventions.

5 / 5

Workflow Clarity

A clearly sequenced 7-step workflow with explicit validation checkpoints: Step 1 file-existence gate, Step 4 package.json check that stops and prints the error verbatim, and Step 6 type-check with a fix-and-revalidate loop ("Fix only in-scope wrapper-side errors"). BLOCKED/NEEDS_CONTEXT propagation and hard rules make the risky operations well gated.

5 / 5

Progressive Disclosure

External references are clearly signaled and one level deep (${PLUGIN_ROOT}/shared/shared-instructions.md, native-artifact-compatibility.md, nested add-camera/add-pdf-report/… helpers), but the skill ships no bundle files of its own and inlines per-capability detail that would live better in reference files — the ~78-line haptics wrapper, the ~34-line secureStore skeleton, and the picker JSX examples are loaded on every invocation of what is primarily a routing skill.

3 / 5

Total

16

/

20

Passed

Description

70%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A highly specific, well-scoped description that names the Power Apps native-capability niche comprehensively with good natural trigger terms. Its main gap is the absence of an explicit "Use when…" trigger clause, leaving the invocation context only weakly implied.

Suggestions

Add an explicit trigger clause, e.g. "Use when adding native device capabilities or native controls to a Power Apps mobile app" — the "when" is currently only implied by the "in a Power Apps mobile app" qualifier.

Include the natural trigger terms the body already normalizes but the description omits: vibration, photo, gallery, print, and biometrics.

State the concrete outcome (generates typed wrappers under src/native/ and routes to dedicated helpers) so the "what" names the operation, not just the capability domains.

DimensionReasoningScore

Specificity

Enumerates a comprehensive set of concrete capabilities ("camera, image picker, barcode/QR scanner, document picker, file picker, secure storage, file system, sharing, haptic feedback, PDF generation/viewing, pen/signature capture, background GPS/geolocation tracking") plus concrete ownership of "routing to internal camera/PDF/pen/geolocation implementation helpers". It stays at 4 rather than 5 because the stated actions are limited to entry-point/routing — it never says what the skill actually produces (typed wrappers under src/native/) — and not 3 because coverage goes well beyond 1-2 actions.

4 / 5

Completeness

The "what" is clear and detailed ("Public entry point for native device capabilities and native controls… in a Power Apps mobile app. Also owns routing to internal… helpers and the guidance boundary between native wrappers and Dataverse File/Image host controls"), but there is no "Use when…" clause or equivalent explicit trigger guidance; the "when" is only weakly implied by the "in a Power Apps mobile app" qualifier, which caps completeness at 3.

3 / 5

Trigger Term Quality

Good natural-term coverage including synonym pairs ("pen/signature capture", "background GPS/geolocation tracking", "barcode/QR scanner"). Not 5 because several natural terms users would say — vibration, photo, gallery, print, biometrics — are absent (the body itself normalizes several of these), and not 3 because the included terms are broad and include synonym variants.

4 / 5

Distinctiveness Conflict Risk

Clear niche with distinct triggers: "Power Apps mobile app", "Dataverse File/Image host controls", "native wrappers" scope it sharply, and the explicit boundary/routing ownership minimizes overlap with sibling skills. Not 4 because the domain qualifiers make conflict with generic camera/file/PDF skills minimal.

5 / 5

Total

16

/

20

Passed

Validation

81%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

relative_links

Relative link issues: 10 missing, 5 deeper-than-1-level, 1 suspicious

Warning

Total

13

/

16

Passed

Repository

microsoft/power-platform-skills

Path

plugins/mobile-apps/skills/add-native/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.