Skip to content

Commit 5a61eda

Browse files
committed
feat: add 5 cognitive skills + 2 new capabilities
New skills (all experimental, 0 model.output.generate): - analysis.compare: structured option comparison (3 steps, 0 new caps) - eval.validate: generic artifact validation (3 steps, 0 new caps) - task.frame: task intake and framing (4 steps, 0 new caps) - analysis.decompose: problem decomposition (3 steps, 1 new cap) - analysis.risk-assess: risk identification (3 steps, 1 new cap) New capabilities: - analysis.split: decompose problem into components with dependencies - analysis.risk.extract: extract risks, assumptions, failure modes All names use existing vocabulary (0 new terms added). Total: 108 capabilities, 42 skills.
1 parent 573aa7b commit 5a61eda

File tree

13 files changed

+2118
-39
lines changed

13 files changed

+2118
-39
lines changed

capabilities/_index.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,12 @@ capabilities:
3636

3737
- id: decision.option.justify
3838
status: experimental
39-
description: Select a final recommendation from evaluated options with structured justification.
39+
description: Select a final recommendation from evaluated options with structured justification.
40+
41+
- id: analysis.split
42+
status: experimental
43+
description: Split a complex problem into manageable, described components with dependencies and order.
44+
45+
- id: analysis.risk.extract
46+
status: experimental
47+
description: Extract risks, fragile assumptions, failure modes, and mitigation ideas from a target artifact.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
id: analysis.risk.extract
2+
version: 1.0.0
3+
description: >
4+
Extract risks, fragile assumptions, failure modes, and preliminary mitigation
5+
ideas from a target artifact (decision, plan, analysis, proposal, draft).
6+
Produces a structured risk inventory with severity hints. Does NOT score or
7+
rank risks — that is the responsibility of downstream capabilities.
8+
9+
inputs:
10+
target:
11+
type: object
12+
required: true
13+
description: >
14+
The artifact to analyze for risks. Can be a decision, plan, analysis
15+
output, proposal, or any structured object.
16+
17+
context:
18+
type: string
19+
required: false
20+
description: >
21+
Background information that helps identify domain-specific risks.
22+
23+
risk_scope:
24+
type: string
25+
required: false
26+
description: >
27+
Focus area: broad | operational | strategic | regulatory | technical |
28+
financial. If omitted, defaults to broad.
29+
30+
outputs:
31+
risks:
32+
type: array
33+
required: true
34+
description: >
35+
Identified risks. Each has: id, description, category, severity_hint
36+
(low | medium | high | critical), related_assumptions (array of
37+
assumption ids).
38+
39+
assumptions:
40+
type: array
41+
required: true
42+
description: >
43+
Fragile or implicit assumptions surfaced during analysis. Each has:
44+
id, statement, fragility_hint (low | medium | high), related_risks
45+
(array of risk ids).
46+
47+
failure_modes:
48+
type: array
49+
required: true
50+
description: >
51+
Concrete ways the target could fail. Each has: id, description,
52+
trigger_conditions, related_risks (array of risk ids).
53+
54+
mitigation_ideas:
55+
type: array
56+
required: false
57+
description: >
58+
Preliminary mitigation suggestions per risk. Each has: risk_id,
59+
suggestion, effort_hint (low | medium | high).
60+
61+
extraction_notes:
62+
type: string
63+
required: false
64+
description: >
65+
Brief note on methodology, gaps in available information, or caveats.
66+
67+
properties:
68+
deterministic: false
69+
side_effects: false
70+
idempotent: true
71+
72+
metadata:
73+
status: experimental
74+
tags:
75+
- risk-analysis
76+
- assumptions
77+
- failure-modes

capabilities/analysis.split.yaml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
id: analysis.split
2+
version: 1.0.0
3+
description: >
4+
Split a complex problem, topic, or domain into a set of manageable,
5+
described components with a suggested analysis order. The decomposition
6+
strategy (by themes, dimensions, phases, questions, stakeholders, risks)
7+
is provided as input. Returns components with descriptions, dependencies
8+
between them, and flags for gaps or overlaps.
9+
10+
inputs:
11+
problem:
12+
type: string
13+
required: true
14+
description: >
15+
The problem or topic to decompose. Should be a clear statement of
16+
what needs to be broken down.
17+
18+
strategy:
19+
type: string
20+
required: true
21+
description: >
22+
Decomposition axis: themes | dimensions | phases | questions |
23+
stakeholders | risks. Determines how the problem is sliced.
24+
25+
context:
26+
type: string
27+
required: false
28+
description: >
29+
Background information that helps ground the decomposition.
30+
31+
max_components:
32+
type: number
33+
required: false
34+
description: >
35+
Maximum number of components to generate. Defaults to 6. Hard cap at 10.
36+
37+
outputs:
38+
components:
39+
type: array
40+
required: true
41+
description: >
42+
List of components. Each has: id (short slug), label, description (what
43+
it covers), dependencies (array of other component ids it depends on),
44+
and analysis_order (suggested position in the analysis sequence).
45+
46+
gaps:
47+
type: array
48+
required: false
49+
description: >
50+
Areas that may be missing from the decomposition — known unknowns.
51+
52+
overlaps:
53+
type: array
54+
required: false
55+
description: >
56+
Potential overlaps between components that the analyst should watch for.
57+
58+
decomposition_notes:
59+
type: string
60+
required: false
61+
description: >
62+
Brief note on the decomposition rationale and any trade-offs made.
63+
64+
properties:
65+
deterministic: false
66+
side_effects: false
67+
idempotent: true
68+
69+
metadata:
70+
status: experimental
71+
tags:
72+
- analysis
73+
- decomposition
74+
- structuring

catalog/capabilities.json

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,136 @@
216216
"idempotent": true
217217
}
218218
},
219+
{
220+
"id": "analysis.risk.extract",
221+
"version": "1.0.0",
222+
"description": "Extract risks, fragile assumptions, failure modes, and preliminary mitigation ideas from a target artifact (decision, plan, analysis, proposal, draft). Produces a structured risk inventory with severity hints. Does NOT score or rank risks — that is the responsibility of downstream capabilities.\n",
223+
"file": "capabilities/analysis.risk.extract.yaml",
224+
"inputs": {
225+
"target": {
226+
"type": "object",
227+
"required": true,
228+
"description": "The artifact to analyze for risks. Can be a decision, plan, analysis output, proposal, or any structured object.\n"
229+
},
230+
"context": {
231+
"type": "string",
232+
"required": false,
233+
"description": "Background information that helps identify domain-specific risks.\n"
234+
},
235+
"risk_scope": {
236+
"type": "string",
237+
"required": false,
238+
"description": "Focus area: broad | operational | strategic | regulatory | technical | financial. If omitted, defaults to broad.\n"
239+
}
240+
},
241+
"outputs": {
242+
"risks": {
243+
"type": "array",
244+
"required": true,
245+
"description": "Identified risks. Each has: id, description, category, severity_hint (low | medium | high | critical), related_assumptions (array of assumption ids).\n"
246+
},
247+
"assumptions": {
248+
"type": "array",
249+
"required": true,
250+
"description": "Fragile or implicit assumptions surfaced during analysis. Each has: id, statement, fragility_hint (low | medium | high), related_risks (array of risk ids).\n"
251+
},
252+
"failure_modes": {
253+
"type": "array",
254+
"required": true,
255+
"description": "Concrete ways the target could fail. Each has: id, description, trigger_conditions, related_risks (array of risk ids).\n"
256+
},
257+
"mitigation_ideas": {
258+
"type": "array",
259+
"required": false,
260+
"description": "Preliminary mitigation suggestions per risk. Each has: risk_id, suggestion, effort_hint (low | medium | high).\n"
261+
},
262+
"extraction_notes": {
263+
"type": "string",
264+
"required": false,
265+
"description": "Brief note on methodology, gaps in available information, or caveats.\n"
266+
}
267+
},
268+
"metadata": {
269+
"tags": [
270+
"risk-analysis",
271+
"assumptions",
272+
"failure-modes"
273+
],
274+
"category": null,
275+
"status": "experimental",
276+
"examples": []
277+
},
278+
"properties": {
279+
"deterministic": false,
280+
"side_effects": false,
281+
"idempotent": true
282+
}
283+
},
284+
{
285+
"id": "analysis.split",
286+
"version": "1.0.0",
287+
"description": "Split a complex problem, topic, or domain into a set of manageable, described components with a suggested analysis order. The decomposition strategy (by themes, dimensions, phases, questions, stakeholders, risks) is provided as input. Returns components with descriptions, dependencies between them, and flags for gaps or overlaps.\n",
288+
"file": "capabilities/analysis.split.yaml",
289+
"inputs": {
290+
"problem": {
291+
"type": "string",
292+
"required": true,
293+
"description": "The problem or topic to decompose. Should be a clear statement of what needs to be broken down.\n"
294+
},
295+
"strategy": {
296+
"type": "string",
297+
"required": true,
298+
"description": "Decomposition axis: themes | dimensions | phases | questions | stakeholders | risks. Determines how the problem is sliced.\n"
299+
},
300+
"context": {
301+
"type": "string",
302+
"required": false,
303+
"description": "Background information that helps ground the decomposition.\n"
304+
},
305+
"max_components": {
306+
"type": "number",
307+
"required": false,
308+
"description": "Maximum number of components to generate. Defaults to 6. Hard cap at 10.\n"
309+
}
310+
},
311+
"outputs": {
312+
"components": {
313+
"type": "array",
314+
"required": true,
315+
"description": "List of components. Each has: id (short slug), label, description (what it covers), dependencies (array of other component ids it depends on), and analysis_order (suggested position in the analysis sequence).\n"
316+
},
317+
"gaps": {
318+
"type": "array",
319+
"required": false,
320+
"description": "Areas that may be missing from the decomposition — known unknowns.\n"
321+
},
322+
"overlaps": {
323+
"type": "array",
324+
"required": false,
325+
"description": "Potential overlaps between components that the analyst should watch for.\n"
326+
},
327+
"decomposition_notes": {
328+
"type": "string",
329+
"required": false,
330+
"description": "Brief note on the decomposition rationale and any trade-offs made.\n"
331+
}
332+
},
333+
"metadata": {
334+
"tags": [
335+
"analysis",
336+
"decomposition",
337+
"structuring"
338+
],
339+
"category": null,
340+
"status": "experimental",
341+
"examples": []
342+
},
343+
"properties": {
344+
"deterministic": false,
345+
"side_effects": false,
346+
"idempotent": true
347+
}
348+
},
219349
{
220350
"id": "audio.transcribe",
221351
"version": "1.0.0",

catalog/capability_governance_guardrails.json

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
{
22
"summary": {
3-
"capabilities_total": 104,
4-
"covered_domains": 25,
5-
"uncovered_domains": 2,
3+
"capabilities_total": 106,
4+
"covered_domains": 26,
5+
"uncovered_domains": 1,
66
"semantic_family_alerts": 11,
77
"duplicate_description_alerts": 0,
8-
"metadata_issues": 101
8+
"metadata_issues": 103
99
},
1010
"uncovered_domains": [
11-
"analysis",
12-
"decision"
11+
"analysis"
1312
],
1413
"semantic_family_alerts": [
1514
{
@@ -234,6 +233,12 @@
234233
"missing_examples"
235234
]
236235
},
236+
{
237+
"capability_id": "decision.option.justify",
238+
"issues": [
239+
"missing_examples"
240+
]
241+
},
237242
{
238243
"capability_id": "doc.chunk",
239244
"issues": [
@@ -255,6 +260,12 @@
255260
"missing_examples"
256261
]
257262
},
263+
{
264+
"capability_id": "eval.option.analyze",
265+
"issues": [
266+
"missing_examples"
267+
]
268+
},
258269
{
259270
"capability_id": "eval.option.score",
260271
"issues": [

0 commit comments

Comments
 (0)