@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.
Files changed (42) hide show
  1. package/bin/fit-schema.js +2 -2
  2. package/examples/capabilities/business.yaml +1 -1
  3. package/examples/capabilities/delivery.yaml +9 -7
  4. package/examples/capabilities/people.yaml +1 -1
  5. package/examples/capabilities/reliability.yaml +32 -11
  6. package/examples/capabilities/scale.yaml +1 -1
  7. package/examples/questions/behaviours/outcome_ownership.yaml +226 -49
  8. package/examples/questions/behaviours/polymathic_knowledge.yaml +273 -45
  9. package/examples/questions/behaviours/precise_communication.yaml +246 -52
  10. package/examples/questions/behaviours/relentless_curiosity.yaml +246 -48
  11. package/examples/questions/behaviours/systems_thinking.yaml +236 -50
  12. package/examples/questions/capabilities/business.yaml +107 -0
  13. package/examples/questions/capabilities/delivery.yaml +104 -0
  14. package/examples/questions/capabilities/people.yaml +104 -0
  15. package/examples/questions/capabilities/reliability.yaml +103 -0
  16. package/examples/questions/capabilities/scale.yaml +103 -0
  17. package/examples/questions/skills/architecture_design.yaml +102 -51
  18. package/examples/questions/skills/cloud_platforms.yaml +90 -44
  19. package/examples/questions/skills/code_quality.yaml +86 -45
  20. package/examples/questions/skills/data_modeling.yaml +93 -43
  21. package/examples/questions/skills/devops.yaml +91 -44
  22. package/examples/questions/skills/full_stack_development.yaml +93 -45
  23. package/examples/questions/skills/sre_practices.yaml +92 -41
  24. package/examples/questions/skills/stakeholder_management.yaml +97 -46
  25. package/examples/questions/skills/team_collaboration.yaml +87 -40
  26. package/examples/questions/skills/technical_writing.yaml +89 -40
  27. package/package.json +9 -9
  28. package/schema/json/behaviour-questions.schema.json +53 -26
  29. package/schema/json/capability-questions.schema.json +95 -0
  30. package/schema/json/capability.schema.json +2 -2
  31. package/schema/json/skill-questions.schema.json +34 -19
  32. package/schema/rdf/behaviour-questions.ttl +39 -7
  33. package/schema/rdf/capability.ttl +3 -3
  34. package/schema/rdf/defs.ttl +3 -3
  35. package/schema/rdf/skill-questions.ttl +28 -1
  36. package/{lib → src}/levels.js +37 -80
  37. package/{lib → src}/loader.js +9 -5
  38. package/{lib → src}/modifiers.js +3 -3
  39. package/{lib → src}/validation.js +74 -37
  40. /package/{lib → src}/index-generator.js +0 -0
  41. /package/{lib → src}/index.js +0 -0
  42. /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("../lib/index.js");
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("../lib/index.js");
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: Business
4
4
  emojiIcon: 💼
5
- displayOrder: 8
5
+ ordinalRank: 8
6
6
  description: |
7
7
  Understanding and driving business value.
8
8
  Includes domain knowledge, stakeholder management, strategic thinking,
@@ -2,7 +2,7 @@
2
2
 
3
3
  name: Delivery
4
4
  emojiIcon: 🚀
5
- displayOrder: 1
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 AWS infrastructure as code
281
- - name: Docker
282
- url: https://docs.docker.com/
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 platform
285
- useWhen: Containerizing applications or managing container environments
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: People
4
4
  emojiIcon: 👥
5
- displayOrder: 6
5
+ ordinalRank: 6
6
6
  description: |
7
7
  Growing individuals and building effective teams.
8
8
  Includes mentoring, coaching, hiring, performance management,
@@ -2,7 +2,7 @@
2
2
 
3
3
  name: Reliability
4
4
  emojiIcon: 🛡️
5
- displayOrder: 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: Docker
165
- url: https://docs.docker.com/
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 platform
168
- useWhen: Containerizing applications or managing container environments
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" "example" {
196
- ami = "ami-0c55b159cbfafe1f0"
197
- instance_type = "t2.micro"
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  name: Scale
4
4
  emojiIcon: 📐
5
- displayOrder: 4
5
+ ordinalRank: 4
6
6
  description: |
7
7
  Building systems that grow gracefully.
8
8
  Encompasses architecture, code quality, testing, performance,
@@ -1,51 +1,228 @@
1
1
  # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/behaviour-questions.schema.json
2
2
 
3
- emerging:
4
- - id: own_emerg_1
5
- text: Describe a task you completed from start to finish.
6
- lookingFor:
7
- - Follow-through
8
- - Basic accountability
9
- expectedDurationMinutes: 5
10
- developing:
11
- - id: own_dev_1
12
- text: Tell me about a time when you took responsibility for a mistake.
13
- lookingFor:
14
- - Accountability
15
- - Learning from errors
16
- expectedDurationMinutes: 5
17
- practicing:
18
- - id: own_pract_1
19
- text:
20
- Describe a project where you owned the entire lifecycle from design to
21
- production support.
22
- lookingFor:
23
- - End-to-end ownership
24
- - Operational responsibility
25
- expectedDurationMinutes: 8
26
- role_modeling:
27
- - id: own_role_1
28
- text: How do you build a culture of ownership in your team?
29
- lookingFor:
30
- - Team accountability
31
- - Systemic approaches
32
- expectedDurationMinutes: 8
33
- exemplifying:
34
- - id: own_exemp_1
35
- text:
36
- How do you establish and drive ownership culture across an entire
37
- organization?
38
- followUps:
39
- - How do you balance ownership with collaboration?
40
- lookingFor:
41
- - Enterprise ownership culture
42
- - Accountability at scale
43
- expectedDurationMinutes: 10
44
- - id: own_exemp_2
45
- text:
46
- How do you hold yourself and others accountable for outcomes at an
47
- organizational level?
48
- lookingFor:
49
- - Executive-level accountability
50
- - Systemic ownership practices
51
- expectedDurationMinutes: 10
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?