Skill: Create Landing Page
Use this skill when the user asks to create a landing page, landing, лендинг, landing page.
Steps
-
Determine slug and title from user request. Slug: lowercase, underscores only, no hyphens, no spaces (e.g.
cat_rental). The URL will be{TRIP2G_URL}/{slug}. -
Read the layout reference to know available components:
read_file /opt/data/secondbrain/_layouts/iiminion/README.md -
Create the page markdown file at
/opt/data/secondbrain/<slug>.md:--- layout: iiminion/index title: <Page Title> description: >- <Short SEO/social preview description> og_title: <Page Title> og_description: >- <Short social preview description> ---The shared iiminion shell renders
title,description, Open Graph tags, andtwitter:card: summary_large_image. Use a 1200×630 PNG preview image in the layout assets when the landing needs Telegram/Twitter large previews. The page can be empty — the layout renders everything. Add frontmatter fields if the layout supports them. -
Optionally create a custom layout if the default
index.htmldoesn't fit:- Copy
/opt/data/secondbrain/_layouts/iiminion/index.htmlas base, or create_layouts/<layout-name>/index.htmlfor a standalone Trip2G layout. - Save custom CSS/JS next to the layout, e.g.
_layouts/<layout-name>/final.cssand_layouts/<layout-name>/final.js. - In HTML, local assets must be referenced through Trip2G's helper, not raw relative paths:
<link rel="stylesheet" href='{{ asset("final.css") }}' /> <script src='{{ asset("final.js") }}'></script> - Update page frontmatter:
layout: iiminion/<custom-name>orlayout: <layout-name>/index. - After sync, verify
Assets uploaded/ up-to-date assets and check the public HTML has signed storage URLs instead of raw{{ asset(...) }}.
- Copy
-
Update
landing_pages.mdat/opt/data/secondbrain/landing_pages.md:- [[<slug>]] — <title> — created <YYYY-MM-DD>Create the file if it doesn't exist (header:
# Landing Pages). Add[[landing_pages]]to_index.mdif not there. -
Log in today's daily note
/opt/data/secondbrain/daily/YYYY-MM-DD.md:HH:MM user: <original user request> Created landing page [[<slug>]] with layout iiminion/index. -
Sync vault:
terminal: /opt/data/sync --verboseFor custom layout assets, acceptance checks are: sync exits cleanly, assets are uploaded or up-to-date, the public page contains no raw
{{ asset(...) }}, asset URLs are signed storage URLs, and linked CSS/JS return HTTP 200. -
Send link to user:
{TRIP2G_URL}/<slug> -
Ask user to review and offer to adjust layout components or content.
Layout rules (from README)
- Always use
@lid/@didplaceholders in component files — never write expanded names manually - CSS blocks: no
<style>tags, bare CSS only - New component: copy template from README, save as
_layouts/iiminion/<name>.html, add{{ yield iiminion_<name>() }}to index.html - Components auto-import — no
{{ import }}needed