@forwardimpact/schema 0.1.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 (65) hide show
  1. package/bin/fit-schema.js +260 -0
  2. package/examples/behaviours/_index.yaml +8 -0
  3. package/examples/behaviours/outcome_ownership.yaml +43 -0
  4. package/examples/behaviours/polymathic_knowledge.yaml +41 -0
  5. package/examples/behaviours/precise_communication.yaml +39 -0
  6. package/examples/behaviours/relentless_curiosity.yaml +37 -0
  7. package/examples/behaviours/systems_thinking.yaml +40 -0
  8. package/examples/capabilities/_index.yaml +8 -0
  9. package/examples/capabilities/business.yaml +189 -0
  10. package/examples/capabilities/delivery.yaml +305 -0
  11. package/examples/capabilities/people.yaml +68 -0
  12. package/examples/capabilities/reliability.yaml +414 -0
  13. package/examples/capabilities/scale.yaml +378 -0
  14. package/examples/copilot-setup-steps.yaml +25 -0
  15. package/examples/devcontainer.yaml +21 -0
  16. package/examples/disciplines/_index.yaml +6 -0
  17. package/examples/disciplines/data_engineering.yaml +78 -0
  18. package/examples/disciplines/engineering_management.yaml +63 -0
  19. package/examples/disciplines/software_engineering.yaml +78 -0
  20. package/examples/drivers.yaml +202 -0
  21. package/examples/framework.yaml +69 -0
  22. package/examples/grades.yaml +115 -0
  23. package/examples/questions/behaviours/outcome_ownership.yaml +51 -0
  24. package/examples/questions/behaviours/polymathic_knowledge.yaml +47 -0
  25. package/examples/questions/behaviours/precise_communication.yaml +54 -0
  26. package/examples/questions/behaviours/relentless_curiosity.yaml +50 -0
  27. package/examples/questions/behaviours/systems_thinking.yaml +52 -0
  28. package/examples/questions/skills/architecture_design.yaml +53 -0
  29. package/examples/questions/skills/cloud_platforms.yaml +47 -0
  30. package/examples/questions/skills/code_quality.yaml +48 -0
  31. package/examples/questions/skills/data_modeling.yaml +45 -0
  32. package/examples/questions/skills/devops.yaml +46 -0
  33. package/examples/questions/skills/full_stack_development.yaml +47 -0
  34. package/examples/questions/skills/sre_practices.yaml +43 -0
  35. package/examples/questions/skills/stakeholder_management.yaml +48 -0
  36. package/examples/questions/skills/team_collaboration.yaml +42 -0
  37. package/examples/questions/skills/technical_writing.yaml +42 -0
  38. package/examples/self-assessments.yaml +64 -0
  39. package/examples/stages.yaml +139 -0
  40. package/examples/tracks/_index.yaml +5 -0
  41. package/examples/tracks/platform.yaml +49 -0
  42. package/examples/tracks/sre.yaml +48 -0
  43. package/examples/vscode-settings.yaml +21 -0
  44. package/lib/index-generator.js +65 -0
  45. package/lib/index.js +44 -0
  46. package/lib/levels.js +601 -0
  47. package/lib/loader.js +599 -0
  48. package/lib/modifiers.js +23 -0
  49. package/lib/schema-validation.js +438 -0
  50. package/lib/validation.js +2130 -0
  51. package/package.json +49 -0
  52. package/schema/json/behaviour-questions.schema.json +68 -0
  53. package/schema/json/behaviour.schema.json +73 -0
  54. package/schema/json/capability.schema.json +220 -0
  55. package/schema/json/defs.schema.json +132 -0
  56. package/schema/json/discipline.schema.json +132 -0
  57. package/schema/json/drivers.schema.json +48 -0
  58. package/schema/json/framework.schema.json +55 -0
  59. package/schema/json/grades.schema.json +121 -0
  60. package/schema/json/index.schema.json +18 -0
  61. package/schema/json/self-assessments.schema.json +52 -0
  62. package/schema/json/skill-questions.schema.json +68 -0
  63. package/schema/json/stages.schema.json +84 -0
  64. package/schema/json/track.schema.json +100 -0
  65. package/schema/rdf/pathway.ttl +2362 -0
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * fit-schema CLI
5
+ *
6
+ * Schema validation and index generation for Engineering Pathway data.
7
+ *
8
+ * Commands:
9
+ * validate [--data=PATH] Run full schema + referential validation
10
+ * generate-index [--data=PATH] Generate _index.yaml files
11
+ * validate:shacl Validate SHACL schema syntax
12
+ * --help Show help
13
+ */
14
+
15
+ import { stat } from "fs/promises";
16
+ import { join, resolve, dirname } from "path";
17
+ import { fileURLToPath } from "url";
18
+
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const __dirname = dirname(__filename);
21
+
22
+ /**
23
+ * Parse CLI arguments
24
+ */
25
+ function parseArgs(args) {
26
+ const command = args[0];
27
+ const options = {};
28
+
29
+ for (let i = 1; i < args.length; i++) {
30
+ const arg = args[i];
31
+ if (arg.startsWith("--data=")) {
32
+ options.dataDir = arg.slice(7);
33
+ } else if (arg === "--help" || arg === "-h") {
34
+ options.help = true;
35
+ } else if (arg.startsWith("--")) {
36
+ const [key, value] = arg.slice(2).split("=");
37
+ options[key] = value ?? true;
38
+ }
39
+ }
40
+
41
+ return { command, options };
42
+ }
43
+
44
+ /**
45
+ * Check if a directory exists
46
+ */
47
+ async function dirExists(path) {
48
+ try {
49
+ const stats = await stat(path);
50
+ return stats.isDirectory();
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Find the data directory
58
+ */
59
+ async function findDataDir(providedPath) {
60
+ if (providedPath) {
61
+ const resolved = resolve(providedPath);
62
+ if (await dirExists(resolved)) {
63
+ return resolved;
64
+ }
65
+ throw new Error(`Data directory not found: ${providedPath}`);
66
+ }
67
+
68
+ // Check common locations
69
+ const candidates = [
70
+ join(process.cwd(), "data"),
71
+ join(process.cwd(), "examples"),
72
+ join(__dirname, "../examples"),
73
+ ];
74
+
75
+ for (const candidate of candidates) {
76
+ if (await dirExists(candidate)) {
77
+ return candidate;
78
+ }
79
+ }
80
+
81
+ throw new Error(
82
+ "No data directory found. Use --data=PATH to specify location.",
83
+ );
84
+ }
85
+
86
+ /**
87
+ * Format validation results for display
88
+ */
89
+ function formatValidationResults(result) {
90
+ const lines = [];
91
+
92
+ if (result.valid) {
93
+ lines.push("✅ Validation passed\n");
94
+ } else {
95
+ lines.push("❌ Validation failed\n");
96
+ lines.push("\nErrors:");
97
+ for (const error of result.errors) {
98
+ const path = error.path ? ` (${error.path})` : "";
99
+ lines.push(` • ${error.type}: ${error.message}${path}`);
100
+ }
101
+ }
102
+
103
+ if (result.warnings?.length > 0) {
104
+ lines.push("\nWarnings:");
105
+ for (const warning of result.warnings) {
106
+ const path = warning.path ? ` (${warning.path})` : "";
107
+ lines.push(` ⚠ ${warning.type}: ${warning.message}${path}`);
108
+ }
109
+ }
110
+
111
+ return lines.join("\n");
112
+ }
113
+
114
+ /**
115
+ * Validate command
116
+ */
117
+ async function runValidate(dataDir) {
118
+ console.log(`🔍 Validating data in: ${dataDir}\n`);
119
+
120
+ const { runSchemaValidation, loadAllData } = await import("../lib/index.js");
121
+
122
+ // Load data first
123
+ const data = await loadAllData(dataDir, { validate: false });
124
+
125
+ // Run full validation
126
+ const result = await runSchemaValidation(dataDir, data);
127
+
128
+ console.log(formatValidationResults(result));
129
+
130
+ // Print summary
131
+ console.log("\n📊 Data Summary:");
132
+ console.log(` Skills: ${data.skills?.length || 0}`);
133
+ console.log(` Behaviours: ${data.behaviours?.length || 0}`);
134
+ console.log(` Disciplines: ${data.disciplines?.length || 0}`);
135
+ console.log(` Tracks: ${data.tracks?.length || 0}`);
136
+ console.log(` Grades: ${data.grades?.length || 0}`);
137
+ console.log(` Drivers: ${data.drivers?.length || 0}`);
138
+
139
+ return result.valid ? 0 : 1;
140
+ }
141
+
142
+ /**
143
+ * Generate index command
144
+ */
145
+ async function runGenerateIndex(dataDir) {
146
+ console.log(`📁 Generating index files in: ${dataDir}\n`);
147
+
148
+ const { generateAllIndexes } = await import("../lib/index.js");
149
+
150
+ const results = await generateAllIndexes(dataDir);
151
+
152
+ for (const [dir, files] of Object.entries(results)) {
153
+ if (files.error) {
154
+ console.log(`❌ ${dir}/_index.yaml: ${files.error}`);
155
+ } else {
156
+ console.log(`✅ ${dir}/_index.yaml (${files.length} files)`);
157
+ }
158
+ }
159
+
160
+ return 0;
161
+ }
162
+
163
+ /**
164
+ * SHACL validation command
165
+ */
166
+ async function runValidateShacl() {
167
+ console.log("🔍 Validating SHACL schema syntax...\n");
168
+
169
+ const schemaPath = join(__dirname, "../schema/rdf/pathway.ttl");
170
+
171
+ try {
172
+ const { default: N3 } = await import("n3");
173
+ const { readFile } = await import("fs/promises");
174
+
175
+ const turtleContent = await readFile(schemaPath, "utf-8");
176
+ const parser = new N3.Parser({ format: "text/turtle" });
177
+
178
+ const quads = [];
179
+ parser.parse(turtleContent, (error, quad) => {
180
+ if (error) throw error;
181
+ if (quad) quads.push(quad);
182
+ });
183
+
184
+ console.log(`✅ SHACL syntax valid (${quads.length} triples)\n`);
185
+ return 0;
186
+ } catch (error) {
187
+ console.error(`❌ SHACL syntax error: ${error.message}\n`);
188
+ return 1;
189
+ }
190
+ }
191
+
192
+ /**
193
+ * Show help
194
+ */
195
+ function showHelp() {
196
+ console.log(`
197
+ fit-schema - Schema validation for Engineering Pathway
198
+
199
+ Usage:
200
+ fit-schema <command> [options]
201
+
202
+ Commands:
203
+ validate Run full schema + referential validation
204
+ generate-index Generate _index.yaml files for directories
205
+ validate:shacl Validate SHACL schema syntax
206
+
207
+ Options:
208
+ --data=PATH Path to data directory (default: ./data or ./examples)
209
+ --help, -h Show this help message
210
+
211
+ Examples:
212
+ fit-schema validate
213
+ fit-schema validate --data=./my-data
214
+ fit-schema generate-index
215
+ fit-schema validate:shacl
216
+ `);
217
+ }
218
+
219
+ /**
220
+ * Main entry point
221
+ */
222
+ async function main() {
223
+ const { command, options } = parseArgs(process.argv.slice(2));
224
+
225
+ if (options.help || !command) {
226
+ showHelp();
227
+ process.exit(command ? 0 : 1);
228
+ }
229
+
230
+ try {
231
+ let exitCode = 0;
232
+
233
+ switch (command) {
234
+ case "validate": {
235
+ const dataDir = await findDataDir(options.dataDir);
236
+ exitCode = await runValidate(dataDir);
237
+ break;
238
+ }
239
+ case "generate-index": {
240
+ const dataDir = await findDataDir(options.dataDir);
241
+ exitCode = await runGenerateIndex(dataDir);
242
+ break;
243
+ }
244
+ case "validate:shacl":
245
+ exitCode = await runValidateShacl();
246
+ break;
247
+ default:
248
+ console.error(`Unknown command: ${command}`);
249
+ showHelp();
250
+ exitCode = 1;
251
+ }
252
+
253
+ process.exit(exitCode);
254
+ } catch (error) {
255
+ console.error(`Error: ${error.message}`);
256
+ process.exit(1);
257
+ }
258
+ }
259
+
260
+ main();
@@ -0,0 +1,8 @@
1
+ # Auto-generated index for browser loading
2
+ # Do not edit manually - regenerate with: npx pathway --generate-index
3
+ files:
4
+ - outcome_ownership
5
+ - polymathic_knowledge
6
+ - precise_communication
7
+ - relentless_curiosity
8
+ - systems_thinking
@@ -0,0 +1,43 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/behaviour.schema.json
2
+
3
+ name: Own the Outcome
4
+ human:
5
+ description:
6
+ Business outcomes trump engineering elegance. Embrace extreme ownership of
7
+ what you build—not just code quality, but business relationships, impact
8
+ metrics, and end-to-end results. Accept technical debt when it enables
9
+ faster business value, but own the consequences. AI may generate the code,
10
+ but responsibility for outcomes remains with you.
11
+ maturityDescriptions:
12
+ emerging:
13
+ Takes responsibility for assigned tasks with supervision; follows through
14
+ when reminded; asks for help appropriately; understands that work serves
15
+ business goals
16
+ developing:
17
+ Owns task completion independently; reviews AI-generated code critically;
18
+ makes pragmatic trade-offs between speed and polish; takes responsibility
19
+ for understanding code before shipping; considers business impact of
20
+ technical decisions
21
+ practicing:
22
+ Takes end-to-end ownership of features and business outcomes; accepts
23
+ technical debt intentionally when it accelerates value; builds trust
24
+ through rapid delivery of working solutions; owns stakeholder
25
+ relationships; balances quality with delivery speed
26
+ role_modeling:
27
+ Drives accountability culture focused on outcomes not deliverables; owns
28
+ business relationships and impact metrics across their function; makes
29
+ trade-offs between custom solutions and generalizable work; there is no "I
30
+ must run this by X"; ensures verification rigor for AI-generated code
31
+ exemplifying:
32
+ Defines organizational accountability standards focused on business
33
+ impact; shapes industry practices around outcome ownership in the AI era;
34
+ sponsors transformational initiatives with full outcome accountability;
35
+ recognized externally for ownership culture leadership
36
+
37
+ agent:
38
+ title: Own the outcome end-to-end
39
+ workingStyle: |
40
+ At each step:
41
+ 1. Define success criteria before starting
42
+ 2. Verify the change achieves the criteria
43
+ 3. Don't hand off until you've validated the work
@@ -0,0 +1,41 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/behaviour.schema.json
2
+
3
+ name: Be Polymath Oriented
4
+ human:
5
+ description:
6
+ Depth of expertise combined with breadth across multiple domains. Go beyond
7
+ T-shaped, building knowledge that spans technology, business, science, and
8
+ the pharmaceutical domain. Like Jim Gray, who made better architectural
9
+ decisions by understanding business beyond his database expertise, see
10
+ connections others miss.
11
+ maturityDescriptions:
12
+ emerging:
13
+ Recognizes that problems benefit from cross-disciplinary insights; shows
14
+ interest in domains beyond immediate technical requirements
15
+ developing:
16
+ Applies knowledge from one domain to inform decisions in another; studies
17
+ adjacent fields like design, business, or science; begins learning domain
18
+ language of business partners
19
+ practicing:
20
+ Bridges gaps between engineering, design, business, and science; rapidly
21
+ immerses in new domains; speaks the language of Commercial, Manufacturing,
22
+ or R&D; makes better decisions by understanding broader context
23
+ role_modeling:
24
+ Champions cross-disciplinary learning; creates holistic solutions spanning
25
+ technical and business domains; embodies the Renaissance Engineer ideal;
26
+ translates specialized knowledge into accessible explanations; thinks like
27
+ a business insider
28
+ exemplifying:
29
+ Shapes organizational learning strategy across disciplines; recognized
30
+ industry thought leader bridging technology and business; advises
31
+ executive leadership on cross-functional strategy; publishes on polymathic
32
+ approaches to engineering; influences industry hiring and development
33
+ practices
34
+
35
+ agent:
36
+ title: Apply cross-domain insight
37
+ workingStyle: |
38
+ When solving problems:
39
+ 1. Draw on knowledge from multiple domains
40
+ 2. Consider perspectives beyond pure technical implementation
41
+ 3. Look for patterns that can be generalized
@@ -0,0 +1,39 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/behaviour.schema.json
2
+
3
+ name: Communicate with Precision
4
+ human:
5
+ description:
6
+ In the age of AI, clarity becomes a superpower. Communicate with
7
+ precision—reducing ambiguity in specifications, requirements, and designs.
8
+ Natural language is inherently vague; AI can only generate accurate
9
+ solutions when given clear, unambiguous intent.
10
+ maturityDescriptions:
11
+ emerging:
12
+ Communicates basic technical concepts when prompted; participates in team
13
+ discussions; writes simple documentation
14
+ developing:
15
+ Writes clear documentation and specifications; reduces ambiguity in
16
+ requirements; crafts effective prompts for AI tools; adapts communication
17
+ style for different audiences
18
+ practicing:
19
+ Separates requirements, designs, and tasks with precision; enables AI to
20
+ generate accurate code through clear specifications; translates between
21
+ technical and business language; facilitates productive discussions
22
+ role_modeling:
23
+ Creates spec-driven development practices; mentors others on precise
24
+ communication; spans C-level executives to frontline workers; drives
25
+ clarity as a core value across their function; represents the organization
26
+ externally
27
+ exemplifying:
28
+ Shapes industry standards for technical communication; recognized
29
+ authority on spec-driven AI development; influences organizational
30
+ communication culture; publishes on precision in the AI era; keynotes at
31
+ industry conferences
32
+
33
+ agent:
34
+ title: Communicate with clarity
35
+ workingStyle: |
36
+ When providing output:
37
+ 1. Separate blocking issues from suggestions
38
+ 2. Explain the "why" behind each recommendation
39
+ 3. Provide concrete examples or alternatives
@@ -0,0 +1,37 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/behaviour.schema.json
2
+
3
+ name: Don't Lose Your Curiosity
4
+ human:
5
+ description:
6
+ The driving force behind learning and invention. Protect your instinct to
7
+ break things down and understand them deeply. Embrace an experimental spirit
8
+ that treats failure as a path to discovery, not a setback to avoid.
9
+ maturityDescriptions:
10
+ emerging:
11
+ Asks basic questions when prompted; shows interest in learning about
12
+ immediate tasks; willing to try new approaches
13
+ developing:
14
+ Regularly asks clarifying questions about "why" and "how"; explores
15
+ related topics with guidance; experiments without fear of failure;
16
+ investigates how AI tools work rather than using them blindly
17
+ practicing:
18
+ Proactively investigates root causes; experiments with new technologies
19
+ and AI capabilities; protects time for exploration; treats failure as
20
+ learning; discovers requirements through immersion in problem spaces
21
+ role_modeling:
22
+ Drives team curiosity through challenging questions; creates environments
23
+ where exploration and experimentation are encouraged; models problem
24
+ discovery orientation; seeks out ambiguity rather than avoiding it
25
+ exemplifying:
26
+ Shapes organizational culture around curiosity and continuous learning;
27
+ sponsors experimental initiatives across the organization; recognized
28
+ externally as a thought leader in problem discovery; influences industry
29
+ practices around innovation and exploration
30
+
31
+ agent:
32
+ title: Investigate before acting
33
+ workingStyle: |
34
+ Before taking action:
35
+ 1. Confirm your understanding of the goal
36
+ 2. Identify unknowns that could affect the approach
37
+ 3. Research unfamiliar areas via subagent if needed
@@ -0,0 +1,40 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/behaviour.schema.json
2
+
3
+ name: Think in Systems
4
+ human:
5
+ description:
6
+ The ability to see beyond individual components to understand how the entire
7
+ system behaves. Like understanding how reintroducing wolves to Yellowstone
8
+ transformed not just deer but rivers, engineers recognize that every
9
+ service, API, and queue is part of a larger whole—isolated changes ripple
10
+ across the system.
11
+ maturityDescriptions:
12
+ emerging:
13
+ Recognizes that systems have interconnected parts; considers immediate
14
+ dependencies in code; understands basic cause-and-effect
15
+ developing:
16
+ Identifies upstream and downstream impacts; uses observability tools to
17
+ trace requests across services; understands feedback loops; maps
18
+ dependencies before making changes
19
+ practicing:
20
+ Maps complex system interactions across technical and business domains;
21
+ anticipates cascading effects; designs systems that degrade gracefully;
22
+ understands how technology changes impact business operations
23
+ role_modeling:
24
+ Shapes systems design practices across their function; conducts chaos
25
+ engineering experiments; influences cross-team architecture decisions;
26
+ creates clarity from complexity; bridges technical systems with business
27
+ processes
28
+ exemplifying:
29
+ Defines organizational systems architecture principles; recognized
30
+ industry authority on complex systems; advises executive leadership on
31
+ systemic risks and opportunities; publishes thought leadership on systems
32
+ thinking in technology organizations
33
+
34
+ agent:
35
+ title: Consider the whole system
36
+ workingStyle: |
37
+ For every change:
38
+ 1. Identify upstream and downstream impacts
39
+ 2. Consider non-functional requirements (performance, security)
40
+ 3. Document assumptions and trade-offs
@@ -0,0 +1,8 @@
1
+ # Auto-generated index for browser loading
2
+ # Do not edit manually - regenerate with: npx pathway --generate-index
3
+ files:
4
+ - business
5
+ - delivery
6
+ - people
7
+ - reliability
8
+ - scale
@@ -0,0 +1,189 @@
1
+ # yaml-language-server: $schema=https://schema.forwardimpact.team/json/capability.schema.json
2
+
3
+ name: Business
4
+ emojiIcon: 💼
5
+ displayOrder: 8
6
+ description: |
7
+ Understanding and driving business value.
8
+ Includes domain knowledge, stakeholder management, strategic thinking,
9
+ and translating between technical and business contexts.
10
+ professionalResponsibilities:
11
+ awareness:
12
+ Understand the business context for your assigned work and communicate
13
+ progress clearly when asked
14
+ foundational:
15
+ Connect your technical work to business outcomes, engage with stakeholders
16
+ to clarify requirements
17
+ working:
18
+ Translate business needs into technical solutions, manage stakeholder
19
+ expectations, and articulate technical decisions in business terms
20
+ practitioner:
21
+ Drive business outcomes through technical solutions across your area,
22
+ influence product roadmaps, and partner effectively with business
23
+ stakeholders
24
+ expert:
25
+ Shape technology-driven business strategy, represent technical perspective
26
+ at executive level, and be recognized as a bridge between engineering and
27
+ business
28
+ managementResponsibilities:
29
+ awareness:
30
+ Understand business context and communicate team progress to stakeholders
31
+ with guidance
32
+ foundational:
33
+ Align team priorities with business objectives, manage stakeholder
34
+ relationships, and communicate team impact
35
+ working:
36
+ Translate business strategy into team objectives, own stakeholder
37
+ relationships, and ensure team delivers business value
38
+ practitioner:
39
+ Partner with business leaders to shape strategy for your area, influence
40
+ direction across teams, and deliver measurable business impact
41
+ expert:
42
+ Shape technology-driven business strategy, represent engineering at
43
+ executive level, and own strategic business outcomes
44
+ skills:
45
+ - id: stakeholder_management
46
+ name: Stakeholder Management
47
+ isHumanOnly: true
48
+ human:
49
+ description:
50
+ Building relationships with and managing expectations of stakeholders
51
+ across the organization, from frontline workers to C-level executives
52
+ levelDescriptions:
53
+ awareness:
54
+ You identify key stakeholders for your work and communicate status
55
+ when asked. You understand that different stakeholders have different
56
+ needs.
57
+ foundational:
58
+ You proactively update stakeholders on progress, handle basic
59
+ expectation setting, and escalate concerns appropriately. You build
60
+ rapport with regular collaborators.
61
+ working:
62
+ You manage multiple stakeholders with different interests, navigate
63
+ conflicting priorities diplomatically, and build trust through
64
+ consistent delivery. You tailor communication to each audience.
65
+ practitioner:
66
+ You influence senior stakeholders effectively across your area, manage
67
+ complex stakeholder landscapes with competing agendas, build trust
68
+ rapidly with new stakeholders, and shield teams from organizational
69
+ friction.
70
+ expert:
71
+ You shape stakeholder practices across the business unit. You manage
72
+ executive relationships, represent engineering at the highest levels,
73
+ and are recognized for exceptional stakeholder partnerships.
74
+ - id: technical_writing
75
+ name: Technical Writing
76
+ human:
77
+ description:
78
+ Creating clear, accurate, and useful technical documentation. Good specs
79
+ enable AI to generate accurate solutions; poor specs lead to poor
80
+ results.
81
+ levelDescriptions:
82
+ awareness:
83
+ You document your own work following team templates and standards. You
84
+ keep code comments current and write basic README content.
85
+ foundational:
86
+ You write clear READMEs, inline documentation, and technical guides.
87
+ You update existing docs when making changes and ensure documentation
88
+ matches implementation.
89
+ working:
90
+ You create comprehensive documentation for complex systems. You write
91
+ precise specifications that enable accurate AI-generated code,
92
+ establish documentation practices for your projects, and ensure docs
93
+ are discoverable.
94
+ practitioner:
95
+ You define documentation standards across teams in your area, create
96
+ documentation systems and templates, train engineers on spec-driven
97
+ development, and ensure documentation quality across projects.
98
+ expert:
99
+ You shape documentation culture and standards across the business
100
+ unit. You innovate on documentation approaches, are recognized for
101
+ exceptional technical writing clarity, and lead documentation
102
+ initiatives.
103
+ agent:
104
+ name: technical-writing
105
+ description: Guide for creating clear technical documentation.
106
+ useWhen: |
107
+ Writing READMEs, API docs, specifications, or any technical content
108
+ that needs to be clear and accurate.
109
+ stages:
110
+ specify:
111
+ focus: |
112
+ Define documentation requirements and audience needs.
113
+ Clarify what the documentation must accomplish.
114
+ activities:
115
+ - Identify target audience and their skill level
116
+ - Document what questions the docs must answer
117
+ - Define documentation type (README, API, spec, tutorial)
118
+ - Specify accuracy and completeness requirements
119
+ - Mark ambiguities with [NEEDS CLARIFICATION]
120
+ ready:
121
+ - Audience is identified
122
+ - Questions to answer are documented
123
+ - Documentation type is chosen
124
+ - Requirements are clear
125
+ plan:
126
+ focus: Understanding audience and planning documentation
127
+ activities:
128
+ - Identify target audience and their needs
129
+ - Determine document type and structure
130
+ - List prerequisites and assumptions
131
+ - Outline key sections and content
132
+ ready:
133
+ - Audience is identified
134
+ - Document type and structure planned
135
+ - Prerequisites listed
136
+ - Outline complete
137
+ code:
138
+ focus: Writing clear and accurate documentation
139
+ activities:
140
+ - Write using simple, direct language
141
+ - Structure content for scanning
142
+ - Include tested, runnable examples
143
+ - Define technical terms
144
+ ready:
145
+ - Purpose clear in first paragraph
146
+ - Examples are tested and work
147
+ - Technical terms are defined
148
+ - Structure supports scanning
149
+ review:
150
+ focus: Verifying documentation quality
151
+ activities:
152
+ - Check accuracy against implementation
153
+ - Verify examples are runnable
154
+ - Review for clarity and completeness
155
+ - Test with target audience if possible
156
+ ready:
157
+ - Documentation matches implementation
158
+ - All examples verified working
159
+ - No ambiguous pronouns
160
+ - Structure is logical and complete
161
+ deploy:
162
+ focus: |
163
+ Publish documentation and ensure it reaches the audience.
164
+ Set up maintenance process.
165
+ activities:
166
+ - Publish to documentation site
167
+ - Announce to relevant teams
168
+ - Add to search indexes and navigation
169
+ - Establish update and review schedule
170
+ ready:
171
+ - Documentation is published and accessible
172
+ - Audience can discover and find it
173
+ - Search and navigation are updated
174
+ - Maintenance schedule is established
175
+ implementationReference: |
176
+ ## Document Types
177
+
178
+ | Type | Purpose | Key Sections |
179
+ |------|---------|--------------|
180
+ | README | Project overview | Description, Getting Started, Usage |
181
+ | API Docs | API reference | Endpoints, Parameters, Examples |
182
+ | Spec | Design proposal | Problem, Solution, Alternatives |
183
+ | Tutorial | Learning guide | Objective, Steps, Outcomes |
184
+
185
+ ## Writing Principles
186
+ - Use simple, direct language
187
+ - One idea per sentence
188
+ - Active voice over passive
189
+ - Lead with most important info