当用户要 Friday 操作或追踪某个远端已索引仓库时使用:找仓库(哪个仓库负责 X、某接口的后端/前端在哪个仓库)、跨仓库追接口实现(前端接口→后端实现、后端接口→前端调用点、检索命中请求 URL/路由定义/接口调用)、分析架构/风险/影响面(X 在仓库 Y 里怎么实现的)、生成或修改编码计划、执行计划并创建 MR,或给一个具体需求一条龙跑到 MR。覆盖发现→分析→计划→执行全流程。反向边界:目标就在当前本地工作区、且不涉及另一侧仓库时用本地工具。
Scanned 9/2/2026
Install to Claude Code
npx -y skills add friday-ai-codes/friday-ai --skill friday-code --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Friday Code?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/friday-ai-codes-friday-code)More formats (shields.io, HTML) on the badges page.
---
name: friday-code
description: "当用户要 Friday 操作或追踪某个远端已索引仓库时使用:找仓库(哪个仓库负责 X、某接口的后端/前端在哪个仓库)、跨仓库追接口实现(前端接口→后端实现、后端接口→前端调用点、检索命中请求 URL/路由定义/接口调用)、分析架构/风险/影响面(X 在仓库 Y 里怎么实现的)、生成或修改编码计划、执行计划并创建 MR,或给一个具体需求一条龙跑到 MR。覆盖发现→分析→计划→执行全流程。反向边界:目标就在当前本地工作区、且不涉及另一侧仓库时用本地工具。"
---
# Friday Code
从一个需求到一个可追溯 MR 的完整流水线,按阶段分节。用户只要某一个阶段就停在那个阶段;用户给的是完整编码需求要结果,就按"一条龙模式"跑完全程。全程使用 `friday` MCP server 工具。
## 前置门槛
看不到 `friday` MCP 工具,或调用返回 401/403,引导用户运行 `npx -y @friday-ai-codes/mcp setup`(见 `friday` 技能「环境未就绪」一节)。
## 模式判定
| 用户意图 | 跑到哪 |
| --- | --- |
| "哪个仓库负责 X?" / "Friday 能操作这个仓库吗?" | 阶段一 |
| 前端拿到接口要看后端实现 / 后端接口要看前端调用点(跨仓追接口) | 阶段一定位另一侧仓库 → 阶段二查实现/调用点 |
| "分析一下仓库 Y 的架构 / X 是怎么实现的 / 改这个影响面多大" | 阶段二 |
| "这段代码对应哪个需求 / 为什么这么改" | 阶段二(`reverse_lookup_requirements`) |
| "给这个需求出个方案/计划" | 阶段三 |
| "执行这个计划 / 建个 MR" | 阶段四 |
| 给了具体需求,要的是结果(代码 + MR) | 一条龙模式 |
第一个成功响应返回的 `run_id` 全程保留;`repository_id`、`analysis_id`、`plan_id`、`version_id`、`execution_id` 跨阶段传递,不要重复路由。
## 阶段一 — 找仓库
1. `route_repositories`,用用户的需求原文做 `query`(可选 `top_k`)。保留返回的 `run_id`。
2. 第一名分数明显领先就直接选它;分数接近或都很弱时,问用户一个简洁的确认问题——除非用户要求全自动,那就选最高分并在报告里说明。
3. `get_repository` 读取所选 `repository_id` 的元数据、默认分支、索引状态。
4. 可选:`list_repository_files` 浅扫文件树,让用户确认仓库内容对得上。
护栏:
- `repository_not_indexed`:停下,告诉用户该仓库/分支需要先在 Friday 完成索引。
- `repository_not_found` 或路由结果为空:换种表述重试一次;仍为空时,让用户在 Friday 控制台确认仓库与"仓库摘要索引"状态——代码索引完成不代表路由索引就绪。
本阶段处理的是**单个需求**的仓库定位。成批功能点 / feature list / PRD 的路由与落点判定走 `friday-routing`:它逐功能点出「目标仓库(含 monorepo 子应用)→ 落点文件 → 新增/改造 → 证据 → 置信度」的矩阵,比在这里一个个 `route_repositories` 更系统。
## 阶段二 — 分析
前置:需要 `repository_id`,没有就先跑阶段一。
1. `search_rag_chunks`,用需求或分析焦点做 `query`(`repository_id`,可选 `branch` / `top_k` / `max_tokens`)。这是主力证据工具——混合语义 + 关键词 + 图谱检索。
2. `grep_repository` 处理「穷举所有出现位置」类问题(字面量 / 符号引用 / 跳转路径枚举):精确全量、确定性结果,语义检索保证不了全量时必须切换到它。支持正则、大小写开关、`paths` / `include_globs` / `exclude_globs` 过滤、最多 50 行上下文与 `max_tokens` 预算。推荐两步法:先 `output_mode="files_only"` 看命中分布,再 `output_mode="content"` + `context_lines` 抠关键上下文(可省掉大量 `get_repository_file` 往返)。跨仓问题(「哪些仓库在用 X」)传 `repository_ids` 数组或 `all_repositories=true`,结果按仓库分组。
3. `find_related_chunks` 从重要命中扩展:`chunk_id` / `file_path` / `symbol_name` 三选一。证据指向值得追踪的入口时使用。
4. `reverse_lookup_requirements` ——证据→需求反查:已知代码位置(`repository_id` + `file_path`/`line` 或 `chunk_id`,可选 `branch`),反查它关联的需求(`related_work_items`)、文档(`related_documents`)与追溯路径(`paths`)。回答「这段代码是为哪个需求/方案改的」「改这里会影响哪些已交付需求」时用。
5. `get_repository_file` 在 chunk 需要完整上下文时读取精确文件内容(支持行范围;优先 git 镜像全量读取,`source="git"` 时行号精确)。
6. `analyze_repository`,把筛选后的证据作为 `context_chunks`、用户的关注点作为 `focus` 传入。返回 `analysis_id` 及架构摘要、关键模块、入口、风险、测试策略、阅读顺序。
跨仓追接口(前后端打通):
- 已知接口路径 / 请求 URL,要在另一侧仓库找实现或调用点时,`grep_repository` 比语义检索更准——用 URL 字面量或路由路径做精确检索,先 `output_mode="files_only"` 看命中分布,再 `content` + `context_lines` 抠上下文。
- 找后端实现:用接口路径匹配路由注册/处理函数(如 `@app.route` / `@RequestMapping` / `router.get` / handler 注册)。
- 找前端调用点:用 URL 常量或请求封装名(`fetch` / `axios` / `request` / 接口常量)枚举所有调用位置,得到完整影响面。
- 接口路径在前后端命名常有差异(前缀、版本号、path 参数占位):命中为空时退一步,用更短的稳定片段(资源名/动词)重试。
护栏:
- 证据要诚实:引用工具返回的 chunk ID / 文件路径;不得编造证据里没有的代码结构。
- 检索为空:先放宽 query、用 `get_repository` 确认分支和索引状态,再下"代码不存在"的结论。
- 保留 `analysis_id`——阶段三要用。
## 阶段三 — 计划
前置:`repository_id` 必需;非平凡改动强烈建议带上阶段二的 `analysis_id`,计划质量差别很大。
新建:
1. `create_coding_plan`,传 `repository_id`、`requirement`,有则带 `analysis_id` 和 `context_chunks`。
2. 保存 `plan_id` 和 `version_id`,把实现步骤、涉及文件、测试、风险呈现给用户。
修订(已有计划 + 反馈):
1. `improve_coding_plan`,传 `plan_id`、用户的 `feedback` 和新增 `context_chunks`。
2. 对比返回的 `change_summary` 和 `risk_delta`。
3. 最新 `version_id` 是执行默认版本,除非用户指定旧版本。
护栏:
- 计划只是提案:本阶段不触发执行,用户批准后才把 `plan_id` / `version_id` 交给阶段四。
- 计划有明显缺口(缺迁移、没有回滚、路径未测试)时指出来,最多做一轮精确反馈的 `improve_coding_plan`,不要循环。
## 阶段四 — 执行与 MR
前置:用户已批准的 `plan_id`(可选 `version_id`)。仓库 Git 凭证须已在 Friday 服务端配置。
1. `execute_coding_plan`,传 `plan_id`,可选 `version_id` / `branch_name` / `target_branch` / `timeout_seconds`。保存 `execution_id`。
2. 用 `get_coding_execution` 轮询 `execution_id` 直到 `completed` / `failed` / `partial`。汇报有意义的进展,不是每次轮询都汇报。
3. `completed` 且分支已推送:`summarize_branch`(传 `execution_id`)获取 diff 摘要和 MR 草稿。
4. 用户要 MR 时:`create_merge_request`,传 `execution_id`、来自草稿的标题/描述,可选 `reviewer_usernames`。
护栏:
- 没有已推送的分支(或用户明确给了源分支)绝不创建 MR。
- 执行 `failed`:报告 `error`、`runner_logs`、`last_diff`、`recovery_state`;仅当 recovery 标记可重试时用 `retry_of_execution_id` 重试。
- 执行 `partial`(代码已推送、后续步骤失败):不要重跑编码,用已持久化的分支和 commit 重试 `summarize_branch` 或 `create_merge_request`。
- `create_merge_request` 返回 `success: false` 且 `execution_status: partial`:保留分支/commit 信息,等平台问题(凭证、权限、已存在的 MR)解决后只重试 MR 创建。
## 一条龙模式
按 阶段一 → 阶段二 → 阶段三 → 阶段四 顺序跑完,全程共用第一个 `run_id`。计划有明显缺口时做最多一轮 `improve_coding_plan`,不循环。
只在以下情况停下来问用户,其余一律继续——这个模式的意义就是不要人工干预:
- 仓库路由结果含糊(分数接近)且用户没有要求全自动;
- 仓库未索引;
- 执行失败且没有可重试的 `recovery_state`;
- MR 创建遇到不可重试的平台错误。
最终报告格式:
```text
Repository: <name> (<repository_id>)
Trace: <run_id>
Plan: <plan_id> version <version_id>
Execution: <execution_id> status <status>
Branch: <branch_name> -> <target_branch>
Commit: <commit_sha 或 none>
Push: <pushed/failed/skipped>
MR: <mr_url 或恢复动作>
Tests: <测试摘要或 runner 日志指引>
```
## HTTP 兜底
MCP 不可用时,所有工具都是 `POST {FRIDAY_BASE_URL}/api/mcp/tools/{tool_name}/` + Bearer 认证;`run_id` 通过 `X-Friday-Run-ID` 头传递。执行与 MR 工具的完整契约见 [references/http-fallback.md](references/http-fallback.md)。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!