@umang-boss/claudemon 1.1.4 → 1.2.1
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/README.md +3 -3
- package/dist/src/server/tools/achievements.js +1 -2
- package/dist/src/server/tools/catch.js +2 -4
- package/dist/src/server/tools/evolve.js +2 -4
- package/dist/src/server/tools/legendary.js +1 -2
- package/dist/src/server/tools/party.js +1 -2
- package/dist/src/server/tools/pet.js +2 -4
- package/dist/src/server/tools/pokedex.js +1 -2
- package/dist/src/server/tools/rename.js +12 -4
- package/dist/src/server/tools/show.js +1 -2
- package/dist/src/server/tools/starter.js +0 -1
- package/dist/src/server/tools/stats.js +2 -4
- package/package.json +6 -3
- package/src/server/tools/achievements.ts +1 -2
- package/src/server/tools/catch.ts +2 -4
- package/src/server/tools/evolve.ts +2 -4
- package/src/server/tools/legendary.ts +1 -2
- package/src/server/tools/party.ts +1 -2
- package/src/server/tools/pet.ts +2 -4
- package/src/server/tools/pokedex.ts +1 -2
- package/src/server/tools/rename.ts +12 -4
- package/src/server/tools/show.ts +1 -2
- package/src/server/tools/starter.ts +0 -1
- package/src/server/tools/stats.ts +2 -4
- package/statusline/buddy-status.sh +47 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claudemon
|
|
2
2
|
|
|
3
|
-
> Pokemon
|
|
3
|
+
> Pokemon coding companion for Claude Code -- Gotta code 'em all!
|
|
4
4
|
|
|
5
5
|
## What is Claudemon?
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ fill your Pokedex -- all while you code.
|
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
- **151
|
|
13
|
+
- **151 Pokemon** with authentic base stats and evolution chains
|
|
14
14
|
- **XP from coding** -- commits, tests, builds, edits, and more
|
|
15
15
|
- **Level up & evolve** -- Charmander -> Charmeleon -> Charizard
|
|
16
16
|
- **Wild encounters** -- Pokemon appear based on your coding activity
|
|
@@ -90,7 +90,7 @@ Claude Code -> MCP Server (Claudemon)
|
|
|
90
90
|
|
|
91
91
|
### Evolution
|
|
92
92
|
|
|
93
|
-
Pokemon evolve at the same levels as the original
|
|
93
|
+
Pokemon evolve at the same levels as the original games:
|
|
94
94
|
- **Level-based:** Charmander -> Charmeleon (L16) -> Charizard (L36)
|
|
95
95
|
- **Badge-based:** Pikachu -> Raichu (Spark Badge -- 200 commits)
|
|
96
96
|
- **Collaboration:** Kadabra -> Alakazam (10 PRs merged)
|
|
@@ -47,10 +47,9 @@ export function registerAchievementsTool(server) {
|
|
|
47
47
|
content: [
|
|
48
48
|
{
|
|
49
49
|
type: "text",
|
|
50
|
-
text: "
|
|
50
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start earning achievements!",
|
|
51
51
|
},
|
|
52
52
|
],
|
|
53
|
-
isError: true,
|
|
54
53
|
};
|
|
55
54
|
}
|
|
56
55
|
const unlockedIds = new Set(state.achievements.map((a) => a.achievementId));
|
|
@@ -43,10 +43,9 @@ export function registerCatchTool(server) {
|
|
|
43
43
|
content: [
|
|
44
44
|
{
|
|
45
45
|
type: "text",
|
|
46
|
-
text: "
|
|
46
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before catching wild Pokemon!",
|
|
47
47
|
},
|
|
48
48
|
],
|
|
49
|
-
isError: true,
|
|
50
49
|
};
|
|
51
50
|
}
|
|
52
51
|
const encounter = state.pendingEncounter;
|
|
@@ -79,10 +78,9 @@ export function registerCatchTool(server) {
|
|
|
79
78
|
content: [
|
|
80
79
|
{
|
|
81
80
|
type: "text",
|
|
82
|
-
text: "
|
|
81
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before catching wild Pokemon!",
|
|
83
82
|
},
|
|
84
83
|
],
|
|
85
|
-
isError: true,
|
|
86
84
|
};
|
|
87
85
|
}
|
|
88
86
|
const typeStr = formatTypes(species.types);
|
|
@@ -36,10 +36,9 @@ export function registerEvolveTool(server) {
|
|
|
36
36
|
content: [
|
|
37
37
|
{
|
|
38
38
|
type: "text",
|
|
39
|
-
text: "
|
|
39
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before evolving!",
|
|
40
40
|
},
|
|
41
41
|
],
|
|
42
|
-
isError: true,
|
|
43
42
|
};
|
|
44
43
|
}
|
|
45
44
|
const active = stateManager.getActivePokemon();
|
|
@@ -48,10 +47,9 @@ export function registerEvolveTool(server) {
|
|
|
48
47
|
content: [
|
|
49
48
|
{
|
|
50
49
|
type: "text",
|
|
51
|
-
text: "
|
|
50
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before evolving!",
|
|
52
51
|
},
|
|
53
52
|
],
|
|
54
|
-
isError: true,
|
|
55
53
|
};
|
|
56
54
|
}
|
|
57
55
|
const species = POKEMON_BY_ID.get(active.pokemonId);
|
|
@@ -16,10 +16,9 @@ export function registerLegendaryTool(server) {
|
|
|
16
16
|
content: [
|
|
17
17
|
{
|
|
18
18
|
type: "text",
|
|
19
|
-
text: "
|
|
19
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and begin your legendary quests!",
|
|
20
20
|
},
|
|
21
21
|
],
|
|
22
|
-
isError: true,
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
24
|
const progress = getQuestProgress(state);
|
|
@@ -20,10 +20,9 @@ export function registerPartyTool(server) {
|
|
|
20
20
|
content: [
|
|
21
21
|
{
|
|
22
22
|
type: "text",
|
|
23
|
-
text: "
|
|
23
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and build your party!",
|
|
24
24
|
},
|
|
25
25
|
],
|
|
26
|
-
isError: true,
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
const action = params.action ?? "list";
|
|
@@ -41,10 +41,9 @@ export function registerPetTool(server) {
|
|
|
41
41
|
content: [
|
|
42
42
|
{
|
|
43
43
|
type: "text",
|
|
44
|
-
text: "
|
|
44
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can pet them!",
|
|
45
45
|
},
|
|
46
46
|
],
|
|
47
|
-
isError: true,
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
49
|
const active = stateManager.getActivePokemon();
|
|
@@ -53,10 +52,9 @@ export function registerPetTool(server) {
|
|
|
53
52
|
content: [
|
|
54
53
|
{
|
|
55
54
|
type: "text",
|
|
56
|
-
text: "
|
|
55
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can pet them!",
|
|
57
56
|
},
|
|
58
57
|
],
|
|
59
|
-
isError: true,
|
|
60
58
|
};
|
|
61
59
|
}
|
|
62
60
|
const species = POKEMON_BY_ID.get(active.pokemonId);
|
|
@@ -23,10 +23,9 @@ export function registerPokedexTool(server) {
|
|
|
23
23
|
content: [
|
|
24
24
|
{
|
|
25
25
|
type: "text",
|
|
26
|
-
text: "
|
|
26
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start filling your Pokedex!",
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
|
-
isError: true,
|
|
30
29
|
};
|
|
31
30
|
}
|
|
32
31
|
// ── Specific Pokemon lookup ────────────────────────────
|
|
@@ -11,15 +11,23 @@ export function registerRenameTool(server) {
|
|
|
11
11
|
const state = await stateManager.load();
|
|
12
12
|
if (!state || state.party.length === 0) {
|
|
13
13
|
return {
|
|
14
|
-
content: [
|
|
15
|
-
|
|
14
|
+
content: [
|
|
15
|
+
{
|
|
16
|
+
type: "text",
|
|
17
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can give them a nickname!",
|
|
18
|
+
},
|
|
19
|
+
],
|
|
16
20
|
};
|
|
17
21
|
}
|
|
18
22
|
const active = stateManager.getActivePokemon();
|
|
19
23
|
if (!active) {
|
|
20
24
|
return {
|
|
21
|
-
content: [
|
|
22
|
-
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: "text",
|
|
28
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can give them a nickname!",
|
|
29
|
+
},
|
|
30
|
+
],
|
|
23
31
|
};
|
|
24
32
|
}
|
|
25
33
|
const species = POKEMON_BY_ID.get(active.pokemonId);
|
|
@@ -21,10 +21,9 @@ export function registerShowTool(server) {
|
|
|
21
21
|
content: [
|
|
22
22
|
{
|
|
23
23
|
type: "text",
|
|
24
|
-
text: "You don't have a Pokemon yet
|
|
24
|
+
text: "Welcome to Claudemon! You don't have a Pokemon yet. Use /buddy starter to pick your first companion!",
|
|
25
25
|
},
|
|
26
26
|
],
|
|
27
|
-
isError: true,
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
const active = stateManager.getActivePokemon();
|
|
@@ -19,10 +19,9 @@ export function registerStatsTool(server) {
|
|
|
19
19
|
content: [
|
|
20
20
|
{
|
|
21
21
|
type: "text",
|
|
22
|
-
text: "
|
|
22
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start your coding adventure!",
|
|
23
23
|
},
|
|
24
24
|
],
|
|
25
|
-
isError: true,
|
|
26
25
|
};
|
|
27
26
|
}
|
|
28
27
|
const active = stateManager.getActivePokemon();
|
|
@@ -31,10 +30,9 @@ export function registerStatsTool(server) {
|
|
|
31
30
|
content: [
|
|
32
31
|
{
|
|
33
32
|
type: "text",
|
|
34
|
-
text: "
|
|
33
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start your coding adventure!",
|
|
35
34
|
},
|
|
36
35
|
],
|
|
37
|
-
isError: true,
|
|
38
36
|
};
|
|
39
37
|
}
|
|
40
38
|
const species = POKEMON_BY_ID.get(active.pokemonId);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umang-boss/claudemon",
|
|
3
|
-
"version": "1.1
|
|
4
|
-
"description": "Pokemon
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "Pokemon coding companion for Claude Code — Gotta code 'em all!",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/server/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"bunfig.toml"
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
|
+
"prepare": "husky",
|
|
24
25
|
"build": "tsc -p tsconfig.build.json",
|
|
25
26
|
"prepublishOnly": "npm run build",
|
|
26
27
|
"server": "node dist/src/server/index.js",
|
|
@@ -32,7 +33,8 @@
|
|
|
32
33
|
"test": "bun test",
|
|
33
34
|
"typecheck": "tsc --noEmit",
|
|
34
35
|
"format": "prettier --write \"src/**/*.ts\" \"cli/**/*.ts\" \"scripts/**/*.ts\" \"tests/**/*.ts\" --ignore-unknown",
|
|
35
|
-
"format:check": "prettier --check \"src/**/*.ts\" \"cli/**/*.ts\" \"scripts/**/*.ts\" \"tests/**/*.ts\" --ignore-unknown"
|
|
36
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"cli/**/*.ts\" \"scripts/**/*.ts\" \"tests/**/*.ts\" --ignore-unknown",
|
|
37
|
+
"prepare": "husky"
|
|
36
38
|
},
|
|
37
39
|
"dependencies": {
|
|
38
40
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
@@ -40,6 +42,7 @@
|
|
|
40
42
|
},
|
|
41
43
|
"devDependencies": {
|
|
42
44
|
"@types/bun": "latest",
|
|
45
|
+
"husky": "^9.1.7",
|
|
43
46
|
"prettier": "^3.8.2",
|
|
44
47
|
"typescript": "^5.8.3"
|
|
45
48
|
},
|
|
@@ -58,10 +58,9 @@ export function registerAchievementsTool(server: McpServer): void {
|
|
|
58
58
|
content: [
|
|
59
59
|
{
|
|
60
60
|
type: "text" as const,
|
|
61
|
-
text: "
|
|
61
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start earning achievements!",
|
|
62
62
|
},
|
|
63
63
|
],
|
|
64
|
-
isError: true,
|
|
65
64
|
};
|
|
66
65
|
}
|
|
67
66
|
|
|
@@ -59,10 +59,9 @@ export function registerCatchTool(server: McpServer): void {
|
|
|
59
59
|
content: [
|
|
60
60
|
{
|
|
61
61
|
type: "text" as const,
|
|
62
|
-
text: "
|
|
62
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before catching wild Pokemon!",
|
|
63
63
|
},
|
|
64
64
|
],
|
|
65
|
-
isError: true,
|
|
66
65
|
};
|
|
67
66
|
}
|
|
68
67
|
|
|
@@ -98,10 +97,9 @@ export function registerCatchTool(server: McpServer): void {
|
|
|
98
97
|
content: [
|
|
99
98
|
{
|
|
100
99
|
type: "text" as const,
|
|
101
|
-
text: "
|
|
100
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before catching wild Pokemon!",
|
|
102
101
|
},
|
|
103
102
|
],
|
|
104
|
-
isError: true,
|
|
105
103
|
};
|
|
106
104
|
}
|
|
107
105
|
|
|
@@ -51,10 +51,9 @@ export function registerEvolveTool(server: McpServer): void {
|
|
|
51
51
|
content: [
|
|
52
52
|
{
|
|
53
53
|
type: "text" as const,
|
|
54
|
-
text: "
|
|
54
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before evolving!",
|
|
55
55
|
},
|
|
56
56
|
],
|
|
57
|
-
isError: true,
|
|
58
57
|
};
|
|
59
58
|
}
|
|
60
59
|
|
|
@@ -64,10 +63,9 @@ export function registerEvolveTool(server: McpServer): void {
|
|
|
64
63
|
content: [
|
|
65
64
|
{
|
|
66
65
|
type: "text" as const,
|
|
67
|
-
text: "
|
|
66
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion before evolving!",
|
|
68
67
|
},
|
|
69
68
|
],
|
|
70
|
-
isError: true,
|
|
71
69
|
};
|
|
72
70
|
}
|
|
73
71
|
|
|
@@ -24,10 +24,9 @@ export function registerLegendaryTool(server: McpServer): void {
|
|
|
24
24
|
content: [
|
|
25
25
|
{
|
|
26
26
|
type: "text" as const,
|
|
27
|
-
text: "
|
|
27
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and begin your legendary quests!",
|
|
28
28
|
},
|
|
29
29
|
],
|
|
30
|
-
isError: true,
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
32
|
|
|
@@ -28,10 +28,9 @@ export function registerPartyTool(server: McpServer): void {
|
|
|
28
28
|
content: [
|
|
29
29
|
{
|
|
30
30
|
type: "text" as const,
|
|
31
|
-
text: "
|
|
31
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and build your party!",
|
|
32
32
|
},
|
|
33
33
|
],
|
|
34
|
-
isError: true,
|
|
35
34
|
};
|
|
36
35
|
}
|
|
37
36
|
|
package/src/server/tools/pet.ts
CHANGED
|
@@ -52,10 +52,9 @@ export function registerPetTool(server: McpServer): void {
|
|
|
52
52
|
content: [
|
|
53
53
|
{
|
|
54
54
|
type: "text" as const,
|
|
55
|
-
text: "
|
|
55
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can pet them!",
|
|
56
56
|
},
|
|
57
57
|
],
|
|
58
|
-
isError: true,
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
|
|
@@ -65,10 +64,9 @@ export function registerPetTool(server: McpServer): void {
|
|
|
65
64
|
content: [
|
|
66
65
|
{
|
|
67
66
|
type: "text" as const,
|
|
68
|
-
text: "
|
|
67
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can pet them!",
|
|
69
68
|
},
|
|
70
69
|
],
|
|
71
|
-
isError: true,
|
|
72
70
|
};
|
|
73
71
|
}
|
|
74
72
|
|
|
@@ -32,10 +32,9 @@ export function registerPokedexTool(server: McpServer): void {
|
|
|
32
32
|
content: [
|
|
33
33
|
{
|
|
34
34
|
type: "text" as const,
|
|
35
|
-
text: "
|
|
35
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start filling your Pokedex!",
|
|
36
36
|
},
|
|
37
37
|
],
|
|
38
|
-
isError: true,
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
40
|
|
|
@@ -19,16 +19,24 @@ export function registerRenameTool(server: McpServer): void {
|
|
|
19
19
|
|
|
20
20
|
if (!state || state.party.length === 0) {
|
|
21
21
|
return {
|
|
22
|
-
content: [
|
|
23
|
-
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text" as const,
|
|
25
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can give them a nickname!",
|
|
26
|
+
},
|
|
27
|
+
],
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
const active = stateManager.getActivePokemon();
|
|
28
32
|
if (!active) {
|
|
29
33
|
return {
|
|
30
|
-
content: [
|
|
31
|
-
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: "text" as const,
|
|
37
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion -- then you can give them a nickname!",
|
|
38
|
+
},
|
|
39
|
+
],
|
|
32
40
|
};
|
|
33
41
|
}
|
|
34
42
|
|
package/src/server/tools/show.ts
CHANGED
|
@@ -30,10 +30,9 @@ export function registerShowTool(server: McpServer): void {
|
|
|
30
30
|
content: [
|
|
31
31
|
{
|
|
32
32
|
type: "text" as const,
|
|
33
|
-
text: "You don't have a Pokemon yet
|
|
33
|
+
text: "Welcome to Claudemon! You don't have a Pokemon yet. Use /buddy starter to pick your first companion!",
|
|
34
34
|
},
|
|
35
35
|
],
|
|
36
|
-
isError: true,
|
|
37
36
|
};
|
|
38
37
|
}
|
|
39
38
|
|
|
@@ -28,10 +28,9 @@ export function registerStatsTool(server: McpServer): void {
|
|
|
28
28
|
content: [
|
|
29
29
|
{
|
|
30
30
|
type: "text" as const,
|
|
31
|
-
text: "
|
|
31
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start your coding adventure!",
|
|
32
32
|
},
|
|
33
33
|
],
|
|
34
|
-
isError: true,
|
|
35
34
|
};
|
|
36
35
|
}
|
|
37
36
|
|
|
@@ -41,10 +40,9 @@ export function registerStatsTool(server: McpServer): void {
|
|
|
41
40
|
content: [
|
|
42
41
|
{
|
|
43
42
|
type: "text" as const,
|
|
44
|
-
text: "
|
|
43
|
+
text: "Welcome to Claudemon! Use buddy_starter to pick your first companion and start your coding adventure!",
|
|
45
44
|
},
|
|
46
45
|
],
|
|
47
|
-
isError: true,
|
|
48
46
|
};
|
|
49
47
|
}
|
|
50
48
|
|
|
@@ -159,7 +159,7 @@ elif [ -n "$REACTION" ]; then
|
|
|
159
159
|
SPEECH="$REACTION"
|
|
160
160
|
else
|
|
161
161
|
NOW=$(date +%s)
|
|
162
|
-
IDX=$(( (NOW / 30) %
|
|
162
|
+
IDX=$(( (NOW / 30) % 60 ))
|
|
163
163
|
SPEECHES=(
|
|
164
164
|
"*${NAME} looks at your code curiously*"
|
|
165
165
|
""
|
|
@@ -173,6 +173,52 @@ else
|
|
|
173
173
|
""
|
|
174
174
|
"*${NAME} bounces excitedly*"
|
|
175
175
|
""
|
|
176
|
+
"*${NAME} waits patiently*"
|
|
177
|
+
""
|
|
178
|
+
"*${NAME} tilts head at the screen*"
|
|
179
|
+
""
|
|
180
|
+
"*${NAME} chirps encouragingly*"
|
|
181
|
+
""
|
|
182
|
+
"*${NAME} peers at a variable name*"
|
|
183
|
+
""
|
|
184
|
+
"*${NAME} sniffs at a function*"
|
|
185
|
+
""
|
|
186
|
+
"*${NAME} sits on the keyboard*"
|
|
187
|
+
""
|
|
188
|
+
"*${NAME} chases the cursor*"
|
|
189
|
+
""
|
|
190
|
+
"*${NAME} judges your indentation*"
|
|
191
|
+
""
|
|
192
|
+
"*${NAME} found a semicolon!*"
|
|
193
|
+
""
|
|
194
|
+
"*${NAME} debugs alongside you*"
|
|
195
|
+
""
|
|
196
|
+
"*${NAME} spots a typo... maybe*"
|
|
197
|
+
""
|
|
198
|
+
"*${NAME} celebrates a clean build*"
|
|
199
|
+
""
|
|
200
|
+
"*${NAME} is impressed by that refactor*"
|
|
201
|
+
""
|
|
202
|
+
"*${NAME} blinks at the test results*"
|
|
203
|
+
""
|
|
204
|
+
"*${NAME} dreams of evolution*"
|
|
205
|
+
""
|
|
206
|
+
"*${NAME} wants to learn new moves*"
|
|
207
|
+
""
|
|
208
|
+
"*${NAME} is proud of your progress*"
|
|
209
|
+
""
|
|
210
|
+
"*${NAME} snoozes between commits*"
|
|
211
|
+
""
|
|
212
|
+
"*${NAME} practices its type moves*"
|
|
213
|
+
""
|
|
214
|
+
"*${NAME} stares at the linter output*"
|
|
215
|
+
""
|
|
216
|
+
"*${NAME} wonders about that TODO*"
|
|
217
|
+
""
|
|
218
|
+
"*${NAME} approves of that commit msg*"
|
|
219
|
+
""
|
|
220
|
+
"*${NAME} is ready for action!*"
|
|
221
|
+
""
|
|
176
222
|
)
|
|
177
223
|
SPEECH="${SPEECHES[$IDX]}"
|
|
178
224
|
fi
|