SuperAPI AI 工具集

setup-gitignore

编程与开发

查看项目

更新于 10-16 07:46

技能介绍

用途

setup-gitignore 用于初始化或幂等地修订当前仓库的 .gitignore 文件。它只处理当前仓库,绝不读写全局 excludesfile(如 ~/.gitignore、~/.config/git/ignore),也不会运行 git config --global。全局 excludesfile 负责跨机器的通用噪声,本技能负责当前仓库的语言/工具特定内容。

主要能力

技能按以下顺序组合来源:

  1. gitignore.io —— 依据检测到的语言/框架生成模板(需要网络)。
  2. AI 工具 —— 来自 references/AI-TOOLING.md 的内置模式。
  3. IDE / 编辑器 —— 来自 references/IDE-EDITOR.md 的内置模式。
  4. 经验性 —— 来自 git status 的未跟踪路径,需交互确认。

使用方式

工作流程如下:

  1. 检测仓库根目录:运行 git rev-parse --show-toplevel;若不在 git 仓库内则报错中止。
  2. 检测语言:读取 references/LANGUAGE-DETECTION.md 中的 manifest → gitignore.io key 对照表,扫描 manifest(fd --max-depth 2 -t f),匹配文件名并构建逗号分隔的 key 列表(如 rust,node,typescript)。若未检测到 manifest,则使用空 key 列表(内置区块仍然生效)。
  3. 快照现有 .gitignore:若存在,先备份,例如 cp .gitignore /tmp/gitignore-snapshot-$(date +%s).bak。
  4. 呈现经验性噪声:运行 git status -s -uall | rg '^??' | rg -v '^?? .gitignore',按顶层目录或扩展名聚类未跟踪路径,呈现给用户并等待明确确认。未经确认不得添加任何经验性模式。
  5. 组合:运行 scripts/compose-gitignore.sh <csv> 获取并合并 gitignore.io 模板。若网络调用失败,告知用户并询问是否仅使用内置模式继续。在 API 输出后按顺序追加内置区块:

=== AI TOOLING ===

<references/AI-TOOLING.md 的内容>

=== IDE / EDITOR ===

<references/IDE-EDITOR.md 的内容>

=== EMPIRICAL ===

<用户确认的模式,每行一个>

  1. 合并或初始化:若无现有 .gitignore,直接写入组合输出;若已存在,则幂等地合并每个 # === SECTION === 区块——文件中已存在的模式会被去重(首次出现优先)。保留区块标题之外的所有用户内容。通过 difft 展示完整差异,仅在用户确认后写入。
  2. 验证:运行 git status -s -uall | rg '^??' | wc -l,报告前后未跟踪数量,并列出仍未跟踪的路径,供用户决定是否添加更多模式。

适用场景

适用于需要为当前仓库建立或更新 .gitignore 的场景,尤其是希望结合语言/框架模板、AI 工具与 IDE 模式,以及实际未跟踪文件噪声的情况。

限制

仅作用于单个仓库,不处理全局 excludesfile。gitignore.io 模板获取需要网络,网络失败时需用户决定是否继续。经验性模式必须经用户明确确认后才能添加。幂等性契约:在已运行过本技能的仓库上重复运行不产生差异;区块标题作为稳定的合并锚点;区块外的用户内容永不被修改。