Token导航 LogoToken导航TokenDH.com
前端设计需要联网github未标认证来源可访问许可证需确认审计通过

menu-debug菜单调试

Agent Skill

menu-debug 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

696

周安装

29

GitHub Stars

18

下载量

232
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:menu-debug(菜单调试)
来源仓库:https://github.com/openharmonyinsight/openharmony-skills
仓库路径:skills/menu-debug
安装命令:
npx skills add https://github.com/openharmonyinsight/openharmony-skills --skill menu-debug
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/openharmonyinsight/openharmony-skills --skill menu-debug

简介

menu-debug 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合围绕仓库状态进行整理。

  • 适用于菜单调试、协作事项管理和仓库状态分析等前端设计任务。
  • 通过 GitHub 仓库安装,使用 npx skills add 命令添加,需结合原始 README 核验具体用法。
  • 安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写操作。
  • menu-debug 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Menu Component Debugging Skill

Systematic debugging and problem diagnosis for Menu component issues in OpenHarmony ACE Engine. This skill provides structured troubleshooting guidance for Menu-related problems with automatic log enhancement patch generation.

Overview

Menu component debugging requires analyzing multiple layers:

  • Subwindow lifecycle - Window creation, recreation, and destruction
  • Menu layout algorithm - Width calculation, positioning, and constraint handling
  • Menu pattern - State management, menu wrapper, and menu items
  • Pipeline context - Window rect info, theme settings, and display configuration
  • Event handling - Click detection, state transitions, and gesture processing

Critical Requirements:

  • ⚠️ All log patches MUST be based on actual code analysis - no speculation
  • ⚠️ Log patches MUST follow OpenHarmony logging standards (TAG_LOGI/W/E macros)
  • ⚠️ Always provide context - include relevant variable values in log statements
  • ⚠️ Use existing log tags - ACE_MENU, ACE_SUB_WINDOW, ACE_OVERLAY

Problem Categories

1. Menu Width Issues

Symptoms:

  • Menu width displays as 0
  • Menu appears too narrow or wide
  • Menu width calculation errors

Common Causes:

  • displayWindowRectInfo.Width() returns 0 (async initialization not complete)
  • PipelineContext source issues (subwindow vs main window)
  • Menu parameter configuration Errors
  • Theme settings problems

2. Subwindow Recreation Issues

Symptoms:

  • Frequent "recreate subwindow" logs
  • Menu fails to show on rapid open
  • Window state transitions (ATTACHING/DETACHING)
  • Menu displays blank or delayed

Common Causes:

  • Quick Menu opening (DETACHING state conflict)
  • Display ID changes
  • Menu wrapper state mismatches

3. Menu Layout Issues

Symptoms:

  • Menu positioned incorrectly
  • Menu overlaps with target
  • Menu clipped or truncated
  • Menu displays on wrong screen side

Common Causes:

  • Window rect calculation errors
  • Offset calculation problems
  • Device type issues (foldable phones)
  • Safe area not considered

4. Menu Crash/Instability

Symptoms:

  • Menu crashes when opening
  • Menu disappears unexpectedly
  • Menu interaction failures

Common Causes:

  • Null pointer dereferences
  • Menu pattern lifecycle issues
  • State management errors

5. Click Response Issues

Symptoms:

  • Click on menu trigger has no response
  • Menu fails to open when clicked
  • Delayed response to menu interaction

Common Causes:

  • Event hub not properly initialized
  • Gesture event not registered
  • Menu state prevents click handling

6. Menu Auto-Close Issues

Symptoms:

  • Menu closes immediately after opening
  • Menu disappears when clicked
  • Menu closes without user interaction

Common Causes:

  • State machine issues in menu wrapper
  • Touch event handling conflicts
  • HideMenu called incorrectly

7. Menu Positioning Issues

Symptoms:

  • Menu positioned at screen top-left corner
  • Menu appears at wrong screen position
  • Menu placement calculation errors

Common Causes:

  • Offset calculation problems
  • Anchor point configuration errors
  • MenuWindowRect calculation incorrect

8. Safe Area/Navigation Bar Issues

Symptoms:

  • Menu overlaps with navigation bar
  • Menu covers status bar
  • Menu doesn't avoid system UI

Common Causes:

  • Safe area insets not applied
  • Window rect doesn't account for system UI
  • Display cutout settings ignored

9. Menu Dimension Issues

Symptoms:

  • Menu width is 0
  • Menu height is 0
  • Menu size calculations return 0

Common Causes:

  • Async initialization timing
  • Pipeline context not ready
  • DisplayWindowRectInfo not properly initialized

Debugging Workflow

Step 1: Identify Problem Category

Based on symptoms, identify which problem category:

Width/Dimension Issues → Look for:

Menu width is 0
menuMaxWidth = 0
displayWindowRectInfo.Width() = 0

Subwindow Issues → Look for:

recreate subwindow
DETACHING state
MenuWindowRect

Layout Issues → Look for:

MenuOffset incorrect
position calculation error
menuWindowRect

Crash Issues → Look for:

Segmentation fault
Null pointer
CHECK_NULL_*

Click/Auto-Close Issues → Look for:

HideMenu called
state transition
gesture event not received

Positioning Issues → Look for:

anchorPoint calculation
MenuWindowRect values
offset errors

Step 2: Locate Key Code Locations

For Width/Dimension Issues:

  • menu_layout_algorithm.cpp:941 - UpdateChildConstraintByDevice
  • menu_layout_algorithm.cpp:3618 - GetMenuWindowRectInfo
  • menu_layout_algorithm.cpp:931 - Pipeline context source
  • menu_pattern.cpp - Menu wrapper initialization

For Subwindow Issues:

  • subwindow_manager.cpp:1954 - GetOrCreateMenuSubWindow
  • subwindow_manager.cpp:1965 - Recreate log
  • menu_wrapper_pattern.cpp - Menu wrapper lifecycle

For Layout Issues:

  • menu_layout_algorithm.cpp:3611-3659 - GetMenuWindowRectInfo
  • menu_pattern.cpp - Menu positioning
  • multi_menu_layout_algorithm.cpp - Multi-menu layout

For Click/Auto-Close Issues:

  • menu_wrapper_pattern.cpp - OnDetach/OnAttach
  • menu_pattern.cpp - Menu state management
  • menu_view.cpp - Event handling

For Positioning Issues:

  • menu_layout_algorithm.cpp - GetMenuWindowRectInfo
  • menu_pattern.cpp - Offset calculation
  • subwindow_manager.cpp - Window rect calculation

Step 3: Collect Existing Logs

Key log tags to filter:

# Menu-related logs
cat xxx.log | grep "ACE_MENU"
cat xxx.log | grep "ACE_SUB_WINDOW"
cat xxx.log | grep "ACE_OVERLAY"

# Specific issues
cat xxx.log | grep "recreate subwindow"
cat xxx.log | grep "DisplayWindowRectInfo"
cat xxx.log | grep "MenuWindowRect"
cat xxx.log | grep "HideMenu"
cat xxx.log | grep "OnClick"

Critical log patterns:

  • recreate subwindow → Subwindow recreation occurred
  • DisplayWindowRectInfo width is 0 → Width initialization problem
  • DETACHING → Window state transition
  • MenuWindowRect → Window rect calculation
  • HideMenu → Menu hide operation

New Problem Analysis (v0.2.0)

Problem 1: 点击无响应/点击弹不出来菜单 (Click No Response)

Symptoms:

  • 点击菜单触发器没有反应
  • 点击后菜单不弹出
  • 没有任何错误日志
  • 点击事件似乎被忽略

Possible Causes:

  1. 事件中心未正确初始化

- GestureEventHub 没有获取或创建 - Pan event 没有注册到菜单组件

  1. 菜单状态不正确

- MenuWrapper 处于 DETACHING 状态 - MenuPattern 的状态机阻止了新事件

  1. 点击区域被遮挡

- 其他组件覆盖了菜单的点击区域 - Window z-order 问题

  1. 事件被消费

- 其他组件拦截了点击事件 - Touch event 没有传递到菜单

Debug Steps:

  1. 检查事件注册 # 查找菜单事件相关日志 cat xxx.log | grep "OnClick" cat xxx.log | grep "GestureEventHub"
  2. 检查菜单状态 # 查找菜单状态 cat xxx.log | grep "MenuWrapper" cat xxx.log | grep "MenuState"
  3. 检查 window 状态 # 查找子窗口状态 cat xxx.log | grep "ACE_SUB_WINDOW" cat xxx.log | grep "MenuWindowRect"

Code Locations:

  • menu_wrapper_pattern.cpp:OnDetach() - 状态转换
  • menu_pattern.cpp:OnClick - 点击处理
  • menu_view.cpp:Create() - 菜单创建流程

Solutions:

  1. 确保事件正确注册

- 检查 GestureEventHub 初始化 - 验证 Pan event 注册 - 确认 event hub 传递正确

  1. 检查菜单状态机

- 验证 OnModifyDone 时机 - 确保 Menu 不在阻止状态 - 检查 isShowing_ 状态

  1. 验证点击区域

- 检查是否有组件遮挡 - 验证 hitTestStack 配置 - 确认触摸事件传递

  1. 添加调试日志 // 在点击处理中添加日志 TAG_LOGI(AceLogTag::ACE_MENU, "OnClick called: menuId=%{public}d", menuId);

Problem 2: 点击菜单立马就关闭了 (Menu Closes Immediately)

Symptoms:

  • 菜单打开后立即关闭
  • 点击菜单后菜单消失
  • 菜单闪现后消失
  • 看到 "HideMenu" 日志紧接着 "ShowMenu"

Possible Causes:

  1. 状态机错误

- MenuWrapper 状态在 ATTACHING 和 DETACHED 间快速切换 - OnDetach 被意外调用 - 状态转换逻辑有缺陷

  1. 触摸事件冲突

- 点击事件触发两次 - Hide 和 Show 事件冲突 - Touch down 和 touch up 事件处理错误

  1. Window 焦点问题

- Window 失去焦点导致菜单关闭 - Focus change event 触发隐藏

  1. 超时配置错误

- Menu 超时时间设置为 0 - Duration 太短导致立即关闭

Debug Steps:

  1. 检查状态转换日志 # 查找快速的状态变化 cat xxx.log | grep -E "ATTACHING|DETACHING" | head -20
  2. 检查 HideMenu 调用 # 查找谁调用了 HideMenu cat xxx.log | grep "HideMenu" | grep -B 5 "ShowMenu"
  3. 检查触摸事件 # 查找触摸事件 cat xxx.log | grep "Touch" cat xxx.log | grep "Click"
  4. 检查窗口生命周期 # 查找子窗口创建和销毁 cat xxx.log | grep "GetOrCreateMenuSubWindow" cat xxx.log | grep "RemoveMenuSubWindow"

Code Locations:

  • menu_wrapper_pattern.cpp:OnDetach() - 状态管理
  • menu_wrapper_pattern.cpp:HideMenu() - 隐藏逻辑
  • menu_pattern.cpp - 状态机实现

Solutions:

  1. 修复状态转换逻辑

- 添加状态转换日志 - 添加转换条件检查 - 防止非法状态转换

  1. 优化事件处理

- 添加事件去重逻辑 - 防止 Show/Hide 冲突 - 添加事件处理延迟

  1. 检查焦点管理

- 验证窗口焦点设置 - 确认 focus 事件处理 - 添加焦点状态日志

  1. 增加状态保护 // 添加状态检查 if (menuWrapperPattern->GetState()!= MenuWrapperState::DETACHING) {TAG_LOGW(AceLogTag::ACE_MENU, "Invalid HideMenu call, current state=%{public}d", static_cast<int>(state)); return;}

Problem 3: 弹出菜单位置在屏幕左上角 (Menu Positioned at Top-Left)

Symptoms:

  • 菜单位置在屏幕左上角 (0,0)
  • 菜单位置明显错误
  • 菜单没有跟随触发器
  • offset 计算错误

Possible Causes:

  1. Offset 计算错误

- targetOffset 计算为 0 - PositionOffset 未正确设置 - 初始位置使用默认值

  1. 锚点配置错误

- anchorPoint 未设置 - anchorPosition 使用默认值 - 菜单锚到错误位置

  1. MenuWindowRect 计算错误

- GetMenuWindowRectInfo 返回错误值 - displayWindowRect 信息错误 - 子窗口尺寸计算失败

  1. Placement 配置未生效

- UpdateMenuPlacement 没有被调用 - placement 属性被忽略 - AlignRule 配置错误

Debug Steps:

  1. 检查位置相关日志 # 查找菜单位置计算 cat xxx.log | grep "MenuOffset" cat xxx.log | grep "MenuPosition" cat xxx.log | grep "targetOffset"
  2. 检查窗口 Rect 信息 # 查找窗口矩形 cat xxx.log | grep "MenuWindowRect" cat xxx.log | grep "DisplayWindowRectInfo"
  3. 检查 placement 配置 # 查找 placement 配置 cat xxx.log | grep "placement" cat xxx.log | grep "anchor"

Code Locations:

  • menu_layout_algorithm.cpp:3611-3659 - GetMenuWindowRectInfo
  • menu_layout_algorithm.cpp - Offset 计算
  • menu_pattern.cpp - PositionOffset 更新
  • menu_view.cpp:1627 - UpdateMenuPlacement

Solutions:

  1. 验证 Offset 计算

- 检查 targetOffset 是否正确 - 验证 positionOffset 来源 - 添加 offset 计算日志

  1. 检查锚点配置

- 验证 anchorPoint 设置 - 检查 anchorPosition 属性 - 确认锚点计算逻辑

  1. 验证 Placement

- 确保 UpdateMenuPlacement 被调用 - 检查 AlignRule 配置 - 验证 placement 类型

  1. 添加位置调试日志 // 添加位置日志 TAG_LOGI(AceLogTag::ACE_MENU, "Menu position: offset=(%{public}f,%{public}f), target=(%{public}f,%{public}f)", offsetX, offsetY, targetOffsetX, targetOffsetY);

Problem 4: 菜单弹出方向不对 (Menu Direction Incorrect)

Symptoms:

  • 菜单方向错误(应上弹却下弹)
  • 菜单与触发器方向不匹配
  • 子菜单展开方向错误
  • 菜单在错误侧弹出

Possible Causes:

  1. Direction 参数错误

- fontSize 或 direction 参数配置错误 - menuDirection 枚举值不正确 - 箭头绘制方向错误

  1. Placement 计算错误

- placement 类型判断错误 - Top/Bottom/Left/Right 混淆 - AlignRule 应用不正确

  1. Target 位置计算错误

- 触发器位置获取错误 - TargetOffset 使用错误值 - 相对位置计算符号错误

  1. 布局算法方向错误

- Column/Row 方向设置错误 - crossAxis 配置错误 - mainAxisSize 设置错误

Debug Steps:

  1. 检查方向相关配置 # 查找方向配置 cat xxx.log | grep -E "direction|font|arrow"
  2. 检查 placement 配置 cat xxx.log | grep "placement" cat xxx.log | grep "AlignDirection"
  3. 检查布局方向 cat xxx.log | grep "mainAxisSize" cat xxx.log | grep "crossAxis"

Code Locations:

  • menu_pattern.cpp - Direction 配置
  • menu_layout_algorithm.cpp - Placement 计算
  • menu_item/ - 菜单项布局

Solutions:

  1. 验证 Direction 参数

- 检查 fontSize API 调用 - 验证方向枚举值 - 检查箭头绘制逻辑

  1. 修正 Placement 计算

- 确保 placement 类型正确 - 检查 Top/Bottom 判断逻辑 - 验证对齐规则

  1. 检查目标位置

- 验证 trigger 组件位置 - 检查 targetOffset 计算 - 确认相对位置方向

  1. 添加方向调试日志 TAG_LOGI(AceLogTag::ACE_MENU, "Menu direction: placement=%{public}d, direction=%{public}d", placement, direction);

Problem 5: 菜单没有避让挖坑/导航条 (Menu Overlaps System UI)

Symptoms:

  • 菜单被导航栏遮挡
  • 菜单覆盖状态栏
  • 菜单没有考虑系统 UI 安全区域
  • 菜单部分在屏幕外

Possible Causes:

  1. SafeArea 未应用

- GetSafeArea() 没有被调用 - SafeArea insets 没有传递到布局 - system_safe_area 属性未设置

  1. Window Rect 计算错误

- displayWindowRect 没有考虑 safe area - Window 位置和尺寸计算错误 - Cutout state 未应用

  1. Z-Order 问题

- 菜单 window 层级错误 - Window type 不是 PANEL 类型 - Z-order 配置不正确

  1. Maximize 设置错误

- LayoutFullScreen 使用错误 - Window mode 设置为 FULLSCREEN 而非 FLOATING - 布局约束配置错误

Debug Steps:

  1. 检查 SafeArea 相关日志 cat xxx.log | grep -i "safe|safeArea"
  2. 检查 Window Mode cat xxx.log | grep "LayoutFullScreen" cat xxx.log | grep "WindowMode"
  3. 检查 Window Rect cat xxx.log | grep "DisplayWindowRectInfo"

Code Locations:

  • subwindow_manager.cpp - Window 创建
  • menu_layout_algorithm.cpp - SafeArea 应用
  • Menu wrapper - Window 模式设置

Solutions:

  1. 应用 SafeArea 约束

- 确保 GetSafeArea() 被调用 - 将 safe area 传递给布局算法 - 设置 system_safe_area 属性

  1. 调整 Window Mode

- 使用 FLOATING 或 PANEL 类型 - 避免 FULLSCREEN 模式 - 设置合适的窗口属性

  1. 修正 Window Rect 计算

- 在窗口 rect 中减去 safe area - 确保菜单在可见区域内 - 验证 cutout 处理

  1. 验证 Z-Order

- 检查 window type 配置 - 确保菜单在正确层级 - 验证与系统 UI 的关系


Problem 6: 菜单弹出宽度为0/高度为0 (Menu Width/Height is 0)

Symptoms:

  • 菜单宽度计算为 0
  • 菜单高度计算为 0
  • Menu 显示异常窄或不显示
  • displayWindowRectInfo 返回 0 值

Possible Causes:

  1. 异步初始化未完成

- GetDisplayWindowRectInfo 在 pipeline ready 前调用 - displayWindowRect 还未初始化 - 异步获取 display 信息时机错误

  1. Pipeline Context 来源错误

- 使用了 subwindow 的 context 而非 main window - Context 类型判断错误 - PipelineContext 初始化时机问题

  1. MenuParam 配置错误

- fontSize 参数未解析 - MenuParam 传递错误 - 属性值未正确设置

  1. 计算公式错误

- menuMaxWidthRatio 计算为 0 - displayWidth 乘以错误系数 - theme 返回值使用错误

Debug Steps:

  1. 检查 displayWidth 相关日志 # 查找宽度计算 cat xxx.log | grep "displayWidth" cat xxx.log | grep "displayWindowRect.Width" cat xxx.log | grep "menuMaxWidthRatio"
  2. 检查 MenuParam cat xxx.log | grep "MenuParam" cat xxx.log | grep "fontSize"
  3. 检查 Pipeline Context cat xxx.log | grep "PipelineContext" cat xxx.log | grep "GetMainPipelineContext"

Code Locations:

  • menu_layout_algorithm.cpp:920-966 - UpdateChildConstraintByDevice
  • menu_layout_algorithm.cpp:3618 - GetMenuWindowRectInfo
  • menu_pattern.cpp - MenuParam 处理
  • Theme 相关 - menuMaxWidthRatio 配置

Solutions:

  1. 添加初始化检查 // 在 GetMenuWindowRectInfo 中添加检查 auto displayWidth = displayWindowRectInfo.Width(); if (displayWidth <= 0.0f) {TAG_LOGE(AceLogTag::ACE_MENU, "Invalid displayWidth=%{public}f, waiting for async init", displayWidth); return menuWindowRect;}
  2. 验证 Context 来源

- 检查是否应该使用 main window context - 验证 PipelineContext 类型 - 添加 context 来源日志

  1. 延迟宽度计算

- 在异步初始化完成前使用默认宽度 - 添加 ready 状态检查 - 防止使用未初始化的值

  1. 添加异步初始化日志 TAG_LOGI(AceLogTag::ACE_MENU, "Async display init: displayWidth=%{public}f, ready=%{public}d", displayWidth, IsDisplayReady());

Log Enhancement Reference

Key Logging Patterns

1. State Transition Logging

TAG_LOGI(AceLogTag::ACE_SUB_WINDOW,
    "Subwindow state transition: %{public}d -> %{public}d",
    static_cast<int>(oldState), static_cast<int>(newState));

2. Value Context Logging

TAG_LOGI(AceLogTag::ACE_MENU,
    "Calculation: displayWidth=%{public}f, menuMaxWidthRatio=%{public}f, result=%{public}f",
    displayWidth, menuMaxWidthRatio, menuMaxWidth);

3. Code Path Logging

TAG_LOGI(AceLogTag::ACE_MENU,
    "GetMenuWindowRectInfo: host=%{public}p, menuId=%{public}d, targetTag=%{public}d, targetNodeId=%{public}d",
    host.Get(), menuPattern->GetMenuId(), targetTag_, targetNodeId_);

4. Error Context Logging

if (displayWidth <= 0.0f) {
    TAG_LOGE(AceLogTag::ACE_MENU,
        "Invalid displayWidth=%{public}f, expected>%{public}f",
        displayWidth, expectedWidth);
    return;
}

Critical Variables to Log

For Width/Height Issues:

  • displayWindowRectInfo.Width() / Height()
  • menuMaxWidth / menuMaxHeight
  • menuMaxWidthRatio / menuMaxHeightRatio
  • theme->GetMenuMaxWidthRatio()
  • pipeline->GetDisplayWindowRectInfo()

For Subwindow Issues:

  • subwindow->GetDetachState()
  • subwindow->GetShown()
  • subwindow->GetRect().GetSize()
  • instanceId / searchKey.ToString()

For Layout Issues:

  • menuWindowRect (all fields)
  • targetOffset_ / targetSize_
  • GetMenuWindowRectInfo() return value
  • placement / anchorPosition

Quick Reference Code Locations

Problem TypeFileLine(s)FunctionKey Variables
Click issuesmenu_wrapper_pattern.cpp-OnDetach / OnAttachstate_
Auto-closemenu_pattern.cpp-State machineisShowing_
Position (top-left)menu_layout_algorithm.cpp3611-3659GetMenuWindowRectInfomenuWindowRect
Directionmenu_pattern.cpp-direction_ / placement-
Safe areasubwindow_manager.cpp-Window creation params-
Width=0/Height=0menu_layout_algorithm.cpp920-966UpdateChildConstraintByDevicedisplayWidth

Log Filtering Commands

Extract all Menu-related logs:

# Comprehensive Menu logs
grep -E "ACE_MENU|ACE_SUB_WINDOW|ACE_OVERLAY" xxx.log > menu_debug.log

# Width-specific logs
grep -E "DisplayWindowRectInfo|menuMaxWidth|displayWidth" xxx.log

# Subwindow recreation logs
grep -E "recreate subwindow|DETACHING|MenuWindowState" xxx.log

# Positioning logs
grep -E "MenuOffset|MenuPosition|targetOffset|placement" xxx.log

# Click/Event logs
grep -E "OnClick|TouchEvent|GestureEvent" xxx.log

Filter by specific instance:

# For specific container ID
grep "instanceId: 123" xxx.log

# For specific menu node
grep "menuId: 456" xxx.log

Best Practices

Log Enhancement Principles

DO:

  • ✅ Add context - log relevant variable values
  • ✅ Log state transitions - old → new
  • ✅ Use appropriate log level - INFO for normal, WARN for unexpected, ERROR for failures
  • ✅ Include identifiers - node IDs, instance IDs
  • ✅ Log calculations - input values and results
  • ✅ Minimal changes - Only add logging, don't modify logic
  • ✅ Use existing macros - TAG_LOGI/W/E with correct tags
  • ✅ Test compilation - Verify syntax before applying
  • ✅ Document changes - Note what and why for each log

DON'T:

  • ❌ Log without context - just "entered function"
  • ❌ Over-log - excessive logging in loops
  • ❌ Log sensitive data - user information, tokens
  • ❌ Speculate - log actual values only
  • ❌ Modify logic - Only add logging statements

Patch Generation Guidelines

  1. Minimal Changes - Only add logging, don't modify logic
  2. Preserve Formatting - Follow existing code style
  3. Use Existing Macros - TAG_LOGI/W/E with correct tags
  4. Test Compilation - Verify syntax before applying
  5. Document Changes - Note what and why for each log
  6. Contextual Logging - Include surrounding code state in logs

Analysis Workflow

  1. Gather baseline - Collect logs without issue if possible
  2. Apply patch - Add targeted logging
  3. Reproduce issue - Trigger problem with enhanced logging
  4. Extract relevant logs - Filter specific log tags
  5. Trace execution flow - Follow log sequence through code
  6. Identify root cause - Find where unexpected behavior occurs
  7. Implement fix - Address identified issue
  8. Verify resolution - Confirm fix works, remove debug logs if needed

Integration with Other Skills

This skill complements:

  • compile-analysis - For performance issues in Menu code
  • build-error-analyzer - If Menu changes cause build failures
  • xts-component-test - For writing Menu test cases

Version History

  • 0.2.0 (2026-02-12): 新增6个常见问题分析

- 💫 添加点击无响应问题分析 - 💫 添加菜单自动关闭问题分析 - 💫 添加菜单位置左上角问题分析 - 💫 添加菜单方向不对问题分析 - 💫 添加菜单避让导航条问题分析 - 💫 添加宽度/高度为0问题分析 - 📝 为每个问题提供详细调试步骤和解决方案 - 🎯 扩展触发关键词覆盖常见用户问题

  • 0.1.0 (2026-02-12): 初始版本

- ✨ 完整的 Menu 组件调试 skill - 📝 覆盖宽度、子窗口、布局、崩溃等4大类问题 - 🔧 提供系统化调试工作流程 - 📊 包含关键代码位置和变量参考 - 🎯 自动化日志增强补丁生成

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.15%
按下载量换算86

Claude

31.27%
按下载量换算73

Cursor

20.16%
按下载量换算47

Gemini CLI

9.07%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills