@forwardimpact/map 0.11.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 (83) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +67 -0
  3. package/bin/fit-map.js +287 -0
  4. package/examples/behaviours/_index.yaml +8 -0
  5. package/examples/behaviours/outcome_ownership.yaml +43 -0
  6. package/examples/behaviours/polymathic_knowledge.yaml +41 -0
  7. package/examples/behaviours/precise_communication.yaml +39 -0
  8. package/examples/behaviours/relentless_curiosity.yaml +37 -0
  9. package/examples/behaviours/systems_thinking.yaml +40 -0
  10. package/examples/capabilities/_index.yaml +8 -0
  11. package/examples/capabilities/business.yaml +205 -0
  12. package/examples/capabilities/delivery.yaml +1001 -0
  13. package/examples/capabilities/people.yaml +68 -0
  14. package/examples/capabilities/reliability.yaml +349 -0
  15. package/examples/capabilities/scale.yaml +1672 -0
  16. package/examples/copilot-setup-steps.yaml +25 -0
  17. package/examples/devcontainer.yaml +21 -0
  18. package/examples/disciplines/_index.yaml +6 -0
  19. package/examples/disciplines/data_engineering.yaml +68 -0
  20. package/examples/disciplines/engineering_management.yaml +61 -0
  21. package/examples/disciplines/software_engineering.yaml +68 -0
  22. package/examples/drivers.yaml +202 -0
  23. package/examples/framework.yaml +73 -0
  24. package/examples/levels.yaml +115 -0
  25. package/examples/questions/behaviours/outcome_ownership.yaml +228 -0
  26. package/examples/questions/behaviours/polymathic_knowledge.yaml +275 -0
  27. package/examples/questions/behaviours/precise_communication.yaml +248 -0
  28. package/examples/questions/behaviours/relentless_curiosity.yaml +248 -0
  29. package/examples/questions/behaviours/systems_thinking.yaml +238 -0
  30. package/examples/questions/capabilities/business.yaml +107 -0
  31. package/examples/questions/capabilities/delivery.yaml +101 -0
  32. package/examples/questions/capabilities/people.yaml +106 -0
  33. package/examples/questions/capabilities/reliability.yaml +105 -0
  34. package/examples/questions/capabilities/scale.yaml +104 -0
  35. package/examples/questions/skills/architecture_design.yaml +115 -0
  36. package/examples/questions/skills/cloud_platforms.yaml +105 -0
  37. package/examples/questions/skills/code_quality.yaml +162 -0
  38. package/examples/questions/skills/data_modeling.yaml +107 -0
  39. package/examples/questions/skills/devops.yaml +111 -0
  40. package/examples/questions/skills/full_stack_development.yaml +118 -0
  41. package/examples/questions/skills/sre_practices.yaml +113 -0
  42. package/examples/questions/skills/stakeholder_management.yaml +116 -0
  43. package/examples/questions/skills/team_collaboration.yaml +106 -0
  44. package/examples/questions/skills/technical_writing.yaml +110 -0
  45. package/examples/self-assessments.yaml +64 -0
  46. package/examples/stages.yaml +191 -0
  47. package/examples/tracks/_index.yaml +5 -0
  48. package/examples/tracks/platform.yaml +47 -0
  49. package/examples/tracks/sre.yaml +46 -0
  50. package/examples/vscode-settings.yaml +21 -0
  51. package/package.json +49 -0
  52. package/schema/json/behaviour-questions.schema.json +95 -0
  53. package/schema/json/behaviour.schema.json +73 -0
  54. package/schema/json/capability-questions.schema.json +95 -0
  55. package/schema/json/capability.schema.json +229 -0
  56. package/schema/json/defs.schema.json +132 -0
  57. package/schema/json/discipline.schema.json +123 -0
  58. package/schema/json/drivers.schema.json +48 -0
  59. package/schema/json/framework.schema.json +68 -0
  60. package/schema/json/levels.schema.json +121 -0
  61. package/schema/json/self-assessments.schema.json +52 -0
  62. package/schema/json/skill-questions.schema.json +83 -0
  63. package/schema/json/stages.schema.json +88 -0
  64. package/schema/json/track.schema.json +95 -0
  65. package/schema/rdf/behaviour-questions.ttl +128 -0
  66. package/schema/rdf/behaviour.ttl +130 -0
  67. package/schema/rdf/capability.ttl +466 -0
  68. package/schema/rdf/defs.ttl +396 -0
  69. package/schema/rdf/discipline.ttl +313 -0
  70. package/schema/rdf/drivers.ttl +84 -0
  71. package/schema/rdf/framework.ttl +166 -0
  72. package/schema/rdf/levels.ttl +357 -0
  73. package/schema/rdf/self-assessments.ttl +147 -0
  74. package/schema/rdf/skill-questions.ttl +155 -0
  75. package/schema/rdf/stages.ttl +166 -0
  76. package/schema/rdf/track.ttl +225 -0
  77. package/src/index-generator.js +65 -0
  78. package/src/index.js +44 -0
  79. package/src/levels.js +553 -0
  80. package/src/loader.js +608 -0
  81. package/src/modifiers.js +23 -0
  82. package/src/schema-validation.js +438 -0
  83. package/src/validation.js +2136 -0
@@ -0,0 +1,64 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/self-assessments.schema.json
2
+
3
+ - id: example_mid_swe
4
+ skillLevels:
5
+ architecture_design: working
6
+ code_quality: working
7
+ devops: foundational
8
+ ai_augmented_development: foundational
9
+ technical_debt_management: foundational
10
+ lean_thinking: awareness
11
+ data_modeling: awareness
12
+ stakeholder_management: awareness
13
+ technical_writing: foundational
14
+ ai_literacy: foundational
15
+ service_management: awareness
16
+ behaviourMaturities:
17
+ precise_communication: developing
18
+ relentless_curiosity: developing
19
+ outcome_ownership: developing
20
+ polymathic_knowledge: emerging
21
+ systems_thinking: developing
22
+
23
+ # Example: Senior Data Engineer
24
+ - id: example_senior_de
25
+ skillLevels:
26
+ data_modeling: practitioner
27
+ data_integration: practitioner
28
+ architecture_design: working
29
+ code_quality: working
30
+ devops: working
31
+ cloud_platforms: working
32
+ ai_literacy: working
33
+ stakeholder_management: foundational
34
+ technical_writing: foundational
35
+ ai_augmented_development: foundational
36
+ lean_thinking: foundational
37
+ behaviourMaturities:
38
+ precise_communication: practicing
39
+ relentless_curiosity: practicing
40
+ outcome_ownership: practicing
41
+ polymathic_knowledge: developing
42
+ systems_thinking: practicing
43
+
44
+ # Example: Data Scientist - R&D Focus
45
+ - id: example_ds_rd
46
+ skillLevels:
47
+ model_development: working
48
+ data_analysis: working
49
+ statistical_modeling: working
50
+ data_modeling: foundational
51
+ ai_evaluation: working
52
+ technical_writing: foundational
53
+ business_immersion: foundational
54
+ code_quality: foundational
55
+ stakeholder_management: awareness
56
+ ai_literacy: working
57
+ multi_audience_communication: foundational
58
+ service_management: awareness
59
+ behaviourMaturities:
60
+ precise_communication: developing
61
+ relentless_curiosity: practicing
62
+ outcome_ownership: developing
63
+ polymathic_knowledge: developing
64
+ systems_thinking: developing
@@ -0,0 +1,191 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/stages.schema.json
2
+
3
+ - id: specify
4
+ name: Specify
5
+ emojiIcon: "🎯"
6
+ summary: Defines requirements, user stories, and acceptance criteria
7
+ description:
8
+ Your primary task is to define WHAT users need and WHY, not how to build it.
9
+ Gather requirements, write user stories, and define acceptance criteria.
10
+ handoffs:
11
+ - targetStage: specify
12
+ label: Refine Spec
13
+ prompt: Refine spec.md with more detail or clarity.
14
+ - targetStage: specify
15
+ label: Alternative Spec
16
+ prompt: Create an alternative spec.md exploring a different approach.
17
+ - targetStage: plan
18
+ label: Create Plan
19
+ prompt: Create plan.md based on spec.md.
20
+ constraints:
21
+ - Do not write implementation code or execute system commands
22
+ - Focus on WHAT users need and WHY, not HOW to implement
23
+ - Write specifications as markdown files under specs/[feature-name]/spec.md
24
+ - Before writing the spec, conduct an interactive Q&A session with the user
25
+ - Ask each critical question one at a time and WAIT for answers
26
+ - You MUST ask questions interactively — do NOT embed unanswered questions
27
+ - Only after the user has answered your critical questions should you write
28
+ the spec document
29
+ - No technology choices, APIs, or code structure in specifications
30
+ readChecklist: []
31
+ confirmChecklist:
32
+ - spec.md exists with user stories and acceptance criteria
33
+ - No unresolved or open questions in spec.md
34
+
35
+ - id: plan
36
+ name: Plan
37
+ emojiIcon: "📐"
38
+ summary: Designs architecture, makes technology choices, and defines contracts
39
+ description:
40
+ Your primary task is to define HOW to build the solution. Make technology
41
+ choices, design architecture, define contracts and data models.
42
+ handoffs:
43
+ - targetStage: plan
44
+ label: Refine Plan
45
+ prompt: Refine plan.md with more detail or clarity.
46
+ - targetStage: plan
47
+ label: Alternative Plan
48
+ prompt: Create an alternative plan.md exploring a different approach.
49
+ - targetStage: onboard
50
+ label: Set Up Environment
51
+ prompt: Prepare the development environment based on plan.md requirements.
52
+ constraints:
53
+ - Do not write implementation code or execute system commands
54
+ - Every technology choice must trace back to a specific requirement
55
+ - Write plans as markdown files under specs/[feature-name]/plan.md
56
+ - Define contracts and data models before implementation details
57
+ - Document rationale for architectural decisions
58
+ readChecklist: []
59
+ confirmChecklist:
60
+ - spec.md exists with user stories and acceptance criteria
61
+ - No unresolved or open questions in spec.md
62
+ - plan.md exists with technology choices and architecture
63
+ - Contracts and data models defined where applicable
64
+ - No unresolved or open questions in plan.md
65
+
66
+ - id: onboard
67
+ name: Onboard
68
+ emojiIcon: "🔧"
69
+ summary:
70
+ Prepares the development environment with dependencies, tools, and
71
+ credentials
72
+ description:
73
+ Your primary task is to prepare the development environment with all
74
+ prerequisites for coding. Install dependencies, configure tools, set up
75
+ credentials, and verify the environment is ready for implementation.
76
+ handoffs:
77
+ - targetStage: onboard
78
+ label: Retry Setup
79
+ prompt: Re-run the environment setup to fix remaining issues.
80
+ - targetStage: plan
81
+ label: Update Plan
82
+ prompt: Update plan.md because the environment setup revealed issues.
83
+ - targetStage: code
84
+ label: Start Coding
85
+ prompt: Implement the tasks defined in plan.md.
86
+ constraints:
87
+ - Do not implement feature code; focus only on environment setup
88
+ - Verify each tool and dependency works before moving on
89
+ - Document all environment configuration in a reproducible way
90
+ - Never hardcode secrets; use .env files or secret managers
91
+ - Track progress with the todo tool
92
+ readChecklist: []
93
+ confirmChecklist:
94
+ - plan.md exists with technology choices and architecture
95
+ - No unresolved or open questions in plan.md
96
+ - Install scripts (scripts/install.sh) executed for all skills that provide
97
+ them
98
+ - All dependencies installed and versions verified
99
+ - Environment variables and secrets configured (.env files, tokens)
100
+ - Linter and formatter configured and passing on existing code
101
+ - Build and test commands run successfully
102
+ - Version control hooks and CI checks are operational
103
+ - Development server or runtime starts without errors
104
+
105
+ - id: code
106
+ name: Code
107
+ emojiIcon: "💻"
108
+ summary: Implements solutions, writes tests, and iterates to completion
109
+ description:
110
+ Your primary task is to implement the solution. Write code, write tests, and
111
+ iterate until the implementation is complete.
112
+ handoffs:
113
+ - targetStage: review
114
+ label: Request Review
115
+ prompt: Review the implemented changes.
116
+ constraints:
117
+ - Implement one task at a time, verify before moving on
118
+ - Write tests alongside implementation
119
+ - Track progress with the todo tool
120
+ readChecklist: []
121
+ confirmChecklist:
122
+ - spec.md exists with user stories and acceptance criteria
123
+ - plan.md exists with technology choices and architecture
124
+ - No unresolved [NEEDS CLARIFICATION] markers in plan.md
125
+ - All dependencies installed and versions verified
126
+ - Linter and formatter configured and passing
127
+ - Build and test commands run successfully
128
+ - Implementation complete according to plan.md
129
+ - Tests written and passing
130
+ - Self-review completed
131
+
132
+ - id: review
133
+ name: Review
134
+ emojiIcon: "🔍"
135
+ summary:
136
+ Verifies implementation, tests acceptance criteria, and documents findings
137
+ description:
138
+ Your primary task is to verify the implementation works correctly. Run the
139
+ application, test against acceptance criteria, document findings.
140
+ handoffs:
141
+ - targetStage: code
142
+ label: Request Changes
143
+ prompt: Address the findings in review.md.
144
+ - targetStage: plan
145
+ label: Needs Re-planning
146
+ prompt: Update plan.md to address issues found in review.md.
147
+ - targetStage: deploy
148
+ label: Deploy
149
+ prompt: Deploy the approved changes.
150
+ constraints:
151
+ - Do not make code edits
152
+ - Write review findings as markdown under specs/[feature-name]/review.md
153
+ - Prioritize actionable feedback over exhaustive lists
154
+ - Track findings and required changes with the todo tool
155
+ - Run the application locally and verify changes work as expected
156
+ - Test user-facing functionality against acceptance criteria
157
+ readChecklist: []
158
+ confirmChecklist:
159
+ - Implementation complete according to plan.md
160
+ - Tests written and passing
161
+ - Self-review completed
162
+ - Application runs locally without errors
163
+ - Changes verified against acceptance criteria through manual testing
164
+ - No blocking issues identified in review
165
+ - Review approved
166
+
167
+ - id: deploy
168
+ name: Deploy
169
+ emojiIcon: "🚀"
170
+ summary: Ships changes to production and monitors deployment workflows
171
+ description:
172
+ Your primary task is to ship the changes to production. Push code, monitor
173
+ CI/CD workflows, and verify successful deployment.
174
+ handoffs:
175
+ - targetStage: code
176
+ label: Fix Pipeline
177
+ prompt: Fix the failing workflow issues identified during deployment.
178
+ constraints:
179
+ - Use git push to deploy changes
180
+ - Use gh CLI to monitor triggered workflows (gh run list, gh run watch)
181
+ - Do not make code edits; hand off to code stage if fixes are needed
182
+ - Verify all workflows complete successfully before considering deployment
183
+ done
184
+ readChecklist: []
185
+ confirmChecklist:
186
+ - Application runs locally without errors
187
+ - Changes verified against acceptance criteria through manual testing
188
+ - No blocking issues identified in review
189
+ - Review approved
190
+ - All triggered workflows are green
191
+ - Deployment verified in target environment
@@ -0,0 +1,5 @@
1
+ # Auto-generated index for browser loading
2
+ # Do not edit manually - regenerate with: npx pathway --generate-index
3
+ files:
4
+ - platform
5
+ - sre
@@ -0,0 +1,47 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/track.schema.json
2
+
3
+ name: Platform
4
+
5
+ # Shared content (used by both human job descriptions and agent profiles)
6
+ description:
7
+ Internal tooling and infrastructure focus, building shared capabilities that
8
+ enable other engineering teams. Treats the platform as a product with
9
+ developers as customers.
10
+ roleContext:
11
+ In this platform-focused role, you will build internal tooling and shared
12
+ infrastructure that enables other engineering teams to be more productive. You
13
+ will treat the platform as a product—conducting user research, building golden
14
+ paths, and optimizing for developer experience.
15
+
16
+ # Derivation inputs - used by both human and agent profiles
17
+ skillModifiers:
18
+ delivery: 1
19
+ business: 1
20
+ reliability: -1
21
+ behaviourModifiers:
22
+ systems_thinking: 1
23
+ precise_communication: 1
24
+ assessmentWeights:
25
+ skillWeight: 0.6
26
+ behaviourWeight: 0.4
27
+
28
+ # Agent-specific content
29
+ agent:
30
+ identity: |
31
+ You are a Platform {roleTitle} agent. Your primary focus is
32
+ building self-service capabilities that enable other engineers.
33
+ You treat checklists the way surgeons and pilots do—not as a
34
+ crutch, but as a discipline that catches the errors expertise
35
+ alone cannot prevent.
36
+ priority: |
37
+ Developer experience is paramount. You design golden paths, maintain
38
+ backward compatibility, and document everything. Code quality and
39
+ architecture matter because your consumers depend on your stability.
40
+
41
+ Every API change must consider developer experience. Treat breaking
42
+ changes with extreme caution—your consumers build on your stability.
43
+ constraints:
44
+ - Maintain backward compatibility
45
+ - Document breaking changes with migration guides
46
+ - Test all changes against real consumer use cases
47
+ - Design for Day 50, not just Day 1
@@ -0,0 +1,46 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/track.schema.json
2
+
3
+ name: SRE
4
+
5
+ # Shared content (used by both human job descriptions and agent profiles)
6
+ description:
7
+ Site Reliability Engineering focus on system reliability, observability, and
8
+ incident response
9
+ roleContext:
10
+ In this Site Reliability Engineering role, you will focus on system
11
+ reliability, observability, and incident response. You will ensure our
12
+ services meet their reliability targets while driving continuous improvement
13
+ in system resilience and operational excellence.
14
+
15
+ # Derivation inputs - used by both human and agent profiles
16
+ skillModifiers:
17
+ scale: 1
18
+ reliability: 1
19
+ delivery: -1
20
+ behaviourModifiers:
21
+ outcome_ownership: 1
22
+ relentless_curiosity: 1
23
+ assessmentWeights:
24
+ skillWeight: 0.6
25
+ behaviourWeight: 0.4
26
+
27
+ # Agent-specific content
28
+ agent:
29
+ identity: |
30
+ You are an SRE {roleTitle} agent. Your primary focus is
31
+ system reliability, observability, and incident response. You
32
+ treat checklists the way surgeons and pilots do—not as a crutch,
33
+ but as a discipline that catches the errors expertise alone
34
+ cannot prevent.
35
+ priority: |
36
+ Reliability is non-negotiable. You instrument everything, design for
37
+ graceful degradation, and maintain error budgets. Every change
38
+ considers blast radius and recovery paths.
39
+
40
+ Production stability trumps feature velocity. No change ships without
41
+ understanding its impact on system reliability.
42
+ constraints:
43
+ - Never compromise on observability instrumentation
44
+ - Document all runbooks and incident response procedures
45
+ - Verify failover mechanisms regularly
46
+ - Consider blast radius for all changes
@@ -0,0 +1,21 @@
1
+ # Enable coding agent
2
+ chat.agent.enabled: true
3
+
4
+ # Maximum requests per agent session (high limit for complex tasks)
5
+ chat.agent.maxRequests: 999
6
+
7
+ # Enable edits v2 for improved code editing
8
+ chat.edits2.enabled: true
9
+
10
+ # Enable extension unification for consistent behavior
11
+ chat.extensionUnification.enabled: true
12
+
13
+ # Enable custom agents to be used as subagents
14
+ # Required for multi-agent workflows with handoffs
15
+ chat.customAgentInSubagent.enabled: true
16
+
17
+ # Enable agent skills for enhanced agent capabilities
18
+ chat.useAgentSkills: true
19
+
20
+ # Enable skill adherence prompt to improve agent compliance with defined skills
21
+ chat.experimental.useSkillAdherencePrompt: true
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@forwardimpact/map",
3
+ "version": "0.11.0",
4
+ "description": "Public data model for career frameworks, consumed by AI agents and engineers",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/forwardimpact/monorepo",
9
+ "directory": "products/map"
10
+ },
11
+ "homepage": "https://www.forwardimpact.team/map",
12
+ "type": "module",
13
+ "main": "src/index.js",
14
+ "bin": {
15
+ "fit-map": "./bin/fit-map.js"
16
+ },
17
+ "scripts": {
18
+ "generate-index": "node ./bin/fit-map.js generate-index",
19
+ "validate": "node ./bin/fit-map.js validate"
20
+ },
21
+ "files": [
22
+ "bin/",
23
+ "examples/",
24
+ "src/",
25
+ "schema/"
26
+ ],
27
+ "exports": {
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
+ "./examples/*": "./examples/*",
35
+ "./schema/json/*": "./schema/json/*",
36
+ "./schema/rdf/*": "./schema/rdf/*"
37
+ },
38
+ "dependencies": {
39
+ "ajv": "^8.17.1",
40
+ "ajv-formats": "^3.0.1",
41
+ "yaml": "^2.3.4"
42
+ },
43
+ "devDependencies": {
44
+ "n3": "^2.0.1"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ }
49
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.forwardimpact.team/schema/json/behaviour-questions.schema.json",
4
+ "title": "Behaviour Interview Questions",
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
+ "type": "object",
7
+ "properties": {
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/maturityQuestions"
11
+ },
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/maturityQuestions"
15
+ }
16
+ },
17
+ "additionalProperties": false,
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
+ },
46
+ "question": {
47
+ "type": "object",
48
+ "required": ["id", "text", "lookingFor", "simulationPrompts"],
49
+ "properties": {
50
+ "id": {
51
+ "type": "string",
52
+ "pattern": "^[a-z][a-z0-9_]*$",
53
+ "description": "Unique question identifier (format: {abbrev}_{maturity_abbrev}_{number})"
54
+ },
55
+ "text": {
56
+ "type": "string",
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" }
70
+ },
71
+ "lookingFor": {
72
+ "type": "array",
73
+ "description": "2-4 indicators of strong behavioural response",
74
+ "minItems": 2,
75
+ "maxItems": 4,
76
+ "items": { "type": "string" }
77
+ },
78
+ "expectedDurationMinutes": {
79
+ "type": "integer",
80
+ "minimum": 10,
81
+ "default": 20,
82
+ "description": "Expected duration in minutes (default: 20 for stakeholder simulation)"
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
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.forwardimpact.team/schema/json/behaviour.schema.json",
4
+ "title": "Behaviour",
5
+ "description": "Mindset and way of working that underpins effective application of skills",
6
+ "type": "object",
7
+ "required": ["name", "human"],
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "description": "Human-readable behaviour name"
12
+ },
13
+ "human": {
14
+ "$ref": "#/$defs/behaviourHumanSection",
15
+ "description": "Human-specific content"
16
+ },
17
+ "agent": {
18
+ "$ref": "#/$defs/behaviourAgentSection",
19
+ "description": "Agent-specific content"
20
+ }
21
+ },
22
+ "additionalProperties": false,
23
+ "$defs": {
24
+ "behaviourHumanSection": {
25
+ "type": "object",
26
+ "required": ["description", "maturityDescriptions"],
27
+ "properties": {
28
+ "description": {
29
+ "type": "string",
30
+ "description": "Description of the behaviour"
31
+ },
32
+ "maturityDescriptions": {
33
+ "$ref": "#/$defs/maturityDescriptions",
34
+ "description": "Description of expectations at each maturity level"
35
+ }
36
+ },
37
+ "additionalProperties": false
38
+ },
39
+ "maturityDescriptions": {
40
+ "type": "object",
41
+ "properties": {
42
+ "emerging": { "type": "string" },
43
+ "developing": { "type": "string" },
44
+ "practicing": { "type": "string" },
45
+ "role_modeling": { "type": "string" },
46
+ "exemplifying": { "type": "string" }
47
+ },
48
+ "required": [
49
+ "emerging",
50
+ "developing",
51
+ "practicing",
52
+ "role_modeling",
53
+ "exemplifying"
54
+ ],
55
+ "additionalProperties": false
56
+ },
57
+ "behaviourAgentSection": {
58
+ "type": "object",
59
+ "required": ["title", "workingStyle"],
60
+ "properties": {
61
+ "title": {
62
+ "type": "string",
63
+ "description": "Short title for the behaviour's agent application"
64
+ },
65
+ "workingStyle": {
66
+ "type": "string",
67
+ "description": "How the agent should apply this behaviour"
68
+ }
69
+ },
70
+ "additionalProperties": false
71
+ }
72
+ }
73
+ }