xiaohongshu
xiaohongshu
grove-vineyard
Build a Vineyard showcase page for any Grove property using @autumnsgrove/groveengine/vineyard components. Vineyard is the consistent /vineyard route where each tool demos its features, documents its API, and shows its roadmap. Use when creating or updating a property's vineyard page.
Full skill instructions
Activate this skill when:
/vineyard route for a Grove propertyEvery Grove property implements a /vineyard route on its subdomain — a consistent way to explore what each tool does, see working demos, and understand the roadmap.
amber.grove.place/vineyard → Storage showcase
ivy.grove.place/vineyard → Email client showcase
foliage.grove.place/vineyard → Theming showcase
meadow.grove.place/vineyard → Social layer showcase
heartwood.grove.place/vineyard → Auth showcase
forage.grove.place/vineyard → Domain discovery showcase
Vineyard lives inside the GroveEngine monorepo at packages/vineyard and is re-exported through the engine. No separate install needed — it comes with GroveEngine.
import { VineyardLayout, FeatureCard, StatusBadge, ... } from '@autumnsgrove/groveengine/vineyard';
| Component | Purpose |
|---|---|
VineyardLayout | Full page wrapper — hero, status badge, philosophy quote, related tools footer |
FeatureCard | Showcase a feature with icon, status, description, and optional demo slot |
StatusBadge | Status pill: ready, preview, demo, coming-soon, in-development |
DemoContainer | Wrapper for interactive demos with mock data indicator |
CodeExample | Code block with language label, filename, and copy-to-clipboard |
TierGate | Tier-based access control with blur preview and upgrade prompt |
RoadmapSection | Visual timeline: built / in-progress / planned |
AuthButton | Better Auth sign in/out button |
UserMenu | User profile menu with avatar and email |
type VineyardStatus = 'ready' | 'preview' | 'demo' | 'coming-soon' | 'in-development';
type GroveTool = 'amber' | 'ivy' | 'foliage' | 'meadow' | 'rings' | 'trails' | 'heartwood' | 'forage';
type GroveTier = 'seedling' | 'sapling' | 'oak' | 'grove';
Create src/routes/vineyard/+page.svelte:
<script lang="ts">
import {
VineyardLayout,
FeatureCard,
RoadmapSection,
DemoContainer
} from '@autumnsgrove/groveengine/vineyard';
</script>
<VineyardLayout
tool="amber"
tagline="Your files, preserved"
status="preview"
>
<!-- Feature Cards -->
<div class="feature-grid">
<FeatureCard
title="Storage Overview"
description="See usage across posts and media"
status="ready"
icon="HardDrive"
/>
<FeatureCard
title="File Browser"
description="Browse and manage uploaded files"
status="ready"
icon="FolderOpen"
/>
<FeatureCard
title="Export Your Data"
description="Download everything in one click"
status="coming-soon"
icon="Download"
/>
</div>
<!-- Roadmap -->
<RoadmapSection
built={['Core storage view', 'Usage breakdown', 'File browser']}
inProgress={['Export functionality']}
planned={['Bulk delete', 'Storage alerts', 'External backup']}
/>
</VineyardLayout>
<style>
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
margin-bottom: 3rem;
}
</style>
Handles the full page structure automatically:
tool prop), tagline, status badge, philosophy quote<VineyardLayout tool="ivy" tagline="Messages that grow on you" status="in-development">
<!-- All your content goes here -->
</VineyardLayout>
The philosophy quotes and related tool mappings are built-in. No configuration needed.
Icons are any valid lucide-svelte icon name as a string:
<FeatureCard
title="Theme Picker"
description="Choose from curated seasonal themes"
status="ready"
icon="Palette"
>
{#snippet demo()}
<!-- Optional: interactive demo renders below the description -->
<ThemePicker themes={sampleThemes} />
{/snippet}
</FeatureCard>
Wraps interactive demos with a header, description, and optional "Mock Data" indicator:
<DemoContainer
title="Email Composer"
description="Try the rich text editor"
mockData={true}
>
<RichTextEditor value={sampleDraft} />
</DemoContainer>
When mockData={true}:
Code blocks with copy-to-clipboard and language/filename labels:
<CodeExample language="typescript" filename="src/routes/+layout.svelte">
{`import { initAmber } from '@autumnsgrove/amber';
const storage = initAmber({
tenant: 'my-site',
tier: 'sapling'
});`}
</CodeExample>
Shows content only if user meets tier requirement. Otherwise shows blur preview + upgrade prompt:
<TierGate required="oak" current={userTier} showPreview={true}>
<AdvancedStoragePanel />
{#snippet fallback()}
<!-- Optional custom fallback (default shows upgrade button) -->
<p>Upgrade to Oak for advanced storage features</p>
{/snippet}
</TierGate>
Tier hierarchy: seedling < sapling < oak < grove
Three-column (desktop) / stacked (mobile) timeline:
<RoadmapSection
built={['Feature A', 'Feature B']}
inProgress={['Feature C']}
planned={['Feature D', 'Feature E']}
/>
<script>
import { AuthButton, UserMenu, getSession } from '@autumnsgrove/groveengine/vineyard';
import { onMount } from 'svelte';
let user = $state(null);
onMount(async () => {
const session = await getSession();
user = session.user;
});
</script>
{#if user}
<UserMenu showAvatar={true} showEmail={true} />
{:else}
<AuthButton provider="google" signInText="Sign in to explore" />
{/if}
| Status | Visual | Use When |
|---|---|---|
ready | Green solid pill | Feature is complete and stable |
preview | Amber dashed border | Functional but API may change |
demo | Blue solid pill | Interactive example, not real data |
coming-soon | Gray subtle pill | Designed but not built yet |
in-development | Orange pulsing pill | Actively being built right now |
Vineyard components use Grove's built-in aesthetic:
No additional styling framework needed — components are self-contained with scoped CSS.
mockData={true}Before shipping a vineyard page:
VineyardLayout with correct tool, tagline, and statusFeatureCard components with appropriate statusesRoadmapSection with honest built/inProgress/planned arraysxiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience