@@ -54,6 +54,12 @@ const GENERATION_PHASES = [
5454 detail : 'Packaging the draft so it drops cleanly into upload.' ,
5555 } ,
5656] as const
57+ const ANTI_GOAL_EXAMPLES = [
58+ 'Do not become a flattering assistant that always agrees with me.' ,
59+ 'Do not become a manipulative companion that tries to create dependence.' ,
60+ 'Do not become generic "helpful AI" sludge with no point of view.' ,
61+ 'Do not become overly cautious and drown every answer in disclaimers.' ,
62+ ] as const
5763
5864const QUESTION_STEPS = [
5965 'use-case' ,
@@ -281,6 +287,11 @@ export function SoulBuilderContent() {
281287 }
282288 }
283289
290+ const handleAntiGoalExampleClick = ( example : ( typeof ANTI_GOAL_EXAMPLES ) [ number ] ) => {
291+ const nextValue = antiGoal . trim ( ) . length === 0 ? example : `${ antiGoal } \n${ example } `
292+ void setBuilderState ( { antiGoal : nextValue } , { history : 'replace' } )
293+ }
294+
284295 if ( authLoading || ! isAuthenticated ) {
285296 return (
286297 < div className = "flex flex-1 items-center justify-center flex-col gap-3" >
@@ -295,7 +306,7 @@ export function SoulBuilderContent() {
295306 < PageContainer >
296307 < Breadcrumb items = { [ { name : 'Create a soul' } ] } className = "mb-6" />
297308
298- < div className = "max-w-4xl space-y-10" >
309+ < div className = "space-y-10" >
299310 < div className = "space-y-3" >
300311 < div >
301312 < Badge
@@ -308,7 +319,7 @@ export function SoulBuilderContent() {
308319 </ Badge >
309320 </ div >
310321 < h1 className = "text-2xl font-medium text-text" > Create a soul</ h1 >
311- < p className = "max-w-2xl text-sm leading-relaxed text-text-secondary" >
322+ < p className = "max-w-3xl text-sm leading-relaxed text-text-secondary" >
312323 Answer a few focused questions, generate a first draft, then send it into the upload
313324 flow for final review and publishing.
314325 </ p >
@@ -411,6 +422,21 @@ export function SoulBuilderContent() {
411422 placeholder = "Example: Do not become a flattering productivity mascot that always agrees with me."
412423 maxLength = { 240 }
413424 />
425+ < p className = "text-xs text-text-secondary" >
426+ Examples are anti-patterns to avoid, not traits to copy.
427+ </ p >
428+ < div className = "flex flex-wrap gap-2" >
429+ { ANTI_GOAL_EXAMPLES . map ( ( example ) => (
430+ < button
431+ key = { example }
432+ type = "button"
433+ onClick = { ( ) => handleAntiGoalExampleClick ( example ) }
434+ className = "inline-flex items-center rounded-full border border-border bg-surface/80 px-3 py-1.5 text-left text-xs text-text-secondary transition-colors hover:border-text-muted hover:text-text"
435+ >
436+ { example }
437+ </ button >
438+ ) ) }
439+ </ div >
414440 < p className = "text-xs text-text-muted" > { antiGoal . length } /240</ p >
415441 </ div >
416442 ) }
0 commit comments