Report Issue — mobile-app skill

Use when the user wants to report a bug, file an issue, submit a bug report, or report any problem with the mobile-app plugin.

by microsoft·MIT license·★ 954 Stars on the repo·GitHub ↗

Use now

Files of Report Issue — mobile-app

microsoft/main1 file shown
SKILL.md
Show the full text228 lines

Plugin check: Run node "${PLUGIN_ROOT}/scripts/check-version.js" - if it outputs a message, show it to the user before proceeding.

📋 Shared instructions: shared-instructions.md — read this first.

Report Issue — mobile-app

Generates a fully-populated GitHub issue body for the microsoft/power-platform-skills repo, scoped to the mobile-app plugin. Read-only — no project modifications.

Workflow

  1. Capture user description → 2. Detect project context → 3. Collect diagnostics → 4. Render issue body → 5. Print URL

Step 1 — Capture user description

Telemetry checkpoint: capture_issue_description

If $ARGUMENTS contains a description, use it. Otherwise prompt:

"What's the issue? Briefly describe what you expected vs. what happened. (You can paste error output if helpful.)"

Then ask via AskUserQuestion:

"Issue category? (a) Bug — something broke (b) Unexpected behavior — wrong output but no error (c) Documentation — docs are wrong / missing (d) Feature request (e) Question / discussion"

"How blocking is this? (a) Blocking — can't proceed at all (b) Workaround exists — but painful (c) Annoying — non-critical (d) Polish — nice-to-have"

Step 2 — Detect project context

Read-only checks:

test -f power.config.json && echo "in_project=true" || echo "in_project=false"
pwd
node --version
npm --version
node scripts/resolve-environment.js "$(node -e \"console.log(require('./power.config.json').environmentId)\")" 2>/dev/null || true
az --version 2>/dev/null | head -1
npx expo --version 2>/dev/null
uname -srm

If in a project:

node -e "console.log(require('./package.json').name, require('./package.json').version)" 2>/dev/null
node -e "console.log(JSON.stringify({env: require('./power.config.json').environmentId, name: require('./power.config.json').displayName}))"
test -f memory-bank.md && echo "memory_bank=present"
test -f native-app-plan.md && echo "plan=present"
ls src/generated/services/ 2>/dev/null | head -10

If the description names a package matching @microsoft/power-apps-native-*, collect its declared and lockfile-resolved versions from package.json and package-lock.json. Do not read package source or metadata from node_modules/.

node - <<'NODE'
const fs = require('node:fs');
const manifest = JSON.parse(fs.readFileSync('package.json', 'utf8'));
const lockfile = fs.existsSync('package-lock.json')
  ? JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
  : null;
const dependencies = { ...manifest.dependencies, ...manifest.devDependencies };
for (const [name, declared] of Object.entries(dependencies)) {
  if (!name.startsWith('@microsoft/power-apps-native-')) continue;
  const resolved = lockfile?.packages?.[`node_modules/${name}`]?.version ?? 'unknown';
  console.log(`${name}\tdeclared=${declared}\tresolved=${resolved}`);
}
NODE

For native-build issues also capture:

[ "$(uname)" = "Darwin" ] && xcode-select -p
[ "$(uname)" = "Darwin" ] && pod --version 2>/dev/null
java -version 2>&1 | head -1
echo "ANDROID_HOME=$ANDROID_HOME"
Step 3 — Collect diagnostics

Telemetry checkpoint: collect_issue_diagnostics

Run npx expo doctor and capture the text output verbatim.

Ask for the affected workflow's Support ID when available. Use the telemetry helper's read-only --report mode from the affected project to inspect only its allowlisted timeline. Include the Support ID and relevant step/error category in the issue body, not environment, tenant, or organization IDs. Do not upload the telemetry directory or raw timing/authentication files.

If the user pasted an error, capture verbatim. Otherwise look for recent failure signals:

  • Last 50 lines of any Metro / Gradle / Xcode log if user mentions a build failure
  • git status --short if in a git repo (to show modified files — sanitize for secrets first)
  • Output of npx tsc --noEmit if relevant

Do NOT capture:

  • Contents of src/playerConfig.ts (contains tenantId / clientId — sensitive)
  • Contents of .env or any file matching .env*
  • Connection IDs unless the user explicitly opted in (PII / can map to tenant)
  • Anything under node_modules/
  • Package source excerpts, patched package contents, or proposed fork code
  • Tenant/environment/organization IDs in a public issue, even though verified IDs can exist in access-controlled telemetry
Step 4 — Render issue body

Telemetry checkpoint: render_issue_report

Print this block — user copies into a new issue:

### Description

<user's description>

### Category

<Bug / Unexpected behavior / Docs / Feature / Question>

### Severity

<Blocking / Workaround / Annoying / Polish>

### Environment

| | |
|---|---|
| Plugin | mobile-app |
| Plugin version | <from .plugin/plugin.json, or legacy .claude-plugin/plugin.json fallback, or "unknown"> |
| OS | <uname output> |
| Node | <version> |
| npm | <version> |
| Power Apps CLI | <version> |
| Expo CLI | <version> |
| Xcode | <if macOS> |
| JDK | <if android> |
| ANDROID_HOME set | <yes/no> |

### Project context

<if in project>
- Mobile project detected: yes
- Support ID: `<affected workflow run GUID, or unavailable>`
- Failed step / error category: `<registered step and fixed category, or unknown>`
- Memory bank present: <yes/no>
- Plan present: <yes/no>
- Connector count: <count, not generated service or business-table names>
</if>

<if not in project>
Not run inside a mobile-app project.
</if>

### Affected native package

<include only when the issue concerns @microsoft/power-apps-native-*>
- Package: `<package name>`
- Declared version: `<package.json range>`
- Resolved version: `<package-lock.json version or unknown>`
- Platform: `<iOS / Android>`
- Ownership evidence: <why the documented caller contract is satisfied and the failure is package-internal>

### Reproduction steps

1.
2.
3.

### Expected

<what should have happened>

### Actual

<what happened>

### Logs / errors

<paste verbatim — sensitive values redacted>


### Notes

<anything else>
Step 5 — Print URL

Telemetry checkpoint: generate_issue_submission_url

Tell the user:

Open this URL to file the issue:

https://github.com/microsoft/power-platform-skills/issues/new?labels=plugin%3Amobile-app

Paste the block above into the body. Review for any sensitive values before submitting.

If the user wants to open it, suggest open <url> (macOS) / xdg-open <url> (Linux) / start <url> (Windows). Do not auto-open without confirmation.

Notes

  • This skill never modifies any file or invokes mutating commands. Pure diagnostic.
  • For diagnosing connection-specific failures, suggest the user run /list-connections first and paste that output into the issue.
  • For diagnosing build failures, suggest they include the full Metro/Gradle/Xcode log (not truncated).
1---
2name: report-issue
3description: Use when the user wants to report a bug, file an issue, submit a bug report, or report any problem with the mobile-app plugin.
4user-invocable: true
5argument-hint: "[optional: brief description of the bug]"
6allowed-tools: Read, Bash, Glob, Grep, AskUserQuestion
7model: haiku
8---
9 
10> **Plugin check**: Run `node "${PLUGIN_ROOT}/scripts/check-version.js"` - if it outputs a message, show it to the user before proceeding.
11 
12**📋 Shared instructions: [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md)** — read this first.
13 
14# Report Issue — mobile-app
15 
16Generates a fully-populated GitHub issue body for the `microsoft/power-platform-skills` repo, scoped to the `mobile-app` plugin. Read-only — no project modifications.
17 
18## Workflow
19 
201. Capture user description → 2. Detect project context → 3. Collect diagnostics → 4. Render issue body → 5. Print URL
21 
22---
23 
24### Step 1 — Capture user description
25 
26**Telemetry checkpoint: `capture_issue_description`**
27 
28If `$ARGUMENTS` contains a description, use it. Otherwise prompt:
29 
30> "What's the issue? Briefly describe what you expected vs. what happened. (You can paste error output if helpful.)"
31 
32Then ask via `AskUserQuestion`:
33 
34> "Issue category?
35> (a) Bug — something broke
36> (b) Unexpected behavior — wrong output but no error
37> (c) Documentation — docs are wrong / missing
38> (d) Feature request
39> (e) Question / discussion"
40 
41> "How blocking is this?
42> (a) Blocking — can't proceed at all
43> (b) Workaround exists — but painful
44> (c) Annoying — non-critical
45> (d) Polish — nice-to-have"
46 
47### Step 2 — Detect project context
48 
49Read-only checks:
50 
51```bash
52test -f power.config.json && echo "in_project=true" || echo "in_project=false"
53pwd
54node --version
55npm --version
56node scripts/resolve-environment.js "$(node -e \"console.log(require('./power.config.json').environmentId)\")" 2>/dev/null || true
57az --version 2>/dev/null | head -1
58npx expo --version 2>/dev/null
59uname -srm
60```
61 
62If in a project:
63 
64```bash
65node -e "console.log(require('./package.json').name, require('./package.json').version)" 2>/dev/null
66node -e "console.log(JSON.stringify({env: require('./power.config.json').environmentId, name: require('./power.config.json').displayName}))"
67test -f memory-bank.md && echo "memory_bank=present"
68test -f native-app-plan.md && echo "plan=present"
69ls src/generated/services/ 2>/dev/null | head -10
70```
71 
72If the description names a package matching `@microsoft/power-apps-native-*`, collect its declared and lockfile-resolved versions from `package.json` and `package-lock.json`. Do not read package source or metadata from `node_modules/`.
73 
74```bash
75node - <<'NODE'
76const fs = require('node:fs');
77const manifest = JSON.parse(fs.readFileSync('package.json', 'utf8'));
78const lockfile = fs.existsSync('package-lock.json')
79 ? JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
80 : null;
81const dependencies = { ...manifest.dependencies, ...manifest.devDependencies };
82for (const [name, declared] of Object.entries(dependencies)) {
83 if (!name.startsWith('@microsoft/power-apps-native-')) continue;
84 const resolved = lockfile?.packages?.[`node_modules/${name}`]?.version ?? 'unknown';
85 console.log(`${name}\tdeclared=${declared}\tresolved=${resolved}`);
86}
87NODE
88```
89 
90For native-build issues also capture:
91 
92```bash
93[ "$(uname)" = "Darwin" ] && xcode-select -p
94[ "$(uname)" = "Darwin" ] && pod --version 2>/dev/null
95java -version 2>&1 | head -1
96echo "ANDROID_HOME=$ANDROID_HOME"
97```
98 
99### Step 3 — Collect diagnostics
100 
101**Telemetry checkpoint: `collect_issue_diagnostics`**
102 
103Run `npx expo doctor` and capture the text output verbatim.
104 
105Ask for the affected workflow's Support ID when available. Use the telemetry
106helper's read-only `--report` mode from the affected project to inspect only its
107allowlisted timeline. Include the Support ID and relevant step/error category in
108the issue body, not environment, tenant, or organization IDs. Do not
109upload the telemetry directory or raw timing/authentication files.
110 
111If the user pasted an error, capture verbatim. Otherwise look for recent failure signals:
112 
113- Last 50 lines of any Metro / Gradle / Xcode log if user mentions a build failure
114- `git status --short` if in a git repo (to show modified files — sanitize for secrets first)
115- Output of `npx tsc --noEmit` if relevant
116 
117**Do NOT capture:**
118- Contents of `src/playerConfig.ts` (contains tenantId / clientId — sensitive)
119- Contents of `.env` or any file matching `.env*`
120- Connection IDs unless the user explicitly opted in (PII / can map to tenant)
121- Anything under `node_modules/`
122- Package source excerpts, patched package contents, or proposed fork code
123- Tenant/environment/organization IDs in a public issue, even though verified
124 IDs can exist in access-controlled telemetry
125 
126### Step 4 — Render issue body
127 
128**Telemetry checkpoint: `render_issue_report`**
129 
130Print this block — user copies into a new issue:
131 
132```markdown
133### Description
134 
135<user's description>
136 
137### Category
138 
139<Bug / Unexpected behavior / Docs / Feature / Question>
140 
141### Severity
142 
143<Blocking / Workaround / Annoying / Polish>
144 
145### Environment
146 
147| | |
148|---|---|
149| Plugin | mobile-app |
150| Plugin version | <from .plugin/plugin.json, or legacy .claude-plugin/plugin.json fallback, or "unknown"> |
151| OS | <uname output> |
152| Node | <version> |
153| npm | <version> |
154| Power Apps CLI | <version> |
155| Expo CLI | <version> |
156| Xcode | <if macOS> |
157| JDK | <if android> |
158| ANDROID_HOME set | <yes/no> |
159 
160### Project context
161 
162<if in project>
163- Mobile project detected: yes
164- Support ID: `<affected workflow run GUID, or unavailable>`
165- Failed step / error category: `<registered step and fixed category, or unknown>`
166- Memory bank present: <yes/no>
167- Plan present: <yes/no>
168- Connector count: <count, not generated service or business-table names>
169</if>
170 
171<if not in project>
172Not run inside a mobile-app project.
173</if>
174 
175### Affected native package
176 
177<include only when the issue concerns @microsoft/power-apps-native-*>
178- Package: `<package name>`
179- Declared version: `<package.json range>`
180- Resolved version: `<package-lock.json version or unknown>`
181- Platform: `<iOS / Android>`
182- Ownership evidence: <why the documented caller contract is satisfied and the failure is package-internal>
183 
184### Reproduction steps
185 
1861.
1872.
1883.
189 
190### Expected
191 
192<what should have happened>
193 
194### Actual
195 
196<what happened>
197 
198### Logs / errors
199 
200```
201<paste verbatim — sensitive values redacted>
202```
203 
204### Notes
205 
206<anything else>
207```
208 
209### Step 5 — Print URL
210 
211**Telemetry checkpoint: `generate_issue_submission_url`**
212 
213Tell the user:
214 
215> Open this URL to file the issue:
216>
217> <https://github.com/microsoft/power-platform-skills/issues/new?labels=plugin%3Amobile-app>
218>
219> Paste the block above into the body. Review for any sensitive values before submitting.
220 
221If the user wants to open it, suggest `open <url>` (macOS) / `xdg-open <url>` (Linux) / `start <url>` (Windows). Do not auto-open without confirmation.
222 
223## Notes
224 
225- This skill never modifies any file or invokes mutating commands. Pure diagnostic.
226- For diagnosing connection-specific failures, suggest the user run `/list-connections` first and paste that output into the issue.
227- For diagnosing build failures, suggest they include the full Metro/Gradle/Xcode log (not truncated).
228 

Discussion

Alternatives

/ar:ar-status — Experiment DashboardShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.Data & AI · MITAnalytics dashboardTurn a LinkedIn Analytics export into an interactive dark-themed React dashboard plus a written strategic analysis with 5 data-backed content recommendations. Reads every sheet in the export, builds charts for engagement trend, follower growth, post performance scatter, day-of-week heatmap, and audience breakdown. Use this skill whenever the user says "analyse my linkedin", "linkedin analytics", "build my dashboard", "review my performance", or uploads a LinkedIn Analytics export file. Requires the user's LinkedIn Analytics export (xlsx) as input.Creator · MITEarnings Preview SkillGenerate a pre-earnings briefing for any stock using Yahoo Finance data. Use this skill whenever the user wants to prepare for an upcoming earnings report, understand what analysts expect, review a company's beat/miss track record, or get a quick overview before an earnings call. Triggers include: "earnings preview for AAPL", "what to expect from TSLA earnings", MSFT reports next week", "earnings preview", "pre-earnings analysis", what are analysts expecting for NVDA", "earnings estimates for", will GOOGL beat earnings", "earnings beat/miss history", upcoming earnings", "before earnings", "earnings setup", consensus estimates", "earnings whisper", "EPS expectations", what's the street expecting", "earnings season preview", any mention of preparing for or previewing an earnings report, or any request to understand expectations ahead of a company's earnings date. Always use this skill when the user mentions a ticker in context of upcoming earnings, even if they don't say "preview" explicitly. · MITBenchmark checklistVet a perf measurement (limiter, tuning, limits, errors, repeatability, relevance, and whether the work happened) before you report or act on it. Use when you run a benchmark or report a speedup or regression you measured.Data & AI · MIT