@trohde/earos 1.0.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/README.md +156 -0
- package/assets/init/.agents/skills/earos-artifact-gen/SKILL.md +106 -0
- package/assets/init/.agents/skills/earos-artifact-gen/references/interview-guide.md +313 -0
- package/assets/init/.agents/skills/earos-artifact-gen/references/output-guide.md +367 -0
- package/assets/init/.agents/skills/earos-assess/SKILL.md +212 -0
- package/assets/init/.agents/skills/earos-assess/references/calibration-benchmarks.md +160 -0
- package/assets/init/.agents/skills/earos-assess/references/output-templates.md +311 -0
- package/assets/init/.agents/skills/earos-assess/references/scoring-protocol.md +281 -0
- package/assets/init/.agents/skills/earos-calibrate/SKILL.md +153 -0
- package/assets/init/.agents/skills/earos-calibrate/references/agreement-metrics.md +188 -0
- package/assets/init/.agents/skills/earos-calibrate/references/calibration-protocol.md +263 -0
- package/assets/init/.agents/skills/earos-create/SKILL.md +257 -0
- package/assets/init/.agents/skills/earos-create/references/criterion-writing-guide.md +268 -0
- package/assets/init/.agents/skills/earos-create/references/dependency-rules.md +193 -0
- package/assets/init/.agents/skills/earos-create/references/rubric-interview-guide.md +123 -0
- package/assets/init/.agents/skills/earos-create/references/validation-checklist.md +238 -0
- package/assets/init/.agents/skills/earos-profile-author/SKILL.md +251 -0
- package/assets/init/.agents/skills/earos-profile-author/references/criterion-writing-guide.md +280 -0
- package/assets/init/.agents/skills/earos-profile-author/references/design-methods.md +158 -0
- package/assets/init/.agents/skills/earos-profile-author/references/profile-checklist.md +173 -0
- package/assets/init/.agents/skills/earos-remediate/SKILL.md +118 -0
- package/assets/init/.agents/skills/earos-remediate/references/output-template.md +199 -0
- package/assets/init/.agents/skills/earos-remediate/references/remediation-patterns.md +330 -0
- package/assets/init/.agents/skills/earos-report/SKILL.md +85 -0
- package/assets/init/.agents/skills/earos-report/references/portfolio-template.md +181 -0
- package/assets/init/.agents/skills/earos-report/references/single-artifact-template.md +168 -0
- package/assets/init/.agents/skills/earos-review/SKILL.md +130 -0
- package/assets/init/.agents/skills/earos-review/references/challenge-patterns.md +163 -0
- package/assets/init/.agents/skills/earos-review/references/output-template.md +180 -0
- package/assets/init/.agents/skills/earos-template-fill/SKILL.md +177 -0
- package/assets/init/.agents/skills/earos-template-fill/references/evidence-writing-guide.md +186 -0
- package/assets/init/.agents/skills/earos-template-fill/references/section-rubric-mapping.md +200 -0
- package/assets/init/.agents/skills/earos-validate/SKILL.md +113 -0
- package/assets/init/.agents/skills/earos-validate/references/fix-patterns.md +281 -0
- package/assets/init/.agents/skills/earos-validate/references/validation-checks.md +287 -0
- package/assets/init/.claude/CLAUDE.md +4 -0
- package/assets/init/AGENTS.md +293 -0
- package/assets/init/CLAUDE.md +635 -0
- package/assets/init/README.md +507 -0
- package/assets/init/calibration/gold-set/.gitkeep +0 -0
- package/assets/init/calibration/results/.gitkeep +0 -0
- package/assets/init/core/core-meta-rubric.yaml +643 -0
- package/assets/init/docs/consistency-report.md +325 -0
- package/assets/init/docs/getting-started.md +194 -0
- package/assets/init/docs/profile-authoring-guide.md +51 -0
- package/assets/init/docs/terminology.md +126 -0
- package/assets/init/earos.manifest.yaml +104 -0
- package/assets/init/evaluations/.gitkeep +0 -0
- package/assets/init/examples/aws-event-driven-order-processing/artifact.yaml +2056 -0
- package/assets/init/examples/aws-event-driven-order-processing/evaluation.yaml +973 -0
- package/assets/init/examples/aws-event-driven-order-processing/report.md +244 -0
- package/assets/init/examples/example-solution-architecture.evaluation.yaml +136 -0
- package/assets/init/examples/multi-cloud-data-analytics/artifact.yaml +715 -0
- package/assets/init/overlays/data-governance.yaml +94 -0
- package/assets/init/overlays/regulatory.yaml +154 -0
- package/assets/init/overlays/security.yaml +92 -0
- package/assets/init/profiles/adr.yaml +225 -0
- package/assets/init/profiles/capability-map.yaml +223 -0
- package/assets/init/profiles/reference-architecture.yaml +426 -0
- package/assets/init/profiles/roadmap.yaml +205 -0
- package/assets/init/profiles/solution-architecture.yaml +227 -0
- package/assets/init/research/architecture-assessment-rubrics-research.docx +0 -0
- package/assets/init/research/architecture-assessment-rubrics-research.md +566 -0
- package/assets/init/research/reference-architecture-research.md +751 -0
- package/assets/init/standard/EAROS.md +1426 -0
- package/assets/init/standard/schemas/artifact.schema.json +1295 -0
- package/assets/init/standard/schemas/artifact.uischema.json +65 -0
- package/assets/init/standard/schemas/evaluation.schema.json +284 -0
- package/assets/init/standard/schemas/rubric.schema.json +383 -0
- package/assets/init/templates/evaluation-record.template.yaml +58 -0
- package/assets/init/templates/new-profile.template.yaml +65 -0
- package/bin.js +188 -0
- package/dist/assets/_basePickBy-BVu6YmSW.js +1 -0
- package/dist/assets/_baseUniq-CWRzQDz_.js +1 -0
- package/dist/assets/arc-CyDBhtDM.js +1 -0
- package/dist/assets/architectureDiagram-2XIMDMQ5-BH6O4dvN.js +36 -0
- package/dist/assets/blockDiagram-WCTKOSBZ-2xmwdjpg.js +132 -0
- package/dist/assets/c4Diagram-IC4MRINW-BNmPRFJF.js +10 -0
- package/dist/assets/channel-CiySTNoJ.js +1 -0
- package/dist/assets/chunk-4BX2VUAB-DGQTvirp.js +1 -0
- package/dist/assets/chunk-55IACEB6-DNMAQAC_.js +1 -0
- package/dist/assets/chunk-FMBD7UC4-BJbVTQ5o.js +15 -0
- package/dist/assets/chunk-JSJVCQXG-BCxUL74A.js +1 -0
- package/dist/assets/chunk-KX2RTZJC-H7wWZOfz.js +1 -0
- package/dist/assets/chunk-NQ4KR5QH-BK4RlTQF.js +220 -0
- package/dist/assets/chunk-QZHKN3VN-0chxDV5g.js +1 -0
- package/dist/assets/chunk-WL4C6EOR-DexfQ-AV.js +189 -0
- package/dist/assets/classDiagram-VBA2DB6C-D7luWJQn.js +1 -0
- package/dist/assets/classDiagram-v2-RAHNMMFH-D7luWJQn.js +1 -0
- package/dist/assets/clone-ylgRbd3D.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-DS2IOCfZ.js +1 -0
- package/dist/assets/cytoscape.esm-CyJtwmzi.js +331 -0
- package/dist/assets/dagre-KLK3FWXG-BbSoTTa3.js +4 -0
- package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/assets/diagram-E7M64L7V-C9TvYgv0.js +24 -0
- package/dist/assets/diagram-IFDJBPK2-DowUMWrg.js +43 -0
- package/dist/assets/diagram-P4PSJMXO-BL6nrnQF.js +24 -0
- package/dist/assets/erDiagram-INFDFZHY-rXPRl8VM.js +70 -0
- package/dist/assets/flowDiagram-PKNHOUZH-DBRM99-W.js +162 -0
- package/dist/assets/ganttDiagram-A5KZAMGK-INcWFsBT.js +292 -0
- package/dist/assets/gitGraphDiagram-K3NZZRJ6-DMwpfE91.js +65 -0
- package/dist/assets/graph-DLQn37b-.js +1 -0
- package/dist/assets/index-BFFITMT8.js +650 -0
- package/dist/assets/index-H7f6VTz1.css +1 -0
- package/dist/assets/infoDiagram-LFFYTUFH-B0f4TWRM.js +2 -0
- package/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dist/assets/ishikawaDiagram-PHBUUO56-CsU6XimZ.js +70 -0
- package/dist/assets/journeyDiagram-4ABVD52K-CQ7ibNib.js +139 -0
- package/dist/assets/kanban-definition-K7BYSVSG-DzEN7THt.js +89 -0
- package/dist/assets/katex-B1X10hvy.js +261 -0
- package/dist/assets/layout-C0dvb42R.js +1 -0
- package/dist/assets/linear-j4a8mGj7.js +1 -0
- package/dist/assets/mindmap-definition-YRQLILUH-DP8iEuCf.js +68 -0
- package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/assets/pieDiagram-SKSYHLDU-BpIAXgAm.js +30 -0
- package/dist/assets/quadrantDiagram-337W2JSQ-DrpXn5Eg.js +7 -0
- package/dist/assets/requirementDiagram-Z7DCOOCP-Bg7EwHlG.js +73 -0
- package/dist/assets/sankeyDiagram-WA2Y5GQK-BWagRs1F.js +10 -0
- package/dist/assets/sequenceDiagram-2WXFIKYE-q5jwhivG.js +145 -0
- package/dist/assets/stateDiagram-RAJIS63D-B_J9pE-2.js +1 -0
- package/dist/assets/stateDiagram-v2-FVOUBMTO-Q_1GcybB.js +1 -0
- package/dist/assets/timeline-definition-YZTLITO2-dv0jgQ0z.js +61 -0
- package/dist/assets/treemap-KZPCXAKY-Dt1dkIE7.js +162 -0
- package/dist/assets/vennDiagram-LZ73GAT5-BdO5RgRZ.js +34 -0
- package/dist/assets/xychartDiagram-JWTSCODW-CpDVe-8v.js +7 -0
- package/dist/index.html +23 -0
- package/export-docx.js +1583 -0
- package/init.js +353 -0
- package/manifest-cli.mjs +207 -0
- package/package.json +83 -0
- package/schemas/artifact.schema.json +1295 -0
- package/schemas/artifact.uischema.json +65 -0
- package/schemas/evaluation.schema.json +284 -0
- package/schemas/rubric.schema.json +383 -0
- package/serve.js +238 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Validation Checklist
|
|
2
|
+
|
|
3
|
+
This checklist covers all pre-publication quality checks for a new EAROS rubric file. Run through it before presenting the final YAML to the user and before placing the file in the repository.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Quick Reference — What "Valid" Means
|
|
8
|
+
|
|
9
|
+
A valid EAROS v2 rubric file:
|
|
10
|
+
1. Passes schema validation against `standard/schemas/rubric.schema.json`
|
|
11
|
+
2. Has a unique rubric ID and unique criterion IDs (no conflicts across the entire repo)
|
|
12
|
+
3. Has the correct YAML structure for its kind (profile, overlay, or core rubric)
|
|
13
|
+
4. Has all 13 v2 required fields on every criterion
|
|
14
|
+
5. Has a calibrated gate model (not over- or under-gated)
|
|
15
|
+
6. Does not duplicate what `EAROS-CORE-002` already covers
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Section 1 — Schema and Structure
|
|
20
|
+
|
|
21
|
+
### Top-level required fields
|
|
22
|
+
|
|
23
|
+
| Field | Profiles | Overlays | Core rubrics |
|
|
24
|
+
|-------|----------|----------|-------------|
|
|
25
|
+
| `rubric_id` | ✓ | ✓ | ✓ |
|
|
26
|
+
| `version` | ✓ | ✓ | ✓ |
|
|
27
|
+
| `kind` | `profile` | `overlay` | `core_rubric` |
|
|
28
|
+
| `title` | ✓ | ✓ | ✓ |
|
|
29
|
+
| `status` | ✓ | ✓ | ✓ |
|
|
30
|
+
| `effective_date` | ✓ | ✓ | ✓ |
|
|
31
|
+
| `artifact_type` | specific type | `any` | ✓ |
|
|
32
|
+
| `inherits` | `[EAROS-CORE-002]` | **absent** | **absent** |
|
|
33
|
+
| `design_method` | ✓ | optional | optional |
|
|
34
|
+
| `dimensions` | ✓ | ✓ | ✓ |
|
|
35
|
+
| `scoring` | ✓ | ✓ | ✓ |
|
|
36
|
+
| `outputs` | ✓ | ✓ | ✓ |
|
|
37
|
+
|
|
38
|
+
### Scoring section required fields
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
scoring:
|
|
42
|
+
scale: 0-4 ordinal plus N/A
|
|
43
|
+
method: gates_first_then_weighted_average # profiles and core
|
|
44
|
+
# OR
|
|
45
|
+
method: append_to_base_rubric # overlays only
|
|
46
|
+
thresholds:
|
|
47
|
+
pass: ...
|
|
48
|
+
conditional_pass: ...
|
|
49
|
+
rework_required: ...
|
|
50
|
+
reject: ...
|
|
51
|
+
not_reviewable: ...
|
|
52
|
+
na_policy: ...
|
|
53
|
+
confidence_policy: ...
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Outputs section required fields
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
outputs:
|
|
60
|
+
require_evidence_refs: true
|
|
61
|
+
require_confidence: true
|
|
62
|
+
require_actions: true
|
|
63
|
+
require_evidence_class: true
|
|
64
|
+
require_evidence_anchors: true
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Section 2 — Criterion Completeness
|
|
70
|
+
|
|
71
|
+
For **every** criterion in the file, check:
|
|
72
|
+
|
|
73
|
+
| Field | Present? | Notes |
|
|
74
|
+
|-------|----------|-------|
|
|
75
|
+
| `id` | | Unique across entire repo |
|
|
76
|
+
| `question` | | Observable yes/no or does-the-artifact question |
|
|
77
|
+
| `description` | | Why it matters + failure consequence |
|
|
78
|
+
| `metric_type: ordinal` | | Must be exactly `ordinal` |
|
|
79
|
+
| `scale: [0, 1, 2, 3, 4, "N/A"]` | | Must be exactly this |
|
|
80
|
+
| `gate` | | Either `gate: false` or full gate block |
|
|
81
|
+
| `required_evidence` | | Concrete observable items, minimum 2 |
|
|
82
|
+
| `scoring_guide["0"]` | | Distinct from level 1 |
|
|
83
|
+
| `scoring_guide["1"]` | | Distinct from levels 0 and 2 |
|
|
84
|
+
| `scoring_guide["2"]` | | Distinct from levels 1 and 3 |
|
|
85
|
+
| `scoring_guide["3"]` | | Distinct from levels 2 and 4 |
|
|
86
|
+
| `scoring_guide["4"]` | | Distinct from level 3 |
|
|
87
|
+
| `anti_patterns` | | Minimum 2 specific patterns |
|
|
88
|
+
| `examples.good` | | At least 1 concrete example |
|
|
89
|
+
| `examples.bad` | | At least 1 concrete example |
|
|
90
|
+
| `decision_tree` | | Covers all five score levels |
|
|
91
|
+
| `remediation_hints` | | At least 2 specific actions |
|
|
92
|
+
|
|
93
|
+
**Scoring guide quality check:**
|
|
94
|
+
- No level uses "somewhat", "mostly", "adequate", "sufficient" without defining what sufficient means observably
|
|
95
|
+
- Level 2 and level 3 are distinguishable by observable features, not degree words
|
|
96
|
+
- Level 4 has a discriminating feature that level 3 lacks (the "excellent but not perfect" problem)
|
|
97
|
+
|
|
98
|
+
**Decision tree quality check:**
|
|
99
|
+
- Every IF condition is observable from the artifact
|
|
100
|
+
- Conditions are countable or presence/absence based where possible
|
|
101
|
+
- All five score levels are covered
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Section 3 — ID Uniqueness
|
|
106
|
+
|
|
107
|
+
Check before committing. These IDs must be globally unique:
|
|
108
|
+
|
|
109
|
+
### Rubric-level IDs
|
|
110
|
+
|
|
111
|
+
- [ ] `rubric_id` does not exist in any other file in `core/`, `profiles/`, or `overlays/`
|
|
112
|
+
- [ ] ID follows naming convention:
|
|
113
|
+
- Profile: `EAROS-[ARTIFACT]-[NNN]`
|
|
114
|
+
- Overlay: `EAROS-OVR-[CONCERN]-[NNN]`
|
|
115
|
+
- Core: `EAROS-CORE-[DOMAIN?]-[NNN]`
|
|
116
|
+
|
|
117
|
+
### Criterion-level IDs
|
|
118
|
+
|
|
119
|
+
- [ ] Scan all criterion IDs in `core/core-meta-rubric.yaml` — no conflicts
|
|
120
|
+
- [ ] Scan all criterion IDs in every file in `profiles/` — no conflicts
|
|
121
|
+
- [ ] Scan all criterion IDs in every file in `overlays/` — no conflicts
|
|
122
|
+
|
|
123
|
+
Known existing criterion IDs (as of v2 baseline):
|
|
124
|
+
- Core: `STK-01`, `STK-02`, `SCP-01`, `CVP-01`, `TRC-01`, `CON-01`, `RAT-01`, `CMP-01`, `ACT-01`, `MNT-01`
|
|
125
|
+
- Regulatory overlay: `REG-ID-01`, `REG-EV-01`
|
|
126
|
+
- Reference architecture profile: `RA-VIEW-01`, `RA-PATT-01`, `RA-REUSE-01`, `RA-IMPL-01`, `RA-OPS-01`, `RA-SLO-01`, `RA-DATA-01`, `RA-SEC-01`, `RA-EVOL-01`
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Section 4 — Gate Model Validation
|
|
131
|
+
|
|
132
|
+
| Check | Target | Max |
|
|
133
|
+
|-------|--------|-----|
|
|
134
|
+
| `critical` gates | 0–1 | 1 |
|
|
135
|
+
| `major` gates | 1–2 | 3 |
|
|
136
|
+
| Criteria with `gate: false` | majority | — |
|
|
137
|
+
|
|
138
|
+
**Red flags:**
|
|
139
|
+
- Every criterion has a gate → over-gating; dilutes the signal
|
|
140
|
+
- No criteria have any gate → weak governance model; nothing prevents weak artifacts from passing on average
|
|
141
|
+
- critical gate without a specific `failure_effect` → will confuse evaluators
|
|
142
|
+
- Major gate with `failure_effect` that says "reject" → use critical severity instead
|
|
143
|
+
|
|
144
|
+
**Gate balance test:**
|
|
145
|
+
Imagine an otherwise excellent artifact (scoring 3.5 average) that scores 1 on a gated criterion. Is the gate outcome appropriate?
|
|
146
|
+
- If the criterion has `critical` → entire artifact is rejected. Is that right?
|
|
147
|
+
- If the criterion has `major` → artifact is capped at `conditional_pass`. Is that right?
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Section 5 — Core Overlap Check
|
|
152
|
+
|
|
153
|
+
The core meta-rubric (`EAROS-CORE-002`) already covers these concerns. **Do not add profile criteria that duplicate them:**
|
|
154
|
+
|
|
155
|
+
| Core criterion | What it covers |
|
|
156
|
+
|----------------|---------------|
|
|
157
|
+
| `STK-01` | Stakeholder identification, purpose, decision context |
|
|
158
|
+
| `STK-02` | Concern-to-view mapping |
|
|
159
|
+
| `SCP-01` | Scope, boundary, assumptions, exclusions |
|
|
160
|
+
| `CVP-01` | View fitness for purpose / stakeholder concerns |
|
|
161
|
+
| `TRC-01` | Traceability to drivers, requirements, principles |
|
|
162
|
+
| `CON-01` | Internal consistency (terminology, interfaces, diagrams) |
|
|
163
|
+
| `RAT-01` | Risks, assumptions, constraints, trade-offs |
|
|
164
|
+
| `CMP-01` | Standards and policy compliance |
|
|
165
|
+
| `ACT-01` | Actionability and implementation readiness |
|
|
166
|
+
| `MNT-01` | Ownership, version control, change history |
|
|
167
|
+
|
|
168
|
+
**Test for each proposed criterion:** "Does the core meta-rubric already ask this question or a very similar one?" If yes, the new criterion is likely redundant.
|
|
169
|
+
|
|
170
|
+
Acceptable extensions of core criteria (not duplicates):
|
|
171
|
+
- A profile criterion that asks about a specific type of view that core doesn't name (e.g., "does the reference architecture include an operational runbook?")
|
|
172
|
+
- A criterion that asks about a concern specific to this artifact type that the generic core criterion wouldn't catch
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Section 6 — Criteria Count and Dimension Structure
|
|
177
|
+
|
|
178
|
+
| Type | Min criteria | Max criteria | Min dimensions | Max dimensions |
|
|
179
|
+
|------|-------------|-------------|----------------|----------------|
|
|
180
|
+
| Profile | 5 | 12 | 2 | 6 |
|
|
181
|
+
| Overlay | 2 | 6 | 1 | 3 |
|
|
182
|
+
| Core rubric | 8 | 12 | 6 | 10 |
|
|
183
|
+
|
|
184
|
+
**If criteria count exceeds the max:**
|
|
185
|
+
- "Can any criteria be merged? If two criteria are often scored identically, they may be measuring the same thing."
|
|
186
|
+
- "Are any criteria measuring something the core already covers?"
|
|
187
|
+
- "If the scope is genuinely too large for 12 criteria, should this be two profiles for two distinct artifact sub-types?"
|
|
188
|
+
|
|
189
|
+
**Dimension weight check:**
|
|
190
|
+
- Default weight: `1.0`
|
|
191
|
+
- Higher weight (`1.2`–`1.5`): use for dimensions that are the primary quality signal for this artifact type
|
|
192
|
+
- Lower weight (`0.7`–`0.9`): use for supplementary dimensions
|
|
193
|
+
- At most 2 dimensions should be weighted above `1.0`
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Section 7 — Calibration Readiness
|
|
198
|
+
|
|
199
|
+
Before the file can move from `status: draft` to `status: candidate`:
|
|
200
|
+
|
|
201
|
+
| Check | Requirement |
|
|
202
|
+
|-------|-------------|
|
|
203
|
+
| Real artifacts available | Minimum 3: 1 strong, 1 weak, 1 ambiguous |
|
|
204
|
+
| Reviewers assigned | Minimum 2 (at least 1 domain expert) |
|
|
205
|
+
| Independent scoring planned | Each reviewer scores without seeing others' scores |
|
|
206
|
+
| Kappa target set | > 0.70 for well-defined criteria, > 0.50 for subjective |
|
|
207
|
+
|
|
208
|
+
**Common calibration blockers:**
|
|
209
|
+
- Level descriptors too abstract → reviewers can't agree on what level 2 vs. 3 means
|
|
210
|
+
- Decision tree missing → agents and reviewers use different logic to reach the same score
|
|
211
|
+
- Required evidence too vague → reviewers look for different things in the artifact
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Section 8 — File Placement and Naming
|
|
216
|
+
|
|
217
|
+
| Type | Location | Filename pattern |
|
|
218
|
+
|------|----------|-----------------|
|
|
219
|
+
| Profile | `profiles/` | `<artifact-type>.yaml` |
|
|
220
|
+
| Overlay | `overlays/` | `<concern>.yaml` |
|
|
221
|
+
| Core rubric | `core/` | `<name>.yaml` |
|
|
222
|
+
|
|
223
|
+
Rules:
|
|
224
|
+
- Kebab-case filenames (no spaces, no uppercase)
|
|
225
|
+
- No version number in the filename — version is tracked inside the file only (`version: 2.0.0`)
|
|
226
|
+
- The `kind` field is the type discriminator (`profile`, `overlay`, `core_rubric`)
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Post-Creation Checklist
|
|
231
|
+
|
|
232
|
+
After the file is placed:
|
|
233
|
+
|
|
234
|
+
- [ ] Run `earos-validate` to confirm schema conformance and catch any remaining errors
|
|
235
|
+
- [ ] Add the new rubric ID to the skills table in `CLAUDE.md` if it changes the "when to use which skill" guidance
|
|
236
|
+
- [ ] Create a calibration pack (3+ artifacts) before promoting to `candidate`
|
|
237
|
+
- [ ] Add worked evaluation example to `examples/` after first calibration run
|
|
238
|
+
- [ ] Update `CHANGELOG.md` with the new rubric entry
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: earos-profile-author
|
|
3
|
+
description: "Technical YAML authoring guide for EAROS profiles and overlays. Use this skill when someone has already completed rubric design (criteria defined, design method chosen) and needs help with the YAML structure, v2 field requirements, or schema compliance. Also triggers when someone asks \"what are the 5 design methods\", \"how do I write a criterion\", \"what fields does a v2 criterion need\", or \"how do I structure overlay YAML\". NOTE: For creating new rubrics from scratch — where the criteria are not yet defined — use earos-create instead. This skill focuses on the technical details of profile YAML authoring after rubric design is complete."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EAROS Profile Author Skill
|
|
7
|
+
|
|
8
|
+
You are guiding the creation of a new EAROS profile or overlay. This is a governed authoring process — the result must be valid YAML that passes schema validation and can be calibrated against real artifacts before production use.
|
|
9
|
+
|
|
10
|
+
**Why this matters:** A profile that is ambiguous, over-gated, or missing level descriptors will produce unreliable assessments — different reviewers will score the same artifact differently, governance decisions will be arbitrary, and the framework loses credibility. The process below exists to prevent this. Every field, every example, every decision tree entry is there to increase scoring reproducibility.
|
|
11
|
+
|
|
12
|
+
**Before drafting criteria:** Read `references/design-methods.md` to understand which method fits this artifact type. Read `references/criterion-writing-guide.md` before writing any criteria.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Step 0 — Load Reference Files
|
|
17
|
+
|
|
18
|
+
Before writing any YAML, read:
|
|
19
|
+
1. `templates/new-profile.template.yaml` — scaffold to start from
|
|
20
|
+
2. `core/core-meta-rubric.yaml` — understand what core covers (don't duplicate it)
|
|
21
|
+
3. `profiles/reference-architecture.yaml` — the model profile; use as reference implementation
|
|
22
|
+
4. `standard/schemas/rubric.schema.json` — schema all YAML files must conform to
|
|
23
|
+
|
|
24
|
+
Ask: **Are you creating a profile (artifact-specific) or an overlay (cross-cutting concern)?**
|
|
25
|
+
|
|
26
|
+
- **Profile**: inherits from `EAROS-CORE-002`; for a distinct, recurring artifact type
|
|
27
|
+
- **Overlay**: does not inherit; applies to any artifact type; uses `scoring.method: append_to_base_rubric`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 1 — Qualify the Need
|
|
32
|
+
|
|
33
|
+
Before writing any YAML, ask these qualification questions. A profile that skips qualification produces criteria that duplicate the core or don't fit the artifact type.
|
|
34
|
+
|
|
35
|
+
1. What artifact type is this for?
|
|
36
|
+
2. Why is the core meta-rubric alone insufficient — what concerns does it miss that genuinely matter for this type?
|
|
37
|
+
3. Do 3–5 real examples exist? (Required for calibration. If not, proceed with `status: draft` and a caveat.)
|
|
38
|
+
4. Who are the primary reviewers?
|
|
39
|
+
5. What is the key quality failure mode — what does a bad version of this artifact typically lack?
|
|
40
|
+
|
|
41
|
+
Document the answers — they drive `purpose`, `stakeholders`, and criterion content.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 2 — Choose a Design Method
|
|
46
|
+
|
|
47
|
+
> **Read `references/design-methods.md`** for detailed guidance on each method, including when to use it, what the resulting profile structure looks like, and examples from existing profiles.
|
|
48
|
+
|
|
49
|
+
| Method | Label | Best For |
|
|
50
|
+
|--------|-------|----------|
|
|
51
|
+
| A | Decision-Centred | ADRs, investment reviews, exception requests |
|
|
52
|
+
| B | Viewpoint-Centred | Capability maps, reference architectures, solution architectures |
|
|
53
|
+
| C | Lifecycle-Centred | Transition designs, roadmaps, handover docs |
|
|
54
|
+
| D | Risk-Centred | Security, regulatory, resilience architecture |
|
|
55
|
+
| E | Pattern-Library | Recurring reference patterns, platform services |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Step 3 — Assign a Rubric ID
|
|
60
|
+
|
|
61
|
+
Check existing IDs in `core/`, `profiles/`, and `overlays/` to avoid conflicts:
|
|
62
|
+
- Profiles: `EAROS-<ARTIFACT>-<NNN>` (e.g., `EAROS-POSTMORTEM-001`)
|
|
63
|
+
- Overlays: `EAROS-OVR-<CONCERN>-<NNN>` (e.g., `EAROS-OVR-RESILIENCE-001`)
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 4 — Define Dimensions and Criteria
|
|
68
|
+
|
|
69
|
+
**Hard constraints:**
|
|
70
|
+
- Core already covers 10 criteria across 9 dimensions — do NOT duplicate these
|
|
71
|
+
- Add **5–12 new criteria only** — fewer criteria = more reliable calibration
|
|
72
|
+
- Group into **2–6 new dimensions** specific to this artifact type
|
|
73
|
+
|
|
74
|
+
> **Read `references/criterion-writing-guide.md`** before interviewing the user on criteria. It contains the criterion definition interview, gate guidance with examples, and complete/incomplete criterion examples.
|
|
75
|
+
|
|
76
|
+
For each criterion, run the criterion definition interview:
|
|
77
|
+
1. What is the specific quality question? (→ `question`)
|
|
78
|
+
2. Why does this matter — what goes wrong when it's absent? (→ `description`)
|
|
79
|
+
3. What observable evidence at each level 0–4? (→ `scoring_guide`)
|
|
80
|
+
4. What direct evidence would you look for in the artifact? (→ `required_evidence`)
|
|
81
|
+
5. Good example? (→ `examples.good`)
|
|
82
|
+
6. Bad example / common failure? (→ `examples.bad`, `anti_patterns`)
|
|
83
|
+
7. Decision tree for scoring? (→ `decision_tree`)
|
|
84
|
+
8. Is this a gate? If yes, severity and effect? (→ `gate`)
|
|
85
|
+
|
|
86
|
+
Gate guidance (full detail in `references/criterion-writing-guide.md#gate-guidance`):
|
|
87
|
+
- Not every criterion needs a gate — over-gating creates false rejects
|
|
88
|
+
- Reserve `critical` for compliance-level failures only
|
|
89
|
+
- Use `major` for the most important quality dimension
|
|
90
|
+
- Target: at most 1–2 `major` gates; 0–1 `critical` gates per profile
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Step 5 — Generate the YAML
|
|
95
|
+
|
|
96
|
+
Generate the full profile YAML. Start from `templates/new-profile.template.yaml`:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
rubric_id: EAROS-[ARTIFACT]-001
|
|
100
|
+
version: 1.0.0
|
|
101
|
+
kind: profile
|
|
102
|
+
title: "[Artifact Type] Profile"
|
|
103
|
+
status: draft
|
|
104
|
+
effective_date: "[today's date]"
|
|
105
|
+
next_review_date: "[6 months from today]"
|
|
106
|
+
owner: enterprise-architecture
|
|
107
|
+
artifact_type: [artifact_type_snake_case]
|
|
108
|
+
inherits:
|
|
109
|
+
- EAROS-CORE-002
|
|
110
|
+
design_method: [method_id]
|
|
111
|
+
|
|
112
|
+
purpose:
|
|
113
|
+
- [purpose statement]
|
|
114
|
+
|
|
115
|
+
stakeholders:
|
|
116
|
+
- [stakeholder]
|
|
117
|
+
|
|
118
|
+
dimensions:
|
|
119
|
+
- id: [ARTIFACT-D1]
|
|
120
|
+
name: [Dimension Name]
|
|
121
|
+
description: "[description]"
|
|
122
|
+
weight: 1.0
|
|
123
|
+
criteria:
|
|
124
|
+
- id: [ARTIFACT-CRT-01]
|
|
125
|
+
question: "[scoring question]"
|
|
126
|
+
description: >
|
|
127
|
+
[detailed description and why it matters]
|
|
128
|
+
metric_type: ordinal
|
|
129
|
+
scale: [0, 1, 2, 3, 4, "N/A"]
|
|
130
|
+
gate:
|
|
131
|
+
enabled: true
|
|
132
|
+
severity: major
|
|
133
|
+
failure_effect: "[effect]"
|
|
134
|
+
required_evidence:
|
|
135
|
+
- [evidence item]
|
|
136
|
+
scoring_guide:
|
|
137
|
+
"0": "[Absent]"
|
|
138
|
+
"1": "[Weak]"
|
|
139
|
+
"2": "[Partial]"
|
|
140
|
+
"3": "[Good]"
|
|
141
|
+
"4": "[Strong]"
|
|
142
|
+
anti_patterns:
|
|
143
|
+
- [bad pattern]
|
|
144
|
+
examples:
|
|
145
|
+
good:
|
|
146
|
+
- "[Strong evidence example]"
|
|
147
|
+
bad:
|
|
148
|
+
- "[Absent/weak evidence example]"
|
|
149
|
+
decision_tree: >
|
|
150
|
+
IF [condition] THEN score [N].
|
|
151
|
+
remediation_hints:
|
|
152
|
+
- [specific improvement action]
|
|
153
|
+
|
|
154
|
+
scoring:
|
|
155
|
+
scale: 0-4 ordinal plus N/A
|
|
156
|
+
method: gates_first_then_weighted_average
|
|
157
|
+
thresholds:
|
|
158
|
+
pass: No critical gate failure, overall >= 3.2, no dimension < 2.0
|
|
159
|
+
conditional_pass: No critical gate failure, overall 2.4-3.19
|
|
160
|
+
rework_required: Overall < 2.4 or repeated weak dimensions
|
|
161
|
+
reject: Critical gate failure or mandatory control breach
|
|
162
|
+
not_reviewable: Evidence insufficient for core gate criteria
|
|
163
|
+
na_policy: Exclude N/A criteria from denominator; evaluator must justify N/A
|
|
164
|
+
confidence_policy: Confidence reported separately, must not modify score
|
|
165
|
+
|
|
166
|
+
outputs:
|
|
167
|
+
require_evidence_refs: true
|
|
168
|
+
require_confidence: true
|
|
169
|
+
require_actions: true
|
|
170
|
+
require_evidence_class: true
|
|
171
|
+
require_evidence_anchors: true
|
|
172
|
+
|
|
173
|
+
calibration:
|
|
174
|
+
required_before_production: true
|
|
175
|
+
minimum_examples: 3
|
|
176
|
+
|
|
177
|
+
change_log:
|
|
178
|
+
- version: "1.0.0"
|
|
179
|
+
date: "[today]"
|
|
180
|
+
author: "[author]"
|
|
181
|
+
changes:
|
|
182
|
+
- Initial profile for EAROS v2.0
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Step 6 — Pre-Publication Checks
|
|
188
|
+
|
|
189
|
+
> **Read `references/profile-checklist.md`** for the complete validation checklist before saving the file.
|
|
190
|
+
|
|
191
|
+
Quick summary:
|
|
192
|
+
- Every criterion has all 13 v2 required fields
|
|
193
|
+
- No criterion IDs duplicate existing IDs across `core/`, `profiles/`, `overlays/`
|
|
194
|
+
- Gate assignments are deliberate (1–2 major, 0–1 critical maximum)
|
|
195
|
+
- Profile YAML validates against `standard/schemas/rubric.schema.json`
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Step 7 — Calibration Checklist
|
|
200
|
+
|
|
201
|
+
Give the user this checklist:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
Pre-Calibration
|
|
205
|
+
[ ] 3+ real artifacts collected (1 strong >= 3.2, 1 weak < 2.4, 1 ambiguous borderline)
|
|
206
|
+
[ ] 2+ reviewers identified
|
|
207
|
+
[ ] YAML complete and schema-valid
|
|
208
|
+
|
|
209
|
+
Calibration
|
|
210
|
+
[ ] Each reviewer scores each artifact independently
|
|
211
|
+
[ ] Cohen's kappa computed per criterion (target > 0.70 well-defined, > 0.50 subjective)
|
|
212
|
+
[ ] Disagreements of >= 2 points identified and resolved against level descriptors
|
|
213
|
+
[ ] If kappa < 0.50 for any criterion: revise or split the criterion
|
|
214
|
+
|
|
215
|
+
Post-Calibration
|
|
216
|
+
[ ] Profile status changed: draft -> candidate
|
|
217
|
+
[ ] Worked evaluation example added to examples/
|
|
218
|
+
[ ] CHANGELOG.md updated
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Step 8 — File Placement
|
|
224
|
+
|
|
225
|
+
- Profiles: `profiles/<artifact-type>.yaml` (kebab-case, lowercase)
|
|
226
|
+
- Overlays: `overlays/<concern>.yaml`
|
|
227
|
+
- Examples: `examples/example-<artifact-type>.evaluation.yaml`
|
|
228
|
+
|
|
229
|
+
Remind the user: "Validate the YAML against `standard/schemas/rubric.schema.json` before committing. Use `earos-validate` to run the full repo health check after adding the profile."
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Non-Negotiable Rules
|
|
234
|
+
|
|
235
|
+
1. **Never add more than 12 criteria.** If you think you need more, split into two profiles.
|
|
236
|
+
2. **Every criterion must have all 13 v2 fields.** Incomplete criteria are harder to calibrate.
|
|
237
|
+
3. **Calibrate before production.** `status: draft` must not be used in a live governance process.
|
|
238
|
+
4. **Overlays do not inherit.** They use `scoring.method: append_to_base_rubric` and have no `inherits` field.
|
|
239
|
+
5. **Be opinionated on gates.** Under-gating lets bad designs pass; over-gating rejects good ones on technicalities.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## When to Read Which Reference File
|
|
244
|
+
|
|
245
|
+
| When | Read |
|
|
246
|
+
|------|------|
|
|
247
|
+
| Choosing a design method | `references/design-methods.md` |
|
|
248
|
+
| Drafting criteria (any stage) | `references/criterion-writing-guide.md` |
|
|
249
|
+
| Setting gate types and weights | `references/criterion-writing-guide.md#gate-guidance` |
|
|
250
|
+
| Before publishing | `references/profile-checklist.md` |
|
|
251
|
+
| Unsure if criteria overlap with core | Check `core/core-meta-rubric.yaml` |
|