oh-my-claude-sisyphus 2.4.1 → 2.6.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.
- package/README.md +56 -29
- package/dist/__tests__/hooks.test.js +255 -1
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +3 -1
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/notepad.test.d.ts +2 -0
- package/dist/__tests__/notepad.test.d.ts.map +1 -0
- package/dist/__tests__/notepad.test.js +374 -0
- package/dist/__tests__/notepad.test.js.map +1 -0
- package/dist/__tests__/ralph-prd.test.d.ts +2 -0
- package/dist/__tests__/ralph-prd.test.d.ts.map +1 -0
- package/dist/__tests__/ralph-prd.test.js +308 -0
- package/dist/__tests__/ralph-prd.test.js.map +1 -0
- package/dist/__tests__/ralph-progress.test.d.ts +2 -0
- package/dist/__tests__/ralph-progress.test.d.ts.map +1 -0
- package/dist/__tests__/ralph-progress.test.js +312 -0
- package/dist/__tests__/ralph-progress.test.js.map +1 -0
- package/dist/__tests__/skills.test.js +5 -3
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/agents/definitions.d.ts +4 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +147 -3
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/prometheus.js +2 -2
- package/dist/agents/prometheus.js.map +1 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +61 -0
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/magic-keywords.js +1 -1
- package/dist/hooks/index.d.ts +5 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +15 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/notepad/index.d.ts +114 -0
- package/dist/hooks/notepad/index.d.ts.map +1 -0
- package/dist/hooks/notepad/index.js +372 -0
- package/dist/hooks/notepad/index.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts +5 -0
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +71 -5
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph-loop/index.d.ts +48 -0
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
- package/dist/hooks/ralph-loop/index.js +127 -0
- package/dist/hooks/ralph-loop/index.js.map +1 -1
- package/dist/hooks/ralph-prd/index.d.ts +130 -0
- package/dist/hooks/ralph-prd/index.d.ts.map +1 -0
- package/dist/hooks/ralph-prd/index.js +310 -0
- package/dist/hooks/ralph-prd/index.js.map +1 -0
- package/dist/hooks/ralph-progress/index.d.ts +102 -0
- package/dist/hooks/ralph-progress/index.d.ts.map +1 -0
- package/dist/hooks/ralph-progress/index.js +408 -0
- package/dist/hooks/ralph-progress/index.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +26 -0
- package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +94 -0
- package/dist/hooks/ultraqa-loop/index.d.ts.map +1 -0
- package/dist/hooks/ultraqa-loop/index.js +216 -0
- package/dist/hooks/ultraqa-loop/index.js.map +1 -0
- package/dist/installer/hooks.d.ts +28 -0
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +262 -2
- package/dist/installer/hooks.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 +533 -23
- package/dist/installer/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install.sh +119 -16
- package/scripts/persistent-mode.mjs +167 -6
- package/scripts/post-tool-verifier.mjs +62 -1
- package/scripts/session-start.mjs +22 -0
- package/scripts/test-max-attempts.ts +94 -0
- package/scripts/test-mutual-exclusion.ts +152 -0
- package/scripts/test-notepad-integration.ts +495 -0
- package/scripts/test-remember-tags.ts +121 -0
- package/scripts/test-session-injection.ts +41 -0
- package/scripts/uninstall.sh +1 -0
package/dist/installer/index.js
CHANGED
|
@@ -29,7 +29,7 @@ export const HOOKS_DIR = join(CLAUDE_CONFIG_DIR, 'hooks');
|
|
|
29
29
|
export const SETTINGS_FILE = join(CLAUDE_CONFIG_DIR, 'settings.json');
|
|
30
30
|
export const VERSION_FILE = join(CLAUDE_CONFIG_DIR, '.sisyphus-version.json');
|
|
31
31
|
/** Current version */
|
|
32
|
-
export const VERSION = '2.
|
|
32
|
+
export const VERSION = '2.6.0';
|
|
33
33
|
/**
|
|
34
34
|
* Check if the current Node.js version meets the minimum requirement
|
|
35
35
|
*/
|
|
@@ -929,7 +929,7 @@ Include:
|
|
|
929
929
|
| **Interview Mode** | Default state | Consult, research, discuss. NO plan generation. |
|
|
930
930
|
| **Pre-Generation** | "Make it into a work plan" | Summon Metis → Ask final questions |
|
|
931
931
|
| **Plan Generation** | After pre-generation complete | Generate plan, optionally loop through Momus |
|
|
932
|
-
| **Handoff** | Plan saved | Tell user
|
|
932
|
+
| **Handoff** | Plan saved | Tell user "Plan saved. Start implementing when ready." |
|
|
933
933
|
|
|
934
934
|
## Key Principles
|
|
935
935
|
|
|
@@ -937,7 +937,7 @@ Include:
|
|
|
937
937
|
2. **Research-Backed Advice** - Use agents to provide evidence-based recommendations
|
|
938
938
|
3. **User Controls Transition** - NEVER generate plan until explicitly requested
|
|
939
939
|
4. **Metis Before Plan** - Always catch gaps before committing to plan
|
|
940
|
-
5. **Clear Handoff** -
|
|
940
|
+
5. **Clear Handoff** - Tell user the plan is ready to implement`,
|
|
941
941
|
'qa-tester.md': `---
|
|
942
942
|
name: qa-tester
|
|
943
943
|
description: Interactive CLI testing specialist using tmux (Sonnet)
|
|
@@ -1565,24 +1565,98 @@ If you have incomplete tasks and attempt to stop, the system will remind you:
|
|
|
1565
1565
|
|
|
1566
1566
|
**The boulder does not stop until it reaches the summit.**`,
|
|
1567
1567
|
'sisyphus-default.md': `---
|
|
1568
|
-
description:
|
|
1568
|
+
description: Configure Sisyphus in local project (.claude/CLAUDE.md)
|
|
1569
1569
|
---
|
|
1570
1570
|
|
|
1571
1571
|
$ARGUMENTS
|
|
1572
1572
|
|
|
1573
|
-
## Task: Configure Sisyphus Default Mode
|
|
1573
|
+
## Task: Configure Sisyphus Default Mode (Project-Scoped)
|
|
1574
1574
|
|
|
1575
|
-
**CRITICAL**: This skill ALWAYS downloads fresh CLAUDE.md from GitHub. DO NOT use the Write tool - use bash curl exclusively.
|
|
1575
|
+
**CRITICAL**: This skill ALWAYS downloads fresh CLAUDE.md from GitHub to your local project. DO NOT use the Write tool - use bash curl exclusively.
|
|
1576
|
+
|
|
1577
|
+
### Step 1: Create Local .claude Directory
|
|
1578
|
+
|
|
1579
|
+
Ensure the local project has a .claude directory:
|
|
1580
|
+
|
|
1581
|
+
\`\`\`bash
|
|
1582
|
+
# Create .claude directory in current project
|
|
1583
|
+
mkdir -p .claude && echo "✅ .claude directory created" || echo "❌ Failed to create .claude directory"
|
|
1584
|
+
\`\`\`
|
|
1585
|
+
|
|
1586
|
+
### Step 2: Download Fresh CLAUDE.md (MANDATORY)
|
|
1587
|
+
|
|
1588
|
+
Execute this bash command to download fresh CLAUDE.md to local project config:
|
|
1589
|
+
|
|
1590
|
+
\`\`\`bash
|
|
1591
|
+
# Download fresh CLAUDE.md to project-local .claude/
|
|
1592
|
+
curl -fsSL "https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-sisyphus/main/docs/CLAUDE.md" -o .claude/CLAUDE.md && \\
|
|
1593
|
+
echo "✅ CLAUDE.md downloaded successfully to .claude/CLAUDE.md" || \\
|
|
1594
|
+
echo "❌ Failed to download CLAUDE.md"
|
|
1595
|
+
\`\`\`
|
|
1596
|
+
|
|
1597
|
+
**MANDATORY**: Always run this command. Do NOT skip. Do NOT use Write tool.
|
|
1598
|
+
|
|
1599
|
+
**FALLBACK** if curl fails:
|
|
1600
|
+
Tell user to manually download from:
|
|
1601
|
+
https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-sisyphus/main/docs/CLAUDE.md
|
|
1602
|
+
|
|
1603
|
+
### Step 3: Verify Plugin Installation
|
|
1604
|
+
|
|
1605
|
+
The oh-my-claude-sisyphus plugin provides all hooks automatically via the plugin system. Verify the plugin is enabled:
|
|
1606
|
+
|
|
1607
|
+
\`\`\`bash
|
|
1608
|
+
grep -q "oh-my-claude-sisyphus" ~/.claude/settings.json && echo "Plugin enabled" || echo "Plugin NOT enabled"
|
|
1609
|
+
\`\`\`
|
|
1610
|
+
|
|
1611
|
+
If plugin is not enabled, instruct user:
|
|
1612
|
+
> Run: \`claude /install-plugin oh-my-claude-sisyphus\` to enable the plugin.
|
|
1613
|
+
|
|
1614
|
+
### Step 4: Confirm Success
|
|
1615
|
+
|
|
1616
|
+
After completing all steps, report:
|
|
1617
|
+
|
|
1618
|
+
✅ **Sisyphus Project Configuration Complete**
|
|
1619
|
+
- CLAUDE.md: Updated with latest configuration from GitHub at ./.claude/CLAUDE.md
|
|
1620
|
+
- Scope: **PROJECT** - applies only to this project
|
|
1621
|
+
- Hooks: Provided by plugin (no manual installation needed)
|
|
1622
|
+
- Agents: 19+ available (base + tiered variants)
|
|
1623
|
+
- Model routing: Haiku/Sonnet/Opus based on task complexity
|
|
1624
|
+
|
|
1625
|
+
**Note**: This configuration is project-specific and won't affect other projects or global settings.
|
|
1626
|
+
|
|
1627
|
+
---
|
|
1628
|
+
|
|
1629
|
+
## 🔄 Keeping Up to Date
|
|
1630
|
+
|
|
1631
|
+
After installing oh-my-claude-sisyphus updates (via npm or plugin update), run \`/sisyphus-default\` again in your project to get the latest CLAUDE.md configuration. This ensures you have the newest features and agent configurations.
|
|
1632
|
+
|
|
1633
|
+
---
|
|
1634
|
+
|
|
1635
|
+
## 🌍 Global vs Project Configuration
|
|
1636
|
+
|
|
1637
|
+
- **\`/sisyphus-default\`** (this command): Creates \`./.claude/CLAUDE.md\` in your current project
|
|
1638
|
+
- **\`/sisyphus-default-global\`**: Creates \`~/.claude/CLAUDE.md\` for all projects
|
|
1639
|
+
|
|
1640
|
+
Project-scoped configuration takes precedence over global configuration.`,
|
|
1641
|
+
'sisyphus-default-global.md': `---
|
|
1642
|
+
description: Configure Sisyphus globally in ~/.claude/CLAUDE.md
|
|
1643
|
+
---
|
|
1644
|
+
|
|
1645
|
+
$ARGUMENTS
|
|
1646
|
+
|
|
1647
|
+
## Task: Configure Sisyphus Default Mode (Global)
|
|
1648
|
+
|
|
1649
|
+
**CRITICAL**: This skill ALWAYS downloads fresh CLAUDE.md from GitHub to your global config. DO NOT use the Write tool - use bash curl exclusively.
|
|
1576
1650
|
|
|
1577
1651
|
### Step 1: Download Fresh CLAUDE.md (MANDATORY)
|
|
1578
1652
|
|
|
1579
|
-
Execute this bash command to erase and download fresh CLAUDE.md:
|
|
1653
|
+
Execute this bash command to erase and download fresh CLAUDE.md to global config:
|
|
1580
1654
|
|
|
1581
1655
|
\`\`\`bash
|
|
1582
1656
|
# Remove existing CLAUDE.md and download fresh from GitHub
|
|
1583
1657
|
rm -f ~/.claude/CLAUDE.md && \\
|
|
1584
1658
|
curl -fsSL "https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-sisyphus/main/docs/CLAUDE.md" -o ~/.claude/CLAUDE.md && \\
|
|
1585
|
-
echo "✅ CLAUDE.md downloaded successfully" || \\
|
|
1659
|
+
echo "✅ CLAUDE.md downloaded successfully to ~/.claude/CLAUDE.md" || \\
|
|
1586
1660
|
echo "❌ Failed to download CLAUDE.md"
|
|
1587
1661
|
\`\`\`
|
|
1588
1662
|
|
|
@@ -1592,29 +1666,51 @@ echo "❌ Failed to download CLAUDE.md"
|
|
|
1592
1666
|
Tell user to manually download from:
|
|
1593
1667
|
https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-sisyphus/main/docs/CLAUDE.md
|
|
1594
1668
|
|
|
1595
|
-
### Step 2:
|
|
1669
|
+
### Step 2: Clean Up Legacy Hooks (if present)
|
|
1670
|
+
|
|
1671
|
+
Check if old manual hooks exist and remove them to prevent duplicates:
|
|
1672
|
+
|
|
1673
|
+
\`\`\`bash
|
|
1674
|
+
# Remove legacy bash hook scripts (now handled by plugin system)
|
|
1675
|
+
rm -f ~/.claude/hooks/keyword-detector.sh
|
|
1676
|
+
rm -f ~/.claude/hooks/stop-continuation.sh
|
|
1677
|
+
rm -f ~/.claude/hooks/persistent-mode.sh
|
|
1678
|
+
rm -f ~/.claude/hooks/session-start.sh
|
|
1679
|
+
\`\`\`
|
|
1680
|
+
|
|
1681
|
+
Check \`~/.claude/settings.json\` for manual hook entries. If the "hooks" key exists with UserPromptSubmit, Stop, or SessionStart entries pointing to bash scripts, inform the user:
|
|
1682
|
+
|
|
1683
|
+
> **Note**: Found legacy hooks in settings.json. These should be removed since the plugin now provides hooks automatically. Remove the "hooks" section from ~/.claude/settings.json to prevent duplicate hook execution.
|
|
1684
|
+
|
|
1685
|
+
### Step 3: Verify Plugin Installation
|
|
1596
1686
|
|
|
1597
|
-
Verify the plugin is enabled:
|
|
1687
|
+
The oh-my-claude-sisyphus plugin provides all hooks automatically via the plugin system. Verify the plugin is enabled:
|
|
1598
1688
|
|
|
1599
1689
|
\`\`\`bash
|
|
1600
1690
|
grep -q "oh-my-claude-sisyphus" ~/.claude/settings.json && echo "Plugin enabled" || echo "Plugin NOT enabled"
|
|
1601
1691
|
\`\`\`
|
|
1602
1692
|
|
|
1603
|
-
|
|
1693
|
+
If plugin is not enabled, instruct user:
|
|
1694
|
+
> Run: \`claude /install-plugin oh-my-claude-sisyphus\` to enable the plugin.
|
|
1695
|
+
|
|
1696
|
+
### Step 4: Confirm Success
|
|
1604
1697
|
|
|
1605
1698
|
After completing all steps, report:
|
|
1606
1699
|
|
|
1607
|
-
✅ **Sisyphus Configuration Complete**
|
|
1608
|
-
- CLAUDE.md: Updated with latest configuration from GitHub
|
|
1700
|
+
✅ **Sisyphus Global Configuration Complete**
|
|
1701
|
+
- CLAUDE.md: Updated with latest configuration from GitHub at ~/.claude/CLAUDE.md
|
|
1702
|
+
- Scope: **GLOBAL** - applies to all Claude Code sessions
|
|
1609
1703
|
- Hooks: Provided by plugin (no manual installation needed)
|
|
1610
1704
|
- Agents: 19+ available (base + tiered variants)
|
|
1611
1705
|
- Model routing: Haiku/Sonnet/Opus based on task complexity
|
|
1612
1706
|
|
|
1707
|
+
**Note**: Hooks are now managed by the plugin system automatically. No manual hook installation required.
|
|
1708
|
+
|
|
1613
1709
|
---
|
|
1614
1710
|
|
|
1615
1711
|
## 🔄 Keeping Up to Date
|
|
1616
1712
|
|
|
1617
|
-
After installing oh-my-claude-sisyphus updates (via npm or plugin update), run \`/sisyphus-default\` again to get the latest CLAUDE.md configuration.`,
|
|
1713
|
+
After installing oh-my-claude-sisyphus updates (via npm or plugin update), run \`/sisyphus-default-global\` again to get the latest CLAUDE.md configuration. This ensures you have the newest features and agent configurations.`,
|
|
1618
1714
|
'plan.md': `---
|
|
1619
1715
|
description: Start a planning session with Prometheus
|
|
1620
1716
|
---
|
|
@@ -1747,12 +1843,12 @@ You have entered the Ralph Loop - an INESCAPABLE development cycle that binds yo
|
|
|
1747
1843
|
|
|
1748
1844
|
1. **WORK CONTINUOUSLY** - Break tasks into todos, execute systematically
|
|
1749
1845
|
2. **VERIFY THOROUGHLY** - Test, check, confirm every completion claim
|
|
1750
|
-
3. **PROMISE COMPLETION** - ONLY output \`<promise>
|
|
1846
|
+
3. **PROMISE COMPLETION** - ONLY output \`<promise>TASK_COMPLETE</promise>\` when 100% verified
|
|
1751
1847
|
4. **AUTO-CONTINUATION** - If you stop without the promise, YOU WILL BE REMINDED TO CONTINUE
|
|
1752
1848
|
|
|
1753
1849
|
## The Promise Mechanism
|
|
1754
1850
|
|
|
1755
|
-
The \`<promise>
|
|
1851
|
+
The \`<promise>TASK_COMPLETE</promise>\` tag is a SACRED CONTRACT. You may ONLY output it when:
|
|
1756
1852
|
|
|
1757
1853
|
✓ ALL todo items are marked 'completed'
|
|
1758
1854
|
✓ ALL requested functionality is implemented AND TESTED
|
|
@@ -1765,16 +1861,16 @@ The \`<promise>DONE</promise>\` tag is a SACRED CONTRACT. You may ONLY output it
|
|
|
1765
1861
|
|
|
1766
1862
|
| Condition | What Happens |
|
|
1767
1863
|
|-----------|--------------|
|
|
1768
|
-
| \`<promise>
|
|
1864
|
+
| \`<promise>TASK_COMPLETE</promise>\` | Loop ends - work verified complete |
|
|
1769
1865
|
| User runs \`/cancel-ralph\` | Loop cancelled by user |
|
|
1770
|
-
| Max iterations (
|
|
1866
|
+
| Max iterations (10) | Safety limit reached |
|
|
1771
1867
|
| Stop without promise | **CONTINUATION FORCED** |
|
|
1772
1868
|
|
|
1773
1869
|
## Continuation Enforcement
|
|
1774
1870
|
|
|
1775
1871
|
If you attempt to stop without the promise tag:
|
|
1776
1872
|
|
|
1777
|
-
> [RALPH LOOP CONTINUATION] You stopped without completing your promise. The task is NOT done. Continue working on incomplete items. Do not stop until you can truthfully output \`<promise>
|
|
1873
|
+
> [RALPH LOOP CONTINUATION] You stopped without completing your promise. The task is NOT done. Continue working on incomplete items. Do not stop until you can truthfully output \`<promise>TASK_COMPLETE</promise>\`.
|
|
1778
1874
|
|
|
1779
1875
|
## Working Style
|
|
1780
1876
|
|
|
@@ -1786,7 +1882,7 @@ If you attempt to stop without the promise tag:
|
|
|
1786
1882
|
|
|
1787
1883
|
## The Ralph Verification Checklist
|
|
1788
1884
|
|
|
1789
|
-
Before outputting \`<promise>
|
|
1885
|
+
Before outputting \`<promise>TASK_COMPLETE</promise>\`, verify:
|
|
1790
1886
|
|
|
1791
1887
|
- [ ] Todo list shows 100% completion
|
|
1792
1888
|
- [ ] All code changes compile/run without errors
|
|
@@ -1829,14 +1925,14 @@ Use qa-tester ONLY when ALL of these apply:
|
|
|
1829
1925
|
**Gating Rule**: If \`npm test\` (or equivalent) passes, you do NOT need qa-tester.
|
|
1830
1926
|
|
|
1831
1927
|
### Step 3: Based on Verification Results
|
|
1832
|
-
- **If Oracle APPROVED + Tests/QA-Tester PASS**: Output \`<promise>
|
|
1928
|
+
- **If Oracle APPROVED + Tests/QA-Tester PASS**: Output \`<promise>TASK_COMPLETE</promise>\`
|
|
1833
1929
|
- **If any REJECTED/FAILED**: Fix issues and re-verify
|
|
1834
1930
|
|
|
1835
1931
|
**NO PROMISE WITHOUT VERIFICATION.**
|
|
1836
1932
|
|
|
1837
1933
|
---
|
|
1838
1934
|
|
|
1839
|
-
Begin working on the task now. The loop will not release you until you earn your \`<promise>
|
|
1935
|
+
Begin working on the task now. The loop will not release you until you earn your \`<promise>TASK_COMPLETE</promise>\`.`,
|
|
1840
1936
|
'cancel-ralph.md': `---
|
|
1841
1937
|
description: Cancel active Ralph Loop
|
|
1842
1938
|
---
|
|
@@ -1845,7 +1941,421 @@ description: Cancel active Ralph Loop
|
|
|
1845
1941
|
|
|
1846
1942
|
The Ralph Loop has been cancelled. You can stop working on the current task.
|
|
1847
1943
|
|
|
1848
|
-
If you want to start a new loop, use \`/ralph-loop "task description"
|
|
1944
|
+
If you want to start a new loop, use \`/ralph-loop "task description"\`.`,
|
|
1945
|
+
'ultrawork-ralph.md': `---
|
|
1946
|
+
description: Maximum intensity mode with completion guarantee - ultrawork + ralph loop combined
|
|
1947
|
+
---
|
|
1948
|
+
|
|
1949
|
+
[ULTRAWORK-RALPH ACTIVATED - MAXIMUM INTENSITY + COMPLETION GUARANTEE]
|
|
1950
|
+
|
|
1951
|
+
$ARGUMENTS
|
|
1952
|
+
|
|
1953
|
+
## THE ULTIMATE MODE
|
|
1954
|
+
|
|
1955
|
+
You are now in **ULTRAWORK-RALPH** mode - the most powerful execution mode available. This combines:
|
|
1956
|
+
- **ULTRAWORK**: Maximum intensity, parallel everything, aggressive delegation
|
|
1957
|
+
- **RALPH LOOP**: Inescapable completion guarantee with oracle verification
|
|
1958
|
+
|
|
1959
|
+
There is no half-measures. There is no early exit. You work at MAXIMUM INTENSITY until VERIFIED completion.
|
|
1960
|
+
|
|
1961
|
+
## ULTRAWORK OVERRIDES (ACTIVE)
|
|
1962
|
+
|
|
1963
|
+
| Default Behavior | Ultrawork Override |
|
|
1964
|
+
|------------------|-------------------|
|
|
1965
|
+
| Parallelize when profitable | **PARALLEL EVERYTHING** |
|
|
1966
|
+
| Do simple tasks directly | **DELEGATE EVEN SMALL TASKS** |
|
|
1967
|
+
| Wait for verification | **DON'T WAIT - continue immediately** |
|
|
1968
|
+
| Background for long ops | **BACKGROUND EVERYTHING POSSIBLE** |
|
|
1969
|
+
|
|
1970
|
+
## RALPH LOOP ENFORCEMENT (ACTIVE)
|
|
1971
|
+
|
|
1972
|
+
The \`<promise>TASK_COMPLETE</promise>\` tag binds you to completion. You may ONLY output it when:
|
|
1973
|
+
|
|
1974
|
+
- [ ] ALL todo items are marked 'completed'
|
|
1975
|
+
- [ ] ALL requested functionality is implemented AND TESTED
|
|
1976
|
+
- [ ] ALL errors have been resolved
|
|
1977
|
+
- [ ] Oracle has VERIFIED completion
|
|
1978
|
+
- [ ] You have TESTED (not assumed) the changes work
|
|
1979
|
+
|
|
1980
|
+
**If you stop without the promise, YOU WILL BE FORCED TO CONTINUE.**
|
|
1981
|
+
|
|
1982
|
+
## EXECUTION PROTOCOL
|
|
1983
|
+
|
|
1984
|
+
### 1. PARALLEL EVERYTHING
|
|
1985
|
+
- Fire off MULTIPLE agents simultaneously
|
|
1986
|
+
- Use background execution for ALL operations
|
|
1987
|
+
- Launch 3-5 agents in parallel when possible
|
|
1988
|
+
- Maximum throughput is the only goal
|
|
1989
|
+
|
|
1990
|
+
### 2. DELEGATE AGGRESSIVELY
|
|
1991
|
+
Route tasks to specialists IMMEDIATELY:
|
|
1992
|
+
- \`oracle\` / \`oracle-medium\` → debugging, analysis, verification
|
|
1993
|
+
- \`librarian\` → research, doc lookup
|
|
1994
|
+
- \`explore\` → codebase search
|
|
1995
|
+
- \`frontend-engineer\` → UI work
|
|
1996
|
+
- \`sisyphus-junior\` / \`sisyphus-junior-high\` → code changes
|
|
1997
|
+
- \`qa-tester\` / \`qa-tester-high\` → verification
|
|
1998
|
+
|
|
1999
|
+
### 3. NEVER WAIT
|
|
2000
|
+
- Start the next task BEFORE the previous one completes
|
|
2001
|
+
- Check background task results LATER
|
|
2002
|
+
- Maximum concurrency at all times
|
|
2003
|
+
|
|
2004
|
+
### 4. TODO OBSESSION
|
|
2005
|
+
- Create TODO list IMMEDIATELY with atomic steps
|
|
2006
|
+
- Mark in_progress BEFORE starting (one at a time)
|
|
2007
|
+
- Mark completed IMMEDIATELY after each step
|
|
2008
|
+
- NEVER batch completions
|
|
2009
|
+
|
|
2010
|
+
## VERIFICATION PROTOCOL (MANDATORY)
|
|
2011
|
+
|
|
2012
|
+
### Step 1: Self-Check
|
|
2013
|
+
Run through the checklist above. ALL boxes must be checked.
|
|
2014
|
+
|
|
2015
|
+
### Step 2: Oracle Review
|
|
2016
|
+
\`\`\`
|
|
2017
|
+
Task(subagent_type="oracle", prompt="VERIFY COMPLETION:
|
|
2018
|
+
Original task: [task]
|
|
2019
|
+
Changes made: [list]
|
|
2020
|
+
Tests run: [results]
|
|
2021
|
+
Verify this is complete and production-ready.")
|
|
2022
|
+
\`\`\`
|
|
2023
|
+
|
|
2024
|
+
### Step 3: Runtime Verification
|
|
2025
|
+
\`\`\`bash
|
|
2026
|
+
npm test # or pytest, go test, cargo test
|
|
2027
|
+
\`\`\`
|
|
2028
|
+
|
|
2029
|
+
### Step 4: Decision
|
|
2030
|
+
- **Oracle APPROVED + Tests PASS** → Output \`<promise>TASK_COMPLETE</promise>\`
|
|
2031
|
+
- **Any REJECTED/FAILED** → Fix and re-verify
|
|
2032
|
+
|
|
2033
|
+
## EXIT CONDITIONS
|
|
2034
|
+
|
|
2035
|
+
| Condition | What Happens |
|
|
2036
|
+
|-----------|--------------|
|
|
2037
|
+
| \`<promise>TASK_COMPLETE</promise>\` | Both modes end - work verified complete |
|
|
2038
|
+
| User runs \`/cancel-ralph\` | Both modes cancelled |
|
|
2039
|
+
| Max iterations (10) | Safety limit reached |
|
|
2040
|
+
| Stop without promise | **CONTINUATION FORCED** |
|
|
2041
|
+
|
|
2042
|
+
## THE BOULDER NEVER STOPS
|
|
2043
|
+
|
|
2044
|
+
The boulder rolls at MAXIMUM SPEED until it reaches the summit. No shortcuts. No giving up. Only verified completion releases you.
|
|
2045
|
+
|
|
2046
|
+
---
|
|
2047
|
+
|
|
2048
|
+
Begin working NOW. PARALLEL EVERYTHING. The loop will not release you until you earn your \`<promise>TASK_COMPLETE</promise>\`.`,
|
|
2049
|
+
'ultraqa.md': `---
|
|
2050
|
+
description: QA cycling workflow - test, verify, fix, repeat until goal met
|
|
2051
|
+
---
|
|
2052
|
+
|
|
2053
|
+
[ULTRAQA ACTIVATED - AUTONOMOUS QA CYCLING]
|
|
2054
|
+
|
|
2055
|
+
$ARGUMENTS
|
|
2056
|
+
|
|
2057
|
+
## ULTRAQA MODE
|
|
2058
|
+
|
|
2059
|
+
You are now in **ULTRAQA** mode - an autonomous QA cycling workflow that runs until your quality goal is met.
|
|
2060
|
+
|
|
2061
|
+
**Cycle**: qa-tester → oracle verification → fix → repeat
|
|
2062
|
+
|
|
2063
|
+
## GOAL PARSING
|
|
2064
|
+
|
|
2065
|
+
Parse the goal from arguments. Supported formats:
|
|
2066
|
+
|
|
2067
|
+
| Invocation | Goal Type | What to Check |
|
|
2068
|
+
|------------|-----------|---------------|
|
|
2069
|
+
| \`/ultraqa --tests\` | tests | All test suites pass |
|
|
2070
|
+
| \`/ultraqa --build\` | build | Build succeeds with exit 0 |
|
|
2071
|
+
| \`/ultraqa --lint\` | lint | No lint errors |
|
|
2072
|
+
| \`/ultraqa --typecheck\` | typecheck | No TypeScript errors |
|
|
2073
|
+
| \`/ultraqa --custom "pattern"\` | custom | Custom success pattern in output |
|
|
2074
|
+
|
|
2075
|
+
If no structured goal provided, interpret the argument as a custom goal.
|
|
2076
|
+
|
|
2077
|
+
## CYCLE WORKFLOW
|
|
2078
|
+
|
|
2079
|
+
### Cycle N (Max 5)
|
|
2080
|
+
|
|
2081
|
+
1. **RUN QA**: Execute verification based on goal type
|
|
2082
|
+
- \`--tests\`: Run \`npm test\` or equivalent
|
|
2083
|
+
- \`--build\`: Run \`npm run build\` or equivalent
|
|
2084
|
+
- \`--lint\`: Run \`npm run lint\` or equivalent
|
|
2085
|
+
- \`--typecheck\`: Run \`npm run typecheck\` or \`tsc --noEmit\`
|
|
2086
|
+
- \`--custom\`: Run appropriate command and check for pattern
|
|
2087
|
+
|
|
2088
|
+
2. **CHECK RESULT**: Did the goal pass?
|
|
2089
|
+
- **YES** → Exit with success message
|
|
2090
|
+
- **NO** → Continue to step 3
|
|
2091
|
+
|
|
2092
|
+
3. **ORACLE DIAGNOSIS**: Spawn oracle to analyze failure
|
|
2093
|
+
\`\`\`
|
|
2094
|
+
Task(subagent_type="oracle", prompt="DIAGNOSE FAILURE:
|
|
2095
|
+
Goal: [goal type]
|
|
2096
|
+
Output: [test/build output]
|
|
2097
|
+
Provide root cause and specific fix recommendations.")
|
|
2098
|
+
\`\`\`
|
|
2099
|
+
|
|
2100
|
+
4. **FIX ISSUES**: Apply oracle's recommendations
|
|
2101
|
+
- Use sisyphus-junior for code changes
|
|
2102
|
+
- Be specific and targeted
|
|
2103
|
+
|
|
2104
|
+
5. **REPEAT**: Go back to step 1
|
|
2105
|
+
|
|
2106
|
+
## EXIT CONDITIONS
|
|
2107
|
+
|
|
2108
|
+
| Condition | Action |
|
|
2109
|
+
|-----------|--------|
|
|
2110
|
+
| **Goal Met** | Exit with success: "ULTRAQA COMPLETE: Goal met after N cycles" |
|
|
2111
|
+
| **Cycle 5 Reached** | Exit with diagnosis: "ULTRAQA STOPPED: Max cycles. Diagnosis: ..." |
|
|
2112
|
+
| **Same Failure 3x** | Exit early: "ULTRAQA STOPPED: Same failure detected 3 times. Root cause: ..." |
|
|
2113
|
+
| **Environment Error** | Exit: "ULTRAQA ERROR: [tmux/port/dependency issue]" |
|
|
2114
|
+
|
|
2115
|
+
## OBSERVABILITY
|
|
2116
|
+
|
|
2117
|
+
Output progress each cycle:
|
|
2118
|
+
\`\`\`
|
|
2119
|
+
[ULTRAQA Cycle 1/5] Running tests...
|
|
2120
|
+
[ULTRAQA Cycle 1/5] FAILED - 3 tests failing
|
|
2121
|
+
[ULTRAQA Cycle 1/5] Oracle diagnosing...
|
|
2122
|
+
[ULTRAQA Cycle 1/5] Fixing: auth.test.ts - missing mock
|
|
2123
|
+
[ULTRAQA Cycle 2/5] Running tests...
|
|
2124
|
+
[ULTRAQA Cycle 2/5] PASSED - All 47 tests pass
|
|
2125
|
+
[ULTRAQA COMPLETE] Goal met after 2 cycles
|
|
2126
|
+
\`\`\`
|
|
2127
|
+
|
|
2128
|
+
## STATE TRACKING
|
|
2129
|
+
|
|
2130
|
+
Track state in \`.sisyphus/ultraqa-state.json\`:
|
|
2131
|
+
\`\`\`json
|
|
2132
|
+
{
|
|
2133
|
+
"active": true,
|
|
2134
|
+
"goal_type": "tests",
|
|
2135
|
+
"goal_pattern": null,
|
|
2136
|
+
"cycle": 1,
|
|
2137
|
+
"max_cycles": 5,
|
|
2138
|
+
"failures": ["3 tests failing: auth.test.ts"],
|
|
2139
|
+
"started_at": "2024-01-18T12:00:00Z",
|
|
2140
|
+
"session_id": "uuid"
|
|
2141
|
+
}
|
|
2142
|
+
\`\`\`
|
|
2143
|
+
|
|
2144
|
+
## CANCELLATION
|
|
2145
|
+
|
|
2146
|
+
User can cancel with \`/cancel-ultraqa\` which clears the state file.
|
|
2147
|
+
|
|
2148
|
+
## IMPORTANT RULES
|
|
2149
|
+
|
|
2150
|
+
1. **PARALLEL when possible** - Run diagnosis while preparing potential fixes
|
|
2151
|
+
2. **TRACK failures** - Record each failure to detect patterns
|
|
2152
|
+
3. **EARLY EXIT on pattern** - 3x same failure = stop and surface
|
|
2153
|
+
4. **CLEAR OUTPUT** - User should always know current cycle and status
|
|
2154
|
+
5. **CLEAN UP** - Clear state file on completion or cancellation
|
|
2155
|
+
|
|
2156
|
+
---
|
|
2157
|
+
|
|
2158
|
+
Begin ULTRAQA cycling now. Parse the goal and start cycle 1.`,
|
|
2159
|
+
'cancel-ultraqa.md': `---
|
|
2160
|
+
description: Cancel active UltraQA cycling workflow
|
|
2161
|
+
---
|
|
2162
|
+
|
|
2163
|
+
[ULTRAQA CANCELLED]
|
|
2164
|
+
|
|
2165
|
+
The UltraQA cycling workflow has been cancelled. Clearing state file.
|
|
2166
|
+
|
|
2167
|
+
## MANDATORY ACTION
|
|
2168
|
+
|
|
2169
|
+
Execute this command to cancel UltraQA:
|
|
2170
|
+
|
|
2171
|
+
\`\`\`bash
|
|
2172
|
+
mkdir -p .sisyphus && echo '{"active": false, "cancelled_at": "'\$(date -Iseconds)'", "reason": "User cancelled via /cancel-ultraqa"}' > .sisyphus/ultraqa-state.json
|
|
2173
|
+
\`\`\`
|
|
2174
|
+
|
|
2175
|
+
After running this command, the QA cycling will stop.
|
|
2176
|
+
|
|
2177
|
+
## To Start Fresh
|
|
2178
|
+
|
|
2179
|
+
- \`/ultraqa --tests\` - Run until all tests pass
|
|
2180
|
+
- \`/ultraqa --build\` - Run until build succeeds
|
|
2181
|
+
- \`/ultraqa --lint\` - Run until no lint errors
|
|
2182
|
+
- \`/ultraqa --typecheck\` - Run until no type errors
|
|
2183
|
+
- \`/ultraqa --custom "pattern"\` - Run until pattern matches`,
|
|
2184
|
+
'ralph-init.md': `---
|
|
2185
|
+
description: Initialize a PRD (Product Requirements Document) for structured ralph-loop execution
|
|
2186
|
+
---
|
|
2187
|
+
|
|
2188
|
+
[RALPH-INIT - PRD CREATION MODE]
|
|
2189
|
+
|
|
2190
|
+
$ARGUMENTS
|
|
2191
|
+
|
|
2192
|
+
## What is PRD?
|
|
2193
|
+
|
|
2194
|
+
A PRD (Product Requirements Document) structures your task into discrete user stories, each with:
|
|
2195
|
+
- **ID**: Unique identifier (US-001, US-002, etc.)
|
|
2196
|
+
- **Title**: Short description
|
|
2197
|
+
- **Description**: Full user story
|
|
2198
|
+
- **Acceptance Criteria**: What must be true for completion
|
|
2199
|
+
- **Priority**: Execution order (1 = highest)
|
|
2200
|
+
- **passes**: Boolean tracking completion
|
|
2201
|
+
|
|
2202
|
+
## Your Task
|
|
2203
|
+
|
|
2204
|
+
Create a \`prd.json\` file in \`.sisyphus/\` directory based on the task description provided.
|
|
2205
|
+
|
|
2206
|
+
### Step 1: Analyze the Task
|
|
2207
|
+
|
|
2208
|
+
Break down the task into small, focused user stories. Each story should be:
|
|
2209
|
+
- Completable in one focused session
|
|
2210
|
+
- Independently testable
|
|
2211
|
+
- Clear about what "done" looks like
|
|
2212
|
+
|
|
2213
|
+
**Right-sized stories:**
|
|
2214
|
+
- Add a database column and migration
|
|
2215
|
+
- Add a UI component to an existing page
|
|
2216
|
+
- Update a server action with new logic
|
|
2217
|
+
- Add a filter dropdown to a list
|
|
2218
|
+
|
|
2219
|
+
**Too big (split these):**
|
|
2220
|
+
- "Build the entire dashboard"
|
|
2221
|
+
- "Add authentication"
|
|
2222
|
+
- "Refactor the API"
|
|
2223
|
+
|
|
2224
|
+
### Step 2: Create prd.json
|
|
2225
|
+
|
|
2226
|
+
Write the file to \`.sisyphus/prd.json\` with this structure:
|
|
2227
|
+
|
|
2228
|
+
\`\`\`json
|
|
2229
|
+
{
|
|
2230
|
+
"project": "[Project Name]",
|
|
2231
|
+
"branchName": "ralph/[feature-name]",
|
|
2232
|
+
"description": "[Overall feature description]",
|
|
2233
|
+
"userStories": [
|
|
2234
|
+
{
|
|
2235
|
+
"id": "US-001",
|
|
2236
|
+
"title": "[Short title]",
|
|
2237
|
+
"description": "As a [user], I want to [action] so that [benefit].",
|
|
2238
|
+
"acceptanceCriteria": [
|
|
2239
|
+
"Criterion 1",
|
|
2240
|
+
"Criterion 2",
|
|
2241
|
+
"Typecheck passes",
|
|
2242
|
+
"Tests pass"
|
|
2243
|
+
],
|
|
2244
|
+
"priority": 1,
|
|
2245
|
+
"passes": false,
|
|
2246
|
+
"notes": ""
|
|
2247
|
+
}
|
|
2248
|
+
]
|
|
2249
|
+
}
|
|
2250
|
+
\`\`\`
|
|
2251
|
+
|
|
2252
|
+
### Step 3: Initialize Progress Log
|
|
2253
|
+
|
|
2254
|
+
Also create \`.sisyphus/progress.txt\`:
|
|
2255
|
+
|
|
2256
|
+
\`\`\`
|
|
2257
|
+
# Ralph Progress Log
|
|
2258
|
+
Started: [ISO timestamp]
|
|
2259
|
+
|
|
2260
|
+
## Codebase Patterns
|
|
2261
|
+
(No patterns discovered yet)
|
|
2262
|
+
|
|
2263
|
+
---
|
|
2264
|
+
|
|
2265
|
+
\`\`\`
|
|
2266
|
+
|
|
2267
|
+
### Step 4: Report
|
|
2268
|
+
|
|
2269
|
+
After creating the files, output a summary:
|
|
2270
|
+
|
|
2271
|
+
\`\`\`
|
|
2272
|
+
PRD Created Successfully!
|
|
2273
|
+
|
|
2274
|
+
Project: [name]
|
|
2275
|
+
Branch: [branch]
|
|
2276
|
+
Stories: [count]
|
|
2277
|
+
|
|
2278
|
+
Stories to implement:
|
|
2279
|
+
1. [US-001] - [title]
|
|
2280
|
+
2. [US-002] - [title]
|
|
2281
|
+
...
|
|
2282
|
+
|
|
2283
|
+
Run \`/ralph-loop\` to start working through these stories.
|
|
2284
|
+
\`\`\`
|
|
2285
|
+
|
|
2286
|
+
## Quality Guidelines
|
|
2287
|
+
|
|
2288
|
+
1. **Acceptance criteria should be verifiable** - Include "Typecheck passes" and "Tests pass" where applicable
|
|
2289
|
+
2. **Include browser verification for UI stories** - "Verify in browser" for frontend work
|
|
2290
|
+
3. **Keep stories independent** - Avoid dependencies between stories when possible
|
|
2291
|
+
4. **Order by priority** - Put foundational work (database, types) before UI
|
|
2292
|
+
|
|
2293
|
+
---
|
|
2294
|
+
|
|
2295
|
+
Begin analyzing the task and creating the PRD now.`,
|
|
2296
|
+
'note.md': `---
|
|
2297
|
+
description: Save notes to notepad.md for compaction resilience
|
|
2298
|
+
---
|
|
2299
|
+
|
|
2300
|
+
# Note Command
|
|
2301
|
+
|
|
2302
|
+
Save important context to \`.sisyphus/notepad.md\` that survives conversation compaction.
|
|
2303
|
+
|
|
2304
|
+
$ARGUMENTS
|
|
2305
|
+
|
|
2306
|
+
## Usage
|
|
2307
|
+
|
|
2308
|
+
| Command | Action |
|
|
2309
|
+
|---------|--------|
|
|
2310
|
+
| \`/note <content>\` | Add to Working Memory with timestamp |
|
|
2311
|
+
| \`/note --priority <content>\` | Add to Priority Context (always loaded) |
|
|
2312
|
+
| \`/note --manual <content>\` | Add to MANUAL section (never pruned) |
|
|
2313
|
+
| \`/note --show\` | Display current notepad contents |
|
|
2314
|
+
| \`/note --prune\` | Remove entries older than 7 days |
|
|
2315
|
+
| \`/note --clear\` | Clear Working Memory (keep Priority + MANUAL) |
|
|
2316
|
+
|
|
2317
|
+
## Sections
|
|
2318
|
+
|
|
2319
|
+
### Priority Context (500 char limit)
|
|
2320
|
+
- **Always** injected on session start
|
|
2321
|
+
- Use for critical facts: "Project uses pnpm", "API in src/api/client.ts"
|
|
2322
|
+
- Keep it SHORT - this eats into your context budget
|
|
2323
|
+
|
|
2324
|
+
### Working Memory
|
|
2325
|
+
- Timestamped session notes
|
|
2326
|
+
- Auto-pruned after 7 days
|
|
2327
|
+
- Good for: debugging breadcrumbs, temporary findings
|
|
2328
|
+
|
|
2329
|
+
### MANUAL
|
|
2330
|
+
- Never auto-pruned
|
|
2331
|
+
- User-controlled permanent notes
|
|
2332
|
+
- Good for: team contacts, deployment info
|
|
2333
|
+
|
|
2334
|
+
## Examples
|
|
2335
|
+
|
|
2336
|
+
\`\`\`
|
|
2337
|
+
/note Found auth bug in UserContext - missing useEffect dependency
|
|
2338
|
+
/note --priority Project uses TypeScript strict mode, all files in src/
|
|
2339
|
+
/note --manual Contact: api-team@company.com for backend questions
|
|
2340
|
+
/note --show
|
|
2341
|
+
/note --prune
|
|
2342
|
+
\`\`\`
|
|
2343
|
+
|
|
2344
|
+
## Behavior
|
|
2345
|
+
|
|
2346
|
+
1. Creates \`.sisyphus/notepad.md\` if it doesn't exist
|
|
2347
|
+
2. Parses the argument to determine section
|
|
2348
|
+
3. Appends content with timestamp (for Working Memory)
|
|
2349
|
+
4. Warns if Priority Context exceeds 500 chars
|
|
2350
|
+
5. Confirms what was saved
|
|
2351
|
+
|
|
2352
|
+
## Integration
|
|
2353
|
+
|
|
2354
|
+
Notepad content is automatically loaded on session start:
|
|
2355
|
+
- Priority Context: ALWAYS loaded
|
|
2356
|
+
- Working Memory: Loaded if recent entries exist
|
|
2357
|
+
|
|
2358
|
+
This helps survive conversation compaction without losing critical context.`
|
|
1849
2359
|
};
|
|
1850
2360
|
// SKILL_DEFINITIONS removed - skills are now only in COMMAND_DEFINITIONS to avoid duplicates
|
|
1851
2361
|
// Skills are installed to ~/.claude/commands/<skill>/skill.md
|