Skip to content

Spec generation ignores user model settings and fails with non-Claude providers #528

@lmsanch

Description

@lmsanch

Summary

Two related bugs prevent using non-Claude providers for spec generation:

  1. /create endpoint ignores settingsService - User's configured specGenerationModel is ignored, always defaults to Claude opus
  2. Structured output assumed for non-Cursor models - Code only checks isCursorModel() but doesn't account for OpenCode, Codex, or other providers

Steps to Reproduce

  1. Go to Settings > Model Defaults
  2. Set "Spec Generation Model" to a non-Claude model (e.g., opencode/glm-4.7-free)
  3. Go to Spec Editor and create a new spec
  4. Bug 1: Error: "Claude CLI is disconnected from the app" (even though Claude isn't configured)
  5. After fixing Bug 1 manually, Bug 2: Error: "Failed to generate spec: No valid XML structure found in response"

Root Cause

Bug 1: Missing settingsService in /create endpoint

File: apps/server/src/routes/app-spec/routes/create.ts

// Line 19 - missing settingsService parameter
export function createCreateHandler(events: EventEmitter) {

File: apps/server/src/routes/app-spec/index.ts

// Line 20 - settingsService not passed
router.post('/create', createCreateHandler(events));

Bug 2: Incorrect structured output detection

File: apps/server/src/routes/app-spec/generate-spec.ts

// Line 111 - only checks for Cursor, not other non-Claude providers
const useStructuredOutput = !isCursorModel(model);

Should be:

const useStructuredOutput = isClaudeModel(model);

Suggested Fix

Bug 1:

- export function createCreateHandler(events: EventEmitter) {
+ export function createCreateHandler(events: EventEmitter, settingsService?: SettingsService) {

And pass settingsService to generateSpec() call and in index.ts.

Bug 2:

- import { DEFAULT_PHASE_MODELS, isCursorModel } from '@automaker/types';
+ import { DEFAULT_PHASE_MODELS, isClaudeModel } from '@automaker/types';

- const useStructuredOutput = !isCursorModel(model);
+ const useStructuredOutput = isClaudeModel(model);

Environment

  • Automaker version: 0.11.0
  • Node version: v24.12.0
  • OS: Linux

Impact

Users cannot use non-Claude providers (OpenCode, Codex, etc.) for spec generation, even when explicitly configured in settings.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions