feat(ultrawork-manifesto-web): create static manifesto site with sisyphuslabs-inspired design
This commit is contained in:
BIN
ultrawork-manifesto-web/public/images/footer-pattern.png
Normal file
BIN
ultrawork-manifesto-web/public/images/footer-pattern.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
BIN
ultrawork-manifesto-web/public/images/hero.png
Normal file
BIN
ultrawork-manifesto-web/public/images/hero.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.5 MiB |
BIN
ultrawork-manifesto-web/public/images/orb-divider.png
Normal file
BIN
ultrawork-manifesto-web/public/images/orb-divider.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 704 KiB |
281
ultrawork-manifesto-web/src/index.html
Normal file
281
ultrawork-manifesto-web/src/index.html
Normal file
@@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ultrawork Manifesto</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=JetBrains+Mono:wght@400&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="hero-container">
|
||||
<img src="../public/images/hero.png" alt="Ultrawork Hero" class="hero-image">
|
||||
<h1 class="hero-title">Manifesto</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<!-- Section 1 -->
|
||||
<section id="human-intervention">
|
||||
<h2>Human Intervention is a Failure Signal</h2>
|
||||
|
||||
<div class="gold-gradient-text bottleneck-text">
|
||||
HUMAN IN THE LOOP = BOTTLENECK<br>
|
||||
HUMAN IN THE LOOP = BOTTLENECK<br>
|
||||
HUMAN IN THE LOOP = BOTTLENECK
|
||||
</div>
|
||||
|
||||
<p>Think about autonomous driving. When a human has to take over the wheel, that's not a feature - it's a failure of the system. The car couldn't handle the situation on its own.</p>
|
||||
|
||||
<h3>Why is coding any different?</h3>
|
||||
|
||||
<p>When you find yourself:</p>
|
||||
<ul>
|
||||
<li>Fixing the AI's half-finished code</li>
|
||||
<li>Manually correcting obvious mistakes</li>
|
||||
<li>Guiding the agent step-by-step through a task</li>
|
||||
<li>Repeatedly clarifying the same requirements</li>
|
||||
</ul>
|
||||
|
||||
<p>...that's not "human-AI collaboration." That's the AI failing to do its job.</p>
|
||||
|
||||
<p><strong>Oh My OpenCode is built on this premise</strong>: Human intervention during agentic work is fundamentally a wrong signal. If the system is designed correctly, the agent should complete the work without requiring you to babysit it.</p>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 2 -->
|
||||
<section id="indistinguishable-code">
|
||||
<h2>Indistinguishable Code</h2>
|
||||
|
||||
<p class="highlight-box"><strong>Goal: Code written by the agent should be indistinguishable from code written by a senior engineer.</strong></p>
|
||||
|
||||
<p>Not "AI-generated code that needs cleanup." Not "a good starting point." The actual, final, production-ready code.</p>
|
||||
|
||||
<p>This means:</p>
|
||||
<ul>
|
||||
<li>Following existing codebase patterns exactly</li>
|
||||
<li>Proper error handling without being asked</li>
|
||||
<li>Tests that actually test the right things</li>
|
||||
<li>No AI slop (over-engineering, unnecessary abstractions, scope creep)</li>
|
||||
<li>Comments only when they add value</li>
|
||||
</ul>
|
||||
|
||||
<p>If you can tell whether a commit was made by a human or an agent, the agent has failed.</p>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 3 -->
|
||||
<section id="token-cost">
|
||||
<h2>Token Cost vs. Productivity</h2>
|
||||
|
||||
<p><strong>Higher token usage is acceptable if it significantly increases productivity.</strong></p>
|
||||
|
||||
<p>Using more tokens to:</p>
|
||||
<ul>
|
||||
<li>Have multiple specialized agents research in parallel</li>
|
||||
<li>Get the job done completely without human intervention</li>
|
||||
<li>Verify work thoroughly before completion</li>
|
||||
<li>Accumulate knowledge across tasks</li>
|
||||
</ul>
|
||||
|
||||
<p>...is a worthwhile investment when it means 10x, 20x, or 100x productivity gains.</p>
|
||||
|
||||
<h3>However:</h3>
|
||||
|
||||
<p>Unnecessary token waste is not pursued. The system optimizes for:</p>
|
||||
<ul>
|
||||
<li>Using cheaper models (Haiku, Flash) for simple tasks</li>
|
||||
<li>Avoiding redundant exploration</li>
|
||||
<li>Caching learnings across sessions</li>
|
||||
<li>Stopping research when sufficient context is gathered</li>
|
||||
</ul>
|
||||
|
||||
<p>Token efficiency matters. But not at the cost of work quality or human cognitive load.</p>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 4 -->
|
||||
<section id="cognitive-load">
|
||||
<h2>Minimize Human Cognitive Load</h2>
|
||||
|
||||
<p><strong>The human should only need to say what they want. Everything else is the agent's job.</strong></p>
|
||||
|
||||
<p>Two approaches to achieve this:</p>
|
||||
|
||||
<div class="approach-container">
|
||||
<div class="approach">
|
||||
<h3>Approach 1: Prometheus (Interview Mode)</h3>
|
||||
<p>You say: "I want to add authentication."</p>
|
||||
<p>Prometheus:</p>
|
||||
<ul>
|
||||
<li>Researches your codebase to understand existing patterns</li>
|
||||
<li>Asks clarifying questions based on actual findings</li>
|
||||
<li>Surfaces edge cases you hadn't considered</li>
|
||||
<li>Documents decisions as you make them</li>
|
||||
<li>Generates a complete work plan</li>
|
||||
</ul>
|
||||
<p><strong>You provide intent. The agent provides structure.</strong></p>
|
||||
</div>
|
||||
|
||||
<div class="approach">
|
||||
<h3>Approach 2: Ultrawork (Just Do It Mode)</h3>
|
||||
<p>You say: "ulw add authentication"</p>
|
||||
<p>The agent:</p>
|
||||
<ul>
|
||||
<li>Figures out the right approach</li>
|
||||
<li>Researches best practices</li>
|
||||
<li>Implements following conventions</li>
|
||||
<li>Verifies everything works</li>
|
||||
<li>Keeps going until complete</li>
|
||||
</ul>
|
||||
<p><strong>You provide intent. The agent handles everything.</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>In both cases, the human's job is to <strong>express what they want</strong>, not to manage how it gets done.</p>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 5 -->
|
||||
<section id="predictable-continuous">
|
||||
<h2>Predictable, Continuous, Delegatable</h2>
|
||||
|
||||
<p><strong>The ideal agent should work like a compiler</strong>: markdown document goes in, working code comes out.</p>
|
||||
|
||||
<h3>Predictable</h3>
|
||||
<p>Given the same inputs:</p>
|
||||
<ul>
|
||||
<li>Same codebase patterns</li>
|
||||
<li>Same requirements</li>
|
||||
<li>Same constraints</li>
|
||||
</ul>
|
||||
<p>...the output should be consistent. Not random, not surprising, not "creative" in ways you didn't ask for.</p>
|
||||
|
||||
<h3>Continuous</h3>
|
||||
<p>Work should survive interruptions:</p>
|
||||
<ul>
|
||||
<li>Session crashes? Resume with <code>/start-work</code></li>
|
||||
<li>Need to step away? Progress is tracked</li>
|
||||
<li>Multi-day project? Context is preserved</li>
|
||||
</ul>
|
||||
<p>The agent maintains state. You don't have to.</p>
|
||||
|
||||
<h3>Delegatable</h3>
|
||||
<p>Just like you can assign a task to a capable team member and trust them to handle it, you should be able to delegate to the agent.</p>
|
||||
<p>This means:</p>
|
||||
<ul>
|
||||
<li>Clear acceptance criteria, verified independently</li>
|
||||
<li>Self-correcting behavior when something goes wrong</li>
|
||||
<li>Escalation (to Oracle, to user) only when truly needed</li>
|
||||
<li>Complete work, not "mostly done"</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 6 -->
|
||||
<section id="core-loop">
|
||||
<h2>The Core Loop</h2>
|
||||
|
||||
<div class="ascii-art">
|
||||
Human Intent → Agent Execution → Verified Result
|
||||
↑ ↓
|
||||
└──────── Minimum ─────────────┘
|
||||
(intervention only on true failure)
|
||||
</div>
|
||||
|
||||
<p>Everything in Oh My OpenCode is designed to make this loop work:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Feature</th>
|
||||
<th>Purpose</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Prometheus</td>
|
||||
<td>Extract intent through intelligent interview</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Metis</td>
|
||||
<td>Catch ambiguities before they become bugs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Momus</td>
|
||||
<td>Verify plans are complete before execution</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Orchestrator</td>
|
||||
<td>Coordinate work without human micromanagement</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Todo Continuation</td>
|
||||
<td>Force completion, prevent "I'm done" lies</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Category System</td>
|
||||
<td>Route to optimal model without human decision</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Background Agents</td>
|
||||
<td>Parallel research without blocking user</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wisdom Accumulation</td>
|
||||
<td>Learn from work, don't repeat mistakes</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<div class="divider">
|
||||
<img src="../public/images/orb-divider.png" alt="Divider">
|
||||
</div>
|
||||
|
||||
<!-- Section 7 -->
|
||||
<section id="future">
|
||||
<h2>The Future We're Building</h2>
|
||||
|
||||
<p>A world where:</p>
|
||||
<ul>
|
||||
<li>Human developers focus on <strong>what</strong> to build, not <strong>how</strong> to get AI to build it</li>
|
||||
<li>Code quality is independent of who (or what) wrote it</li>
|
||||
<li>Complex projects are as easy as simple ones (just take longer)</li>
|
||||
<li>"Prompt engineering" becomes as obsolete as "compiler debugging"</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>The agent should be invisible.</strong> Not in the sense that it's hidden, but in the sense that it just works - like electricity, like running water, like the internet.</p>
|
||||
|
||||
<p>You flip the switch. The light turns on. You don't think about the power grid.</p>
|
||||
|
||||
<p class="final-statement">That's the goal.</p>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-content">
|
||||
<img src="../public/images/footer-pattern.png" alt="Footer Pattern" class="footer-pattern">
|
||||
<p><strong>just ulw ulw</strong></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
336
ultrawork-manifesto-web/src/styles.css
Normal file
336
ultrawork-manifesto-web/src/styles.css
Normal file
@@ -0,0 +1,336 @@
|
||||
/* Design System */
|
||||
:root {
|
||||
/* Colors */
|
||||
--bg-primary: #0a0a0a;
|
||||
--bg-secondary: #0E1115;
|
||||
--text-primary: #ffffff;
|
||||
--text-muted: #99A1AF;
|
||||
--text-dim: #6A7282;
|
||||
--accent: #87F0F2;
|
||||
--accent-glow: #ABF5F7;
|
||||
|
||||
/* Gold gradient for emphasis */
|
||||
--gold-gradient: linear-gradient(180deg, #f0daaf 0%, #e4c380 50%, #5d5135 100%);
|
||||
|
||||
/* Typography */
|
||||
--font-primary: 'Inter', system-ui, sans-serif;
|
||||
--font-mono: 'JetBrains Mono', monospace;
|
||||
|
||||
/* Layout */
|
||||
--max-width: 800px;
|
||||
--spacing-section: 80px;
|
||||
}
|
||||
|
||||
/* Reset & Base Styles */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--bg-primary);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-primary);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
h1, h2, h3 {
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 3.5rem;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2.5rem;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 2rem;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
color: var(--accent);
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1.5rem;
|
||||
color: var(--text-muted);
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: var(--text-primary);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin-bottom: 2rem;
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
ul li {
|
||||
position: relative;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--text-muted);
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
ul li::before {
|
||||
content: "→";
|
||||
position: absolute;
|
||||
left: -1.5rem;
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: var(--font-mono);
|
||||
background: var(--bg-secondary);
|
||||
padding: 0.2em 0.4em;
|
||||
border-radius: 4px;
|
||||
font-size: 0.9em;
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
/* Layout */
|
||||
header {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 60vh;
|
||||
min-height: 400px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: var(--spacing-section);
|
||||
}
|
||||
|
||||
.hero-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.hero-image {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
opacity: 0.6;
|
||||
mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
|
||||
-webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
font-size: 5rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
text-shadow: 0 0 30px rgba(135, 240, 242, 0.3);
|
||||
animation: fadeIn 1.5s ease-out;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 0 2rem;
|
||||
}
|
||||
|
||||
section {
|
||||
margin-bottom: var(--spacing-section);
|
||||
}
|
||||
|
||||
/* Components */
|
||||
.divider {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: var(--spacing-section) 0;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.divider img {
|
||||
width: 100px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* Specific Styles */
|
||||
.gold-gradient-text {
|
||||
font-family: var(--font-mono);
|
||||
font-weight: 700;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.4;
|
||||
background: var(--gold-gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
margin-bottom: 2rem;
|
||||
text-align: center;
|
||||
border: 1px solid rgba(240, 218, 175, 0.2);
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
background-color: rgba(240, 218, 175, 0.05);
|
||||
}
|
||||
|
||||
.highlight-box {
|
||||
background: var(--bg-secondary);
|
||||
border-left: 4px solid var(--accent);
|
||||
padding: 1.5rem;
|
||||
border-radius: 0 8px 8px 0;
|
||||
font-size: 1.25rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.approach-container {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 2rem;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.approach-container {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.approach {
|
||||
background: var(--bg-secondary);
|
||||
padding: 2rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
}
|
||||
|
||||
.approach:hover {
|
||||
transform: translateY(-5px);
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
|
||||
border-color: rgba(135, 240, 242, 0.2);
|
||||
}
|
||||
|
||||
.ascii-art {
|
||||
font-family: var(--font-mono);
|
||||
white-space: pre;
|
||||
overflow-x: auto;
|
||||
background: var(--bg-secondary);
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
color: var(--accent);
|
||||
margin-bottom: 2rem;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.4;
|
||||
border: 1px solid rgba(135, 240, 242, 0.1);
|
||||
}
|
||||
|
||||
/* Table */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 2rem 0;
|
||||
background: var(--bg-secondary);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 1rem 1.5rem;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
th {
|
||||
background: rgba(135, 240, 242, 0.05);
|
||||
color: var(--accent);
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.85rem;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
td {
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
tr:hover td {
|
||||
background: rgba(255, 255, 255, 0.02);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
footer {
|
||||
margin-top: var(--spacing-section);
|
||||
padding: 4rem 0;
|
||||
background: linear-gradient(to top, #000 0%, transparent 100%);
|
||||
text-align: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.footer-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.footer-pattern {
|
||||
width: 100%;
|
||||
max-width: 1200px;
|
||||
height: auto;
|
||||
opacity: 0.3;
|
||||
mask-image: linear-gradient(to bottom, transparent, black 20%, black 80%, transparent);
|
||||
-webkit-mask-image: linear-gradient(to bottom, transparent, black 20%, black 80%, transparent);
|
||||
}
|
||||
|
||||
.final-statement {
|
||||
font-size: 2rem;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
text-align: center;
|
||||
margin-top: 3rem;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* Scrollbar */
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--bg-primary);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--bg-secondary);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--text-dim);
|
||||
}
|
||||
Reference in New Issue
Block a user