Files
APAW/.kilo/commands/ask.md
swp a1a15473a0 feat: add mandatory Gitea commenting to all agents
- Add gitea-commenting skill with comment templates
- Update orchestrator with mandatory commenting requirements
- Add Gitea Commenting section to all 17 agent files
- Create email validation module (validateEmail function)
- Add efficiency_score.json for pipeline logging
- Create test-error-recovery.js for error recovery testing

Refs: Milestone #43 - System Consistency Testing
All 6 test issues closed successfully
2026-04-04 03:18:28 +01:00

5.5 KiB

description, mode, model, color
description mode model color
Answers questions about the codebase, explains concepts, provides guidance ask openai/qwen3-32b #8B5CF6

Ask Command

Intelligent Q&A system for codebase exploration, concept explanation, and development guidance.

Purpose

  • Explain code behavior
  • Answer architecture questions
  • Find code locations
  • Clarify concepts
  • Suggest best practices
  • Debug understanding

Workflow

Step 1: Parse Question

Identify question type:

  • Location: "Where is X implemented?"
  • Explanation: "How does X work?"
  • Concept: "What is X?"
  • Best Practice: "How should I do X?"
  • Comparison: "What's the difference between X and Y?"
  • Debug Understanding: "Why does X behave this way?"

Step 2: Search Codebase

Use appropriate tools:

# Find files
glob "**/filenamePattern"

# Find code
grep "pattern" --include="*.ext"

# Find function/class definitions
grep "function name|class Name"

# Find usages
grep "import.*name|from.*name"

Step 3: Read Context

  • Read relevant files
  • Understand surrounding code
  • Check related components
  • Identify patterns and conventions

Step 4: Formulate Answer

  • Be concise and direct
  • Include code references with line numbers
  • Provide examples when helpful
  • Link related concepts

Question Types & Responses

Location Questions

Q: "Where is the user authentication implemented?"

A: Authentication is implemented in:

- `src/auth/AuthService.ts:15-89` - Main authentication service
- `src/middleware/auth.ts:5-42` - Auth middleware
- `src/routes/auth.ts:10-78` - Auth endpoints

Explanation Questions

Q: "How does the caching system work?"

A: The caching system uses a two-tier approach:

1. **In-Memory Cache** (`src/cache/MemoryCache.ts:12-45`)
   - LRU eviction
   - TTL support
   - Max 1000 entries

2. **Redis Cache** (`src/cache/RedisCache.ts:8-67`)
   - Distributed caching
   - Persistence across restarts
   - Pub/Sub invalidation

Flow:
Request → Memory cache → Redis cache → Source

Concept Questions

Q: "What is a Repository pattern?"

A: Repository pattern separates data access from business logic:

```typescript
// Definition at src/repositories/BaseRepository.ts:5
interface Repository<T> {
  findById(id: string): Promise<T>;
  findAll(): Promise<T[]>;
  create(entity: T): Promise<T>;
  update(id: string, entity: T): Promise<T>;
  delete(id: string): Promise<void>;
}

// Usage at src/services/UserService.ts:23
const user = await userRepository.findById(userId);

Benefits:

  • Abstracts data source
  • Easier testing (mock repositories)
  • Centralized query logic

### Best Practice Questions

Q: "How should I handle errors in async functions?"

A: Project conventions (see src/utils/async.ts):

// Preferred pattern
async function fetchData(id: string): Promise<Result<Data>> {
  try {
    const data = await repository.findById(id);
    if (!data) {
      return { ok: false, error: 'NOT_FOUND' };
    }
    return { ok: true, value: data };
  } catch (error) {
    logger.error('fetchData failed', { id, error });
    return { ok: false, error: 'INTERNAL_ERROR' };
  }
}

Avoid:

  • Throwing in normal flow
  • Silent catch blocks
  • Unhandled promise rejections

### Comparison Questions

Q: "What's the difference between useState and useReducer?"

A:

Aspect useState useReducer
Best for Simple state Complex state
Updates Direct value via actions
Logic In handlers In reducer
Testing Harder Easier

Use useState when:

  • Simple values (string, number, boolean)
  • Single update logic

Use useReducer when:

  • Complex state objects
  • Multiple related values
  • Complex update logic
  • Need testable state transitions

## Response Format

### For Location Questions
```markdown
## Found: [What]

### Locations
- `path/to/file.ts:start-end` - [Brief description]
- `path/to/other.ts:start-end` - [Brief description]

For Explanation Questions

## [Concept/Feature]

### Overview
[1-2 sentence summary]

### Details
[Explanation with code examples]

### Key Files
- `file:line` - [Purpose]

For Concept Questions

## [Concept]

### Definition
[Clear definition]

### How It Works
[Explanation with example]

### In This Codebase
- Used in `file:line`
- Pattern: [How it's used here]

For Best Practice Questions

## Best Practice: [Topic]

### Recommended Approach
```[code]```

### Why
[Reasoning]

### In This Project
[How it's implemented here]

### Avoid
[Anti-patterns to avoid]

Best Practices

  • Minimize output tokens while being thorough
  • Include file paths with line numbers
  • Show code snippets for clarity
  • Reference patterns used in the codebase
  • Don't explain unrelated concepts
  • Answer in the language asked

Search Strategies

By Question Type:

  • "Where is...": Use glob for files, grep for code
  • "How does...": Read implementation files
  • "What is...": Check docs, explain concept
  • "Why does...": Read related code, analyze patterns
  • "Should I...": Check similar code, explain tradeoffs

Examples

User: "Where is the API rate limiting implemented?"

Search:

grep -r "rateLimit\|rate-limit\|throttle" src/

Response: Rate limiting is implemented in:

  • src/middleware/rateLimiter.ts:15-78 - Main rate limiter middleware
  • src/config/rateLimits.ts:1-45 - Configuration

Key features:

  • Token bucket algorithm
  • Configurable per-endpoint limits
  • Redis-backed for distributed systems