@forwardimpact/schema 0.4.0 → 0.7.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 (48) hide show
  1. package/bin/fit-schema.js +2 -2
  2. package/examples/capabilities/business.yaml +27 -11
  3. package/examples/capabilities/delivery.yaml +65 -27
  4. package/examples/capabilities/people.yaml +1 -1
  5. package/examples/capabilities/reliability.yaml +85 -31
  6. package/examples/capabilities/scale.yaml +83 -31
  7. package/examples/framework.yaml +5 -1
  8. package/examples/questions/behaviours/outcome_ownership.yaml +226 -49
  9. package/examples/questions/behaviours/polymathic_knowledge.yaml +273 -45
  10. package/examples/questions/behaviours/precise_communication.yaml +246 -52
  11. package/examples/questions/behaviours/relentless_curiosity.yaml +246 -48
  12. package/examples/questions/behaviours/systems_thinking.yaml +236 -50
  13. package/examples/questions/capabilities/business.yaml +107 -0
  14. package/examples/questions/capabilities/delivery.yaml +104 -0
  15. package/examples/questions/capabilities/people.yaml +104 -0
  16. package/examples/questions/capabilities/reliability.yaml +103 -0
  17. package/examples/questions/capabilities/scale.yaml +103 -0
  18. package/examples/questions/skills/architecture_design.yaml +102 -51
  19. package/examples/questions/skills/cloud_platforms.yaml +90 -44
  20. package/examples/questions/skills/code_quality.yaml +86 -45
  21. package/examples/questions/skills/data_modeling.yaml +93 -43
  22. package/examples/questions/skills/devops.yaml +91 -44
  23. package/examples/questions/skills/full_stack_development.yaml +93 -45
  24. package/examples/questions/skills/sre_practices.yaml +92 -41
  25. package/examples/questions/skills/stakeholder_management.yaml +97 -46
  26. package/examples/questions/skills/team_collaboration.yaml +87 -40
  27. package/examples/questions/skills/technical_writing.yaml +89 -40
  28. package/examples/stages.yaml +52 -13
  29. package/package.json +9 -9
  30. package/schema/json/behaviour-questions.schema.json +53 -26
  31. package/schema/json/capability-questions.schema.json +95 -0
  32. package/schema/json/capability.schema.json +8 -7
  33. package/schema/json/framework.schema.json +13 -0
  34. package/schema/json/skill-questions.schema.json +34 -19
  35. package/schema/json/stages.schema.json +6 -6
  36. package/schema/rdf/behaviour-questions.ttl +39 -7
  37. package/schema/rdf/capability.ttl +15 -15
  38. package/schema/rdf/defs.ttl +3 -3
  39. package/schema/rdf/framework.ttl +38 -0
  40. package/schema/rdf/skill-questions.ttl +28 -1
  41. package/schema/rdf/stages.ttl +14 -14
  42. package/{lib → src}/levels.js +53 -101
  43. package/{lib → src}/loader.js +9 -5
  44. package/{lib → src}/modifiers.js +3 -3
  45. package/{lib → src}/validation.js +105 -79
  46. /package/{lib → src}/index-generator.js +0 -0
  47. /package/{lib → src}/index.js +0 -0
  48. /package/{lib → src}/schema-validation.js +0 -0
@@ -1,42 +1,91 @@
1
1
  # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/skill-questions.schema.json
2
2
 
3
- awareness:
4
- - id: tw_aware_1
5
- text: How do you approach documenting your code and work?
6
- lookingFor:
7
- - Basic documentation habits
8
- - Understanding of documentation importance
9
- expectedDurationMinutes: 5
10
- foundational:
11
- - id: tw_found_1
12
- text: What makes a good README file? Walk me through what you'd include.
13
- lookingFor:
14
- - README best practices
15
- - Reader-centric documentation
16
- expectedDurationMinutes: 5
17
- working:
18
- - id: tw_work_1
19
- text:
20
- How do you write technical specifications that enable others to implement
21
- features?
22
- followUps:
23
- - How detailed do you go?
24
- lookingFor:
25
- - Spec writing skills
26
- - Communication of technical requirements
27
- expectedDurationMinutes: 8
28
- practitioner:
29
- - id: tw_pract_1
30
- text:
31
- How do you establish documentation standards and practices in your team?
32
- lookingFor:
33
- - Documentation leadership
34
- - Spec-driven development advocacy
35
- expectedDurationMinutes: 8
36
- expert:
37
- - id: tw_expert_1
38
- text: How do you create organizational documentation culture and systems?
39
- lookingFor:
40
- - Enterprise documentation strategy
41
- - Knowledge management systems
42
- expectedDurationMinutes: 10
3
+ professionalQuestions:
4
+ awareness:
5
+ - id: tw_pro_aware_1
6
+ text: How do you approach documenting your code and work?
7
+ lookingFor:
8
+ - Basic documentation habits
9
+ - Understanding of documentation importance
10
+ expectedDurationMinutes: 5
11
+ foundational:
12
+ - id: tw_pro_found_1
13
+ text: What makes a good README file? Walk me through what you'd include.
14
+ lookingFor:
15
+ - README best practices
16
+ - Reader-centric documentation
17
+ expectedDurationMinutes: 5
18
+ working:
19
+ - id: tw_pro_work_1
20
+ text:
21
+ How do you write technical specifications that enable others to
22
+ implement features?
23
+ followUps:
24
+ - How detailed do you go?
25
+ lookingFor:
26
+ - Spec writing skills
27
+ - Communication of technical requirements
28
+ expectedDurationMinutes: 8
29
+ practitioner:
30
+ - id: tw_pro_pract_1
31
+ text:
32
+ How do you establish documentation standards and practices in your team?
33
+ lookingFor:
34
+ - Documentation leadership
35
+ - Spec-driven development advocacy
36
+ expectedDurationMinutes: 8
37
+ expert:
38
+ - id: tw_pro_expert_1
39
+ text: How do you create organizational documentation culture and systems?
40
+ lookingFor:
41
+ - Enterprise documentation strategy
42
+ - Knowledge management systems
43
+ expectedDurationMinutes: 10
44
+
45
+ managementQuestions:
46
+ awareness:
47
+ - id: tw_mgmt_aware_1
48
+ text: How do you ensure your team documents their work appropriately?
49
+ lookingFor:
50
+ - Basic documentation expectations
51
+ - Team documentation awareness
52
+ expectedDurationMinutes: 5
53
+ foundational:
54
+ - id: tw_mgmt_found_1
55
+ text:
56
+ How do you set documentation expectations and standards for your team?
57
+ followUps:
58
+ - How do you handle resistance to documentation?
59
+ lookingFor:
60
+ - Documentation standard setting
61
+ - Team buy-in practices
62
+ expectedDurationMinutes: 5
63
+ working:
64
+ - id: tw_mgmt_work_1
65
+ text:
66
+ How do you balance documentation effort with delivery speed in your
67
+ team?
68
+ followUps:
69
+ - What is the minimum documentation you require?
70
+ lookingFor:
71
+ - Documentation vs velocity trade-offs
72
+ - Pragmatic documentation approach
73
+ expectedDurationMinutes: 8
74
+ practitioner:
75
+ - id: tw_mgmt_pract_1
76
+ text: How do you build a documentation culture within your team?
77
+ followUps:
78
+ - How do you keep documentation current?
79
+ lookingFor:
80
+ - Documentation culture development
81
+ - Knowledge management practices
82
+ expectedDurationMinutes: 8
83
+ expert:
84
+ - id: tw_mgmt_expert_1
85
+ text:
86
+ How do you drive documentation practices and knowledge sharing across
87
+ multiple teams?
88
+ lookingFor:
89
+ - Cross-team documentation leadership
90
+ - Organizational knowledge strategy
91
+ expectedDurationMinutes: 10
@@ -23,8 +23,8 @@
23
23
  - Write specifications as markdown files under specs/[feature-name]/spec.md
24
24
  - Mark ambiguities with [NEEDS CLARIFICATION]; ask the user; do not guess
25
25
  - No technology choices, APIs, or code structure in specifications
26
- entryCriteria: []
27
- exitCriteria:
26
+ readChecklist: []
27
+ confirmChecklist:
28
28
  - spec.md exists with user stories and acceptance criteria
29
29
  - No unresolved [NEEDS CLARIFICATION] markers in spec.md
30
30
 
@@ -42,23 +42,59 @@
42
42
  - targetStage: plan
43
43
  label: Alternative Plan
44
44
  prompt: Create an alternative plan.md exploring a different approach.
45
- - targetStage: code
46
- label: Start Coding
47
- prompt: Implement the tasks defined in plan.md.
45
+ - targetStage: onboard
46
+ label: Set Up Environment
47
+ prompt: Prepare the development environment based on plan.md requirements.
48
48
  constraints:
49
49
  - Do not make code edits or execute commands
50
50
  - Every technology choice must trace back to a specific requirement
51
51
  - Write plans as markdown files under specs/[feature-name]/plan.md
52
52
  - Define contracts and data models before implementation details
53
53
  - Document rationale for architectural decisions
54
- entryCriteria:
54
+ readChecklist: []
55
+ confirmChecklist:
55
56
  - spec.md exists with user stories and acceptance criteria
56
57
  - No unresolved [NEEDS CLARIFICATION] markers in spec.md
57
- exitCriteria:
58
58
  - plan.md exists with technology choices and architecture
59
59
  - Contracts and data models defined where applicable
60
60
  - No unresolved [NEEDS CLARIFICATION] markers in plan.md
61
61
 
62
+ - id: onboard
63
+ name: Onboard
64
+ emojiIcon: "🔧"
65
+ summary:
66
+ Prepares the development environment with dependencies, tools, and credentials
67
+ description:
68
+ Your primary task is to prepare the development environment with all
69
+ prerequisites for coding. Install dependencies, configure tools, set up
70
+ credentials, and verify the environment is ready for implementation.
71
+ handoffs:
72
+ - targetStage: onboard
73
+ label: Retry Setup
74
+ prompt: Re-run the environment setup to fix remaining issues.
75
+ - targetStage: plan
76
+ label: Update Plan
77
+ prompt: Update plan.md because the environment setup revealed issues.
78
+ - targetStage: code
79
+ label: Start Coding
80
+ prompt: Implement the tasks defined in plan.md.
81
+ constraints:
82
+ - Do not implement feature code; focus only on environment setup
83
+ - Verify each tool and dependency works before moving on
84
+ - Document all environment configuration in a reproducible way
85
+ - Never hardcode secrets; use .env files or secret managers
86
+ - Track progress with the todo tool
87
+ readChecklist: []
88
+ confirmChecklist:
89
+ - plan.md exists with technology choices and architecture
90
+ - No unresolved [NEEDS CLARIFICATION] markers in plan.md
91
+ - All dependencies installed and versions verified
92
+ - Environment variables and secrets configured (.env files, tokens)
93
+ - Linter and formatter configured and passing on existing code
94
+ - Build and test commands run successfully
95
+ - Version control hooks and CI checks are operational
96
+ - Development server or runtime starts without errors
97
+
62
98
  - id: code
63
99
  name: Code
64
100
  emojiIcon: "💻"
@@ -74,11 +110,14 @@
74
110
  - Implement one task at a time, verify before moving on
75
111
  - Write tests alongside implementation
76
112
  - Track progress with the todo tool
77
- entryCriteria:
113
+ readChecklist: []
114
+ confirmChecklist:
78
115
  - spec.md exists with user stories and acceptance criteria
79
116
  - plan.md exists with technology choices and architecture
80
117
  - No unresolved [NEEDS CLARIFICATION] markers in plan.md
81
- exitCriteria:
118
+ - All dependencies installed and versions verified
119
+ - Linter and formatter configured and passing
120
+ - Build and test commands run successfully
82
121
  - Implementation complete according to plan.md
83
122
  - Tests written and passing
84
123
  - Self-review completed
@@ -108,11 +147,11 @@
108
147
  - Track findings and required changes with the todo tool
109
148
  - Run the application locally and verify changes work as expected
110
149
  - Test user-facing functionality against acceptance criteria
111
- entryCriteria:
150
+ readChecklist: []
151
+ confirmChecklist:
112
152
  - Implementation complete according to plan.md
113
153
  - Tests written and passing
114
154
  - Self-review completed
115
- exitCriteria:
116
155
  - Application runs locally without errors
117
156
  - Changes verified against acceptance criteria through manual testing
118
157
  - No blocking issues identified in review
@@ -135,11 +174,11 @@
135
174
  - Do not make code edits; hand off to code stage if fixes are needed
136
175
  - Verify all workflows complete successfully before considering deployment
137
176
  done
138
- entryCriteria:
177
+ readChecklist: []
178
+ confirmChecklist:
139
179
  - Application runs locally without errors
140
180
  - Changes verified against acceptance criteria through manual testing
141
181
  - No blocking issues identified in review
142
182
  - Review approved
143
- exitCriteria:
144
183
  - All triggered workflows are green
145
184
  - Deployment verified in target environment
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forwardimpact/schema",
3
- "version": "0.4.0",
3
+ "version": "0.7.0",
4
4
  "description": "Schema definitions and data loading for skills, behaviours, and role frameworks",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "homepage": "https://www.forwardimpact.team/schema",
12
12
  "type": "module",
13
- "main": "lib/index.js",
13
+ "main": "src/index.js",
14
14
  "bin": {
15
15
  "fit-schema": "./bin/fit-schema.js"
16
16
  },
@@ -21,16 +21,16 @@
21
21
  "files": [
22
22
  "bin/",
23
23
  "examples/",
24
- "lib/",
24
+ "src/",
25
25
  "schema/"
26
26
  ],
27
27
  "exports": {
28
- ".": "./lib/index.js",
29
- "./loader": "./lib/loader.js",
30
- "./validation": "./lib/validation.js",
31
- "./schema-validation": "./lib/schema-validation.js",
32
- "./index-generator": "./lib/index-generator.js",
33
- "./levels": "./lib/levels.js",
28
+ ".": "./src/index.js",
29
+ "./loader": "./src/loader.js",
30
+ "./validation": "./src/validation.js",
31
+ "./schema-validation": "./src/schema-validation.js",
32
+ "./index-generator": "./src/index-generator.js",
33
+ "./levels": "./src/levels.js",
34
34
  "./examples/*": "./examples/*",
35
35
  "./schema/json/*": "./schema/json/*",
36
36
  "./schema/rdf/*": "./schema/rdf/*"
@@ -2,35 +2,50 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://www.forwardimpact.team/schema/json/behaviour-questions.schema.json",
4
4
  "title": "Behaviour Interview Questions",
5
- "description": "Interview questions for a behaviour, organized by maturity level",
5
+ "description": "Stakeholder simulation interview questions for a behaviour, organized by role type (professional/management) and maturity level. Each question presents a realistic stakeholder scenario to assess behavioural maturity.",
6
6
  "type": "object",
7
7
  "properties": {
8
- "emerging": {
9
- "type": "array",
10
- "items": { "$ref": "#/$defs/question" }
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/maturityQuestions"
11
11
  },
12
- "developing": {
13
- "type": "array",
14
- "items": { "$ref": "#/$defs/question" }
15
- },
16
- "practicing": {
17
- "type": "array",
18
- "items": { "$ref": "#/$defs/question" }
19
- },
20
- "role_modeling": {
21
- "type": "array",
22
- "items": { "$ref": "#/$defs/question" }
23
- },
24
- "exemplifying": {
25
- "type": "array",
26
- "items": { "$ref": "#/$defs/question" }
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/maturityQuestions"
27
15
  }
28
16
  },
29
17
  "additionalProperties": false,
30
18
  "$defs": {
19
+ "maturityQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by behaviour maturity level",
22
+ "properties": {
23
+ "emerging": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "developing": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "practicing": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "role_modeling": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "exemplifying": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
31
46
  "question": {
32
47
  "type": "object",
33
- "required": ["id", "text", "lookingFor"],
48
+ "required": ["id", "text", "lookingFor", "simulationPrompts"],
34
49
  "properties": {
35
50
  "id": {
36
51
  "type": "string",
@@ -39,20 +54,32 @@
39
54
  },
40
55
  "text": {
41
56
  "type": "string",
42
- "maxLength": 150,
43
- "description": "The question text (second person, under 150 characters)"
57
+ "maxLength": 300,
58
+ "description": "The stakeholder scenario (second person, sets up a realistic situation)"
59
+ },
60
+ "context": {
61
+ "type": "string",
62
+ "description": "Additional context to set up the simulation scenario"
63
+ },
64
+ "simulationPrompts": {
65
+ "type": "array",
66
+ "description": "3-5 guiding prompts to steer the simulation and probe the candidate's behaviour",
67
+ "minItems": 2,
68
+ "maxItems": 5,
69
+ "items": { "type": "string" }
44
70
  },
45
71
  "lookingFor": {
46
72
  "type": "array",
47
- "description": "2-4 bullet points of good answer indicators",
48
- "minItems": 1,
73
+ "description": "2-4 indicators of strong behavioural response",
74
+ "minItems": 2,
49
75
  "maxItems": 4,
50
76
  "items": { "type": "string" }
51
77
  },
52
78
  "expectedDurationMinutes": {
53
79
  "type": "integer",
54
- "minimum": 1,
55
- "description": "Expected duration in minutes (default: 5 for emerging/developing, 8-10 for higher)"
80
+ "minimum": 10,
81
+ "default": 20,
82
+ "description": "Expected duration in minutes (default: 20 for stakeholder simulation)"
56
83
  },
57
84
  "followUps": {
58
85
  "type": "array",
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.forwardimpact.team/schema/json/capability-questions.schema.json",
4
+ "title": "Capability Decomposition Questions",
5
+ "description": "Decomposition interview questions for a capability, organized by role type (professional/management) and level. Inspired by Palantir's decomposition interview technique.",
6
+ "type": "object",
7
+ "properties": {
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/levelQuestions"
11
+ },
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/levelQuestions"
15
+ }
16
+ },
17
+ "additionalProperties": false,
18
+ "$defs": {
19
+ "levelQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by capability level",
22
+ "properties": {
23
+ "awareness": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "foundational": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "working": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "practitioner": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "expert": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
46
+ "question": {
47
+ "type": "object",
48
+ "required": ["id", "text", "lookingFor", "decompositionPrompts"],
49
+ "properties": {
50
+ "id": {
51
+ "type": "string",
52
+ "pattern": "^[a-z][a-z0-9_]*$",
53
+ "description": "Unique question identifier (format: {capability_abbrev}_{level_abbrev}_{number})"
54
+ },
55
+ "text": {
56
+ "type": "string",
57
+ "maxLength": 200,
58
+ "description": "The problem statement or scenario (second person, open-ended)"
59
+ },
60
+ "context": {
61
+ "type": "string",
62
+ "description": "Optional additional context to set up the scenario"
63
+ },
64
+ "decompositionPrompts": {
65
+ "type": "array",
66
+ "description": "3-5 guiding questions to help the candidate structure their thinking",
67
+ "minItems": 2,
68
+ "maxItems": 5,
69
+ "items": { "type": "string" }
70
+ },
71
+ "lookingFor": {
72
+ "type": "array",
73
+ "description": "2-4 indicators of a strong decomposition approach",
74
+ "minItems": 2,
75
+ "maxItems": 4,
76
+ "items": { "type": "string" }
77
+ },
78
+ "expectedDurationMinutes": {
79
+ "type": "integer",
80
+ "minimum": 5,
81
+ "default": 15,
82
+ "description": "Expected duration in minutes (default: 15 for decomposition)"
83
+ },
84
+ "followUps": {
85
+ "type": "array",
86
+ "description": "1-3 probing questions for deeper exploration",
87
+ "minItems": 1,
88
+ "maxItems": 3,
89
+ "items": { "type": "string" }
90
+ }
91
+ },
92
+ "additionalProperties": false
93
+ }
94
+ }
95
+ }
@@ -19,10 +19,10 @@
19
19
  "type": "string",
20
20
  "description": "Emoji for visual representation"
21
21
  },
22
- "displayOrder": {
22
+ "ordinalRank": {
23
23
  "type": "integer",
24
24
  "minimum": 1,
25
- "description": "Order for display in UI"
25
+ "description": "Numeric rank for ordering capabilities (1 = first)"
26
26
  },
27
27
  "description": {
28
28
  "type": "string",
@@ -186,6 +186,7 @@
186
186
  "properties": {
187
187
  "specify": { "$ref": "#/$defs/skillStage" },
188
188
  "plan": { "$ref": "#/$defs/skillStage" },
189
+ "onboard": { "$ref": "#/$defs/skillStage" },
189
190
  "code": { "$ref": "#/$defs/skillStage" },
190
191
  "review": { "$ref": "#/$defs/skillStage" },
191
192
  "deploy": { "$ref": "#/$defs/skillStage" }
@@ -197,20 +198,20 @@
197
198
  },
198
199
  "skillStage": {
199
200
  "type": "object",
200
- "required": ["focus", "activities", "ready"],
201
+ "required": ["focus", "readChecklist", "confirmChecklist"],
201
202
  "properties": {
202
203
  "focus": {
203
204
  "type": "string",
204
205
  "description": "Primary focus for this stage"
205
206
  },
206
- "activities": {
207
+ "readChecklist": {
207
208
  "type": "array",
208
- "description": "Key activities to perform in this stage",
209
+ "description": "Read-Then-Do Checklist: steps to follow in order during this stage",
209
210
  "items": { "type": "string" }
210
211
  },
211
- "ready": {
212
+ "confirmChecklist": {
212
213
  "type": "array",
213
- "description": "Criteria that indicate readiness to move to next stage",
214
+ "description": "Do-Then-Confirm Checklist: items to verify before moving to next stage",
214
215
  "items": { "type": "string" }
215
216
  }
216
217
  },
@@ -28,6 +28,19 @@
28
28
  "additionalProperties": {
29
29
  "$ref": "#/$defs/entityDefinition"
30
30
  }
31
+ },
32
+ "distribution": {
33
+ "type": "object",
34
+ "description": "Distribution configuration for publishing and installing the framework",
35
+ "properties": {
36
+ "siteUrl": {
37
+ "type": "string",
38
+ "format": "uri",
39
+ "description": "Base URL for the published static site (e.g. https://pathway.myorg.com)"
40
+ }
41
+ },
42
+ "required": ["siteUrl"],
43
+ "additionalProperties": false
31
44
  }
32
45
  },
33
46
  "additionalProperties": false,
@@ -2,32 +2,47 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://www.forwardimpact.team/schema/json/skill-questions.schema.json",
4
4
  "title": "Skill Interview Questions",
5
- "description": "Interview questions for a skill, organized by level",
5
+ "description": "Interview questions for a skill, organized by role type (professional/management) and level",
6
6
  "type": "object",
7
7
  "properties": {
8
- "awareness": {
9
- "type": "array",
10
- "items": { "$ref": "#/$defs/question" }
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/levelQuestions"
11
11
  },
12
- "foundational": {
13
- "type": "array",
14
- "items": { "$ref": "#/$defs/question" }
15
- },
16
- "working": {
17
- "type": "array",
18
- "items": { "$ref": "#/$defs/question" }
19
- },
20
- "practitioner": {
21
- "type": "array",
22
- "items": { "$ref": "#/$defs/question" }
23
- },
24
- "expert": {
25
- "type": "array",
26
- "items": { "$ref": "#/$defs/question" }
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/levelQuestions"
27
15
  }
28
16
  },
29
17
  "additionalProperties": false,
30
18
  "$defs": {
19
+ "levelQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by skill level",
22
+ "properties": {
23
+ "awareness": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "foundational": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "working": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "practitioner": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "expert": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
31
46
  "question": {
32
47
  "type": "object",
33
48
  "required": ["id", "text", "lookingFor"],