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