idea-analogist
想法群聊室 — 类比者角色。被 idea-team 主编排器调用,或用户单独说"类比一下"、"别的行业有没有"、"yes-and 扩展"、"X 让你想到什么"、"跨界启示"时触发。**专门做跨界类比 + yes-and 扩展——不评判、不挑刺、不要求事实证据**。Do NOT use when 用户要数据(用…
Use this skill to diagnose CSS and frontend layout issues such as positioning, overflow clipping, Tailwind class conflicts, z-index stacking, and React rendering visibility problems.
$ npx -y skills add majiayu000/spellbook --skill css-debug --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/css-debugContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill to diagnose CSS and frontend layout issues such as positioning, overflow clipping, Tailwind class conflicts, z-index stacking, and React rendering visibility problems.
name: css-debug description: Use this skill to diagnose CSS and frontend layout issues such as positioning, overflow clipping, Tailwind class conflicts, z-index stacking, and React rendering visibility problems. metadata: command-name: css-debug user-invocable: "true"
<command-name>css-debug</command-name> <user-invocable>true</user-invocable>
当用户遇到以下问题时使用此 skill:
首先向用户询问或获取:
问题:position: absolute 的元素被父容器裁剪 检查: - [ ] 父容器是否有 overflow: hidden 或 overflow: auto - [ ] 祖先容器是否有 overflow: hidden - [ ] 父容器是否设置了 position: relative - [ ] 元素的 top/left/right/bottom 值是否超出父容器 解决方案: 1. 将 overflow: hidden 改为 overflow: visible 2. 或将绝对定位元素移到更外层的容器 3. 或使用 fixed 定位(相对于视口)
问题:元素位置与预期不符 检查: - [ ] positionX/positionY 或 left/top 值是否正确 - [ ] 最近的 position: relative 祖先是哪个 - [ ] 是否有 margin/padding 影响 - [ ] transform 是否影响定位上下文 解决方案: 1. 确认定位参考点是正确的祖先元素 2. 检查 CSS 单位(px vs % vs rem) 3. 使用浏览器检查器的"元素选择"功能定位问题
问题:React 组件渲染但内容不可见 检查: - [ ] 元素是否有 width/height(可能为 0) - [ ] opacity 是否为 0 - [ ] visibility 是否为 hidden - [ ] display 是否为 none - [ ] z-index 是否被其他元素遮挡 - [ ] color 是否与背景色相同 解决方案: 1. 在开发者工具中检查 Computed 面板 2. 临时添加边框或背景色调试:border: 1px solid red 3. 检查条件渲染逻辑
问题:Tailwind CSS 类没有应用 检查: - [ ] 类名拼写是否正确 - [ ] 是否被更高优先级的样式覆盖 - [ ] 动态类名是否正确生成(字符串拼接问题) - [ ] tailwind.config.js 中 content 配置是否包含该文件 解决方案: 1. 使用 !important 临时测试:!overflow-visible 2. 检查 className 是否正确传递 3. 使用内联 style 作为备选方案
在浏览器控制台运行:
// 高亮所有绝对定位元素
document.querySelectorAll('[style*="position: absolute"]').forEach(el => {
el.style.outline = '2px solid red';
console.log(el, getComputedStyle(el));
});
// 查找 overflow: hidden 的容器
document.querySelectorAll('*').forEach(el => {
const style = getComputedStyle(el);
if (style.overflow === 'hidden' || style.overflowX === 'hidden' || style.overflowY === 'hidden') {
el.style.outline = '2px dashed blue';
console.log('overflow-hidden:', el);
}
});
// 检查元素的完整 computed 样式
const el = document.querySelector('.your-selector');
console.table({
position: getComputedStyle(el).position,
overflow: getComputedStyle(el).overflow,
display: getComputedStyle(el).display,
width: getComputedStyle(el).width,
height: getComputedStyle(el).height,
top: getComputedStyle(el).top,
left: getComputedStyle(el).left,
});
// 查找定位祖先
function findPositionedAncestor(el) {
let current = el.parentElement;
while (current) {
const position = getComputedStyle(current).position;
if (position !== 'static') {
console.log('Positioned ancestor:', current, 'position:', position);
return current;
}
current = current.parentElement;
}
console.log('No positioned ancestor found, using viewport');
return null;
}
findPositionedAncestor(document.querySelector('.your-selector'));1. 打开 React DevTools 2. 选择问题组件 3. 检查:
// 问题代码
<div className="relative overflow-hidden">
<div style={{ position: 'absolute', top: 200, left: 100 }}>
被裁剪的内容
</div>
</div>
// 解决方案 1: 移除 overflow-hidden
<div className="relative overflow-visible">
...
</div>
// 解决方案 2: 条件性 overflow
const hasAbsoluteContent = blocks.some(b => b.props?.positionX !== undefined);
<div className={`relative ${hasAbsoluteContent ? '' : 'overflow-hidden'}`}>
...
</div>
// 解决方案 3: 分离容器
<div className="relative">
<div className="overflow-hidden">
{/* 需要裁剪的内容 */}
</div>
<div className="absolute-content-wrapper">
{/* 绝对定位内容 */}
</div>
</div>分析完成后,提供:
1. **问题诊断**:明确说明是什么导致了问题 2. **原因分析**:解释 CSS 机制和为什么会发生这种情况 3. **解决方案**:提供具体的代码修改建议 4. **验证步骤**:告诉用户如何验证修复是否有效
用户:我的绝对定位元素被裁剪了
Claude: 1. 请在浏览器中运行以下命令查找 overflow:hidden 的容器:
document.querySelectorAll('*').forEach(el => {
const style = getComputedStyle(el);
if (style.overflow === 'hidden') {
el.style.outline = '2px dashed blue';
console.log('overflow-hidden:', el);
}
});2. 请告诉我哪些容器被标记出来了 3. 同时,请检查绝对定位元素的父容器是否有 `position: relative`
Cross-runtime skills for Claude Code, Codex, and multi-agent workflows.
Repo: majiayu000/spellbook
想法群聊室 — 类比者角色。被 idea-team 主编排器调用,或用户单独说"类比一下"、"别的行业有没有"、"yes-and 扩展"、"X 让你想到什么"、"跨界启示"时触发。**专门做跨界类比 + yes-and 扩展——不评判、不挑刺、不要求事实证据**。Do NOT use when 用户要数据(用…
想法群聊室 — 反方角色。被 idea-team 主编排器调用,或用户单独说"反方意见"、"挑这个想法的刺"、"为什么会失败"、"找漏洞 / 反例"、"devil's advocate"时触发。**专门挑漏洞、找隐藏假设、给反例——不安慰、不"也许可以这样"、不全盘否定**。Do NOT use when…
想法群聊室 — 调研员角色。被 idea-team 主编排器调用,或用户单独说"调研一下 X"、"X 的现状/竞品/数据"、"找 2026 数据"、"事实底"时触发。**用 WebSearch 拉真实 2026 数据、列竞品、引来源——只给事实,不评判,不建议**。Do NOT use when…
想法群聊室主持人 — 把一句话想法丢给多角色 AI 团队(调研员/反方/类比者)做查漏补缺。每个角色有自己的 voice,他们互相 @ 接话;你随时插话。**这是创意扩展工具,不打分、不否决、不堵路**。Use when 用户说"组个团队聊一下"、"开会讨论这个想法"、"找几个角度看看"、"群聊一下 X"、"team…
端到端产品教练 — 把一句话想法走到 PRD + 可点击 HTML 原型。会顶嘴、强制砍功能、用 Nielsen + Norman 做友好性硬检。Use when user 说"我有一个想法"、"想做一个产品"、"做 MVP"、"写 PRD"、"做用户友好的产品",或调用插件命令…
Mobile app UI design expert for iOS and Android. Use when designing app interfaces, creating design systems, ensuring accessibility, or following platform…