Asi quarto-julia

Quarto + Julia Skill

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/asi/skills/quarto-julia" ~/.claude/skills/plurigrid-asi-quarto-julia && rm -rf "$T"
manifest: plugins/asi/skills/quarto-julia/SKILL.md
source content

Quarto + Julia Skill

Status: Production Ready Trit: 0 (ERGODIC - coordinator/synthesizer) Purpose: Reproducible documents with Julia code blocks and GF(3) skill tracking


Overview

Quarto is a scientific publishing system that renders

.qmd
files to HTML, PDF, and more. Combined with Julia, it enables:

  1. Executable documents - Julia code blocks run during render
  2. Skill activation logs - Track GF(3) triads in rendered output
  3. Reproducible research - Same seed = same colors = same results

Two Julia Engines

Feature
julia
Engine (NEW)
jupyter
Engine
Execute Julia code
Keep sessions alive
No Python required
No global pkg install
juliaup integration
Python/R via PythonCall/RCall
QuartoTools.jl expandable cells

Recommendation: Use

engine: julia
for new projects.

Installation (No Homebrew)

# Download and extract
cd /tmp
curl -sL https://github.com/quarto-dev/quarto-cli/releases/download/v1.6.42/quarto-1.6.42-macos.tar.gz -o quarto.tar.gz
tar -xzf quarto.tar.gz

# Install to ~/bin with proper structure
mkdir -p ~/bin/quarto-1.6.42
cp -r bin share ~/bin/quarto-1.6.42/

# Create wrapper script (critical for path resolution)
cat > ~/bin/quarto << 'EOF'
#!/bin/bash
export QUARTO_SHARE_PATH="$HOME/bin/quarto-1.6.42/share"
exec "$HOME/bin/quarto-1.6.42/bin/quarto" "$@"
EOF
chmod +x ~/bin/quarto

# Add to PATH
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
export PATH="$HOME/bin:$PATH"

# Verify
quarto --version  # Should show 1.6.42

Basic .qmd Document (Modern julia Engine)

---
title: "GF(3) Skill Activation Log"
author: "Plurigrid ASI"
date: today
format:
  html:
    code-fold: true
    toc: true
    theme: cosmo
engine: julia
execute:
  echo: true
  cache: true
---

## Skill Triad

```{julia}
#| label: gf3-triad
#| code-summary: "Define GF(3) skill triad"

struct SkillActivation
    name::String
    trit::Int  # -1, 0, or +1
    hue::Float64
end

triad = [
    SkillActivation("acsets", -1, 220.0),
    SkillActivation("bisimulation", 0, 120.0),
    SkillActivation("artifacts-builder", 1, 30.0)
]

# Verify conservation
trit_sum = sum(s.trit for s in triad)
println("GF(3) sum: $trit_sum ≡ $(mod(trit_sum, 3)) (mod 3)")

## juliaup Version Selection

```yaml
---
title: "Julia 1.11 Notebook"
engine: julia
julia:
  exeflags: ["+1.11"]  # Use juliaup channel specifier
---

Commands

# Render single file
quarto render document.qmd

# Render to specific format
quarto render document.qmd --to pdf
quarto render document.qmd --to docx

# Live preview (watches for changes)
quarto preview document.qmd

# Render entire project
quarto render

# Check installation
quarto check

# Install TinyTeX for PDF output
quarto install tinytex

Project Structure

project/
├── _quarto.yml          # Project configuration
├── index.qmd            # Main document
├── skills/
│   ├── triad-1.qmd      # Skill triad documentation
│   └── triad-2.qmd
└── _output/             # Rendered files

_quarto.yml Configuration

project:
  type: website
  output-dir: _output

website:
  title: "Skill Activation Log"
  navbar:
    left:
      - href: index.qmd
        text: Home
      - href: skills/triad-1.qmd
        text: Triad 1

format:
  html:
    theme: cosmo
    css: styles.css
    toc: true

execute:
  freeze: auto  # Cache computations

Julia Integration Patterns

Gay.jl Color Generation

using Gay

seed = 0x42D
palette = Gay.palette(seed, 9)  # 9 colors for 3 triads

for (i, color) in enumerate(palette)
    trit = mod(i - 1, 3) - 1  # Cycle: -1, 0, +1
    println("Skill $i: $(color.hex) trit=$trit")
end

ACSets Schema Visualization

using Catlab.CategoricalAlgebra
using Catlab.Graphics

@present SchSkillGraph(FreeSchema) begin
    Skill::Ob
    Triad::Ob
    belongs_to::Hom(Skill, Triad)

    Name::AttrType
    Trit::AttrType
    name::Attr(Skill, Name)
    trit::Attr(Skill, Trit)
end

# Render as GraphViz
to_graphviz(SchSkillGraph)

Spectral Gap Computation

using LinearAlgebra

function spectral_gap(n::Int)
    # Cycle graph adjacency (normalized)
    A = zeros(n, n)
    for i in 1:n
        A[i, mod1(i+1, n)] = 0.5
        A[i, mod1(i-1, n)] = 0.5
    end
    eigs = eigvals(A)
    sorted = sort(real.(eigs), rev=true)
    return 1.0 - sorted[2]
end

# Find n where gap ≈ 1/4
for n in [4, 8, 9, 10, 16]
    gap = spectral_gap(n)
    marker = abs(gap - 0.25) < 0.02 ? " ← TARGET" : ""
    println("n=$n: gap=$(round(gap, digits=4))$marker")
end

Rendering from Julia

using Quarto

# Single file
Quarto.render("index.qmd")

# With options
Quarto.render("index.qmd", output_format="pdf")

# Entire project
Quarto.render(".")  # Current directory

# Preview with live reload
Quarto.preview("index.qmd")

Troubleshooting

"Cannot determine Quarto source path"

This error means

QUARTO_SHARE_PATH
is not set. Use the wrapper script:

# Check current setup
cat ~/bin/quarto

# Should contain:
# export QUARTO_SHARE_PATH="$HOME/bin/quarto-1.6.42/share"
# exec "$HOME/bin/quarto-1.6.42/bin/quarto" "$@"

Julia kernel not found

# Install IJulia
julia -e 'using Pkg; Pkg.add("IJulia")'

# Register kernel
julia -e 'using IJulia; IJulia.installkernel("Julia")'

# List kernels
jupyter kernelspec list

PDF rendering fails

# Install TinyTeX
quarto install tinytex

# Or use system LaTeX
# macOS: install MacTeX
# Linux: apt install texlive-full

GF(3) Skill Tracking Template

---
title: "Skill Activation: {{< meta triad_name >}}"
params:
  triad_name: "Database & Verification"
  skills:
    - {name: "acsets", trit: -1, hue: 220}
    - {name: "bisimulation", trit: 0, hue: 120}
    - {name: "artifacts-builder", trit: 1, hue: 30}
---

```{julia}
#| label: verify-conservation

skills = params.skills
trit_sum = sum(s["trit"] for s in skills)
@assert mod(trit_sum, 3) == 0 "GF(3) violation!"
println("✓ Conservation verified: Σ = $trit_sum ≡ 0 (mod 3)")

## Integration with ~/worlds/

```julia
# List available worlds
readdir(expanduser("~/worlds"))

# Load world-specific Julia project
using Pkg
Pkg.activate(expanduser("~/worlds/a"))  # AlgebraicJulia world

Related Skills

SkillTritIntegration
gay-mcp
0Deterministic colors in plots
acsets
-1Schema visualization
triad-interleave
+1Schedule documentation
algorithmic-art
0p5.js visualizations

References


Skill Name: quarto-julia Type: Documentation / Publishing Trit: 0 (ERGODIC) Dependencies: Julia 1.10+, IJulia, Quarto CLI 1.6+