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>
This commit is contained in:
447
mcp-servers/feature-management/README.md
Normal file
447
mcp-servers/feature-management/README.md
Normal file
@@ -0,0 +1,447 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user