Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
3825527
chore: start v0.9 with bun and data-slot updates
silveltman Apr 18, 2026
ef7165e
refactor: align data-slot component wrappers
silveltman Apr 18, 2026
30dfff3
Align navigation menu with shadcn styling
silveltman Apr 18, 2026
f1a7839
tabs: align data-slot implementation with shadcn styling
silveltman Apr 18, 2026
022b4c0
chore: revert unrelated changes from tabs commit
silveltman Apr 18, 2026
58375c8
tabs: finalize data-slot runtime styling
silveltman Apr 18, 2026
87bf384
restore changes reverted by tabs cleanup
silveltman Apr 18, 2026
00a292e
Align collapsible header consumers
silveltman Apr 18, 2026
a090a5d
Add public command docs page
silveltman Apr 18, 2026
e13d693
Replace radio group with data-slot
silveltman Apr 18, 2026
8c4a1ac
Add alert dialog, popover, and tooltip components
silveltman Apr 18, 2026
63d23c4
Fix alert dialog close animation
silveltman Apr 18, 2026
8c7ca2d
Refine popover component behavior and docs
silveltman Apr 18, 2026
2c9f894
Update favicon and fix JSON formatting across multiple files
silveltman Apr 18, 2026
44607a8
docs: improve popover documentation
silveltman Apr 19, 2026
7b2e3ff
Add dropdown menu component and docs
silveltman Apr 19, 2026
0238abd
Add combobox component and docs
silveltman Apr 19, 2026
ae088a6
Add select component and docs
silveltman Apr 19, 2026
75e33e4
Add slider component and docs
silveltman Apr 19, 2026
9262e1e
Add data-slot switch component and docs
silveltman Apr 19, 2026
1ae3ed7
Add breadcrumb component
silveltman Apr 19, 2026
141350d
Add Astro input-group component
silveltman Apr 19, 2026
358bd99
feat: add shadcn-style astro sidebar
silveltman Apr 19, 2026
996a0ba
Add Embla-based carousel component
silveltman Apr 19, 2026
85e3295
Rebuild sheet with data-slot behavior
silveltman Apr 19, 2026
9af9c07
full cleanup and reorganization
silveltman Apr 23, 2026
b103f9a
layouts into seperate folder, check running
silveltman Apr 23, 2026
e25e9f1
feat: wire sidebar styling into header layouts
silveltman Apr 23, 2026
bc72450
repo restucturing and comp optimizations
silveltman Apr 24, 2026
69b6129
Align shadcn parity for data-slot components
silveltman Apr 24, 2026
edcde76
simplified routing
silveltman Apr 24, 2026
4428321
chore: sync header sources
silveltman Apr 24, 2026
7dfcbea
Complete shadcn parity pass for data-slot components
silveltman Apr 24, 2026
abdcc67
feat: align sidebar parity
silveltman Apr 24, 2026
7988446
improved agents.md
silveltman Apr 24, 2026
481d228
registry items built
silveltman Apr 24, 2026
608f580
header, component improvements, base layout with header and sidebar
silveltman Apr 24, 2026
4d0e4f1
lots of components and odcs improved
silveltman May 3, 2026
dcf61ec
Disable transitions during theme switch
silveltman May 5, 2026
cbd29d2
improvements
silveltman May 10, 2026
98a9e22
Update primary brand colors
silveltman May 13, 2026
7462c12
lot of improvements
silveltman May 15, 2026
6663195
chore: prepare registry release workflow
silveltman May 16, 2026
f5fdcec
chore: update Node.js version to 24.15.0 in .nvmrc
silveltman May 16, 2026
0e2644e
chore: prepare changelog for registry releases
silveltman May 16, 2026
9d52861
chore: clarify changelog baseline
silveltman May 16, 2026
8ebd229
Revert "chore: clarify changelog baseline"
silveltman May 16, 2026
50be998
Normalize Tailwind classes and registry output
silveltman May 16, 2026
35d1cc7
chore: configure changesets release workflow
silveltman May 16, 2026
47fffe9
refine registry docs and agent entrypoints
silveltman May 16, 2026
7dc2010
Add individual block documentation pages
silveltman May 16, 2026
8301902
improvements
silveltman May 18, 2026
068cca6
imporvements
silveltman May 18, 2026
e7bb716
Remove unsupported RTL docs
silveltman May 19, 2026
b26e48f
Prevent homepage alert typography inheritance
silveltman May 19, 2026
bed4085
Centralize registry icons through Icon component
silveltman May 19, 2026
ba55540
Remove deprecated clipboard fallback
silveltman May 19, 2026
943edd5
Prepare 0.9 release registry
silveltman May 19, 2026
6613cec
Merge main into 0.9
silveltman May 19, 2026
ff7bb4c
Add release preview compatibility fixes
silveltman May 19, 2026
b2dc5d6
Fix preview accessibility and sitemap redirects
silveltman May 19, 2026
cf75eda
Load site fonts through layout head
silveltman May 19, 2026
182f336
Use Netlify redirects only
silveltman May 19, 2026
b900770
Clarify npm release workflow
silveltman May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
189 changes: 189 additions & 0 deletions .agents/skills/fulldev/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
---
name: fulldev
description: Guides Fulldev client projects using Astro, Fulldev UI, content/schema/layout architecture, reusable components, blocks, theming, and shadcn-compatible Fulldev registry installs. Use when working in Fulldev client projects, installing or composing @fulldev components, shaping content-driven Astro pages, or deciding where project responsibilities belong.
---

# Fulldev

Fulldev projects are content-driven Astro sites that use Fulldev UI components
and blocks through the shadcn-compatible `@fulldev` registry.

This skill is for using Fulldev in client projects. If the current repository
has its own `AGENTS.md`, contributing guide, or project instructions, those
local instructions own repo-specific workflow.

If you encounter problems with Fulldev UI, discover missing guidance, or see
reusable improvements while using this skill, ask the user whether the agent should
create a pull request for the Fulldev UI library so the improvement can be
shared back with future contributors and agents. Use the Fulldev UI
contributing guide for that workflow:
https://github.com/fulldotdev/ui/blob/main/CONTRIBUTING.md

## Project Model

Preferred page flow:

```text
content frontmatter/body -> schema validation -> layout orchestration -> components/blocks
```

Content owns authored copy and semantic configuration. Schemas own contracts.
Layouts own page orchestration. Components and blocks own DOM, behavior,
accessibility, styling, and implementation details.

Inspect the current project before enforcing conventions. Fulldev architecture
is the target for client projects, but do not silently migrate an existing
different architecture.

## Core Rules

- Routes stay thin and hand work to generic rendering or layouts.
- Shared base layouts stay shell-only.
- Page orchestration belongs in layouts.
- Content must not contain raw Astro components, imported icons, SVG/HTML,
Tailwind class strings, or DOM details.
- Content-owned icons are plain names rendered through a project icon component.
- Globals are for cross-page site data, not page-specific block data.
- Components and blocks receive data through props and slots.
- Reusable blocks stay schema-agnostic and do not import content collections,
page schemas, layouts, routes, or other private page architecture.

## Fulldev UI Usage

Install Fulldev UI through shadcn-compatible tooling. Do not invent a `fulldev`
CLI command unless the project actually provides one.

Use the project package runner equivalent of:

```bash
npx shadcn@latest add @fulldev/<name>
```

Prefer existing `@fulldev` components and blocks before creating local reusable
UI or complete page sections. Read installed source when behavior or API is
unclear.

## Components

Reusable UI components commonly live in `src/components/ui/<component-name>/`,
unless the project has a different established convention.

For Astro component frontmatter:

- Use `type Props`.
- Destructure `Astro.props` once near the top.
- Destructure `class` as `class: className`.
- Name pass-through props `props`.
- Merge classes with the project's class helper, commonly `cn(...)`.
- Keep content-specific data out of generic UI primitives.

Local components are application code unless repo-specific instructions say
otherwise.

## Blocks

Blocks commonly live in `src/components/blocks`, unless the project has a
different established convention.

Blocks are production-leaning compositions for content-driven pages. They should
receive project-specific data through props and slots while layouts map
schema-backed content into those props.

Block conventions:

- Expose `class?: string` and apply it to the root.
- Keep prop types plain and local.
- Use semantic prop names such as `title`, `description`, `buttons`,
`features`, `services`, `reviews`, `href`, and `icon`.
- Avoid generic collection names like `items`, `entries`, `cards`, or `actions`
unless the block is genuinely generic.
- Button data should not include size when size is a block design decision.
- Images, links, labels, CTAs, and content-owned icons that vary by project,
page, block instance, or locale should come through props.

## Customization

Customize theme variables and component variants before editing installed
component source. Use local wrappers or compositions when behavior is
project-specific.

Prefer semantic CSS variables over one-off style overrides. Keep customization
at the lowest level that owns the decision: theme tokens for global look,
variants for component behavior, layouts for page orchestration, and local
wrappers for project-specific composition.

## Validation

Use the project's package manager and local instructions. Keep development
feedback fast:

- Start or reuse the dev server when presentation, routing, or content changed.
- Read dev server logs occasionally.
- Format touched files when a change is settled.
- Do not run full checks or builds after every small edit.
- Run focused validation for contract changes and broader validation only when
requested or when the change is risky.

## Workflows

### Standard Change

1. Identify the touched responsibility tier.
2. Inspect nearby implementation and naming/composition patterns.
3. Make the smallest coherent change that preserves project architecture.
4. Use the dev server and logs for feedback when presentation or routing is
affected.
5. Run only the relevant validation subset unless final validation is requested.

### Add Fulldev UI to a Project

1. Inspect whether the project already has shadcn-compatible configuration.
2. If needed, initialize shadcn-compatible component installation.
3. Ensure `@fulldev` is configured as a registry.
4. Install requested components or blocks with shadcn-compatible tooling.
5. Read installed files and adapt imports only when the project requires it.

### New or Changed Page Type

1. Update the layout schema.
2. Add it to the page schema union if the project uses one.
3. Create or update the layout.
4. Add or update content.
5. Keep route files thin.

### Local Component or Block

1. Check whether an existing `@fulldev` component or block covers the need.
2. Keep the API small, semantic, and content-first.
3. Keep content and schema concerns out of reusable components/blocks.
4. Treat the result as local application code unless repo-specific instructions
say otherwise.

### Docs or Examples

Treat docs as descriptions of the API, not the source of truth for the API. If
docs and implementation disagree, fix the implementation or local contract
first.

## Progressive Disclosure

When this skill package includes detailed rule files, load only the files
relevant to the current change:

- `rules/source-ownership.md` for `src/content`, `src/schemas`, content schemas,
icons, and content/code boundaries.
- `rules/layouts.md` for `src/layouts`, generic layout renderers, base layouts,
and route boundaries.
- `rules/components.md` for reusable UI components and Astro component
conventions.
- `rules/blocks.md` for block prop naming, portability, and layout-to-block
mapping.
- `cli.md` for installing Fulldev UI through shadcn-compatible tooling.
- `customization.md` for theming, CSS variables, and component customization.
- `mcp.md` for using shadcn-compatible MCP tooling with the `@fulldev`
registry.
- `rules/validation.md` before finishing changes, to choose validation commands.
- `rules/anti-patterns.md` when reviewing architecture or investigating drift.

The core guidance above must stand on its own because a new project may not yet
have any of these files.
4 changes: 4 additions & 0 deletions .agents/skills/fulldev/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Fulldev"
short_description: "Fulldev Astro architecture and UI guidance"
default_prompt: "Use $fulldev while working in a Fulldev client project."
73 changes: 73 additions & 0 deletions .agents/skills/fulldev/cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Fulldev CLI Reference

Fulldev UI uses the shadcn CLI and registry protocol. There is no assumed `fulldev` binary. Say "install the Fulldev component" or "install the Fulldev block", but run shadcn-compatible commands against the `@fulldev` registry.

## Project Setup

Configuration is read from `components.json`.

Initialize shadcn-compatible component installation when the project does not have `components.json`:

```bash
npx shadcn@latest init
```

Add the Fulldev registry:

```json
{
"registries": {
"@fulldev": "https://ui.full.dev/r/{name}.json"
}
}
```

Use the package runner already used by the project when possible. If the repo uses pnpm, prefer:

```bash
pnpm dlx shadcn@latest add @fulldev/button
```

Otherwise use:

```bash
npx shadcn@latest add @fulldev/button
```

## Common Commands

Inspect project configuration:

```bash
npx shadcn@latest info
```

Install Fulldev components or blocks:

```bash
npx shadcn@latest add @fulldev/button
npx shadcn@latest add @fulldev/card @fulldev/section
```

Preview what an install would change:

```bash
npx shadcn@latest add @fulldev/button --dry-run
npx shadcn@latest add @fulldev/button --diff
npx shadcn@latest add @fulldev/button --view
```

Search or inspect registry items:

```bash
npx shadcn@latest search @fulldev -q "button"
npx shadcn@latest view @fulldev/button
```

## Rules

- Do not invent Fulldev CLI flags or commands.
- Do not fetch registry files manually when the shadcn CLI can preview, diff, view, or install them.
- Before creating local UI or page sections, check whether an `@fulldev` component or block already exists.
- After installing a component or block, read the added files when behavior, imports, or API details matter.
- If a third-party registry item hardcodes aliases, adjust imports to the project's actual aliases.
55 changes: 55 additions & 0 deletions .agents/skills/fulldev/customization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Fulldev Customization

Fulldev UI follows the shadcn-style semantic token model. Prefer changing theme variables and composing installed components before editing component source.

## Theming Order

1. Change semantic CSS variables.
2. Use built-in component props or variants.
3. Compose local wrappers or project components.
4. Edit installed component source only when the desired behavior belongs to the component itself.

## Semantic Tokens

Use semantic utilities and CSS variables such as:

- `bg-background` / `text-foreground`
- `bg-card` / `text-card-foreground`
- `bg-primary` / `text-primary-foreground`
- `bg-secondary` / `text-secondary-foreground`
- `text-muted-foreground`
- `border-border`
- `ring-ring`

Avoid raw project colors in reusable components when a semantic token fits.

## Tailwind and CSS Variables

Use `npx shadcn@latest info` to find the project's Tailwind CSS file and Tailwind version. Edit the existing global CSS file; do not create a second theme entrypoint unless the project already has that convention.

For Tailwind v4, register custom token mappings in `@theme inline` when needed. For Tailwind v3, use the project's Tailwind config.

## Component Customization

Prefer local composition for project-specific behavior:

```astro
---
import { Button } from "@/components/ui/button"

type Props = {
href: string
label: string
}

const { href, label } = Astro.props
---

<Button href={href} variant="outline">{label}</Button>
```

Edit installed component source when the change is a reusable behavior or API correction that should apply everywhere in the project.

## Content Boundary

Content may choose semantic values such as `tone`, `icon`, `label`, `href`, and `description`. Content should not choose Tailwind classes, DOM structure, imported icons, or raw SVG/HTML.
28 changes: 28 additions & 0 deletions .agents/skills/fulldev/mcp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Fulldev MCP

Fulldev registry work can use the shadcn MCP server when it is configured. Treat it as shadcn-compatible registry tooling for `@fulldev` items, not as a separate Fulldev MCP.

## Use MCP For

- Listing configured registries.
- Searching the `@fulldev` registry.
- Viewing item metadata and files.
- Getting install commands for Fulldev components.
- Finding examples when the registry exposes them.

## Use CLI For

Use the shadcn CLI when you need local project context:

```bash
npx shadcn@latest info
```

The CLI is the source for project aliases, Tailwind version, framework, resolved paths, and installed component state.

## Rules

- If MCP and CLI disagree about local project configuration, trust the CLI.
- If MCP is unavailable, use the CLI workflow in `cli.md`.
- Do not assume an MCP server is configured in every client project.
- Do not use MCP as a reason to skip reading installed source files when making edits.
15 changes: 15 additions & 0 deletions .agents/skills/fulldev/rules/anti-patterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Anti-Patterns

Avoid:

- Adding page orchestration to routes, content files, `base.astro`, or reusable blocks.
- Treating `src/layouts` as docs-only plumbing.
- Using MDX imports as the default page composition model.
- Adding content fields without updating the matching schema.
- Moving UI implementation details, DOM structure, classes, raw SVG, or component imports into content.
- Hardcoding content-meaningful icons or entries inside reusable blocks.
- Importing `src/content`, globals, page schemas, routes, or docs helpers from reusable blocks/components.
- Adding page-type branching or fallback SEO shaping to `base.astro`.
- Creating local reusable UI before checking whether a Fulldev component already exists.
- Silently migrating a non-Fulldev architecture without surfacing the tradeoff.
- Patching examples to hide broken component behavior, missing exports, or schema drift.
Loading