Files
Mike Swanson 75ce1c2fd5 feat: Add Sequential Thinking to Code Review + Frontend Validation
Enhanced code review and frontend validation with intelligent triggers:

Code Review Agent Enhancement:
- Added Sequential Thinking MCP integration for complex issues
- Triggers on 2+ rejections or 3+ critical issues
- New escalation format with root cause analysis
- Comprehensive solution strategies with trade-off evaluation
- Educational feedback to break rejection cycles
- Files: .claude/agents/code-review.md (+308 lines)
- Docs: CODE_REVIEW_ST_ENHANCEMENT.md, CODE_REVIEW_ST_TESTING.md

Frontend Design Skill Enhancement:
- Automatic invocation for ANY UI change
- Comprehensive validation checklist (200+ checkpoints)
- 8 validation categories (visual, interactive, responsive, a11y, etc.)
- 3 validation levels (quick, standard, comprehensive)
- Integration with code review workflow
- Files: .claude/skills/frontend-design/SKILL.md (+120 lines)
- Docs: UI_VALIDATION_CHECKLIST.md (462 lines), AUTOMATIC_VALIDATION_ENHANCEMENT.md (587 lines)

Settings Optimization:
- Repaired .claude/settings.local.json (fixed m365 pattern)
- Reduced permissions from 49 to 33 (33% reduction)
- Removed duplicates, sorted alphabetically
- Created SETTINGS_PERMISSIONS.md documentation

Checkpoint Command Enhancement:
- Dual checkpoint system (git + database)
- Saves session context to API for cross-machine recall
- Includes git metadata in database context
- Files: .claude/commands/checkpoint.md (+139 lines)

Decision Rationale:
- Sequential Thinking MCP breaks rejection cycles by identifying root causes
- Automatic frontend validation catches UI issues before code review
- Dual checkpoints enable complete project memory across machines
- Settings optimization improves maintainability

Total: 1,200+ lines of documentation and enhancements

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-17 16:23:52 -07:00

448 lines
10 KiB
Markdown

# Feature Management MCP Server
**Source:** AutoCoder project
**Type:** Model Context Protocol (MCP) Server
**Purpose:** Manage autonomous coding features with priority-based workflow
---
## Overview
The Feature Management MCP Server provides tools for managing a feature queue in an autonomous coding workflow. It replaces the previous FastAPI-based REST API with a native MCP implementation that integrates directly with Claude Code.
**Key Capabilities:**
- Track feature implementation progress
- Priority-based feature queue management
- Mark features as passing/in-progress/skipped
- Regression testing support
- Bulk feature creation from app specifications
---
## Architecture
### Database
- **Backend:** SQLite (via SQLAlchemy)
- **Migration:** Auto-migrates legacy JSON to SQLite
- **Storage:** `{PROJECT_DIR}/features.db`
### Feature Model
```python
{
"id": int, # Auto-increment primary key
"priority": int, # Lower = higher priority
"category": str, # Feature category (e.g., "authentication", "ui")
"name": str, # Short feature name
"description": str, # Detailed description
"steps": list[str], # Implementation/test steps
"passes": bool, # True if feature is implemented and working
"in_progress": bool # True if currently being worked on
}
```
---
## Available Tools
### 1. feature_get_stats
**Purpose:** Get overall progress statistics
**Usage:**
```python
feature_get_stats()
```
**Returns:**
```json
{
"passing": 42,
"in_progress": 1,
"total": 100,
"percentage": 42.0
}
```
**When to use:** At the start/end of coding sessions to track progress
---
### 2. feature_get_next
**Purpose:** Get the next feature to implement
**Usage:**
```python
feature_get_next()
```
**Returns:**
```json
{
"id": 15,
"priority": 15,
"category": "authentication",
"name": "User login endpoint",
"description": "Create POST /api/auth/login endpoint...",
"steps": [
"Create SQLAlchemy User model",
"Implement login route",
"Add JWT token generation",
"Write tests"
],
"passes": false,
"in_progress": false
}
```
**When to use:** At the start of each implementation cycle
---
### 3. feature_mark_passing
**Purpose:** Mark a feature as successfully implemented
**Usage:**
```python
feature_mark_passing(feature_id=15)
```
**Returns:** Updated feature object with `passes=true`, `in_progress=false`
**When to use:** After implementing and verifying a feature works
---
### 4. feature_mark_in_progress
**Purpose:** Mark a feature as being worked on
**Usage:**
```python
feature_mark_in_progress(feature_id=15)
```
**Returns:** Updated feature object with `in_progress=true`
**When to use:** Immediately after `feature_get_next()` to claim the feature
**Important:** Prevents other parallel agent sessions from working on the same feature
---
### 5. feature_skip
**Purpose:** Move a feature to the end of the queue
**Usage:**
```python
feature_skip(feature_id=15)
```
**Returns:**
```json
{
"id": 15,
"name": "User login endpoint",
"old_priority": 15,
"new_priority": 101,
"message": "Feature 'User login endpoint' moved to end of queue"
}
```
**When to use:**
- Feature has unmet dependencies
- External blockers (missing assets, unclear requirements)
- Technical prerequisites needed
---
### 6. feature_clear_in_progress
**Purpose:** Reset in-progress status
**Usage:**
```python
feature_clear_in_progress(feature_id=15)
```
**Returns:** Updated feature object with `in_progress=false`
**When to use:**
- Abandoning a feature midway
- Manually unsticking a stuck feature
- Resetting state after errors
---
### 7. feature_get_for_regression
**Purpose:** Get random passing features for regression testing
**Usage:**
```python
feature_get_for_regression(limit=3) # 1-10, default 3
```
**Returns:**
```json
{
"features": [
{"id": 3, "name": "User registration", "passes": true, ...},
{"id": 7, "name": "Login validation", "passes": true, ...},
{"id": 12, "name": "Password reset", "passes": true, ...}
],
"count": 3
}
```
**When to use:** After implementing new features to verify no regressions
---
### 8. feature_create_bulk
**Purpose:** Create multiple features at once
**Usage:**
```python
feature_create_bulk(features=[
{
"category": "authentication",
"name": "User registration",
"description": "Allow users to create accounts...",
"steps": ["Create User model", "Create POST /register", "Add validation"]
},
{
"category": "authentication",
"name": "User login",
"description": "Allow users to log in...",
"steps": ["Create POST /login", "Add JWT tokens", "Write tests"]
}
])
```
**Returns:**
```json
{
"created": 2
}
```
**When to use:** Initializing a new project from an app specification
---
## Installation & Configuration
### 1. Install Dependencies
The MCP server requires SQLAlchemy and FastMCP. In the AutoCoder project these are already included, but for standalone use:
```bash
pip install sqlalchemy fastmcp pydantic
```
### 2. Configure Claude Desktop
Add to `~/.config/claude/claude_desktop_config.json` (macOS/Linux) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"features": {
"command": "python",
"args": ["D:\\ClaudeTools\\mcp-servers\\feature-management\\feature_mcp.py"],
"env": {
"PROJECT_DIR": "D:\\ClaudeTools\\projects\\your-project"
}
}
}
}
```
### 3. Set PROJECT_DIR
The `PROJECT_DIR` environment variable determines where the SQLite database is stored:
```bash
# Windows (PowerShell)
$env:PROJECT_DIR="D:\ClaudeTools\projects\your-project"
# Linux/macOS
export PROJECT_DIR="/path/to/your/project"
```
The database will be created at `{PROJECT_DIR}/features.db`
---
## Typical Workflow
### Autonomous Coding Agent Session
```python
# 1. Check progress at start of session
stats = feature_get_stats()
# Output: 42/100 features passing (42.0%)
# 2. Get next feature to work on
next_feature = feature_get_next()
# Output: Feature #15 - "User login endpoint"
# 3. Mark it in-progress (claim it)
feature_mark_in_progress(feature_id=15)
# 4. Implement the feature
# ... write code, run tests, verify ...
# 5. Mark as passing when done
feature_mark_passing(feature_id=15)
# 6. Optional: Run regression tests
regression = feature_get_for_regression(limit=5)
# Output: 5 random passing features to re-test
```
### Handling Blockers
```python
# Get next feature
next_feature = feature_get_next()
# Feature #20 - "OAuth integration"
# Realize it depends on feature #25 which isn't done yet
feature_skip(feature_id=20)
# Feature moved to end of queue (priority 101)
# Get actual next feature
next_feature = feature_get_next()
# Feature #21 - "Email validation"
```
---
## Database Schema
```sql
CREATE TABLE features (
id INTEGER PRIMARY KEY AUTOINCREMENT,
priority INTEGER NOT NULL,
category VARCHAR(100) NOT NULL,
name VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
steps TEXT NOT NULL, -- JSON array of strings
passes BOOLEAN DEFAULT 0,
in_progress BOOLEAN DEFAULT 0
);
CREATE INDEX idx_priority ON features(priority);
CREATE INDEX idx_passes ON features(passes);
```
---
## Integration with ClaudeTools
This MCP server can be integrated with the ClaudeTools context recall system:
1. Store feature completion decisions in `decision_logs` table
2. Save feature implementation context in `conversation_contexts`
3. Track feature work sessions in `sessions` table
4. Log feature-related errors in `problem_solutions`
**Example:**
```python
# After marking feature passing, log the decision
POST /api/decision-logs
{
"project_id": "uuid",
"decision_type": "technical",
"decision_text": "Implemented user login endpoint",
"rationale": "Feature #15 completed with JWT authentication",
"tags": ["authentication", "feature-15", "jwt"]
}
```
---
## Troubleshooting
### Database not found
**Error:** `Database not initialized`
**Solution:** Ensure `PROJECT_DIR` environment variable is set and writable
### Migration issues
**Error:** `Migration failed`
**Solution:** The server auto-migrates legacy JSON (`features.json`) to SQLite. If you have custom JSON structure, you may need to adjust the migration in `api/migration.py`
### All features showing in-progress
**Problem:** Features stuck in `in_progress=true` state
**Solution:**
```python
# Clear all stuck features
for feature_id in [1, 2, 3, ...]:
feature_clear_in_progress(feature_id=feature_id)
```
Or directly in SQLite:
```sql
UPDATE features SET in_progress = 0 WHERE in_progress = 1;
```
---
## Differences from REST API
The original AutoCoder project used a FastAPI REST server. This MCP server provides the same functionality with these improvements:
| Feature | REST API | MCP Server |
|---------|----------|------------|
| Integration | HTTP requests | Native Claude MCP tools |
| Authentication | API keys | Built into MCP protocol |
| Type safety | Manual validation | Pydantic models |
| Error handling | HTTP status codes | JSON error responses |
| Database | JSON files | SQLite (with JSON migration) |
| Startup time | ~1-2 seconds | ~100ms |
---
## File Structure
```
mcp-servers/feature-management/
├── feature_mcp.py # Main MCP server implementation
├── __init__.py # Python module marker
├── README.md # This file
└── config.example.json # Example configuration
```
---
## Dependencies
**Required:**
- `fastmcp` - MCP protocol implementation
- `sqlalchemy` - Database ORM
- `pydantic` - Data validation
**Optional:**
- `api.database` - Feature model and database setup (from AutoCoder)
- `api.migration` - JSON to SQLite migration (from AutoCoder)
---
## License
Same license as the AutoCoder project (see LICENSE.txt in AutoCoder repository)
---
## See Also
- `.claude/commands/create-spec.md` - Create app specification
- `.claude/commands/checkpoint.md` - Create development checkpoint
- `.claude/skills/frontend-design/` - Frontend design skill
- `.claude/templates/` - Prompt templates for autonomous coding
---
**Last Updated:** 2026-01-17
**Status:** Production-ready (ported from AutoCoder)