name: Development description: Frontend development router. Load deeper skills before editing metadata: loaded: true placement: system
Use this skill first for any development task. This is a routing skill: it tells you which deeper development skills to load next. Do not rely on this file alone as the full contract.
When the user wants to extend the system with a reusable interface rather than a space widget, prefer a custom routed page module plus an optional ext/panels/*.yaml dashboard entry instead of pushing everything into spaces.
Hard Boundary
- This skill set only authorizes development in
app/. - Do not edit
server/,commands/, orpackaging/from this skill set. - Load
development/backend-referenceonly to understand backend contracts that the frontend calls into. - For broad architecture orientation, load the top-level
documentationskill and use its built-in docs map before diving into narrower docs. - Before writing files, call
await space.api.userSelfInfo()and derive writable roots fromusername,managedGroups, and_adminmembership ingroups. - Never add third-party CORS proxy services in frontend code or widgets. Load
development/frontend-runtimeand use runtime-managedfetch(...),space.fetchExternal(...), orspace.proxy.buildUrl(...)instead. - Always update the relevant
AGENTS.mdfiles and the matching docs under/mod/_core/documentation/docs/in the same session as your code changes.
Development Subskills
development/modules-routing
Load this first for routed feature work, dashboard panels, route paths, router anchors, and deciding whether a feature should be a custom page instead of a space.
Current panel helper:
- Import
/mod/_core/skillset/ext/skills/development/modules-routing/panel-tools.js - Use
listPanels(),findPanel(target),resolvePanelRoutePath(target),createPanelHref(target), andgoToPanel(target)when the task needs to inspect or navigate the current user's visible dashboard panels
development/frontend-runtime
Load for framework-backed pages, Alpine stores, space.* runtime usage, shared visual rules, and general frontend structure.
development/extensions-components
Load for ext/html/, ext/js/, x-extension, x-component, x-context, and layered override behavior.
development/app-files-apis
Load for space.api, app-file storage paths, file_paths, userSelfInfo, and permission-aware frontend reads or writes.
development/layers-ownership
Load for L0 or L1 or L2, group and user structure, permissions, writable roots, and override order.
development/skills
Load for authoring or updating onscreen chat-agent skills under ext/skills/, including how to keep skills short by importing helper scripts.
development/backend-reference
Load for read-only backend architecture, API families, auth, and module-resolution behavior when frontend work depends on an existing server contract.
Recommended Load Order
New first-party routed feature
await space.skills.load("development/layers-ownership")await space.skills.load("development/modules-routing")await space.skills.load("development/extensions-components")await space.skills.load("development/frontend-runtime")await space.skills.load("development/app-files-apis")if the feature stores user or group data
New custom page instead of a space
await space.skills.load("development/modules-routing")await space.skills.load("development/extensions-components")await space.skills.load("development/frontend-runtime")await space.skills.load("development/app-files-apis")if the page needs frontend discovery of registered panels or other permission-aware app data
New or updated chat-agent skill
await space.skills.load("development/skills")await space.skills.load("development/layers-ownership")await space.skills.load("development/extensions-components")if the skill must explain extension seams
Task that consumes existing backend APIs from the frontend
await space.skills.load("development/app-files-apis")await space.skills.load("development/backend-reference")
Final Rule
Before changing a concrete module, also read the closest owning AGENTS.md in that module's subtree and the relevant documentation page when one exists. The development skills are the cross-cutting map, the documentation skill plus helper are the narrative map, and the local AGENTS.md file is the final implementation contract.