@forwardimpact/schema 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/examples/capabilities/delivery.yaml +821 -172
- package/examples/capabilities/reliability.yaml +165 -285
- package/examples/capabilities/scale.yaml +1344 -103
- package/examples/tracks/platform.yaml +4 -1
- package/examples/tracks/sre.yaml +5 -2
- package/package.json +1 -1
- package/schema/json/capability.schema.json +12 -4
- package/schema/rdf/capability.ttl +34 -8
- package/src/loader.js +5 -0
- package/src/validation.js +44 -0
|
@@ -28,8 +28,11 @@ assessmentWeights:
|
|
|
28
28
|
# Agent-specific content
|
|
29
29
|
agent:
|
|
30
30
|
identity: |
|
|
31
|
-
You are a Platform {roleTitle} agent. Your primary focus is
|
|
31
|
+
You are a Platform {roleTitle} agent. Your primary focus is
|
|
32
32
|
building self-service capabilities that enable other engineers.
|
|
33
|
+
You treat checklists the way surgeons and pilots do—not as a
|
|
34
|
+
crutch, but as a discipline that catches the errors expertise
|
|
35
|
+
alone cannot prevent.
|
|
33
36
|
priority: |
|
|
34
37
|
Developer experience is paramount. You design golden paths, maintain
|
|
35
38
|
backward compatibility, and document everything. Code quality and
|
package/examples/tracks/sre.yaml
CHANGED
|
@@ -27,8 +27,11 @@ assessmentWeights:
|
|
|
27
27
|
# Agent-specific content
|
|
28
28
|
agent:
|
|
29
29
|
identity: |
|
|
30
|
-
You are an SRE {roleTitle} agent. Your primary focus is
|
|
31
|
-
system reliability, observability, and incident response.
|
|
30
|
+
You are an SRE {roleTitle} agent. Your primary focus is
|
|
31
|
+
system reliability, observability, and incident response. You
|
|
32
|
+
treat checklists the way surgeons and pilots do—not as a crutch,
|
|
33
|
+
but as a discipline that catches the errors expertise alone
|
|
34
|
+
cannot prevent.
|
|
32
35
|
priority: |
|
|
33
36
|
Reliability is non-negotiable. You instrument everything, design for
|
|
34
37
|
graceful degradation, and maintain error budgets. Every change
|
package/package.json
CHANGED
|
@@ -89,14 +89,22 @@
|
|
|
89
89
|
"$ref": "#/$defs/skillAgentSection",
|
|
90
90
|
"description": "Agent-specific content for the skill"
|
|
91
91
|
},
|
|
92
|
-
"implementationReference": {
|
|
93
|
-
"type": "string",
|
|
94
|
-
"description": "Implementation patterns and code examples in markdown format (shared by human and agent)"
|
|
95
|
-
},
|
|
96
92
|
"toolReferences": {
|
|
97
93
|
"type": "array",
|
|
98
94
|
"description": "Required tools for this skill",
|
|
99
95
|
"items": { "$ref": "#/$defs/toolReference" }
|
|
96
|
+
},
|
|
97
|
+
"instructions": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "Step-by-step workflow guidance for the main SKILL.md body"
|
|
100
|
+
},
|
|
101
|
+
"installScript": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "Shell commands for environment setup, exported to scripts/install.sh"
|
|
104
|
+
},
|
|
105
|
+
"implementationReference": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"description": "Code examples and detailed reference material, exported to references/REFERENCE.md"
|
|
100
108
|
}
|
|
101
109
|
},
|
|
102
110
|
"additionalProperties": false
|
|
@@ -77,9 +77,21 @@ fit:levelDescriptions a rdf:Property ;
|
|
|
77
77
|
rdfs:comment "Description of expectations at each level"@en ;
|
|
78
78
|
rdfs:range fit:LevelDescriptions .
|
|
79
79
|
|
|
80
|
+
fit:instructions a rdf:Property ;
|
|
81
|
+
rdfs:label "instructions"@en ;
|
|
82
|
+
rdfs:comment "Step-by-step workflow guidance for the main SKILL.md body"@en ;
|
|
83
|
+
rdfs:domain fit:Skill ;
|
|
84
|
+
rdfs:range xsd:string .
|
|
85
|
+
|
|
86
|
+
fit:installScript a rdf:Property ;
|
|
87
|
+
rdfs:label "installScript"@en ;
|
|
88
|
+
rdfs:comment "Shell commands for environment setup, exported to scripts/install.sh"@en ;
|
|
89
|
+
rdfs:domain fit:Skill ;
|
|
90
|
+
rdfs:range xsd:string .
|
|
91
|
+
|
|
80
92
|
fit:implementationReference a rdf:Property ;
|
|
81
93
|
rdfs:label "implementationReference"@en ;
|
|
82
|
-
rdfs:comment "
|
|
94
|
+
rdfs:comment "Code examples and detailed reference material, exported to references/REFERENCE.md"@en ;
|
|
83
95
|
rdfs:domain fit:Skill ;
|
|
84
96
|
rdfs:range xsd:string .
|
|
85
97
|
|
|
@@ -277,18 +289,32 @@ fit:SkillShape a sh:NodeShape ;
|
|
|
277
289
|
sh:name "agent" ;
|
|
278
290
|
sh:description "Agent-specific content for the skill" ;
|
|
279
291
|
] ;
|
|
280
|
-
sh:property [
|
|
281
|
-
sh:path fit:implementationReference ;
|
|
282
|
-
sh:datatype xsd:string ;
|
|
283
|
-
sh:maxCount 1 ;
|
|
284
|
-
sh:name "implementationReference" ;
|
|
285
|
-
sh:description "Implementation patterns and code examples in markdown format" ;
|
|
286
|
-
] ;
|
|
287
292
|
sh:property [
|
|
288
293
|
sh:path fit:toolReferences ;
|
|
289
294
|
sh:node fit:ToolReferenceShape ;
|
|
290
295
|
sh:name "toolReferences" ;
|
|
291
296
|
sh:description "Required tools for this skill" ;
|
|
297
|
+
] ;
|
|
298
|
+
sh:property [
|
|
299
|
+
sh:path fit:instructions ;
|
|
300
|
+
sh:datatype xsd:string ;
|
|
301
|
+
sh:maxCount 1 ;
|
|
302
|
+
sh:name "instructions" ;
|
|
303
|
+
sh:description "Step-by-step workflow guidance for the main SKILL.md body" ;
|
|
304
|
+
] ;
|
|
305
|
+
sh:property [
|
|
306
|
+
sh:path fit:installScript ;
|
|
307
|
+
sh:datatype xsd:string ;
|
|
308
|
+
sh:maxCount 1 ;
|
|
309
|
+
sh:name "installScript" ;
|
|
310
|
+
sh:description "Shell commands for environment setup, exported to scripts/install.sh" ;
|
|
311
|
+
] ;
|
|
312
|
+
sh:property [
|
|
313
|
+
sh:path fit:implementationReference ;
|
|
314
|
+
sh:datatype xsd:string ;
|
|
315
|
+
sh:maxCount 1 ;
|
|
316
|
+
sh:name "implementationReference" ;
|
|
317
|
+
sh:description "Code examples and detailed reference material, exported to references/REFERENCE.md" ;
|
|
292
318
|
] .
|
|
293
319
|
|
|
294
320
|
# -----------------------------------------------------------------------------
|
package/src/loader.js
CHANGED
|
@@ -90,6 +90,8 @@ async function loadSkillsFromCapabilities(capabilitiesDir) {
|
|
|
90
90
|
isHumanOnly,
|
|
91
91
|
human,
|
|
92
92
|
agent,
|
|
93
|
+
instructions,
|
|
94
|
+
installScript,
|
|
93
95
|
implementationReference,
|
|
94
96
|
toolReferences,
|
|
95
97
|
} = skill;
|
|
@@ -103,6 +105,9 @@ async function loadSkillsFromCapabilities(capabilitiesDir) {
|
|
|
103
105
|
...(isHumanOnly && { isHumanOnly }),
|
|
104
106
|
// Preserve agent section for agent generation
|
|
105
107
|
...(agent && { agent }),
|
|
108
|
+
// Include agent skill content fields
|
|
109
|
+
...(instructions && { instructions }),
|
|
110
|
+
...(installScript && { installScript }),
|
|
106
111
|
// Include implementation reference and tool references (shared by human and agent)
|
|
107
112
|
...(implementationReference && { implementationReference }),
|
|
108
113
|
...(toolReferences && { toolReferences }),
|
package/src/validation.js
CHANGED
|
@@ -307,6 +307,50 @@ function validateSkill(skill, index, requiredStageIds = []) {
|
|
|
307
307
|
);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
+
// Validate instructions if present (optional string)
|
|
311
|
+
if (
|
|
312
|
+
skill.instructions !== undefined &&
|
|
313
|
+
typeof skill.instructions !== "string"
|
|
314
|
+
) {
|
|
315
|
+
errors.push(
|
|
316
|
+
createError(
|
|
317
|
+
"INVALID_VALUE",
|
|
318
|
+
"Skill instructions must be a string",
|
|
319
|
+
`${path}.instructions`,
|
|
320
|
+
skill.instructions,
|
|
321
|
+
),
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Validate installScript if present (optional string)
|
|
326
|
+
if (
|
|
327
|
+
skill.installScript !== undefined &&
|
|
328
|
+
typeof skill.installScript !== "string"
|
|
329
|
+
) {
|
|
330
|
+
errors.push(
|
|
331
|
+
createError(
|
|
332
|
+
"INVALID_VALUE",
|
|
333
|
+
"Skill installScript must be a string",
|
|
334
|
+
`${path}.installScript`,
|
|
335
|
+
skill.installScript,
|
|
336
|
+
),
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Error if implementationReference still contains <onboarding_steps> tags (migration aid)
|
|
341
|
+
if (
|
|
342
|
+
typeof skill.implementationReference === "string" &&
|
|
343
|
+
skill.implementationReference.includes("<onboarding_steps>")
|
|
344
|
+
) {
|
|
345
|
+
errors.push(
|
|
346
|
+
createError(
|
|
347
|
+
"INVALID_FIELD",
|
|
348
|
+
"Skill implementationReference contains <onboarding_steps> tags. Extract install commands to skill.installScript instead.",
|
|
349
|
+
`${path}.implementationReference`,
|
|
350
|
+
),
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
|
|
310
354
|
// Validate toolReferences array if present
|
|
311
355
|
if (skill.toolReferences !== undefined) {
|
|
312
356
|
if (!Array.isArray(skill.toolReferences)) {
|