Claude-code ma specjalnego subagenta który ma za zadanie generować kompleksowy plan rozwiązania danego problemu.

Plan mode:

  1. Używa Sonnet model
  2. Nie może zagnieżdżać innych subagents
  3. Działa w osobnym context window (nie „zaśmieca” głównej rozmowy)

Jak przejść do trybu Plan:

  1. Tworząc nową sesje od razu z ustawiony Plan mode
claude --permission-mode plan

2. Domyślna konfiguracja:

// .claude/settings.json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

3. Przełączanie trybów z Shift+Tab

Będąc w Normal Mode, naciśnij Shift+Tab DWUKROTNIE:

– Pierwsze Shift+Tab → Auto-Accept Mode (⁵⁵ accept edits on)

– Drugie Shift+Tab → Plan Mode (⸱ plan mode on)

Statusy widoczne na dole terminala.

Ograniczone narzędzia

Tryb planowania ma ograniczone narzędzie, może tylko:

  • Read – czytanie plików
  • Glob – znajdowanie plików po wzorcu
  • Grep – przeszukiwanie zawartości
  • Bash – tylko komendy read-only: ls, git status, git log, git diff, find, cat, head, tail

Co ważne plan mode korzysta z osobnego context window, czyli podczas rozmowy, podczas rozwiązywania jakiego problemy możemy zlecić w głównej rozmowie aby naszkicował nam plan rozwiązania czegoś.

Jak działa plan mode

  1. Włączam plan mode
  2. Zadaje pytanie
  3. Claude code uruchamia Plan subagent
  4. Ten dokonuje analizy kodu projektu i zwraca findings(czyli podsumowania researchu)
  5. Główne okno analizuje te findings i generuje plan

Co robić aby otrzymać dobry plan?

  1. Przygotuj jak najwięcej informacji, przekaż kontekst problemu:
    • Tech stack (framework + wersje):
      • Backend: Express.js 4.18
      • Frontend: React 18 + TypeScript
      • Database: PostgreSQL 14
    • Kluczowe pliki (używaj @ references):
      • @src/api/users.ts
      • @lib/db/queries.ts
  1. Iteruj, dopytuj o rozwiązania
    • pytaj o wyjaśnienie dlaczego taka decyzja
    • dopytaj o rozwiązanie alternatywne
    • dopytuj co się stanie jak…
  2. Napisz czego oczekujesz po planie
  3. Zapisuj plany jako dokumenty – mogą służyć jako dokumentacja
  4. Łącz z thinking – Plan Mode + extended thinking

Przykłady

❌ ZŁY PROMPT

Dodaj walidację do formularza rejestracji

Co się stanie:

Plan Subagent nie wie:

  • Jaka technologia/framework?
  • Gdzie jest ten formularz, lokalizacja pliku?
  • Jakie pola trzeba walidować?
  • Czy masz już jakąś walidację?
  • Client-side czy server-side?

Plan Subagent będzie musiał przeszukać cały codebase. A rezultat będzie ogólny w którym będą jeszcze zadane pytanie, na które musisz odpowiedzieć

✅ DOBRY PROMPT (z pełnym kontekstem)

 Dodaj walidację do formularza rejestracji w aplikacji SaaS.

**Current Stack:**
- Frontend: Next.js 14 (App Router) + React 18 + TypeScript
- Form library: React Hook Form (już używamy w loginie)
- Backend: Next.js API routes w app/api/
- Database: Prisma + PostgreSQL

**Kluczowe pliki:**
- @app/(auth)/register/page.tsx - formularz rejestracji (client component)
- @app/api/auth/register/route.ts - endpoint do rejestracji
- @components/ui/Input.tsx - reużywalny komponent input
- @lib/validations/auth.ts - tam  już walidacje dla loginu (używamy Zod)

**Current state:**
Formularz działa, ale BEZ walidacji:
```tsx
// app/(auth)/register/page.tsx (fragment)
'use client';

export default function RegisterPage() {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [name, setName] = useState('');

  const handleSubmit = async (e) => {
    e.preventDefault();
    // Wysyła bez walidacji!
    await fetch('/api/auth/register', {
      method: 'POST',
      body: JSON.stringify({ email, password, name })
    });
  };

  return (
    <form onSubmit={handleSubmit}>
      <input value={email} onChange={(e) => setEmail(e.target.value)} />
      <input value={password} onChange={(e) => setPassword(e.target.value)} />
      <input value={name} onChange={(e) => setName(e.target.value)} />
      <button>Register</button>
    </form>
  );
}
```

**Requirements - jakie walidacje:**

Email:
- Required
- Valid email format
- Max 100 znaków
- Check if already exists (real-time, debounced 500ms)

Password:
- Required
- Min 8 znaków
- Musi zawierać: uppercase, lowercase, liczba, znak specjalny
- Show password strength indicator (weak/medium/strong)

Name:
- Required
- Min 2, max 50 znaków
- Only letters, spaces, hyphens
- No numbers, no special chars (except hyphen)

Company name (optional):
- Max 100 znaków
- Alphanumeric + spaces

**UI Requirements:**
- Show errors BELOW każdego pola (red text)
- Show errors ON BLUR, not on every keystroke (lepsze UX)
- Disable submit button jeśli  errory
- Show loading state podczas walidacji email (checking...)
- Password strength bar (red  yellow  green)

**Technical constraints:**
- MUSI używać React Hook Form + Zod (consistency z loginem)
- MUSI być TypeScript (strict mode)
- Walidacja client-side (instant feedback) + server-side (security)
- API endpoint musi zwracać Zod errors w formacie React Hook Form

**Non-functional:**
- Email check API call: debounced 500ms (nie bombardujemy backendu)
- Walidacja nie może spowolnić UI (<50ms client-side)
- Error messages po polsku

**Deliverables w planie:**
1. Implementacja w 3 fazach (każda <3h pracy)
   - Phase 1: Setup Zod schema + podstawowa walidacja
   - Phase 2: Real-time email check + password strength
   - Phase 3: Polish UI (error messages, loading states)

2. Dla każdej fazy:
   - Dokładne pliki do modyfikacji (z nazwami funkcji)
   - Zod schema definition
   - React Hook Form integration code
   - API endpoint changes
   - Error handling strategy

3. Reużywalność:
   - Validation schema exportable (użyjemy w innych formach)
   - UI components reusable (Input with error state)

4. Testing approach:
   - Jakie edge cases przetestować
   - Mock API dla email check

5. Timeline estimate w godzinach

Plan Subagent wie dokładnie:

  • ✅ Framework: Next.js 14 + React Hook Form
  • ✅ Gdzie szukać: @app/(auth)/register/page.tsx
  • ✅ Co już istnieje: Login validation w @lib/validations/auth.ts
  • ✅ Jakie biblioteki: React Hook Form + Zod (już używane)
  • ✅ Wszystkie requirements (dokładne reguły)

Plan mode przeszuka konretne pliki podane w promcie, plan będzie konretny.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *