Claude Code Plugins

Community-maintained marketplace

Feedback

delta-derivation

@plurigrid/asi
0
0

Extract information delta between Claude.ai conversation exports using ACSets morphisms and bisimulation verification

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name delta-derivation
description Extract information delta between Claude.ai conversation exports using ACSets morphisms and bisimulation verification
version 1.0.0

Delta Derivation Skill

Trit: -1 (MINUS - Validator) Color: #007FFF (Cold Blue) Role: Extract and verify conversation export deltas


Core Algorithm

# 1. Extract conversations from exports
unzip -o "$RECENT_ZIP" conversations.json -d /tmp/recent_export
unzip -o "$PREVIOUS_ZIP" conversations.json -d /tmp/previous_export

# 2. Extract conversation IDs
jq -r '.[].conversation_id' /tmp/recent_export/conversations.json | sort > /tmp/recent_ids.txt
jq -r '.[].conversation_id' /tmp/previous_export/conversations.json | sort > /tmp/prev_ids.txt

# 3. Compute delta (new conversations)
comm -23 /tmp/recent_ids.txt /tmp/prev_ids.txt > /tmp/new_ids.txt

# 4. Bisimulation check (mutations in shared conversations)
jq -r '.[] | "\(.conversation_id) \(.current_node)"' /tmp/recent_export/conversations.json | sort > /tmp/recent_states.txt
jq -r '.[] | "\(.conversation_id) \(.current_node)"' /tmp/previous_export/conversations.json | sort > /tmp/prev_states.txt
comm -3 /tmp/recent_states.txt /tmp/prev_states.txt > /tmp/mutated.txt

ACSets Schema

(def ConversationACSet
  {:objects #{:Conversation :Message :Node}
   :morphisms {:has_mapping [:Conversation :Node]
               :parent_of [:Node :Node]
               :contains [:Node :Message]}
   :attributes {:conversation_id [:Conversation :String]
                :title [:Conversation :String]
                :create_time [:Conversation :Timestamp]
                :update_time [:Conversation :Timestamp]
                :current_node [:Conversation :UUID]}})

(defn delta-morphism [recent previous]
  "Compute injective morphism from previous → recent"
  (let [shared (set/intersection (ids recent) (ids previous))
        new-convos (set/difference (ids recent) (ids previous))
        removed (set/difference (ids previous) (ids recent))]
    {:type :injection
     :shared (count shared)
     :new (count new-convos)
     :removed (count removed)
     :new-ids new-convos}))

Bisimulation Verification

(defn bisimilar? [conv1 conv2]
  "Check if two conversations are observationally equivalent"
  (and (= (:conversation_id conv1) (:conversation_id conv2))
       (= (:current_node conv1) (:current_node conv2))
       (= (count (:mapping conv1)) (count (:mapping conv2)))))

(defn find-mutations [recent previous]
  "Find conversations that exist in both but have diverged"
  (let [shared-ids (set/intersection (ids recent) (ids previous))]
    (filter (fn [id]
              (not (bisimilar? (get-conv recent id)
                               (get-conv previous id))))
            shared-ids)))

Skill Extraction

(defn extract-skill-mentions [conversations]
  "Find skill invocations in conversation content"
  (let [patterns [#"/(\w+)"                    ; slash commands
                  #"skill[:\s]+[\"']?(\w+)"   ; skill mentions
                  #"(\w+-\w+(?:-\w+)*)"]]     ; hyphenated skill names
    (->> conversations
         (mapcat :messages)
         (mapcat (fn [msg]
                   (for [p patterns
                         m (re-seq p (:content msg ""))]
                     (second m))))
         frequencies
         (sort-by val >))))

Full Pipeline

#!/usr/bin/env bash
# delta-derive.sh - Extract conversation export delta

set -euo pipefail

RECENT="$1"
PREVIOUS="$2"
OUTPUT="${3:-/tmp/delta_analysis.json}"

# Extract
unzip -qo "$RECENT" conversations.json -d /tmp/recent_export
unzip -qo "$PREVIOUS" conversations.json -d /tmp/previous_export

# Compute delta
jq -s '
  (.[0] | map({key: .conversation_id, value: .}) | from_entries) as $recent |
  (.[1] | map({key: .conversation_id, value: .}) | from_entries) as $prev |
  {
    recent_count: (.[0] | length),
    previous_count: (.[1] | length),
    new_conversations: [.[0][] | select(.conversation_id | in($prev) | not) | {
      id: .conversation_id,
      title: .title,
      created: .create_time,
      nodes: (.mapping | length)
    }],
    mutated_conversations: [.[0][] |
      select(.conversation_id | in($prev)) |
      select(.current_node != $prev[.conversation_id].current_node) |
      {
        id: .conversation_id,
        title: .title,
        old_node: $prev[.conversation_id].current_node,
        new_node: .current_node,
        node_delta: ((.mapping | length) - ($prev[.conversation_id].mapping | length))
      }
    ],
    delta_size_bytes: ((.[0] | tostring | length) - (.[1] | tostring | length))
  }
' /tmp/recent_export/conversations.json /tmp/previous_export/conversations.json > "$OUTPUT"

echo "Delta saved to $OUTPUT"
jq -r '"New: \(.new_conversations | length), Mutated: \(.mutated_conversations | length)"' "$OUTPUT"

GF(3) Triadic Analysis

Stream Role Analysis
MINUS (-1) Validator Bisimulation check, mutation detection
ERGODIC (0) Coordinator Merge results, compute frequencies
PLUS (+1) Generator Extract new conversations, skill mentions
(defn triadic-delta [recent previous]
  "Run delta derivation with GF(3) balanced agents"
  (let [minus (future (find-mutations recent previous))
        ergodic (future (compute-frequencies recent previous))
        plus (future (extract-new-convos recent previous))]
    {:mutations @minus
     :frequencies @ergodic
     :new-convos @plus
     :gf3-sum 0}))

Commands

just delta-derive RECENT.zip PREVIOUS.zip   # Full delta analysis
just delta-new RECENT.zip PREVIOUS.zip      # List new conversations only
just delta-mutated RECENT.zip PREVIOUS.zip  # List mutated conversations
just delta-skills RECENT.zip PREVIOUS.zip   # Extract skill frequencies
just delta-bisim RECENT.zip PREVIOUS.zip    # Run bisimulation check

Justfile Integration

# Delta derivation commands
delta-derive recent previous:
    @~/.claude/skills/delta-derivation/delta-derive.sh "{{recent}}" "{{previous}}"

delta-new recent previous:
    @unzip -qo "{{recent}}" conversations.json -d /tmp/r && \
     unzip -qo "{{previous}}" conversations.json -d /tmp/p && \
     comm -23 <(jq -r '.[].conversation_id' /tmp/r/conversations.json | sort) \
              <(jq -r '.[].conversation_id' /tmp/p/conversations.json | sort)

delta-skills recent previous:
    @~/.claude/skills/delta-derivation/delta-derive.sh "{{recent}}" "{{previous}}" && \
     jq '.new_conversations[].title' /tmp/delta_analysis.json

Related Skills

  • acsets-relational-thinking (-1): Schema modeling
  • bisimulation-game (0): Equivalence verification
  • temporal-coalgebra (-1): Stream observation
  • compression-progress (0): Information gain measurement

Base directory: ~/.claude/skills/delta-derivation

Scientific Skill Interleaving

This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:

Graph Theory

  • networkx [○] via bicomodule
    • Universal graph hub

Bibliography References

  • general: 734 citations in bib.duckdb

Cat# Integration

This skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:

Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826

GF(3) Naturality

The skill participates in triads satisfying:

(-1) + (0) + (+1) ≡ 0 (mod 3)

This ensures compositional coherence in the Cat# equipment structure.