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/zulip-cogen" ~/.claude/skills/plurigrid-asi-zulip-cogen && rm -rf "$T"
manifest:
plugins/asi/skills/zulip-cogen/SKILL.mdsource content
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 |
|---|---|---|
| Math discussion | Lean4 theorem |
| Category description | Mermaid/tikzcd |
| Algorithm discussion | Julia/Python code |
| Data structure talk | ACSet definition |
| Topic cluster | SKILL.md |
Usage
# 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
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:
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 |
|---|---|---|
| 3+ math discussions | Lean4 theorem |
| 2+ structural mentions | Mermaid |
| 5+ code references | Julia/Python |
| 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:
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 |
|---|---|
| CT Zulip archive |
| Generator implementation |
| Skill definition |