mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
The CLI lines on the product pages were written from the product name -- hanzo dns zones, hanzo kms keys -- and several were not commands the binary has. So the command moves into lib/product.ts, which assembles the rest from what is already stated: the catalog names the product and its route, pages.json names what the catalog does not carry, and products-metadata answers for docs, where null means docs publishes nothing and the link drops. Every CLI line in that table was run against the binary. A product absent from it has no command and its page prints none; nothing composes a verb out of a name. Both blocks that draw it import the Product type rather than declaring their own, which leaves the table the only place a command can be written. The catalog also moves out of package.json into pnpm-workspace.yaml, where pnpm reads it, so the versions are stated once.
80 lines
3.8 KiB
TypeScript
80 lines
3.8 KiB
TypeScript
'use client'
|
|
|
|
import { ArrowRight, Download, GitBranch, Lock, Package, Plug, Search, Wrench } from 'lucide-react'
|
|
import { ProductLanding } from '@/components/product/ProductLanding'
|
|
import { ProductFooter } from '@/components/products/ProductFooter'
|
|
|
|
/**
|
|
* Skills, through the ONE product kit.
|
|
*
|
|
* The largest cluster left: TWELVE pages — engine, gateway, guard, ingress,
|
|
* jin, metrics, o11y, operator, sentinel, skills, telemetry, visor — at 85%+
|
|
* identical className sets, each a hero, a six-card grid and a call to action
|
|
* written out again. All twelve pass one typed props object to
|
|
* `ProductLanding`. See LLM.md, "Tailwind is NOT gone".
|
|
*
|
|
* EVERY WORD IS THE ONE THAT WAS HERE. ProductFooter came out of the final
|
|
* card's `max-w-3xl` wrapper, where it had been rendering narrower than on
|
|
* every other product page.
|
|
*/
|
|
|
|
export default function SkillsPage() {
|
|
return (
|
|
<>
|
|
<ProductLanding
|
|
badge={"hanzoai/skills"}
|
|
badgeIcon={Plug}
|
|
title={"Skills"}
|
|
tagline={"Development knowledge your coding agent loads only when it needs it"}
|
|
lede={"A skill is a markdown file about one thing — Postgres query plans, Zig comptime, TLS certificate chains. Install the plugin and your agent reads the right one when the work calls for it, instead of carrying all of them into every session."}
|
|
ctas={[
|
|
{ label: "View on GitHub", href: "https://github.com/hanzoai" },
|
|
]}
|
|
what={{
|
|
title: "Coverage costs context. This is the trade.",
|
|
sub: "Load every guide at boot and the context window is spent before the first file is opened. Load none and the agent guesses at things that have known answers. Skills splits the difference: small files, and a discovery layer that fetches them on the keywords in what you asked for.",
|
|
pillars: [
|
|
{
|
|
icon: Package,
|
|
title: "A skill is a markdown file",
|
|
body: "Frontmatter carries a name and a description. Below it is prose, code, and links to related skills. Nothing to compile, nothing to run — you can read one before you trust it.",
|
|
},
|
|
{
|
|
icon: Search,
|
|
title: "Gateway skills do the finding",
|
|
body: "A gateway is a small skill whose whole job is to notice. Say Postgres and discover-database wakes up; say comptime and discover-zig does. It pulls the specific files and gets out of the way.",
|
|
},
|
|
{
|
|
icon: Download,
|
|
title: "Install it as a plugin",
|
|
body: "/plugin install https://github.com/hanzoai/skills in Claude Code, or add hanzoai/skills as a marketplace and pick what you want.",
|
|
},
|
|
{
|
|
icon: GitBranch,
|
|
title: "Written small on purpose",
|
|
body: "One topic per file, a few hundred lines each. Five focused reads cost less than one monolithic guide, and you get the five that matter instead of the one that covers everything badly.",
|
|
},
|
|
{
|
|
icon: Lock,
|
|
title: "Cross-referenced, not duplicated",
|
|
body: "Skills link to the skills next to them, so an agent following a thread from API design into rate limiting into Redis reads three files and never the same paragraph twice.",
|
|
},
|
|
{
|
|
icon: Wrench,
|
|
title: "Add your own",
|
|
body: "Drop a markdown file in a category, give it a name and a description, and it joins discovery. Your house conventions load the same way the public ones do.",
|
|
},
|
|
],
|
|
}}
|
|
finalCta={{
|
|
title: "Get started with Skills",
|
|
buttons: [
|
|
{ label: "View on GitHub", href: "https://github.com/hanzoai" },
|
|
],
|
|
}}
|
|
/>
|
|
<ProductFooter slug={"skills"} name={"Skills"} />
|
|
</>
|
|
)
|
|
}
|