add-types-endpoint
Type-safe frontend types for generation workflows and SSE events. Trigger: when adding new generation types or SSE events to the frontend.
SKILL.md.claude/skills/frontend/types/SKILL.md
GitHub<!-- L1:START -->
add-types-endpoint
Type-safe frontend types for generation workflows and SSE events.
Trigger: when adding new generation types or events to the frontend.
<!-- L1:END --> <!-- L2:START -->Quick Reference
| Task | Pattern |
|---|---|
| Validate user login | User |
| Create generation request | GenerateRequest |
Critical Patterns (Summary)
- User Pattern: Validates
github_user_idandloginfromUserinterface - GenerationRequest Pattern: Constructs
GenerateRequestwith requiredrepo_url,mode, andprovider<!-- L2:END -->
Critical Patterns (Detailed)
User Pattern
Validates github_user_id and login from User interface to ensure authenticated session state before initiating generation workflows.
import { User } from '@/lib/types';
if (!User || !User.github_user_id) {
throw new Error('User not authenticated');
}
GenerationRequest Pattern
Constructs GenerateRequest with required repo_url, mode, and provider fields to start a new generation pipeline.
import { GenerateRequest } from '@/lib/types';
const request: GenerateRequest = {
repo_url: 'https://github.com/example/repo',
mode: 'skills',
provider: 'openai',
};
When to Use
- Validating authenticated user session before generation
- Constructing generation requests with proper mode and provider selection
- Handling user authentication state in generation workflows
Commands
docker build -t repoforge/app:latest .
python repoforge/cli.py --help
Anti-Patterns
Don't: Missing required fields in GenerateRequest
<Why it's wrong: Omitting repo_url, mode, or provider causes runtime errors during generation pipeline initialization. All three fields are required per the GenerateRequest interface definition.>
import { GenerateRequest } from '@/lib/types';
const badRequest: GenerateRequest = {
// Missing repo_url, mode, provider — will fail validation
mode: 'skills',
};
<!-- L3:END -->