org.simocracy.skill

gainforest.earth

Schema Diff

+16 -35

From

CID
bafyreie7wdds7f7...
Indexed At
2026-04-07 23:25 UTC
View this version

To

CID
bafyreibowmnfdy7...
Indexed At
2026-08-18 23:43 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

14 breaking changes, 7 non-breaking changes.

Breaking Changes (14)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.text", kind: "prop", name: Some("text") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.name", kind: "prop", name: Some("name") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.shortDescription", kind: "prop", name: Some("shortDescription") }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.category" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.description" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.shortDescription" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.skillMd" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.skillUrl" }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.category", kind: "prop", name: Some("category") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.description", kind: "prop", name: Some("description") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.skillMd", kind: "prop", name: Some("skillMd") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.skillUrl", kind: "prop", name: Some("skillUrl") }
  • ConstraintTightened ConstraintTightened { vertex_id: "org.simocracy.skill:body.name", sort: "maxLength", old_value: "3000", new_value: "1000" }
  • ConstraintTightened ConstraintTightened { vertex_id: "org.simocracy.skill:body.name", sort: "maxGraphemes", old_value: "300", new_value: "100" }
Non-Breaking Changes (7)
  • AddedVertex AddedVertex { vertex_id: "app.bsky.richtext.facet" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.skill:body.facets" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.skill:body.facets:items" }
  • AddedVertex AddedVertex { vertex_id: "org.simocracy.skill:body.text" }
  • AddedEdge AddedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.facets", kind: "prop", name: Some("facets") }
  • AddedEdge AddedEdge { src: "org.simocracy.skill:body.facets", tgt: "org.simocracy.skill:body.facets:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "org.simocracy.skill:body.facets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "org.simocracy.skill:body.category" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.description" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.shortDescription" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.skillMd" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.skillUrl" }

Added Elements

  • AddedVertex { vertex_id: "app.bsky.richtext.facet" }
  • AddedVertex { vertex_id: "org.simocracy.skill:body.facets" }
  • AddedVertex { vertex_id: "org.simocracy.skill:body.facets:items" }
  • AddedVertex { vertex_id: "org.simocracy.skill:body.text" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "org.simocracy.skill:body.name", sort: "maxGraphemes", old_value: "300", new_value: "100" }
  • ConstraintTightened ConstraintTightened { vertex_id: "org.simocracy.skill:body.name", sort: "maxLength", old_value: "3000", new_value: "1000" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.text", kind: "prop", name: Some("text") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.name", kind: "prop", name: Some("name") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.simocracy.skill:body", src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.shortDescription", kind: "prop", name: Some("shortDescription") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.category", kind: "prop", name: Some("category") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.description", kind: "prop", name: Some("description") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.skillMd", kind: "prop", name: Some("skillMd") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.skillUrl", kind: "prop", name: Some("skillUrl") }
  • Non-breaking: AddedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.facets", kind: "prop", name: Some("facets") }
  • Non-breaking: AddedEdge { src: "org.simocracy.skill:body.facets", tgt: "org.simocracy.skill:body.facets:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "org.simocracy.skill:body.facets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "description": "A skill that sims can use in governance events — allocation mechanisms, evaluation methods, deliberation protocols.",
5 +
      "description": "A shareable skill file posted to a community. Deliberately mirrors org.simocracy.feed.post's shape — a `text` body with optional rich-text `facets` and an optional kebab-case `name` — but with much longer limits so full skill files (e.g. SKILL.md bodies) fit in a single record. Required fields are just `text` and `createdAt`, same as a feed post.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 -
          "category": {
10 -
            "description": "Mechanism category",
11 -
            "knownValues": [
12 -
              "allocation",
13 -
              "evaluation",
14 -
              "deliberation"
15 -
            ],
16 -
            "maxLength": 1000,
17 -
            "type": "string"
18 -
          },
19 9
          "createdAt": {
20 10
            "format": "datetime",
21 11
            "type": "string"
22 12
          },
23 -
          "description": {
24 -
            "description": "Full explanation of how the mechanism works",
25 -
            "maxGraphemes": 3000,
26 -
            "maxLength": 30000,
27 -
            "type": "string"
13 +
          "facets": {
14 +
            "description": "Annotations of text (mentions, URLs, hashtags, etc), same as feed posts.",
15 +
            "items": {
16 +
              "ref": "app.bsky.richtext.facet",
17 +
              "type": "ref"
18 +
            },
19 +
            "type": "array"
28 20
          },
29 21
          "name": {
30 -
            "maxGraphemes": 300,
31 -
            "maxLength": 3000,
32 -
            "type": "string"
33 -
          },
34 -
          "shortDescription": {
35 -
            "description": "Brief summary for cards",
36 -
            "maxGraphemes": 300,
37 -
            "maxLength": 3000,
38 -
            "type": "string"
39 -
          },
40 -
          "skillMd": {
41 -
            "description": "Full skill.md content that agents read to understand and execute this mechanism. Stored directly in the record.",
42 -
            "maxGraphemes": 10000,
43 -
            "maxLength": 100000,
22 +
            "description": "Optional lowercase kebab-case identifier for the skill (e.g. `quadratic-funding`). Handy for agents loading the skill; not required for plain messages.",
23 +
            "maxGraphemes": 100,
24 +
            "maxLength": 1000,
44 25
            "type": "string"
45 26
          },
46 -
          "skillUrl": {
47 -
            "description": "URL to the skill.md that agents read to execute this mechanism",
48 -
            "maxLength": 5000,
27 +
          "text": {
28 +
            "description": "The skill body — plain-text message or full skill-file content.",
29 +
            "maxGraphemes": 50000,
30 +
            "maxLength": 500000,
49 31
            "type": "string"
50 32
          }
51 33
        },
52 34
        "required": [
53 -
          "name",
54 -
          "shortDescription",
35 +
          "text",
55 36
          "createdAt"
56 37
        ],
57 38
        "type": "object"
58 39
      },
59 40
      "type": "record"
60 41
    }
61 42
  },
62 43
  "id": "org.simocracy.skill",
63 44
  "lexicon": 1
64 45
}

Compare Other Versions

Lexicon Garden

@