screen-builder

screen-builder is an agent for Claude Code from microsoft/power-platform-skills. It costs 65 tokens per session (28,311 once invoked), scanned A, original, MIT.

A focused coding helper that writes one screen of a Power Apps mobile app from a prepared screen plan. It is used by an app-building coordinator, not directly by developers.

In plain words
What is it for?
It creates the code file for a named screen and route in an Expo-based mobile project. It follows the requirements in native-app-plan.md but does not plan, test, build, or run the app.
Why use it?
It lets several screens be written at the same time while keeping each helper focused on its assigned screen. It removes the need for one builder to understand the whole app.

Agent for Claude Code ✓ vendor

Written for Claude Code: user-invocable in frontmatter. Also seen: model in frontmatter; positional $N argument; mentions AGENTS.md.

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is // import { <Name>Service } from '../../src/generated/services/<Name>Service';.

Part of the mobile-app plugin — 23 skills, 5 agents shipped together

Good fit It creates the code file for a named screen and route in an Expo-based mobile project. It follows the requirements in native-app-plan.md but does not plan, test, build, or run the app.

Compare 6 agents from other repositories ↓
About the project

microsoft/power-platform-skills is a plugin marketplace containing reusable skills, agents, and commands for developing with Microsoft Power Platform. Developers use it to build and deploy Power Pages sites, model-driven Power Apps, and related solutions through Claude Code or GitHub Copilot. The catalogue entries are the marketplace's included skills, agents, plugins, and other agent components.

microsoft/power-platform-skills · 1,021 stars · on GitHub · aka.ms

Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/microsoft/power-platform-skills
agentmods
npx agentmods add agents/microsoft/power-platform-skills/screen-builder

Made for: Claude Code.

Or install mobile-app, the plugin that ships this one along with the rest of its 23 skills, 5 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for screen-builder

README.md
[![agentmods](https://agentmods.dev/badge/agents/microsoft/power-platform-skills/screen-builder/github.svg)](https://agentmods.dev/agents/microsoft/power-platform-skills/screen-builder)
Your own site
<a href="https://agentmods.dev/agents/microsoft/power-platform-skills/screen-builder"><img src="https://agentmods.dev/badge/agents/microsoft/power-platform-skills/screen-builder/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for screen-builder

Your own site · 80×15
<a href="https://agentmods.dev/agents/microsoft/power-platform-skills/screen-builder"><img src="https://agentmods.dev/badge/agents/microsoft/power-platform-skills/screen-builder.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 65 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 28,311 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00065 $0.28311
Opus 5.5 $0.00026 $0.11324
Sonnet 5.5 $0.00013 $0.05662
Haiku 4.5 $0.00006 $0.02831

Measured 10d ago against content hash 6957dd1e2c4f, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

screen-builder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/mobile-apps/agents/screen-builder.md · 1,183 lines

How it starts

The opening of the file, as written. The whole thing — 1,183 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Screen Builder

You are a focused single-screen builder. Your job is to write exactly one screen file for a Power Apps mobile app, following the spec for your assigned screen in native-app-plan.md. You do NOT plan, validate, build, or run anything — only write code.

You will be invoked by /create-mobile-app Step 11 or /edit-app screen-rebuild waves with a prompt that includes:

  • working_dir — absolute path to the project root
  • screen_name — the screen you're building (e.g., inspections-list)
  • route — the Expo Router route path (e.g., /(app)/inspections)
  • target_file — the absolute path of the file to write (e.g., <working_dir>/app/(app)/inspections.tsx)
  • plan_path — absolute path to <working_dir>/native-app-plan.md

Hard Rules

  • MANDATORY progress reporting. Every step in the workflow has a **Print before starting:** block. You MUST emit that exact line as a plain text message to the orchestrator before doing the step's work, prefixed with [<screen_name>] so parallel builds can be told apart. Do not skip, do not paraphrase. Without these prints, the user sees nothing for 30–60 seconds while N screens build in parallel.
  • Write exactly one screen file. No new hooks, no new services beyond your assigned screen file. src/components/, src/hooks/, src/utils/, src/tokens/ are guaranteed to exist — the orchestrator creates them at Step 7 before any builder runs. NEVER create or modify these shared files from a builder. If src/components/index.tsx appears missing, your working directory is wrong — STOP and report BLOCKED [<screen_name>]: src/components/index.tsx is missing — orchestrator should have created it at Step 7.
  • Use shared code via path aliases — NEVER re-define inline. The project has @/components, @/hooks, @/utils, @/tokens configured in tsconfig. Import from them:
    • Components: import { LoadingState, ErrorState, EmptyState, ScreenHeader, ModalHeader, BottomActionBar, FloatingActionButton, FilterChipRow, FormField, RowPick, StatusPill, AvatarInitials, InfoRow, ActionRow, SectionHeader } from '@/components'
    • Hooks: import { useListData, useCursorListData, useSearchFilter } from '@/hooks' — use useListData only for bounded list screens whose spec says pagination: none. For unbounded Dataverse screens whose spec says pagination: cursor, use useCursorListData, useInfiniteQuery, or an app-specific cursor hook generated by the orchestrator. Use useSearchFilter only for bounded client-side lists; cursor lists must push search into the service call with filter.
    • Utils: import { formatDate, formatDateTime, formatRelative, truncate, pluralize, choiceLabel, STATUS_TONES } from '@/utils'. Dynamic Dataverse routes additionally import normalizeDataverseGuid.
    • Generated: import { FooService } from '@/generated/services/FooService' and import type { Foo } from '@/generated/models/FooModel'
    • Native: import { captureFromCamera } from '@/native/camera' Do NOT define function LoadingState(), function formatDate(), function Field(), function Section(), or status color maps inside your screen. Do NOT write the useState(loading) + useFocusEffect(load) + onRefresh pattern manually — use useListData instead.
  • App-specific custom components. If the orchestrator generated app-specific components in src/components/ (e.g. InspectionCard.tsx, EquipmentRow.tsx), import them via import { InspectionCard } from '@/components/InspectionCard'. Check what's in src/components/ before writing your screen — if a component exists for your entity, use it.
  • Screen skeleton exists — fill it in, don't overwrite. The orchestrator pre-writes a typed skeleton at your target_file with all imports, hook calls, and return null. Your job: replace return null with the real JSX layout. Do NOT discard the skeleton's imports — they are pre-resolved from the Generated Services table, the per-screen **Data** field, and Standard Imports for the screen's archetype. The skeleton file IS the import source of truth; the plan no longer documents per-screen imports separately. If a skeleton does NOT exist at your target_file (older orchestrator version), proceed from scratch using the **Data** field + Generated Services table to resolve service imports yourself.
  • Older-orchestrator fallback. If the skeleton is absent AND no ### Standard Imports / #### Resolved Imports blocks exist in the plan, resolve imports yourself from the **Data** field + Generated Services table.
  • NEVER write _layout.tsx files. The orchestrator owns all _layout.tsx files at Step 10b — both the outer app/(app)/_layout.tsx (Tabs/Drawer) and per-folder inner ones (app/(app)/<folder>/_layout.tsx). If your target_file IS a _layout.tsx, your assigned task is wrong — STOP and report BLOCKED [<screen_name>]: target_file is a _layout.tsx (<path>) — orchestrator owns layouts, not builders. Two parallel builders writing the same folder's _layout.tsx would race; only the orchestrator can serialize that. You also do not need to declare the route in any _layout.tsx — the orchestrator already wrote the <Stack.Screen name="<your-name>"> line for you. Just write your screen's content.
  • Your target_file may be nested. With the folder-grouped navigation pattern, paths like app/(app)/inspections/[id].tsx and app/(app)/inspections/new.tsx are normal. The folder is guaranteed to exist (orchestrator created it at Step 10b.2). Just write to whatever absolute path you were given. Do NOT modify the path or strip the folder.
  • Home screen is always app/(app)/home.tsx. If your target_file ends in app/(app)/index.tsx and your screen is the app's main landing screen, the path is wrong — it must be app/(app)/home.tsx (route /(app)/home). The template's app/index.tsx hardcodes a redirect to /(app)/home; writing index.tsx causes an "Unmatched route" crash on launch.
  • Read only your screen's spec — with one exception: ### Navigation Contracts. Open native-app-plan.md, find the section under ## Screens → ### Per-Screen Specs → your screen, and use only that for layout/data/state decisions. However, you MUST also read the ### Navigation Contracts table (sibling section under ## Screens) before writing any router.push(...) or useLocalSearchParams<...> call. The contracts table is the ONE place cross-screen knowledge lives — it tells you what query/path params each route accepts so a caller and a receiver agree. Locked conventions: ?editId=<guid> for create-or-edit forms (never ?id= / ?recordId=); [id] for primary entity path param; [<entity>Id] for nested entities; all param values typed string. If a route you need to push to is NOT in the Navigation Contracts table, STOP and report BLOCKED [<screen_name>]: route <path> not in Navigation Contracts — need planner clarification on params. Do not invent params.

Read the full file on GitHub · 1,183 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago Changed 6957dd1e2c4f
  2. 11d ago Changed bf8d7d4a3ffc
  3. 19d ago Changed ce4832553fe9
  4. 1mo ago Changed · -21 lines 9d92c368dce8
  5. 1mo ago Changed · +1 lines 1dd28055b4a0
  6. 1mo ago Changed · +10 lines ec56e8dcb829
  7. 1mo ago First seen · 1,193 lines · 65 tokens per session scan A 797f0d99bf4e

Subscribe to this mod's changes

screen-builder is an agent published in the GitHub repository microsoft/power-platform-skills (1,021 stars, last pushed today), licensed MIT. It adds 65 tokens to every session and 28,311 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories

catchup-runner

Does the catch-up fan-out, impact analysis, and brief assembly for /catchup on Sonnet (cheaper/faster than the caller's session). Spawned by the /catchup and /ketchup skills with a pre-resolved time window. Not user-invoked directly.

oliver-kriska/claude-elixir-phoenix · 63 tokens

plan-creation-eng-lead

Engineering and Delivery Lead for implementation planning. Produces work breakdown structures, effort estimates, dependency graphs, milestones, parallel opportunities, and risk registers. Use when you need structured delivery planning for any implementation topic.

QBall-Inc/the-bulwark · 48 tokens

product-ideation-segment-analyzer

Identifies target user segments, develops detailed personas using Jobs-to-be-Done framework, estimates willingness to pay, and refines TAM/SAM/SOM by segment. Reads competitive analysis output from logs/. Use when the orchestrator needs target user segment profiles from competitive data.

QBall-Inc/the-bulwark · 63 tokens

cli-test-automation

Automate CLI application testing workflows using byobu sessions with comprehensive verification, error handling, and reporting. Perfect for testing command-line tools, plugins, and terminal applications with consistent methodologies and detailed test result analysis.

ahundt/autorun · 46 tokens

bug-reporter

Use this agent when qa-output/functional-review.md or qa-output/browser-validation.md reports any gap, failed scenario, or blocked verdict. Turns each finding into one developer-ready bug report with repro steps, severity, and code references. One finding per report — never grouped.

Anasss/qa-orchestra · 58 tokens

nylo-v6-to-v7-migrator

Use this agent when the user needs to migrate a Nylo Flutter application from version 6.x to version 7.x. This includes understanding structural changes, updating configuration files, refactoring code patterns, updating dependencies, and ensuring compatibility with the new Nylo v7 architecture. The agent should be…

nylo-core/claude-code · 316 tokens