oh-my-claude-sisyphus 3.3.10 → 3.4.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 +74 -8
- package/agents/explore-high.md +195 -0
- package/agents/qa-tester-high.md +141 -0
- package/agents/templates/README.md +110 -0
- package/agents/templates/base-agent.md +54 -0
- package/agents/templates/tier-instructions.md +94 -0
- package/commands/cancel-ecomode.md +71 -0
- package/commands/cancel.md +75 -0
- package/commands/ecomode.md +60 -0
- package/commands/help.md +1 -1
- package/commands/mcp-setup.md +7 -6
- package/commands/pipeline.md +231 -0
- package/commands/planner.md +174 -0
- package/commands/ralplan.md +8 -1
- package/commands/swarm.md +280 -0
- package/commands/ultrapilot.md +158 -0
- package/commands/ultrawork.md +1 -0
- package/dist/__tests__/delegation-enforcer-integration.test.d.ts +6 -0
- package/dist/__tests__/delegation-enforcer-integration.test.d.ts.map +1 -0
- package/dist/__tests__/delegation-enforcer-integration.test.js +136 -0
- package/dist/__tests__/delegation-enforcer-integration.test.js.map +1 -0
- package/dist/__tests__/delegation-enforcer.test.d.ts +5 -0
- package/dist/__tests__/delegation-enforcer.test.d.ts.map +1 -0
- package/dist/__tests__/delegation-enforcer.test.js +208 -0
- package/dist/__tests__/delegation-enforcer.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +2 -2
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +4 -6
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/ralph-prd.test.js +1 -1
- package/dist/__tests__/ralph-prd.test.js.map +1 -1
- package/dist/__tests__/ralph-progress.test.js +1 -1
- package/dist/__tests__/ralph-progress.test.js.map +1 -1
- package/dist/__tests__/skills.test.js +31 -24
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/agents/analyst.d.ts.map +1 -1
- package/dist/agents/analyst.js +1 -0
- package/dist/agents/analyst.js.map +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +1 -0
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/critic.d.ts.map +1 -1
- package/dist/agents/critic.js +1 -0
- package/dist/agents/critic.js.map +1 -1
- package/dist/agents/definitions.d.ts +5 -1
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +53 -155
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts.map +1 -1
- package/dist/agents/designer.js +1 -0
- package/dist/agents/designer.js.map +1 -1
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +1 -0
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +1 -0
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +1 -0
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/qa-tester.d.ts.map +1 -1
- package/dist/agents/qa-tester.js +1 -0
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts.map +1 -1
- package/dist/agents/researcher.js +1 -0
- package/dist/agents/researcher.js.map +1 -1
- package/dist/agents/scientist.d.ts.map +1 -1
- package/dist/agents/scientist.js +1 -0
- package/dist/agents/scientist.js.map +1 -1
- package/dist/agents/types.d.ts +2 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/agents/vision.d.ts.map +1 -1
- package/dist/agents/vision.js +1 -0
- package/dist/agents/vision.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +1 -0
- package/dist/agents/writer.js.map +1 -1
- package/dist/analytics/cost-estimator.d.ts +14 -0
- package/dist/analytics/cost-estimator.d.ts.map +1 -0
- package/dist/analytics/cost-estimator.js +70 -0
- package/dist/analytics/cost-estimator.js.map +1 -0
- package/dist/analytics/export.d.ts +7 -0
- package/dist/analytics/export.d.ts.map +1 -0
- package/dist/analytics/export.js +93 -0
- package/dist/analytics/export.js.map +1 -0
- package/dist/analytics/index.d.ts +14 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +14 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/metrics-collector.d.ts +30 -0
- package/dist/analytics/metrics-collector.d.ts.map +1 -0
- package/dist/analytics/metrics-collector.js +96 -0
- package/dist/analytics/metrics-collector.js.map +1 -0
- package/dist/analytics/query-engine.d.ts +32 -0
- package/dist/analytics/query-engine.d.ts.map +1 -0
- package/dist/analytics/query-engine.js +151 -0
- package/dist/analytics/query-engine.js.map +1 -0
- package/dist/analytics/session-manager.d.ts +26 -0
- package/dist/analytics/session-manager.d.ts.map +1 -0
- package/dist/analytics/session-manager.js +201 -0
- package/dist/analytics/session-manager.js.map +1 -0
- package/dist/analytics/session-types.d.ts +37 -0
- package/dist/analytics/session-types.d.ts.map +1 -0
- package/dist/analytics/session-types.js +2 -0
- package/dist/analytics/session-types.js.map +1 -0
- package/dist/analytics/token-tracker.d.ts +24 -0
- package/dist/analytics/token-tracker.d.ts.map +1 -0
- package/dist/analytics/token-tracker.js +161 -0
- package/dist/analytics/token-tracker.js.map +1 -0
- package/dist/analytics/types.d.ts +37 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +21 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/cli/analytics.d.ts +3 -0
- package/dist/cli/analytics.d.ts.map +1 -0
- package/dist/cli/analytics.js +74 -0
- package/dist/cli/analytics.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +5 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +29 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/cleanup.d.ts +4 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/cleanup.js +17 -0
- package/dist/cli/commands/cleanup.js.map +1 -0
- package/dist/cli/commands/cost.d.ts +4 -0
- package/dist/cli/commands/cost.d.ts.map +1 -0
- package/dist/cli/commands/cost.js +53 -0
- package/dist/cli/commands/cost.js.map +1 -0
- package/dist/cli/commands/export.d.ts +5 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +30 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +5 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -0
- package/dist/cli/commands/sessions.js +37 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +4 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +43 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/index.js +0 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/formatting.d.ts +22 -0
- package/dist/cli/utils/formatting.d.ts.map +1 -0
- package/dist/cli/utils/formatting.js +70 -0
- package/dist/cli/utils/formatting.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/features/delegation-enforcer.d.ts +71 -0
- package/dist/features/delegation-enforcer.d.ts.map +1 -0
- package/dist/features/delegation-enforcer.js +128 -0
- package/dist/features/delegation-enforcer.js.map +1 -0
- package/dist/features/index.d.ts +3 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +18 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/state-manager/index.d.ts +100 -0
- package/dist/features/state-manager/index.d.ts.map +1 -0
- package/dist/features/state-manager/index.js +407 -0
- package/dist/features/state-manager/index.js.map +1 -0
- package/dist/features/state-manager/types.d.ts +147 -0
- package/dist/features/state-manager/types.d.ts.map +1 -0
- package/dist/features/state-manager/types.js +30 -0
- package/dist/features/state-manager/types.js.map +1 -0
- package/dist/features/task-decomposer/index.d.ts +33 -0
- package/dist/features/task-decomposer/index.d.ts.map +1 -0
- package/dist/features/task-decomposer/index.js +698 -0
- package/dist/features/task-decomposer/index.js.map +1 -0
- package/dist/features/task-decomposer/types.d.ts +133 -0
- package/dist/features/task-decomposer/types.d.ts.map +1 -0
- package/dist/features/task-decomposer/types.js +8 -0
- package/dist/features/task-decomposer/types.js.map +1 -0
- package/dist/features/verification/example.d.ts +49 -0
- package/dist/features/verification/example.d.ts.map +1 -0
- package/dist/features/verification/example.js +235 -0
- package/dist/features/verification/example.js.map +1 -0
- package/dist/features/verification/index.d.ts +97 -0
- package/dist/features/verification/index.d.ts.map +1 -0
- package/dist/features/verification/index.js +439 -0
- package/dist/features/verification/index.js.map +1 -0
- package/dist/features/verification/types.d.ts +142 -0
- package/dist/features/verification/types.d.ts.map +1 -0
- package/dist/features/verification/types.js +7 -0
- package/dist/features/verification/types.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -1
- package/dist/hooks/agent-usage-reminder/constants.js +0 -1
- package/dist/hooks/agent-usage-reminder/constants.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/cancel.test.js +4 -4
- package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/summary.test.js +1 -1
- package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/transition.test.js +1 -2
- package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -1
- package/dist/hooks/autopilot/cancel.js +2 -2
- package/dist/hooks/autopilot/cancel.js.map +1 -1
- package/dist/hooks/autopilot/enforcement.d.ts +16 -2
- package/dist/hooks/autopilot/enforcement.d.ts.map +1 -1
- package/dist/hooks/autopilot/enforcement.js +78 -4
- package/dist/hooks/autopilot/enforcement.js.map +1 -1
- package/dist/hooks/autopilot/index.d.ts +3 -6
- package/dist/hooks/autopilot/index.d.ts.map +1 -1
- package/dist/hooks/autopilot/index.js +6 -12
- package/dist/hooks/autopilot/index.js.map +1 -1
- package/dist/hooks/autopilot/state.d.ts +36 -2
- package/dist/hooks/autopilot/state.d.ts.map +1 -1
- package/dist/hooks/autopilot/state.js +216 -2
- package/dist/hooks/autopilot/state.js.map +1 -1
- package/dist/hooks/autopilot/validation.d.ts +23 -2
- package/dist/hooks/autopilot/validation.d.ts.map +1 -1
- package/dist/hooks/autopilot/validation.js +158 -1
- package/dist/hooks/autopilot/validation.js.map +1 -1
- package/dist/hooks/bridge.js +3 -3
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/index.d.ts +5 -9
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +31 -21
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/learner/promotion.js +1 -1
- package/dist/hooks/learner/promotion.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +2 -3
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph/index.d.ts +11 -0
- package/dist/hooks/ralph/index.d.ts.map +1 -0
- package/dist/hooks/ralph/index.js +53 -0
- package/dist/hooks/ralph/index.js.map +1 -0
- package/dist/hooks/ralph/loop.d.ts +116 -0
- package/dist/hooks/ralph/loop.d.ts.map +1 -0
- package/dist/hooks/ralph/loop.js +322 -0
- package/dist/hooks/ralph/loop.js.map +1 -0
- package/dist/hooks/ralph/prd.d.ts +130 -0
- package/dist/hooks/ralph/prd.d.ts.map +1 -0
- package/dist/hooks/ralph/prd.js +310 -0
- package/dist/hooks/ralph/prd.js.map +1 -0
- package/dist/hooks/ralph/progress.d.ts +102 -0
- package/dist/hooks/ralph/progress.d.ts.map +1 -0
- package/dist/hooks/ralph/progress.js +408 -0
- package/dist/hooks/ralph/progress.js.map +1 -0
- package/dist/hooks/ralph/verifier.d.ts +72 -0
- package/dist/hooks/ralph/verifier.d.ts.map +1 -0
- package/dist/hooks/ralph/verifier.js +223 -0
- package/dist/hooks/ralph/verifier.js.map +1 -0
- package/dist/hooks/recovery/constants.d.ts +114 -0
- package/dist/hooks/recovery/constants.d.ts.map +1 -0
- package/dist/hooks/recovery/constants.js +227 -0
- package/dist/hooks/recovery/constants.js.map +1 -0
- package/dist/hooks/recovery/context-window.d.ts +24 -0
- package/dist/hooks/recovery/context-window.d.ts.map +1 -0
- package/dist/hooks/recovery/context-window.js +321 -0
- package/dist/hooks/recovery/context-window.js.map +1 -0
- package/dist/hooks/recovery/edit-error.d.ts +24 -0
- package/dist/hooks/recovery/edit-error.d.ts.map +1 -0
- package/dist/hooks/recovery/edit-error.js +56 -0
- package/dist/hooks/recovery/edit-error.js.map +1 -0
- package/dist/hooks/recovery/index.d.ts +102 -0
- package/dist/hooks/recovery/index.d.ts.map +1 -0
- package/dist/hooks/recovery/index.js +166 -0
- package/dist/hooks/recovery/index.js.map +1 -0
- package/dist/hooks/recovery/session-recovery.d.ts +24 -0
- package/dist/hooks/recovery/session-recovery.d.ts.map +1 -0
- package/dist/hooks/recovery/session-recovery.js +281 -0
- package/dist/hooks/recovery/session-recovery.js.map +1 -0
- package/dist/hooks/recovery/storage.d.ts +75 -0
- package/dist/hooks/recovery/storage.d.ts.map +1 -0
- package/dist/hooks/recovery/storage.js +382 -0
- package/dist/hooks/recovery/storage.js.map +1 -0
- package/dist/hooks/recovery/types.d.ts +196 -0
- package/dist/hooks/recovery/types.d.ts.map +1 -0
- package/dist/hooks/recovery/types.js +32 -0
- package/dist/hooks/recovery/types.js.map +1 -0
- package/dist/hooks/ultrapilot/index.d.ts +90 -0
- package/dist/hooks/ultrapilot/index.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/index.js +310 -0
- package/dist/hooks/ultrapilot/index.js.map +1 -0
- package/dist/hooks/ultrapilot/state.d.ts +72 -0
- package/dist/hooks/ultrapilot/state.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/state.js +258 -0
- package/dist/hooks/ultrapilot/state.js.map +1 -0
- package/dist/hooks/ultrapilot/types.d.ts +113 -0
- package/dist/hooks/ultrapilot/types.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/types.js +36 -0
- package/dist/hooks/ultrapilot/types.js.map +1 -0
- package/dist/hooks/ultraqa/index.d.ts +94 -0
- package/dist/hooks/ultraqa/index.d.ts.map +1 -0
- package/dist/hooks/ultraqa/index.js +216 -0
- package/dist/hooks/ultraqa/index.js.map +1 -0
- package/dist/hooks/ultrawork/index.d.ts +62 -0
- package/dist/hooks/ultrawork/index.d.ts.map +1 -0
- package/dist/hooks/ultrawork/index.js +208 -0
- package/dist/hooks/ultrawork/index.js.map +1 -0
- package/dist/hud/analytics-display.d.ts +28 -0
- package/dist/hud/analytics-display.d.ts.map +1 -0
- package/dist/hud/analytics-display.js +105 -0
- package/dist/hud/analytics-display.js.map +1 -0
- package/dist/hud/background-cleanup.d.ts +28 -0
- package/dist/hud/background-cleanup.d.ts.map +1 -0
- package/dist/hud/background-cleanup.js +92 -0
- package/dist/hud/background-cleanup.js.map +1 -0
- package/dist/hud/index.js +4 -2
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render.d.ts +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +32 -1
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts +5 -0
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +13 -0
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/types.d.ts +11 -1
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +19 -0
- package/dist/hud/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/servers.d.ts +2 -18
- package/dist/mcp/servers.d.ts.map +1 -1
- package/dist/mcp/servers.js +4 -36
- package/dist/mcp/servers.js.map +1 -1
- package/dist/shared/types.d.ts +1 -3
- package/dist/shared/types.d.ts.map +1 -1
- package/docs/CLAUDE.md +170 -44
- package/docs/DELEGATION-ENFORCER.md +282 -0
- package/docs/FULL-README.md +130 -16
- package/docs/LOCAL_PLUGIN_INSTALL.md +1 -1
- package/docs/MIGRATION.md +513 -98
- package/docs/SYNC-SYSTEM.md +528 -0
- package/package.json +9 -3
- package/scripts/sync-metadata.ts +363 -0
- package/scripts/test-mutual-exclusion.ts +1 -1
- package/skills/analyze/SKILL.md +0 -1
- package/skills/autopilot/SKILL.md +0 -1
- package/skills/build-fix/SKILL.md +123 -0
- package/skills/cancel/SKILL.md +580 -0
- package/skills/cancel-autopilot/SKILL.md +0 -1
- package/skills/cancel-ecomode/SKILL.md +41 -0
- package/skills/cancel-ralph/SKILL.md +0 -1
- package/skills/cancel-ultraqa/SKILL.md +0 -1
- package/skills/cancel-ultrawork/SKILL.md +0 -1
- package/skills/code-review/SKILL.md +179 -0
- package/skills/deepinit/SKILL.md +0 -1
- package/skills/deepsearch/SKILL.md +0 -1
- package/skills/doctor/SKILL.md +0 -1
- package/skills/ecomode/SKILL.md +128 -0
- package/skills/frontend-ui-ux/SKILL.md +0 -1
- package/skills/git-master/SKILL.md +0 -1
- package/skills/help/SKILL.md +1 -2
- package/skills/hud/SKILL.md +0 -1
- package/skills/learner/SKILL.md +0 -1
- package/skills/mcp-setup/SKILL.md +8 -7
- package/skills/note/SKILL.md +0 -1
- package/skills/omc-default/SKILL.md +0 -1
- package/skills/omc-default-global/SKILL.md +0 -1
- package/skills/omc-setup/SKILL.md +176 -10
- package/skills/orchestrate/SKILL.md +0 -1
- package/skills/pipeline/SKILL.md +417 -0
- package/skills/plan/SKILL.md +138 -21
- package/skills/planner/SKILL.md +0 -1
- package/skills/ralph/SKILL.md +65 -1
- package/skills/ralph-init/SKILL.md +0 -1
- package/skills/ralplan/SKILL.md +0 -1
- package/skills/release/SKILL.md +0 -1
- package/skills/research/SKILL.md +0 -1
- package/skills/review/SKILL.md +0 -1
- package/skills/security-review/SKILL.md +254 -0
- package/skills/swarm/SKILL.md +349 -0
- package/skills/tdd/SKILL.md +0 -1
- package/skills/ultrapilot/SKILL.md +563 -0
- package/skills/ultraqa/SKILL.md +0 -1
- package/skills/ultrawork/SKILL.md +0 -1
- package/docs/MIGRATION-v3.md +0 -186
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Metadata Sync System
|
|
4
|
+
*
|
|
5
|
+
* Synchronizes version and metadata from package.json to all documentation files.
|
|
6
|
+
* Prevents version drift and ensures consistency across the project.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npm run sync-metadata # Sync all files
|
|
10
|
+
* npm run sync-metadata -- --dry-run # Preview changes
|
|
11
|
+
* npm run sync-metadata -- --verify # Check if files are in sync
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { readFileSync, writeFileSync, existsSync, readdirSync } from 'fs';
|
|
15
|
+
import { join, resolve } from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { dirname } from 'path';
|
|
18
|
+
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = dirname(__filename);
|
|
21
|
+
|
|
22
|
+
// Color utilities for terminal output
|
|
23
|
+
const colors = {
|
|
24
|
+
reset: '\x1b[0m',
|
|
25
|
+
bright: '\x1b[1m',
|
|
26
|
+
green: '\x1b[32m',
|
|
27
|
+
yellow: '\x1b[33m',
|
|
28
|
+
blue: '\x1b[34m',
|
|
29
|
+
red: '\x1b[31m',
|
|
30
|
+
cyan: '\x1b[36m',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function color(text: string, colorCode: string): string {
|
|
34
|
+
return `${colorCode}${text}${colors.reset}`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Metadata interface
|
|
38
|
+
interface Metadata {
|
|
39
|
+
version: string;
|
|
40
|
+
description: string;
|
|
41
|
+
keywords: string[];
|
|
42
|
+
repository: string;
|
|
43
|
+
homepage: string;
|
|
44
|
+
npmPackage: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// File sync configuration
|
|
48
|
+
interface FileSync {
|
|
49
|
+
path: string;
|
|
50
|
+
replacements: Array<{
|
|
51
|
+
pattern: RegExp;
|
|
52
|
+
replacement: (metadata: Metadata) => string;
|
|
53
|
+
description: string;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Load metadata from package.json
|
|
58
|
+
function loadMetadata(): Metadata {
|
|
59
|
+
const projectRoot = resolve(__dirname, '..');
|
|
60
|
+
const packageJsonPath = join(projectRoot, 'package.json');
|
|
61
|
+
|
|
62
|
+
if (!existsSync(packageJsonPath)) {
|
|
63
|
+
throw new Error(`package.json not found at ${packageJsonPath}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
version: packageJson.version,
|
|
70
|
+
description: packageJson.description || '',
|
|
71
|
+
keywords: packageJson.keywords || [],
|
|
72
|
+
repository: packageJson.repository?.url?.replace(/^git\+/, '').replace(/\.git$/, '') || '',
|
|
73
|
+
homepage: packageJson.homepage || '',
|
|
74
|
+
npmPackage: packageJson.name || 'oh-my-claude-sisyphus',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Get count of agents from agents directory
|
|
79
|
+
function getAgentCount(): number {
|
|
80
|
+
const projectRoot = resolve(__dirname, '..');
|
|
81
|
+
const agentsDir = join(projectRoot, 'agents');
|
|
82
|
+
|
|
83
|
+
if (!existsSync(agentsDir)) {
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const files = readdirSync(agentsDir);
|
|
88
|
+
return files.filter((f: string) => f.endsWith('.md')).length;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Get count of skills from skills directory (directories, not files)
|
|
92
|
+
function getSkillCount(): number {
|
|
93
|
+
const projectRoot = resolve(__dirname, '..');
|
|
94
|
+
const skillsDir = join(projectRoot, 'skills');
|
|
95
|
+
|
|
96
|
+
if (!existsSync(skillsDir)) {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const entries = readdirSync(skillsDir, { withFileTypes: true });
|
|
101
|
+
return entries.filter((entry) => entry.isDirectory()).length;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Define file sync configurations
|
|
105
|
+
function getFileSyncConfigs(): FileSync[] {
|
|
106
|
+
const agentCount = getAgentCount();
|
|
107
|
+
const skillCount = getSkillCount();
|
|
108
|
+
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
path: 'README.md',
|
|
112
|
+
replacements: [
|
|
113
|
+
{
|
|
114
|
+
pattern: /\[!\[npm version\]\(https:\/\/img\.shields\.io\/npm\/v\/[^)]+\)/g,
|
|
115
|
+
replacement: (m) => `[`,
|
|
116
|
+
description: 'npm version badge',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
pattern: /\[!\[npm downloads\]\(https:\/\/img\.shields\.io\/npm\/dm\/[^)]+\)/g,
|
|
120
|
+
replacement: (m) => `[`,
|
|
121
|
+
description: 'npm downloads badge',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
path: 'docs/FULL-README.md',
|
|
127
|
+
replacements: [
|
|
128
|
+
{
|
|
129
|
+
pattern: /\[!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[^-]+-[^)]+\)/g,
|
|
130
|
+
replacement: (m) => `[`,
|
|
131
|
+
description: 'Version badge',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
pattern: /\[!\[npm version\]\(https:\/\/img\.shields\.io\/npm\/v\/[^?]+[^)]*\)/g,
|
|
135
|
+
replacement: (m) => `[`,
|
|
136
|
+
description: 'npm version badge',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
pattern: /## NEW in \d+\.\d+\.\d+:/g,
|
|
140
|
+
replacement: (m) => `## NEW in ${m.version}:`,
|
|
141
|
+
description: 'Version header',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
pattern: /## ⚡ NEW in \d+\.\d+:/g,
|
|
145
|
+
replacement: (m) => {
|
|
146
|
+
const [major, minor] = m.version.split('.');
|
|
147
|
+
return `## ⚡ NEW in ${major}.${minor}:`;
|
|
148
|
+
},
|
|
149
|
+
description: 'Major.minor version header',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
path: '.github/CLAUDE.md',
|
|
155
|
+
replacements: [
|
|
156
|
+
{
|
|
157
|
+
pattern: /\*\*\d+ specialized agents\*\*/g,
|
|
158
|
+
replacement: () => `**${agentCount} specialized agents**`,
|
|
159
|
+
description: 'Agent count',
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
pattern: /\*\*\d+ slash commands\*\*/g,
|
|
163
|
+
replacement: () => `**${skillCount} slash commands**`,
|
|
164
|
+
description: 'Slash command count',
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
path: 'docs/ARCHITECTURE.md',
|
|
170
|
+
replacements: [
|
|
171
|
+
{
|
|
172
|
+
pattern: /version \d+\.\d+\.\d+/gi,
|
|
173
|
+
replacement: (m) => `version ${m.version}`,
|
|
174
|
+
description: 'Architecture version references',
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
path: 'CHANGELOG.md',
|
|
180
|
+
replacements: [
|
|
181
|
+
// CHANGELOG is manually maintained, only verify latest version exists
|
|
182
|
+
{
|
|
183
|
+
pattern: /^## \[\d+\.\d+\.\d+\]/m,
|
|
184
|
+
replacement: (m) => `## [${m.version}]`,
|
|
185
|
+
description: 'Latest version header (verify only)',
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Sync a single file
|
|
193
|
+
function syncFile(
|
|
194
|
+
config: FileSync,
|
|
195
|
+
metadata: Metadata,
|
|
196
|
+
dryRun: boolean,
|
|
197
|
+
projectRoot: string
|
|
198
|
+
): { changed: boolean; changes: string[] } {
|
|
199
|
+
const filePath = join(projectRoot, config.path);
|
|
200
|
+
|
|
201
|
+
if (!existsSync(filePath)) {
|
|
202
|
+
console.log(color(`⚠ File not found: ${config.path}`, colors.yellow));
|
|
203
|
+
return { changed: false, changes: [] };
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
let content = readFileSync(filePath, 'utf-8');
|
|
207
|
+
const originalContent = content;
|
|
208
|
+
const changes: string[] = [];
|
|
209
|
+
|
|
210
|
+
for (const replacement of config.replacements) {
|
|
211
|
+
const matches = content.match(replacement.pattern);
|
|
212
|
+
if (matches) {
|
|
213
|
+
const newContent = content.replace(
|
|
214
|
+
replacement.pattern,
|
|
215
|
+
replacement.replacement(metadata)
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
if (newContent !== content) {
|
|
219
|
+
changes.push(replacement.description);
|
|
220
|
+
content = newContent;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const changed = content !== originalContent;
|
|
226
|
+
|
|
227
|
+
if (changed && !dryRun) {
|
|
228
|
+
writeFileSync(filePath, content, 'utf-8');
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return { changed, changes };
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Verify all files are in sync
|
|
235
|
+
function verifySync(metadata: Metadata, projectRoot: string): boolean {
|
|
236
|
+
console.log(color('\n🔍 Verifying metadata sync...', colors.cyan));
|
|
237
|
+
|
|
238
|
+
const configs = getFileSyncConfigs();
|
|
239
|
+
let allInSync = true;
|
|
240
|
+
|
|
241
|
+
for (const config of configs) {
|
|
242
|
+
const result = syncFile(config, metadata, true, projectRoot);
|
|
243
|
+
|
|
244
|
+
if (result.changed) {
|
|
245
|
+
allInSync = false;
|
|
246
|
+
console.log(color(`✗ ${config.path}`, colors.red));
|
|
247
|
+
result.changes.forEach(change => {
|
|
248
|
+
console.log(color(` - ${change} needs update`, colors.yellow));
|
|
249
|
+
});
|
|
250
|
+
} else {
|
|
251
|
+
console.log(color(`✓ ${config.path}`, colors.green));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return allInSync;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Main sync operation
|
|
259
|
+
function syncAll(dryRun: boolean): void {
|
|
260
|
+
const projectRoot = resolve(__dirname, '..');
|
|
261
|
+
const metadata = loadMetadata();
|
|
262
|
+
|
|
263
|
+
console.log(color('\n📦 Metadata Sync System', colors.bright));
|
|
264
|
+
console.log(color('========================\n', colors.bright));
|
|
265
|
+
console.log(`Version: ${color(metadata.version, colors.green)}`);
|
|
266
|
+
console.log(`Package: ${color(metadata.npmPackage, colors.cyan)}`);
|
|
267
|
+
console.log(`Agents: ${color(String(getAgentCount()), colors.blue)}`);
|
|
268
|
+
console.log(`Skills: ${color(String(getSkillCount()), colors.blue)}`);
|
|
269
|
+
|
|
270
|
+
if (dryRun) {
|
|
271
|
+
console.log(color('\n🔍 DRY RUN MODE - No files will be modified\n', colors.yellow));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const configs = getFileSyncConfigs();
|
|
275
|
+
let totalChanges = 0;
|
|
276
|
+
|
|
277
|
+
for (const config of configs) {
|
|
278
|
+
const result = syncFile(config, metadata, dryRun, projectRoot);
|
|
279
|
+
|
|
280
|
+
if (result.changed) {
|
|
281
|
+
totalChanges++;
|
|
282
|
+
const status = dryRun ? '📝' : '✓';
|
|
283
|
+
console.log(color(`\n${status} ${config.path}`, colors.cyan));
|
|
284
|
+
result.changes.forEach(change => {
|
|
285
|
+
console.log(color(` - ${change}`, colors.blue));
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (totalChanges === 0) {
|
|
291
|
+
console.log(color('\n✅ All files are already in sync!', colors.green));
|
|
292
|
+
} else if (dryRun) {
|
|
293
|
+
console.log(color(`\n📊 ${totalChanges} file(s) would be updated`, colors.yellow));
|
|
294
|
+
console.log(color('Run without --dry-run to apply changes', colors.cyan));
|
|
295
|
+
} else {
|
|
296
|
+
console.log(color(`\n✅ Successfully synced ${totalChanges} file(s)!`, colors.green));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// CLI
|
|
301
|
+
function main(): void {
|
|
302
|
+
const args = process.argv.slice(2);
|
|
303
|
+
const dryRun = args.includes('--dry-run');
|
|
304
|
+
const verify = args.includes('--verify');
|
|
305
|
+
const help = args.includes('--help') || args.includes('-h');
|
|
306
|
+
|
|
307
|
+
if (help) {
|
|
308
|
+
console.log(`
|
|
309
|
+
${color('Metadata Sync System', colors.bright)}
|
|
310
|
+
|
|
311
|
+
${color('Usage:', colors.cyan)}
|
|
312
|
+
npm run sync-metadata Sync all files
|
|
313
|
+
npm run sync-metadata -- --dry-run Preview changes without writing
|
|
314
|
+
npm run sync-metadata -- --verify Check if files are in sync
|
|
315
|
+
|
|
316
|
+
${color('Description:', colors.cyan)}
|
|
317
|
+
Synchronizes version and metadata from package.json to documentation files.
|
|
318
|
+
Prevents version drift and ensures consistency across the project.
|
|
319
|
+
|
|
320
|
+
${color('Files Synced:', colors.cyan)}
|
|
321
|
+
- README.md (npm badges)
|
|
322
|
+
- docs/FULL-README.md (version badges and headers)
|
|
323
|
+
- .github/CLAUDE.md (agent/skill counts)
|
|
324
|
+
- docs/ARCHITECTURE.md (version references)
|
|
325
|
+
- CHANGELOG.md (version header verification)
|
|
326
|
+
|
|
327
|
+
${color('Examples:', colors.cyan)}
|
|
328
|
+
npm run sync-metadata # Apply all updates
|
|
329
|
+
npm run sync-metadata -- --dry-run # See what would change
|
|
330
|
+
npm run sync-metadata -- --verify # CI/CD verification
|
|
331
|
+
`);
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
try {
|
|
336
|
+
if (verify) {
|
|
337
|
+
const projectRoot = resolve(__dirname, '..');
|
|
338
|
+
const metadata = loadMetadata();
|
|
339
|
+
const inSync = verifySync(metadata, projectRoot);
|
|
340
|
+
|
|
341
|
+
if (!inSync) {
|
|
342
|
+
console.log(color('\n❌ Files are out of sync!', colors.red));
|
|
343
|
+
console.log(color('Run: npm run sync-metadata', colors.cyan));
|
|
344
|
+
process.exit(1);
|
|
345
|
+
} else {
|
|
346
|
+
console.log(color('\n✅ All files are in sync!', colors.green));
|
|
347
|
+
}
|
|
348
|
+
} else {
|
|
349
|
+
syncAll(dryRun);
|
|
350
|
+
}
|
|
351
|
+
} catch (error) {
|
|
352
|
+
console.error(color('\n❌ Error:', colors.red), error instanceof Error ? error.message : error);
|
|
353
|
+
process.exit(1);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Run if called directly
|
|
358
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
359
|
+
main();
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Export for testing
|
|
363
|
+
export { loadMetadata, syncFile, verifySync, getAgentCount, getSkillCount };
|
|
@@ -6,7 +6,7 @@ import { tmpdir } from 'os';
|
|
|
6
6
|
import { mkdirSync } from 'fs';
|
|
7
7
|
|
|
8
8
|
// Import the hooks
|
|
9
|
-
import { startUltraQA, clearUltraQAState, isRalphLoopActive } from '../src/hooks/ultraqa
|
|
9
|
+
import { startUltraQA, clearUltraQAState, isRalphLoopActive } from '../src/hooks/ultraqa/index.js';
|
|
10
10
|
import { createRalphLoopHook, clearRalphState, isUltraQAActive } from '../src/hooks/ralph-loop/index.js';
|
|
11
11
|
|
|
12
12
|
// Test utilities
|
package/skills/analyze/SKILL.md
CHANGED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-fix
|
|
3
|
+
description: Fix build and TypeScript errors with minimal changes
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Build Fix Skill
|
|
7
|
+
|
|
8
|
+
Fix build and TypeScript errors quickly with minimal code changes. Get the build green without refactoring.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
This skill activates when:
|
|
13
|
+
- User says "fix the build", "build is broken"
|
|
14
|
+
- TypeScript compilation fails
|
|
15
|
+
- `npm run build` or `tsc` reports errors
|
|
16
|
+
- User requests "minimal fixes" for errors
|
|
17
|
+
|
|
18
|
+
## What It Does
|
|
19
|
+
|
|
20
|
+
Delegates to the `build-fixer` agent (Sonnet model) to:
|
|
21
|
+
|
|
22
|
+
1. **Collect Errors**
|
|
23
|
+
- Run `npx tsc --noEmit` to get all TypeScript errors
|
|
24
|
+
- Or run `npm run build` to get build failures
|
|
25
|
+
- Categorize errors by type and severity
|
|
26
|
+
|
|
27
|
+
2. **Fix Strategically**
|
|
28
|
+
- Add type annotations where missing
|
|
29
|
+
- Add null checks where needed
|
|
30
|
+
- Fix import/export statements
|
|
31
|
+
- Resolve module resolution issues
|
|
32
|
+
- Fix linter errors blocking build
|
|
33
|
+
|
|
34
|
+
3. **Minimal Diff Strategy**
|
|
35
|
+
- NO refactoring of unrelated code
|
|
36
|
+
- NO architectural changes
|
|
37
|
+
- NO performance optimizations
|
|
38
|
+
- ONLY what's needed to make build pass
|
|
39
|
+
|
|
40
|
+
4. **Verify**
|
|
41
|
+
- Run `npx tsc --noEmit` after each fix
|
|
42
|
+
- Ensure no new errors introduced
|
|
43
|
+
- Stop when build passes
|
|
44
|
+
|
|
45
|
+
## Agent Delegation
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Task(
|
|
49
|
+
subagent_type="oh-my-claudecode:build-fixer",
|
|
50
|
+
model="sonnet",
|
|
51
|
+
prompt="BUILD FIX TASK
|
|
52
|
+
|
|
53
|
+
Fix all build and TypeScript errors with minimal changes.
|
|
54
|
+
|
|
55
|
+
Requirements:
|
|
56
|
+
- Run tsc/build to collect errors
|
|
57
|
+
- Fix errors one at a time
|
|
58
|
+
- Verify each fix doesn't introduce new errors
|
|
59
|
+
- NO refactoring, NO architectural changes
|
|
60
|
+
- Stop when build passes
|
|
61
|
+
|
|
62
|
+
Output: Build error resolution report with:
|
|
63
|
+
- List of errors fixed
|
|
64
|
+
- Lines changed per fix
|
|
65
|
+
- Final build status"
|
|
66
|
+
)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Stop Conditions
|
|
70
|
+
|
|
71
|
+
The build-fixer agent stops when:
|
|
72
|
+
- `npx tsc --noEmit` exits with code 0
|
|
73
|
+
- `npm run build` completes successfully
|
|
74
|
+
- No new errors introduced
|
|
75
|
+
|
|
76
|
+
## Output Format
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
BUILD FIX REPORT
|
|
80
|
+
================
|
|
81
|
+
|
|
82
|
+
Errors Fixed: 12
|
|
83
|
+
Files Modified: 8
|
|
84
|
+
Lines Changed: 47
|
|
85
|
+
|
|
86
|
+
Fixes Applied:
|
|
87
|
+
1. src/utils/validation.ts:15 - Added return type annotation
|
|
88
|
+
2. src/components/Header.tsx:42 - Added null check for props.user
|
|
89
|
+
3. src/api/client.ts:89 - Fixed import path for axios
|
|
90
|
+
...
|
|
91
|
+
|
|
92
|
+
Final Build Status: ✓ PASSING
|
|
93
|
+
Verification: npx tsc --noEmit (exit code 0)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Best Practices
|
|
97
|
+
|
|
98
|
+
- **One fix at a time** - Easier to verify and debug
|
|
99
|
+
- **Minimal changes** - Don't refactor while fixing
|
|
100
|
+
- **Document why** - Comment non-obvious fixes
|
|
101
|
+
- **Test after** - Ensure tests still pass
|
|
102
|
+
|
|
103
|
+
## Use with Other Skills
|
|
104
|
+
|
|
105
|
+
Combine with other skills for comprehensive fixing:
|
|
106
|
+
|
|
107
|
+
**With Ultrawork:**
|
|
108
|
+
```
|
|
109
|
+
/ultrawork fix all build errors
|
|
110
|
+
```
|
|
111
|
+
Spawns multiple build-fixer agents in parallel for different files.
|
|
112
|
+
|
|
113
|
+
**With Ralph:**
|
|
114
|
+
```
|
|
115
|
+
/ralph fix the build
|
|
116
|
+
```
|
|
117
|
+
Keeps trying until build passes, even if it takes multiple iterations.
|
|
118
|
+
|
|
119
|
+
**With Pipeline:**
|
|
120
|
+
```
|
|
121
|
+
/pipeline debug "build is failing"
|
|
122
|
+
```
|
|
123
|
+
Uses: explore → architect → build-fixer workflow.
|