Borrowing it
Nothing to install: this file belongs to guillermoscript/lms-front. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/guillermoscript/lms-front/master/.claude/skills/ai-landing-builder/SKILL.mdgit clone --depth 1 https://github.com/guillermoscript/lms-frontWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/guillermoscript/lms-front/ai-landing-builder)<a href="https://agentmods.dev/skills/guillermoscript/lms-front/ai-landing-builder"><img src="https://agentmods.dev/badge/skills/guillermoscript/lms-front/ai-landing-builder/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/guillermoscript/lms-front/ai-landing-builder"><img src="https://agentmods.dev/badge/skills/guillermoscript/lms-front/ai-landing-builder.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 135 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 129 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00240 | $0.02456 |
| Opus 5.5 | $0.00096 | $0.00982 |
| Sonnet 5.5 | $0.00048 | $0.00491 |
| Haiku 4.5 | $0.00024 | $0.00246 |
Grade A, and why
ai-landing-builder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AI Landing-Page Builder (Page Architect)
Full guide: docs/PAGE_ARCHITECT.md (how it works, op protocol, tools, MCP tools, adding a
block, testing). Design history: docs/PAGE_ARCHITECT_DESIGN.md (its "Critique & corrections"
win over its body). Why each invariant exists: references/gotchas.md.
The AI edits the live page through a small op protocol: each tool call is validated on the
server, applied to a shadow copy, streamed to the editor as a transient data-page-op part and
applied there with ONE undo step per turn. Save is explicit and is the security boundary.
Map
| File | Role |
|---|---|
packages/core/src/page-builder/ |
Shared core, exported from @lms/core. Pure TS + zod, React-free. Used by the web route, the editor applier, the save actions and mcp-server. |
…/ops.ts |
PageOp zod: add, update (+appends), updateRoot, move, remove, reset. ROOT_ZONE = 'root:default-zone'. PageBuilderDataParts (page-op, turn-status, theme-preview). |
…/apply-ops.ts |
applyOps(data, ops, catalog) → {data, warnings, applied} (bad ops skip with a warning), applyOpInPlace, expandDuplicate, subtreeToAddOps. |
…/tree.ts |
THE zone accessor (getZone/setZone/zoneKeys/findNode/descendantIds). |
…/appends.ts, array-defaults.ts |
Text streaming (items[2].title → tail) and array-item backfill. |
…/catalog.ts |
pageCatalog: strict validateBlock/validateRoot, promptDoc(), streamableFields, jsonSchema. |
…/validate.ts |
Lenient validatePage, URL/colour rules, PAGE_LIMITS, ref-id checks. |
…/bindings.ts, templates.ts |
deepCloneWithFreshIds, binding substitution, instantiateTemplate, templateToOps, PRESETS, presetToOps. |
…/outline.ts |
formatOutline — the compact page view for the model. |
…/generated/{manifest,templates}.generated.ts |
Generated by npm run gen:puck-fields. Never hand-edit or hand-merge. |
lib/puck/ai-annotations/ |
The AI side-map: base.ts, course-blocks.ts, style.ts, merged in index.ts. '*' = shared section fields. |
lib/puck/templates/ |
Templates (stable id, pageType, bindings). school-bindings.ts = school name/logo bindings. |
lib/page-builder/ |
Server agent: agent.ts, edit-tools.ts (ShadowPage, OpSink, tools, approvals), partial-stream.ts (streamed add_block), context.ts + data-tools.ts (server-only, tenant-filtered), system-prompt.ts. |
app/api/landing/chat/route.ts |
The route. Feature landing_builder (needs tools), BYOK only, paid plans only. |
components/admin/landing-page/page-architect/ |
Panel, useChat hook, PageArchitectTurn, OpQueue, applyOpToPuck, theme preview. |
app/actions/admin/landing-pages.ts, landing-page-validation.ts |
Save path: lenient validatePage + ref ownership + updated_at compare-and-swap. |
mcp-server/src/tools/landing-pages.ts, src/landing/page-builder.ts |
MCP tools on the same core; agent ops → core ops; all-or-nothing patches with updated_at CAS. |
scripts/gen-puck-fields-manifest.ts |
Codegen from lib/puck/config.ts + annotations + templates into the core generated files. |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago Changed · -60 lines · +56 tokens per session ea6098441728
- 14d ago Changed 24f87ebeb421
- 1mo ago First seen · 176 lines · 184 tokens per session scan A 230a5d189f1c
ai-landing-builder is a skill published in the GitHub repository guillermoscript/lms-front (40 stars, last pushed today), licensed MIT. It adds 240 tokens to every session and 2,456 once invoked, about $0.0010 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
add-landing-template
Add a new org landing-page template to the ClassroomIO monorepo. Use when the user asks to "create/add a new landing template", "add a new template like X to the org landing pages", "build a new theme for the org landing page", or hands over a design reference (image, URL, prototype) for a new landing visual style.
prototype
Build multiple genuinely different versions of a UI piece you describe, rendered behind a visual picker so you can flip through them live and promote the one that feels right. Only runs when explicitly invoked; it does not trigger on its own.
write-prd
Write a product PRD for ClassroomIO the house way — clarify all features with the user first, research the codebase, write the PRD under prd/ /, then build clickable HTML prototypes under prototypes/ / that become the UX source of truth. Use when the user asks to "write a PRD", "spec a feature", "plan a new…
classroomio-design
ClassroomIO's design system. Use for any ClassroomIO UI, marketing page, launch image, social post, deck or thumbnail, and before choosing a colour, type size, radius or component. Covers tokens, app and marketing components, voice, and brand-asset rules.
moodle-theme-development
Use when developing Moodle themes — Boost child themes, theme/yourtheme/config.php, SCSS pre/post hooks, layouts, Mustache template overrides, theme settings, $OUTPUT renderer overrides, and theme designer mode.
moodle-accessibility
Use when ensuring Moodle plugin UI meets WCAG 2.1 AA — semantic HTML in Mustache, ARIA via core helpers, keyboard navigation, color contrast in SCSS, focus management in modals, screen reader testing, and Pa11y/axe automation.