refactor(hephaestus): tighten GPT-5.5 prompt for outcome-first density

Compress 6 discovery sections into one Discovery & Retrieval section, remove three-way echo of "drive the artifact" between Goal, Manual QA Gate, and Forbidden stops (now once + cross-ref), split persona prose into Tone vs Autonomy & Collaboration per OpenAI's GPT-5.5 prompting guide, trim Output formatting from 13 prior-restating bullets to 5 environment-specific ones, and defer the Oracle wait policy to the dynamic oracleSection so it lives in a single source of truth.

Add buildFrontendGuidanceSection: conditional injection that only emits the anti-slop frontend block when `visual-engineering` category is unavailable, since the category-skills guide already forces visual work to delegate when the category exists.

Static prose drops 277 -> ~175 lines (-37%); every Hephaestus identity item preserved (Manual QA Gate surface map, Intent table + commitment line, three-attempt failure protocol, Hard invariants, no defensive code, AGENTS.md and dirty worktree handling, four dynamic placeholders).
This commit is contained in:
YeonGyu-Kim
2026-05-06 13:54:24 +09:00
parent 60dfac871f
commit caaa3d4c08
3 changed files with 104 additions and 132 deletions
+15
View File
@@ -170,6 +170,21 @@ Briefly announce "Consulting Oracle for [reason]" before invocation.
</Oracle_Usage>`
}
export function buildFrontendGuidanceSection(
categories: AvailableCategory[],
): string {
const hasVisualEngineeringCategory = categories.some(
(category) => category.name === "visual-engineering",
)
if (hasVisualEngineeringCategory) {
return ""
}
return `# Frontend Tasks
When you must touch frontend code yourself: avoid generic AI-SaaS aesthetics. Choose a clear visual direction with CSS variables (no purple-on-white default, no dark-mode default). Use expressive, purposeful typography rather than default stacks (Inter, Roboto, Arial, system). Build atmosphere through gradients, shapes, or subtle patterns rather than flat single-color backgrounds. Use a few meaningful animations (page-load, staggered reveals) over generic micro-motion. Verify both desktop and mobile rendering. If working within an existing design system, preserve its patterns instead.`
}
export function buildNonClaudePlannerSection(model: string): string {
const isNonClaude = !model.toLowerCase().includes("claude")
if (!isNonClaude) {