@forwardimpact/pathway 0.25.7 → 0.25.9

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 (36) hide show
  1. package/bin/fit-pathway.js +39 -39
  2. package/package.json +7 -7
  3. package/src/commands/agent.js +46 -14
  4. package/src/commands/behaviour.js +6 -6
  5. package/src/commands/build.js +1 -1
  6. package/src/commands/command-factory.js +2 -2
  7. package/src/commands/discipline.js +6 -6
  8. package/src/commands/driver.js +6 -6
  9. package/src/commands/init.js +26 -46
  10. package/src/commands/interview.js +4 -4
  11. package/src/commands/job.js +16 -16
  12. package/src/commands/level.js +6 -6
  13. package/src/commands/progress.js +4 -4
  14. package/src/commands/questions.js +7 -7
  15. package/src/commands/skill.js +8 -8
  16. package/src/commands/stage.js +5 -5
  17. package/src/commands/tool.js +5 -5
  18. package/src/commands/track.js +6 -6
  19. package/src/formatters/agent/dom.js +13 -0
  20. package/src/formatters/questions/yaml.js +1 -1
  21. package/src/index.html +1 -1
  22. package/src/lib/cli-command.js +33 -33
  23. package/starter/behaviours/systems_thinking.yaml +32 -0
  24. package/starter/capabilities/delivery.yaml +105 -0
  25. package/starter/capabilities/reliability.yaml +72 -0
  26. package/starter/disciplines/software_engineering.yaml +46 -0
  27. package/starter/drivers.yaml +10 -0
  28. package/starter/framework.yaml +49 -0
  29. package/starter/levels.yaml +39 -0
  30. package/starter/questions/behaviours/.gitkeep +0 -0
  31. package/starter/questions/capabilities/.gitkeep +0 -0
  32. package/starter/questions/skills/.gitkeep +0 -0
  33. package/starter/stages.yaml +21 -0
  34. package/starter/tracks/forward_deployed.yaml +33 -0
  35. package/starter/tracks/platform.yaml +33 -0
  36. package/templates/install.template.sh +3 -4
@@ -4,10 +4,10 @@
4
4
  * Handles level summary, listing, and detail display in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway level # Summary with stats
8
- * npx pathway level --list # IDs only (for piping)
9
- * npx pathway level <id> # Detail view
10
- * npx pathway level --validate # Validation checks
7
+ * bunx pathway level # Summary with stats
8
+ * bunx pathway level --list # IDs only (for piping)
9
+ * bunx pathway level <id> # Detail view
10
+ * bunx pathway level --validate # Validation checks
11
11
  */
12
12
 
13
13
  import { createEntityCommand } from "./command-factory.js";
@@ -57,8 +57,8 @@ function formatSummary(levels, data) {
57
57
  ),
58
58
  );
59
59
  console.log(`\nTotal: ${levels.length} levels`);
60
- console.log(`\nRun 'npx pathway level --list' for IDs and titles`);
61
- console.log(`Run 'npx pathway level <id>' for details\n`);
60
+ console.log(`\nRun 'bunx pathway level --list' for IDs and titles`);
61
+ console.log(`Run 'bunx pathway level <id>' for details\n`);
62
62
  }
63
63
 
64
64
  /**
@@ -4,9 +4,9 @@
4
4
  * Shows career progression analysis in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway progress <discipline> <level> # Progress for trackless job
8
- * npx pathway progress <discipline> <level> --track=<track> # Progress with track
9
- * npx pathway progress <discipline> <from_level> --compare=<to_level> # Compare levels
7
+ * bunx pathway progress <discipline> <level> # Progress for trackless job
8
+ * bunx pathway progress <discipline> <level> --track=<track> # Progress with track
9
+ * bunx pathway progress <discipline> <from_level> --compare=<to_level> # Compare levels
10
10
  */
11
11
 
12
12
  import { createCompositeCommand } from "./command-factory.js";
@@ -80,5 +80,5 @@ export const runProgressCommand = createCompositeCommand({
80
80
  }),
81
81
  formatter: formatProgress,
82
82
  usageExample:
83
- "npx pathway progress software_engineering L3 --track=platform --compare=L4",
83
+ "bunx pathway progress software_engineering L3 --track=platform --compare=L4",
84
84
  });
@@ -4,10 +4,10 @@
4
4
  * Browse and compare interview questions across skills and behaviours.
5
5
  *
6
6
  * Usage:
7
- * npx pathway questions # Summary with stats
8
- * npx pathway questions --list # Question IDs (for piping)
9
- * npx pathway questions --level=practitioner # Filter by level
10
- * npx pathway questions --stats # Detailed statistics
7
+ * bunx pathway questions # Summary with stats
8
+ * bunx pathway questions --list # Question IDs (for piping)
9
+ * bunx pathway questions --level=practitioner # Filter by level
10
+ * bunx pathway questions --stats # Detailed statistics
11
11
  */
12
12
 
13
13
  import {
@@ -97,9 +97,9 @@ function showQuestionsSummary(data) {
97
97
  console.log("\nBehaviour Questions:");
98
98
  console.log(formatTable(["Maturity", "Count"], behaviourRows));
99
99
 
100
- console.log(`\nRun 'npx pathway questions --list' for question IDs`);
101
- console.log(`Run 'npx pathway questions --stats' for detailed stats`);
102
- console.log(`Run 'npx pathway questions --level=practitioner' to filter\n`);
100
+ console.log(`\nRun 'bunx pathway questions --list' for question IDs`);
101
+ console.log(`Run 'bunx pathway questions --stats' for detailed stats`);
102
+ console.log(`Run 'bunx pathway questions --level=practitioner' to filter\n`);
103
103
  }
104
104
 
105
105
  /**
@@ -4,11 +4,11 @@
4
4
  * Handles skill summary, listing, and detail display in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway skill # Summary with stats
8
- * npx pathway skill --list # IDs only (for piping)
9
- * npx pathway skill <id> # Detail view
10
- * npx pathway skill <id> --agent # Agent SKILL.md output
11
- * npx pathway skill --validate # Validation checks
7
+ * bunx pathway skill # Summary with stats
8
+ * bunx pathway skill --list # IDs only (for piping)
9
+ * bunx pathway skill <id> # Detail view
10
+ * bunx pathway skill <id> --agent # Agent SKILL.md output
11
+ * bunx pathway skill --validate # Validation checks
12
12
  */
13
13
 
14
14
  import { createEntityCommand } from "./command-factory.js";
@@ -40,8 +40,8 @@ function formatSummary(skills, data) {
40
40
 
41
41
  console.log(formatTable(["Capability", "Count", "Agent"], rows));
42
42
  console.log(`\nTotal: ${skills.length} skills`);
43
- console.log(`\nRun 'npx pathway skill --list' for IDs`);
44
- console.log(`Run 'npx pathway skill <id>' for details\n`);
43
+ console.log(`\nRun 'bunx pathway skill --list' for IDs`);
44
+ console.log(`Run 'bunx pathway skill <id>' for details\n`);
45
45
  }
46
46
 
47
47
  /**
@@ -73,7 +73,7 @@ async function formatAgentDetail(skill, stages, templateLoader, dataDir) {
73
73
  console.error(formatError(`Skill '${skill.id}' has no agent section`));
74
74
  console.error(`\nSkills with agent support:`);
75
75
  console.error(
76
- ` npx pathway skill --list | xargs -I{} sh -c 'npx pathway skill {} --json | jq -e .skill.agent > /dev/null && echo {}'`,
76
+ ` bunx pathway skill --list | xargs -I{} sh -c 'bunx pathway skill {} --json | jq -e .skill.agent > /dev/null && echo {}'`,
77
77
  );
78
78
  process.exit(1);
79
79
  }
@@ -4,9 +4,9 @@
4
4
  * Handles stage summary, listing, and detail display in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway stage # Summary with lifecycle flow
8
- * npx pathway stage --list # IDs only (for piping)
9
- * npx pathway stage <id> # Detail view
7
+ * bunx pathway stage # Summary with lifecycle flow
8
+ * bunx pathway stage --list # IDs only (for piping)
9
+ * bunx pathway stage <id> # Detail view
10
10
  */
11
11
 
12
12
  import { createEntityCommand } from "./command-factory.js";
@@ -52,8 +52,8 @@ function formatSummary(stages, _data) {
52
52
 
53
53
  console.log(formatTable(["ID", "Name", "Mode", "Tools", "Handoffs"], rows));
54
54
  console.log(`\nTotal: ${stages.length} stages`);
55
- console.log(`\nRun 'npx pathway stage --list' for IDs and names`);
56
- console.log(`Run 'npx pathway stage <id>' for details\n`);
55
+ console.log(`\nRun 'bunx pathway stage --list' for IDs and names`);
56
+ console.log(`Run 'bunx pathway stage <id>' for details\n`);
57
57
  }
58
58
 
59
59
  /**
@@ -4,9 +4,9 @@
4
4
  * Handles tool summary, listing, and detail display in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway tool # Summary with stats
8
- * npx pathway tool --list # Tool names only (for piping)
9
- * npx pathway tool <name> # Detail view for specific tool
7
+ * bunx pathway tool # Summary with stats
8
+ * bunx pathway tool --list # Tool names only (for piping)
9
+ * bunx pathway tool <name> # Detail view for specific tool
10
10
  */
11
11
 
12
12
  import { truncate } from "../formatters/shared.js";
@@ -89,9 +89,9 @@ function formatSummary(tools, totalCount) {
89
89
  console.log(`(showing top 15 by usage)`);
90
90
  }
91
91
  console.log(
92
- `\nRun 'npx pathway tool --list' for all tool names and descriptions`,
92
+ `\nRun 'bunx pathway tool --list' for all tool names and descriptions`,
93
93
  );
94
- console.log(`Run 'npx pathway tool <name>' for details\n`);
94
+ console.log(`Run 'bunx pathway tool <name>' for details\n`);
95
95
  }
96
96
 
97
97
  /**
@@ -4,10 +4,10 @@
4
4
  * Handles track summary, listing, and detail display in the terminal.
5
5
  *
6
6
  * Usage:
7
- * npx pathway track # Summary with stats
8
- * npx pathway track --list # IDs only (for piping)
9
- * npx pathway track <id> # Detail view
10
- * npx pathway track --validate # Validation checks
7
+ * bunx pathway track # Summary with stats
8
+ * bunx pathway track --list # IDs only (for piping)
9
+ * bunx pathway track <id> # Detail view
10
+ * bunx pathway track --validate # Validation checks
11
11
  */
12
12
 
13
13
  import { createEntityCommand } from "./command-factory.js";
@@ -49,8 +49,8 @@ function formatSummary(tracks, data) {
49
49
 
50
50
  console.log(formatTable(["ID", "Name", "Modifiers", "Disciplines"], rows));
51
51
  console.log(`\nTotal: ${tracks.length} tracks`);
52
- console.log(`\nRun 'npx pathway track --list' for IDs and names`);
53
- console.log(`Run 'npx pathway track <id>' for details\n`);
52
+ console.log(`\nRun 'bunx pathway track --list' for IDs and names`);
53
+ console.log(`Run 'bunx pathway track <id>' for details\n`);
54
54
  }
55
55
 
56
56
  /**
@@ -18,6 +18,7 @@ import { getStageEmoji } from "../stage/shared.js";
18
18
  * @param {Array} deployment.skills - Agent skills
19
19
  * @param {Array} [deployment.roleAgents] - Role variant agents (plan, review)
20
20
  * @param {Object} [deployment.claudeCodeSettings] - Claude Code settings to include in download
21
+ * @param {string|null} [deployment.teamInstructions] - Team instructions content for CLAUDE.md
21
22
  * @returns {HTMLElement}
22
23
  */
23
24
  export function agentDeploymentToDOM({
@@ -25,6 +26,7 @@ export function agentDeploymentToDOM({
25
26
  skills,
26
27
  roleAgents = [],
27
28
  claudeCodeSettings = {},
29
+ teamInstructions = null,
28
30
  }) {
29
31
  const profileContent = formatAgentProfile(profile);
30
32
  const agentName = profile.frontmatter.name;
@@ -39,6 +41,7 @@ export function agentDeploymentToDOM({
39
41
  roleAgents,
40
42
  claudeCodeSettings,
41
43
  agentName,
44
+ teamInstructions,
42
45
  ),
43
46
 
44
47
  // Profile section
@@ -92,6 +95,7 @@ export function agentDeploymentToDOM({
92
95
  * @param {Array} roleAgents - Role variant agents
93
96
  * @param {Object} claudeCodeSettings - Claude Code settings to include
94
97
  * @param {string} agentName - Agent name for zip filename
98
+ * @param {string|null} teamInstructions - Team instructions content for CLAUDE.md
95
99
  * @returns {HTMLElement}
96
100
  */
97
101
  function createDownloadButton(
@@ -100,6 +104,7 @@ function createDownloadButton(
100
104
  roleAgents,
101
105
  claudeCodeSettings,
102
106
  agentName,
107
+ teamInstructions,
103
108
  ) {
104
109
  const btn = button(
105
110
  { className: "btn btn-primary download-all-btn" },
@@ -117,6 +122,7 @@ function createDownloadButton(
117
122
  roleAgents,
118
123
  claudeCodeSettings,
119
124
  agentName,
125
+ teamInstructions,
120
126
  );
121
127
  } finally {
122
128
  btn.disabled = false;
@@ -169,6 +175,7 @@ function createRoleAgentCard(agent) {
169
175
  * @param {Array} roleAgents - Role variant agents
170
176
  * @param {Object} claudeCodeSettings - Claude Code settings to include
171
177
  * @param {string} agentName - Agent name for zip filename
178
+ * @param {string|null} teamInstructions - Team instructions content for CLAUDE.md
172
179
  */
173
180
  async function downloadAllAsZip(
174
181
  profile,
@@ -176,6 +183,7 @@ async function downloadAllAsZip(
176
183
  roleAgents,
177
184
  claudeCodeSettings,
178
185
  agentName,
186
+ teamInstructions,
179
187
  ) {
180
188
  // Dynamically import JSZip
181
189
  const JSZip = await importJSZip();
@@ -185,6 +193,11 @@ async function downloadAllAsZip(
185
193
  const profileContent = formatAgentProfile(profile);
186
194
  zip.file(`.claude/agents/${profile.filename}`, profileContent);
187
195
 
196
+ // Add team instructions to .claude/CLAUDE.md
197
+ if (teamInstructions) {
198
+ zip.file(".claude/CLAUDE.md", teamInstructions.trim() + "\n");
199
+ }
200
+
188
201
  // Add role agent profiles to .claude/agents/ folder
189
202
  for (const roleAgent of roleAgents) {
190
203
  const roleContent = formatAgentProfile(roleAgent);
@@ -26,7 +26,7 @@ export function questionsToYaml(view, _options = {}) {
26
26
 
27
27
  const filterStr =
28
28
  filterParts.length > 0 ? filterParts.join(" ") : "(no filters)";
29
- const header = `# Generated by: npx pathway questions ${filterStr}\n# Questions: ${questions.length}\n\n`;
29
+ const header = `# Generated by: bunx pathway questions ${filterStr}\n# Questions: ${questions.length}\n\n`;
30
30
 
31
31
  // Group questions by source
32
32
  const bySource = {};
package/src/index.html CHANGED
@@ -83,7 +83,7 @@
83
83
  <div class="top-bar__command">
84
84
  <span class="top-bar__prompt">$</span>
85
85
  <span class="top-bar__command-text" id="cli-command"
86
- >npx fit-pathway</span
86
+ >bunx fit-pathway</span
87
87
  >
88
88
  <button class="top-bar__copy" id="cli-copy" aria-label="Copy command">
89
89
  <svg viewBox="0 0 24 24">
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CLI Command Mapping
3
3
  *
4
- * Maps hash routes to their equivalent `npx fit-pathway` CLI commands.
4
+ * Maps hash routes to their equivalent `bunx fit-pathway` CLI commands.
5
5
  */
6
6
 
7
7
  /**
@@ -11,122 +11,122 @@
11
11
  */
12
12
  const ROUTE_COMMANDS = [
13
13
  // Landing
14
- { pattern: /^\/$/, toCommand: () => "npx fit-pathway" },
14
+ { pattern: /^\/$/, toCommand: () => "bunx fit-pathway" },
15
15
 
16
16
  // Entity lists
17
- { pattern: /^\/skill$/, toCommand: () => "npx fit-pathway skill" },
18
- { pattern: /^\/behaviour$/, toCommand: () => "npx fit-pathway behaviour" },
17
+ { pattern: /^\/skill$/, toCommand: () => "bunx fit-pathway skill" },
18
+ { pattern: /^\/behaviour$/, toCommand: () => "bunx fit-pathway behaviour" },
19
19
  {
20
20
  pattern: /^\/discipline$/,
21
- toCommand: () => "npx fit-pathway discipline",
21
+ toCommand: () => "bunx fit-pathway discipline",
22
22
  },
23
- { pattern: /^\/track$/, toCommand: () => "npx fit-pathway track" },
24
- { pattern: /^\/level$/, toCommand: () => "npx fit-pathway level" },
25
- { pattern: /^\/driver$/, toCommand: () => "npx fit-pathway driver" },
26
- { pattern: /^\/stage$/, toCommand: () => "npx fit-pathway stage" },
27
- { pattern: /^\/tool$/, toCommand: () => "npx fit-pathway tool" },
23
+ { pattern: /^\/track$/, toCommand: () => "bunx fit-pathway track" },
24
+ { pattern: /^\/level$/, toCommand: () => "bunx fit-pathway level" },
25
+ { pattern: /^\/driver$/, toCommand: () => "bunx fit-pathway driver" },
26
+ { pattern: /^\/stage$/, toCommand: () => "bunx fit-pathway stage" },
27
+ { pattern: /^\/tool$/, toCommand: () => "bunx fit-pathway tool" },
28
28
 
29
29
  // Entity details
30
30
  {
31
31
  pattern: /^\/skill\/(.+)$/,
32
- toCommand: (m) => `npx fit-pathway skill ${m[1]}`,
32
+ toCommand: (m) => `bunx fit-pathway skill ${m[1]}`,
33
33
  },
34
34
  {
35
35
  pattern: /^\/behaviour\/(.+)$/,
36
- toCommand: (m) => `npx fit-pathway behaviour ${m[1]}`,
36
+ toCommand: (m) => `bunx fit-pathway behaviour ${m[1]}`,
37
37
  },
38
38
  {
39
39
  pattern: /^\/discipline\/(.+)$/,
40
- toCommand: (m) => `npx fit-pathway discipline ${m[1]}`,
40
+ toCommand: (m) => `bunx fit-pathway discipline ${m[1]}`,
41
41
  },
42
42
  {
43
43
  pattern: /^\/track\/(.+)$/,
44
- toCommand: (m) => `npx fit-pathway track ${m[1]}`,
44
+ toCommand: (m) => `bunx fit-pathway track ${m[1]}`,
45
45
  },
46
46
  {
47
47
  pattern: /^\/level\/(.+)$/,
48
- toCommand: (m) => `npx fit-pathway level ${m[1]}`,
48
+ toCommand: (m) => `bunx fit-pathway level ${m[1]}`,
49
49
  },
50
50
  {
51
51
  pattern: /^\/driver\/(.+)$/,
52
- toCommand: (m) => `npx fit-pathway driver ${m[1]}`,
52
+ toCommand: (m) => `bunx fit-pathway driver ${m[1]}`,
53
53
  },
54
54
  {
55
55
  pattern: /^\/stage\/(.+)$/,
56
- toCommand: (m) => `npx fit-pathway stage ${m[1]}`,
56
+ toCommand: (m) => `bunx fit-pathway stage ${m[1]}`,
57
57
  },
58
58
 
59
59
  // Job builder + detail
60
60
  {
61
61
  pattern: /^\/job-builder$/,
62
- toCommand: () => "npx fit-pathway job --list",
62
+ toCommand: () => "bunx fit-pathway job --list",
63
63
  },
64
64
  {
65
65
  pattern: /^\/job\/([^/]+)\/([^/]+)\/([^/]+)$/,
66
- toCommand: (m) => `npx fit-pathway job ${m[1]} ${m[2]} --track=${m[3]}`,
66
+ toCommand: (m) => `bunx fit-pathway job ${m[1]} ${m[2]} --track=${m[3]}`,
67
67
  },
68
68
  {
69
69
  pattern: /^\/job\/([^/]+)\/([^/]+)$/,
70
- toCommand: (m) => `npx fit-pathway job ${m[1]} ${m[2]}`,
70
+ toCommand: (m) => `bunx fit-pathway job ${m[1]} ${m[2]}`,
71
71
  },
72
72
 
73
73
  // Interview builder + detail
74
74
  {
75
75
  pattern: /^\/interview-prep$/,
76
- toCommand: () => "npx fit-pathway interview --list",
76
+ toCommand: () => "bunx fit-pathway interview --list",
77
77
  },
78
78
  {
79
79
  pattern: /^\/interview\/([^/]+)\/([^/]+)\/([^/]+)$/,
80
80
  toCommand: (m) =>
81
- `npx fit-pathway interview ${m[1]} ${m[2]} --track=${m[3]}`,
81
+ `bunx fit-pathway interview ${m[1]} ${m[2]} --track=${m[3]}`,
82
82
  },
83
83
  {
84
84
  pattern: /^\/interview\/([^/]+)\/([^/]+)$/,
85
- toCommand: (m) => `npx fit-pathway interview ${m[1]} ${m[2]}`,
85
+ toCommand: (m) => `bunx fit-pathway interview ${m[1]} ${m[2]}`,
86
86
  },
87
87
 
88
88
  // Career progress builder + detail
89
89
  {
90
90
  pattern: /^\/career-progress$/,
91
- toCommand: () => "npx fit-pathway progress --list",
91
+ toCommand: () => "bunx fit-pathway progress --list",
92
92
  },
93
93
  {
94
94
  pattern: /^\/progress\/([^/]+)\/([^/]+)\/([^/]+)$/,
95
95
  toCommand: (m) =>
96
- `npx fit-pathway progress ${m[1]} ${m[2]} --track=${m[3]}`,
96
+ `bunx fit-pathway progress ${m[1]} ${m[2]} --track=${m[3]}`,
97
97
  },
98
98
  {
99
99
  pattern: /^\/progress\/([^/]+)\/([^/]+)$/,
100
- toCommand: (m) => `npx fit-pathway progress ${m[1]} ${m[2]}`,
100
+ toCommand: (m) => `bunx fit-pathway progress ${m[1]} ${m[2]}`,
101
101
  },
102
102
 
103
103
  // Self-assessment
104
104
  {
105
105
  pattern: /^\/self-assessment$/,
106
- toCommand: () => "npx fit-pathway self-assessment",
106
+ toCommand: () => "bunx fit-pathway self-assessment",
107
107
  },
108
108
  {
109
109
  pattern: /^\/self-assessment\/results$/,
110
- toCommand: () => "npx fit-pathway self-assessment",
110
+ toCommand: () => "bunx fit-pathway self-assessment",
111
111
  },
112
112
 
113
113
  // Agent builder + detail
114
114
  {
115
115
  pattern: /^\/agent-builder$/,
116
- toCommand: () => "npx fit-pathway agent --list",
116
+ toCommand: () => "bunx fit-pathway agent --list",
117
117
  },
118
118
  {
119
119
  pattern: /^\/agent\/([^/]+)\/([^/]+)\/([^/]+)$/,
120
120
  toCommand: (m) =>
121
- `npx fit-pathway agent ${m[1]} --track=${m[2]} --stage=${m[3]}`,
121
+ `bunx fit-pathway agent ${m[1]} --track=${m[2]} --stage=${m[3]}`,
122
122
  },
123
123
  {
124
124
  pattern: /^\/agent\/([^/]+)\/([^/]+)$/,
125
- toCommand: (m) => `npx fit-pathway agent ${m[1]} --track=${m[2]}`,
125
+ toCommand: (m) => `bunx fit-pathway agent ${m[1]} --track=${m[2]}`,
126
126
  },
127
127
  {
128
128
  pattern: /^\/agent\/([^/]+)$/,
129
- toCommand: (m) => `npx fit-pathway agent ${m[1]}`,
129
+ toCommand: (m) => `bunx fit-pathway agent ${m[1]}`,
130
130
  },
131
131
  ];
132
132
 
@@ -141,5 +141,5 @@ export function getCliCommand(hashPath) {
141
141
  const match = path.match(pattern);
142
142
  if (match) return toCommand(match);
143
143
  }
144
- return "npx fit-pathway";
144
+ return "bunx fit-pathway";
145
145
  }
@@ -0,0 +1,32 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/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. Engineers recognize that every service, API, and queue is
8
+ part of a larger whole—isolated changes ripple across the system.
9
+ maturityDescriptions:
10
+ emerging:
11
+ Recognizes that systems have interconnected parts; considers immediate
12
+ dependencies in code
13
+ developing:
14
+ Identifies upstream and downstream impacts; uses observability tools to
15
+ trace requests across services
16
+ practicing:
17
+ Maps complex system interactions across technical and business domains;
18
+ anticipates cascading effects
19
+ role_modeling:
20
+ Shapes systems design practices across their function; influences
21
+ cross-team architecture decisions
22
+ exemplifying:
23
+ Defines organizational systems architecture principles; recognized
24
+ authority on complex systems
25
+
26
+ agent:
27
+ title: Consider the whole system
28
+ workingStyle: |
29
+ For every change:
30
+ 1. Identify upstream and downstream impacts
31
+ 2. Consider non-functional requirements (performance, security)
32
+ 3. Document assumptions and trade-offs
@@ -0,0 +1,105 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/capability.schema.json
2
+
3
+ id: delivery
4
+ name: Delivery
5
+ emojiIcon: "\U0001F680"
6
+ ordinalRank: 1
7
+ description: |
8
+ Building and shipping solutions that solve real problems.
9
+ professionalResponsibilities:
10
+ awareness:
11
+ You complete assigned tasks within established patterns with guidance
12
+ foundational: You deliver small features end-to-end with minimal guidance
13
+ working: You own feature delivery from design through deployment
14
+ practitioner: You lead technical delivery of complex projects across teams
15
+ expert: You drive delivery of the most critical technical initiatives
16
+ managementResponsibilities:
17
+ awareness: You track team progress and communicate status to stakeholders
18
+ foundational:
19
+ You coordinate team delivery by managing dependencies and removing blockers
20
+ working: You own team delivery outcomes and make resourcing decisions
21
+ practitioner: You drive delivery excellence across multiple teams
22
+ expert: You shape delivery culture across the business unit
23
+ skills:
24
+ - id: task_completion
25
+ name: Task Completion
26
+ human:
27
+ description:
28
+ Completing work items reliably, from understanding requirements through
29
+ implementation to verification.
30
+ proficiencyDescriptions:
31
+ awareness:
32
+ You complete well-defined tasks with guidance, following established
33
+ patterns and asking for help when needed.
34
+ foundational:
35
+ You break down tasks into steps, estimate effort, and deliver
36
+ independently on familiar work.
37
+ working:
38
+ You manage your own workload, handle ambiguous requirements, and
39
+ consistently deliver on commitments.
40
+ practitioner:
41
+ You coordinate task delivery across teams, unblock others, and
42
+ establish completion standards for your area.
43
+ expert:
44
+ You define delivery practices across the organization and drive
45
+ completion of the most complex initiatives.
46
+ agent:
47
+ name: task-completion
48
+ description: |
49
+ Guide for completing work items reliably from requirements through
50
+ verification.
51
+ useWhen: |
52
+ Implementing features, fixing bugs, or completing any defined work item.
53
+ stages:
54
+ code:
55
+ focus: |
56
+ Implement the solution according to requirements. Write clean,
57
+ tested code that meets acceptance criteria.
58
+ readChecklist:
59
+ - Understand the requirements and acceptance criteria
60
+ - Review relevant existing code and patterns
61
+ confirmChecklist:
62
+ - Code compiles and passes tests
63
+ - Acceptance criteria are met
64
+ - Changes are documented
65
+
66
+ - id: planning
67
+ name: Planning
68
+ human:
69
+ description:
70
+ Breaking down work into manageable pieces, estimating effort, and
71
+ sequencing delivery for maximum impact.
72
+ proficiencyDescriptions:
73
+ awareness:
74
+ You follow project plans created by others and report progress
75
+ accurately.
76
+ foundational:
77
+ You create simple plans for your own work, estimate tasks, and
78
+ identify dependencies.
79
+ working:
80
+ You plan features end-to-end, manage dependencies, and adjust plans
81
+ based on new information.
82
+ practitioner:
83
+ You lead planning for complex projects across teams, manage risk, and
84
+ establish planning practices for your area.
85
+ expert:
86
+ You shape planning strategy across the organization and drive delivery
87
+ of the most complex programmes.
88
+ agent:
89
+ name: planning
90
+ description: |
91
+ Guide for breaking down work, estimating effort, and sequencing
92
+ delivery.
93
+ useWhen: |
94
+ Planning features, creating implementation plans, or sequencing work.
95
+ stages:
96
+ code:
97
+ focus: |
98
+ Follow the implementation plan. Track progress and flag deviations
99
+ from the plan early.
100
+ readChecklist:
101
+ - Review the implementation plan
102
+ - Understand task dependencies and ordering
103
+ confirmChecklist:
104
+ - Plan steps are completed in order
105
+ - Deviations from the plan are documented
@@ -0,0 +1,72 @@
1
+ # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/capability.schema.json
2
+
3
+ id: reliability
4
+ name: Reliability
5
+ emojiIcon: "\U0001F6E1\uFE0F"
6
+ ordinalRank: 2
7
+ description: |
8
+ Ensuring systems are dependable, observable, and resilient.
9
+ professionalResponsibilities:
10
+ awareness: You follow operational guidelines and escalate issues appropriately
11
+ foundational:
12
+ You implement reliability practices in your code and create basic monitoring
13
+ working: You design for reliability and lead incident response
14
+ practitioner: You establish SLOs across teams and drive reliability culture
15
+ expert: You shape reliability strategy across the business unit
16
+ managementResponsibilities:
17
+ awareness:
18
+ You understand reliability requirements and support escalation processes
19
+ foundational:
20
+ You ensure your team follows reliability practices and facilitate
21
+ retrospectives
22
+ working:
23
+ You own team reliability outcomes and manage incident response rotations
24
+ practitioner:
25
+ You drive reliability culture across teams and own cross-team reliability
26
+ outcomes
27
+ expert:
28
+ You shape reliability strategy across the business unit and own enterprise
29
+ reliability outcomes
30
+ skills:
31
+ - id: incident_response
32
+ name: Incident Response
33
+ human:
34
+ description:
35
+ Responding to production incidents effectively, from detection through
36
+ resolution and post-incident review.
37
+ proficiencyDescriptions:
38
+ awareness:
39
+ You follow incident response procedures and escalate issues using
40
+ established channels.
41
+ foundational:
42
+ You participate in incident response, gather diagnostic information,
43
+ and contribute to post-incident reviews.
44
+ working:
45
+ You lead incident response for your services, coordinate resolution,
46
+ and conduct blameless post-mortems.
47
+ practitioner:
48
+ You establish incident response practices across teams, lead complex
49
+ incidents, and drive systemic improvements.
50
+ expert:
51
+ You define incident management strategy across the organization and
52
+ lead response to the most critical incidents.
53
+ agent:
54
+ name: incident-response
55
+ description: |
56
+ Guide for responding to production incidents from detection through
57
+ resolution.
58
+ useWhen: |
59
+ Handling production issues, investigating failures, or improving
60
+ incident response processes.
61
+ stages:
62
+ code:
63
+ focus: |
64
+ Implement fixes for identified issues. Ensure changes are tested
65
+ and do not introduce regressions.
66
+ readChecklist:
67
+ - Understand the root cause of the incident
68
+ - Review affected systems and dependencies
69
+ confirmChecklist:
70
+ - Fix addresses the root cause
71
+ - Changes are tested
72
+ - Monitoring confirms resolution