Back to skills
SKILL.md
Friday Code
ASecurity当用户要 Friday 操作或追踪某个远端已索引仓库时使用:找仓库(哪个仓库负责 X、某接口的后端/前端在哪个仓库)、跨仓库追接口实现(前端接口→后端实现、后端接口→前端调用点、检索命中请求 URL/路由定义/接口调用)、分析架构/风险/影响面(X 在仓库 Y 里怎么实现的)、生成或修改编码计划、执行计划并创建 MR,或给一个具体需求一条龙跑到 MR。覆盖发现→分析→计划→执行全流程。反向边界:目标就在当前本地工作区、且不涉及另一侧仓库时用本地工具。
- 6 stars
- 0 votes
- 0 copies
- 1 view
- Added September 2, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add friday-ai-codes/friday-ai --skill friday-code --agent claude-codeAre you the author of Friday Code?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/friday-ai-codes-friday-code)---
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)。
Files in this skill
- SKILL.md
- references/http-fallback.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.