MCP HubMCP Hub
スキル一覧に戻る

contextvar-opportunity-finder

majiayu000
更新日 Today
23 閲覧
58
9
58
GitHubで表示
その他general

について

このスキルはPythonコードをスキャンし、関数内の明示的な`user_id`パラメータを検出し、周囲コンテキストの使用が可能な箇所を特定します。これは検出専用の調査ツールであり、人間によるレビューのためにすべての検出結果を報告しますが、規範的な推奨事項は提示しません。開発者はこのツールを使用して、コンテキスト変数によるリファクタリングの恩恵を受けられる可能性のあるコードパターンを体系的に特定できます。

クイックインストール

Claude Code

推奨
プラグインコマンド推奨
/plugin add https://github.com/majiayu000/claude-skill-registry
Git クローン代替
git clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/contextvar-opportunity-finder

このコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします

ドキュメント

Contextvar Opportunity Finder

An intelligent grep tool that finds all explicit user_id usage patterns in Python code. Reports findings with context for human review.


Core Principle

This is a detection-only skill - It finds and reports all instances of explicit user_id usage without making judgments about correctness.

Read every file completely, one at a time, and report findings for EACH file before moving to the next. No shortcuts, no grep tricks, no "I'll infer from patterns". Complete reads only!

What it does: Scans code, detects patterns, reports everything it finds.

What it doesn't do: Make recommendations, filter results, or determine what's "right" or "wrong".


Detection Patterns

Pattern 1: Direct user_id Parameter

Look for functions with user_id in their parameters:

def function_name(..., user_id: str, ...):
def function_name(..., user_id: Optional[str], ...):
def function_name(..., user_id=None, ...):

Pattern 2: user_id Extraction from Dicts/Objects

Look for functions extracting user_id from parameters:

def function_name(self, context: Dict[str, Any]):
    user_id = context.get('user_id')

def function_name(self, event):
    user_id = event.user_id

Pattern 3: Redundant Context Setting

Look for code that sets context then passes user_id:

set_current_user_id(user_id)
result = some_function(user_id)  # Passing after setting

Pattern 4: Threading Through Layers

Look for user_id passed through multiple function calls:

def handle_request(user_id):
    result = process_data(user_id)

def process_data(user_id):
    return validate_data(user_id)

def validate_data(user_id):
    # Three layers deep

Pattern 5: Bad Dual-Mode Pattern

Constructor accepts optional user_id but methods still require it:

class Service:
    def __init__(self, user_id: Optional[str] = None):
        self.user_id = user_id or get_current_user_id()

    def get_data(self, user_id: str):  # Still requires parameter!
        # Ignores self.user_id

Pattern 6: Convenience Function Wrappers

Functions that exist only to extract user_id and pass it:

def store_api_key_for_current_user(service_name: str, api_key: str):
    user_id = get_current_user_id()
    service.store_credential(user_id, 'api_key', service_name, api_key)

Pattern 7: Request Body User IDs

Models/endpoints accepting user_id in request payloads:

class LogoutRequest(BaseModel):
    user_id: str  # Security risk!

Context Clues to Report

When reporting each instance, note these surrounding context clues:

Class/Inheritance Context

  • What class is the method in?
  • What does the class inherit from?
  • Is it a service, repository, API handler, etc?

Function Context

  • Function name
  • Decorators on the function
  • Parameters beyond user_id
  • Return type annotations

Call Context

  • What's calling this function?
  • What's this function calling with user_id?
  • Is it part of a chain of calls?

Code Patterns

  • Is there set_current_user_id() nearby?
  • Is there get_current_user_id() in the same class/file?
  • Are there convenience wrappers around this function?
  • Does the constructor have a different pattern than methods?

File/Module Context

  • Filename and path
  • What kind of module is it? (api/, services/, repositories/, tools/, etc)
  • Import statements that might indicate usage patterns

Investigation Process

  1. Find all user_id parameters in the file or directory
  2. Detect which pattern it matches (1-7)
  3. Note the context clues around each instance
  4. Report everything found without filtering

Output Format

## Explicit user_id Usage Report

**Found N instances across M files**

### path/to/file.py
Line X: def function_name(self, user_id: str, data: Dict):
  Pattern: Direct user_id parameter
  Context: Method in SomeClass, inherits from BaseClass

Line Y: user_id = event.user_id
  Pattern: Extracting from object
  Context: Inside handle_event() method

Line Z: self.some_service.process(user_id, ...)
  Pattern: Threading through layers
  Context: Calling another service with user_id

### path/to/another.py
Line A: def __init__(self, user_id: Optional[str] = None):
        self.user_id = user_id or get_current_user_id()
Line B: def store_data(self, user_id: str, ...):
  Pattern: Bad dual-mode pattern
  Context: Constructor has dual-mode but methods require explicit

Line C: set_current_user_id(user_id)
        result = service.method(user_id)
  Pattern: Redundant context setting
  Context: Sets ambient context then passes explicitly

### path/to/models.py
Line D: class SomeRequest(BaseModel):
            user_id: str
  Pattern: Request body user_id
  Context: Pydantic model for API endpoint

... continues for all findings ...

The report simply shows:

  • Where user_id appears
  • What pattern it matches
  • Basic context about its location
  • No judgments about correctness

What This Tool Does NOT Do

  • Does NOT determine if explicit user_id is "wrong"
  • Does NOT prescribe specific fixes
  • Does NOT judge architectural decisions
  • Does NOT whitelist certain files or patterns
  • Does NOT make recommendations

This is purely an investigation tool that surfaces instances for human review.


What This Tool Finds

  1. All functions/methods with user_id parameters
  2. Places where user_id is extracted from objects or dicts
  3. Chains of functions passing user_id through multiple layers
  4. Classes with inconsistent patterns (constructor vs methods)
  5. Wrapper functions that exist just to handle user_id
  6. API models accepting user_id in request bodies
  7. Places where context is set but user_id is still passed

Quick Reference

PatternWhat to Look ForExample
def fn(user_id: str)Functions with explicit user_id parameterService methods, API handlers
user_id = context.get('user_id')Extracting from dicts/objectsEvent handlers, context processing
set_current_user_id(uid); fn(uid)Setting context then passing explicitlyAPI endpoints, request handlers
Multiple layers passing user_idThreading through call chainsAPI → Service → Repository
user_id: Optional[str] = NoneOptional parameters with fallbackDual-mode constructors/methods
class Request(user_id: str)Request body modelsPydantic models for endpoints
Convenience wrappersFunctions that just extract and pass*_for_current_user() helpers

Summary

This is an intelligent grep tool for finding user_id usage patterns. It:

  • DOES: Find all instances of explicit user_id usage
  • DOES: Detect which pattern each instance matches
  • DOES: Report context clues around each finding
  • DOES NOT: Judge whether any instance is "wrong"
  • DOES NOT: Make recommendations
  • DOES NOT: Filter results

Think of it as "grep for user_id patterns" with better context awareness.

GitHub リポジトリ

majiayu000/claude-skill-registry
パス: skills/contextvar-opportunity-finder

関連スキル

algorithmic-art

メタ

This Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.

スキルを見る

subagent-driven-development

開発

This skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.

スキルを見る

executing-plans

デザイン

Use the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.

スキルを見る

cost-optimization

その他

This Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.

スキルを見る