Transform ChatGPT ZIP exports into ACSets (Attributed C-Sets) for:
Scanned 9/6/2026
Install to Claude Code
npx -y skills add plurigrid/asi --skill chatgpt-export-acset --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Chatgpt Export Acset?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/plurigrid-chatgpt-export-acset)More formats (shields.io, HTML) on the badges page.
---
name: chatgpt-export-acset
description: 'Transform ChatGPT ZIP exports into ACSets (Attributed C-Sets) for:'
color: '#10B981'
metadata:
interface_ports:
- Related Skills
- GF(3) Triads
trit: 0
---
# chatgpt-export-acset
> Process ChatGPT data exports into ACSets for categorical analysis
**Version**: 1.0.0
**Trit**: 0 (ERGODIC - data transformation coordinator)
**Color**: #10B981
## Overview
Transform ChatGPT ZIP exports into ACSets (Attributed C-Sets) for:
- Conversation graph analysis
- Message threading reconstruction
- Author/role relationship mapping
- Attachment tracking
## Schema
```
┌─────────────────────────────────────────────────────────────┐
│ SchChatGPTExport │
├─────────────────────────────────────────────────────────────┤
│ │
│ Conversation ◄──── conversation_of ──── Message │
│ │ │ │
│ │ ├── author_of ──► Author
│ │ │ │
│ │ └── parent_msg ─┐│
│ │ ▲ ││
│ │ └──────────┘│
│ │ │
│ └─────────────────────── Attachment ◄─ attachment_of ──┘
│ │
└─────────────────────────────────────────────────────────────┘
```
## ACSet Definition (Julia)
```julia
@present SchChatGPTExport(FreeSchema) begin
Conversation::Ob
Message::Ob
Author::Ob
Attachment::Ob
conversation_of::Hom(Message, Conversation)
author_of::Hom(Message, Author)
parent_msg::Hom(Message, Message)
attachment_of::Hom(Attachment, Message)
# Attributes
Title::AttrType
Content::AttrType
Role::AttrType
Time::AttrType
FileID::AttrType
title::Attr(Conversation, Title)
conv_id::Attr(Conversation, Title)
create_time::Attr(Conversation, Time)
msg_id::Attr(Message, Title)
content::Attr(Message, Content)
status::Attr(Message, Title)
name::Attr(Author, Title)
role::Attr(Author, Role)
file_id::Attr(Attachment, FileID)
file_type::Attr(Attachment, Title)
end
```
## Python Implementation (py-acset style)
```python
from dataclasses import dataclass, field
@dataclass
class PyACSet:
schema: dict
parts: dict = field(default_factory=dict)
subparts: dict = field(default_factory=dict)
def add_part(self, ob: str, **attrs) -> int:
idx = len(self.parts[ob])
self.parts[ob].append(idx)
for attr, val in attrs.items():
self.subparts[f"{ob}_{attr}"].append(val)
return idx
def set_subpart(self, morph: str, src: int, tgt: int):
while len(self.subparts[morph]) <= src:
self.subparts[morph].append(None)
self.subparts[morph][src] = tgt
```
## Usage
### Extract agent-o-rama conversations
```bash
cd /path/to/extracted/zip
python3 extract_agent_o_rama.py
```
### Query with Specter-style navigation
```julia
using ACSets
# All messages in a conversation
messages_in_conv(acset, conv_id) = incident(acset, conv_id, :conversation_of)
# Thread reconstruction (follow parent_msg)
function thread_path(acset, msg_id)
path = [msg_id]
while (parent = acset[msg_id, :parent_msg]) !== nothing
pushfirst!(path, parent)
msg_id = parent
end
path
end
# All messages by role
by_role(acset, role) = findall(==(role), acset[:role])
```
## Files
| File | Purpose |
|------|---------|
| `extract_agent_o_rama.py` | Python extractor for agent-o-rama conversations |
| `agent_o_rama_acset.json` | Exported ACSet data |
| `agent_o_rama_schema.jl` | Julia schema definition |
## Export Format
```json
{
"parts": {
"Conversation": [0, 1, 2, ...],
"Message": [0, 1, 2, ...],
"Author": [0, 1, 2, 3]
},
"subparts": {
"conversation_of": [0, 0, 0, 1, 1, ...],
"author_of": [0, 1, 0, 1, ...],
"parent_msg": [null, 0, 1, null, 3, ...],
"Conversation_title": ["Title1", "Title2", ...],
"Message_content": ["Hello", "Response", ...]
}
}
```
Base directory: file:///Users/bob/.claude/skills/chatgpt-export-acset
---
## End-of-Skill Interface
## GF(3) Triads
```
three-match (-1) ⊗ chatgpt-export-acset (0) ⊗ gay-mcp (+1) = 0 ✓
temporal-coalgebra (-1) ⊗ chatgpt-export-acset (0) ⊗ duckdb-timetravel (+1) = 0 ✓
```
## Related Skills
- `acsets-algebraic-databases` - Core ACSet theory
- `specter-acset` - Bidirectional navigation
- `lispsyntax-acset` - Sexp bridge
- `duckdb-timetravel` - Temporal versioning
- `agent-o-rama` - Red Planet Labs Rama patterns
---
## Autopoietic Marginalia
> **The interaction IS the skill improving itself.**
Every use of this skill is an opportunity for worlding:
- **MEMORY** (-1): Record what was learned
- **REMEMBERING** (0): Connect patterns to other skills
- **WORLDING** (+1): Evolve the skill based on use
*Add Interaction Exemplars here as the skill is used.*
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!