@phuc1403/musketeer 0.7.0 → 0.9.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 (84) hide show
  1. package/README.md +49 -49
  2. package/manifest.json +333 -301
  3. package/package.json +1 -1
  4. package/template/.claude/agents/code-reviewer.md +182 -166
  5. package/template/.claude/hooks/git-skill-reminder.cjs +53 -0
  6. package/template/.claude/hooks/inject-design-docs.cjs +13 -13
  7. package/template/.claude/hooks/inject-ubiquitous-language.cjs +52 -0
  8. package/template/.claude/hooks/lib/colors.cjs +180 -122
  9. package/template/.claude/hooks/lib/transcript-parser.cjs +300 -277
  10. package/template/.claude/skills/code-review/SKILL.md +201 -54
  11. package/template/.claude/skills/code-review/references/checklist-workflow.md +96 -0
  12. package/template/.claude/skills/code-review/references/checklists/api.md +52 -52
  13. package/template/.claude/skills/code-review/references/checklists/base.md +100 -100
  14. package/template/.claude/skills/code-review/references/checklists/web-app.md +54 -54
  15. package/template/.claude/skills/code-review/references/code-review-reception.md +113 -0
  16. package/template/.claude/skills/code-review/references/codebase-scan-workflow.md +30 -0
  17. package/template/.claude/skills/code-review/references/edge-case-scouting.md +119 -0
  18. package/template/.claude/skills/code-review/references/input-mode-resolution.md +135 -0
  19. package/template/.claude/skills/code-review/references/parallel-review-workflow.md +76 -0
  20. package/template/.claude/skills/code-review/references/requesting-code-review.md +116 -0
  21. package/template/.claude/skills/code-review/references/spec-compliance-review.md +43 -0
  22. package/template/.claude/skills/code-review/references/task-management-reviews.md +140 -0
  23. package/template/.claude/skills/code-review/references/verification-before-completion.md +139 -0
  24. package/template/.claude/skills/context-map/SKILL.md +1 -1
  25. package/template/.claude/skills/git/SKILL.md +131 -115
  26. package/template/.claude/skills/git/references/branch-management.md +88 -88
  27. package/template/.claude/skills/git/references/commit-standards.md +46 -46
  28. package/template/.claude/skills/git/references/context-efficiency.md +54 -0
  29. package/template/.claude/skills/git/references/gh-cli-guide.md +109 -109
  30. package/template/.claude/skills/git/references/safety-protocols.md +69 -69
  31. package/template/.claude/skills/git/references/workflow-commit.md +58 -58
  32. package/template/.claude/skills/git/references/workflow-merge-pr.md +136 -0
  33. package/template/.claude/skills/git/references/workflow-merge.md +48 -48
  34. package/template/.claude/skills/git/references/workflow-pr.md +58 -58
  35. package/template/.claude/skills/git/references/workflow-push.md +52 -52
  36. package/template/.claude/skills/knowledge-crunching/SKILL.md +56 -92
  37. package/template/.claude/skills/knowledge-crunching/assets/ubiquitous-language.template.md +3 -0
  38. package/template/.claude/skills/skill-creator/LICENSE.txt +201 -201
  39. package/template/.claude/skills/skill-creator/SKILL.md +154 -149
  40. package/template/.claude/skills/skill-creator/agents/analyzer.md +274 -274
  41. package/template/.claude/skills/skill-creator/agents/comparator.md +202 -202
  42. package/template/.claude/skills/skill-creator/agents/grader.md +223 -223
  43. package/template/.claude/skills/skill-creator/assets/eval_review.html +146 -146
  44. package/template/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -471
  45. package/template/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -1325
  46. package/template/.claude/skills/skill-creator/references/benchmark-optimization-guide.md +86 -86
  47. package/template/.claude/skills/skill-creator/references/distribution-guide.md +79 -79
  48. package/template/.claude/skills/skill-creator/references/eval-infrastructure-guide.md +129 -129
  49. package/template/.claude/skills/skill-creator/references/eval-schemas.md +121 -121
  50. package/template/.claude/skills/skill-creator/references/mcp-skills-integration.md +71 -71
  51. package/template/.claude/skills/skill-creator/references/metadata-quality-criteria.md +94 -94
  52. package/template/.claude/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -104
  53. package/template/.claude/skills/skill-creator/references/plugin-marketplace-overview.md +89 -89
  54. package/template/.claude/skills/skill-creator/references/plugin-marketplace-schema.md +93 -93
  55. package/template/.claude/skills/skill-creator/references/plugin-marketplace-sources.md +103 -103
  56. package/template/.claude/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -76
  57. package/template/.claude/skills/skill-creator/references/script-quality-criteria.md +106 -106
  58. package/template/.claude/skills/skill-creator/references/skill-anatomy-and-requirements.md +77 -77
  59. package/template/.claude/skills/skill-creator/references/skill-creation-workflow.md +152 -151
  60. package/template/.claude/skills/skill-creator/references/skill-design-patterns.md +75 -75
  61. package/template/.claude/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -102
  62. package/template/.claude/skills/skill-creator/references/structure-organization-criteria.md +114 -114
  63. package/template/.claude/skills/skill-creator/references/testing-and-iteration.md +78 -78
  64. package/template/.claude/skills/skill-creator/references/token-efficiency-criteria.md +74 -74
  65. package/template/.claude/skills/skill-creator/references/troubleshooting-guide.md +81 -81
  66. package/template/.claude/skills/skill-creator/references/validation-checklist.md +83 -83
  67. package/template/.claude/skills/skill-creator/references/writing-effective-instructions.md +88 -88
  68. package/template/.claude/skills/skill-creator/references/yaml-frontmatter-reference.md +92 -92
  69. package/template/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -401
  70. package/template/.claude/skills/skill-creator/scripts/encoding_utils.py +36 -36
  71. package/template/.claude/skills/skill-creator/scripts/generate_report.py +326 -326
  72. package/template/.claude/skills/skill-creator/scripts/improve_description.py +248 -248
  73. package/template/.claude/skills/skill-creator/scripts/init_skill.py +360 -360
  74. package/template/.claude/skills/skill-creator/scripts/package_skill.py +143 -143
  75. package/template/.claude/skills/skill-creator/scripts/quick_validate.py +110 -110
  76. package/template/.claude/skills/skill-creator/scripts/run_eval.py +310 -310
  77. package/template/.claude/skills/skill-creator/scripts/run_loop.py +332 -332
  78. package/template/.claude/skills/skill-creator/scripts/utils.py +47 -47
  79. package/template/.claude/statusline.cjs +0 -0
  80. package/template/.claude/hooks/inject-context.cjs +0 -52
  81. package/template/.claude/skills/code-review/references/adversarial-review.md +0 -223
  82. package/template/.claude/skills/knowledge-crunching/assets/context.template.md +0 -59
  83. package/template/.claude/skills/knowledge-crunching/references/crunching-dialogue.md +0 -113
  84. /package/template/.claude/hooks/{usage-context-awareness.cjs → usage-quota-cache-refresh.cjs} +0 -0
@@ -1,122 +1,180 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
-
4
- /**
5
- * ANSI Terminal Colors - Cross-platform color support for statusline
6
- * Supports NO_COLOR, FORCE_COLOR, COLORTERM auto-detection
7
- * @module colors
8
- */
9
-
10
- // ANSI escape codes (8-color basic palette)
11
- const RESET = '\x1b[0m';
12
- const DIM = '\x1b[2m';
13
- const RED = '\x1b[31m';
14
- const GREEN = '\x1b[32m';
15
- const YELLOW = '\x1b[33m';
16
- const MAGENTA = '\x1b[35m';
17
- const CYAN = '\x1b[36m';
18
-
19
- // Detect color support at module load (cached)
20
- // Claude Code statusline runs via pipe but output displays in TTY - default to true
21
- const shouldUseColor = (() => {
22
- if (process.env.NO_COLOR) return false;
23
- if (process.env.FORCE_COLOR) return true;
24
- // Default true for statusline context (Claude Code handles TTY display)
25
- return true;
26
- })();
27
-
28
- // Mutable override (set by statusline.cjs from config)
29
- // null = use env detection, true/false = explicit override
30
- let _colorOverride = null;
31
-
32
- /**
33
- * Set explicit color enable/disable override (from config)
34
- * Pass null to revert to env-var detection
35
- * @param {boolean} enabled
36
- */
37
- function setColorEnabled(enabled) {
38
- _colorOverride = enabled;
39
- }
40
-
41
- /**
42
- * Determine if colors should be rendered, respecting env vars and config override
43
- * NO_COLOR env var always takes precedence over config override
44
- * @returns {boolean}
45
- */
46
- function isColorEnabled() {
47
- // NO_COLOR env var is a hard override that always wins
48
- if (process.env.NO_COLOR) return false;
49
- if (_colorOverride !== null) return _colorOverride;
50
- return shouldUseColor;
51
- }
52
-
53
- // Detect 256-color support via COLORTERM
54
- const has256Color = (() => {
55
- const ct = process.env.COLORTERM;
56
- return ct === 'truecolor' || ct === '24bit' || ct === '256color';
57
- })();
58
-
59
- /**
60
- * Wrap text with ANSI color code
61
- * @param {string} text - Text to colorize
62
- * @param {string} code - ANSI escape code
63
- * @returns {string} Colorized text or plain text if colors disabled
64
- */
65
- function colorize(text, code) {
66
- if (!isColorEnabled()) return String(text);
67
- return `${code}${text}${RESET}`;
68
- }
69
-
70
- function green(text) { return colorize(text, GREEN); }
71
- function yellow(text) { return colorize(text, YELLOW); }
72
- function red(text) { return colorize(text, RED); }
73
- function cyan(text) { return colorize(text, CYAN); }
74
- function magenta(text) { return colorize(text, MAGENTA); }
75
- function dim(text) { return colorize(text, DIM); }
76
-
77
- /**
78
- * Get color code based on context percentage threshold
79
- * @param {number} percent - Context usage percentage (0-100)
80
- * @returns {string} ANSI color code
81
- */
82
- function getContextColor(percent) {
83
- if (percent >= 85) return RED;
84
- if (percent >= 70) return YELLOW;
85
- return GREEN;
86
- }
87
-
88
- /**
89
- * Generate colored progress bar for context window
90
- * Uses ▰▱ characters (smooth horizontal rectangles) for consistent rendering
91
- * @param {number} percent - Usage percentage (0-100)
92
- * @param {number} width - Bar width in characters (default 12)
93
- * @returns {string} Unicode progress bar with threshold-based colors
94
- */
95
- function coloredBar(percent, width = 12) {
96
- const clamped = Math.max(0, Math.min(100, percent));
97
- const filled = Math.round((clamped / 100) * width);
98
- const empty = width - filled;
99
-
100
- if (!isColorEnabled()) {
101
- return '▰'.repeat(filled) + '▱'.repeat(empty);
102
- }
103
-
104
- const color = getContextColor(percent);
105
- return `${color}${'▰'.repeat(filled)}${DIM}${'▱'.repeat(empty)}${RESET}`;
106
- }
107
-
108
- module.exports = {
109
- RESET,
110
- green,
111
- yellow,
112
- red,
113
- cyan,
114
- magenta,
115
- dim,
116
- getContextColor,
117
- coloredBar,
118
- shouldUseColor,
119
- has256Color,
120
- setColorEnabled,
121
- isColorEnabled
122
- };
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * ANSI Terminal Colors - Cross-platform color support for statusline
6
+ * Supports NO_COLOR, FORCE_COLOR, COLORTERM auto-detection
7
+ * @module colors
8
+ */
9
+
10
+ // ANSI escape codes (standard + bright palette)
11
+ const RESET = '\x1b[0m';
12
+ const DIM = '\x1b[2m';
13
+ const CLEAR_INTENSITY = '\x1b[22m';
14
+ const CLEAR_FOREGROUND = '\x1b[39m';
15
+ const RED = '\x1b[31m';
16
+ const GREEN = '\x1b[32m';
17
+ const YELLOW = '\x1b[33m';
18
+ const BLUE = '\x1b[34m';
19
+ const MAGENTA = '\x1b[35m';
20
+ const CYAN = '\x1b[36m';
21
+ const BRIGHT_RED = '\x1b[91m';
22
+ const BRIGHT_GREEN = '\x1b[92m';
23
+ const BRIGHT_YELLOW = '\x1b[93m';
24
+ const BRIGHT_BLUE = '\x1b[94m';
25
+ const BRIGHT_MAGENTA = '\x1b[95m';
26
+ const BRIGHT_CYAN = '\x1b[96m';
27
+ const BRIGHT_WHITE = '\x1b[97m';
28
+ const STABLE_PREFIX = `${CLEAR_INTENSITY}${CLEAR_FOREGROUND}`;
29
+ const STABLE_SUFFIX = `${RESET}${CLEAR_INTENSITY}${CLEAR_FOREGROUND}`;
30
+ const COLOR_CODES = {
31
+ green: GREEN,
32
+ yellow: YELLOW,
33
+ red: RED,
34
+ blue: BLUE,
35
+ cyan: CYAN,
36
+ magenta: MAGENTA,
37
+ dim: DIM,
38
+ brightRed: BRIGHT_RED,
39
+ brightGreen: BRIGHT_GREEN,
40
+ brightYellow: BRIGHT_YELLOW,
41
+ brightBlue: BRIGHT_BLUE,
42
+ brightMagenta: BRIGHT_MAGENTA,
43
+ brightCyan: BRIGHT_CYAN,
44
+ brightWhite: BRIGHT_WHITE,
45
+ };
46
+
47
+ // Detect color support at module load (cached)
48
+ // Claude Code statusline runs via pipe but output displays in TTY - default to true
49
+ const shouldUseColor = (() => {
50
+ if (process.env.NO_COLOR) return false;
51
+ if (process.env.FORCE_COLOR) return true;
52
+ // Default true for statusline context (Claude Code handles TTY display)
53
+ return true;
54
+ })();
55
+
56
+ // Mutable override (set by statusline.cjs from config)
57
+ // null = use env detection, true/false = explicit override
58
+ let _colorOverride = null;
59
+
60
+ /**
61
+ * Set explicit color enable/disable override (from config)
62
+ * Pass null to revert to env-var detection
63
+ * @param {boolean} enabled
64
+ */
65
+ function setColorEnabled(enabled) {
66
+ _colorOverride = enabled;
67
+ }
68
+
69
+ /**
70
+ * Determine if colors should be rendered, respecting env vars and config override
71
+ * NO_COLOR env var always takes precedence over config override
72
+ * @returns {boolean}
73
+ */
74
+ function isColorEnabled() {
75
+ // NO_COLOR env var is a hard override that always wins
76
+ if (process.env.NO_COLOR) return false;
77
+ if (_colorOverride !== null) return _colorOverride;
78
+ return shouldUseColor;
79
+ }
80
+
81
+ // Detect 256-color support via COLORTERM
82
+ const has256Color = (() => {
83
+ const ct = process.env.COLORTERM;
84
+ return ct === 'truecolor' || ct === '24bit' || ct === '256color';
85
+ })();
86
+
87
+ /**
88
+ * Wrap text with ANSI color code
89
+ * @param {string} text - Text to colorize
90
+ * @param {string} code - ANSI escape code
91
+ * @returns {string} Colorized text or plain text if colors disabled
92
+ */
93
+ function colorize(text, code) {
94
+ if (!isColorEnabled() || !code) return String(text);
95
+ return `${STABLE_PREFIX}${code}${text}${STABLE_SUFFIX}`;
96
+ }
97
+
98
+ function green(text) { return colorize(text, GREEN); }
99
+ function yellow(text) { return colorize(text, YELLOW); }
100
+ function red(text) { return colorize(text, RED); }
101
+ function blue(text) { return colorize(text, BLUE); }
102
+ function cyan(text) { return colorize(text, CYAN); }
103
+ function magenta(text) { return colorize(text, MAGENTA); }
104
+ function dim(text) { return colorize(text, DIM); }
105
+ function brightRed(text) { return colorize(text, BRIGHT_RED); }
106
+ function brightGreen(text) { return colorize(text, BRIGHT_GREEN); }
107
+ function brightYellow(text) { return colorize(text, BRIGHT_YELLOW); }
108
+ function brightBlue(text) { return colorize(text, BRIGHT_BLUE); }
109
+ function brightMagenta(text) { return colorize(text, BRIGHT_MAGENTA); }
110
+ function brightCyan(text) { return colorize(text, BRIGHT_CYAN); }
111
+ function brightWhite(text) { return colorize(text, BRIGHT_WHITE); }
112
+
113
+ /**
114
+ * Get color code based on context percentage threshold
115
+ * @param {number} percent - Context usage percentage (0-100)
116
+ * @returns {string} ANSI color code
117
+ */
118
+ function resolveColorCode(colorName) {
119
+ if (colorName === 'white' || colorName === 'none' || colorName === 'default') return '';
120
+ return COLOR_CODES[colorName] || '';
121
+ }
122
+
123
+ function getContextColor(percent, palette = {}) {
124
+ const high = resolveColorCode(palette.high || 'red') || RED;
125
+ const mid = resolveColorCode(palette.mid || 'yellow') || YELLOW;
126
+ const low = resolveColorCode(palette.low || 'green') || GREEN;
127
+ if (percent >= 85) return high;
128
+ if (percent >= 70) return mid;
129
+ return low;
130
+ }
131
+
132
+ /**
133
+ * Generate colored progress bar for context window
134
+ * Uses ▰▱ characters (smooth horizontal rectangles) for consistent rendering
135
+ * @param {number} percent - Usage percentage (0-100)
136
+ * @param {number} width - Bar width in characters (default 12)
137
+ * @returns {string} Unicode progress bar with threshold-based colors
138
+ */
139
+ function coloredBar(percent, width = 12, palette = {}) {
140
+ const clamped = Math.max(0, Math.min(100, percent));
141
+ const filled = Math.round((clamped / 100) * width);
142
+ const empty = width - filled;
143
+
144
+ if (!isColorEnabled()) {
145
+ return '▰'.repeat(filled) + '▱'.repeat(empty);
146
+ }
147
+
148
+ const color = getContextColor(percent, palette);
149
+ return `${STABLE_PREFIX}${color}${'▰'.repeat(filled)}${STABLE_PREFIX}${DIM}${'▱'.repeat(empty)}${STABLE_SUFFIX}`;
150
+ }
151
+
152
+ /**
153
+ * Resolve a color name from theme config to its color function.
154
+ * Used by section renderers to apply theme-configurable colors.
155
+ * Falls back to identity function (no color) for unknown names.
156
+ * @param {string} colorName - Color name (e.g. "green", "yellow", "dim")
157
+ * @returns {Function} Color function (string) => string
158
+ */
159
+ function resolveColor(colorName) {
160
+ const code = resolveColorCode(colorName);
161
+ return code ? (s) => colorize(s, code) : (s) => String(s);
162
+ }
163
+
164
+ module.exports = {
165
+ RESET,
166
+ green,
167
+ yellow,
168
+ red,
169
+ cyan,
170
+ magenta,
171
+ dim,
172
+ getContextColor,
173
+ coloredBar,
174
+ shouldUseColor,
175
+ has256Color,
176
+ setColorEnabled,
177
+ isColorEnabled,
178
+ resolveColorCode,
179
+ resolveColor,
180
+ };