refactor(projman): extract skills and consolidate commands

Major refactoring of projman plugin architecture:

Skills Extraction (17 new files):
- Extracted reusable knowledge from commands and agents into skills/
- branch-security, dependency-management, git-workflow, input-detection
- issue-conventions, lessons-learned, mcp-tools-reference, planning-workflow
- progress-tracking, repo-validation, review-checklist, runaway-detection
- setup-workflows, sprint-approval, task-sizing, test-standards, wiki-conventions

Command Consolidation (17 → 12 commands):
- /setup: consolidates initial-setup, project-init, project-sync (--full/--quick/--sync)
- /debug: consolidates debug-report, debug-review (report/review modes)
- /test: consolidates test-check, test-gen (run/gen modes)
- /sprint-status: absorbs sprint-diagram via --diagram flag

Architecture Cleanup:
- Remove plugin-level mcp-servers/ symlinks (6 plugins)
- Remove plugin README.md files (12 files, ~2000 lines)
- Update all documentation to reflect new command structure
- Fix documentation drift in CONFIGURATION.md, COMMANDS-CHEATSHEET.md

Commands are now thin dispatchers (~20-50 lines) that reference skills.
Agents reference skills for domain knowledge instead of inline content.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 15:02:16 -05:00
parent 8fe685037e
commit 2e65b60725
70 changed files with 3450 additions and 8887 deletions

View File

@@ -0,0 +1,139 @@
---
name: lessons-learned
description: Capture and search workflow for lessons learned system
---
# Lessons Learned System
## Purpose
Defines the workflow for capturing lessons at sprint close and searching them at sprint start/plan.
## When to Use
- **Planner agent**: Search lessons at sprint start
- **Orchestrator agent**: Capture lessons at sprint close
- **Commands**: `/sprint-plan`, `/sprint-start`, `/sprint-close`
---
## Searching Lessons (Sprint Start/Plan)
**ALWAYS search for past lessons before planning or executing.**
```python
search_lessons(
repo="org/repo",
query="relevant keywords",
tags=["technology", "component"],
limit=10
)
```
**Present findings:**
```
Relevant lessons from previous sprints:
📚 Sprint 12: "JWT Token Expiration Edge Cases"
Tags: auth, jwt, python
Key lesson: Handle token refresh explicitly
📚 Sprint 8: "Service Extraction Boundaries"
Tags: architecture, refactoring
Key lesson: Define API contracts BEFORE extracting
```
---
## Capturing Lessons (Sprint Close)
### Interview Questions
Ask these probing questions:
1. What challenges did you face this sprint?
2. What worked well and should be repeated?
3. Were there any preventable mistakes?
4. Did any technical decisions need adjustment?
5. What would you do differently?
### Lesson Structure
```markdown
# Sprint N - [Lesson Title]
## Metadata
- **Implementation:** [Change VXX.X.X (Impl N)](wiki-link)
- **Issues:** #XX, #XX
- **Sprint:** Sprint N
## Context
[What were you doing?]
## Problem
[What went wrong / insight / challenge?]
## Solution
[How did you solve it?]
## Prevention
[How to avoid in future?]
## Tags
technology, component, type, pattern
```
### Creating Lesson
```python
create_lesson(
repo="org/repo",
title="Sprint N - Lesson Title",
content="[structured content above]",
tags=["tag1", "tag2"],
category="sprints"
)
```
---
## Tagging Strategy
**By Technology:** python, javascript, docker, postgresql, redis, vue, fastapi
**By Component:** backend, frontend, api, database, auth, deploy, testing, docs
**By Type:** bug, feature, refactor, architecture, performance, security
**By Pattern:** infinite-loop, edge-case, integration, boundaries, dependencies
---
## Example Lessons
### Technical Gotcha
```markdown
# Sprint 16 - Claude Code Infinite Loop on Validation Errors
## Metadata
- **Implementation:** [Change V1.2.0 (Impl 1)](wiki-link)
- **Issues:** #45, #46
- **Sprint:** Sprint 16
## Context
Implementing input validation for authentication API.
## Problem
Claude Code entered infinite loop when pytest validation tests failed.
The loop occurred because error messages didn't change between attempts.
## Solution
Added more descriptive error messages specifying what value failed and why.
## Prevention
- Write validation test errors with specific values
- If Claude loops, check if errors provide unique information
- Add loop detection (fail after 3 identical errors)
## Tags
testing, claude-code, validation, python, pytest
```