skills-experimental/git-worktree-main-repo-detection/SKILL.md
# Git Worktree Main Repo Detection Pattern ## Source Claude Code: `utils/sandbox/sandbox-adapter.ts` (detectWorktreeMainRepoPath) ## Pattern Detect git worktree and resolve main repo path once at initialization - cached for session. ## Code Example ```typescript // Cached main repo path for worktrees // undefined = not yet resolved; null = not a worktree let worktreeMainRepoPath: string | null | undefined /** * Detect if cwd is a git worktree and resolve the main repo path. * In a worktree
npx skillsauth add bianhaifeng789-hue/openclaw-config skills-experimental/git-worktree-main-repo-detectionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Claude Code: utils/sandbox/sandbox-adapter.ts (detectWorktreeMainRepoPath)
Detect git worktree and resolve main repo path once at initialization - cached for session.
// Cached main repo path for worktrees
// undefined = not yet resolved; null = not a worktree
let worktreeMainRepoPath: string | null | undefined
/**
* Detect if cwd is a git worktree and resolve the main repo path.
* In a worktree, .git is a file (not directory) containing "gitdir: ...".
*/
async function detectWorktreeMainRepoPath(cwd: string): Promise<string | null> {
const gitPath = join(cwd, '.git')
try {
const gitContent = await readFile(gitPath, { encoding: 'utf8' })
const gitdirMatch = gitContent.match(/^gitdir:\s*(.+)$/m)
if (!gitdirMatch?.[1]) return null
// gitdir may be relative - resolve against cwd
const gitdir = resolve(cwd, gitdirMatch[1].trim())
// gitdir format: /path/to/main/repo/.git/worktrees/worktree-name
// Match /.git/worktrees/ segment specifically
const marker = `${sep}.git${sep}worktrees${sep}`
const markerIndex = gitdir.lastIndexOf(marker)
if (markerIndex > 0) {
return gitdir.substring(0, markerIndex) // Main repo path
}
return null
} catch {
// .git is directory (EISDIR), not file → not a worktree
return null
}
}
// Usage in initialize()
async function initialize(sandboxAskCallback?: SandboxAskCallback): Promise<void> {
// Resolve worktree path once before building config
// Worktree status doesn't change mid-session
if (worktreeMainRepoPath === undefined) {
worktreeMainRepoPath = await detectWorktreeMainRepoPath(getCwdState())
}
// If in worktree, allow write to main repo's .git
if (worktreeMainRepoPath && worktreeMainRepoPath !== cwd) {
allowWrite.push(worktreeMainRepoPath)
}
}
gitdir: /path/to/main/.git/worktrees/name.git/worktrees/ segment (not just .git).github-projects)business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings