engineer-expertise-extractor

安装量: 56
排名: #13242

安装

npx skills add https://github.com/jamesrochabrun/skills --skill engineer-expertise-extractor

Engineer Expertise Extractor

Extract and document an engineer's coding expertise by analyzing their GitHub contributions, creating a structured knowledge base that captures their coding style, patterns, best practices, and architectural decisions.

What This Skill Does

Researches an engineer's work to create a "digital mentor" by:

Analyzing Pull Requests - Extract code patterns, review style, decisions Extracting Coding Style - Document their preferences and conventions Identifying Patterns - Common solutions and approaches they use Capturing Best Practices - Their quality standards and guidelines Organizing Examples - Real code samples from their work Documenting Decisions - Architectural choices and reasoning Why This Matters

Knowledge Preservation:

Capture expert knowledge before they leave Document tribal knowledge Create mentorship materials Onboard new engineers faster

Consistency:

Align team coding standards Replicate expert approaches Maintain code quality Scale expertise across team

Learning:

Learn from senior engineers Understand decision-making See real-world patterns Improve code quality How It Works 1. Research Phase

Using GitHub CLI (gh), the skill:

Fetches engineer's pull requests Analyzes code changes Reviews their comments and feedback Extracts patterns and conventions Identifies their expertise areas 2. Analysis Phase

Categorizes findings into:

Coding Style - Formatting, naming, structure Patterns - Common solutions and approaches Best Practices - Quality guidelines Architecture - Design decisions Testing - Testing approaches Code Review - Feedback patterns Documentation - Doc style and practices 3. Organization Phase

Creates structured folders:

engineer_profiles/ └── [engineer_name]/ ├── README.md (overview) ├── coding_style/ │ ├── languages/ │ ├── naming_conventions.md │ ├── code_structure.md │ └── formatting_preferences.md ├── patterns/ │ ├── common_solutions.md │ ├── design_patterns.md │ └── code_examples/ ├── best_practices/ │ ├── code_quality.md │ ├── testing_approach.md │ ├── performance.md │ └── security.md ├── architecture/ │ ├── design_decisions.md │ ├── tech_choices.md │ └── trade_offs.md ├── code_review/ │ ├── feedback_style.md │ ├── common_suggestions.md │ └── review_examples.md └── examples/ ├── by_language/ ├── by_pattern/ └── notable_prs/

Output Structure Engineer Profile README

Contains:

Engineer overview Areas of expertise Languages and technologies Key contributions Coding philosophy How to use this profile Coding Style Documentation

Captures:

Naming conventions (variables, functions, classes) Code structure preferences File organization Comment style Formatting preferences Language-specific idioms

Example:

Coding Style: [Engineer Name]

Naming Conventions

Variables

  • Use descriptive names: userAuthentication not ua
  • Boolean variables: isActive, hasPermission, canEdit
  • Collections: plural names users, items, transactions

Functions

  • Verb-first: getUserById, validateInput, calculateTotal
  • Pure functions preferred
  • Single responsibility

Classes

  • PascalCase: UserService, PaymentProcessor
  • Interface prefix: IUserRepository
  • Concrete implementations: MongoUserRepository

Code Structure

File Organization

  • One class per file
  • Related functions grouped together
  • Tests alongside implementation
  • Clear separation of concerns

Function Length

  • Max 20-30 lines preferred
  • Extract helper functions
  • Single level of abstraction

Patterns Documentation

Captures:

Recurring solutions Design patterns used Architectural patterns Problem-solving approaches

Example:

Common Patterns: [Engineer Name]

Dependency Injection

Used consistently across services:

```typescript // Pattern: Constructor injection class UserService { constructor( private readonly userRepo: IUserRepository, private readonly logger: ILogger ) {} } ```

Why: Testability, loose coupling, clear dependencies

Error Handling

Consistent error handling approach:

```typescript // Pattern: Custom error types + global handler class ValidationError extends Error { constructor(message: string) { super(message); this.name = 'ValidationError'; } }

// Usage if (!isValid(input)) { throw new ValidationError('Invalid input format'); } ```

Why: Type-safe errors, centralized handling, clear debugging

Best Practices Documentation

Captures:

Quality standards Testing approaches Performance guidelines Security practices Documentation standards

Example:

Best Practices: [Engineer Name]

Testing

Unit Test Structure

  • AAA pattern (Arrange, Act, Assert)
  • One assertion per test preferred
  • Test names describe behavior
  • Mock external dependencies

```typescript describe('UserService', () => { describe('createUser', () => { it('should create user with valid data', async () => { // Arrange const userData = { email: 'test@example.com', name: 'Test' }; const mockRepo = createMockRepository();

  // Act
  const result = await userService.createUser(userData);

  // Assert
  expect(result.id).toBeDefined();
  expect(result.email).toBe(userData.email);
});

}); }); ```

Test Coverage

  • Aim for 80%+ coverage
  • 100% coverage for critical paths
  • Integration tests for APIs
  • E2E tests for user flows

Code Review Standards

What to Check

  • [ ] Tests included and passing
  • [ ] No console.logs remaining
  • [ ] Error handling present
  • [ ] Comments explain "why" not "what"
  • [ ] No hardcoded values
  • [ ] Security considerations addressed

Architecture Documentation

Captures:

Design decisions Technology choices Trade-offs made System design approaches

Example:

Architectural Decisions: [Engineer Name]

Decision: Microservices vs Monolith

Context: Scaling user service Decision: Start monolith, extract services when needed Reasoning: - Team size: 5 engineers - Product stage: MVP - Premature optimization risk - Easier debugging and deployment

Trade-offs: - Monolith pros: Simpler, faster development - Monolith cons: Harder to scale later - Decision: Optimize for current needs, refactor when hitting limits

Decision: REST vs GraphQL

Context: API design for mobile app Decision: REST with versioning Reasoning: - Team familiar with REST - Simple use cases - Caching easier - Over-fetching not a problem yet

When to reconsider: If frontend needs complex queries

Code Review Documentation

Captures:

Feedback patterns Review approach Common suggestions Communication style

Example:

Code Review Style: [Engineer Name]

Review Approach

Priority Order

  1. Security vulnerabilities
  2. Logic errors
  3. Test coverage
  4. Code structure
  5. Naming and style

Feedback Style

  • Specific and constructive
  • Explains "why" behind suggestions
  • Provides examples
  • Asks questions to understand reasoning

Common Suggestions

Security: - "Consider input validation here" - "This query is vulnerable to SQL injection" - "Should we rate-limit this endpoint?"

Performance: - "This N+1 query could be optimized with a join" - "Consider caching this expensive operation" - "Memoize this pure function"

Testing: - "Can we add a test for the error case?" - "What happens if the API returns null?" - "Let's test the boundary conditions"

Code Quality: - "Can we extract this into a helper function?" - "This function is doing too many things" - "Consider a more descriptive variable name"

Using This Skill Extract Engineer Profile ./scripts/extract_engineer.sh [github-username]

Interactive workflow:

Enter GitHub username Select repository scope (all/specific org) Choose analysis depth (last N PRs) Specify focus areas (languages, topics) Extract and organize findings

Output: Structured profile in engineer_profiles/[username]/

Analyze Specific Repository ./scripts/analyze_repo.sh [repo-url] [engineer-username]

Focuses analysis on specific repository contributions.

Update Existing Profile ./scripts/update_profile.sh [engineer-username]

Adds new PRs and updates existing profile.

Research Sources GitHub CLI Queries

Pull Requests:

gh pr list --author [username] --limit 100 --state all gh pr view [pr-number] --json title,body,files,reviews,comments

Code Changes:

gh pr diff [pr-number] gh api repos/{owner}/{repo}/pulls/{pr}/files

Reviews:

gh pr view [pr-number] --comments gh api repos/{owner}/{repo}/pulls/{pr}/reviews

Commits:

gh api search/commits --author [username]

Analysis Techniques

Pattern Recognition:

Identify recurring code structures Extract common solutions Detect naming patterns Find architectural choices

Style Extraction:

Analyze formatting consistency Extract naming conventions Identify comment patterns Detect structural preferences

Best Practice Identification:

Look for testing patterns Find error handling approaches Identify security practices Extract performance optimizations Use Cases 1. Onboarding New Engineers

Problem: New engineer needs to learn team standards Solution: Provide senior engineer's profile as reference

Benefits:

Real examples from codebase Understand team conventions See decision-making process Learn best practices 2. Code Review Training

Problem: Teaching good code review skills Solution: Study experienced reviewer's feedback patterns

Benefits:

Learn what to look for Understand feedback style See common issues Improve review quality 3. Knowledge Transfer

Problem: Senior engineer leaving, knowledge lost Solution: Extract their expertise before departure

Benefits:

Preserve tribal knowledge Document decisions Maintain code quality Reduce bus factor 4. Establishing Team Standards

Problem: Inconsistent coding styles across team Solution: Extract patterns from best engineers, create standards

Benefits:

Evidence-based standards Real-world examples Buy-in from team Consistent codebase 5. AI Agent Training

Problem: Agent needs to code like specific engineer Solution: Provide extracted profile to agent

Benefits:

Match expert's style Follow their patterns Apply their best practices Maintain consistency Profile Usage by Agents

When an agent has access to an engineer profile, it can:

Code Generation:

Follow extracted naming conventions Use identified patterns Apply documented best practices Match architectural style

Code Review:

Provide feedback in engineer's style Check for common issues they'd catch Apply their quality standards Match their priorities

Problem Solving:

Use their common solutions Follow their architectural approach Apply their design patterns Consider their trade-offs

Example Agent Prompt:

"Using the profile at engineer_profiles/senior_dev/, write a user service following their coding style, patterns, and best practices. Pay special attention to their error handling approach and testing standards."

Best Practices Research Ethics

DO:

✅ Get permission before extracting ✅ Focus on public contributions ✅ Respect privacy ✅ Use for learning and improvement

DON'T:

❌ Extract without permission ❌ Share profiles externally ❌ Include sensitive information ❌ Use for performance reviews Profile Maintenance

Regular Updates:

Refresh every quarter Add new significant PRs Update with latest patterns Archive outdated practices

Quality Control:

Verify extracted patterns Review examples for relevance Update documentation Remove deprecated practices Effective Usage

For Learning:

Study patterns with context Understand reasoning behind choices Practice applying techniques Ask questions when unclear

For Replication:

Start with style guide Reference patterns for similar problems Adapt to current context Don't blindly copy Limitations

What This Extracts:

✅ Coding style and conventions ✅ Common patterns and approaches ✅ Best practices and guidelines ✅ Architectural decisions ✅ Review feedback patterns

What This Doesn't Capture:

❌ Real-time problem-solving process ❌ Verbal communication style ❌ Meeting discussions ❌ Design phase thinking ❌ Interpersonal mentoring Future Enhancements

Potential additions:

Slack message analysis (communication style) Design doc extraction (design thinking) Meeting notes analysis (decision process) Video analysis (pair programming sessions) Code metrics tracking (evolution over time) Example Output engineer_profiles/ └── senior_dev/ ├── README.md │ # Senior Dev - Staff Engineer │ Expertise: TypeScript, Node.js, System Design │ Focus: API design, performance optimization │ ├── coding_style/ │ ├── typescript_style.md │ ├── naming_conventions.md │ └── code_structure.md │ ├── patterns/ │ ├── dependency_injection.md │ ├── error_handling.md │ └── examples/ │ ├── service_pattern.ts │ └── repository_pattern.ts │ ├── best_practices/ │ ├── testing_strategy.md │ ├── code_quality.md │ └── performance.md │ ├── architecture/ │ ├── api_design.md │ ├── database_design.md │ └── scaling_approach.md │ ├── code_review/ │ ├── feedback_examples.md │ └── review_checklist.md │ └── examples/ └── notable_prs/ ├── pr_1234_auth_refactor.md └── pr_5678_performance_fix.md

Summary

This skill transforms an engineer's GitHub contributions into a structured, reusable knowledge base. It captures their expertise in a format that:

Humans can learn from - Clear documentation with examples Agents can replicate - Structured patterns and guidelines Teams can adopt - Evidence-based best practices Organizations can preserve - Knowledge that survives turnover

The goal: Make expertise scalable, learnable, and replicable.

"The best way to learn is from those who have already mastered it."

返回排行榜