diff --git a/.github/SECURITY.md b/.github/SECURITY.md index ca7e76d..5c9f639 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -6,7 +6,7 @@ 我们恳请您通过电子邮件向我们报告任何潜在的安全漏洞,而不是在公共 Issue 跟踪器中披露。这将使我们有机会在漏洞被公开利用之前进行修复。 -请将详细信息发送至:tukuai.ai@gmail.com +请将详细信息发送至:[tukuai.ai@gmail.com](mailto:tukuai.ai@gmail.com) 请在报告中包含以下信息: * 漏洞的详细描述。 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1197166..0d3aa0f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 + with: + submodules: recursive - name: Setup Node.js uses: actions/setup-node@v6 with: @@ -39,7 +41,23 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + with: + submodules: recursive - name: Link Checker uses: lycheeverse/lychee-action@v2.8.0 with: - args: --verbose --no-progress --exclude-path .history --exclude-path .github/wiki --exclude-path node_modules --exclude-path tools/external --exclude-path tools/chat-vault './**/*.md' + args: >- + --verbose + --no-progress + --exclude-path .history + --exclude-path .github/wiki + --exclude-path node_modules + --exclude-path tools/external + --exclude-path tools/chat-vault + --exclude-path tools/prompts-library + --exclude 'https://chatgpt.com.*' + --exclude 'https://claude.ai.*' + --exclude 'https://app.augmentcode.com.*' + --exclude 'https://platform.openai.com.*' + --exclude 'https://user-images.githubusercontent.com.*' + './**/*.md' diff --git a/docs/concepts/README.md b/docs/concepts/README.md index 2506e43..69af592 100644 --- a/docs/concepts/README.md +++ b/docs/concepts/README.md @@ -1277,7 +1277,7 @@ AI 特别适合生成: ### 延伸阅读 - [语言层要素](#concept-language-layers) - 看懂代码需要掌握的语言层级 -- [胶水开发提示词(在线提示词库入口)](../../../prompts/README.md) +- [胶水开发提示词(在线提示词库入口)](../../prompts/README.md) diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index da69033..1065e99 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -174,8 +174,8 @@ AI 能安装依赖、执行命令、修复报错、提交 Git;你负责确认 |:---|:---|:---|:---| | 零基础路线 | 不会编程或刚开始 | 跑通从想法到项目的最小闭环 | [问题求解](../concepts/README.md#concept-problem-solving) | | 开发者路线 | 已会写代码 | 建立 AI 结对编程工作流 | [Vibe Coding 经验](#vibe-coding-experience) | -| Prompt 路线 | 想提升提问质量 | 把需求表达成可执行指令 | [提示词库](../../../prompts/README.md) | -| Skill 路线 | 想沉淀复用能力 | 把高频任务做成可重复调用的技能 | [Skills 技能大全](../../../skills/README.md) | +| Prompt 路线 | 想提升提问质量 | 把需求表达成可执行指令 | [提示词库](../../prompts/README.md) | +| Skill 路线 | 想沉淀复用能力 | 把高频任务做成可重复调用的技能 | [Skills 技能大全](../../skills/README.md) | | 质量门禁路线 | 担心 AI 乱写代码 | 用测试、CI、schema、清单约束 AI 输出 | [工程实践](../references/README.md#reference-engineering-practice) | | GEO/SEO 路线 | 想提升仓库被引用概率 | 建设 AI 可理解、可引用、可验证的内容资产 | [GEO / SEO 检查清单](../../assets/ai-citation/geo-seo-checklist.md) | @@ -224,7 +224,7 @@ AI 能安装依赖、执行命令、修复报错、提交 Git;你负责确认 目标:把自然语言需求写成可执行、可检查、可复用的指令。 -1. [提示词库入口](../../../prompts/README.md) +1. [提示词库入口](../../prompts/README.md) 2. [工程实践](../references/README.md#reference-engineering-practice) 3. [语言层要素](../concepts/README.md#concept-language-layers) 4. [问题求解](../concepts/README.md#concept-problem-solving) @@ -239,9 +239,9 @@ AI 能安装依赖、执行命令、修复报错、提交 Git;你负责确认 目标:把高频工作沉淀成可重复使用的能力。 -1. [Skills 技能大全](../../../skills/README.md) -2. [auto-skill](../../../skills/auto-skill/SKILL.md) -3. [Claude 官方 Skills](../../../skills/claude-official-skills/) +1. [Skills 技能大全](../../skills/README.md) +2. [auto-skill](../../skills/auto-skill/SKILL.md) +3. [Claude 官方 Skills](../../skills/claude-official-skills/) 完成标准: @@ -256,7 +256,7 @@ AI 能安装依赖、执行命令、修复报错、提交 Git;你负责确认 优先阅读: -1. [AGENTS.md](../../../../AGENTS.md) +1. [AGENTS.md](../../AGENTS.md) 2. [工程实践](../references/README.md#reference-engineering-practice) 3. [GEO / SEO 检查清单](../../assets/ai-citation/geo-seo-checklist.md) @@ -304,7 +304,7 @@ AI 能安装依赖、执行命令、修复报错、提交 Git;你负责确认 - 新手:回到 [学习地图](#learning-map),从第 0 步开始。 - 开发者:阅读 [Vibe Coding 经验](#vibe-coding-experience),再选择 Skill 或质量门禁路线。 -- 团队:先统一 [AGENTS.md](../../../../AGENTS.md)、强前置条件和质量门禁。 +- 团队:先统一 [AGENTS.md](../../AGENTS.md)、强前置条件和质量门禁。 diff --git a/scripts/check-local-links.py b/scripts/check-local-links.py index 5c9f592..92c9caf 100644 --- a/scripts/check-local-links.py +++ b/scripts/check-local-links.py @@ -141,6 +141,7 @@ def main() -> int: try: destination.relative_to(ROOT) except ValueError: + missing_links.append((markdown_file.relative_to(ROOT), raw, destination)) continue if not destination.exists(): @@ -155,7 +156,11 @@ def main() -> int: if missing_links or missing_anchors: print("MISSING_LINKS") for source, raw, resolved in missing_links: - print(f"{source} -> {raw} => {resolved.relative_to(ROOT)}") + try: + display_path = resolved.relative_to(ROOT) + except ValueError: + display_path = resolved + print(f"{source} -> {raw} => {display_path}") print("MISSING_ANCHORS") for source, raw, destination, anchor in missing_anchors: print(f"{source} -> {raw} => {destination}#{anchor}")