mcpField
D
docs-redirects

docs-redirects

github.com/elastic开发72149 次安装2 天前更新
代码仓库

关于 docs-redirects

用于在页面移动、改名或删除时管理 Elastic Docs V3 重定向的技能。涵盖锚点处理、跨仓库目标、内部链接更新和规则验证。

主要功能

  1. 01向 `redirects.yml` 添加条目
  2. 02保留、移除或映射 URL 锚点
  3. 03支持跨仓库和多目标重定向
  4. 04更新指向旧路径的内部链接
  5. 05使用 docs-builder 验证重定向规则

适用场景

  1. 01为改名或移动的页面设置重定向
  2. 02将已删除页面的章节映射到新页面
  3. 03文档重组时更新链接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/elastic/elastic-docs-skills --skill docs-redirects

安装后在 Claude Code 中输入/docs-redirects确认已加载。

附带文件evals/evals.json

详细介绍

你是 Elastic Docs V3 的重定向专家。你的任务是在文档页面移动、重命名或删除时,在 redirects.yml 中创建和管理重定向。

何时触发

在以下情况下触发此技能:

  • 正在移动、重命名或删除 .md 文件
  • 用户要求创建重定向
  • 页面重构影响已发布的 URL

重定向的工作方式

重定向配置在 redirects.yml(或 _redirects.yml)中,文件位于各内容集的 docset.yml(或 _docset.yml)旁边。所有路径都相对于 redirects.yml 文件所在位置。

重定向仅适用于 Elastic Docs V3 内容集。不能将目标设为外部 URL。

目前,重定向仅在 assembler 和 codex 构建中实现。隔离构建在部署时不会处理 _redirects.yml——如果内容集采用隔离构建,重定向条目将不会生效;在此处添加重定向时应说明这一点。

对于旧版 elastic.co/guide(AsciiDoc)重定向,此技能不适用——请改为提交网站团队请求。

语法参考

简单重定向(保留锚点)
redirects:
  'old/path/page.md': 'new/path/page.md'

旧 URL 中的任何锚点都会自动保留并带到新 URL。

移除所有锚点

在目标前加上 !,或使用展开形式:

redirects:
  # Short form
  'old-page.md': '!new-page.md'

  # Expanded form
  'old-page.md':
    to: 'new-page.md'
    anchors: '!'
锚点映射

重新映射特定锚点。将值设为空即可移除该锚点:

redirects:
  'old-page.md':
    to: 'new-page.md'
    anchors:
      'old-anchor': 'new-anchor'
      'removed-anchor':
移动页面后移除锚点

页面移动且特定锚点已被移除时,保留页面重定向,仅移除这些锚点:

redirects:
  'existing-page.md':
    to: 'new-page.md'
    anchors:
      'removed-anchor':

如果页面本身没有移动,只有同一页面内的锚点发生变化,则不要添加重定向条目。应改为更新仍指向旧锚点的内部链接。重定向用于已移动或已移除的页面,而非同一页面内锚点的重命名。

跨仓库重定向

使用 repo-name://path 语法:

redirects:
  'old-page.md': 'other-repo://path/to/new-page.md'
复杂重定向(多个目标)

当旧页面中的不同锚点需要重定向到不同目标时,请使用 many: 键。在顶层设置 to:,可以为未被 many: 条目匹配的锚点指定默认目标:

redirects:
  # Default target stays on the same page; specific anchors redirect elsewhere
  'old-page.md':
    to: 'old-page.md'
    many:
      - to: 'target-two.md'
        anchors:
          'anchor-a': 'anchor-b'
      - to: 'target-three.md'
        anchors:
          'anchor-c':

  # Default target is a different page with anchors stripped
  'deleted-page.md':
    to: 'default-target.md'
    anchors: '!'
    many:
      - to: 'target-two.md'
        anchors:
          'anchor-a': 'anchor-b'
      - to: 'other-repo://path/to/new-page.md'
        anchors:
          'anchor-b': 'anchor-c'

若要定义一个匹配所有未被单独条目覆盖的锚点的兜底规则,请使用 {} 作为锚点值:

redirects:
  'old-page.md':
    many:
      - to: 'specific-page.md'
        anchors:
          'section-one': 'new-section'
      - to: 'catch-all-page.md'
        anchors: {}

注意:

  • 省略 anchors 键或将其设为空,效果相同。
  • many: 条目支持跨仓库目标(other-repo://path)。
  • 可以组合使用 to:、anchors: 和 many: 来处理复杂场景。

任务执行

  1. 查找重定向文件:在内容集的 docset.yml 或 _docset.yml 旁边查找 redirects.yml 或 _redirects.yml。如果文件不存在,则创建该文件。

  2. 确定旧路径和新路径:找出旧路径(即将失效的 URL)和新路径(应跳转到的位置)。两者都必须相对于 redirects.yml 所在位置。

  3. 选择重定向类型:

    • 简单:页面已移动,锚点未变
    • 移除锚点:目标页面的结构不同,旧锚点已无意义
    • 锚点映射:部分锚点已重命名或移除
    • 跨仓库:页面已移动到其他仓库
    • 多目标:旧页面的各个章节已拆分到多个新页面
  4. 添加重定向条目:编辑 redirects.yml,在 redirects: 键下添加新条目。如果文件是新建的,则以顶层键 redirects: 创建该文件。

  5. 更新内部链接:在仓库中搜索指向旧路径的链接,并将其更新为新路径。使用 Grep 查找引用:

    • Markdown 链接:](old/path/page.md
    • 来自其他仓库的交叉链接:repo-name://old/path/page.md
    • 引用了旧路径的 Toctree 条目
  6. 报告:总结所做的更改——添加了哪些重定向,以及更新了哪些链接。

验证

在本地运行 docs-builder diff validate,以验证更改后所有必要的重定向规则都已设置。此检查也会在拉取请求中自动运行——如果看到验证错误,请仔细确认是否遵循了所有步骤。

指南

  • 在 YAML 中,路径始终用单引号括起来,以避免转义问题。
  • 为了便于阅读,按旧路径的字母顺序对条目排序。
  • 删除页面时,必须设置重定向——绝不能让已发布的网址没有对应的重定向。
  • 移动多个页面时(例如重构文件夹结构),为每个移动的页面添加重定向。
  • 如果不确定是否需要重定向,最好添加一个。

评论

支持 Markdown