@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.
- package/bin/fit-pathway.js +39 -39
- package/package.json +7 -7
- package/src/commands/agent.js +46 -14
- package/src/commands/behaviour.js +6 -6
- package/src/commands/build.js +1 -1
- package/src/commands/command-factory.js +2 -2
- package/src/commands/discipline.js +6 -6
- package/src/commands/driver.js +6 -6
- package/src/commands/init.js +26 -46
- package/src/commands/interview.js +4 -4
- package/src/commands/job.js +16 -16
- package/src/commands/level.js +6 -6
- package/src/commands/progress.js +4 -4
- package/src/commands/questions.js +7 -7
- package/src/commands/skill.js +8 -8
- package/src/commands/stage.js +5 -5
- package/src/commands/tool.js +5 -5
- package/src/commands/track.js +6 -6
- package/src/formatters/agent/dom.js +13 -0
- package/src/formatters/questions/yaml.js +1 -1
- package/src/index.html +1 -1
- package/src/lib/cli-command.js +33 -33
- package/starter/behaviours/systems_thinking.yaml +32 -0
- package/starter/capabilities/delivery.yaml +105 -0
- package/starter/capabilities/reliability.yaml +72 -0
- package/starter/disciplines/software_engineering.yaml +46 -0
- package/starter/drivers.yaml +10 -0
- package/starter/framework.yaml +49 -0
- package/starter/levels.yaml +39 -0
- package/starter/questions/behaviours/.gitkeep +0 -0
- package/starter/questions/capabilities/.gitkeep +0 -0
- package/starter/questions/skills/.gitkeep +0 -0
- package/starter/stages.yaml +21 -0
- package/starter/tracks/forward_deployed.yaml +33 -0
- package/starter/tracks/platform.yaml +33 -0
- package/templates/install.template.sh +3 -4
package/src/commands/level.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Handles level summary, listing, and detail display in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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 '
|
|
61
|
-
console.log(`Run '
|
|
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
|
/**
|
package/src/commands/progress.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Shows career progression analysis in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
-
"
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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 '
|
|
101
|
-
console.log(`Run '
|
|
102
|
-
console.log(`Run '
|
|
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
|
/**
|
package/src/commands/skill.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Handles skill summary, listing, and detail display in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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 '
|
|
44
|
-
console.log(`Run '
|
|
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
|
-
`
|
|
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
|
}
|
package/src/commands/stage.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Handles stage summary, listing, and detail display in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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 '
|
|
56
|
-
console.log(`Run '
|
|
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
|
/**
|
package/src/commands/tool.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Handles tool summary, listing, and detail display in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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 '
|
|
92
|
+
`\nRun 'bunx pathway tool --list' for all tool names and descriptions`,
|
|
93
93
|
);
|
|
94
|
-
console.log(`Run '
|
|
94
|
+
console.log(`Run 'bunx pathway tool <name>' for details\n`);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
/**
|
package/src/commands/track.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Handles track summary, listing, and detail display in the terminal.
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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 '
|
|
53
|
-
console.log(`Run '
|
|
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:
|
|
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
|
-
>
|
|
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">
|
package/src/lib/cli-command.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Command Mapping
|
|
3
3
|
*
|
|
4
|
-
* Maps hash routes to their equivalent `
|
|
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: () => "
|
|
14
|
+
{ pattern: /^\/$/, toCommand: () => "bunx fit-pathway" },
|
|
15
15
|
|
|
16
16
|
// Entity lists
|
|
17
|
-
{ pattern: /^\/skill$/, toCommand: () => "
|
|
18
|
-
{ pattern: /^\/behaviour$/, toCommand: () => "
|
|
17
|
+
{ pattern: /^\/skill$/, toCommand: () => "bunx fit-pathway skill" },
|
|
18
|
+
{ pattern: /^\/behaviour$/, toCommand: () => "bunx fit-pathway behaviour" },
|
|
19
19
|
{
|
|
20
20
|
pattern: /^\/discipline$/,
|
|
21
|
-
toCommand: () => "
|
|
21
|
+
toCommand: () => "bunx fit-pathway discipline",
|
|
22
22
|
},
|
|
23
|
-
{ pattern: /^\/track$/, toCommand: () => "
|
|
24
|
-
{ pattern: /^\/level$/, toCommand: () => "
|
|
25
|
-
{ pattern: /^\/driver$/, toCommand: () => "
|
|
26
|
-
{ pattern: /^\/stage$/, toCommand: () => "
|
|
27
|
-
{ pattern: /^\/tool$/, toCommand: () => "
|
|
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) => `
|
|
32
|
+
toCommand: (m) => `bunx fit-pathway skill ${m[1]}`,
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
pattern: /^\/behaviour\/(.+)$/,
|
|
36
|
-
toCommand: (m) => `
|
|
36
|
+
toCommand: (m) => `bunx fit-pathway behaviour ${m[1]}`,
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
pattern: /^\/discipline\/(.+)$/,
|
|
40
|
-
toCommand: (m) => `
|
|
40
|
+
toCommand: (m) => `bunx fit-pathway discipline ${m[1]}`,
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
pattern: /^\/track\/(.+)$/,
|
|
44
|
-
toCommand: (m) => `
|
|
44
|
+
toCommand: (m) => `bunx fit-pathway track ${m[1]}`,
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
pattern: /^\/level\/(.+)$/,
|
|
48
|
-
toCommand: (m) => `
|
|
48
|
+
toCommand: (m) => `bunx fit-pathway level ${m[1]}`,
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
pattern: /^\/driver\/(.+)$/,
|
|
52
|
-
toCommand: (m) => `
|
|
52
|
+
toCommand: (m) => `bunx fit-pathway driver ${m[1]}`,
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
pattern: /^\/stage\/(.+)$/,
|
|
56
|
-
toCommand: (m) => `
|
|
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: () => "
|
|
62
|
+
toCommand: () => "bunx fit-pathway job --list",
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
pattern: /^\/job\/([^/]+)\/([^/]+)\/([^/]+)$/,
|
|
66
|
-
toCommand: (m) => `
|
|
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) => `
|
|
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: () => "
|
|
76
|
+
toCommand: () => "bunx fit-pathway interview --list",
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
pattern: /^\/interview\/([^/]+)\/([^/]+)\/([^/]+)$/,
|
|
80
80
|
toCommand: (m) =>
|
|
81
|
-
`
|
|
81
|
+
`bunx fit-pathway interview ${m[1]} ${m[2]} --track=${m[3]}`,
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
pattern: /^\/interview\/([^/]+)\/([^/]+)$/,
|
|
85
|
-
toCommand: (m) => `
|
|
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: () => "
|
|
91
|
+
toCommand: () => "bunx fit-pathway progress --list",
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
pattern: /^\/progress\/([^/]+)\/([^/]+)\/([^/]+)$/,
|
|
95
95
|
toCommand: (m) =>
|
|
96
|
-
`
|
|
96
|
+
`bunx fit-pathway progress ${m[1]} ${m[2]} --track=${m[3]}`,
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
pattern: /^\/progress\/([^/]+)\/([^/]+)$/,
|
|
100
|
-
toCommand: (m) => `
|
|
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: () => "
|
|
106
|
+
toCommand: () => "bunx fit-pathway self-assessment",
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
pattern: /^\/self-assessment\/results$/,
|
|
110
|
-
toCommand: () => "
|
|
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: () => "
|
|
116
|
+
toCommand: () => "bunx fit-pathway agent --list",
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
119
|
pattern: /^\/agent\/([^/]+)\/([^/]+)\/([^/]+)$/,
|
|
120
120
|
toCommand: (m) =>
|
|
121
|
-
`
|
|
121
|
+
`bunx fit-pathway agent ${m[1]} --track=${m[2]} --stage=${m[3]}`,
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
pattern: /^\/agent\/([^/]+)\/([^/]+)$/,
|
|
125
|
-
toCommand: (m) => `
|
|
125
|
+
toCommand: (m) => `bunx fit-pathway agent ${m[1]} --track=${m[2]}`,
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
pattern: /^\/agent\/([^/]+)$/,
|
|
129
|
-
toCommand: (m) => `
|
|
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 "
|
|
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
|