@forwardimpact/schema 0.4.0 → 0.6.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/bin/fit-schema.js +2 -2
- package/examples/capabilities/business.yaml +1 -1
- package/examples/capabilities/delivery.yaml +9 -7
- package/examples/capabilities/people.yaml +1 -1
- package/examples/capabilities/reliability.yaml +32 -11
- package/examples/capabilities/scale.yaml +1 -1
- package/examples/questions/behaviours/outcome_ownership.yaml +226 -49
- package/examples/questions/behaviours/polymathic_knowledge.yaml +273 -45
- package/examples/questions/behaviours/precise_communication.yaml +246 -52
- package/examples/questions/behaviours/relentless_curiosity.yaml +246 -48
- package/examples/questions/behaviours/systems_thinking.yaml +236 -50
- package/examples/questions/capabilities/business.yaml +107 -0
- package/examples/questions/capabilities/delivery.yaml +104 -0
- package/examples/questions/capabilities/people.yaml +104 -0
- package/examples/questions/capabilities/reliability.yaml +103 -0
- package/examples/questions/capabilities/scale.yaml +103 -0
- package/examples/questions/skills/architecture_design.yaml +102 -51
- package/examples/questions/skills/cloud_platforms.yaml +90 -44
- package/examples/questions/skills/code_quality.yaml +86 -45
- package/examples/questions/skills/data_modeling.yaml +93 -43
- package/examples/questions/skills/devops.yaml +91 -44
- package/examples/questions/skills/full_stack_development.yaml +93 -45
- package/examples/questions/skills/sre_practices.yaml +92 -41
- package/examples/questions/skills/stakeholder_management.yaml +97 -46
- package/examples/questions/skills/team_collaboration.yaml +87 -40
- package/examples/questions/skills/technical_writing.yaml +89 -40
- package/package.json +9 -9
- package/schema/json/behaviour-questions.schema.json +53 -26
- package/schema/json/capability-questions.schema.json +95 -0
- package/schema/json/capability.schema.json +2 -2
- package/schema/json/skill-questions.schema.json +34 -19
- package/schema/rdf/behaviour-questions.ttl +39 -7
- package/schema/rdf/capability.ttl +3 -3
- package/schema/rdf/defs.ttl +3 -3
- package/schema/rdf/skill-questions.ttl +28 -1
- package/{lib → src}/levels.js +37 -80
- package/{lib → src}/loader.js +9 -5
- package/{lib → src}/modifiers.js +3 -3
- package/{lib → src}/validation.js +74 -37
- /package/{lib → src}/index-generator.js +0 -0
- /package/{lib → src}/index.js +0 -0
- /package/{lib → src}/schema-validation.js +0 -0
package/bin/fit-schema.js
CHANGED
|
@@ -116,7 +116,7 @@ function formatValidationResults(result) {
|
|
|
116
116
|
async function runValidate(dataDir) {
|
|
117
117
|
console.log(`🔍 Validating data in: ${dataDir}\n`);
|
|
118
118
|
|
|
119
|
-
const { runSchemaValidation, loadAllData } = await import("../
|
|
119
|
+
const { runSchemaValidation, loadAllData } = await import("../src/index.js");
|
|
120
120
|
|
|
121
121
|
// Load data first
|
|
122
122
|
const data = await loadAllData(dataDir, { validate: false });
|
|
@@ -144,7 +144,7 @@ async function runValidate(dataDir) {
|
|
|
144
144
|
async function runGenerateIndex(dataDir) {
|
|
145
145
|
console.log(`📁 Generating index files in: ${dataDir}\n`);
|
|
146
146
|
|
|
147
|
-
const { generateAllIndexes } = await import("../
|
|
147
|
+
const { generateAllIndexes } = await import("../src/index.js");
|
|
148
148
|
|
|
149
149
|
const results = await generateAllIndexes(dataDir);
|
|
150
150
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
name: Delivery
|
|
4
4
|
emojiIcon: 🚀
|
|
5
|
-
|
|
5
|
+
ordinalRank: 1
|
|
6
6
|
description: |
|
|
7
7
|
Building and shipping solutions that solve real problems.
|
|
8
8
|
Encompasses full-stack development, data integration, problem discovery,
|
|
@@ -273,16 +273,18 @@ skills:
|
|
|
273
273
|
url: https://developer.hashicorp.com/terraform/docs
|
|
274
274
|
simpleIcon: terraform
|
|
275
275
|
description: Infrastructure as code tool
|
|
276
|
-
useWhen: Provisioning and managing cloud infrastructure
|
|
276
|
+
useWhen: Provisioning and managing cloud infrastructure as code
|
|
277
277
|
- name: CloudFormation
|
|
278
278
|
url: https://docs.aws.amazon.com/cloudformation/
|
|
279
279
|
description: AWS infrastructure as code service
|
|
280
|
-
useWhen: Managing
|
|
281
|
-
- name:
|
|
282
|
-
url: https://
|
|
280
|
+
useWhen: Managing cloud infrastructure using declarative templates
|
|
281
|
+
- name: Colima
|
|
282
|
+
url: https://github.com/abiosoft/colima
|
|
283
283
|
simpleIcon: docker
|
|
284
|
-
description: Container
|
|
285
|
-
useWhen:
|
|
284
|
+
description: Container runtime for macOS with Docker-compatible CLI
|
|
285
|
+
useWhen:
|
|
286
|
+
Running containers locally, building images, or containerizing
|
|
287
|
+
applications
|
|
286
288
|
implementationReference: |
|
|
287
289
|
## Technology Stack
|
|
288
290
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
name: Reliability
|
|
4
4
|
emojiIcon: 🛡️
|
|
5
|
-
|
|
5
|
+
ordinalRank: 5
|
|
6
6
|
description: |
|
|
7
7
|
Ensuring systems are dependable, secure, and observable.
|
|
8
8
|
Includes DevOps practices, security, monitoring, incident response,
|
|
@@ -160,12 +160,14 @@ skills:
|
|
|
160
160
|
url: https://developer.hashicorp.com/terraform/docs
|
|
161
161
|
simpleIcon: terraform
|
|
162
162
|
description: Infrastructure as code tool
|
|
163
|
-
useWhen: Provisioning and managing cloud infrastructure
|
|
164
|
-
- name:
|
|
165
|
-
url: https://
|
|
163
|
+
useWhen: Provisioning and managing cloud infrastructure as code
|
|
164
|
+
- name: Colima
|
|
165
|
+
url: https://github.com/abiosoft/colima
|
|
166
166
|
simpleIcon: docker
|
|
167
|
-
description: Container
|
|
168
|
-
useWhen:
|
|
167
|
+
description: Container runtime for macOS with Docker-compatible CLI
|
|
168
|
+
useWhen:
|
|
169
|
+
Running containers locally, building images, or containerizing
|
|
170
|
+
applications
|
|
169
171
|
implementationReference: |
|
|
170
172
|
## CI/CD Pipeline Stages
|
|
171
173
|
|
|
@@ -189,13 +191,32 @@ skills:
|
|
|
189
191
|
|
|
190
192
|
## Infrastructure as Code
|
|
191
193
|
|
|
192
|
-
### Terraform
|
|
194
|
+
### Terraform Workflow
|
|
195
|
+
```bash
|
|
196
|
+
terraform init # Initialize providers and backend
|
|
197
|
+
terraform plan # Preview changes before applying
|
|
198
|
+
terraform apply # Apply changes to infrastructure
|
|
199
|
+
terraform destroy # Tear down infrastructure
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Terraform in CI/CD Pipelines
|
|
203
|
+
1. **Plan on PR**: Run `terraform plan` on pull requests
|
|
204
|
+
2. **Review output**: Require approval for destructive changes
|
|
205
|
+
3. **Apply on merge**: Run `terraform apply` after merge to main
|
|
206
|
+
4. **State locking**: Use remote backend with locking (S3 + DynamoDB)
|
|
207
|
+
|
|
208
|
+
### Terraform Structure
|
|
193
209
|
```hcl
|
|
194
|
-
# Define resources declaratively
|
|
195
|
-
resource "aws_instance" "
|
|
196
|
-
ami =
|
|
197
|
-
instance_type =
|
|
210
|
+
# main.tf - Define resources declaratively
|
|
211
|
+
resource "aws_instance" "app" {
|
|
212
|
+
ami = var.ami_id
|
|
213
|
+
instance_type = var.instance_type
|
|
214
|
+
tags = { Environment = var.environment }
|
|
198
215
|
}
|
|
216
|
+
|
|
217
|
+
# variables.tf - Parameterize for environments
|
|
218
|
+
variable "environment" { type = string }
|
|
219
|
+
variable "instance_type" { default = "t3.micro" }
|
|
199
220
|
```
|
|
200
221
|
|
|
201
222
|
### Docker
|
|
@@ -1,51 +1,228 @@
|
|
|
1
1
|
# yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/behaviour-questions.schema.json
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
3
|
+
professionalQuestions:
|
|
4
|
+
emerging:
|
|
5
|
+
- id: own_pro_emerg_1
|
|
6
|
+
text:
|
|
7
|
+
A feature you built last week is causing intermittent errors in
|
|
8
|
+
production. Your tech lead is in a meeting and unavailable for an hour.
|
|
9
|
+
context:
|
|
10
|
+
The errors affect about 5% of users and the on-call engineer has pinged
|
|
11
|
+
the team channel. You have access to logs and the deployment pipeline.
|
|
12
|
+
The feature was built using AI-generated code that you reviewed before
|
|
13
|
+
merging.
|
|
14
|
+
simulationPrompts:
|
|
15
|
+
- Walk me through your first steps when you see the alert
|
|
16
|
+
- How would you decide whether to roll back or investigate further?
|
|
17
|
+
- Who would you communicate with and what would you say?
|
|
18
|
+
- How would you document what happened for the team?
|
|
19
|
+
lookingFor:
|
|
20
|
+
- Takes immediate responsibility rather than waiting for direction
|
|
21
|
+
- Shows willingness to act within their capability
|
|
22
|
+
- Communicates status proactively even without being asked
|
|
23
|
+
- Understands the feature serves a business purpose beyond code
|
|
24
|
+
expectedDurationMinutes: 20
|
|
25
|
+
|
|
26
|
+
developing:
|
|
27
|
+
- id: own_pro_dev_1
|
|
28
|
+
text:
|
|
29
|
+
You shipped a feature using AI-generated code that passed all tests, but
|
|
30
|
+
a stakeholder reports it behaves differently than specified.
|
|
31
|
+
context:
|
|
32
|
+
The stakeholder is frustrated because they demoed the feature to a
|
|
33
|
+
client and it didn't work as expected. The AI tool generated a plausible
|
|
34
|
+
but subtly wrong implementation that your tests didn't catch.
|
|
35
|
+
simulationPrompts:
|
|
36
|
+
- How do you respond to the stakeholder's frustration?
|
|
37
|
+
- What do you do to understand the gap between spec and implementation?
|
|
38
|
+
- How do you decide between a quick patch and a proper fix?
|
|
39
|
+
- What would you change about your review process going forward?
|
|
40
|
+
lookingFor:
|
|
41
|
+
- Takes ownership of the gap rather than blaming the AI tool
|
|
42
|
+
- Reviews AI-generated code critically against the specification
|
|
43
|
+
- Makes pragmatic trade-offs between speed and correctness
|
|
44
|
+
- Considers how to prevent similar gaps in future
|
|
45
|
+
expectedDurationMinutes: 20
|
|
46
|
+
|
|
47
|
+
practicing:
|
|
48
|
+
- id: own_pro_pract_1
|
|
49
|
+
text:
|
|
50
|
+
A key integration your team owns is blocking a partner team's quarterly
|
|
51
|
+
release. The fix requires accepting significant technical debt.
|
|
52
|
+
context:
|
|
53
|
+
The partner team's release is worth £2M in annual revenue. A proper fix
|
|
54
|
+
would take 3 weeks; a pragmatic workaround takes 3 days but leaves known
|
|
55
|
+
limitations. You own the stakeholder relationship with the partner
|
|
56
|
+
team's lead.
|
|
57
|
+
simulationPrompts:
|
|
58
|
+
- How do you evaluate the trade-off between technical debt and business
|
|
59
|
+
value?
|
|
60
|
+
- Walk me through the conversation you'd have with the partner team lead
|
|
61
|
+
- How do you ensure the technical debt is tracked and eventually
|
|
62
|
+
addressed?
|
|
63
|
+
- How do you communicate the decision and its consequences to your team?
|
|
64
|
+
lookingFor:
|
|
65
|
+
- Owns the end-to-end business outcome, not just the code
|
|
66
|
+
- Accepts technical debt intentionally with clear reasoning
|
|
67
|
+
- Manages the stakeholder relationship with transparency
|
|
68
|
+
- Balances delivery speed with long-term quality
|
|
69
|
+
expectedDurationMinutes: 20
|
|
70
|
+
|
|
71
|
+
role_modeling:
|
|
72
|
+
- id: own_pro_role_1
|
|
73
|
+
text:
|
|
74
|
+
Two teams in your function disagree about who owns a cross-cutting
|
|
75
|
+
reliability issue. Incidents are recurring and both teams blame the
|
|
76
|
+
other.
|
|
77
|
+
context:
|
|
78
|
+
The issue has caused 3 incidents this month, each impacting customer
|
|
79
|
+
experience. Neither team has full visibility into the other's service.
|
|
80
|
+
You are a senior IC with credibility with both teams. Leadership is
|
|
81
|
+
starting to notice.
|
|
82
|
+
simulationPrompts:
|
|
83
|
+
- How do you approach the situation without formal authority?
|
|
84
|
+
- What would you do to establish clear ownership boundaries?
|
|
85
|
+
- How do you shift the conversation from blame to accountability?
|
|
86
|
+
- What systemic changes would you propose to prevent this pattern?
|
|
87
|
+
lookingFor:
|
|
88
|
+
- Drives accountability culture focused on outcomes not blame
|
|
89
|
+
- Takes ownership of the problem without formal responsibility
|
|
90
|
+
- Makes decisions without needing to escalate for permission
|
|
91
|
+
- Establishes verification rigor for cross-team boundaries
|
|
92
|
+
expectedDurationMinutes: 20
|
|
93
|
+
|
|
94
|
+
exemplifying:
|
|
95
|
+
- id: own_pro_exemp_1
|
|
96
|
+
text:
|
|
97
|
+
The organisation is adopting AI code generation at scale, but there is
|
|
98
|
+
no accountability framework for AI-generated code quality and outcomes.
|
|
99
|
+
context:
|
|
100
|
+
Several teams have shipped AI-generated features with defects not caught
|
|
101
|
+
in review. Leadership wants velocity but also accountability. You have
|
|
102
|
+
been asked to define the organizational approach.
|
|
103
|
+
simulationPrompts:
|
|
104
|
+
- How do you define accountability standards for AI-generated code?
|
|
105
|
+
- How do you balance velocity gains from AI with outcome ownership?
|
|
106
|
+
- What organizational structures would you put in place?
|
|
107
|
+
- How would you measure success of the accountability framework?
|
|
108
|
+
lookingFor:
|
|
109
|
+
- Defines organizational accountability standards for the AI era
|
|
110
|
+
- Shapes practices that scale beyond individual team behaviour
|
|
111
|
+
- Sponsors initiatives with full outcome accountability
|
|
112
|
+
- Takes an approach that could influence industry practices
|
|
113
|
+
expectedDurationMinutes: 20
|
|
114
|
+
followUps:
|
|
115
|
+
- How would you handle a team that resists the framework?
|
|
116
|
+
|
|
117
|
+
managementQuestions:
|
|
118
|
+
emerging:
|
|
119
|
+
- id: own_mgmt_emerg_1
|
|
120
|
+
text:
|
|
121
|
+
A team member's task is overdue and they haven't raised it. You discover
|
|
122
|
+
this during standup where they say everything is "on track."
|
|
123
|
+
context:
|
|
124
|
+
The task was due yesterday and blocks another team member's work. The
|
|
125
|
+
team member is relatively new and you suspect they may be struggling but
|
|
126
|
+
don't want to appear incompetent. The sprint goal is at risk.
|
|
127
|
+
simulationPrompts:
|
|
128
|
+
- How do you address this in the moment without embarrassing them?
|
|
129
|
+
- What conversation do you have with them privately afterwards?
|
|
130
|
+
- How do you ensure the blocking dependency is resolved?
|
|
131
|
+
- What do you put in place to catch this earlier next time?
|
|
132
|
+
lookingFor:
|
|
133
|
+
- Ensures follow-through on delegated tasks
|
|
134
|
+
- Creates psychological safety while maintaining accountability
|
|
135
|
+
- Addresses both the immediate blocker and the underlying pattern
|
|
136
|
+
- Shows awareness of team accountability dynamics
|
|
137
|
+
expectedDurationMinutes: 20
|
|
138
|
+
|
|
139
|
+
developing:
|
|
140
|
+
- id: own_mgmt_dev_1
|
|
141
|
+
text:
|
|
142
|
+
A team member shipped code that caused a production incident. During the
|
|
143
|
+
post-mortem, other team members want to assign blame.
|
|
144
|
+
context:
|
|
145
|
+
The incident affected 200 users for 45 minutes. The code was reviewed
|
|
146
|
+
and approved by another team member before merge. The author is junior
|
|
147
|
+
and clearly upset. Your team has no established incident ownership
|
|
148
|
+
culture.
|
|
149
|
+
simulationPrompts:
|
|
150
|
+
- How do you run the post-mortem to keep it constructive?
|
|
151
|
+
- How do you coach the team member privately afterwards?
|
|
152
|
+
- What do you say to the team about shared accountability?
|
|
153
|
+
- How do you start building an ownership culture from this moment?
|
|
154
|
+
lookingFor:
|
|
155
|
+
- Creates safe space for ownership while addressing the incident
|
|
156
|
+
- Coaches individual accountability constructively
|
|
157
|
+
- Models shared ownership rather than individual blame
|
|
158
|
+
- Begins establishing team accountability patterns
|
|
159
|
+
expectedDurationMinutes: 20
|
|
160
|
+
|
|
161
|
+
practicing:
|
|
162
|
+
- id: own_mgmt_pract_1
|
|
163
|
+
text:
|
|
164
|
+
Your team consistently treats operational issues as "someone else's
|
|
165
|
+
problem" once features ship. The platform team is overwhelmed.
|
|
166
|
+
context:
|
|
167
|
+
Your team shipped 12 features this quarter with strong velocity, but
|
|
168
|
+
operational tickets have doubled. The platform team lead has escalated
|
|
169
|
+
to your manager. Your team sees themselves as "builders, not operators."
|
|
170
|
+
simulationPrompts:
|
|
171
|
+
- How do you shift the team from feature delivery to outcome ownership?
|
|
172
|
+
- What structural changes embed operational ownership?
|
|
173
|
+
- How do you have the conversation with the platform team lead?
|
|
174
|
+
- How do you measure and recognize end-to-end ownership?
|
|
175
|
+
lookingFor:
|
|
176
|
+
- Structures team around end-to-end ownership, not just features
|
|
177
|
+
- Balances autonomy with accountability for operational outcomes
|
|
178
|
+
- Builds clear ownership expectations with concrete mechanisms
|
|
179
|
+
- Takes responsibility for the team culture gap
|
|
180
|
+
expectedDurationMinutes: 20
|
|
181
|
+
|
|
182
|
+
role_modeling:
|
|
183
|
+
- id: own_mgmt_role_1
|
|
184
|
+
text:
|
|
185
|
+
A project you championed has missed its business targets after 6 months.
|
|
186
|
+
Technology works but adoption is far lower than projected.
|
|
187
|
+
context:
|
|
188
|
+
You estimated £500K in annual savings but actual savings are £120K.
|
|
189
|
+
Technical delivery was on time and on budget. The adoption gap is due to
|
|
190
|
+
change management issues outside your initial scope. Your peers are
|
|
191
|
+
distancing themselves from the project.
|
|
192
|
+
simulationPrompts:
|
|
193
|
+
- How do you own this outcome publicly with leadership?
|
|
194
|
+
- What do you do about the adoption gap specifically?
|
|
195
|
+
- How do you model accountability when the outcome isn't what you
|
|
196
|
+
projected?
|
|
197
|
+
- What would you do differently if starting again?
|
|
198
|
+
lookingFor:
|
|
199
|
+
- Models personal accountability publicly, including for indirect
|
|
200
|
+
outcomes
|
|
201
|
+
- Owns the business outcome, not just the technical delivery
|
|
202
|
+
- Takes action to close the gap rather than accepting current state
|
|
203
|
+
- Shows transparency about lessons learned
|
|
204
|
+
expectedDurationMinutes: 20
|
|
205
|
+
|
|
206
|
+
exemplifying:
|
|
207
|
+
- id: own_mgmt_exemp_1
|
|
208
|
+
text:
|
|
209
|
+
You need to establish ownership expectations across a function where
|
|
210
|
+
teams have very different accountability cultures.
|
|
211
|
+
context:
|
|
212
|
+
You lead a function of 8 teams (60+ engineers). Three teams have strong
|
|
213
|
+
ownership cultures, three are inconsistent, and two actively avoid
|
|
214
|
+
accountability. Recent reorgs mixed people from different cultures and
|
|
215
|
+
cross-team incidents are increasing.
|
|
216
|
+
simulationPrompts:
|
|
217
|
+
- How do you assess ownership maturity across teams?
|
|
218
|
+
- What organizational standards would you establish?
|
|
219
|
+
- How do you bring lower-performing teams up without bureaucracy?
|
|
220
|
+
- How do you handle managers who resist accountability expectations?
|
|
221
|
+
lookingFor:
|
|
222
|
+
- Establishes organizational accountability standards
|
|
223
|
+
- Takes a systemic approach rather than team-by-team fixing
|
|
224
|
+
- Balances accountability with psychological safety at scale
|
|
225
|
+
- Creates sustainable culture that survives personnel changes
|
|
226
|
+
expectedDurationMinutes: 20
|
|
227
|
+
followUps:
|
|
228
|
+
- How would you measure the impact of the ownership culture change?
|