org.simocracy.skill
Schema Diff
+16 -35
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
}