oh-my-claude-sisyphus 3.0.11 → 3.2.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 (231) hide show
  1. package/README.md +26 -2
  2. package/agents/build-fixer-low.md +83 -0
  3. package/agents/build-fixer.md +160 -0
  4. package/agents/code-reviewer-low.md +82 -0
  5. package/agents/code-reviewer.md +115 -0
  6. package/agents/planner.md +83 -0
  7. package/agents/security-reviewer-low.md +83 -0
  8. package/agents/security-reviewer.md +186 -0
  9. package/agents/tdd-guide-low.md +81 -0
  10. package/agents/tdd-guide.md +165 -0
  11. package/commands/autopilot.md +131 -0
  12. package/commands/build-fix.md +55 -0
  13. package/commands/cancel-autopilot.md +35 -0
  14. package/commands/code-review.md +47 -0
  15. package/commands/ralph.md +9 -0
  16. package/commands/security-review.md +47 -0
  17. package/commands/tdd.md +54 -0
  18. package/dist/__tests__/hud-agents.test.js +13 -10
  19. package/dist/__tests__/hud-agents.test.js.map +1 -1
  20. package/dist/__tests__/installer.test.js +1 -1
  21. package/dist/__tests__/skills.test.js +8 -4
  22. package/dist/__tests__/skills.test.js.map +1 -1
  23. package/dist/agents/definitions.d.ts +32 -0
  24. package/dist/agents/definitions.d.ts.map +1 -1
  25. package/dist/agents/definitions.js +93 -1
  26. package/dist/agents/definitions.js.map +1 -1
  27. package/dist/agents/delegation-validator.d.ts +31 -0
  28. package/dist/agents/delegation-validator.d.ts.map +1 -0
  29. package/dist/agents/delegation-validator.js +75 -0
  30. package/dist/agents/delegation-validator.js.map +1 -0
  31. package/dist/agents/prompt-generator.d.ts +95 -0
  32. package/dist/agents/prompt-generator.d.ts.map +1 -0
  33. package/dist/agents/prompt-generator.js +140 -0
  34. package/dist/agents/prompt-generator.js.map +1 -0
  35. package/dist/agents/prompt-sections/index.d.ts +44 -0
  36. package/dist/agents/prompt-sections/index.d.ts.map +1 -0
  37. package/dist/agents/prompt-sections/index.js +194 -0
  38. package/dist/agents/prompt-sections/index.js.map +1 -0
  39. package/dist/agents/types.d.ts +2 -0
  40. package/dist/agents/types.d.ts.map +1 -1
  41. package/dist/agents/types.js.map +1 -1
  42. package/dist/features/background-agent/manager.d.ts +10 -1
  43. package/dist/features/background-agent/manager.d.ts.map +1 -1
  44. package/dist/features/background-agent/manager.js +79 -11
  45. package/dist/features/background-agent/manager.js.map +1 -1
  46. package/dist/features/background-agent/types.d.ts +30 -1
  47. package/dist/features/background-agent/types.d.ts.map +1 -1
  48. package/dist/features/delegation-categories/index.d.ts +116 -0
  49. package/dist/features/delegation-categories/index.d.ts.map +1 -0
  50. package/dist/features/delegation-categories/index.js +287 -0
  51. package/dist/features/delegation-categories/index.js.map +1 -0
  52. package/dist/features/delegation-categories/test-categories.d.ts +7 -0
  53. package/dist/features/delegation-categories/test-categories.d.ts.map +1 -0
  54. package/dist/features/delegation-categories/test-categories.js +88 -0
  55. package/dist/features/delegation-categories/test-categories.js.map +1 -0
  56. package/dist/features/delegation-categories/types.d.ts +51 -0
  57. package/dist/features/delegation-categories/types.d.ts.map +1 -0
  58. package/dist/features/delegation-categories/types.js +8 -0
  59. package/dist/features/delegation-categories/types.js.map +1 -0
  60. package/dist/features/index.d.ts +2 -0
  61. package/dist/features/index.d.ts.map +1 -1
  62. package/dist/features/index.js +10 -0
  63. package/dist/features/index.js.map +1 -1
  64. package/dist/features/model-routing/prompts/index.d.ts +2 -0
  65. package/dist/features/model-routing/prompts/index.d.ts.map +1 -1
  66. package/dist/features/model-routing/prompts/index.js +6 -0
  67. package/dist/features/model-routing/prompts/index.js.map +1 -1
  68. package/dist/features/notepad-wisdom/extractor.d.ts +30 -0
  69. package/dist/features/notepad-wisdom/extractor.d.ts.map +1 -0
  70. package/dist/features/notepad-wisdom/extractor.js +68 -0
  71. package/dist/features/notepad-wisdom/extractor.js.map +1 -0
  72. package/dist/features/notepad-wisdom/index.d.ts +39 -0
  73. package/dist/features/notepad-wisdom/index.d.ts.map +1 -0
  74. package/dist/features/notepad-wisdom/index.js +169 -0
  75. package/dist/features/notepad-wisdom/index.js.map +1 -0
  76. package/dist/features/notepad-wisdom/types.d.ts +18 -0
  77. package/dist/features/notepad-wisdom/types.d.ts.map +1 -0
  78. package/dist/features/notepad-wisdom/types.js +7 -0
  79. package/dist/features/notepad-wisdom/types.js.map +1 -0
  80. package/dist/hooks/autopilot/__tests__/cancel.test.d.ts +2 -0
  81. package/dist/hooks/autopilot/__tests__/cancel.test.d.ts.map +1 -0
  82. package/dist/hooks/autopilot/__tests__/cancel.test.js +397 -0
  83. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -0
  84. package/dist/hooks/autopilot/__tests__/prompts.test.d.ts +2 -0
  85. package/dist/hooks/autopilot/__tests__/prompts.test.d.ts.map +1 -0
  86. package/dist/hooks/autopilot/__tests__/prompts.test.js +74 -0
  87. package/dist/hooks/autopilot/__tests__/prompts.test.js.map +1 -0
  88. package/dist/hooks/autopilot/__tests__/state.test.d.ts +2 -0
  89. package/dist/hooks/autopilot/__tests__/state.test.d.ts.map +1 -0
  90. package/dist/hooks/autopilot/__tests__/state.test.js +75 -0
  91. package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -0
  92. package/dist/hooks/autopilot/__tests__/summary.test.d.ts +2 -0
  93. package/dist/hooks/autopilot/__tests__/summary.test.d.ts.map +1 -0
  94. package/dist/hooks/autopilot/__tests__/summary.test.js +289 -0
  95. package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -0
  96. package/dist/hooks/autopilot/__tests__/transition.test.d.ts +2 -0
  97. package/dist/hooks/autopilot/__tests__/transition.test.d.ts.map +1 -0
  98. package/dist/hooks/autopilot/__tests__/transition.test.js +59 -0
  99. package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -0
  100. package/dist/hooks/autopilot/__tests__/validation.test.d.ts +2 -0
  101. package/dist/hooks/autopilot/__tests__/validation.test.d.ts.map +1 -0
  102. package/dist/hooks/autopilot/__tests__/validation.test.js +450 -0
  103. package/dist/hooks/autopilot/__tests__/validation.test.js.map +1 -0
  104. package/dist/hooks/autopilot/cancel.d.ts +42 -0
  105. package/dist/hooks/autopilot/cancel.d.ts.map +1 -0
  106. package/dist/hooks/autopilot/cancel.js +156 -0
  107. package/dist/hooks/autopilot/cancel.js.map +1 -0
  108. package/dist/hooks/autopilot/index.d.ts +15 -0
  109. package/dist/hooks/autopilot/index.d.ts.map +1 -0
  110. package/dist/hooks/autopilot/index.js +20 -0
  111. package/dist/hooks/autopilot/index.js.map +1 -0
  112. package/dist/hooks/autopilot/prompts.d.ts +37 -0
  113. package/dist/hooks/autopilot/prompts.d.ts.map +1 -0
  114. package/dist/hooks/autopilot/prompts.js +353 -0
  115. package/dist/hooks/autopilot/prompts.js.map +1 -0
  116. package/dist/hooks/autopilot/state.d.ts +67 -0
  117. package/dist/hooks/autopilot/state.d.ts.map +1 -0
  118. package/dist/hooks/autopilot/state.js +244 -0
  119. package/dist/hooks/autopilot/state.js.map +1 -0
  120. package/dist/hooks/autopilot/summary.d.ts +27 -0
  121. package/dist/hooks/autopilot/summary.d.ts.map +1 -0
  122. package/dist/hooks/autopilot/summary.js +160 -0
  123. package/dist/hooks/autopilot/summary.js.map +1 -0
  124. package/dist/hooks/autopilot/transition.d.ts +39 -0
  125. package/dist/hooks/autopilot/transition.d.ts.map +1 -0
  126. package/dist/hooks/autopilot/transition.js +216 -0
  127. package/dist/hooks/autopilot/transition.js.map +1 -0
  128. package/dist/hooks/autopilot/types.d.ts +211 -0
  129. package/dist/hooks/autopilot/types.d.ts.map +1 -0
  130. package/dist/hooks/autopilot/types.js +30 -0
  131. package/dist/hooks/autopilot/types.js.map +1 -0
  132. package/dist/hooks/autopilot/validation.d.ts +43 -0
  133. package/dist/hooks/autopilot/validation.d.ts.map +1 -0
  134. package/dist/hooks/autopilot/validation.js +191 -0
  135. package/dist/hooks/autopilot/validation.js.map +1 -0
  136. package/dist/hooks/bridge.d.ts +1 -1
  137. package/dist/hooks/bridge.d.ts.map +1 -1
  138. package/dist/hooks/bridge.js +79 -6
  139. package/dist/hooks/bridge.js.map +1 -1
  140. package/dist/hooks/index.d.ts +1 -0
  141. package/dist/hooks/index.d.ts.map +1 -1
  142. package/dist/hooks/index.js +2 -0
  143. package/dist/hooks/index.js.map +1 -1
  144. package/dist/hooks/keyword-detector/index.d.ts +1 -1
  145. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  146. package/dist/hooks/keyword-detector/index.js +39 -2
  147. package/dist/hooks/keyword-detector/index.js.map +1 -1
  148. package/dist/hooks/persistent-mode/index.d.ts +2 -1
  149. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  150. package/dist/hooks/persistent-mode/index.js +13 -3
  151. package/dist/hooks/persistent-mode/index.js.map +1 -1
  152. package/dist/hooks/ralph-loop/index.d.ts +0 -20
  153. package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
  154. package/dist/hooks/ralph-loop/index.js +6 -40
  155. package/dist/hooks/ralph-loop/index.js.map +1 -1
  156. package/dist/hooks/todo-continuation/index.d.ts +31 -1
  157. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  158. package/dist/hooks/todo-continuation/index.js +38 -1
  159. package/dist/hooks/todo-continuation/index.js.map +1 -1
  160. package/dist/hooks/ultrawork-state/index.d.ts +3 -1
  161. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -1
  162. package/dist/hooks/ultrawork-state/index.js +3 -2
  163. package/dist/hooks/ultrawork-state/index.js.map +1 -1
  164. package/dist/hud/elements/autopilot.d.ts +29 -0
  165. package/dist/hud/elements/autopilot.d.ts.map +1 -0
  166. package/dist/hud/elements/autopilot.js +97 -0
  167. package/dist/hud/elements/autopilot.js.map +1 -0
  168. package/dist/hud/elements/index.d.ts +1 -0
  169. package/dist/hud/elements/index.d.ts.map +1 -1
  170. package/dist/hud/elements/index.js +1 -0
  171. package/dist/hud/elements/index.js.map +1 -1
  172. package/dist/hud/elements/limits.d.ts +1 -1
  173. package/dist/hud/elements/limits.d.ts.map +1 -1
  174. package/dist/hud/elements/limits.js +35 -2
  175. package/dist/hud/elements/limits.js.map +1 -1
  176. package/dist/hud/elements/todos.d.ts +1 -1
  177. package/dist/hud/elements/todos.js +3 -3
  178. package/dist/hud/elements/todos.js.map +1 -1
  179. package/dist/hud/render.js +6 -6
  180. package/dist/hud/render.js.map +1 -1
  181. package/dist/hud/types.d.ts +4 -0
  182. package/dist/hud/types.d.ts.map +1 -1
  183. package/dist/hud/types.js.map +1 -1
  184. package/dist/hud/usage-api.d.ts.map +1 -1
  185. package/dist/hud/usage-api.js +32 -6
  186. package/dist/hud/usage-api.js.map +1 -1
  187. package/dist/installer/hooks.d.ts +5 -0
  188. package/dist/installer/hooks.d.ts.map +1 -1
  189. package/dist/installer/hooks.js +20 -0
  190. package/dist/installer/hooks.js.map +1 -1
  191. package/dist/installer/index.d.ts +1 -1
  192. package/dist/installer/index.js +2 -2
  193. package/dist/installer/index.js.map +1 -1
  194. package/dist/tools/diagnostics/index.d.ts +29 -0
  195. package/dist/tools/diagnostics/index.d.ts.map +1 -0
  196. package/dist/tools/diagnostics/index.js +118 -0
  197. package/dist/tools/diagnostics/index.js.map +1 -0
  198. package/dist/tools/diagnostics/lsp-aggregator.d.ts +26 -0
  199. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -0
  200. package/dist/tools/diagnostics/lsp-aggregator.js +99 -0
  201. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -0
  202. package/dist/tools/diagnostics/tsc-runner.d.ts +26 -0
  203. package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -0
  204. package/dist/tools/diagnostics/tsc-runner.js +70 -0
  205. package/dist/tools/diagnostics/tsc-runner.js.map +1 -0
  206. package/dist/tools/lsp-tools.d.ts +10 -0
  207. package/dist/tools/lsp-tools.d.ts.map +1 -1
  208. package/dist/tools/lsp-tools.js +43 -1
  209. package/dist/tools/lsp-tools.js.map +1 -1
  210. package/dist/tools/resume-session.d.ts +63 -0
  211. package/dist/tools/resume-session.d.ts.map +1 -0
  212. package/dist/tools/resume-session.js +106 -0
  213. package/dist/tools/resume-session.js.map +1 -0
  214. package/dist/utils/__tests__/paths.test.d.ts +2 -0
  215. package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
  216. package/dist/utils/__tests__/paths.test.js +88 -0
  217. package/dist/utils/__tests__/paths.test.js.map +1 -0
  218. package/dist/utils/paths.d.ts +32 -0
  219. package/dist/utils/paths.d.ts.map +1 -0
  220. package/dist/utils/paths.js +55 -0
  221. package/dist/utils/paths.js.map +1 -0
  222. package/docs/ARCHITECTURE.md +80 -1
  223. package/docs/CLAUDE.md +97 -3
  224. package/docs/FEATURES.md +2167 -0
  225. package/docs/FULL-README.md +69 -1
  226. package/package.json +1 -1
  227. package/skills/autopilot/SKILL.md +168 -0
  228. package/skills/cancel-autopilot/SKILL.md +53 -0
  229. package/skills/omc-setup/SKILL.md +95 -0
  230. package/skills/ralph/SKILL.md +9 -0
  231. package/skills/ultrawork/SKILL.md +9 -5
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Resume Session Tool
3
+ *
4
+ * Wrapper tool to resume a previous background agent session.
5
+ * Returns context for the orchestrator to include in the next Task delegation.
6
+ *
7
+ * Since Claude Code's native Task tool cannot be extended, this tool provides
8
+ * a convenient way to retrieve session context and build continuation prompts.
9
+ */
10
+ import { getBackgroundManager } from '../features/background-agent/manager.js';
11
+ /**
12
+ * Resume a background agent session
13
+ *
14
+ * This tool retrieves the context from a previous background session and
15
+ * prepares a continuation prompt that can be used when delegating to the
16
+ * Task tool again.
17
+ *
18
+ * @param input - Session ID to resume
19
+ * @returns Resume context or error
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const result = resumeSession({ sessionId: 'ses_abc123' });
24
+ * if (result.success && result.context) {
25
+ * // Use result.context.continuationPrompt in your next Task delegation
26
+ * Task({
27
+ * subagent_type: "oh-my-claudecode:executor",
28
+ * model: "sonnet",
29
+ * prompt: result.context.continuationPrompt
30
+ * });
31
+ * }
32
+ * ```
33
+ */
34
+ export function resumeSession(input) {
35
+ try {
36
+ const manager = getBackgroundManager();
37
+ const context = manager.getResumeContext(input.sessionId);
38
+ if (!context) {
39
+ return {
40
+ success: false,
41
+ error: `Session not found: ${input.sessionId}`,
42
+ };
43
+ }
44
+ // Build continuation prompt
45
+ const continuationPrompt = buildContinuationPrompt(context);
46
+ return {
47
+ success: true,
48
+ context: {
49
+ previousPrompt: context.previousPrompt,
50
+ toolCallCount: context.toolCallCount,
51
+ lastToolUsed: context.lastToolUsed,
52
+ lastOutputSummary: context.lastOutputSummary,
53
+ continuationPrompt,
54
+ },
55
+ };
56
+ }
57
+ catch (error) {
58
+ return {
59
+ success: false,
60
+ error: error instanceof Error ? error.message : String(error),
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * Build a formatted continuation prompt from resume context
66
+ *
67
+ * @param context - Resume context from background manager
68
+ * @returns Formatted prompt for next Task delegation
69
+ */
70
+ function buildContinuationPrompt(context) {
71
+ const parts = [];
72
+ // Add session context header
73
+ parts.push('# Resuming Background Session');
74
+ parts.push('');
75
+ parts.push(`Session ID: ${context.sessionId}`);
76
+ parts.push(`Started: ${context.startedAt.toISOString()}`);
77
+ parts.push(`Last Activity: ${context.lastActivityAt.toISOString()}`);
78
+ parts.push('');
79
+ // Add original task
80
+ parts.push('## Original Task');
81
+ parts.push('');
82
+ parts.push(context.previousPrompt);
83
+ parts.push('');
84
+ // Add progress information
85
+ parts.push('## Progress So Far');
86
+ parts.push('');
87
+ parts.push(`Tool calls executed: ${context.toolCallCount}`);
88
+ if (context.lastToolUsed) {
89
+ parts.push(`Last tool used: ${context.lastToolUsed}`);
90
+ }
91
+ if (context.lastOutputSummary) {
92
+ parts.push('');
93
+ parts.push('Last output:');
94
+ parts.push('```');
95
+ parts.push(context.lastOutputSummary);
96
+ parts.push('```');
97
+ }
98
+ parts.push('');
99
+ // Add continuation instruction
100
+ parts.push('## Instructions');
101
+ parts.push('');
102
+ parts.push('Continue working on the task from where you left off.');
103
+ parts.push('Review the progress above and complete any remaining work.');
104
+ return parts.join('\n');
105
+ }
106
+ //# sourceMappingURL=resume-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-session.js","sourceRoot":"","sources":["../../src/tools/resume-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paths.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/paths.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ import { describe, it, expect, afterEach } from 'vitest';
2
+ import { toForwardSlash, toShellPath, getDataDir, getConfigDir } from '../paths.js';
3
+ describe('cross-platform path utilities', () => {
4
+ describe('toForwardSlash', () => {
5
+ it('should convert backslashes to forward slashes', () => {
6
+ expect(toForwardSlash('C:\\Users\\test\\.claude')).toBe('C:/Users/test/.claude');
7
+ });
8
+ it('should leave forward slashes unchanged', () => {
9
+ expect(toForwardSlash('/home/user/.claude')).toBe('/home/user/.claude');
10
+ });
11
+ it('should handle mixed slashes', () => {
12
+ expect(toForwardSlash('C:\\Users/test\\.claude')).toBe('C:/Users/test/.claude');
13
+ });
14
+ it('should handle empty string', () => {
15
+ expect(toForwardSlash('')).toBe('');
16
+ });
17
+ it('should handle UNC paths', () => {
18
+ expect(toForwardSlash('\\\\server\\share\\path')).toBe('//server/share/path');
19
+ });
20
+ });
21
+ describe('toShellPath', () => {
22
+ it('should convert backslashes to forward slashes', () => {
23
+ expect(toShellPath('C:\\Users\\test')).toBe('C:/Users/test');
24
+ });
25
+ it('should quote paths with spaces', () => {
26
+ expect(toShellPath('/path/with spaces/file')).toBe('"/path/with spaces/file"');
27
+ });
28
+ it('should quote Windows paths with spaces', () => {
29
+ expect(toShellPath('C:\\Program Files\\app')).toBe('"C:/Program Files/app"');
30
+ });
31
+ it('should not quote paths without spaces', () => {
32
+ expect(toShellPath('/simple/path')).toBe('/simple/path');
33
+ });
34
+ it('should handle empty string', () => {
35
+ expect(toShellPath('')).toBe('');
36
+ });
37
+ });
38
+ describe('getDataDir', () => {
39
+ const originalPlatform = process.platform;
40
+ const originalEnv = { ...process.env };
41
+ afterEach(() => {
42
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
43
+ process.env = { ...originalEnv };
44
+ });
45
+ it('should use LOCALAPPDATA on Windows when set', () => {
46
+ Object.defineProperty(process, 'platform', { value: 'win32' });
47
+ process.env.LOCALAPPDATA = 'C:\\Users\\Test\\AppData\\Local';
48
+ expect(getDataDir()).toBe('C:\\Users\\Test\\AppData\\Local');
49
+ });
50
+ it('should use XDG_DATA_HOME on Unix when set', () => {
51
+ Object.defineProperty(process, 'platform', { value: 'linux' });
52
+ process.env.XDG_DATA_HOME = '/custom/data';
53
+ expect(getDataDir()).toBe('/custom/data');
54
+ });
55
+ it('should fall back to .local/share on Unix when XDG not set', () => {
56
+ Object.defineProperty(process, 'platform', { value: 'linux' });
57
+ delete process.env.XDG_DATA_HOME;
58
+ const result = getDataDir();
59
+ expect(result).toContain('.local');
60
+ expect(result).toContain('share');
61
+ });
62
+ });
63
+ describe('getConfigDir', () => {
64
+ const originalPlatform = process.platform;
65
+ const originalEnv = { ...process.env };
66
+ afterEach(() => {
67
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
68
+ process.env = { ...originalEnv };
69
+ });
70
+ it('should use APPDATA on Windows when set', () => {
71
+ Object.defineProperty(process, 'platform', { value: 'win32' });
72
+ process.env.APPDATA = 'C:\\Users\\Test\\AppData\\Roaming';
73
+ expect(getConfigDir()).toBe('C:\\Users\\Test\\AppData\\Roaming');
74
+ });
75
+ it('should use XDG_CONFIG_HOME on Unix when set', () => {
76
+ Object.defineProperty(process, 'platform', { value: 'linux' });
77
+ process.env.XDG_CONFIG_HOME = '/custom/config';
78
+ expect(getConfigDir()).toBe('/custom/config');
79
+ });
80
+ it('should fall back to .config on Unix when XDG not set', () => {
81
+ Object.defineProperty(process, 'platform', { value: 'linux' });
82
+ delete process.env.XDG_CONFIG_HOME;
83
+ const result = getConfigDir();
84
+ expect(result).toContain('.config');
85
+ });
86
+ });
87
+ });
88
+ //# sourceMappingURL=paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/paths.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Cross-Platform Path Utilities
3
+ *
4
+ * Provides utility functions for handling paths across Windows, macOS, and Linux.
5
+ * These utilities ensure paths in configuration files use forward slashes
6
+ * (which work universally) and handle platform-specific directory conventions.
7
+ */
8
+ /**
9
+ * Convert a path to use forward slashes (for JSON/config files)
10
+ * This is necessary because settings.json commands are executed
11
+ * by shells that expect forward slashes even on Windows
12
+ */
13
+ export declare function toForwardSlash(path: string): string;
14
+ /**
15
+ * Get Claude config directory path
16
+ */
17
+ export declare function getClaudeConfigDir(): string;
18
+ /**
19
+ * Get a path suitable for use in shell commands
20
+ * Converts backslashes to forward slashes for cross-platform compatibility
21
+ */
22
+ export declare function toShellPath(path: string): string;
23
+ /**
24
+ * Get Windows-appropriate data directory
25
+ * Falls back to sensible locations instead of XDG paths
26
+ */
27
+ export declare function getDataDir(): string;
28
+ /**
29
+ * Get Windows-appropriate config directory
30
+ */
31
+ export declare function getConfigDir(): string;
32
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAKnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Cross-Platform Path Utilities
3
+ *
4
+ * Provides utility functions for handling paths across Windows, macOS, and Linux.
5
+ * These utilities ensure paths in configuration files use forward slashes
6
+ * (which work universally) and handle platform-specific directory conventions.
7
+ */
8
+ import { join } from 'path';
9
+ import { homedir } from 'os';
10
+ /**
11
+ * Convert a path to use forward slashes (for JSON/config files)
12
+ * This is necessary because settings.json commands are executed
13
+ * by shells that expect forward slashes even on Windows
14
+ */
15
+ export function toForwardSlash(path) {
16
+ return path.replace(/\\/g, '/');
17
+ }
18
+ /**
19
+ * Get Claude config directory path
20
+ */
21
+ export function getClaudeConfigDir() {
22
+ return join(homedir(), '.claude');
23
+ }
24
+ /**
25
+ * Get a path suitable for use in shell commands
26
+ * Converts backslashes to forward slashes for cross-platform compatibility
27
+ */
28
+ export function toShellPath(path) {
29
+ const normalized = toForwardSlash(path);
30
+ // Windows paths with spaces need quoting
31
+ if (normalized.includes(' ')) {
32
+ return `"${normalized}"`;
33
+ }
34
+ return normalized;
35
+ }
36
+ /**
37
+ * Get Windows-appropriate data directory
38
+ * Falls back to sensible locations instead of XDG paths
39
+ */
40
+ export function getDataDir() {
41
+ if (process.platform === 'win32') {
42
+ return process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local');
43
+ }
44
+ return process.env.XDG_DATA_HOME || join(homedir(), '.local', 'share');
45
+ }
46
+ /**
47
+ * Get Windows-appropriate config directory
48
+ */
49
+ export function getConfigDir() {
50
+ if (process.platform === 'win32') {
51
+ return process.env.APPDATA || join(homedir(), 'AppData', 'Roaming');
52
+ }
53
+ return process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
54
+ }
55
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,yCAAyC;IACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,UAAU,GAAG,CAAC;IAC3B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC"}
@@ -383,4 +383,83 @@ The skill layer architecture transforms a constraint into a feature, providing a
383
383
 
384
384
  - [Oh-My-OpenCode](https://github.com/code-yeongyu/oh-my-opencode) - Original multi-agent system
385
385
  - [Claude Code Skills](https://docs.anthropic.com/claude-code/skills) - Skill documentation
386
- - [Intelligent Skill Activation](./README.md#intelligent-skill-activation-beta) - Beta feature docs
386
+ - [Intelligent Skill Activation](../README.md#intelligent-skill-activation-beta) - Beta feature docs
387
+
388
+ ---
389
+
390
+ ## v3.1 Feature Architecture
391
+
392
+ ### Delegation Categories Flow
393
+
394
+ ```
395
+ Task Prompt Category Detection Model Selection
396
+ ─────────── ────────────────── ───────────────
397
+ │ │ │
398
+ ▼ ▼ ▼
399
+ ┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
400
+ │ "Design a │ │ detectCategory │ │ ComplexityTier │
401
+ │ beautiful │──────────▶│ FromPrompt() │─────────▶│ │
402
+ │ dashboard" │ │ │ │ HIGH → opus │
403
+ └─────────────┘ │ Keywords: │ │ MEDIUM → sonnet │
404
+ │ - design ✓ │ │ LOW → haiku │
405
+ │ - dashboard ✓ │ └─────────────────┘
406
+ │ │ │
407
+ │ Category: │ ▼
408
+ │ visual-engineering│ ┌─────────────────┐
409
+ └──────────────────┘ │ Config Applied │
410
+ │ tier: HIGH │
411
+ │ temp: 0.7 │
412
+ │ thinking: high │
413
+ └─────────────────┘
414
+ ```
415
+
416
+ ### Notepad Wisdom Storage Structure
417
+
418
+ ```
419
+ .omc/
420
+ └── notepads/
421
+ └── {plan-name}/
422
+ ├── learnings.md # Technical discoveries
423
+ ├── decisions.md # Architectural choices
424
+ ├── issues.md # Known issues + workarounds
425
+ └── problems.md # Blockers requiring resolution
426
+
427
+ Entry Format:
428
+ ┌─────────────────────────────────────────┐
429
+ │ ## 2024-01-15 14:30:00 │
430
+ │ │
431
+ │ Content of the wisdom entry... │
432
+ └─────────────────────────────────────────┘
433
+ ```
434
+
435
+ ### Directory Diagnostics Strategy Selection
436
+
437
+ ```
438
+ ┌──────────────────┐
439
+ │ runDirectory │
440
+ │ Diagnostics() │
441
+ └────────┬─────────┘
442
+
443
+ ┌──────────────┴──────────────┐
444
+ │ strategy = ? │
445
+ └──────────────┬──────────────┘
446
+
447
+ ┌───────────────────┼───────────────────┐
448
+ │ │ │
449
+ strategy='tsc' strategy='auto' strategy='lsp'
450
+ │ │ │
451
+ ▼ ▼ ▼
452
+ ┌───────────┐ ┌───────────┐ ┌───────────┐
453
+ │ tsc │ │ tsconfig │ │ LSP │
454
+ │ --noEmit │ │ exists? │ │ Iteration │
455
+ │ (fast) │ │ │ │ (fallback)│
456
+ └───────────┘ └─────┬─────┘ └───────────┘
457
+
458
+ ┌───────┴───────┐
459
+ │ YES NO │
460
+ └───────┬───────┘
461
+
462
+ ┌─────────┴─────────┐
463
+ ▼ ▼
464
+ Use tsc Use LSP
465
+ ```
package/docs/CLAUDE.md CHANGED
@@ -42,6 +42,7 @@ When you detect these patterns, you MUST invoke the corresponding skill:
42
42
 
43
43
  | Pattern Detected | MUST Invoke Skill |
44
44
  |------------------|-------------------|
45
+ | "autopilot", "build me", "I want a" | `autopilot` |
45
46
  | Broad/vague request | `planner` (after explore for context) |
46
47
  | "don't stop", "must complete", "ralph" | `ralph` |
47
48
  | "fast", "parallel", "ulw", "ultrawork" | `ultrawork` |
@@ -67,6 +68,19 @@ When you detect these patterns, you MUST invoke the corresponding skill:
67
68
 
68
69
  ## PART 2: USER EXPERIENCE
69
70
 
71
+ ### Autopilot: The Default Experience
72
+
73
+ **Autopilot** is the flagship feature and recommended starting point for new users. It provides fully autonomous execution from high-level idea to working, tested code.
74
+
75
+ When you detect phrases like "autopilot", "build me", or "I want a", activate autopilot mode. This engages:
76
+ - Automatic planning and requirements gathering
77
+ - Parallel execution with multiple specialized agents
78
+ - Continuous verification and testing
79
+ - Self-correction until completion
80
+ - No manual intervention required
81
+
82
+ Autopilot combines the best of ralph (persistence), ultrawork (parallelism), and planner (strategic thinking) into a single streamlined experience.
83
+
70
84
  ### Zero Learning Curve
71
85
 
72
86
  Users don't need to learn commands. You detect intent and activate behaviors automatically.
@@ -75,6 +89,7 @@ Users don't need to learn commands. You detect intent and activate behaviors aut
75
89
 
76
90
  | When User Says... | You Automatically... |
77
91
  |-------------------|---------------------|
92
+ | "autopilot", "build me", "I want a" | Activate autopilot for full autonomous execution |
78
93
  | Complex task | Delegate to specialist agents in parallel |
79
94
  | "plan this" / broad request | Start planning interview via planner |
80
95
  | "don't stop until done" | Activate ralph-loop for persistence |
@@ -86,6 +101,7 @@ Users don't need to learn commands. You detect intent and activate behaviors aut
86
101
 
87
102
  | Keyword | Effect | Example |
88
103
  |---------|--------|---------|
104
+ | `autopilot` | Full autonomous execution | "autopilot: build a todo app" |
89
105
  | `ralph` | Persistence mode | "ralph: refactor auth" |
90
106
  | `ulw` | Maximum parallelism | "ulw fix all errors" |
91
107
  | `plan` | Planning interview | "plan the new API" |
@@ -96,6 +112,7 @@ Users don't need to learn commands. You detect intent and activate behaviors aut
96
112
  ### Stopping and Cancelling
97
113
 
98
114
  User says "stop", "cancel", "abort" → You determine what to stop:
115
+ - In autopilot → invoke `cancel-autopilot`
99
116
  - In ralph-loop → invoke `cancel-ralph`
100
117
  - In ultrawork → invoke `cancel-ultrawork`
101
118
  - In ultraqa → invoke `cancel-ultraqa`
@@ -106,10 +123,11 @@ User says "stop", "cancel", "abort" → You determine what to stop:
106
123
 
107
124
  ## PART 3: COMPLETE REFERENCE
108
125
 
109
- ### All 26 Skills
126
+ ### All Skills
110
127
 
111
128
  | Skill | Purpose | Auto-Trigger | Manual |
112
129
  |-------|---------|--------------|--------|
130
+ | `autopilot` | Full autonomous execution from idea to working code | "autopilot", "build me", "I want a" | `/autopilot` |
113
131
  | `orchestrate` | Core multi-agent orchestration | Always active | - |
114
132
  | `ralph` | Persistence until verified complete | "don't stop", "must complete" | `/ralph` |
115
133
  | `ultrawork` | Maximum parallel execution | "fast", "parallel", "ulw" | `/ultrawork` |
@@ -133,11 +151,12 @@ User says "stop", "cancel", "abort" → You determine what to stop:
133
151
  | `omc-default-global` | Configure global settings | - | (internal) |
134
152
  | `ralph-init` | Initialize PRD for structured ralph | - | `/ralph-init` |
135
153
  | `release` | Automated release workflow | - | `/release` |
154
+ | `cancel-autopilot` | Cancel active autopilot session | "stop autopilot", "cancel autopilot" | `/cancel-autopilot` |
136
155
  | `cancel-ralph` | Cancel active ralph loop | "stop" in ralph | `/cancel-ralph` |
137
156
  | `cancel-ultrawork` | Cancel ultrawork mode | "stop" in ultrawork | `/cancel-ultrawork` |
138
157
  | `cancel-ultraqa` | Cancel ultraqa workflow | "stop" in ultraqa | `/cancel-ultraqa` |
139
158
 
140
- ### All 20 Agents
159
+ ### All 28 Agents
141
160
 
142
161
  Always use `oh-my-claudecode:` prefix when calling via Task tool.
143
162
 
@@ -153,7 +172,11 @@ Always use `oh-my-claudecode:` prefix when calling via Task tool.
153
172
  | **Planning** | - | - | `planner` |
154
173
  | **Critique** | - | - | `critic` |
155
174
  | **Pre-Planning** | - | - | `analyst` |
156
- | **Testing** | - | `qa-tester` | - |
175
+ | **Testing** | - | `qa-tester` | `qa-tester-high` |
176
+ | **Security** | `security-reviewer-low` | - | `security-reviewer` |
177
+ | **Build** | `build-fixer-low` | `build-fixer` | - |
178
+ | **TDD** | `tdd-guide-low` | `tdd-guide` | - |
179
+ | **Code Review** | `code-reviewer-low` | - | `code-reviewer` |
157
180
 
158
181
  ### Agent Selection Guide
159
182
 
@@ -175,6 +198,62 @@ Always use `oh-my-claudecode:` prefix when calling via Task tool.
175
198
  | Review/critique plan | `critic` | opus |
176
199
  | Pre-planning analysis | `analyst` | opus |
177
200
  | Test CLI interactively | `qa-tester` | sonnet |
201
+ | Security review | `security-reviewer` | opus |
202
+ | Quick security scan | `security-reviewer-low` | haiku |
203
+ | Fix build errors | `build-fixer` | sonnet |
204
+ | Simple build fix | `build-fixer-low` | haiku |
205
+ | TDD workflow | `tdd-guide` | sonnet |
206
+ | Quick test suggestions | `tdd-guide-low` | haiku |
207
+ | Code review | `code-reviewer` | opus |
208
+ | Quick code check | `code-reviewer-low` | haiku |
209
+
210
+ ---
211
+
212
+ ## PART 3.5: NEW FEATURES (v3.1)
213
+
214
+ ### Notepad Wisdom System
215
+
216
+ Plan-scoped wisdom capture for learnings, decisions, issues, and problems.
217
+
218
+ **Location:** `.omc/notepads/{plan-name}/`
219
+
220
+ | File | Purpose |
221
+ |------|---------|
222
+ | `learnings.md` | Technical discoveries and patterns |
223
+ | `decisions.md` | Architectural and design decisions |
224
+ | `issues.md` | Known issues and workarounds |
225
+ | `problems.md` | Blockers and challenges |
226
+
227
+ **API:** `initPlanNotepad()`, `addLearning()`, `addDecision()`, `addIssue()`, `addProblem()`, `getWisdomSummary()`, `readPlanWisdom()`
228
+
229
+ ### Delegation Categories
230
+
231
+ Semantic task categorization that auto-maps to model tier, temperature, and thinking budget.
232
+
233
+ | Category | Tier | Temperature | Thinking | Use For |
234
+ |----------|------|-------------|----------|---------|
235
+ | `visual-engineering` | HIGH | 0.7 | high | UI/UX, frontend, design systems |
236
+ | `ultrabrain` | HIGH | 0.3 | max | Complex reasoning, architecture, deep debugging |
237
+ | `artistry` | MEDIUM | 0.9 | medium | Creative solutions, brainstorming |
238
+ | `quick` | LOW | 0.1 | low | Simple lookups, basic operations |
239
+ | `writing` | MEDIUM | 0.5 | medium | Documentation, technical writing |
240
+
241
+ **Auto-detection:** Categories detect from prompt keywords automatically.
242
+
243
+ ### Directory Diagnostics Tool
244
+
245
+ Project-level type checking via `lsp_diagnostics_directory` tool.
246
+
247
+ **Strategies:**
248
+ - `auto` (default) - Auto-selects best strategy, prefers tsc when tsconfig.json exists
249
+ - `tsc` - Fast, uses TypeScript compiler
250
+ - `lsp` - Fallback, iterates files via Language Server
251
+
252
+ **Usage:** Check entire project for errors before commits or after refactoring.
253
+
254
+ ### Session Resume
255
+
256
+ Background agents can be resumed with full context via `resume-session` tool.
178
257
 
179
258
  ---
180
259
 
@@ -257,6 +336,8 @@ Before concluding ANY session, verify:
257
336
 
258
337
  When you activate a major behavior, announce it:
259
338
 
339
+ > "I'm activating **autopilot** for full autonomous execution from idea to working code."
340
+
260
341
  > "I'm activating **ralph-loop** to ensure this task completes fully."
261
342
 
262
343
  > "I'm activating **ultrawork** for maximum parallel execution."
@@ -282,6 +363,17 @@ Say "setup omc" or run `/oh-my-claudecode:omc-setup` to configure. After that, e
282
363
 
283
364
  ---
284
365
 
366
+ ## Quick Start for New Users
367
+
368
+ **Just say what you want to build:**
369
+ - "I want a REST API for managing tasks"
370
+ - "Build me a React dashboard with charts"
371
+ - "Create a CLI tool that processes CSV files"
372
+
373
+ Autopilot activates automatically and handles the rest. No commands needed.
374
+
375
+ ---
376
+
285
377
  ## Migration from 2.x
286
378
 
287
379
  All old commands still work:
@@ -290,3 +382,5 @@ All old commands still work:
290
382
  - `/planner "task"` → Still works (or just say "plan this")
291
383
 
292
384
  The difference? You don't NEED them anymore. Everything auto-activates.
385
+
386
+ **New in 3.x:** Autopilot mode provides the ultimate hands-off experience.