Gh Bot Comment
jetstreamapp/jetstream
Post GitHub PR/issue comments, reviews, and review replies as the Jetstream bot account instead of the user's personal account.
MUST activate when the user wants to build, create, or generate a React application, React app, web application, single-page application (SPA), or frontend application — even if no project files…
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .claude/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .claude/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .agents/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .agents/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .cursor/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .cursor/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/sf-skills.git --path skills/experience-ui-bundle-app-coordinate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .gemini/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .gemini/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .github/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .github/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/sf-skills experience-ui-bundle-app-coordinate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/experience-ui-bundle-app-coordinate .opencode/skills/experience-ui-bundle-app-coordinate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "experience-ui-bundle-app-coordinate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-ui-bundle-app-coordinate into .opencode/skills/experience-ui-bundle-app-coordinate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-ui-bundle-app-coordinate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
experience-ui-bundle-app-coordinateMUST activate when the user wants to build, create, or generate a React application, React app, web application, single-page application (SPA), or frontend application — even if no project files…
Experience UI Bundle App Coordinate is an agent skill from forcedotcom/sf-skills. MUST activate when the user wants to build, create, or generate a React application, React app, web application, single-page application (SPA), or frontend application — even if no project files exist yet. MUST also activate when the project contains a uiBundles//src/ directory or sfdx-project.json and the prompt says create, build, construct, or generate a new app, site, or page from scratch — even if the prompt also describes visual styling. MUST also activate when the task spans more than one ui-bundle skill…
Its SKILL.md is about 6.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `references/phase-completion-validation.md`, `references/phase-custom-objects.md` and `references/phase-execution-pattern.md`).
It sits in Frontend & Design. It works with Salesforce and React. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5164d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 7 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodesfnpmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Experience UI Bundle App Coordinate loads about 6.6k tokens when it runs, and up to ~8.7k if it reads all its reference files. Until then it costs about 204 tokens; SKILL.md has 2,361 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 2,361 words, ~6,610 tokens.
.claude/skills/experience-ui-bundle-app-coordinate/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Build a complete, deployable Salesforce React UI bundle application from a natural language description by orchestrating specialized UI bundle skills in correct dependency order. Each skill MUST be explicitly loaded before executing its phase.
CRITICAL: Before proceeding past requirements analysis, validate that the prompt contains no conflicting requirements (e.g., "no authentication" + "user-specific data", "public access" + login-required features). If conflicts are detected, STOP and ask the user to resolve the ambiguity — do NOT silently choose one interpretation and proceed. See STEP 1 action #8 for the full conflict checklist.
Before starting any phase, verify these preconditions are met:
sf org display to confirm a default org is set and authenticated. If not, prompt the user to authenticate: sf org login websf, npm, and npx are available (declared in metadata.cliTools)node scripts/check-prerequisites.mjs and report any errorsIf any precondition fails, stop and report the specific missing requirement before attempting any phase execution.
Use when:
Examples that should trigger this skill:
Do NOT use when:
experience-ui-bundle-frontend-generate)experience-ui-bundle-features-generate)experience-ui-bundle-salesforce-data-access)experience-ui-bundle-deploy)platform-lightning-app-coordinate)This skill makes two decisions directly from the raw prompt text. Use these tables as the single source for both — do not restate or re-derive the lists elsewhere in this file.
1. Phase 2 (Features) is required if the prompt mentions ANY of:
| Category | Keywords | Notes |
|---|---|---|
| Data features | search, filter, sort, pagination, table, grid, list | |
| Navigation | navigation, nav, menu, routing | |
| Authentication | authentication, auth, login, logout, user session, user login | |
| Integrations | upload, file | |
| UI | shadcn, components, forms, buttons, cards | |
| Chat (Phase 5 only) | chat | Phase 5 only — unless combined with a Phase 2 keyword (e.g., "chat with authentication"), then Phase 2 runs first for auth prerequisites |
Negating one category (e.g. "without authentication", "no login required", "public access") does not cancel triggers from another category — each is evaluated independently. Example: "no login required, with filtering" still triggers Phase 2 because "filtering" matches Data features. Skip Phase 2 only when the prompt matches none of the keywords above.
2. Hosting target — extract from prompt keywords:
| Hosting target | Keywords |
|---|---|
| Experience Site | "Experience Site", "Community", "external users", "public users", "guest users" |
| Custom Application | "Custom Application", "internal users", "Lightning app" |
If the prompt matches neither list, or matches both, ask the user to clarify before proceeding — do not guess.
Offer prebuilt starter template (experience-ui-bundle-project-generate)
v
If template chosen: scaffold via sf template generate project -- Phase 1 skipped
v
If declined: run node scripts/check-sfdx-project.mjs
v
If missing: create sfdx-project.json
v
Verify project directory initializedOffers a faster, less error-prone starting point before building from scratch. If no template is used, ensures an SFDX project exists before attempting to generate a UI bundle — without this, sf template generate ui-bundle will fail with a hard error. Always check first — do not assume the project structure exists.
Action: Load experience-ui-bundle-project-generate and offer the two starter templates. If declined, run node scripts/check-sfdx-project.mjs; on error, create the missing sfdx-project.json before proceeding.
Determine hosting target (Experience Site / Custom Application)
v
UI Bundle scaffold (sf template generate ui-bundle --template reactbasic)
v
Install dependencies (npm install)
v
Bundle metadata (uibundle-meta.xml with <target>, ui-bundle.json)
v
CSP Trusted Sites (if external domains needed)Creates the UI bundle directory structure, meta XML (including hosting target), and optional routing/headers config. CRITICAL: Hosting target must be determined FIRST because the metadata skill requires <target> in Phase 1. All subsequent phases require the scaffold to exist.
Prune unused scaffold when the prompt is constraining. The reactbasic template ships a full shadcn component set, GraphQL tooling (codegen.yml, .graphqlrc.yml, src/api/graphqlClient.ts, graphql:* npm scripts), and test infra (playwright.config.ts, vitest.config.ts, vitest.setup.ts) regardless of what the prompt asked for. If the prompt explicitly limits scope (e.g. "skip any features or integrations", "just scaffold and build X", "no need to install dependencies") and Phase 2 and/or Phase 3 are consequently skipped, remove the scaffold pieces those phases would have owned before Phase 4 runs:
src/components/ui/ except the ones Phase 4's pages actually import; remove unused example/demo components.codegen.yml, .graphqlrc.yml, src/api/graphqlClient.ts, graphql:schema/graphql:codegen scripts from package.json, and any hooks/ data-fetching stubs (e.g. useAsyncData.ts) the template pre-seeded.playwright.config.ts/vitest.* only if the prompt implies testing; otherwise remove them too.README.md to describe the actual app built, not the generic template boilerplate — or delete it if the prompt says to do minimal work only.Deleting a file is only half the job — every reference to it must be removed in the same pass, or you trade over-generation for broken cross-file consistency (worse: a dangling import is a functional break, not just scope creep). Concretely, after deleting any of the above:
vite.config.ts — remove the vite-plugin-graphql-codegen import and its codegen({ configFilePathOverride: ... }) plugin block if codegen.yml was deleted; remove the test: config block (setupFiles, coverage, etc.) if vitest.* was deleted.package.json — remove now-unused dependencies (vite-plugin-graphql-codegen, @graphql-codegen/*, playwright, vitest, etc.) and their npm scripts, not just the config files.useAsyncData, graphqlClient) must have that import and its usage removed or replaced — never leave an import pointing at a file that no longer exists.codegen.yml while still emitting .graphqlrc.yml) — decide scope once per concern and apply it consistently across every file that touches that concern.node scripts/check-dangling-refs.mjs <deleted-basename> for each deleted file and report any errors.Search project code (src/) for existing implementations
v
Install dependencies (npm install)
v
Search, describe, and adopt features (auth, shadcn, search, navigation, GraphQL)
v
Resolve conflicts (two-pass: --on-conflict error, then --conflict-resolution)
v
Integrate __examples__ files into target files (verify build succeeds), then delete themLoads the feature skill to install pre-built packages, or adopt ones the template already shipped — never build your own version of a catalog feature. See "Prompt Classification Keywords" for triggers and negative-phrasing handling.
Skip only for a minimal "hello world" with no interactive features; pre-shipped features still require this phase.
See references/phase-custom-objects.md for Phase 2.5 (Custom Objects) details.
Ground every entity/field against the org (per experience-ui-bundle-salesforce-data-access)
v
Generate queries/mutations FROM the verified names (never from guessed fields)
v
Generate types (npm run graphql:codegen) and wire into components
v
Validate and test (npx eslint, ask user before testing mutations)Sets up the data layer using the @salesforce/platform-sdk Data SDK (createDataSDK().graphql).
GraphQL is preferred for record operations; REST for Connect, Apex, or UI API endpoints. The
experience-ui-bundle-salesforce-data-access skill owns the grounding + authoring workflow — load it and follow
it; do not substitute a local-schema grep or guessed field names. Grounding happens against the
live org, so it does not require a local schema.graphql to be present. If Phase 2.5 created a
new object, it must be deployed before this phase's grounding step can find it.
Layout, navigation, header, and footer (appLayout.tsx)
v
Pages (routed views)
v
Components (widgets, forms, tables)Builds the React UI. References the data layer from Phase 3 and the features from Phase 2. Must replace all boilerplate and placeholder content.
Agentforce chat widget (if requested)
File upload API (if requested)These are independent and can be executed in parallel if both are needed.
Org authentication
v
Pre-deploy UI bundle build (npm install + npm run build)
v
Deploy metadata
v
Post-deploy configuration (permissions, profiles, named credentials, connected apps, custom settings, flow activation)
v
Import data (if data plan exists)
v
Fetch GraphQL schema and run codegen
*(Re-fetches schema from the deployed org -- required because the remote schema may differ from the local one used in Phase 3. Guard against an empty or stale result -- Salesforce Edge caching can briefly serve the pre-deploy schema; re-fetch/retry before trusting it as empty and before running codegen)*
v
Final UI bundle build (rebuilds with the deployed schema)Follows the canonical 7-step deployment sequence. Must deploy metadata before fetching schema. Must assign permissions before schema fetch.
Deploy the hosting target infrastructure determined in Phase 1. Choose one of the following based on the app's audience:
Resolve site properties (siteName, appDevName, etc.)
v
Generate site metadata (Network, CustomSite, DigitalExperience)
v
Deploy site infrastructureCreates the Digital Experience site that hosts the UI bundle. Use when the user wants a public-facing or authenticated site URL for external users. Note: The <target>ExperienceSite</target> was already set in meta XML during Phase 1.
Resolve app properties (appName, appNamespace, appLabel)
v
Generate CustomApplication metadata (applications/*.app-meta.xml)
v
Deploy custom applicationCreates a Custom Application entry in the Lightning App Launcher. Use when the app is for internal users accessing it within Lightning Experience. Note: The <target>CustomApplication</target> was already set in meta XML during Phase 1.
Before analyzing requirements or scaffolding, check whether a prebuilt starter template fits — it is faster and less error-prone than building from scratch.
experience-ui-bundle-project-generate. It offers two minimal React starter
projects (internal / employee-facing and external / customer-facing) and, if the user picks one,
generates it into the project directory with sf template generate project.Do not skip this step silently — always offer the choice at the start of a from-scratch app build.
Actions:
The plan MUST contain an explicit grounding step before any query authoring. Do not list guessed object/field names as settled facts and defer verification to codegen. The data-access portion of the plan must read: "verify these entities/fields against the org (via
experience-ui-bundle-salesforce-data-access), then author queries from the verified names." A plan that authors queries first and codegens later is the failure mode that produces guessed fields and hand-stubbed types — do not emit it.
Before proceeding to Output (Build Plan), validate:
ERROR: Conflicting requirements detected:
- [describe the specific conflict, e.g., "The prompt requires 'no authentication' while also requiring a 'My Cases' view scoped to the current user's identity"]
RESOLUTION NEEDED: Please clarify:
- [specific question, e.g., "Should the app require login (removing the 'no authentication' requirement), or should all data be public (removing the user-scoped view)?"]Output: Build Plan
UI Bundle App Build Plan: [App Name]
SCAFFOLDING:
- App name: [PascalCase name]
- Hosting target: [Experience Site / Custom Application] **REQUIRED**
- Routing: [SPA rewrites, trailing slash config]
- External domains: [domains needing CSP registration]
FEATURES:
- [list of features to install: auth, shadcn, search, navigation, etc.]
CUSTOM OBJECTS (if applicable):
- New objects/fields: [list any object the org does not already have, with its fields -- delegate to platform-custom-object-generate, not authored here]
DATA ACCESS:
- Objects: [Salesforce objects to query/mutate]
- Grounding: [verify each object + its fields against the org via experience-ui-bundle-salesforce-data-access BEFORE authoring — list the objects/fields to confirm, not assumed-correct names]
- Queries: [GraphQL queries to author FROM the verified names]
- REST endpoints: [only where GraphQL/uiapi genuinely cannot cover it — not as a fallback for fields that were hard to verify]
UI:
- Layout: [description of app shell/navigation]
- Pages: [list of pages with routes]
- Components: [key components per page]
- Design direction: [aesthetic/style intent]
INTEGRATIONS (if applicable):
- Agentforce chat: [yes/no, agent ID if known]
- File upload: [yes/no, record linking pattern]
DEPLOYMENT:
- Target org: [org alias if known]
SKILL LOAD ORDER:
0. experience-ui-bundle-project-generate (offer a prebuilt template first; if chosen, Phase 1 scaffolding is skipped; if declined, run the Bootstrap check for an existing SFDX project -- no skill load required)
1. experience-ui-bundle-metadata-generate (determines hosting target FIRST)
2. experience-ui-bundle-features-generate (if features needed)
2.5. platform-custom-object-generate (if the prompt requires a new custom Salesforce object the org doesn't have -- MUST complete and deploy before step 3)
3. experience-ui-bundle-salesforce-data-access (if data access needed)
4. experience-ui-bundle-frontend-generate
5a. experience-ui-bundle-agentforce-client-generate (if chat requested)
5b. experience-ui-bundle-file-upload-generate (if file upload requested)
6. experience-ui-bundle-deploy
7a. experience-ui-bundle-site-generate (if Experience Site requested -- external users)
7b. experience-ui-bundle-custom-app-generate (if Custom Application requested -- internal users)Execute each phase sequentially following the standard pattern in references/phase-execution-pattern.md. CRITICAL: Always load the skill before executing. Skipping or reordering phases produces broken apps.
Phase 0 -- Template Offer & Bootstrap
experience-ui-bundle-project-generate, offer templates. If chosen: skip Phase 1, continue at Phase 2. If declined: run node scripts/check-sfdx-project.mjs, create project if missing.Phase 1 -- Scaffolding (skip if template used in Phase 0)
node scripts/check-sfdx-project.mjs passesexperience-ui-bundle-metadata-generate. Determine hosting target FIRST. Run sf template generate ui-bundle --template reactbasic, configure meta XML with <target>.node scripts/check-phase-1-complete.mjs passesPhase 2 -- Features (run on any feature keyword, even if pre-installed — see "Prompt Classification Keywords")
experience-ui-bundle-features-generate. Install features, integrate examples. Verify with npm run build.Phase 2.5 -- Custom Objects (skip if org has all needed objects)
references/phase-custom-objects.md and follow execution steps.Phase 3 -- Data Access (skip if no Salesforce data)
experience-ui-bundle-salesforce-data-access. Fetch schema, ground entities, generate queries/mutations. Verify with npx eslint.Phase 4 -- UI (ALWAYS REQUIRED)
node scripts/check-phase-1-complete.mjs passesexperience-ui-bundle-frontend-generate. Build layout, pages, components. Replace all boilerplate.node scripts/check-phase-4-complete.mjs passesPhase 5 -- Integrations (skip if not requested)
experience-ui-bundle-agentforce-client-generate (5a) and/or experience-ui-bundle-file-upload-generate (5b) as needed.Phase 6 -- Deployment
node scripts/check-phase-6-ready.mjs passesexperience-ui-bundle-deploy. Follow 7-step sequence. Prefer scripts/org-setup.mjs if available.Phase 7a -- Experience Site (external users)
node scripts/check-hosting-target.mjs outputs "ExperienceSite"experience-ui-bundle-site-generate. Deploy site infrastructure.Phase 7b -- Custom Application (internal users)
node scripts/check-hosting-target.mjs outputs "CustomApplication"experience-ui-bundle-custom-app-generate. Deploy app metadata.Before proceeding to STEP 3 (Final Summary), validate that all required phases were executed. See references/phase-completion-validation.md for the full critical/warning checklist and exact error/warning text to report.
After all phases complete, present a build summary:
UI Bundle App Build Complete: [App Name]
PHASES COMPLETED:
[x] Phase 0: Template Offer & Bootstrap -- [template used: <name> / declined; SFDX project verified/created]
[x] Phase 1: Scaffolding -- [app name] UI bundle created with hosting target [Experience Site / Custom Application]
[x] Phase 2: Features -- [list of features installed, or "skipped"]
[x] Phase 2.5: Custom Objects -- [list of objects/fields created and deployed, or "skipped -- no new schema needed"]
[x] Phase 3: Data Access -- [list of entities wired up]
[x] Phase 4: UI -- [count] pages, [count] components
[x] Phase 5: Integrations -- [list or "none"]
[x] Phase 6: Deployment -- deployed to [org]
[x] Phase 7: Hosting Target -- [Experience Site URL / Custom Application name] **(never "skipped" -- Phase 1 requires a target, so exactly one of 7a/7b always runs)**
FILES GENERATED:
[list key files and their paths]
NEXT STEPS:
[any manual steps the user should take]Before presenting the build as complete, verify:
<target>ExperienceSite</target> or <target>CustomApplication</target> (never left unset), and the matching Phase 7a or 7b infrastructure was generated and deployed -- not skippednode_modules/ exists and package.json has expected packagesnpm run build produces dist/ with no errorsdist/ contains index.html, JS/CSS bundles, and assets (not just an empty directory)npx eslint src/ reports 0 errorsappLayout.tsx has real nav items matching created pages@salesforce/platform-sdk Data SDK (createDataSDK().graphql), with all entities/fields grounded against the org — not guessed (if data access phase was executed)Never build UI before installing features. Never deploy before building. Dependencies are strict.
Every generated app must feel purpose-built. Replace "React App" titles, "Vite + React" placeholders, and all default content with real app-specific text and branding.
Follow the design thinking and frontend aesthetics guidance from experience-ui-bundle-frontend-generate. Every app should have a clear visual direction -- not generic defaults.
© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references) in skills/experience-ui-bundle-app-coordinate of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Experience UI Bundle App Coordinate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Experience UI Bundle App Coordinate this skillforcedotcom/sf-skills | 1.1k | — | ~6.6k | Automated safety check: Pass | Apache-2.0 | |
| Gh Bot Commentjetstreamapp/jetstream | 125 | — | ~616 | Automated safety check: Pass | Custom licence | |
| Salesforce Component Standardsgithub/awesome-copilot | 40k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Web Artifacts Builderanthropics/skills | 180k | 41 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| React Doctormakeplane/plane | 61k | 12 repos | ~657 | Automated safety check: Pass | AGPL-3.0 | |
| React Router Developmentremix-run/react-router | 57k | 1 repos | ~1.5k | Automated safety check: Pass | MIT |
jetstreamapp/jetstream
Post GitHub PR/issue comments, reviews, and review replies as the Jetstream bot account instead of the user's personal account.
github/awesome-copilot
Quality standards for Salesforce Lightning Web Components (LWC), Aura components, and Visualforce pages.
anthropics/skills
Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.
makeplane/plane
Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.
remix-run/react-router
Guides work on React Router apps by first identifying whether the app uses Framework, Data or Declarative mode, then loading the matching reference and the installed package docs.
ChrisWiles/claude-code-showcase
Sets patterns for React interfaces: when to show loading spinners or skeletons, how to surface errors, how to disable buttons during async work and how to handle empty lists.
forcedotcom/sf-skills
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.
forcedotcom/sf-skills
Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.
forcedotcom/sf-skills
Lightning Web Components with PICKLES methodology and 165-point scoring.
Works with
Categories
MUST activate when the user wants to build, create, or generate a React application, React app, web application, single-page application (SPA), or frontend application — even if no project files…. Experience UI Bundle App Coordinate is an agent skill from forcedotcom/sf-skills. MUST activate when the user wants to build, create, or generate a React application, React app, web application, single-page application (SPA), or frontend application — even if no project files exist yet.
Experience UI Bundle App Coordinate fits situations like: generate a React application; web application; single-page application (SPA); frontend application — even if no project files exist yet.
Run `npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a claude-code`. Or copy the skill folder (skills/experience-ui-bundle-app-coordinate in forcedotcom/sf-skills) into .claude/skills/experience-ui-bundle-app-coordinate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a codex`. Or copy the skill folder (skills/experience-ui-bundle-app-coordinate in forcedotcom/sf-skills) into .agents/skills/experience-ui-bundle-app-coordinate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill experience-ui-bundle-app-coordinate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/experience-ui-bundle-app-coordinate, .gemini/skills/experience-ui-bundle-app-coordinate, .github/skills/experience-ui-bundle-app-coordinate and .opencode/skills/experience-ui-bundle-app-coordinate in your project.
Going by SKILL.md and its folder, Experience UI Bundle App Coordinate needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node, sf, npm and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Experience UI Bundle App Coordinate is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.6k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Experience UI Bundle App Coordinate: Gh Bot Comment (jetstreamapp/jetstream, 125 stars), Salesforce Component Standards (github/awesome-copilot, 40k stars), Web Artifacts Builder (anthropics/skills, 180k stars) and React Doctor (makeplane/plane, 61k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,060 GitHub stars. The repository holds 251 skills in this directory. The repository was last updated on October 7, 2026.
Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.