Claude-skill-registry kirby-forms-and-frontend-actions
Implements frontend forms and actions in Kirby (contact forms, file uploads, email with attachments, creating pages from frontend). Use when handling user input or building submission flows.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kirby-forms-and-frontend-actions" ~/.claude/skills/majiayu000-claude-skill-registry-kirby-forms-and-frontend-actions && rm -rf "$T"
manifest:
skills/data/kirby-forms-and-frontend-actions/SKILL.mdsource content
Kirby Forms and Frontend Actions
KB entry points
kirby://kb/scenarios/39-basic-contact-formkirby://kb/scenarios/40-frontend-file-uploadskirby://kb/scenarios/41-email-with-attachmentskirby://kb/scenarios/42-creating-pages-from-frontendkirby://kb/scenarios/43-user-registration-and-login
Required inputs
- Form fields and validation rules.
- Spam protection choice and error handling expectations.
- Storage target and email settings.
- Upload constraints (MIME/size) if files are involved.
Default controller flow
- Verify CSRF and require the expected POST fields.
- Validate and normalize input; return errors early.
- Apply a single spam guard (default: honeypot).
- Persist data or send email, then redirect with a success state.
Error payload shape
return [ 'errors' => ['email' => 'Invalid email'], 'old' => $data, ];
Upload storage convention
- Store files under a dedicated page (e.g.
) or the current page.page('uploads') - Normalize filenames and enforce MIME/size limits before saving.
Common pitfalls
- Missing CSRF verification on POST handlers.
- Accepting uploads without MIME or size checks.
Workflow
- Clarify the form type, validation rules, spam protection, storage target, and email requirements.
- Call
and readkirby:kirby_init
.kirby://roots - Inspect existing templates/controllers/snippets for patterns:
kirby:kirby_templates_indexkirby:kirby_controllers_indexkirby:kirby_snippets_index
- Read relevant config options via
(e.g.kirby://config/{option}
,email
) when needed.routes - Search the KB with
(examples: "basic contact form", "frontend file uploads", "email with attachments", "creating pages from frontend").kirby:kirby_search - Implement controller-driven validation and CSRF checks; keep templates thin and escape output.
- For uploads, enforce MIME/size limits and store files in safe locations.
- Verify by submitting forms in a browser and rendering success/error states with
.kirby:kirby_render_page