Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    huangserva

    prompt-analyzer

    huangserva/prompt-analyzer
    AI & ML
    1,011
    2 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    提示词分析与洞察 - 查看Prompt详情、对比差异、推荐相似提示词、元素库统计

    SKILL.md

    Prompt Analyzer - 提示词分析器

    🎯 核心职责

    专注于已生成Prompt的分析和洞察,不负责生成新Prompt。

    提供以下5大功能:

    1. 查看详情 - 分析Prompt使用了哪些元素
    2. 对比分析 - 对比两个Prompt的差异
    3. 相似推荐 - 推荐相似的Prompt
    4. 元素统计 - 查询元素库统计信息
    5. 风格推荐 - 按风格推荐最佳元素组合

    📋 功能1:查看Prompt详情

    触发场景

    用户说:

    • "查看Prompt #5的详情"
    • "分析一下Prompt #5用了哪些元素"
    • "显示Prompt #5的完整信息"
    • "Prompt #5包含什么?"

    SKILL处理流程

    步骤1:识别意图

    从用户输入中提取Prompt ID:

    # 示例:用户说 "查看Prompt #5的详情"
    prompt_id = 5
    

    步骤2:调用执行层

    from prompt_analyzer import analyze_prompt_detail
    
    result = analyze_prompt_detail(prompt_id=5)
    

    步骤3:检查结果

    如果Prompt不存在:

    if 'error' in result:
        print(f"❌ {result['error']}")
        # 提示用户:该Prompt不存在,可能还没生成过任何Prompt
    

    步骤4:格式化展示

    📸 Prompt #5 详情
    
    **用户需求**: {result['user_intent']}
    **生成时间**: {result['generation_date']}
    **质量评分**: {result['quality_score']}/10
    **风格标签**: {result['style_tag']}
    
    **使用的元素** ({len(result['elements'])}个):
    
    1. [{field_name}] {chinese_name} (复用度: {reusability})
       - 类别: {category}
       - 模板: {template}
    
    2. ...
    
    **完整Prompt**:
    ────────────────────────────────────────────────────────
    {result['prompt_text']}
    ────────────────────────────────────────────────────────
    

    📋 功能2:对比两个Prompts

    触发场景

    用户说:

    • "对比Prompt #5和#17"
    • "#5和#17有什么区别?"
    • "比较一下Prompt #5和#17"

    SKILL处理流程

    步骤1:识别意图

    从用户输入中提取两个Prompt ID:

    # 示例:用户说 "对比Prompt #5和#17"
    prompt_id1 = 5
    prompt_id2 = 17
    

    步骤2:调用执行层

    from prompt_analyzer import compare_prompts
    
    result = compare_prompts(prompt_id1=5, prompt_id2=17)
    

    步骤3:分析差异维度

    SKILL分析返回的数据,生成对比表格:

    ⚖️ Prompt对比:#5 vs #17
    
    ### 基本信息对比
    
    | 维度 | Prompt #5 | Prompt #17 |
    |------|-----------|-----------|
    | 用户需求 | {p1['user_intent']} | {p2['user_intent']} |
    | 风格标签 | {p1['style_tag']} | {p2['style_tag']} |
    | 质量评分 | {p1['quality_score']}/10 | {p2['quality_score']}/10 |
    | 元素总数 | {len(p1['elements'])}个 | {len(p2['elements'])}个 |
    | 生成时间 | {p1['generation_date']} | {p2['generation_date']} |
    
    ### 元素差异分析
    
    **相似度**: {result['similarity_score']*100:.1f}%
    
    **共同元素** ({len(result['common_elements'])}个):
    - {common_element['chinese_name']} ({common_element['category']})
    - ...
    
    **Prompt #5 独有** ({len(result['unique_to_p1'])}个):
    - {element['chinese_name']} ({element['category']})
      关键词: {element['template'][:50]}...
    - ...
    
    **Prompt #17 独有** ({len(result['unique_to_p2'])}个):
    - {element['chinese_name']} ({element['category']})
      关键词: {element['template'][:50]}...
    - ...
    

    步骤4:分析结论

    SKILL根据相似度给出结论:

    if result['similarity_score'] > 0.7:
        print("💡 这两个Prompt非常相似,风格接近")
    elif result['similarity_score'] > 0.4:
        print("💡 这两个Prompt有一定相似性,但风格有明显差异")
    else:
        print("💡 这两个Prompt完全不同,属于不同风格")
    

    📋 功能3:推荐相似Prompts

    触发场景

    用户说:

    • "推荐与#5相似的Prompt"
    • "有没有类似#5的?"
    • "找一些相似的提示词"
    • "基于Prompt #5推荐相似的"

    SKILL处理流程

    步骤1:识别意图

    # 示例:用户说 "推荐与#5相似的Prompt"
    prompt_id = 5
    top_n = 3  # 默认推荐3个
    

    步骤2:调用执行层

    from prompt_analyzer import recommend_similar_prompts
    
    result = recommend_similar_prompts(prompt_id=5, top_n=3)
    

    步骤3:分析推荐理由

    SKILL解读相似度原因,为每个推荐Prompt生成理由:

    # 分析共同元素,找出相似的原因
    def analyze_similarity_reason(common_element_ids, target_prompt, candidate_prompt):
        """
        分析两个Prompt为什么相似
    
        返回:
        - 共同的风格标签
        - 共同的元素类别
        - 推荐理由列表
        """
        reasons = []
    
        # 检查风格标签
        if target_prompt['style_tag'] == candidate_prompt['style_tag']:
            reasons.append(f"✓ 同为{candidate_prompt['style_tag']}风格")
    
        # 按类别统计共同元素
        category_count = {}
        for elem_id in common_element_ids:
            # 查询元素详情获取category
            # ... (执行层已返回)
            category = ...
            category_count[category] = category_count.get(category, 0) + 1
    
        # 列出重要的共同类别
        for category, count in category_count.items():
            if count >= 2:
                reasons.append(f"✓ {count}个共同的{category}元素")
    
        return reasons
    

    步骤4:格式化展示

    🔍 为Prompt #5推荐相似提示词
    
    [1] Prompt #{recommendation['prompt_id']} - {recommendation['user_intent']}
        相似度: {recommendation['similarity']*100:.1f}%
        共同元素: {recommendation['common_count']}个
        质量评分: {recommendation['quality_score']}/10
    
        理由:
        - ✓ 同为{style_tag}风格
        - ✓ 共用3个makeup元素
        - ✓ 共用2个lighting元素
    
    [2] ...
    
    [3] ...
    

    📋 功能4:元素库统计

    触发场景

    用户说:

    • "元素库有哪些类别?"
    • "makeup类别有多少个元素?"
    • "哪些元素用得最多?"
    • "查看元素库统计"
    • "makeup_styles的详细信息"

    SKILL处理流程

    步骤1:识别意图

    # 场景A:用户说 "元素库有哪些类别?"
    category = None  # 查询整体统计
    
    # 场景B:用户说 "makeup类别有多少个元素?"
    category = 'makeup_styles'  # 查询特定类别
    

    步骤2:调用执行层

    from prompt_analyzer import get_library_statistics
    
    # 整体统计
    result = get_library_statistics()
    
    # 或者特定类别
    result = get_library_statistics(category='makeup_styles')
    

    步骤3:格式化展示

    场景A:整体统计

    📊 元素库统计
    
    **总计**: {result['total_elements']} 个元素
    
    **按类别分布**:
    - makeup_styles: {count}个
    - clothing_styles: {count}个
    - hair_styles: {count}个
    - lighting_techniques: {count}个
    - facial_features: {count}个
    - ...
    
    💡 使用 "查看makeup_styles详情" 查看具体元素列表
    

    场景B:类别详情

    📊 元素库统计 - {category}
    
    **类别**: {result['category_details']['category']}
    **总数**: {result['category_details']['total_count']} 个元素
    
    **最常用元素** (Top 10):
    
    | 排名 | 元素名称 | 复用度 | 使用次数 | 平均质量 |
    |------|---------|--------|---------|---------|
    | 1 | {chinese_name} | {reusability} | {usage_count}次 | {avg_quality}/10 |
    | 2 | ... | ... | ... | ... |
    | ... |
    
    **最高质量元素** (Top 5):
    [按avg_quality排序]
    
    **从未使用的元素** ({count}个):
    [usage_count = 0的元素]
    

    📋 功能5:按风格推荐元素组合

    触发场景

    用户说:

    • "古装风格应该用什么元素?"
    • "科幻风格的最佳元素组合是什么?"
    • "推荐西部世界风格的元素"
    • "ancient_chinese风格用哪些元素好?"

    SKILL处理流程

    步骤1:识别意图

    # 示例:用户说 "古装风格应该用什么元素?"
    
    # 映射用户描述到style_tag
    style_mapping = {
        '古装': 'ancient_chinese',
        '古装中式': 'ancient_chinese',
        '仙剑奇侠传': 'ancient_chinese',
        '科幻': 'modern_sci_fi',
        '西部世界': 'westworld_android',
        '赛博朋克': 'cyberpunk',
        '奇幻': 'fantasy'
    }
    
    style = style_mapping.get('古装', 'ancient_chinese')
    

    步骤2:调用执行层

    from prompt_analyzer import recommend_elements_by_style
    
    result = recommend_elements_by_style(style='ancient_chinese')
    

    步骤3:按类别组织推荐

    SKILL将返回的元素按类别分组,便于展示:

    # 按category分组
    elements_by_category = {}
    for element in result['recommended_elements']:
        category = element['category']
        if category not in elements_by_category:
            elements_by_category[category] = []
        elements_by_category[category].append(element)
    
    # 按类别的最高使用频率排序
    sorted_categories = sorted(
        elements_by_category.items(),
        key=lambda x: max(e['usage_frequency'] for e in x[1]),
        reverse=True
    )
    

    步骤4:格式化展示

    🎨 风格推荐:{result['style']}
    
    **数据来源**: 基于{result['total_prompts']}个历史Prompt分析
    
    **推荐元素组合** (按类别):
    
    ### 1. {category_name}
    
    [{field_name}] {chinese_name}
    - 使用频率: {usage_frequency*100:.0f}% ({usage_count}/{total_prompts}个Prompt使用)
    - 复用度: {reusability}/10
    - 平均质量: {avg_quality}/10
    - 关键词: {template[:80]}...
    
    ### 2. {category_name}
    
    ...
    
    **使用建议**:
    - ✓ 这个组合在{style}风格中最常用,质量稳定
    - ✓ 推荐搭配:{推荐的基础属性,如"东亚女性"}
    - ⚠️ 避免搭配:{冲突的元素}
    

    🔧 执行层函数列表

    SKILL调用以下执行函数(代码层只执行,不决策):

    # 所有函数在 prompt_analyzer.py 中
    
    def analyze_prompt_detail(prompt_id: int) -> dict:
        """查询Prompt完整信息"""
    
    def compare_prompts(prompt_id1: int, prompt_id2: int) -> dict:
        """对比两个Prompt差异"""
    
    def recommend_similar_prompts(prompt_id: int, top_n: int = 3) -> list:
        """推荐相似Prompts"""
    
    def get_library_statistics(category: str = None) -> dict:
        """查询元素库统计"""
    
    def recommend_elements_by_style(style: str) -> dict:
        """按风格推荐元素组合"""
    

    📁 数据依赖

    elements.db
    ├── elements                 # 元素库(由universal-learner维护)
    ├── generated_prompts        # 生成历史(由intelligent-prompt-generator写入)
    ├── prompt_elements          # Prompt-元素关联
    └── element_usage_stats      # 元素使用统计
    

    重要:prompt-analyzer依赖intelligent-prompt-generator生成的历史数据。如果数据库中没有generated_prompts记录,分析功能无法工作。


    ⚙️ 架构原则

    ✅ SKILL = 大脑(决策层)

    • 识别用户意图
    • 分析返回数据
    • 格式化展示结果
    • 生成推荐理由

    ✅ 代码 = 手脚(执行层)

    • 查询数据库
    • 计算相似度
    • 返回原始数据

    ❌ 代码不做决策

    • 不判断"哪个更好"
    • 不决定"展示什么"
    • 只负责"取数据"

    使用示例

    示例1:查看详情

    用户: "查看Prompt #1的详情"

    SKILL处理:

    from prompt_analyzer import analyze_prompt_detail
    
    result = analyze_prompt_detail(prompt_id=1)
    
    # 展示格式化结果
    print(f"📸 Prompt #{result['prompt_id']} 详情\n")
    print(f"**用户需求**: {result['user_intent']}")
    print(f"**生成时间**: {result['generation_date']}")
    # ...
    

    示例2:对比Prompts

    用户: "对比Prompt #1和#2"

    SKILL处理:

    from prompt_analyzer import compare_prompts
    
    result = compare_prompts(prompt_id1=1, prompt_id2=2)
    
    # 分析相似度
    similarity = result['similarity_score']
    if similarity > 0.7:
        conclusion = "非常相似"
    elif similarity > 0.4:
        conclusion = "有一定相似性"
    else:
        conclusion = "完全不同"
    
    # 展示对比表格和结论
    # ...
    

    示例3:推荐相似Prompt

    用户: "推荐与#1相似的Prompt"

    SKILL处理:

    from prompt_analyzer import recommend_similar_prompts
    
    recommendations = recommend_similar_prompts(prompt_id=1, top_n=3)
    
    # 为每个推荐分析理由
    for rec in recommendations:
        reasons = analyze_similarity_reason(
            rec['common_element_ids'],
            target_prompt_id=1,
            candidate_prompt_id=rec['prompt_id']
        )
    
        # 展示推荐和理由
        # ...
    

    示例4:元素库统计

    用户: "查看makeup_styles类别详情"

    SKILL处理:

    from prompt_analyzer import get_library_statistics
    
    result = get_library_statistics(category='makeup_styles')
    
    # 展示统计表格
    details = result['category_details']
    print(f"📊 {details['category']} - {details['total_count']}个元素\n")
    
    # 按使用次数排序展示
    # ...
    

    示例5:风格推荐

    用户: "古装风格应该用什么元素?"

    SKILL处理:

    from prompt_analyzer import recommend_elements_by_style
    
    result = recommend_elements_by_style(style='ancient_chinese')
    
    # 按类别组织展示
    elements_by_category = group_by_category(result['recommended_elements'])
    
    # 展示每个类别的推荐
    for category, elements in elements_by_category.items():
        print(f"### {category}")
        for elem in elements:
            print(f"  - {elem['chinese_name']} (使用频率: {elem['usage_frequency']*100:.0f}%)")
    # ...
    

    ⚠️ 重要提醒

    1. 数据前提:必须先有生成历史才能分析

      • 如果用户说"查看Prompt #5",但数据库中没有任何Prompt,应提示:
        ❌ 数据库中还没有生成历史。
        💡 请先使用 intelligent-prompt-generator 生成一些Prompt。
        
    2. Prompt ID范围:只能查询已存在的Prompt ID

      • 用户输入的ID可能不存在,需要检查error字段
    3. 风格标签一致性:风格推荐依赖style_tag

      • style_tag由intelligent-prompt-generator在保存时设置
      • 常见标签:ancient_chinese, modern_sci_fi, cyberpunk, fantasy, westworld_android
    4. 元素类别名称:查询统计时使用正确的category名称

      • makeup_styles (不是makeup)
      • lighting_techniques (不是lighting)
      • clothing_styles, hair_styles, facial_features 等

    准备好分析提示词!等待用户的分析请求。

    Repository
    huangserva/skill-prompt-generator
    Files