AGENTS.md@plugins/power-apps-mobile-extension · git:20261022.3cbe9ce · 2026-10-22 · sha256 dd2a1f3e25b6a183

AGENTS.md@plugins/power-apps-mobile-extension git:20261022.3cbe9ceA

Immutable. This exact content never changes and is served at /api/v1/blob/dd2a1f3e25b6a183.

# Power Apps Mobile Plugin Guidelines

## Scope

This directory is the complete, self-contained `power-apps-mobile-extension` plugin. In the public
`microsoft/power-platform-skills` repository, copy it to `plugins/power-apps-mobile-extension/`.

The plugin builds third-party Power Apps Mobile controls into native-only `.ppmplugin` bundles and
generates the companion dispatcher PCF. It must use only files in the control's working tree and
publicly available tools and package registries.

## Authoritative references

- `shared/shared-instructions.md` owns cross-skill behavior, constants, safety rules, and status
  semantics.
- `shared/prereq-check.md` owns prerequisite versions, per-skill checks, and auto-fix policy.
- `shared/ppmplugin-format.md` owns the bundle schema, runtime dispatch contract, validation rules,
  and platform build requirements.
- `shared/repo-layout.md` owns the generated control repository structure.
- `shared/naming-conventions.md` owns identifier derivation and reserved-name guidance.
- `shared/error-codes.md` owns stable native and transport error codes.
- `shared/telemetry.md` owns skill-usage telemetry behavior, controls, fields and release gates.
- `shared/framework-recommendations.md` owns native implementation recommendations.
- `shared/self-critique-protocol.md` owns quality gates used by code-writing skills.

Reference these files instead of duplicating their rules in skills or README sections. When a
summary is necessary, keep it synchronized with the owning reference.

## Public repository requirements

- Do not add internal hosts, repository names, source paths, documents, environment identifiers,
  tenant identifiers, or organization-specific authentication instructions.
- Keep `.plugin/plugin.json` and `.claude-plugin/plugin.json` byte-for-byte equivalent.
- Keep all skill links inside this plugin directory so marketplace installs remain portable.
- Use placeholders such as `<env-url>`, `<publisher-prefix>`, and `contoso` in examples.
- Keep skill frontmatter descriptions below the GitHub Copilot 1,024-character limit.

When adding the plugin to the public repository, also register
`./plugins/power-apps-mobile-extension` in both root marketplace manifests and add it to the root README. Those
repository-level registrations intentionally remain outside this self-contained plugin payload.

## Telemetry implementation

- Telemetry is enabled in `scripts/lib/telemetry/ikey.json` by explicit maintainer
  approval. Change the release switch only with explicit approval; preserve its
  hard-off behavior. Tests must use isolated fixtures, not alter the release switch
  or send live telemetry. The `telemetry on` command changes only a user preference.
- Use the strict PAM schema before both local logging and network serialization.
  Do not add fields or relax the `eventInfo.aadObjectId`-only rule implicitly.
- Only hook-derived starts are recorded. Do not instrument generated controls or
  add telemetry commands to individual authoring skills. Telemetry is non-blocking.
- Run `node --test plugins/power-apps-mobile-extension/scripts/tests/telemetry.test.js`
  from the repository root and the metadata checks listed in `shared/telemetry.md`.
  Set `POWER_PLATFORM_SKILLS_TELEMETRY_POWER_APPS_MOBILE_EXTENSION_OPTOUT=1`
  for automation. Keep the bundled library identical to `shared/telemetry/lib/`.
- Preserve the fixed wire `clientType` and `pluginName` in `customDimensions` for
  shared-stream attribution. Instrumentation keys must remain unique across plugins.
- Live collector tests and backend routing updates are separate actions. Do not
  run live probes as routine validation.