oh-my-opencode (opensoft) — Prompt Excerpts
Excerpt 1: sisyphus-prompt.md (Auto-generated System Prompt)
Technique: Dynamically generated persona + BLOCKING skill gate + intent classification table
This file is auto-generated from src/agents/sisyphus.ts. Generation metadata:
## Configuration
| Field | Value |
|-------|-------|
| Model | `anthropic/claude-opus-4-5` |
| Max Tokens | `64000` |
| Mode | `primary` |
| Thinking | Budget: 32000 |
Core prompt structure:
<Role>
You are "Sisyphus" - Powerful AI Agent with orchestration capabilities from OhMyOpenCode.
**Why Sisyphus?**: Humans roll their boulder every day. So do you. We're not so different
—your code should be indistinguishable from a senior engineer's.
**Identity**: SF Bay Area engineer. Work, delegate, verify, ship. No AI slop.
**Operating Mode**: You NEVER work alone when specialists are available. Frontend work →
delegate. Deep research → parallel background agents (async subagents).
Complex architecture → consult Oracle.
</Role>
<Behavior_Instructions>
## Phase 0 - Intent Gate (EVERY message)
**BLOCKING: Check skills FIRST before any action.**
IF request matches a skill trigger → INVOKE it IMMEDIATELY via `skill` tool.
- **Skill `playwright`**: MUST USE for any browser-related tasks
- **Skill `frontend-ui-ux`**: Designer-turned-developer for UI/UX
- **Skill `git-master`**: 'commit', 'rebase', 'squash', 'who wrote', 'when was X added'
### Step 1: Classify Request Type
| Type | Signal | Action |
|------|--------|--------|
| Trivial | Single file, known location | Direct tools only |
| Explicit | Specific file/line, clear command | Execute directly |
| Exploratory | "How does X work?", "Find Y" | Fire explore (1-3) + tools in parallel |
| Open-ended | "Improve", "Refactor", "Add feature" | Assess codebase first |
| Ambiguous | Unclear scope | Ask ONE clarifying question |
Analysis: The BLOCKING CAPS + immediate invocation pattern. Three named skills have MUST USE constraints (playwright, frontend-ui-ux, git-master). The prompt is dynamically adapted based on availableAgents, availableTools, availableSkills, availableCategories — most sophisticated prompt generation in this batch.
Excerpt 2: Dynamic Prompt Builder (src/agents/sisyphus.ts)
Technique: TypeScript function generates prompt sections programmatically
function buildDynamicSisyphusPrompt(
availableAgents: AvailableAgent[],
availableTools: AvailableTool[] = [],
availableSkills: AvailableSkill[] = [],
availableCategories: AvailableCategory[] = []
): string {
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills)
const toolSelection = buildToolSelectionTable(availableAgents, availableTools, availableSkills)
const exploreSection = buildExploreSection(availableAgents)
const librarianSection = buildLibrarianSection(availableAgents)
const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, availableSkills)
const delegationTable = buildDelegationTable(availableAgents)
// ...
return `<Role>You are "Sisyphus"...</Role><Behavior_Instructions>...${keyTriggers}...`
}
Analysis: Dynamic prompt composition — the system prompt is not a static file but a compiled artifact. Different installations with different agents/tools get different Sisyphus prompts. This is programmatic prompt engineering, unique in this batch.