org.simocracy.skill

gainforest.earth

Schema Diff

+12 -40

From

CID
bafyreia5d4hhzwk...
Indexed At
2026-03-19 20:27 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

25 breaking changes, 7 non-breaking changes.

Breaking Changes (25)
  • 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.sim", kind: "prop", name: Some("sim") }
  • RemovedVertex RemovedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.description" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.descriptionFacets" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.descriptionFacets:items" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.instructions" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.instructionsFacets" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.instructionsFacets:items" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.sim" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.triggers" }
  • RemovedVertex RemovedVertex { vertex_id: "org.simocracy.skill:body.triggers:items" }
  • 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.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.instructions", kind: "prop", name: Some("instructions") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.instructionsFacets", kind: "prop", name: Some("instructionsFacets") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.triggers", kind: "prop", name: Some("triggers") }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.descriptionFacets", tgt: "org.simocracy.skill:body.descriptionFacets:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.instructionsFacets", tgt: "org.simocracy.skill:body.instructionsFacets:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.instructionsFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.sim", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.simocracy.skill:body.triggers", tgt: "org.simocracy.skill:body.triggers:items", kind: "items", name: None }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.skill:body.name", sort: "maxGraphemes", value: "100" }
Non-Breaking Changes (7)
  • 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 }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.simocracy.skill:body.name", sort: "maxLength", old_value: "128", new_value: "1000" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.description" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.descriptionFacets" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.descriptionFacets:items" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.instructions" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.instructionsFacets" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.instructionsFacets:items" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.sim" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.triggers" }
  • RemovedVertex { vertex_id: "org.simocracy.skill:body.triggers:items" }

Added Elements

  • 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

  • ConstraintAdded ConstraintAdded { vertex_id: "org.simocracy.skill:body.name", sort: "maxGraphemes", value: "100" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "org.simocracy.skill:body.name", sort: "maxLength", old_value: "128", 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.sim", kind: "prop", name: Some("sim") }
  • 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.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.instructions", kind: "prop", name: Some("instructions") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.instructionsFacets", kind: "prop", name: Some("instructionsFacets") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body", tgt: "org.simocracy.skill:body.triggers", kind: "prop", name: Some("triggers") }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.descriptionFacets", tgt: "org.simocracy.skill:body.descriptionFacets:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.instructionsFacets", tgt: "org.simocracy.skill:body.instructionsFacets:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.instructionsFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.sim", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.simocracy.skill:body.triggers", tgt: "org.simocracy.skill:body.triggers:items", kind: "items", name: None }
  • 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 the sim possesses. A sim can have many skills.",
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 9
          "createdAt": {
10 -
            "description": "Timestamp when the skill was created",
11 10
            "format": "datetime",
12 11
            "type": "string"
13 12
          },
14 -
          "description": {
15 -
            "description": "Short description of what this skill does. Rich text annotations may be provided via descriptionFacets.",
16 -
            "maxGraphemes": 300,
17 -
            "maxLength": 3000,
18 -
            "type": "string"
19 -
          },
20 -
          "descriptionFacets": {
21 -
            "description": "Rich text annotations for description.",
13 +
          "facets": {
14 +
            "description": "Annotations of text (mentions, URLs, hashtags, etc), same as feed posts.",
22 15
            "items": {
23 16
              "ref": "app.bsky.richtext.facet",
24 17
              "type": "ref"
25 18
            },
26 19
            "type": "array"
27 20
          },
28 -
          "instructions": {
29 -
            "description": "Detailed step-by-step instructions for executing this skill. Rich text annotations may be provided via instructionsFacets.",
30 -
            "maxGraphemes": 3000,
31 -
            "maxLength": 30000,
21 +
          "name": {
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,
32 25
            "type": "string"
33 26
          },
34 -
          "instructionsFacets": {
35 -
            "description": "Rich text annotations for instructions.",
36 -
            "items": {
37 -
              "ref": "app.bsky.richtext.facet",
38 -
              "type": "ref"
39 -
            },
40 -
            "type": "array"
41 -
          },
42 -
          "name": {
43 -
            "description": "Name of the skill",
44 -
            "maxLength": 128,
27 +
          "text": {
28 +
            "description": "The skill body — plain-text message or full skill-file content.",
29 +
            "maxGraphemes": 50000,
30 +
            "maxLength": 500000,
45 31
            "type": "string"
46 -
          },
47 -
          "sim": {
48 -
            "description": "Reference to the sim record this skill belongs to",
49 -
            "ref": "com.atproto.repo.strongRef",
50 -
            "type": "ref"
51 -
          },
52 -
          "triggers": {
53 -
            "description": "Conditions or phrases that trigger this skill",
54 -
            "items": {
55 -
              "type": "string"
56 -
            },
57 -
            "maxLength": 10,
58 -
            "type": "array"
59 32
          }
60 33
        },
61 34
        "required": [
62 -
          "sim",
63 -
          "name",
35 +
          "text",
64 36
          "createdAt"
65 37
        ],
66 38
        "type": "object"
67 39
      },
68 40
      "type": "record"
69 41
    }
70 42
  },
71 43
  "id": "org.simocracy.skill",
72 44
  "lexicon": 1
73 45
}

Compare Other Versions

Lexicon Garden

@