| name | add-admin-page |
| description | Add a NiceGUI admin page for an existing domain while keeping config and page routing separated and masking sensitive fields. |
| metadata | {"short-description":"Add admin page"} |
Add Admin Page
Default Flow Position
- Step:
implement (approach options upstream conditional — required for sensitive fields or new admin auth surfaces)
- Routes after:
/test-domain {name} run (verify) → /security-review (self-review) if sensitive fields exposed
- Recursion guard: do not invoke
/plan-feature from inside this skill
Procedure Overview
- Analysis — verify domain exists, read DTO fields, ask user preferences
- Implementation — directory structure → admin config → page routes
- Verification — pre-commit, import check, server start
Core Rules
- CRUD pages are config-only
BaseAdminPage instances — they inherit the design
system automatically (the base class renders via the component builders).
- Custom / non-CRUD pages MUST compose
admin.components builders (c.page_header,
c.card, c.stat_card, c.data_grid, c.confirm_dialog, …) — never raw
ui.card / ui.aggrid / ui.dialog for those shapes, and never hardcoded
color classes or inline grid heights (AST-guarded).
- Every route:
@admin_error_boundary(...) + require_auth* as the first statement.
- A new shared UI shape gets a builder in
components/, not an inline page helper.
Read docs/ai/shared/skills/add-admin-page.md for detailed steps and code templates.
Refer to docs/ai/shared/admin-design-system.md for the component catalog + DO/DON'T,
and docs/ai/shared/project-dna.md §11 for the admin page DI pattern.