Back to skills
SkillHub ClubShip Full StackFull Stack

zulip-cogen

Zulip Cogen Skill 🐸⚑

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
10
Hot score
84
Updated
March 20, 2026
Overall rating
C3.8
Composite score
3.8
Best-practice grade
B82.7

Install command

npx @skill-hub/cli install plurigrid-asi-zulip-cogen

Repository

plurigrid/asi

Skill path: skills/zulip-cogen

Zulip Cogen Skill 🐸⚑

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: plurigrid.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install zulip-cogen into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/plurigrid/asi before adding zulip-cogen to shared team environments
  • Use zulip-cogen for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: zulip-cogen
description: Zulip Cogen Skill 🐸⚑
version: 1.0.0
---

# Zulip Cogen Skill 🐸⚑

**Trit**: +1 (PLUS - Generator)
**GF(3) Triad**: `dynamic-sufficiency (-1) βŠ— proof-of-frog (0) βŠ— zulip-cogen (+1) = 0`

## Overview

Code generator from Category Theory Zulip knowledge base with **dynamic sufficiency gating**. Transforms 121k messages into executable artifacts only when sufficient context is verified via Ξ΅-machine coverage.

> *"No generation without sufficient witness. The Ξ΅-machine observes, the gate permits."*

## Architecture

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ZULIP COGEN                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  INPUT                    OUTPUT                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ CT Zulip     │───────▢│ Lean4 proofs            β”‚   β”‚
β”‚  β”‚ 121k msgs    β”‚        β”‚ Mermaid diagrams        β”‚   β”‚
β”‚  β”‚ 81 ponds     β”‚        β”‚ Julia/Python impls      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚ ACSet schemas           β”‚   β”‚
β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

## Generation Modes

| Mode | Input | Output |
|------|-------|--------|
| `proof` | Math discussion | Lean4 theorem |
| `diagram` | Category description | Mermaid/tikzcd |
| `impl` | Algorithm discussion | Julia/Python code |
| `schema` | Data structure talk | ACSet definition |
| `skill` | Topic cluster | SKILL.md |

## Usage

```bash
# Generate Lean4 proof from discussion
zulip-cogen proof "adjoint functors" --pond theory:-category-theory

# Generate diagram from thread
zulip-cogen diagram --thread-id 12345 --format mermaid

# Generate implementation
zulip-cogen impl "kan extension" --lang julia

# Generate ACSet schema
zulip-cogen schema "simplicial sets" 

# Generate skill from pond
zulip-cogen skill --pond theory:-topos-theory
```

## Example Generations

### Proof Mode
```
Input: Discussion about "left adjoints preserve colimits"
Output:
```lean
theorem left_adjoint_preserves_colimits 
    {C D : Category} (F : Functor C D) (G : Functor D C)
    (adj : F ⊣ G) : PreservesColimits F := by
  intro J K c hc
  exact adj.leftAdjointPreservesColimits c hc
```

### Diagram Mode
```
Input: "The Yoneda embedding is fully faithful"
Output:
```mermaid
graph LR
    C[C] -->|y| PSh["[Cα΅’α΅–, Set]"]
    subgraph "Yoneda"
        y["y: C β†’ Hom(-, C)"]
    end
    style y fill:#08bed5
```

### Implementation Mode
```
Input: Discussion on "computing left Kan extensions"
Output:
```julia
function left_kan(F::Functor, K::Functor)
    # Lan_K(F)(d) = colim_{(c,k) ∈ (K↓d)} F(c)
    d -> begin
        comma = comma_category(K, d)
        colimit(c -> F(c.source), comma)
    end
end
```

## Pipeline

```python
class ZulipCogen:
    def __init__(self, db_path: str):
        self.db = duckdb.connect(db_path)
        self.gay_seed = 0x6761795f636f6c6f
    
    def generate(self, mode: str, query: str, **kwargs) -> str:
        # 1. Retrieve relevant messages
        context = self.retrieve(query, kwargs.get('pond'))
        
        # 2. Extract structure
        structure = self.extract_structure(context, mode)
        
        # 3. Generate artifact
        return self.synthesize(structure, mode, kwargs.get('lang'))
    
    def retrieve(self, query: str, pond: str = None) -> List[Message]:
        sql = """
            SELECT content, sender, color 
            FROM ct_zulip_messages m
            JOIN ct_zulip_streams s ON m.stream_id = s.id
            WHERE m.content LIKE ?
        """
        if pond:
            sql += " AND s.name LIKE ?"
        return self.db.execute(sql, params).fetchall()
```

## Dynamic Sufficiency Integration

### Ξ΅-Machine Gating

Before ANY generation, verify sufficient context:

```python
def pre_generation_gate(query: str, mode: str) -> Verdict:
    """Gate generation on sufficient Zulip context."""
    messages = retrieve(query)
    coverage = compute_coverage(query, messages)
    
    if coverage.score >= 0.7:  # 70% threshold for generation
        return Verdict.PROCEED
    elif coverage.score >= 0.3:
        return Verdict.WARN(f"Low coverage: {coverage.score:.0%}")
    else:
        return Verdict.ABORT(f"Insufficient context: {len(messages)} msgs")
```

### Causal States for Generation

| Causal State | Required Coverage | Artifact |
|--------------|------------------|----------|
| `PROOF_READY` | 3+ math discussions | Lean4 theorem |
| `DIAGRAM_READY` | 2+ structural mentions | Mermaid |
| `IMPL_READY` | 5+ code references | Julia/Python |
| `SCHEMA_READY` | 3+ type discussions | ACSet |

### Variational Bound

```
min(sufficiency) ≀ generation ≀ max(fanout)

dynamic-sufficiency GATES: Prevents generation without context
zulip-cogen GENERATES: Synthesizes artifacts from sufficient context
```

## Frog Lifecycle as Cogen Pipeline

| Stage | Trit | Cogen Phase | Sufficiency Check |
|-------|------|-------------|-------------------|
| πŸ₯’ TADPOLE | -1 | Retrieve context | Ξ΅-machine inference |
| 🐸 FROGLET | 0 | Extract structure | Coverage β‰₯ 0.7 |
| 🦎 MATURE | +1 | Synthesize artifact | Generate if sufficient |

## Integration with Skills

Generated artifacts feed back into skill ecosystem:

```
zulip-cogen skill --pond theory:-type-theory
    ↓
~/.claude/skills/type-theory-ct/SKILL.md
    ↓
proof-of-frog verifies GF(3) balance
```

## Gay.jl Coloring

Each generation gets deterministic color based on query hash:

```python
def generation_color(query: str, mode: str) -> str:
    h = fnv1a(f"{query}:{mode}")
    seed = splitmix64(GAY_SEED ^ h)
    return seed_to_color(seed)
```

## Files

| Path | Purpose |
|------|---------|
| `~/ies/hatchery.duckdb` | CT Zulip archive |
| `~/ies/zulip_cogen.py` | Generator implementation |
| `~/.claude/skills/zulip-cogen/` | Skill definition |

## References

- [CT Zulip Archive](https://github.com/plurigrid/ct-zulip-archive)
- [Mathlib4](https://github.com/leanprover-community/mathlib4)
- [AlgebraicJulia](https://github.com/AlgebraicJulia)
- [cats-for-ai Zulip](https://cats-for-ai.zulipchat.com/)
zulip-cogen | SkillHub