全技能树相对路径审计+路径引用规范固化(P0)
- 审计 V1.0 全树(主技能+references+全部subskills及嵌套)Windows/Unix 绝对路径与 md 断链
- 豁免判定: 环境判别锚点/路径配置表/示例路径保留; browser-harness/envs 由 gitignore 兜底不随分发
- 修复: SKILL.md 七节越级引用 ../../../失误与规避记录.md 改语义说明(仅开发机维护场景); mcn-dou-analysis 内嵌 nuwa-skill-main 断链(多语言/社区/评分卡/示例 LICENSE)改官方 GitHub URL(源+dsh 副本同步)
- 新增 references/规则/路径引用规范.md(相对路径铁律: 允许项~占位/__file__推导/URL + 禁令盘符/Unix/越级 + 豁免 + 自检), 模板同步 V1.0+4 自有 subskills+dsh 4 副本
- 5 源 SKILL.md + 4 dsh SKILL.md 挂 🔴 路径引用引用行
- 自有内容 md 断链复验=0; 临时审计脚本已清理
This commit is contained in:
1 parent
c1083c06ea
commit
f4f6938b34
21 files changed
+437
-23
No files matched your search
@@ -64,6 +64,8 @@ export REDFOX_API_KEY="ak_xxx..."
|
||||
|
||||
## 安全约束(所有技能统一执行)
|
||||
|
||||
> **🔴 路径引用铁律**:技能内一切文件引用必须用**相对路径**(md 链接相对自身文件解析、代码用 `__file__` 推导技能根;绝对路径随部署机器变化失效,禁止越级出技能根)→ [路径引用规范.md](references/规则/路径引用规范.md)
|
||||
|
||||
> 以下规则在安装时已写入各技能的 SKILL.md / core_workflow.md / Python 脚本中:
|
||||
|
||||
| 规则 | 说明 |
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# 路径引用规范(相对路径铁律,P0)
|
||||
|
||||
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
|
||||
|
||||
## 一、铁律(3 条)
|
||||
|
||||
1. **技能包内引用一律相对**:md 链接、代码文件操作、配置路径,只允许相对路径,禁止绝对路径(Windows 盘符 `C:\`、`D:\`… 与 Unix `/Users/`、`/home/`… 均禁)。
|
||||
2. **md 链接相对「该 md 文件自身」所在目录解析**(不是相对技能根);链接目标必须在技能包内,或用 URL 指向外部。
|
||||
3. **引用不得越级出技能根**:禁止 `../` 跳出本技能根引用技能包外文件(技能包外文件不存在于部署环境)。确实需要的包外文件 → 要么移入技能包,要么改为 URL / 语义描述。
|
||||
|
||||
## 二、允许项(这些可以写)
|
||||
|
||||
| 写法 | 示例 | 说明 |
|
||||
|------|------|------|
|
||||
| 相对技能根路径 | `references/创作流程规范.md`、`scripts/fetch.py` | 引用包内文件 |
|
||||
| md 相对链接(示例写法) | `[规范](../接口调用/某文件.md)` | 相对该 md 所在文件解析,目标在包内 |
|
||||
| 用户级路径(`~`/占位) | `~/.workbuddy/workbuddy.db`、`{主目录}/.dsh/...` | 用户级,跨机器一致;Windows 用 `%USERPROFILE%` 语义的 `{用户名}` 占位 |
|
||||
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
|
||||
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
|
||||
| URL | `https://github.com/...` | 外部资源 |
|
||||
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
|
||||
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
|
||||
|
||||
## 三、禁令项(这些绝对禁止)
|
||||
|
||||
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
|
||||
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
|
||||
- **越级引用**:`../../..` 跳出技能根指向包外文件。
|
||||
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
|
||||
- **硬编码用户名/盘符到产出路径**:`C:\Users\maidou\Desktop\...` 必须写 `{用户名}` 占位 + 运行时解析。
|
||||
|
||||
## 四、例外(明确豁免)
|
||||
|
||||
| 场景 | 说明 |
|
||||
|------|------|
|
||||
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
|
||||
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
|
||||
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
|
||||
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
|
||||
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |
|
||||
|
||||
## 五、设置引用时的操作要点
|
||||
|
||||
1. **新建/修改任何 md 引用或代码路径**:先问「这段代码/文档会被部署到用户环境吗?」——会 → 用相对路径或允许项写法。
|
||||
2. **Python 脚本读写文件**:统一用 `__file__` 推导技能根常量(如 `BASE_DIR`),再 `os.path.join(BASE_DIR, ...)` 拼子路径;禁止字符串拼接盘符。
|
||||
3. **md 链接加完必须自检**:确认目标文件真实存在(相对自身文件解析),`../` 层数不超过技能根。
|
||||
4. **引用技能包外但必需的本地文件**:先评估移入包内;无法移入 → 去掉链接改为语义描述并注明「仅开发机维护场景」。
|
||||
|
||||
## 六、自检方法(交付前跑一遍)
|
||||
|
||||
- **盘符/Unix 绝对路径扫描**:对技能包文本文件搜 `[A-Za-z]:[\\/]`、`/(Users|home|tmp|opt|etc|var|root|usr|Applications)/`,人工复核命中行是否属「允许/豁免」类别。
|
||||
- **md 断链校验**:正则 `\]\(([^)]+)\)` 提取相对链接 → 相对文件目录解析 → 目标不存在即断链;跳过 http/https/file/mailto/# 锚点、含空格/`<>`/`$`/`|` 的命令示例、`workUrl/url/link/链接` 等 API 字段伪链接。
|
||||
- **越级检查**:任何解析后超出技能根的链接即违规。
|
||||
|
||||
---
|
||||
|
||||
*变更记录:2026-09-03 初建(全技能树相对路径审计定稿,随 V1.0 与各 subskills 分发;各技能副本内容一致,升级时批量同步)。*
|
||||
@@ -13,6 +13,9 @@ from urllib.request import Request, urlopen
|
||||
KEEP_CATEGORIES = {"生活 vlog", "小剧场", "亲子", "美食",
|
||||
"情感", "颜值造型", "旅行"}
|
||||
|
||||
# 技能根目录:本文件位于 <技能根>/scripts/ 下,用 __file__ 推导(迁移到用户环境路径不变,禁止写死开发机绝对路径)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# API
|
||||
DAILY_API = "https://redfox.hk/story/api/dy/search/likesRank"
|
||||
WEEKLY_API = "https://redfox.hk/story/api/dy/search/hotContentRank"
|
||||
@@ -110,7 +113,8 @@ def save_json(data, filepath):
|
||||
print(f" 已保存: {filepath}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
base_dir = r"D:\AgentSkill\ThirdPartySkills\RedFox数据"
|
||||
# 输出到技能根目录下的 RedFox数据/(相对路径,随迁移生效)
|
||||
base_dir = os.path.join(BASE_DIR, "RedFox数据")
|
||||
|
||||
print("=" * 60)
|
||||
print("红狐数据获取 - 赛道过滤 + JSON 归档")
|
||||
|
||||
@@ -9,7 +9,10 @@ from urllib.request import Request, urlopen
|
||||
from urllib.error import HTTPError, URLError
|
||||
|
||||
API_BASE = "https://redfox.hk/story/api/dy/search/likesRank"
|
||||
OUTPUT_DIR = r"D:\AgentSkill\ThirdPartySkills\RedFox数据\美食"
|
||||
|
||||
# 输出到技能根目录下的 RedFox数据/美食/(技能根=本文件上两级;__file__ 推导保证迁移到用户环境路径不变)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
OUTPUT_DIR = os.path.join(BASE_DIR, "RedFox数据", "美食")
|
||||
|
||||
def fetch_one_day(api_key, date_str):
|
||||
"""获取指定日期的美食赛道数据"""
|
||||
|
||||
+6
-6
@@ -103,22 +103,22 @@ python scripts/generate_report.py --data /path/to/data_full.json --limit 50
|
||||
|
||||
**每次查询无论结果多少,都必须将查询结果 JSON 保存**,目录不存在时自动创建。
|
||||
|
||||
**抖音账号日榜(必做,2026-08-18 起)**:每次获取 50 条,保存到 `D:\dshworkspace\抖音榜单/`,文件名带榜单日期区分:
|
||||
**抖音账号日榜(必做,2026-08-18 起)**:每次获取 50 条,保存到 `RedFox数据/账号榜单/`(相对技能根目录,禁止写死开发机绝对路径),文件名带榜单日期区分:
|
||||
|
||||
```bash
|
||||
mkdir -p "D:/dshworkspace/抖音榜单"
|
||||
mkdir -p "RedFox数据/账号榜单"
|
||||
python scripts/fetch_rank.py --query "最新抖音日榜" --limit 50 \
|
||||
--output "D:/dshworkspace/抖音榜单/抖音账号日榜_<榜单日期>.json"
|
||||
--output "RedFox数据/账号榜单/抖音账号日榜_<榜单日期>.json"
|
||||
```
|
||||
|
||||
**抖音周榜(必做,2026-08-19 起)**:**按保留 7 个赛道分别获取,不拿全品类**。每个赛道取 TOP50,保存到 `D:\dshworkspace\抖音榜单/`,文件名带赛道与周起始日期区分:
|
||||
**抖音周榜(必做,2026-08-19 起)**:**按保留 7 个赛道分别获取,不拿全品类**。每个赛道取 TOP50,保存到 `RedFox数据/账号榜单/`,文件名带赛道与周起始日期区分:
|
||||
|
||||
```bash
|
||||
# 保留 7 赛道(API 标准名):生活vlog 小剧场 亲子 美食 情感 颜值造型 旅行(2026-09-01 起剔除化妆美容、二次元)
|
||||
mkdir -p "D:/dshworkspace/抖音榜单"
|
||||
mkdir -p "RedFox数据/账号榜单"
|
||||
for cat in 生活vlog 小剧场 亲子 美食 情感 颜值造型 旅行; do
|
||||
python scripts/fetch_rank.py --period week --category "$cat" --limit 50 \
|
||||
--output "D:/dshworkspace/抖音榜单/抖音周榜_${cat}_<周起始日期>.json"
|
||||
--output "RedFox数据/账号榜单/抖音周榜_${cat}_<周起始日期>.json"
|
||||
done
|
||||
```
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
> *「你想蒸馏的下一个员工,何必是同事」*
|
||||
|
||||
[](LICENSE)
|
||||
[](https://github.com/alchaincyf/nuwa-skill/blob/main/LICENSE)
|
||||
[](https://agentskills.io)
|
||||
[](https://skills.sh)
|
||||
[](#安装)
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
**其他语言 / Other Languages:**
|
||||
|
||||
[English](README_EN.md) · [日本語](README_JA.md) · [한국어](README_KO.md) · [Español](README_ES.md)
|
||||
[English](https://github.com/alchaincyf/nuwa-skill/blob/main/README_EN.md) · [日本語](https://github.com/alchaincyf/nuwa-skill/blob/main/README_JA.md) · [한국어](https://github.com/alchaincyf/nuwa-skill/blob/main/README_KO.md) · [Español](https://github.com/alchaincyf/nuwa-skill/blob/main/README_ES.md)
|
||||
|
||||
<br>
|
||||
|
||||
@@ -231,9 +231,9 @@ git clone https://github.com/alchaincyf/nuwa-skill <上面对应的路径>
|
||||
女娲的生态由社区一起长大,但走两条不同的路:
|
||||
|
||||
- **`SKILL.md` 是核心资产,不接受外部PR改动**。发现方法论的bug或改进点→开issue讨论,被采纳的想法由维护者实现并在commit中致谢(先例见PR #59)
|
||||
- **社区蒸馏的人物skill走 [COMMUNITY.md](COMMUNITY.md) 索引**:放你自己的仓库(star归你),跑一遍[保真度评分卡](references/fidelity-scorecard.md)拿到B级以上,提一行PR即可收录
|
||||
- **社区蒸馏的人物skill走 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md) 索引**:放你自己的仓库(star归你),跑一遍[保真度评分卡](references/fidelity-scorecard.md)拿到B级以上,提一行PR即可收录
|
||||
|
||||
完整规则见 [CONTRIBUTING.md](CONTRIBUTING.md)。社区已有的合集、多人格编排和主题应用,见 [COMMUNITY.md](COMMUNITY.md)。
|
||||
完整规则见 [CONTRIBUTING.md](https://github.com/alchaincyf/nuwa-skill/blob/main/CONTRIBUTING.md)。社区已有的合集、多人格编排和主题应用,见 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md)。
|
||||
|
||||
---
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
> *「宁可背负骂名把事情做成,也不做悲剧英雄。」*
|
||||
|
||||
[](LICENSE)
|
||||
[](https://github.com/alchaincyf/nuwa-skill/blob/main/LICENSE)
|
||||
[](https://claude.ai/code)
|
||||
[](https://github.com/alchaincyf/nuwa-skill)
|
||||
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@
|
||||
|
||||
- 女娲Phase 4的通过标准是**内部质检**(生成过程中的关卡)
|
||||
- 评分卡是**对外报告**(生成完成后的出厂检验,任何人可复跑验证)
|
||||
- 社区贡献的人物skill申请收录进 [COMMUNITY.md](../COMMUNITY.md) 索引时,评分卡≥B是准入门槛(见 [CONTRIBUTING.md](../CONTRIBUTING.md))
|
||||
- 社区贡献的人物skill申请收录进 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md) 索引时,评分卡≥B是准入门槛(见 [CONTRIBUTING.md](https://github.com/alchaincyf/nuwa-skill/blob/main/CONTRIBUTING.md))
|
||||
|
||||
## 反作弊
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ description: "MCN 达人爆款视频解析与人设卡生成技能:达人账
|
||||
|
||||
## 一、项目规则(红线)
|
||||
|
||||
> 🔴 **技能内一切文件引用必须用相对路径**(绝对路径随部署机器变化失效;md 链接相对自身文件解析、禁止越级出技能根)→ [路径引用规范.md](references/规则/路径引用规范.md)
|
||||
|
||||
| 规则 | 说明 |
|
||||
|------|------|
|
||||
| 达人账号表.xlsx | **只能根据用户明确要求添加/修改账号**,不得自行添加或扩充。用户说加谁就加谁。输入信息中的账号若不在表中,**先添加到表**:账号ID自增、抖音号/抖音ID(sec_uid)/抖音地址存文本格式,其余字段留空待补。**字段结构(15列)**:账号ID/达人昵称/抖音号/抖音ID/抖音地址/粉丝数/解析状态/人设卡/更新时间/获赞数/关注数/作品数/IP属地/简介/备注。 |
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# 路径引用规范(相对路径铁律,P0)
|
||||
|
||||
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
|
||||
|
||||
## 一、铁律(3 条)
|
||||
|
||||
1. **技能包内引用一律相对**:md 链接、代码文件操作、配置路径,只允许相对路径,禁止绝对路径(Windows 盘符 `C:\`、`D:\`… 与 Unix `/Users/`、`/home/`… 均禁)。
|
||||
2. **md 链接相对「该 md 文件自身」所在目录解析**(不是相对技能根);链接目标必须在技能包内,或用 URL 指向外部。
|
||||
3. **引用不得越级出技能根**:禁止 `../` 跳出本技能根引用技能包外文件(技能包外文件不存在于部署环境)。确实需要的包外文件 → 要么移入技能包,要么改为 URL / 语义描述。
|
||||
|
||||
## 二、允许项(这些可以写)
|
||||
|
||||
| 写法 | 示例 | 说明 |
|
||||
|------|------|------|
|
||||
| 相对技能根路径 | `references/创作流程规范.md`、`scripts/fetch.py` | 引用包内文件 |
|
||||
| md 相对链接(示例写法) | `[规范](../接口调用/某文件.md)` | 相对该 md 所在文件解析,目标在包内 |
|
||||
| 用户级路径(`~`/占位) | `~/.workbuddy/workbuddy.db`、`{主目录}/.dsh/...` | 用户级,跨机器一致;Windows 用 `%USERPROFILE%` 语义的 `{用户名}` 占位 |
|
||||
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
|
||||
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
|
||||
| URL | `https://github.com/...` | 外部资源 |
|
||||
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
|
||||
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
|
||||
|
||||
## 三、禁令项(这些绝对禁止)
|
||||
|
||||
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
|
||||
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
|
||||
- **越级引用**:`../../..` 跳出技能根指向包外文件。
|
||||
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
|
||||
- **硬编码用户名/盘符到产出路径**:`C:\Users\maidou\Desktop\...` 必须写 `{用户名}` 占位 + 运行时解析。
|
||||
|
||||
## 四、例外(明确豁免)
|
||||
|
||||
| 场景 | 说明 |
|
||||
|------|------|
|
||||
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
|
||||
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
|
||||
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
|
||||
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
|
||||
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |
|
||||
|
||||
## 五、设置引用时的操作要点
|
||||
|
||||
1. **新建/修改任何 md 引用或代码路径**:先问「这段代码/文档会被部署到用户环境吗?」——会 → 用相对路径或允许项写法。
|
||||
2. **Python 脚本读写文件**:统一用 `__file__` 推导技能根常量(如 `BASE_DIR`),再 `os.path.join(BASE_DIR, ...)` 拼子路径;禁止字符串拼接盘符。
|
||||
3. **md 链接加完必须自检**:确认目标文件真实存在(相对自身文件解析),`../` 层数不超过技能根。
|
||||
4. **引用技能包外但必需的本地文件**:先评估移入包内;无法移入 → 去掉链接改为语义描述并注明「仅开发机维护场景」。
|
||||
|
||||
## 六、自检方法(交付前跑一遍)
|
||||
|
||||
- **盘符/Unix 绝对路径扫描**:对技能包文本文件搜 `[A-Za-z]:[\\/]`、`/(Users|home|tmp|opt|etc|var|root|usr|Applications)/`,人工复核命中行是否属「允许/豁免」类别。
|
||||
- **md 断链校验**:正则 `\]\(([^)]+)\)` 提取相对链接 → 相对文件目录解析 → 目标不存在即断链;跳过 http/https/file/mailto/# 锚点、含空格/`<>`/`$`/`|` 的命令示例、`workUrl/url/link/链接` 等 API 字段伪链接。
|
||||
- **越级检查**:任何解析后超出技能根的链接即违规。
|
||||
|
||||
---
|
||||
|
||||
*变更记录:2026-09-03 初建(全技能树相对路径审计定稿,随 V1.0 与各 subskills 分发;各技能副本内容一致,升级时批量同步)。*
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
**其他语言 / Other Languages:**
|
||||
|
||||
[English](README_EN.md) · [日本語](README_JA.md) · [한국어](README_KO.md) · [Español](README_ES.md)
|
||||
[English](https://github.com/alchaincyf/nuwa-skill/blob/main/README_EN.md) · [日本語](https://github.com/alchaincyf/nuwa-skill/blob/main/README_JA.md) · [한국어](https://github.com/alchaincyf/nuwa-skill/blob/main/README_KO.md) · [Español](https://github.com/alchaincyf/nuwa-skill/blob/main/README_ES.md)
|
||||
|
||||
<br>
|
||||
|
||||
@@ -231,9 +231,9 @@ git clone https://github.com/alchaincyf/nuwa-skill <上面对应的路径>
|
||||
女娲的生态由社区一起长大,但走两条不同的路:
|
||||
|
||||
- **`SKILL.md` 是核心资产,不接受外部PR改动**。发现方法论的bug或改进点→开issue讨论,被采纳的想法由维护者实现并在commit中致谢(先例见PR #59)
|
||||
- **社区蒸馏的人物skill走 [COMMUNITY.md](COMMUNITY.md) 索引**:放你自己的仓库(star归你),跑一遍[保真度评分卡](references/fidelity-scorecard.md)拿到B级以上,提一行PR即可收录
|
||||
- **社区蒸馏的人物skill走 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md) 索引**:放你自己的仓库(star归你),跑一遍[保真度评分卡](references/fidelity-scorecard.md)拿到B级以上,提一行PR即可收录
|
||||
|
||||
完整规则见 [CONTRIBUTING.md](CONTRIBUTING.md)。社区已有的合集、多人格编排和主题应用,见 [COMMUNITY.md](COMMUNITY.md)。
|
||||
完整规则见 [CONTRIBUTING.md](https://github.com/alchaincyf/nuwa-skill/blob/main/CONTRIBUTING.md)。社区已有的合集、多人格编排和主题应用,见 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md)。
|
||||
|
||||
---
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
> *「宁可背负骂名把事情做成,也不做悲剧英雄。」*
|
||||
|
||||
[](LICENSE)
|
||||
[](https://github.com/alchaincyf/nuwa-skill/blob/main/LICENSE)
|
||||
[](https://claude.ai/code)
|
||||
[](https://github.com/alchaincyf/nuwa-skill)
|
||||
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@
|
||||
|
||||
- 女娲Phase 4的通过标准是**内部质检**(生成过程中的关卡)
|
||||
- 评分卡是**对外报告**(生成完成后的出厂检验,任何人可复跑验证)
|
||||
- 社区贡献的人物skill申请收录进 [COMMUNITY.md](../COMMUNITY.md) 索引时,评分卡≥B是准入门槛(见 [CONTRIBUTING.md](../CONTRIBUTING.md))
|
||||
- 社区贡献的人物skill申请收录进 [COMMUNITY.md](https://github.com/alchaincyf/nuwa-skill/blob/main/COMMUNITY.md) 索引时,评分卡≥B是准入门槛(见 [CONTRIBUTING.md](https://github.com/alchaincyf/nuwa-skill/blob/main/CONTRIBUTING.md))
|
||||
|
||||
## 反作弊
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ agent_created: true
|
||||
- **经验沉淀**:新问题/新经验写入 `Creation-Review-Method/README.md` 经验库
|
||||
|
||||
> ⚠️ **核心约束**:本技能只做**分析与建议**,不修改脚本、不触发创作流程、不改 short-video-script 的创作步骤文件。
|
||||
> 🔴 **技能内一切文件引用必须用相对路径**(绝对路径随部署机器变化失效;md 链接相对自身文件解析、禁止越级出技能根)→ [路径引用规范.md](references/规则/路径引用规范.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# 路径引用规范(相对路径铁律,P0)
|
||||
|
||||
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
|
||||
|
||||
## 一、铁律(3 条)
|
||||
|
||||
1. **技能包内引用一律相对**:md 链接、代码文件操作、配置路径,只允许相对路径,禁止绝对路径(Windows 盘符 `C:\`、`D:\`… 与 Unix `/Users/`、`/home/`… 均禁)。
|
||||
2. **md 链接相对「该 md 文件自身」所在目录解析**(不是相对技能根);链接目标必须在技能包内,或用 URL 指向外部。
|
||||
3. **引用不得越级出技能根**:禁止 `../` 跳出本技能根引用技能包外文件(技能包外文件不存在于部署环境)。确实需要的包外文件 → 要么移入技能包,要么改为 URL / 语义描述。
|
||||
|
||||
## 二、允许项(这些可以写)
|
||||
|
||||
| 写法 | 示例 | 说明 |
|
||||
|------|------|------|
|
||||
| 相对技能根路径 | `references/创作流程规范.md`、`scripts/fetch.py` | 引用包内文件 |
|
||||
| md 相对链接(示例写法) | `[规范](../接口调用/某文件.md)` | 相对该 md 所在文件解析,目标在包内 |
|
||||
| 用户级路径(`~`/占位) | `~/.workbuddy/workbuddy.db`、`{主目录}/.dsh/...` | 用户级,跨机器一致;Windows 用 `%USERPROFILE%` 语义的 `{用户名}` 占位 |
|
||||
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
|
||||
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
|
||||
| URL | `https://github.com/...` | 外部资源 |
|
||||
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
|
||||
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
|
||||
|
||||
## 三、禁令项(这些绝对禁止)
|
||||
|
||||
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
|
||||
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
|
||||
- **越级引用**:`../../..` 跳出技能根指向包外文件。
|
||||
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
|
||||
- **硬编码用户名/盘符到产出路径**:`C:\Users\maidou\Desktop\...` 必须写 `{用户名}` 占位 + 运行时解析。
|
||||
|
||||
## 四、例外(明确豁免)
|
||||
|
||||
| 场景 | 说明 |
|
||||
|------|------|
|
||||
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
|
||||
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
|
||||
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
|
||||
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
|
||||
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |
|
||||
|
||||
## 五、设置引用时的操作要点
|
||||
|
||||
1. **新建/修改任何 md 引用或代码路径**:先问「这段代码/文档会被部署到用户环境吗?」——会 → 用相对路径或允许项写法。
|
||||
2. **Python 脚本读写文件**:统一用 `__file__` 推导技能根常量(如 `BASE_DIR`),再 `os.path.join(BASE_DIR, ...)` 拼子路径;禁止字符串拼接盘符。
|
||||
3. **md 链接加完必须自检**:确认目标文件真实存在(相对自身文件解析),`../` 层数不超过技能根。
|
||||
4. **引用技能包外但必需的本地文件**:先评估移入包内;无法移入 → 去掉链接改为语义描述并注明「仅开发机维护场景」。
|
||||
|
||||
## 六、自检方法(交付前跑一遍)
|
||||
|
||||
- **盘符/Unix 绝对路径扫描**:对技能包文本文件搜 `[A-Za-z]:[\\/]`、`/(Users|home|tmp|opt|etc|var|root|usr|Applications)/`,人工复核命中行是否属「允许/豁免」类别。
|
||||
- **md 断链校验**:正则 `\]\(([^)]+)\)` 提取相对链接 → 相对文件目录解析 → 目标不存在即断链;跳过 http/https/file/mailto/# 锚点、含空格/`<>`/`$`/`|` 的命令示例、`workUrl/url/link/链接` 等 API 字段伪链接。
|
||||
- **越级检查**:任何解析后超出技能根的链接即违规。
|
||||
|
||||
---
|
||||
|
||||
*变更记录:2026-09-03 初建(全技能树相对路径审计定稿,随 V1.0 与各 subskills 分发;各技能副本内容一致,升级时批量同步)。*
|
||||
@@ -435,6 +435,8 @@ F4 输出 = 主题 + 导演阐述 + 完整提示词(代码块包裹)。多
|
||||
|
||||
## 核心规则
|
||||
|
||||
> 🔴 **技能内一切文件引用必须用相对路径**(绝对路径随部署机器变化失效;md 链接相对自身文件解析、禁止越级出技能根)→ [路径引用规范.md](references/规则/路径引用规范.md)
|
||||
|
||||
> 综合两大参考技能+1个2.5时间测算参考的最佳实践提炼,执行以本节为准。流程级规则详见 `references/制作流程/分镜提示词制作流程.md`。
|
||||
|
||||
**平台与合规:**
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# 路径引用规范(相对路径铁律,P0)
|
||||
|
||||
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
|
||||
|
||||
## 一、铁律(3 条)
|
||||
|
||||
1. **技能包内引用一律相对**:md 链接、代码文件操作、配置路径,只允许相对路径,禁止绝对路径(Windows 盘符 `C:\`、`D:\`… 与 Unix `/Users/`、`/home/`… 均禁)。
|
||||
2. **md 链接相对「该 md 文件自身」所在目录解析**(不是相对技能根);链接目标必须在技能包内,或用 URL 指向外部。
|
||||
3. **引用不得越级出技能根**:禁止 `../` 跳出本技能根引用技能包外文件(技能包外文件不存在于部署环境)。确实需要的包外文件 → 要么移入技能包,要么改为 URL / 语义描述。
|
||||
|
||||
## 二、允许项(这些可以写)
|
||||
|
||||
| 写法 | 示例 | 说明 |
|
||||
|------|------|------|
|
||||
| 相对技能根路径 | `references/创作流程规范.md`、`scripts/fetch.py` | 引用包内文件 |
|
||||
| md 相对链接(示例写法) | `[规范](../接口调用/某文件.md)` | 相对该 md 所在文件解析,目标在包内 |
|
||||
| 用户级路径(`~`/占位) | `~/.workbuddy/workbuddy.db`、`{主目录}/.dsh/...` | 用户级,跨机器一致;Windows 用 `%USERPROFILE%` 语义的 `{用户名}` 占位 |
|
||||
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
|
||||
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
|
||||
| URL | `https://github.com/...` | 外部资源 |
|
||||
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
|
||||
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
|
||||
|
||||
## 三、禁令项(这些绝对禁止)
|
||||
|
||||
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
|
||||
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
|
||||
- **越级引用**:`../../..` 跳出技能根指向包外文件。
|
||||
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
|
||||
- **硬编码用户名/盘符到产出路径**:`C:\Users\maidou\Desktop\...` 必须写 `{用户名}` 占位 + 运行时解析。
|
||||
|
||||
## 四、例外(明确豁免)
|
||||
|
||||
| 场景 | 说明 |
|
||||
|------|------|
|
||||
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
|
||||
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
|
||||
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
|
||||
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
|
||||
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |
|
||||
|
||||
## 五、设置引用时的操作要点
|
||||
|
||||
1. **新建/修改任何 md 引用或代码路径**:先问「这段代码/文档会被部署到用户环境吗?」——会 → 用相对路径或允许项写法。
|
||||
2. **Python 脚本读写文件**:统一用 `__file__` 推导技能根常量(如 `BASE_DIR`),再 `os.path.join(BASE_DIR, ...)` 拼子路径;禁止字符串拼接盘符。
|
||||
3. **md 链接加完必须自检**:确认目标文件真实存在(相对自身文件解析),`../` 层数不超过技能根。
|
||||
4. **引用技能包外但必需的本地文件**:先评估移入包内;无法移入 → 去掉链接改为语义描述并注明「仅开发机维护场景」。
|
||||
|
||||
## 六、自检方法(交付前跑一遍)
|
||||
|
||||
- **盘符/Unix 绝对路径扫描**:对技能包文本文件搜 `[A-Za-z]:[\\/]`、`/(Users|home|tmp|opt|etc|var|root|usr|Applications)/`,人工复核命中行是否属「允许/豁免」类别。
|
||||
- **md 断链校验**:正则 `\]\(([^)]+)\)` 提取相对链接 → 相对文件目录解析 → 目标不存在即断链;跳过 http/https/file/mailto/# 锚点、含空格/`<>`/`$`/`|` 的命令示例、`workUrl/url/link/链接` 等 API 字段伪链接。
|
||||
- **越级检查**:任何解析后超出技能根的链接即违规。
|
||||
|
||||
---
|
||||
|
||||
*变更记录:2026-09-03 初建(全技能树相对路径审计定稿,随 V1.0 与各 subskills 分发;各技能副本内容一致,升级时批量同步)。*
|
||||
Reference in new issue
Block a user