arkiv-social-graph
Installation
SKILL.md
Arkiv social graphs
Use the published arkiv-graph@0.3.1 public imports. Its SDK peer is >=0.8.0 <0.9.0; the examples below were checked with SDK 0.8.1. Read the package's consumer guide and installed declarations. Core builders can run without rendering React; arkiv-graph/react is a separate client entry.
Installation still brings React/d3 dependencies through react-force-graph-2d, even for a core-only Node consumer. Check the application's existing React peer compatibility before installing; the separate core import does not remove that dependency tree.
Define the relationship
- Choose the public creator/owner scope, app namespace, endpoint identifiers and relationship meaning with the developer.
project, profile names and relationship attributes identify data; they do not authorize readers or establish trusted authorship. - Store a follow/like as its own entity with lowercase attributes, such as
entity_type: "follow",source_keyandtarget_key. Entity Expiration belongs to this edge independently of its endpoints. The package reads relationships; it does not write edges or enforce foreign keys. - Pass
typeAttribute: "entity_type"explicitly to builders/fetch. The library's default is camelCaseentityType, which is unsuitable for newly written Tiramisu attributes. Pass the canonical explorerhttps://tiramisu.explorer.arkiv.network; 0.3.1 defaults to a noncanonical alias. The alias alone is not evidence of a broken link. - A directed follow is source → target. Set
directed: true; usefalseonly when the product deliberately treats the relation as symmetric. Self-joins are skipped by the join builder. - Distinct edge entities connecting the same pair remain distinct edges. The builder deduplicates edge IDs, not semantic pairs. Decide whether multiple follows/likes are meaningful; enforce any uniqueness in the app and reconcile concurrent or uncertain writes with
arkiv-write-safety. - Prefer entity keys as endpoints. Stable business IDs need type-specific matching and a uniqueness policy: join indexes keep the first matching entity when IDs collide.
- A ghost node means an endpoint was not fetched, not proof that it expired. It may be outside the query scope, truncated, missing or expired. Verify live availability separately. With placeholders disabled, unresolved joins remain standalone entities instead of becoming edges.
Use arkiv-data-modeling for the schema and arkiv-security-trust for publisher/mutable-owner policy. These are public relationships, not private follows or a SQL join engine.