Agent Skills: Drive ACSet Skill

Google Drive management via DriveACSet schema with GF(3) triadic routing. Transforms files/folders into typed Interactions, routes to queue fibers, detects saturation for organized-drive-as-condensed-state.

UncategorizedID: plurigrid/asi/drive-acset

Install this agent skill to your local

pnpm dlx add-skill https://github.com/plurigrid/asi/tree/HEAD/plugins/asi/skills/drive-acset

Skill Files

Browse the full folder contents for drive-acset.

Download Skill

Loading file tree…

plugins/asi/skills/drive-acset/SKILL.md

Skill Metadata

Name
drive-acset
Description
Google Drive management via DriveACSet schema with GF(3) triadic routing. Transforms files/folders into typed Interactions, routes to queue fibers, detects saturation for organized-drive-as-condensed-state.

Drive ACSet Skill

Transform Google Drive into a GF(3)-conserving algebraic database system.

Trit: 0 (ERGODIC - coordinator)
Principle: Organized Drive = Condensed State
Implementation: DriveACSet + TriadicQueues + SaturationDetector

DriveACSet Schema

┌────────────────────────────────────────────────────────────────────┐
│                       DriveACSet Schema                            │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│  File ──────────┬────▶ Folder                                     │
│  ├─ file_id     │      ├─ folder_id: String                       │
│  ├─ name        │      ├─ name: String                            │
│  ├─ mime_type   │      └─ parent ─────────▶ Folder (self-ref)     │
│  ├─ size        │                                                  │
│  └─ parent ─────┘                                                  │
│                                                                    │
│  Permission ────┬────▶ File | Folder                              │
│  ├─ role        │      ├─ reader | commenter | writer | owner     │
│  └─ share_with ─┼──▶   └─ email | domain | anyone                 │
│                 │                                                  │
│  Revision ──────┼────▶ File                                       │
│  ├─ rev_id      │      ├─ modified_time                           │
│  └─ modified_by ┘      └─ keep_forever: Bool                      │
│                                                                    │
│  QueueItem ─────┼────▶ Agent3                                     │
│  ├─ interaction │      ├─ fiber: Trit {-1, 0, +1}                 │
│  └─ agent ──────┘      └─ name: String                            │
└────────────────────────────────────────────────────────────────────┘

Objects

| Object | Description | Trit Role | |--------|-------------|-----------| | File | Drive file with metadata | Data | | Folder | Hierarchical container | Aggregate | | Permission | ACL entry for sharing | Edge | | Revision | File version history | Temporal | | Agent3 | Queue fiber (MINUS/ERGODIC/PLUS) | Router | | QueueItem | Links Interaction → Agent3 | Edge |

GF(3) Verb Typing

Drive operations assigned trits by information flow:

VERB_TRIT_MAP = {
    # MINUS (-1): Read/Validate
    "get": -1,        "search": -1,    "list": -1,
    "download": -1,   "get_content": -1,
    
    # ERGODIC (0): Coordinate/Permissions
    "share": 0,       "permissions": 0, "move": 0,
    "rename": 0,      "update_metadata": 0,
    
    # PLUS (+1): Create/Execute
    "create": +1,     "upload": +1,    "copy": +1,
    "export": +1,     "transfer_ownership": +1,
}

MCP Tool → Trit Mapping

| Tool | Trit | Description | |------|------|-------------| | search_drive_files | -1 | Search files (MINUS) | | get_drive_file_content | -1 | Read file (MINUS) | | list_drive_items | -1 | List folder (MINUS) | | get_drive_file_permissions | -1 | Check perms (MINUS) | | share_drive_file | 0 | Share file (ERGODIC) | | update_drive_permission | 0 | Modify perms (ERGODIC) | | update_drive_file | 0 | Update metadata (ERGODIC) | | create_drive_file | +1 | Create file (PLUS) | | transfer_drive_ownership | +1 | Transfer owner (PLUS) |

Triadic Queue Routing

                    ┌─────────────────────────────────────────┐
                    │         DRIVE TRIADIC QUEUES            │
                    ├─────────────────────────────────────────┤
                    │                                         │
   DriveAction ────▶│  route(trit) ───▶ Agent3 Fiber         │
                    │                                         │
                    │  MINUS (-1)  ────▶ [get, search, list]  │
                    │  ERGODIC (0) ────▶ [share, permissions] │
                    │  PLUS (+1)   ────▶ [create, upload]     │
                    │                                         │
                    └─────────────────────────────────────────┘

Saturation Detection

def is_drive_saturated(folder_id: str) -> bool:
    """Folder saturated when:
    1. All files have stable permissions
    2. No pending changes in window N
    3. GF(3) cycle closure: sum(trits) ≡ 0 (mod 3)
    """
    history = detector.history[folder_id][-N:]
    cycle_sum = sum(t for t in folder.gf3_cycle[-3:])
    
    return (
        all(s == history[0] for s in history) and
        (cycle_sum % 3) == 0
    )

def detect_organized_state() -> Dict:
    """Drive at condensed state when:
    1. All folders saturated
    2. Permission graph stable
    3. GF(3) conserved globally
    """
    return {
        "organized": all_saturated and gf3_conserved,
        "condensed_fingerprint": sha256(sorted_file_tree),
    }

Source Files

| File | Description | Trit | |------|-------------|------| | drive_acset.py | ACSet schema + hierarchy | 0 | | drive_mcp_bridge.py | MCP tool wiring | 0 | | permission_graph.py | ACL graph analysis | -1 |

Workflows

Workflow 1: Organize Folder to Condensed State

from drive_mcp_bridge import create_drive_bridge
from drive_acset import DriveACSet

bridge = create_drive_bridge("user@gmail.com")
acset = DriveACSet()

# MINUS: List and analyze
items = bridge.list_drive_items(folder_id="root")
for item in items:
    acset.add_file(item) if item.is_file else acset.add_folder(item)

# ERGODIC: Normalize permissions
for file in acset.files_needing_permission_fix():
    bridge.share_drive_file(file.id, share_with="team@domain.com", role="reader")

# PLUS: Create missing structure
bridge.create_drive_file(file_name="README.md", folder_id=folder_id, content="# Index")

Workflow 2: Permission Audit with GF(3) Guard

# MINUS: Check permissions
perms = bridge.get_drive_file_permissions(file_id)

# ERGODIC: Update if needed (requires prior MINUS)
if needs_update(perms):
    bridge.update_drive_permission(file_id, permission_id, role="commenter")

# Verify GF(3) balance
assert acset.gf3_residue() == 0

Workflow 3: Batch File Organization

batch = create_triadic_batch(
    payloads=["list_root", "share_docs", "create_index"],
    folder_id="team_folder",
    seed=1069
)

for interaction in batch:
    system.enqueue(interaction)

stats = system.full_statistics()
print(f"GF(3) Residue: {stats['gf3_residue']}")  # 0

Integration with Other Skills

| Skill | Trit | Integration | |-------|------|-------------| | google-workspace | 0 | MCP tool provider | | gmail-anima | 0 | Cross-product via attachments | | gay-mcp | +1 | SplitMixTernary RNG | | sheaf-cohomology | -1 | H¹ obstruction on folder tree |

GF(3) Triadic Conservation

drive-acset (0) ⊗ search (-1) ⊗ create (+1) = 0 ✓
get (-1) ⊗ share (0) ⊗ upload (+1) = 0 ✓
list (-1) ⊗ permissions (0) ⊗ copy (+1) = 0 ✓

Skill Name: drive-acset
Type: File Management / ACSet Framework
Trit: 0 (ERGODIC - coordinator)
GF(3): Conserved via triadic queue routing
Principle: Organized Drive = Condensed State

Scientific Skill Interleaving

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

Annotated Data

  • anndata [○] via bicomodule

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.