@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.
- package/bin/fit-schema.js +2 -2
- package/examples/capabilities/business.yaml +27 -11
- package/examples/capabilities/delivery.yaml +65 -27
- package/examples/capabilities/people.yaml +1 -1
- package/examples/capabilities/reliability.yaml +85 -31
- package/examples/capabilities/scale.yaml +83 -31
- package/examples/framework.yaml +5 -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/examples/stages.yaml +52 -13
- 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 +8 -7
- package/schema/json/framework.schema.json +13 -0
- package/schema/json/skill-questions.schema.json +34 -19
- package/schema/json/stages.schema.json +6 -6
- package/schema/rdf/behaviour-questions.ttl +39 -7
- package/schema/rdf/capability.ttl +15 -15
- package/schema/rdf/defs.ttl +3 -3
- package/schema/rdf/framework.ttl +38 -0
- package/schema/rdf/skill-questions.ttl +28 -1
- package/schema/rdf/stages.ttl +14 -14
- package/{lib → src}/levels.js +53 -101
- package/{lib → src}/loader.js +9 -5
- package/{lib → src}/modifiers.js +3 -3
- package/{lib → src}/validation.js +105 -79
- /package/{lib → src}/index-generator.js +0 -0
- /package/{lib → src}/index.js +0 -0
- /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
|
-
|
|
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
|
-
|
|
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
|
package/examples/stages.yaml
CHANGED
|
@@ -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
|
-
|
|
27
|
-
|
|
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:
|
|
46
|
-
label:
|
|
47
|
-
prompt:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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": "
|
|
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
|
-
"
|
|
24
|
+
"src/",
|
|
25
25
|
"schema/"
|
|
26
26
|
],
|
|
27
27
|
"exports": {
|
|
28
|
-
".": "./
|
|
29
|
-
"./loader": "./
|
|
30
|
-
"./validation": "./
|
|
31
|
-
"./schema-validation": "./
|
|
32
|
-
"./index-generator": "./
|
|
33
|
-
"./levels": "./
|
|
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": "
|
|
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
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
8
|
+
"professionalQuestions": {
|
|
9
|
+
"description": "Questions for professional/IC roles (e.g., engineers)",
|
|
10
|
+
"$ref": "#/$defs/maturityQuestions"
|
|
11
11
|
},
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
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":
|
|
43
|
-
"description": "The
|
|
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
|
|
48
|
-
"minItems":
|
|
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":
|
|
55
|
-
"
|
|
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
|
-
"
|
|
22
|
+
"ordinalRank": {
|
|
23
23
|
"type": "integer",
|
|
24
24
|
"minimum": 1,
|
|
25
|
-
"description": "
|
|
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", "
|
|
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
|
-
"
|
|
207
|
+
"readChecklist": {
|
|
207
208
|
"type": "array",
|
|
208
|
-
"description": "
|
|
209
|
+
"description": "Read-Then-Do Checklist: steps to follow in order during this stage",
|
|
209
210
|
"items": { "type": "string" }
|
|
210
211
|
},
|
|
211
|
-
"
|
|
212
|
+
"confirmChecklist": {
|
|
212
213
|
"type": "array",
|
|
213
|
-
"description": "
|
|
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
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
8
|
+
"professionalQuestions": {
|
|
9
|
+
"description": "Questions for professional/IC roles (e.g., engineers)",
|
|
10
|
+
"$ref": "#/$defs/levelQuestions"
|
|
11
11
|
},
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
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"],
|