Repository: mastra-ai/mastra
File: packages/cli/src/commands/init/utils.ts (TypeScript)

Code before:
        const llmName = LLM_PROVIDERS.find(p => p.value === llmProvider)?.label || 'provider';
        const keyChoice = await p.select({
          message: `Enter your ${llmName} API key?`,
          options: [
            { value: 'skip', label: 'Skip for now', hint: 'default' },
            { value: 'enter', label: 'Enter API key' },
          ],
          initialValue: 'skip',
        });

        if (keyChoice === 'enter') {
          return p.text({
            message: 'Enter your API key:',
            placeholder: 'sk-...',
            validate: value => {
              if (value.length === 0) return 'API key cannot be empty';
            },
          });
        }
        return undefined;
      },
      configureMastraToolingForCodingAgents: async () => {
        if (skip?.configureMastraToolingForCodingAgents) return undefined;

        const choice = await p.select({
          message: `Configure Mastra tooling for coding agents?`,
          options: [
            { value: 'skills', label: 'Skills - Mastra agent skills', hint: 'recommended' },
            { value: 'mcp', label: 'MCP Docs - IDE integration' },
          ],
          initialValue: 'skills',
        });

        if (choice === 'skills') {
          // Popular agents
          const POPULAR_AGENTS: { value: string; label: string }[] = [
            { value: 'claude-code', label: 'Claude Code' },
            { value: 'cursor', label: 'Cursor' },
            { value: 'windsurf', label: 'Windsurf' },
            { value: 'github-copilot', label: 'GitHub Copilot' },
            { value: 'cline', label: 'Cline' },
            { value: 'continue', label: 'Continue' },
            { value: 'gemini-cli', label: 'Gemini CLI' },
            { value: 'opencode', label: 'OpenCode' },
            { value: 'replit', label: 'Replit' },
            { value: 'roo', label: 'Roo Code' },
          ];

          // All agents (alphabetically)
          const ALL_AGENTS: { value: string; label: string }[] = [
            ...POPULAR_AGENTS,

Review comment (suggestion):
```suggestion
          message: `Choose your agent tooling:`,
```

Code after:

        const llmName = LLM_PROVIDERS.find(p => p.value === llmProvider)?.label || 'provider';
        const keyChoice = await p.select({
          message: `Enter your ${llmName} API key?`,
          options: [
            { value: 'skip', label: 'Skip for now', hint: 'default' },
            { value: 'enter', label: 'Enter API key' },
          ],
          initialValue: 'skip',
        });

        if (keyChoice === 'enter') {
          return p.text({
            message: 'Enter your API key:',
            placeholder: 'sk-...',
            validate: value => {
              if (value.length === 0) return 'API key cannot be empty';
            },
          });
        }
        return undefined;
      },
      configureMastraToolingForAgents: async () => {
        if (skip?.skills && skip?.mcpServer) return { skills: undefined, mcpServer: undefined };

        const choice = await p.select({
          message: `Configure Mastra tooling for agents?`,
          options: [
            { value: 'skills', label: 'Skills', hint: 'recommended' },
            { value: 'mcp', label: 'MCP Docs Server' },
          ],
          initialValue: 'skills',
        });

        if (p.isCancel(choice)) {
          return { skills: undefined, mcpServer: undefined };
        }

        if (choice === 'skills') {
          // Popular agents
          const POPULAR_AGENTS: { value: string; label: string }[] = [
            { value: 'claude-code', label: 'Claude Code' },
            { value: 'cursor', label: 'Cursor' },
            { value: 'windsurf', label: 'Windsurf' },
            { value: 'github-copilot', label: 'GitHub Copilot' },
            { value: 'cline', label: 'Cline' },
            { value: 'continue', label: 'Continue' },
            { value: 'gemini-cli', label: 'Gemini CLI' },
            { value: 'opencode', label: 'OpenCode' },
            { value: 'replit', label: 'Replit' },
            { value: 'roo', label: 'Roo Code' },