Build and iteratively improve a user-owned local XOPC app while preserving its stable extension identity, UI sandbox, and Phase 1 capability boundary.
Resources
2Install
npx skillscat add xopcai/xopc/build-xopc-local-app Install via the SkillsCat registry.
SKILL.md
Build a local XOPC app
Use this skill inside a Project created for a Local App. Treat APP_BRIEF.md, .xopc/app.json, andxopc.extension.json as the app contract. Convert the user's latest request into a small observable UI
change, preserve working behaviour, and leave the draft previewable after every iteration.
Required workflow
- Read
APP_BRIEF.md,.xopc/app.json,.xopc/acceptance.json,xopc.extension.json, and the
currentui/implementation. - Restate the requested behaviour as observable acceptance checks. Add or update a declarative
scenario in.xopc/acceptance.jsonfor each critical journey changed by the request. - Edit the smallest coherent set of files. Phase 1 apps are UI-only; do not add backend routes,
shell execution, network access, or undeclared permissions. Never edit the manifestmainfield
or.xopc/runtime/local-ui.js; xopc owns that trusted gateway runtime entry. - Keep the extension
id, pagepath, and UIentrypointstable. Do not rename them during an
iteration. - Run
node "$XOPC_LOCAL_APP_SKILL_DIR/scripts/validate-local-app.mjs" .when that environment
variable is available. Otherwise validate the same contract directly. - Report what changed, what was verified, and whether the draft is ready for the user to install.
Interface constraints
- Use semantic HTML, keyboard-accessible controls, visible focus states, and
aria-livefor async
feedback. - Support light and dark color schemes without assuming access to the host DOM.
- Keep scripts and styles local. The preview CSP blocks network access and inline scripts.
- Use browser storage only for user-owned local preferences or app data.
- Ask before expanding permissions. A permission change must be visible in the install review.
- Mark scenario targets with stable
data-xopc-test-idvalues. Never encode CSS selectors or
executable JavaScript in acceptance scenarios.
For the exact Phase 1 file contract and completion checklist, read references/app-contract.md.