Back to Skills

clay

verified

REPL-friendly data visualization and literate programming for Clojure with Kindly convention

View on GitHub

Marketplace

library-skills

hugoduncan/library-skills

Plugin

clojure-libraries

clojure

Repository

hugoduncan/library-skills
3stars

plugins/clojure-libraries/skills/clay/SKILL.md

Last Verified

January 23, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/hugoduncan/library-skills/blob/main/plugins/clojure-libraries/skills/clay/SKILL.md -a claude-code --skill clay

Installation paths:

Claude
.claude/skills/clay/
Powered by add-skill CLI

Instructions

# Clay

REPL-friendly Clojure tool for data visualization and literate programming. Renders Clojure namespaces and forms as HTML pages, notebooks, and Quarto documents using the Kindly convention.

## Overview

Clay transforms Clojure code into visual documents by interpreting the Kindly convention for data visualization. It integrates with your REPL workflow and editor, rendering forms and namespaces as HTML with support for charts, tables, markdown, and interactive components.

**Key Features:**
- REPL-driven visualization workflow
- Kindly convention for visualization types
- HTML, Quarto markdown, and reveal.js output
- Live reload with file watching
- Editor integrations (Calva, CIDER, Cursive, Conjure)
- Vega-Lite, Plotly, ECharts, Highcharts support
- Dataset and table rendering
- Reagent component support

**Artifact:** `org.scicloj/clay`
**Latest Version:** 2.0.3
**License:** EPL-1.0
**Repository:** https://github.com/scicloj/clay

## Installation

Add to `deps.edn`:
```clojure
{:deps {org.scicloj/clay {:mvn/version "2.0.3"}}}
```

Or Leiningen `project.clj`:
```clojure
[org.scicloj/clay "2.0.3"]
```

Import in namespace:
```clojure
(ns my-notebook
  (:require [scicloj.clay.v2.api :as clay]
            [scicloj.kindly.v4.kind :as kind]))
```

## Core Concepts

### Kindly Convention

Kindly standardizes how values request visualization. Attach kind metadata to values:

```clojure
;; Using kind function
(kind/md "# Hello World")

;; Using metadata
^:kind/md ["# Hello World"]
```

### make! Function

The primary entry point. Renders forms, namespaces, or files:

```clojure
;; Render single form
(clay/make! {:single-form '(+ 1 2 3)})

;; Render current namespace
(clay/make! {:source-path "notebooks/my_notebook.clj"})

;; Render with options
(clay/make! {:source-path "src/analysis.clj"
             :format [:html]
             :show true})
```

### Output Formats

Clay produces:
- **HTML** - Standalone pages served at `http://localhost:1971/`
- **Quarto Markdown

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
10892 chars