From e20584ed5eae15f77092b31938138d3466a0231a Mon Sep 17 00:00:00 2001 From: Liyuk Date: Fri, 25 Sep 2026 19:32:23 -0700 Subject: [PATCH 1/3] feat: preserve dual interaction analysis skills --- CONTRIBUTING.md | 8 +- README.md | 90 +++------ README_EN.md | 53 ++--- docs/demos/README.md | 16 +- docs/launch/README.md | 43 ++-- docs/launch/blog-project-module.md | 32 +-- docs/launch/content-kit.md | 12 +- docs/research/github-comparable-projects.md | 8 +- docs/research/multilens-design-review.md | 2 +- .../research/multilens-psychology-evidence.md | 2 +- .../plans/2026-09-25-dual-skill-cleanup.md | 88 +++++++++ ...2026-09-24-public-safety-skill-refactor.md | 2 + .../2026-09-25-dual-skill-cleanup-design.md | 37 ++++ ...09-25-person-analysis-anti-fraud-design.md | 2 + evals/README.md | 8 +- .../2026-09-24-network-example-ab-pilot.md | 2 +- scripts/check_skill_discovery.py | 14 +- scripts/check_skill_installation.py | 184 ++++++++++++------ scripts/validate_skill.py | 105 ++++++++-- .../person-deep-analysis/SKILL.md | 0 .../person-deep-analysis/agents/openai.yaml | 0 .../dlc/fictional-character-analysis.md | 0 .../dlc/narrative-identity.md | 0 .../dlc/relationship-dynamics.md | 0 .../modules/m1-needs-and-preferences.md | 0 .../modules/m2-self-cognition.md | 0 .../modules/m3-experience-and-development.md | 0 .../modules/m4-shadow-risk.md | 0 .../modules/m5-interaction-patterns.md | 0 .../references/attachment-styles.md | 0 .../person-deep-analysis/references/axioms.md | 0 .../fraud-and-coercive-control-support.md | 0 .../references/methodology-and-limitations.md | 0 .../perspectives/cbt-descriptive.md | 0 .../dark-triad-behavioral-screening.md | 0 .../perspectives/developmental-psychology.md | 0 .../forensic-evidence-boundaries.md | 0 .../perspectives/humanistic-and-needs.md | 0 .../references/perspectives/psychodynamic.md | 0 .../perspectives/steelman-report.md | 0 .../references/safety-boundaries.md | 0 .../references/signal-mapping.md | 0 42 files changed, 455 insertions(+), 253 deletions(-) create mode 100644 docs/superpowers/plans/2026-09-25-dual-skill-cleanup.md create mode 100644 docs/superpowers/specs/2026-09-25-dual-skill-cleanup-design.md rename {archive => skills}/person-deep-analysis/SKILL.md (100%) rename {archive => skills}/person-deep-analysis/agents/openai.yaml (100%) rename {archive => skills}/person-deep-analysis/dlc/fictional-character-analysis.md (100%) rename {archive => skills}/person-deep-analysis/dlc/narrative-identity.md (100%) rename {archive => skills}/person-deep-analysis/dlc/relationship-dynamics.md (100%) rename {archive => skills}/person-deep-analysis/modules/m1-needs-and-preferences.md (100%) rename {archive => skills}/person-deep-analysis/modules/m2-self-cognition.md (100%) rename {archive => skills}/person-deep-analysis/modules/m3-experience-and-development.md (100%) rename {archive => skills}/person-deep-analysis/modules/m4-shadow-risk.md (100%) rename {archive => skills}/person-deep-analysis/modules/m5-interaction-patterns.md (100%) rename {archive => skills}/person-deep-analysis/references/attachment-styles.md (100%) rename {archive => skills}/person-deep-analysis/references/axioms.md (100%) rename {archive => skills}/person-deep-analysis/references/fraud-and-coercive-control-support.md (100%) rename {archive => skills}/person-deep-analysis/references/methodology-and-limitations.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/cbt-descriptive.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/developmental-psychology.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/humanistic-and-needs.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/psychodynamic.md (100%) rename {archive => skills}/person-deep-analysis/references/perspectives/steelman-report.md (100%) rename {archive => skills}/person-deep-analysis/references/safety-boundaries.md (100%) rename {archive => skills}/person-deep-analysis/references/signal-mapping.md (100%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d52137a..98517fe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,14 @@ # 贡献指南 -欢迎补充边界修正、识别流程改进、宿主兼容反馈、翻译和评估案例。贡献应服务于项目承诺:**根据具体行为帮助普通人核对诈骗、操控或霸凌风险,说明判断依据和未知,并把决定权留给当事人。** +欢迎补充边界修正、分析流程改进、宿主兼容反馈、翻译和评估案例。两个 Skill 都应依据具体材料说明判断依据和未知,并把决定权留给当事人:`interaction-risk-analysis` 侧重诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 侧重自述、个人介绍、选取的聊天/互动材料及虚构角色的有限解读。 ## 提交前 - 先搜索已有 issue/文档,说明具体场景、预期行为和当前问题。 -- 改动 `skills/interaction-risk-analysis/` 时,保持运行时包自包含,文件引用使用 Skill 目录内的相对路径。 -- 修改解构、反诈或安全行为时,更新相应的 `evals/interaction-risk-cases.json` / `evals/interaction-risk-acceptance.md`,并在适用时更新 `safety-scenarios.json` 与 `safety-regression.md`。 +- 改动 `skills/interaction-risk-analysis/` 或 `skills/person-deep-analysis/` 时,保持各自运行时包自包含,文件引用使用所在 Skill 目录内的相对路径。 +- 修改任一 Skill 的分析或安全行为时,更新相关验收案例与说明;互动风险相关场景见 `evals/interaction-risk-cases.json` / `evals/interaction-risk-acceptance.md`,安全场景见 `evals/safety-scenarios.json` / `evals/safety-regression.md`。 - 诈骗和心理学术语的事实主张应有可靠来源;区分研究证据、观察线索和项目假设。不要以仓库自述或单个例子宣称有效。 -- `archive/person-deep-analysis/` 保留旧版原始内容供追溯。活跃 Skill 位于 `skills/interaction-risk-analysis/`;修改时同步验收场景,避免复制未经审查的旧版规则。 +- 涉及诈骗、胁迫或控制的行为边界时,检查两个 Skill 是否都优先处理当下安全与财务风险;人物解读不得替代独立核验。 ## 案例隐私 diff --git a/README.md b/README.md index eb5c14a..a673677 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,50 @@ -# 互动风险识别与解构 +# 互动风险识别与人际深度解析 -**看清诈骗、操控、虐待与霸凌中的互动风险;依据行为解构,不替人定性。** +两个可独立安装的 Agent Skill,帮助你把具体材料、可能解释和未知分开,并保留自己核验与决定的空间。 -这是一个面向普通人的 Agent Skill。它帮助你分析可疑互动、网恋诈骗、情绪操控、胁迫、情感虐待和人际霸凌:分清原话、行为、事件顺序、重复模式、行为效果、可能目的、反证和未知,再给可独立核验的选择。不诊断人格,也不替你裁定谁是“坏人”。模型本身已有模式识别能力;Skill 提供一套提示方法,让判断更有结构、可检查和修正,不把熟悉的标签直接当答案。 +| Skill | 适合何时使用 | 主要做什么 | +|---|---|---| +| `interaction-risk-analysis`(互动风险识别与解构) | 怀疑诈骗、操控、胁迫、虐待或霸凌,需要梳理互动过程和眼前风险 | 按时间拆解事件、行为效果与重复模式,比较有依据的解释,提出独立核验与安全选择 | +| `person-deep-analysis`(人际深度解析) | 想理解自述、个人介绍、选取的聊天/互动材料或虚构角色,或明确需要多视角解读 | 区分原话、可观察行为与有限的候选解释;按材料选用人物、关系、叙事或心理学视角 | -[English](README_EN.md) · [八种场景的实际对照演示](docs/demos/README.md) · [相邻项目研究](docs/research/interaction-risk-skills-landscape.md) · [验收场景](evals/interaction-risk-cases.json) · [行为验收标准](evals/interaction-risk-acceptance.md) · [博客项目介绍](docs/launch/blog-project-module.md) · [MIT License](LICENSE) +两者都可以处理关系中的可疑互动。若正在被催款、索取凭证、威胁或控制,先处理现实安全和财务风险;不要让人物解读拖延止损。两者都不诊断人格、确认犯罪或隐藏动机,也不替用户决定关系走向。 -## 安装 - -本仓库只有一个可安装 Skill:`interaction-risk-analysis`(互动风险识别与解构)。 +[English](README_EN.md) · [合成场景演示](docs/demos/README.md) · [验收场景](evals/interaction-risk-cases.json) · [贡献指南](CONTRIBUTING.md) · [MIT License](LICENSE) -安装到 Codex: +## 安装 -```sh -npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a codex -y -``` +仓库地址:。按需要选择一个或两个 Skill,分别安装。 -安装到 Claude Code: +| Skill | Codex | Claude Code | +|---|---|---| +| 互动风险识别与解构 | `npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a codex -y` | `npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a claude-code -y` | +| 人际深度解析 | `npx skills add Liyuk/interaction-risk-analysis --skill person-deep-analysis -g -a codex -y` | `npx skills add Liyuk/interaction-risk-analysis --skill person-deep-analysis -g -a claude-code -y` | -```sh -npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a claude-code -y -``` +## 怎么选 -## 它怎样拆解问题 +如果一位网恋对象提出投资、阻止你核实公司并催促当晚转账,使用 `interaction-risk-analysis`:它会还原事件顺序,区分身份主张和已核实事实,说明限制核验、保密和催款如何形成风险,并列出可以独立核验的下一步。 -例如,一位网恋对象先转到其他平台,之后提出投资;当你要求核实公司时,对方反问“你信不信我”,最后催你当晚转账并保密。Skill 会按时间还原事件,把身份主张和已核实事实分开,解释转移渠道、限制核验、保密和催款如何组成风险链;同时列出仍不知道什么、什么独立证据会改变判断,以及可以先采取的步骤。 +如果你想理解一段自述、个人介绍或几段聊天呈现了哪些需求、选择与互动特点,使用 `person-deep-analysis`:它会依据材料提出有限的候选解释,保留反例和未知;分析虚构角色时,结论只涉及作品如何呈现角色。只有你明确要求时,才展开多视角报告。 -使用时可以直接描述经历,也可以把这段分析方法带进提示词: +两个 Skill 均可直接用自然语言提出问题,也可显式调用: ```text $interaction-risk-analysis -请按这套方法解构这些互动:按时间拆事件,分清原话、事实主张、可观察行为和推断;分析行为产生的实际效果,以及可能的因果、立场或目的,并给出依据、反证、合理替代解释和未知。区分“之后发生”与“因此导致”、效果与意图;说明哪些新证据会改变判断,再给可选回应。不要先套熟悉标签,也不要替我下结论。 +请按时间拆解这些互动,分清原话、事实主张、可观察行为和推断;说明行为效果、可能解释、反证与未知,并给我可独立核验的选择。 ``` -## 分析方法 - -复杂场景按以下顺序处理: - -1. 标明材料来源、说话人、时间范围和上下文缺口。 -2. 拆成“发生了什么 → 对方如何回应 → 后来发生什么 → 有何影响”的事件单元。 -3. 区分单一线索、同一事件的连续升级和跨事件重复模式。 -4. 检查行为实际改变了什么,再提出可能的立场或目的;把效果、动机和因果关系分开,列出依据、反证、合理替代解释与未知。 -5. 指出什么信息能区分这些解释,并独立核验身份、平台、交易或承诺。 -6. 先处理迫近的资金、账户和人身风险;应对方式由用户选择。 - -这不是让模型关闭已有判断能力,而是让它把识别到的线索摊开说明,避免直接跳到“这是某种套路”的结论。实际运行中,普通模型本身也可能答得很好;项目主张的是一套可复用的分析纪律,不是 Skill 独有的检测能力。 - -这套方法沿用项目早期 `person-analysis` 工作中的人物与互动解构经验,并纳入反诈、安全、霸凌和可选心理学视角。重点是让用户看见线索怎样通向假设,再自行核对和决定;Skill 不声称拥有普通模型没有的“识人”能力。 - -## 适用范围 - -- 网恋/投资诈骗、杀猪盘、刷单与兼职骗局、传销/资金盘、冒充权威、凭证索取和追回资金二次诈骗。 -- 情绪勒索、胁迫、隔离控制、监控、反复否认现实及越界后的惩罚。 -- 职场、学校、群聊和社交网络中的重复羞辱、排斥、造谣、报复和权力滥用。 -- 有限的人物自述、关系互动、聊天片段或虚构角色分析;明确区分证据与理论解释。 -- 误报对照:单次记忆分歧、正常反馈或一次疏忽不足以单独证明操控、诈骗或霸凌。 - -## 边界 +```text +$person-deep-analysis +请根据这段材料区分明确表达的内容和可能解释,指出依据、合理替代解释与未知;不要用有限片段给现实人物定型。 +``` -这不是自动检测器、心理诊断、法律裁决、侦查、银行风控或资金追回服务。不保证发现所有风险。只凭聊天通常不能确认身份、犯罪事实或隐藏动机。心理学视角只能帮助提出有限解释,不能诊断或预测危险。遇到急迫危险,先处理现实安全;提供地区性热线或法律步骤前需要核对当地官方来源。不要提交不必要的姓名、账号、联系方式或完整私聊;Skill 不能控制宿主如何处理输入。 +## 共同边界 -## 场景与验收 +Skill 提供可复用的分析方法,不是自动检测器、心理测验、临床诊断、法律裁决、侦查、银行风控或资金追回服务。有限文本不能证明完整人格、犯罪事实或主观动机;心理学视角只用于提出问题和有限解释。遇到迫近的人身、账户或资金风险,先采取现实中的安全措施,并通过自己找到的官方渠道核验。只提供回答问题所需的最少材料,移除不必要的姓名、账号、联系方式和完整私聊;数据如何处理取决于所用宿主平台。 -仓库维护 20 个带有预期行为和禁忌项的合成验收场景,覆盖事件解构、因果/目的推断、误报控制、反证更新、安全步骤和用户主体性。**这 20 个场景目前尚未使用新 ID `interaction-risk-analysis` 逐例运行。**另有八个按四类平衡的合成演示,保留更名前以 `$person-analysis` 运行的普通 Codex / Skill 对照输出;这些是旧 Skill ID 下的历史结果,不是新 ID 的重复试跑。[场景演示](docs/demos/README.md)、[历次宿主验收记录](evals/results/2026-09-25-person-analysis-anti-fraud-acceptance.md)和[解构方法试跑](evals/results/2026-09-25-decomposition-method-evaluation.md)都注明测试条件和结论边界。 +## 场景与检查 -可运行仓库检查: +[合成场景演示](docs/demos/README.md)展示事件拆解、替代解释、反证更新和安全选择;示例不等于真实世界准确率验证。仓库中的验收案例与检查脚本供贡献者复核行为边界: ```sh python3 scripts/validate_skill.py @@ -75,18 +55,4 @@ python3 scripts/check_skill_discovery.py python3 scripts/check_skill_installation.py ``` -## 目录结构 - -```text -skills/interaction-risk-analysis/ 唯一可安装 Skill - modules/ 旧版 M1–M5 人物分析模块 - dlc/ 按需关系、叙事与虚构角色分析 - references/ 解构、反诈、反操控、安全和理论参考 -evals/interaction-risk-cases.json 当前验收案例 -evals/results/ 宿主运行与历史评估记录 -archive/person-deep-analysis/ 旧版原始包,保留追溯 -docs/ 竞品研究、方法依据和项目说明 -scripts/ 结构、场景、发现及安装检查 -``` - -许可证:MIT。GitHub 仓库与 Skill ID 均为 `interaction-risk-analysis`;GitHub 对原仓库地址保留跳转。 +许可证:MIT。 diff --git a/README_EN.md b/README_EN.md index 2f2f372..a928c43 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,47 +1,50 @@ -# Interaction Risk Analysis +# Interaction Risk Analysis and Person Deep Analysis -**Deconstruct interactions involving scams, manipulation, abuse, or bullying. Keep the decision with the user.** +Two independently installable Agent Skills help you separate the material at hand, possible explanations, and unknowns while keeping verification and decisions with you. -An Agent Skill for ordinary people dealing with suspicious interactions, romance scams, coercion, emotional manipulation or abuse, and interpersonal bullying. It separates what was said, what happened, how events unfolded, the effects of behavior, possible purposes, counterevidence, and unknowns. Models already recognize many patterns; the Skill supplies a repeatable prompt method for making those judgments inspectable and revisable, rather than treating a familiar label as the answer. It does not diagnose people or decide who is a criminal. +| Skill | When to use it | What it does | +|---|---|---| +| `interaction-risk-analysis` | You suspect a scam, manipulation, coercion, abuse, or bullying and need to understand an interaction and immediate risks | Builds an event timeline, examines observable effects and repeated patterns, compares evidence-based explanations, and offers independent verification and safety options | +| `person-deep-analysis` | You want to understand a self-description, profile, selected chat or interaction excerpts, or a fictional character; you may explicitly request multiple perspectives | Separates quotes and observable behavior from limited interpretations, drawing on relevant person, relationship, narrative, or psychological lenses | -[Eight paired scenario demos](docs/demos/README.md) preserve historical outputs from ordinary Codex and explicit `$person-analysis` runs before the rename, using synthetic prompts grounded in official public guidance. +Both can address concerning relationship interactions. If someone is pressuring you for money or credentials, threatening you, or controlling your choices, address immediate financial and personal safety first. Neither Skill diagnoses a person, establishes a crime or hidden motive, or decides a relationship for you. + +[中文](README.md) · [Synthetic scenario demos](docs/demos/README.md) · [Acceptance cases](evals/interaction-risk-cases.json) · [Contributing](CONTRIBUTING.md) · [MIT License](LICENSE) ## Install -This repository provides one installable Skill: `interaction-risk-analysis`. +Repository: . Choose either Skill or install both separately. -For Codex: +| Skill | Codex | Claude Code | +|---|---|---| +| Interaction Risk Analysis | `npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a codex -y` | `npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a claude-code -y` | +| Person Deep Analysis | `npx skills add Liyuk/interaction-risk-analysis --skill person-deep-analysis -g -a codex -y` | `npx skills add Liyuk/interaction-risk-analysis --skill person-deep-analysis -g -a claude-code -y` | -```sh -npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a codex -y -``` +## Choose a Skill -For Claude Code: +For a romance-investment offer where someone blocks company verification and demands payment tonight, use `interaction-risk-analysis`. It can lay out the timeline, separate identity claims from verified facts, explain how secrecy and urgency affect your options, and identify what to verify independently. -```sh -npx skills add Liyuk/interaction-risk-analysis --skill interaction-risk-analysis -g -a claude-code -y -``` +For a self-description, profile, selected messages, or character in a story, use `person-deep-analysis`. It identifies what the material supports, offers limited alternative interpretations, and names what remains unknown. Fictional-character conclusions stay within the work; a multi-perspective report is used only when explicitly requested. -## How it works - -For a multi-event romance-investment scenario, the Skill can lay out the timeline, distinguish an identity claim from verified facts, and explain why a move off-platform, blocked verification, secrecy, and urgent payment together deserve caution. It can then separate a behavior's practical effect from possible intent, identify what evidence could distinguish competing explanations, and offer next steps. A single suspicious phrase is not enough to infer a stable personality or repeated pattern. +You can ask in ordinary language or invoke either Skill explicitly: ```text $interaction-risk-analysis -Use this method to deconstruct the interaction: build an event timeline; separate quotes, claims, observed behavior, and inference; explain the behavior's practical effects and possible purposes with evidence, counterevidence, alternatives, and unknowns. Distinguish sequence from causation and effect from intent. Say what evidence would change the assessment, then offer optional responses. Do not jump to a familiar label or decide the case for me. +Build a timeline of this interaction. Separate quotes, claims, observed behavior, and inference; explain practical effects, plausible interpretations, counterevidence, and unknowns, then offer independently verifiable options. ``` -The project grew from earlier person-analysis work, but the current Skill is named for its public task: analyzing interaction risks. It asks the model to make evidence and competing explanations inspectable; it does not claim a unique detection ability. - -## Scope and limits +```text +$person-deep-analysis +Separate what this material explicitly shows from possible interpretations. Give supporting evidence, reasonable alternatives, and unknowns; do not infer a real person's stable personality from a short excerpt. +``` -Use it for romance/investment and job scams, impersonation, credential requests, recovery scams, emotional blackmail, coercion, isolation, monitoring, workplace bullying, and bounded profile or relationship-material analysis. It also tests false positives such as a single memory disagreement or ordinary constructive feedback. +## Shared limits -This is not an automatic detector, clinical diagnosis, legal finding, investigation, bank fraud system, or fund-recovery service. It cannot establish identity, criminal liability, or hidden motives from chat alone. Psychology is an optional explanatory lens, not proof. In urgent situations, address immediate financial or personal safety first. Avoid sharing unnecessary names, account details, or full private chats. +These Skills provide repeatable analysis methods, not automatic detection, psychological testing, clinical diagnosis, legal findings, investigation, bank fraud control, or fund recovery. Limited text cannot establish a complete personality, criminal conduct, or subjective intent. Psychological lenses are prompts for questions and limited interpretations. For urgent safety, account, or payment risks, take practical protective steps and verify through official channels you find yourself. Share only the excerpts needed for your question; remove unnecessary names, account details, contact information, and full private chats. Data handling depends on the host platform. -## Evaluation +## Scenarios and checks -The repository contains 20 synthetic acceptance cases with expected and forbidden behaviors, including causal and purpose inference. These cases have not yet been run individually with the renamed `interaction-risk-analysis` ID. Eight scenario demos preserve ordinary Codex and explicit Skill outputs from before the rename, when the Skill ID was `person-analysis`; they are historical results, not reruns of the current ID. The [historical acceptance report](evals/results/2026-09-25-person-analysis-anti-fraud-acceptance.md) records those runs and their limits. +The [synthetic scenario demos](docs/demos/README.md) illustrate event analysis, alternative explanations, evidence updates, and safety options; they do not establish real-world accuracy. Contributors can check the repository's acceptance cases and behavior boundaries with: ```sh python3 scripts/validate_skill.py @@ -52,4 +55,4 @@ python3 scripts/check_skill_discovery.py python3 scripts/check_skill_installation.py ``` -The GitHub repository slug and installable Skill ID are `interaction-risk-analysis`. License: MIT. +License: MIT. diff --git a/docs/demos/README.md b/docs/demos/README.md index 6fe09df..d2a39a6 100644 --- a/docs/demos/README.md +++ b/docs/demos/README.md @@ -1,6 +1,6 @@ # 场景演示:从事件拆解到判断更新 -这组演示呈现互动风险分析在不同现实问题中的使用效果。结构按用户面对的问题平衡安排,避免把项目误读成只用于反诈。所有情境均为合成材料,不是真实受害者故事,也不是准确率测试。**这些 A/B 输出是在更名前用旧 Skill ID `$person-analysis` 生成的历史结果;正文保留原运行名称和输出,不代表新 ID 已对这 8 例重跑。** +这组材料按用户面对的问题整理八个合成场景,供阅读事件拆解、风险核验、替代解释和判断更新等分析主题。场景并非真实受害者个案。 ## 四类场景,各两例 @@ -11,16 +11,6 @@ | 人际关系霸凌 | [同辈排斥与网络羞辱](05-peer-bullying.md)、[职场羞辱与责任归属](06-workplace-bullying.md) | 记录重复性、权力差、实际影响与替代解释,不擅自作正式定性 | | 误判控制与证据更新 | [单次记忆冲突](07-single-memory-conflict.md)、[新反证降低排斥疑虑](08-counterevidence-update.md) | 防止把单次冲突升级成操控标签;出现反证后相应调整判断 | -## 对照设置与解读 +## 阅读限制 -- 每例同一段提示分别运行在空白临时 Codex 项目和安装 `person-analysis` 并显式调用 `$person-analysis` 的新会话中。共 8 例、16 次运行,Codex CLI `0.156.1`、`gpt-6-luna`、只读沙盒;所有调用成功。 -- 每篇收录普通 Codex 和显式 Skill 的完整输出。对照点包括事件拆解、证据与未知、替代解释、反证更新、安全选择和主体性。 -- 观察来自维护者逐例定性比较,不是独立盲评。基线模型本身多次已能提供完整而安全的回答,Skill 并非每例都带来明显增量。 - -## 这组例子显示了什么 - -Skill 的核心是把“发生了什么、重复到什么程度、行为实际造成什么效果、可能的立场或目的有哪些、还缺什么信息、哪些行动由用户决定”组织成可检查的分析过程。模型本身可以从训练中识别不少模式;Skill 不垄断这种能力,也不能把先验联想关掉。它提供的是一套提示纪律,要求把线索、因果假设、意图推断和未知分开,方便使用者质疑和修正。网恋诈骗只是其中一类;同样重要的应用是辨别情绪施压和霸凌,以及避免误把单次失误、关系冲突或普通疏漏叫作煤气灯/霸凌。 - -这组样例支持的是工作流程价值,不是心理诊断、犯罪预测或现实准确率承诺。公开资料用于构造合成情境,不代表官方机构认可本 Skill;地域来源及局限见[一手来源研究](../research/demo-scenario-sources.md)。 - -模型原始输出与运行元数据保存在本地忽略的 `.superpowers/sdd/2026-09-25-person-analysis-anti-fraud/host-runs/` 执行目录,不属于可安装 Skill 包。 +这些案例是合成材料,用于观察分析方法,不构成独立盲评、效果证明或准确率数据。公开资料只用于构造合成情境,不代表来源机构认可这些分析;来源及地域局限见[场景来源说明](../research/demo-scenario-sources.md)。 diff --git a/docs/launch/README.md b/docs/launch/README.md index ad05e7f..5a47cac 100644 --- a/docs/launch/README.md +++ b/docs/launch/README.md @@ -1,38 +1,17 @@ -# 发布与采用计划 +# 项目介绍与分享指南 -## 目标 +本项目提供两个可独立安装的 Skill:`interaction-risk-analysis` 用于拆解诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 用于解读自述、个人介绍、选取的聊天/互动材料与虚构角色。两者都区分材料、解释和未知,不诊断人格或替用户决定。涉及催款、凭证或现实威胁时,先处理安全和财务风险。 -验证目标用户能否看懂、发现、安装并完成第一次有边界的风险梳理。不要以“出圈”作为可控承诺;用实际安装与完成体验来判断传播是否有效。 +面向读者的介绍可使用 [博客项目模块](blog-project-module.md),简短示例见 [分享素材](content-kit.md),完整入口和独立安装命令见 [项目 README](../../README.md)。 -可直接改写发布的项目介绍见 [Blog 项目模块](blog-project-module.md)。发布前需检查仓库地址、宿主兼容范围和评估状态,避免把合成示例写成真实用户案例或把结构校验写成准确率证明。 +## 分享前核对 -## 发布前清单 +- 两个 Skill 的名称、用途和安装命令与中英文 README 一致。 +- 示例明确标记为合成材料,不包含真实私聊、照片、账号或可识别信息。 +- 对照演示只用于说明分析方式;不要写成真实世界准确率、心理测量效度或个人受益的证明。 +- 介绍共同边界:有限材料不能确认人格、犯罪或隐藏动机;紧急风险优先处理现实安全。 +- 如引用评估或宿主运行结果,核对该材料自身记录的范围与限制。 -- [x] 加入 MIT 许可证;版权名使用本机已配置 Git 作者名 `Liyuk`。 -- [x] 创建公开 GitHub 仓库并更新中英文 README 的安装地址:。 -- [x] CI、skill 结构校验与 Skills CLI 本地发现及隔离安装检查通过;Codex CLI 显式调用烟雾测试已记录。测试范围不代表自动加载或相对效果。 -- [ ] 检查 skills.sh/Skills CLI 的仓库索引状态和展示内容。 -- [x] 准备八个明确标记为合成的场景演示;引用政府/专业机构一手来源,不使用真实私聊、照片或账号。见[演示目录](../demos/README.md)。 -- [ ] 发布版本号与变更说明;对外明确启发式不是验证过的心理测量工具。 +## 观察使用体验 -## 轻量 30 天节奏 - -| 阶段 | 行动 | 观察结果 | -|---|---|---| -| 第 1 周:可发现 | 发布仓库,核对索引、安装命令、默认展示名和中英文入口 | 是否能找到、能否成功安装 | -| 第 2 周:可理解 | 发一篇合成案例演示:同一条材料中什么是观察、什么是假设、哪些仍未知 | 读者是否理解边界;卡在哪一步 | -| 第 3 周:可试用 | 邀请少量目标用户用公开合成案例试跑;征求自愿反馈 | 首次成功率、耗时、输出可读性 | -| 第 4 周:可改进 | 汇总重复反馈,修订文档或规则;公布版本变更和已知限制 | 安装转化、完成率、有效问题与越界反馈 | - -## 指标 - -优先跟踪漏斗而不是单一浏览量:仓库访问 → 安装说明点击/复制 → 安装成功 → 首次分析完成 → 用户自愿反馈。若平台不能提供安装数据,不推算或虚构;用匿名问卷/issue 记录自愿反馈。质量信号包括:证据是否能回指、低信息输入是否克制、替代解释是否有用、用户是否误认为诊断,以及安全/隐私投诉。反馈不应用来推断个人心理状态。 - -## 渠道顺序 - -1. 可复现的 GitHub 仓库和安装入口。 -2. Skills CLI / skills.sh 等 skill 发现目录(先验证其索引规则和内容展示)。 -3. 中文 Agent、效率工具和提示词社区:短演示配一条实际安装方式。 -4. 根据问题与自愿反馈迭代,再发布新版本。 - -远端仓库已公开;本计划提供发布素材和节奏,不代表已向社区发帖或联系任何人。传播模板见 [content-kit.md](content-kit.md)。 +优先收集自愿反馈:读者能否选对 Skill、完成安装、理解分析中的证据与未知,以及能否把建议转成自己的核验或安全选择。不要据此推断个人心理状态,也不要把浏览量当作效果证明。 diff --git a/docs/launch/blog-project-module.md b/docs/launch/blog-project-module.md index 63de1be..68b4ea0 100644 --- a/docs/launch/blog-project-module.md +++ b/docs/launch/blog-project-module.md @@ -1,37 +1,39 @@ -# 互动风险识别与解构:看证据,不替人定性 +# 两个 Skill:看证据,保留选择 -> 项目介绍草稿,可用于博客或开源项目页面。例子均为合成文本;评估结果只代表有限的模型试跑。 +> 项目介绍素材,可用于博客或项目页面。以下例子均为合成文本。 遇到可疑转账、情绪勒索或职场霸凌时,人常常先问:“是不是我想多了?”“他到底是不是 NPD?”“我是不是太蠢才会被骗?”这类问题很容易把注意力带到给人定性,反而漏掉眼前可核对的行为:有没有被催着付款、能不能独立核实、拒绝之后发生了什么、类似事件是否反复出现。 -**互动风险识别与解构**是一个可安装的 Agent Skill,覆盖网恋诈骗、其他诈骗、情绪操控与虐待、胁迫,以及职场和人际霸凌。它从人物/互动分析方法发展而来,但不试图判断“这个人是什么类型”;它让用户看见行为证据、可能解释、未知和可核实的下一步。 +本项目提供两个可独立安装的 Agent Skill。**互动风险识别与解构**(`interaction-risk-analysis`)用于网恋及其他诈骗、情绪操控与虐待、胁迫,以及职场和人际霸凌;它帮助用户看见事件顺序、行为效果、可能解释、未知和可核实的下一步。**人际深度解析**(`person-deep-analysis`)用于自述、个人介绍、选取的聊天/互动材料或虚构角色;它帮助用户分清材料明确表达了什么,以及哪些只是有限的候选解释。 -## 用一套方法解构,而不只接收模型结论 +## 互动风险:从事件走向可核验的选择 -模型本身已经会识别许多熟悉模式;问题是它可能直接给出“这是操控/骗局”,却没说明材料如何支持这个判断。这个 Skill 用提示流程要求它先解构,再谈解释。 +模型本身能识别许多熟悉模式,但直接给出“这是操控/骗局”还不够。`interaction-risk-analysis` 要求先拆材料,再讨论解释。 假设有人说:“别问那么多,信我就把钱转过来。”你提出先核实公司,对方又说:“不转就是不爱我。”Skill 会先拆出催款、阻止独立核实、把付款与感情绑定这些行为;接着解释它们怎样压缩考虑和拒绝的空间,再提出“可能在回避核验”等有限目的假设,并列出“也可能把核验误解为不信任”等替代解释。效果值得重视,但效果本身不能证明对方的主观意图。 -用户可以暂停转账、通过自己找到的官方渠道核验,也可以先不作最终判断。若用户愿意,Skill 会问哪条线索最让他不安、什么证据会改变判断;如果他只想知道先做什么,或风险正在发生,就不拿追问拖延止损。 +用户可以暂停转账、通过自己找到的官方渠道核验,也可以先不作最终判断。如果风险正在发生,Skill 应先给出简洁的安全选择,不拿追问拖延止损。 这不是“用问题诱导人相信 AI”。问题允许回答“我不确定”“那条线索可能有别的解释”,也允许用户不回答。**不确定对方动机,不妨碍一个人先保护自己的钱、边界和安全。** -## 既能识别,也要避免误报 +## 人际材料:解释有限,尊重主体性 + +`person-deep-analysis` 可用于理解一段自述写出的需求与选择、几段聊天中的可见互动,或作品如何呈现虚构角色。它先引用具体材料,再提出有依据的候选解释、合理替代解释和未知;不会由一段文案推断稳定人格或编造成长经历。只有用户明确要求时,才展开多个心理学视角。不同视角是思考工具,不会因为数量多就变成更强的证据。 + +## 两者共同的边界 只有一次记忆分歧,不自动等于煤气灯;一次具体、私下且有改进支持的工作反馈,不自动等于霸凌;一张收款账号变更的发票值得核实,但材料不足时不应直接判成诈骗。相反,反复催款、隔离朋友、威胁隐私、公开羞辱或提出异议后遭报复,也不该因为“也许只是玩笑”就被轻轻带过。 -Skill 因此把原话、行为、来源、重复性、权力差、影响和反面信息分开处理。它不诊断 NPD 或“黑暗人格”,不按文本预测犯罪,也不要求受影响者先证明恶意才能暂停付款、拒绝要求或求助。 +两个 Skill 都把原话、行为、来源、重复性、影响和反面信息分开处理,不诊断 NPD 或“黑暗人格”,不按文本预测犯罪,也不要求受影响者先证明恶意才能暂停付款、拒绝要求或求助。人物解读不能代替对催款、威胁或控制行为的现实应对。 ## 为什么做成 Skill -安装后,用户可以把 Skill 带到自己的 AI 助手里,用自然语言描述问题或提供去标识后的少量摘录。项目先按时间拆解说法、行为、回应和后果,再检查重复模式、竞争解释、反证与未知;诈骗、关系胁迫、职场霸凌和安全支持按需读取。测试和研究留在仓库,不混进运行时内容。 - -这让同一个判断纪律可以跨场景使用:**具体证据先于标签,行为效果与主观目的分开,因果假设可以检验和修正,决定权仍属于当事人。** +安装后,用户可以把所需 Skill 带到自己的 AI 助手里,用自然语言描述问题或提供去标识后的少量摘录。互动风险分析按时间拆解说法、行为、回应和后果;人际深度解析按问题选择相关的人物、关系或叙事材料。两者都检查依据、替代解释与未知,并只展开当前问题需要的内容。 -## 当前验证到哪里 +两个 Skill 的共同纪律是:**具体证据先于标签,行为效果与主观目的分开,解释可以检验和修正,决定权仍属于当事人。** -当前版本维护 20 个合成验收场景,定义事件拆解、因果/目的推断、模式区分、反证更新、误报边界和安全支持的预期行为;**这些场景尚未使用改名后的 `interaction-risk-analysis` 逐例运行**。此外还保留先前版本的 21 个防骗场景。八种按四类平衡的合成演示展示了更名前以 `$person-analysis` 运行的普通 Codex / Skill 对照,见[演示目录](../demos/README.md)。历史宿主运行记录见[验收报告](../../evals/results/2026-09-25-person-analysis-anti-fraud-acceptance.md),新版命名与方法试跑见[解构方法评估](../../evals/results/2026-09-25-decomposition-method-evaluation.md)。 +## 示例与安装 -这些检查可发现流程遗漏,不能证明真实世界的识别准确率、心理测量效度或真人受益。之后仍需要不同模型的重复试跑、独立人工盲评,以及经过同意、保护隐私的可用性反馈。项目不会把模拟结果包装成临床或防诈效果保证。 +[合成场景演示](../demos/README.md)可帮助读者查看事件拆解、误报控制和证据更新的表达方式。这些示例不能证明真实世界的识别准确率、心理测量效度或真人受益。 -项目采用 MIT License。GitHub 仓库和唯一安装 Skill ID 均为 [`interaction-risk-analysis`](https://github.com/Liyuk/interaction-risk-analysis)。更名前的旧仓库链接由 GitHub 自动重定向。 +两个 Skill 均可从 安装;各自的 Codex 与 Claude Code 命令见[项目 README](../../README.md)。项目采用 MIT License。 diff --git a/docs/launch/content-kit.md b/docs/launch/content-kit.md index c77b547..fc3d4b9 100644 --- a/docs/launch/content-kit.md +++ b/docs/launch/content-kit.md @@ -16,11 +16,17 @@ > > 这次反馈让人难受是可以理解的,但单凭难受不足以证明霸凌。具体、私下并带有改进支持的反馈,和持续羞辱、排斥、威胁或报复有所不同。之后的互动可能提供新信息,也可能证实这只是一次工作反馈。 -这个例子和投资催款的例子放在一起,可以展示 Skill 同时关注风险信号和误报边界。 +这个例子和投资催款的例子放在一起,可以展示 `interaction-risk-analysis` 同时关注风险信号和误报边界。 + +## 方向三:有限材料,不补全人物画像 + +> **合成示例:** 一份个人介绍写着“喜欢提前安排,也需要独处时间”,并提到最近在学习拒绝额外工作。 +> +> `person-deep-analysis` 可以指出材料明确表达了规划偏好、独处需求和边界练习;这些内容可能有多种情境解释,不能据此推断稳定人格、成长经历或关系结局。若想更深入,应先明确要理解的问题,再选择相关材料。 ## 发布约束 - 不贴真实私聊、截图、照片、账号、位置、病史或能拼接识别身份的细节。 - 不暗示 Skill 能读心、诊断、识别所有“坏人”或预测关系/职场结局。 -- 不把合成演示或一次模型回答写成科学验证结果;分享时链接到评估限制。 -- 发布前检查仓库 URL、安装口令和当前测试报告,不沿用旧版人物画像文案。 +- 不把合成演示或一次模型回答写成科学验证结果;分享时说明示例无法证明真实世界效果。 +- 分享时分别写明两个 Skill 的用途;安装命令以 [中英文入口](../../README.md) 为准。 diff --git a/docs/research/github-comparable-projects.md b/docs/research/github-comparable-projects.md index aec2849..487f624 100644 --- a/docs/research/github-comparable-projects.md +++ b/docs/research/github-comparable-projects.md @@ -5,7 +5,7 @@ 本文件记录定向选出的 19 个仓库样本,不推断 GitHub 全站规模或总体分布。两个切片对应不同产品定位,不应简单理解为 19 个直接竞品。仓库内容会变化,结论应视为 2026-09-24 附近的查阅快照。 -> **历史资料提示:** 本文中的“当前”“本轮”均指各段落标注的 2026-09-24/25 研究时点,不代表现在的项目状态。旧名称、仓库 slug、测试数量和建议只作为决策记录保留。当前中文展示名为“互动风险识别与解构”,Skill ID 与仓库 slug 为 `interaction-risk-analysis`;请以[后续相邻项目研究与命名评审](interaction-risk-skills-landscape.md)及仓库 README 为准。 +> **历史资料提示:** 本文中的“当前”“本轮”均指各段落标注的 2026-09-24/25 研究时点,不代表现在的项目状态。旧名称、仓库 slug、测试数量和建议只作为决策记录保留。现在有两个独立运行时入口:[`interaction-risk-analysis`](../../skills/interaction-risk-analysis/SKILL.md) 与 [`person-deep-analysis`](../../skills/person-deep-analysis/SKILL.md);请以仓库 README 为准。 ## 摘要 @@ -25,7 +25,7 @@ 本轮复核其当前 README 与主 Skill:项目仍将自身描述为覆盖关系全周期的情绪支持与策略顾问,包含聊天分析、可执行建议、可选长期记忆和 ChatLab;其流程明确区分事实/推断/未知,并设有同意、撤回和安全边界。README 还声明支持把分析转为可发送话术、邀约、练习和观察/停止条件。[README](https://github.com/shengjidaguai-china/goutoujunshi/blob/main/README_EN.md) · [SKILL.md](https://github.com/shengjidaguai-china/goutoujunshi/blob/main/SKILL.md) -**历史观察:** 旧版也处理聊天/自述,区分事实与推断;goutoujunshi 则以关系目标、情绪支持和下一步策略为中心。旧版个人画像功能现已归档,不是当前项目能力。当前项目转为诈骗、操控、胁迫和霸凌风险支持,差异见下方公益安全方向对照。 +**历史观察:** 旧版也处理聊天/自述,区分事实与推断;goutoujunshi 则以关系目标、情绪支持和下一步策略为中心。在本次研究所处阶段,人物分析包曾归档,项目主线转为诈骗、操控、胁迫和霸凌风险支持;此后人物分析包已恢复为独立 Skill。公益安全方向对照见下文。 **对本项目的借鉴:** 可借鉴其按需求调用知识和明确安全/记忆边界;保持本项目对人物画像交付的专注,不复制其关系策略顾问范围。 @@ -75,7 +75,7 @@ | 项目 | 主要对象与交付 | 结构/机制 | 可见评估或边界 | |---|---|---|---| -| 本项目旧版 `person-deep-analysis`(已归档) | 个人材料、聊天片段、虚构角色;曾含有限反诈支持 | 8 条启发式 → 核实问题 → M1–M5;按需读取相关参考 | 当时有 26 个行为场景及若干单模型小样本试跑;该包已不再是安装入口 | +| 本项目当时的 `person-deep-analysis`(研究时已归档,现已恢复) | 个人材料、聊天片段、虚构角色;曾含有限反诈支持 | 8 条启发式 → 核实问题 → M1–M5;按需读取相关参考 | 当时有 26 个行为场景及若干单模型小样本试跑;这些结果不是现行独立 Skill 的复测 | | goutoujunshi | 情绪支持、关系评估与策略建议;含聊天分析、记忆/ChatLab 选项 | 多方画像、事实/推断/未知、按需知识、权衡与行动计划 | README/SKILL 描述同意式长期记忆、撤回/清除、安全边界及校验脚本 | | Analyze Romantic Relationships | 情侣关系证据分析;互动循环、沟通准备、可选决策支持 | 证据/结论编号、命题门槛、支持与反证、替代解释、裁决状态 | README 描述合成案例、JSON、标准库校验器、回归测试和 CI | | Person Behavior Analysis | 长期聊天档案;画像、关系复盘、相似事件和条件化行为推演 | 时间线/事件单元、竞争机制假设、跨事件检索、结果更新 | README 描述隐私安全说明和合成示例;不可据自述判断预测效度 | @@ -137,7 +137,7 @@ 为本仓库选择目录时,另核对了 [Vercel Skills CLI 文档](https://github.com/vercel-labs/skills/blob/main/README.md) 与 [Agent Skills specification](https://github.com/agentskills/agentskills/blob/main/docs/specification.mdx)。CLI 文档提供从 GitHub/本地 source 发现和按 skill 名称选择安装的工作流;规范采用 `SKILL.md` 作为入口,并允许将详细指令拆分到相对引用的 supporting files。CLI 中关于 root-level skill 打包的实践问题也见 [issue #1469](https://github.com/vercel-labs/skills/issues/1469)。 -本节记录的是 2026-09-24 时的分发设计。当时唯一运行时包已调整为 `skills/person-analysis/`,通过 `--skill person-analysis` 安装;它把旧人物分析方法与反诈、反操控和安全支持合并,其他研究、案例及校验脚本留在仓库级。该包和 ID 后来再次改名;当前发现与隔离安装方式请以仓库 README 和 `interaction-risk-analysis` 为准。 +本节记录的是 2026-09-24 时的分发设计。当时唯一运行时包已调整为 `skills/person-analysis/`,通过 `--skill person-analysis` 安装;它把旧人物分析方法与反诈、反操控和安全支持合并,其他研究、案例及校验脚本留在仓库级。该包和 ID 后来再次改名;当前两个 Skill 的发现与隔离安装方式请以仓库 README 为准。 ## 公益型识骗与反操控项目:GitHub 定向检索(2026-09-24) diff --git a/docs/research/multilens-design-review.md b/docs/research/multilens-design-review.md index 8688e1d..199d731 100644 --- a/docs/research/multilens-design-review.md +++ b/docs/research/multilens-design-review.md @@ -3,7 +3,7 @@ 评审日期:2026-09-24 范围:对 `person-deep-analysis` 添加多心理学镜头、Steelman 报告、行为评估和对外介绍的产品设计评审。该评审由三个独立 AI 评审线分别检查理论边界、仓库结构、测试与传播;不是心理学专家组、临床评估或用户研究。 -> **历史设计评审:** 初始讨论对象是旧版 `person-deep-analysis`。证据边界与主体性原则被后续版本沿用;当前用途、名称和验收状态以主 Skill 与新版 README 为准。 +> **历史设计评审:** 初始讨论对象是旧版 `person-deep-analysis`。证据边界与主体性原则被后续版本沿用;当前两个运行时入口见 [`person-deep-analysis`](../../skills/person-deep-analysis/SKILL.md) 与 [`interaction-risk-analysis`](../../skills/interaction-risk-analysis/SKILL.md),用途和验收状态以各自入口及仓库 README 为准。 ## 评审共识 diff --git a/docs/research/multilens-psychology-evidence.md b/docs/research/multilens-psychology-evidence.md index c16e9b1..2306de9 100644 --- a/docs/research/multilens-psychology-evidence.md +++ b/docs/research/multilens-psychology-evidence.md @@ -3,7 +3,7 @@ 研究日期:2026-09-24 用途:为 `person-deep-analysis` 的可选多视角报告设计提供来源和边界。本文不是临床指南,也不证明文本分析可有效识别人、动机、诊断或风险。 -> **沿用说明:** 该来源审查最初为旧版人物分析 Skill 撰写。当前 Skill 仍按需使用其中的理论边界;实际触发与输出规则以 `skills/interaction-risk-analysis/SKILL.md` 及其视角参考文件为准。 +> **沿用说明:** 该来源审查最初为旧版人物分析 Skill 撰写。当前两个 Skill 均按需使用相关理论边界;实际触发与输出规则分别以 [`person-deep-analysis`](../../skills/person-deep-analysis/SKILL.md) 和 [`interaction-risk-analysis`](../../skills/interaction-risk-analysis/SKILL.md) 的运行时文件为准。 ## 结论摘要 diff --git a/docs/superpowers/plans/2026-09-25-dual-skill-cleanup.md b/docs/superpowers/plans/2026-09-25-dual-skill-cleanup.md new file mode 100644 index 0000000..54a8daf --- /dev/null +++ b/docs/superpowers/plans/2026-09-25-dual-skill-cleanup.md @@ -0,0 +1,88 @@ +# 双 Skill 恢复与文案清理实施计划 + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. + +**Goal:** 将仓库整理为可独立安装的 `interaction-risk-analysis` 与 `person-deep-analysis` 两个 Skill,并清理公开文案中的过时历史叙述。 + +**Architecture:** 将现有 `archive/person-deep-analysis/` 恢复为 `skills/person-deep-analysis/`,两个 Skill 保持独立运行时目录。仓库级评估、研究和归档资料继续保留,但公开入口只呈现当前能力、安装方法和边界;发现与安装检查改为验证两个 Skill。 + +**Tech Stack:** Markdown、YAML、Python 校验脚本、Skills CLI 1.7.0、GitHub Actions。 + +**Spec:** `docs/superpowers/specs/2026-09-25-dual-skill-cleanup-design.md` + +## Global Constraints + +- 两个正式 Skill ID 固定为 `interaction-risk-analysis` 和 `person-deep-analysis`。 +- 不删除评估、研究和归档资料。 +- 任一 Skill 的安装不得混入另一个 Skill 或仓库级 `docs/`、`evals/`、`scripts/`。 +- 不改变两个 Skill 的分析方法和安全边界。 + +## Review Focus + +- Skills CLI 是否只发现两个正式 Skill,而不是把 `archive/` 当作入口。 +- 两个 Skill 是否都能分别安装到 Codex 与 Claude Code,且引用文件完整。 +- 公开 README 是否还残留旧名称、改名过程或过时的单 Skill 描述。 +- 历史评估材料中的链接是否仍能指向当前存在的路径。 +- 运行时 Skill 是否意外包含仓库级研究或评估文件。 + +### Task 1: 恢复原始 Skill 安装入口 + +**Files:** +- Move: `archive/person-deep-analysis/` → `skills/person-deep-analysis/` +- Modify: `skills/person-deep-analysis/SKILL.md` only if its internal links require the new runtime location + +- [ ] 移动原始 Skill 目录,保持其模块、DLC、references 与 `agents/openai.yaml` 完整。 +- [ ] 修正运行时内部链接或入口名称,使所有引用都在 `skills/person-deep-analysis/` 内可解析。 +- [ ] 检查 `skills/*/SKILL.md` 恰好包含两个正式入口。 + +### Task 2: 更新结构、发现与安装校验 + +**Files:** +- Modify: `scripts/validate_skill.py` +- Modify: `scripts/check_skill_discovery.py` +- Modify: `scripts/check_skill_installation.py` + +- [ ] 将结构校验从单 Skill 改为校验两个 Skill 的 frontmatter、必要文件和本地链接。 +- [ ] 让发现校验要求 Skills CLI 报告且仅报告两个 ID。 +- [ ] 让安装校验分别安装两个 Skill 到 Codex 与 Claude Code 临时目录,检查各自关键运行时文件和无仓库级内容泄漏。 +- [ ] 为每个校验脚本运行一次失败前/通过后的针对性检查。 + +### Task 3: 清理公开项目文案 + +**Files:** +- Modify: `README.md` +- Modify: `README_EN.md` +- Modify: `CONTRIBUTING.md` +- Modify: `docs/launch/README.md` +- Modify: `docs/launch/content-kit.md` +- Modify: `docs/launch/blog-project-module.md` +- Modify: `docs/demos/README.md` as needed for current entry wording + +- [ ] README 明确列出两个 Skill 及其适用场景、独立安装命令和共同边界。 +- [ ] 删除改名过程、旧 Skill ID、旧仓库跳转、历史运行状态和面向 GitHub 浏览者的额外说明。 +- [ ] 保留实际安装所需的仓库地址,不将 GitHub 迁移背景写进用户文案。 +- [ ] 将英文入口与中文入口的 Skill 名称、范围和限制对齐。 + +### Task 4: 修复内部链接与当前状态描述 + +**Files:** +- Modify: `evals/README.md` +- Modify: `docs/research/` 中仍指向已移动目录的文件 +- Modify: `docs/superpowers/specs/` 与 `docs/superpowers/plans/` 中需要保持当前结构准确的链接 + +- [ ] 只修复会失效的路径和当前结构说明,不删除历史评估结果。 +- [ ] 将当前运行时路径统一为 `skills/interaction-risk-analysis/` 或 `skills/person-deep-analysis/`。 +- [ ] 重新运行本地 Markdown 链接检查。 + +### Task 5: 全量验证 + +**Files:** +- Test: all repository validation scripts and `.github/workflows/validate.yml` command set + +- [ ] 运行 `python3 scripts/validate_skill.py`。 +- [ ] 运行 `python3 scripts/validate_evals.py`。 +- [ ] 运行 `python3 scripts/validate_safety_evals.py`。 +- [ ] 运行 `python3 scripts/validate_interaction_risk_evals.py`。 +- [ ] 运行 `python3 scripts/check_skill_discovery.py`。 +- [ ] 运行 `python3 scripts/check_skill_installation.py`。 +- [ ] 对失败项修复后完整重跑,并记录最终结果。 diff --git a/docs/superpowers/specs/2026-09-24-public-safety-skill-refactor.md b/docs/superpowers/specs/2026-09-24-public-safety-skill-refactor.md index 3b210dc..4849b77 100644 --- a/docs/superpowers/specs/2026-09-24-public-safety-skill-refactor.md +++ b/docs/superpowers/specs/2026-09-24-public-safety-skill-refactor.md @@ -1,5 +1,7 @@ # 公益识骗与反操控 Skill 重构规格 +> 历史规格:以下单 Skill 与归档方案记录当时的目标,不描述现行结构。现行运行时入口为 [`interaction-risk-analysis`](../../../skills/interaction-risk-analysis/SKILL.md) 和 [`person-deep-analysis`](../../../skills/person-deep-analysis/SKILL.md)。 + ## 目标 将仓库从通用人物深度分析工具,转为帮助普通人识别诈骗、社交工程、心理操控、胁迫和霸凌,并支持其依据材料自行判断、核验信息和选择下一步的公众安全 Skill。 diff --git a/docs/superpowers/specs/2026-09-25-dual-skill-cleanup-design.md b/docs/superpowers/specs/2026-09-25-dual-skill-cleanup-design.md new file mode 100644 index 0000000..9829d37 --- /dev/null +++ b/docs/superpowers/specs/2026-09-25-dual-skill-cleanup-design.md @@ -0,0 +1,37 @@ +# 双 Skill 保留与项目文案清理设计 + +## 目标 + +将仓库整理为两个可独立安装的 Agent Skill,同时让公开入口只介绍当前可用能力,不再把改名过程、旧仓库迁移、历史运行状态或 GitHub 项目背景写给普通使用者。 + +## Skill 结构 + +```text +skills/ +├── interaction-risk-analysis/ 互动风险识别与解构 +└── person-deep-analysis/ 人际深度解析 +``` + +- `interaction-risk-analysis` 保持当前内容和定位,处理诈骗、操控、胁迫、虐待与霸凌等互动风险。 +- `person-deep-analysis` 从现有原始人物分析包恢复为正式安装入口,保留人物自述、聊天片段、关系互动和虚构角色分析能力。 +- 两个 Skill 共享仓库级评估与校验,但运行时目录相互独立,安装任一 Skill 时不带入另一个 Skill。 +- `person-deep-analysis` 的 frontmatter、元数据和默认调用示例统一使用 `person-deep-analysis`。 + +## 文案清理范围 + +- 根目录 README、中英文发布说明、贡献指南和 `docs/launch/`:删除旧名称、改名过程、历史运行状态、旧仓库跳转和面向 GitHub 浏览者的解释;保留安装命令、当前能力、边界、示例入口和校验方式。 +- `evals/`、`docs/research/`、`docs/superpowers/`、`archive/`:保留作为内部评估、研究和追溯资料,但将仍指向已不存在目录的链接改为现行路径。 +- 不删除合成案例、评估结果或研究依据;历史事实只在确实需要解释测试条件时保留,不出现在普通用户入口。 + +## 校验与 CI + +- 结构校验要求恰好发现 `interaction-risk-analysis` 和 `person-deep-analysis` 两个 Skill。 +- 发现校验确认 Skills CLI 列出且仅列出这两个名称。 +- 安装校验分别把两个 Skill 安装到 Codex 和 Claude Code 临时目录,检查各自运行时文件完整,并确认仓库级 `docs/`、`evals/`、`scripts/` 未泄漏。 +- 运行现有全部 Python 校验和双 Skill 的发现/安装检查。 + +## 不在本次范围 + +- 不更改 Skill 的分析方法、安全边界或评估标准。 +- 不删除研究、评估和归档文件。 +- 不创建、修改或发布 GitHub 远端仓库。 diff --git a/docs/superpowers/specs/2026-09-25-person-analysis-anti-fraud-design.md b/docs/superpowers/specs/2026-09-25-person-analysis-anti-fraud-design.md index af0e7cc..185abbc 100644 --- a/docs/superpowers/specs/2026-09-25-person-analysis-anti-fraud-design.md +++ b/docs/superpowers/specs/2026-09-25-person-analysis-anti-fraud-design.md @@ -1,5 +1,7 @@ # Person Analysis × 反诈与反操控:产品与 Skill 设计 +> 历史规格:以下 `person-analysis` 单 Skill 与归档方案记录当时的设计。现行运行时入口为 [`interaction-risk-analysis`](../../../skills/interaction-risk-analysis/SKILL.md) 和 [`person-deep-analysis`](../../../skills/person-deep-analysis/SKILL.md)。 + ## 目标 把 `person-analysis` 恢复为本项目的主要分析方法,并让它优先服务于普通人识别诈骗、操控、胁迫和霸凌。Skill 不只判断一段话“像不像骗局”,还帮助用户拆解人物在一段互动中的说法、行为、时间顺序、重复模式、回应边界的方式及可独立核验的事实。 diff --git a/evals/README.md b/evals/README.md index 6ef9a2d..2a91f09 100644 --- a/evals/README.md +++ b/evals/README.md @@ -1,11 +1,13 @@ # 评估资料 -## 当前主 Skill:`interaction-risk-analysis` +## 当前两个 Skill + +运行时入口分别是 [`interaction-risk-analysis`](../skills/interaction-risk-analysis/SKILL.md) 和 [`person-deep-analysis`](../skills/person-deep-analysis/SKILL.md)。以下评估记录按各自运行时版本和 Skill ID 阅读。 `interaction-risk-cases.json` 定义 20 个拆解与安全场景;`interaction-risk-acceptance.md` 是逐例验收锚点。**这 20 例尚未使用当前 Skill ID `interaction-risk-analysis` 逐例运行。**旧 Skill ID `person-analysis` 下的宿主运行记录见[历史报告](results/2026-09-25-person-analysis-anti-fraud-acceptance.md),关于模型本身已有识别能力及新版解构方法的试跑见[方法评估](results/2026-09-25-decomposition-method-evaluation.md)。八个合成案例另有旧 ID 下普通 Codex / 显式 Skill 的配对输出,见 [`docs/demos/`](../docs/demos/README.md)。运行 `python3 scripts/validate_interaction_risk_evals.py` 检查案例结构。 -`safety-scenarios.json` 与 `safety-regression.md` 保留了先前防骗与反操控版的 21 个场景;其模型运行记录 `results/2026-09-25-public-safety-skill-forward-test.md` 是先前版本的历史数据,不代表当前合并版全部复测通过。 +`safety-scenarios.json` 与 `safety-regression.md` 保留了先前防骗与反操控版的 21 个场景;其模型运行记录 `results/2026-09-25-public-safety-skill-forward-test.md` 是先前版本的历史数据,不代表当前 `interaction-risk-analysis` 全部复测通过。 -`scenarios.json`、`cases/`、`behavior-regression.md` 及 `person-deep-analysis` 报告记录更早版本的人物分析测试。当前 Skill 恢复了其中的方法资产,但历史运行结果不是当前版实测。运行 `python3 scripts/validate_evals.py` 检查这组历史测试材料。 +`scenarios.json`、`cases/`、`behavior-regression.md` 及 `person-deep-analysis` 报告记录更早版本的人物分析测试。`skills/person-deep-analysis/` 已恢复为独立运行时目录;历史运行结果不是这次恢复后的实测。运行 `python3 scripts/validate_evals.py` 检查这组历史测试材料。 无论新旧,这些都是工作流程测试,不验证心理学理论,不提供临床有效性、现实诈骗识别率或普遍模型效果保证。结构校验只检查格式;合成模型试跑只说明该次运行的表现。当前尚无真人用户研究、双人独立盲评或跨模型稳定性证据。 diff --git a/evals/results/2026-09-24-network-example-ab-pilot.md b/evals/results/2026-09-24-network-example-ab-pilot.md index b3f7233..1044329 100644 --- a/evals/results/2026-09-24-network-example-ab-pilot.md +++ b/evals/results/2026-09-24-network-example-ab-pilot.md @@ -30,7 +30,7 @@ ## 安全规则修订与盲化复测 -新增 `ambiguous_nonviolent_residence_visit` 回归场景,并收紧[旧版人物分析 Skill 的安全边界](../../archive/person-deep-analysis/references/safety-boundaries.md):对单次、非暴力、时间不明的上门意向,先确认当前安全与时间线;将违反约定与暴力意图分开;不默认建议离家、通知门卫、报警或留存记录。更强措施仅在用户明确担心、出现重复/升级行为或有迫近危险时提出。该文件现为归档资料。 +新增 `ambiguous_nonviolent_residence_visit` 回归场景,并收紧[旧版人物分析 Skill 的安全边界](../../skills/person-deep-analysis/references/safety-boundaries.md):对单次、非暴力、时间不明的上门意向,先确认当前安全与时间线;将违反约定与暴力意图分开;不默认建议离家、通知门卫、报警或留存记录。更强措施仅在用户明确担心、出现重复/升级行为或有迫近危险时提出。本段记录当时的修订与复测。 | 版本 | 盲评分数 | 安全门槛 | 盲评观察 | |---|---:|---|---| diff --git a/scripts/check_skill_discovery.py b/scripts/check_skill_discovery.py index 8a7ade2..9df088b 100644 --- a/scripts/check_skill_discovery.py +++ b/scripts/check_skill_discovery.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Assert Skills CLI discovers exactly this repository's installable skill.""" +"""Assert Skills CLI discovers exactly this repository's two installable skills.""" from __future__ import annotations @@ -8,7 +8,7 @@ import sys -EXPECTED = "interaction-risk-analysis" +EXPECTED = {"interaction-risk-analysis", "person-deep-analysis"} SKILLS_CLI_VERSION = "1.7.0" TIMEOUT_SECONDS = 120 ANSI_ESCAPE_RE = re.compile(r"\x1b\[[0-?]*[ -/]*[@-~]") @@ -44,17 +44,17 @@ def main() -> int: return result.returncode normalized_output = ANSI_ESCAPE_RE.sub("", output) count_match = re.search(r"Found\s+(\d+)\s+skills?", normalized_output, flags=re.IGNORECASE) - if not count_match or int(count_match.group(1)) != 1: - print("Expected Skills CLI to discover exactly one skill", file=sys.stderr) + if not count_match or int(count_match.group(1)) != len(EXPECTED): + print(f"Expected Skills CLI to discover exactly {len(EXPECTED)} skills", file=sys.stderr) return 1 available = parse_available_skills(normalized_output) - if available != {EXPECTED}: + if available != EXPECTED: print( - f"Expected Skills CLI to list only {EXPECTED!r}; found {sorted(available)}", + f"Expected Skills CLI to list only {sorted(EXPECTED)}; found {sorted(available)}", file=sys.stderr, ) return 1 - print(f"Discovery check passed: exactly {EXPECTED} is available.") + print(f"Discovery check passed: exactly {', '.join(sorted(EXPECTED))} are available.") return 0 diff --git a/scripts/check_skill_installation.py b/scripts/check_skill_installation.py index b712fee..8ee56f1 100644 --- a/scripts/check_skill_installation.py +++ b/scripts/check_skill_installation.py @@ -11,75 +11,137 @@ REPO_ROOT = Path(__file__).resolve().parent.parent SKILL_SOURCE = REPO_ROOT -SKILL_NAME = "interaction-risk-analysis" SKILLS_CLI_VERSION = "1.7.0" TIMEOUT_SECONDS = 120 -REQUIRED_RUNTIME_FILES = ( - "SKILL.md", - "agents/openai.yaml", - "modules/m5-interaction-patterns.md", - "references/interaction-decomposition.md", - "references/methodology-and-limitations.md", - "references/axioms.md", - "references/signal-mapping.md", - "references/reasoning-with-the-user.md", - "references/scams-and-social-engineering.md", - "references/relationship-coercion.md", - "references/workplace-and-social-bullying.md", - "references/safety-and-agency.md", +REQUIRED_RUNTIME_FILES = { + "interaction-risk-analysis": ( + "SKILL.md", + "agents/openai.yaml", + "modules/m1-needs-and-preferences.md", + "modules/m2-self-cognition.md", + "modules/m3-experience-and-development.md", + "modules/m4-shadow-risk.md", + "modules/m5-interaction-patterns.md", + "dlc/fictional-character-analysis.md", + "dlc/narrative-identity.md", + "dlc/relationship-dynamics.md", + "references/interaction-decomposition.md", + "references/methodology-and-limitations.md", + "references/attachment-styles.md", + "references/axioms.md", + "references/signal-mapping.md", + "references/reasoning-with-the-user.md", + "references/scams-and-social-engineering.md", + "references/relationship-coercion.md", + "references/workplace-and-social-bullying.md", + "references/safety-and-agency.md", + "references/fraud-and-coercive-control-support.md", + "references/safety-boundaries.md", + "references/perspectives/cbt-descriptive.md", + "references/perspectives/dark-triad-behavioral-screening.md", + "references/perspectives/developmental-psychology.md", + "references/perspectives/forensic-evidence-boundaries.md", + "references/perspectives/humanistic-and-needs.md", + "references/perspectives/psychodynamic.md", + "references/perspectives/steelman-report.md", + ), + "person-deep-analysis": ( + "SKILL.md", + "agents/openai.yaml", + "modules/m1-needs-and-preferences.md", + "modules/m2-self-cognition.md", + "modules/m3-experience-and-development.md", + "modules/m4-shadow-risk.md", + "modules/m5-interaction-patterns.md", + "references/methodology-and-limitations.md", + "references/axioms.md", + "references/signal-mapping.md", + "references/fraud-and-coercive-control-support.md", + "references/safety-boundaries.md", + "references/attachment-styles.md", + "references/perspectives/cbt-descriptive.md", + "references/perspectives/dark-triad-behavioral-screening.md", + "references/perspectives/developmental-psychology.md", + "references/perspectives/forensic-evidence-boundaries.md", + "references/perspectives/humanistic-and-needs.md", + "references/perspectives/psychodynamic.md", + "references/perspectives/steelman-report.md", + "dlc/fictional-character-analysis.md", + "dlc/narrative-identity.md", + "dlc/relationship-dynamics.md", + ), +} +REPOSITORY_ONLY_ENTRIES = ( + "archive", "docs", "evals", "scripts", ".github", "README.md", + "README_EN.md", "CONTRIBUTING.md", "LICENSE", ) def main() -> int: - with TemporaryDirectory(prefix="interaction-risk-install-") as temp_dir: - try: - result = subprocess.run( - [ - "npx", - "--yes", - f"skills@{SKILLS_CLI_VERSION}", - "add", - str(SKILL_SOURCE), - "--skill", - SKILL_NAME, - "--agent", - "codex", - "claude-code", - "--yes", - "--copy", - ], - cwd=temp_dir, - check=False, - capture_output=True, - text=True, - timeout=TIMEOUT_SECONDS, + for skill_name, required_files in REQUIRED_RUNTIME_FILES.items(): + with TemporaryDirectory(prefix=f"{skill_name}-install-") as temp_dir: + status = check_installation(skill_name, required_files, Path(temp_dir)) + if status: + return status + print("Sandboxed installs passed for both skills in Codex and Claude Code; runtime files are complete and repository-only content is excluded.") + return 0 + + +def check_installation(skill_name: str, required_files: tuple[str, ...], temp_dir: Path) -> int: + try: + result = subprocess.run( + [ + "npx", + "--yes", + f"skills@{SKILLS_CLI_VERSION}", + "add", + str(SKILL_SOURCE), + "--skill", + skill_name, + "--agent", + "codex", + "claude-code", + "--yes", + "--copy", + ], + cwd=temp_dir, + check=False, + capture_output=True, + text=True, + timeout=TIMEOUT_SECONDS, + ) + except subprocess.TimeoutExpired: + print(f"Skills CLI installation of {skill_name} timed out after {TIMEOUT_SECONDS}s", file=sys.stderr) + return 1 + output = result.stdout + result.stderr + print(output, end="" if output.endswith("\n") else "\n") + if result.returncode: + print(f"Skills CLI exited with status {result.returncode} while installing {skill_name}", file=sys.stderr) + return result.returncode + installed_entries = { + "Codex": temp_dir / ".agents" / "skills" / skill_name, + "Claude Code": temp_dir / ".claude" / "skills" / skill_name, + } + for agent, installed_entry in installed_entries.items(): + missing = [name for name in required_files if not (installed_entry / name).is_file()] + if missing: + print( + f"{skill_name} {agent}-target install is missing runtime files: {', '.join(missing)}", + file=sys.stderr, ) - except subprocess.TimeoutExpired: - print(f"Skills CLI installation timed out after {TIMEOUT_SECONDS}s", file=sys.stderr) return 1 - output = result.stdout + result.stderr - print(output, end="" if output.endswith("\n") else "\n") - if result.returncode: - print(f"Skills CLI exited with status {result.returncode}", file=sys.stderr) - return result.returncode - installed_entries = { - "Codex": Path(temp_dir) / ".agents" / "skills" / SKILL_NAME, - "Claude Code": Path(temp_dir) / ".claude" / "skills" / SKILL_NAME, - } - for agent, installed_entry in installed_entries.items(): - missing = [name for name in REQUIRED_RUNTIME_FILES if not (installed_entry / name).is_file()] - if missing: - print( - f"{agent}-target install is missing runtime files: {', '.join(missing)}", - file=sys.stderr, - ) - return 1 - leaked = [name for name in ("evals", "docs", "scripts") if (installed_entry / name).exists()] - if leaked: - print(f"Repository-only content leaked into {agent} skill install: {', '.join(leaked)}", file=sys.stderr) - return 1 - print("Sandboxed repository installs passed for Codex and Claude Code; skill files are complete and repo-only content is excluded.") - return 0 + unexpected = [ + name for name in REQUIRED_RUNTIME_FILES + if name != skill_name and (installed_entry.parent / name).exists() + ] + if unexpected: + print(f"Unexpected skills installed with {skill_name} for {agent}: {', '.join(unexpected)}", file=sys.stderr) + return 1 + leaked = [name for name in REPOSITORY_ONLY_ENTRIES if (installed_entry / name).exists()] + if leaked: + print(f"Repository-only content leaked into {skill_name} {agent} install: {', '.join(leaked)}", file=sys.stderr) + return 1 + return 0 if __name__ == "__main__": diff --git a/scripts/validate_skill.py b/scripts/validate_skill.py index b1c18ae..78d5913 100644 --- a/scripts/validate_skill.py +++ b/scripts/validate_skill.py @@ -10,12 +10,21 @@ REPO_ROOT = Path(__file__).resolve().parent.parent -SKILL_ROOT = REPO_ROOT / "skills" / "interaction-risk-analysis" +SKILL_NAMES = ("interaction-risk-analysis", "person-deep-analysis") REQUIRED_FILES = ( "skills/interaction-risk-analysis/SKILL.md", "skills/interaction-risk-analysis/agents/openai.yaml", + "skills/interaction-risk-analysis/modules/m1-needs-and-preferences.md", + "skills/interaction-risk-analysis/modules/m2-self-cognition.md", + "skills/interaction-risk-analysis/modules/m3-experience-and-development.md", + "skills/interaction-risk-analysis/modules/m4-shadow-risk.md", + "skills/interaction-risk-analysis/modules/m5-interaction-patterns.md", + "skills/interaction-risk-analysis/dlc/fictional-character-analysis.md", + "skills/interaction-risk-analysis/dlc/narrative-identity.md", + "skills/interaction-risk-analysis/dlc/relationship-dynamics.md", "skills/interaction-risk-analysis/references/methodology-and-limitations.md", "skills/interaction-risk-analysis/references/interaction-decomposition.md", + "skills/interaction-risk-analysis/references/attachment-styles.md", "skills/interaction-risk-analysis/references/axioms.md", "skills/interaction-risk-analysis/references/signal-mapping.md", "skills/interaction-risk-analysis/references/reasoning-with-the-user.md", @@ -23,7 +32,38 @@ "skills/interaction-risk-analysis/references/relationship-coercion.md", "skills/interaction-risk-analysis/references/workplace-and-social-bullying.md", "skills/interaction-risk-analysis/references/safety-and-agency.md", - "archive/person-deep-analysis/SKILL.md", + "skills/interaction-risk-analysis/references/fraud-and-coercive-control-support.md", + "skills/interaction-risk-analysis/references/safety-boundaries.md", + "skills/interaction-risk-analysis/references/perspectives/cbt-descriptive.md", + "skills/interaction-risk-analysis/references/perspectives/dark-triad-behavioral-screening.md", + "skills/interaction-risk-analysis/references/perspectives/developmental-psychology.md", + "skills/interaction-risk-analysis/references/perspectives/forensic-evidence-boundaries.md", + "skills/interaction-risk-analysis/references/perspectives/humanistic-and-needs.md", + "skills/interaction-risk-analysis/references/perspectives/psychodynamic.md", + "skills/interaction-risk-analysis/references/perspectives/steelman-report.md", + "skills/person-deep-analysis/SKILL.md", + "skills/person-deep-analysis/agents/openai.yaml", + "skills/person-deep-analysis/modules/m1-needs-and-preferences.md", + "skills/person-deep-analysis/modules/m2-self-cognition.md", + "skills/person-deep-analysis/modules/m3-experience-and-development.md", + "skills/person-deep-analysis/modules/m4-shadow-risk.md", + "skills/person-deep-analysis/modules/m5-interaction-patterns.md", + "skills/person-deep-analysis/dlc/fictional-character-analysis.md", + "skills/person-deep-analysis/dlc/narrative-identity.md", + "skills/person-deep-analysis/dlc/relationship-dynamics.md", + "skills/person-deep-analysis/references/methodology-and-limitations.md", + "skills/person-deep-analysis/references/attachment-styles.md", + "skills/person-deep-analysis/references/axioms.md", + "skills/person-deep-analysis/references/signal-mapping.md", + "skills/person-deep-analysis/references/fraud-and-coercive-control-support.md", + "skills/person-deep-analysis/references/safety-boundaries.md", + "skills/person-deep-analysis/references/perspectives/cbt-descriptive.md", + "skills/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md", + "skills/person-deep-analysis/references/perspectives/developmental-psychology.md", + "skills/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md", + "skills/person-deep-analysis/references/perspectives/humanistic-and-needs.md", + "skills/person-deep-analysis/references/perspectives/psychodynamic.md", + "skills/person-deep-analysis/references/perspectives/steelman-report.md", "docs/research/multilens-psychology-evidence.md", "docs/research/multilens-design-review.md", "docs/research/network-evaluation-sources.md", @@ -72,34 +112,39 @@ "scripts/validate_evals.py", ) LINK_RE = re.compile(r"(? None: - skill_file = SKILL_ROOT / "SKILL.md" +def check_frontmatter(skill_name: str, errors: list[str]) -> None: + skill_file = REPO_ROOT / "skills" / skill_name / "SKILL.md" if not skill_file.is_file(): return content = skill_file.read_text(encoding="utf-8") match = FRONTMATTER_RE.match(content) if not match: - errors.append("skills/interaction-risk-analysis/SKILL.md: missing YAML frontmatter") + errors.append(f"skills/{skill_name}/SKILL.md: missing YAML frontmatter") return fields = match.group(1) - name_match = re.search(r"^name:\s*([^\s#]+)\s*$", fields, flags=re.MULTILINE) + name_match = re.search( + r"""^name:[ \t]*(?:'([^'\n]+)'|"([^"\n]+)"|([^\s#]+))[ \t]*$""", + fields, + flags=re.MULTILINE, + ) for field in ("name", "description"): if not re.search(rf"^{field}:\s*\S", fields, flags=re.MULTILINE): - errors.append(f"SKILL.md: frontmatter is missing a non-empty {field!r} field") - if name_match and name_match.group(1) != SKILL_ROOT.name: - errors.append( - f"SKILL.md name {name_match.group(1)!r} does not match directory {SKILL_ROOT.name!r}" - ) + errors.append(f"skills/{skill_name}/SKILL.md: frontmatter is missing a non-empty {field!r} field") + if name_match: + name = next(value for value in name_match.groups() if value is not None) + if name != skill_name: + errors.append(f"skills/{skill_name}/SKILL.md name {name!r} does not match directory {skill_name!r}") description_match = re.search( r"^description:\s*>-?\s*\n((?:[ \t].*\n?)+)", fields, flags=re.MULTILINE ) if description_match and len(description_match.group(1).strip()) > 1024: - errors.append("SKILL.md: frontmatter description exceeds 1024 characters") + errors.append(f"skills/{skill_name}/SKILL.md: frontmatter description exceeds 1024 characters") if description_match and not description_match.group(1).lstrip().startswith("Use when"): - errors.append("SKILL.md: description should begin with a clear usage trigger ('Use when')") + errors.append(f"skills/{skill_name}/SKILL.md: description should begin with a clear usage trigger ('Use when')") def check_required_files(errors: list[str]) -> None: @@ -113,12 +158,28 @@ def check_no_root_skill(errors: list[str]) -> None: errors.append("repository root must not contain SKILL.md; installable skill belongs under skills/") -def check_single_installable_skill(errors: list[str]) -> None: - skill_files = sorted((REPO_ROOT / "skills").glob("*/SKILL.md")) - expected = REPO_ROOT / "skills" / "interaction-risk-analysis" / "SKILL.md" - if skill_files != [expected]: - names = [str(path.relative_to(REPO_ROOT)) for path in skill_files] - errors.append(f"expected exactly one installable skill {expected.relative_to(REPO_ROOT)}, found {names}") +def check_installable_skills(errors: list[str]) -> None: + found = {path.name for path in (REPO_ROOT / "skills").iterdir() if path.is_dir()} + expected = set(SKILL_NAMES) + if found != expected: + errors.append(f"expected exactly these installable skills {sorted(expected)}, found {sorted(found)}") + + +def check_runtime_references(errors: list[str]) -> None: + for skill_name in SKILL_NAMES: + skill_root = (REPO_ROOT / "skills" / skill_name).resolve() + if not skill_root.is_dir(): + continue + for source in skill_root.rglob("*.md"): + for line_number, line in enumerate(source.read_text(encoding="utf-8").splitlines(), 1): + for match in RUNTIME_REF_RE.finditer(line): + reference = match.group(1) + target = (skill_root / reference).resolve() + location = f"skills/{skill_name}/{source.relative_to(skill_root)}:{line_number}" + if not target.is_relative_to(skill_root): + errors.append(f"{location}: runtime reference escapes skill directory: {reference}") + elif not target.is_file(): + errors.append(f"{location}: runtime reference target not found: {reference}") def check_markdown_links(errors: list[str]) -> None: @@ -143,9 +204,11 @@ def check_markdown_links(errors: list[str]) -> None: def main() -> int: errors: list[str] = [] check_required_files(errors) - check_frontmatter(errors) + for skill_name in SKILL_NAMES: + check_frontmatter(skill_name, errors) check_no_root_skill(errors) - check_single_installable_skill(errors) + check_installable_skills(errors) + check_runtime_references(errors) check_markdown_links(errors) if errors: print("Repository validation failed:") diff --git a/archive/person-deep-analysis/SKILL.md b/skills/person-deep-analysis/SKILL.md similarity index 100% rename from archive/person-deep-analysis/SKILL.md rename to skills/person-deep-analysis/SKILL.md diff --git a/archive/person-deep-analysis/agents/openai.yaml b/skills/person-deep-analysis/agents/openai.yaml similarity index 100% rename from archive/person-deep-analysis/agents/openai.yaml rename to skills/person-deep-analysis/agents/openai.yaml diff --git a/archive/person-deep-analysis/dlc/fictional-character-analysis.md b/skills/person-deep-analysis/dlc/fictional-character-analysis.md similarity index 100% rename from archive/person-deep-analysis/dlc/fictional-character-analysis.md rename to skills/person-deep-analysis/dlc/fictional-character-analysis.md diff --git a/archive/person-deep-analysis/dlc/narrative-identity.md b/skills/person-deep-analysis/dlc/narrative-identity.md similarity index 100% rename from archive/person-deep-analysis/dlc/narrative-identity.md rename to skills/person-deep-analysis/dlc/narrative-identity.md diff --git a/archive/person-deep-analysis/dlc/relationship-dynamics.md b/skills/person-deep-analysis/dlc/relationship-dynamics.md similarity index 100% rename from archive/person-deep-analysis/dlc/relationship-dynamics.md rename to skills/person-deep-analysis/dlc/relationship-dynamics.md diff --git a/archive/person-deep-analysis/modules/m1-needs-and-preferences.md b/skills/person-deep-analysis/modules/m1-needs-and-preferences.md similarity index 100% rename from archive/person-deep-analysis/modules/m1-needs-and-preferences.md rename to skills/person-deep-analysis/modules/m1-needs-and-preferences.md diff --git a/archive/person-deep-analysis/modules/m2-self-cognition.md b/skills/person-deep-analysis/modules/m2-self-cognition.md similarity index 100% rename from archive/person-deep-analysis/modules/m2-self-cognition.md rename to skills/person-deep-analysis/modules/m2-self-cognition.md diff --git a/archive/person-deep-analysis/modules/m3-experience-and-development.md b/skills/person-deep-analysis/modules/m3-experience-and-development.md similarity index 100% rename from archive/person-deep-analysis/modules/m3-experience-and-development.md rename to skills/person-deep-analysis/modules/m3-experience-and-development.md diff --git a/archive/person-deep-analysis/modules/m4-shadow-risk.md b/skills/person-deep-analysis/modules/m4-shadow-risk.md similarity index 100% rename from archive/person-deep-analysis/modules/m4-shadow-risk.md rename to skills/person-deep-analysis/modules/m4-shadow-risk.md diff --git a/archive/person-deep-analysis/modules/m5-interaction-patterns.md b/skills/person-deep-analysis/modules/m5-interaction-patterns.md similarity index 100% rename from archive/person-deep-analysis/modules/m5-interaction-patterns.md rename to skills/person-deep-analysis/modules/m5-interaction-patterns.md diff --git a/archive/person-deep-analysis/references/attachment-styles.md b/skills/person-deep-analysis/references/attachment-styles.md similarity index 100% rename from archive/person-deep-analysis/references/attachment-styles.md rename to skills/person-deep-analysis/references/attachment-styles.md diff --git a/archive/person-deep-analysis/references/axioms.md b/skills/person-deep-analysis/references/axioms.md similarity index 100% rename from archive/person-deep-analysis/references/axioms.md rename to skills/person-deep-analysis/references/axioms.md diff --git a/archive/person-deep-analysis/references/fraud-and-coercive-control-support.md b/skills/person-deep-analysis/references/fraud-and-coercive-control-support.md similarity index 100% rename from archive/person-deep-analysis/references/fraud-and-coercive-control-support.md rename to skills/person-deep-analysis/references/fraud-and-coercive-control-support.md diff --git a/archive/person-deep-analysis/references/methodology-and-limitations.md b/skills/person-deep-analysis/references/methodology-and-limitations.md similarity index 100% rename from archive/person-deep-analysis/references/methodology-and-limitations.md rename to skills/person-deep-analysis/references/methodology-and-limitations.md diff --git a/archive/person-deep-analysis/references/perspectives/cbt-descriptive.md b/skills/person-deep-analysis/references/perspectives/cbt-descriptive.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/cbt-descriptive.md rename to skills/person-deep-analysis/references/perspectives/cbt-descriptive.md diff --git a/archive/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md b/skills/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md rename to skills/person-deep-analysis/references/perspectives/dark-triad-behavioral-screening.md diff --git a/archive/person-deep-analysis/references/perspectives/developmental-psychology.md b/skills/person-deep-analysis/references/perspectives/developmental-psychology.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/developmental-psychology.md rename to skills/person-deep-analysis/references/perspectives/developmental-psychology.md diff --git a/archive/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md b/skills/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md rename to skills/person-deep-analysis/references/perspectives/forensic-evidence-boundaries.md diff --git a/archive/person-deep-analysis/references/perspectives/humanistic-and-needs.md b/skills/person-deep-analysis/references/perspectives/humanistic-and-needs.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/humanistic-and-needs.md rename to skills/person-deep-analysis/references/perspectives/humanistic-and-needs.md diff --git a/archive/person-deep-analysis/references/perspectives/psychodynamic.md b/skills/person-deep-analysis/references/perspectives/psychodynamic.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/psychodynamic.md rename to skills/person-deep-analysis/references/perspectives/psychodynamic.md diff --git a/archive/person-deep-analysis/references/perspectives/steelman-report.md b/skills/person-deep-analysis/references/perspectives/steelman-report.md similarity index 100% rename from archive/person-deep-analysis/references/perspectives/steelman-report.md rename to skills/person-deep-analysis/references/perspectives/steelman-report.md diff --git a/archive/person-deep-analysis/references/safety-boundaries.md b/skills/person-deep-analysis/references/safety-boundaries.md similarity index 100% rename from archive/person-deep-analysis/references/safety-boundaries.md rename to skills/person-deep-analysis/references/safety-boundaries.md diff --git a/archive/person-deep-analysis/references/signal-mapping.md b/skills/person-deep-analysis/references/signal-mapping.md similarity index 100% rename from archive/person-deep-analysis/references/signal-mapping.md rename to skills/person-deep-analysis/references/signal-mapping.md From 5bef182a392184f0e32439f0938915d88a6c4a3c Mon Sep 17 00:00:00 2001 From: Liyuk Date: Fri, 25 Sep 2026 19:39:46 -0700 Subject: [PATCH 2/3] docs: introduce RelationForge brand --- README.md | 7 +++++-- README_EN.md | 7 +++++-- docs/launch/blog-project-module.md | 4 ++-- docs/research/interaction-risk-skills-landscape.md | 9 +++++---- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a673677..5842f02 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ -# 互动风险识别与人际深度解析 +# RelationForge -两个可独立安装的 Agent Skill,帮助你把具体材料、可能解释和未知分开,并保留自己核验与决定的空间。 +*Evidence-first reasoning for people, interactions, and risk* +拆事实,看言行,辨风险,不替人定性。 + +RelationForge 包含两个可独立安装的 Agent Skill,帮助你把具体材料、可能解释和未知分开,并保留自己核验与决定的空间。 | Skill | 适合何时使用 | 主要做什么 | |---|---|---| diff --git a/README_EN.md b/README_EN.md index a928c43..dd5ce26 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,6 +1,9 @@ -# Interaction Risk Analysis and Person Deep Analysis +# RelationForge -Two independently installable Agent Skills help you separate the material at hand, possible explanations, and unknowns while keeping verification and decisions with you. +*Evidence-first reasoning for people, interactions, and risk* +Separate facts, behavior, and risk without labeling people. + +RelationForge contains two independently installable Agent Skills that help you separate the material at hand, possible explanations, and unknowns while keeping verification and decisions with you. | Skill | When to use it | What it does | |---|---|---| diff --git a/docs/launch/blog-project-module.md b/docs/launch/blog-project-module.md index 68b4ea0..281bf1a 100644 --- a/docs/launch/blog-project-module.md +++ b/docs/launch/blog-project-module.md @@ -1,10 +1,10 @@ -# 两个 Skill:看证据,保留选择 +# RelationForge:看证据,保留选择 > 项目介绍素材,可用于博客或项目页面。以下例子均为合成文本。 遇到可疑转账、情绪勒索或职场霸凌时,人常常先问:“是不是我想多了?”“他到底是不是 NPD?”“我是不是太蠢才会被骗?”这类问题很容易把注意力带到给人定性,反而漏掉眼前可核对的行为:有没有被催着付款、能不能独立核实、拒绝之后发生了什么、类似事件是否反复出现。 -本项目提供两个可独立安装的 Agent Skill。**互动风险识别与解构**(`interaction-risk-analysis`)用于网恋及其他诈骗、情绪操控与虐待、胁迫,以及职场和人际霸凌;它帮助用户看见事件顺序、行为效果、可能解释、未知和可核实的下一步。**人际深度解析**(`person-deep-analysis`)用于自述、个人介绍、选取的聊天/互动材料或虚构角色;它帮助用户分清材料明确表达了什么,以及哪些只是有限的候选解释。 +RelationForge 提供两个可独立安装的 Agent Skill。它的核心原则是:**拆事实,看言行,辨风险,不替人定性。** **互动风险识别与解构**(`interaction-risk-analysis`)用于网恋及其他诈骗、情绪操控与虐待、胁迫,以及职场和人际霸凌;它帮助用户看见事件顺序、行为效果、可能解释、未知和可核实的下一步。**人际深度解析**(`person-deep-analysis`)用于自述、个人介绍、选取的聊天/互动材料或虚构角色;它帮助用户分清材料明确表达了什么,以及哪些只是有限的候选解释。 ## 互动风险:从事件走向可核验的选择 diff --git a/docs/research/interaction-risk-skills-landscape.md b/docs/research/interaction-risk-skills-landscape.md index 2e6a0f9..379ab9e 100644 --- a/docs/research/interaction-risk-skills-landscape.md +++ b/docs/research/interaction-risk-skills-landscape.md @@ -9,7 +9,7 @@ GitHub 上确有相邻项目:有诈骗检测 Skill、关系/人物分析 Skill、聊天操控分析应用、多风险检测 MCP 服务,以及多轮反诈研究基准。本次定向检索没有发现一个公开仓库明确把“人物/互动分析方法”作为反诈核心方法,同时提供“跨诈骗、胁迫、情感操控、霸凌的用户支持”这一完整组合。这个结论限于本次检索样本,不等于全 GitHub 唯一。 -本次命名定为:中文展示名 **互动风险识别与解构**,英文 Skill ID 与 GitHub 仓库 slug 均为 **`interaction-risk-analysis`**。这比 `person-analysis` 更能说明用户要处理的任务,避免被误解为人格画像;也比“反诈/反操控”更宽,不会把霸凌和情感虐待降为边缘用途。早期 `person-analysis` 名称作为方法来源和历史测试 ID 保留在旧记录中。 +本次品牌命名定为:**RelationForge**,定位语为 *Evidence-first reasoning for people, interactions, and risk*,中文口号为“拆事实,看言行,辨风险,不替人定性”。两个英文 Skill ID 与 GitHub 仓库 slug 继续分别使用 **`interaction-risk-analysis`** 与 **`person-deep-analysis`**。品牌名覆盖人物材料与互动风险,技术 ID 则准确说明各自的安装入口。 ## 样本与分类 @@ -41,9 +41,10 @@ GitHub 上确有相邻项目:有诈骗检测 Skill、关系/人物分析 Skill 因此,“person-analysis”更适合作为**项目方法来源**,不适合作为唯一的面向用户的名称。单独使用它容易让人预期这是人格画像或关系画像;使用“防骗与反操控”又会弱化学校、职场及亲密关系霸凌等应用。`interaction-risk-analysis` 直指分析互动风险,能覆盖不同场景;中文展示名补足“识别与解构”的用户任务。 -> **展示名:** 互动风险识别与解构 -> **Skill / 仓库:** `interaction-risk-analysis` -> **一句话:** 拆行为和证据,识别诈骗、操控、虐待与霸凌风险;不替人定性。 +> **品牌名:** RelationForge +> **定位语:** Evidence-first reasoning for people, interactions, and risk +> **一句话:** 拆事实,看言行,辨风险,不替人定性。 +> **Skill:** `interaction-risk-analysis`、`person-deep-analysis` ## 后续维护与评估建议 From 9738fdc74f46d61c59193255969b391132f6e915 Mon Sep 17 00:00:00 2001 From: Liyuk Date: Fri, 25 Sep 2026 19:41:32 -0700 Subject: [PATCH 3/3] docs: align project content with RelationForge --- CONTRIBUTING.md | 4 ++-- docs/demos/README.md | 4 ++-- docs/launch/README.md | 4 ++-- docs/launch/content-kit.md | 4 +++- docs/research/github-comparable-projects.md | 4 ++-- docs/research/interaction-risk-skills-landscape.md | 4 ++-- evals/README.md | 2 +- skills/interaction-risk-analysis/SKILL.md | 2 +- skills/interaction-risk-analysis/agents/openai.yaml | 2 +- skills/person-deep-analysis/SKILL.md | 2 +- skills/person-deep-analysis/agents/openai.yaml | 2 +- 11 files changed, 18 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 98517fe..3c3cdac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# 贡献指南 +# RelationForge 贡献指南 -欢迎补充边界修正、分析流程改进、宿主兼容反馈、翻译和评估案例。两个 Skill 都应依据具体材料说明判断依据和未知,并把决定权留给当事人:`interaction-risk-analysis` 侧重诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 侧重自述、个人介绍、选取的聊天/互动材料及虚构角色的有限解读。 +欢迎为 RelationForge 补充边界修正、分析流程改进、宿主兼容反馈、翻译和评估案例。两个 Skill 都应依据具体材料说明判断依据和未知,并把决定权留给当事人:`interaction-risk-analysis` 侧重诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 侧重自述、个人介绍、选取的聊天/互动材料及虚构角色的有限解读。 ## 提交前 diff --git a/docs/demos/README.md b/docs/demos/README.md index d2a39a6..9481023 100644 --- a/docs/demos/README.md +++ b/docs/demos/README.md @@ -1,6 +1,6 @@ -# 场景演示:从事件拆解到判断更新 +# RelationForge 场景演示:从事件拆解到判断更新 -这组材料按用户面对的问题整理八个合成场景,供阅读事件拆解、风险核验、替代解释和判断更新等分析主题。场景并非真实受害者个案。 +这组 RelationForge 场景按用户面对的问题整理八个合成案例,供阅读事件拆解、风险核验、替代解释和判断更新等分析主题。场景并非真实受害者个案。 ## 四类场景,各两例 diff --git a/docs/launch/README.md b/docs/launch/README.md index 5a47cac..6e0d190 100644 --- a/docs/launch/README.md +++ b/docs/launch/README.md @@ -1,6 +1,6 @@ -# 项目介绍与分享指南 +# RelationForge 项目介绍与分享指南 -本项目提供两个可独立安装的 Skill:`interaction-risk-analysis` 用于拆解诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 用于解读自述、个人介绍、选取的聊天/互动材料与虚构角色。两者都区分材料、解释和未知,不诊断人格或替用户决定。涉及催款、凭证或现实威胁时,先处理安全和财务风险。 +**RelationForge** 提供两个可独立安装的 Skill:`interaction-risk-analysis` 用于拆解诈骗、操控、胁迫、虐待和霸凌中的互动风险;`person-deep-analysis` 用于解读自述、个人介绍、选取的聊天/互动材料与虚构角色。两者都区分材料、解释和未知,不诊断人格或替用户决定。涉及催款、凭证或现实威胁时,先处理安全和财务风险。 面向读者的介绍可使用 [博客项目模块](blog-project-module.md),简短示例见 [分享素材](content-kit.md),完整入口和独立安装命令见 [项目 README](../../README.md)。 diff --git a/docs/launch/content-kit.md b/docs/launch/content-kit.md index fc3d4b9..b9a823e 100644 --- a/docs/launch/content-kit.md +++ b/docs/launch/content-kit.md @@ -1,4 +1,6 @@ -# 合成演示与分享素材 +# RelationForge 合成演示与分享素材 + +这些素材用于介绍 **RelationForge**:拆事实,看言行,辨风险,不替人定性。 人物、引语和场景均为虚构。分享时保留“合成示例”,不补充能让人误以为是真实个案的细节。 diff --git a/docs/research/github-comparable-projects.md b/docs/research/github-comparable-projects.md index 487f624..4841622 100644 --- a/docs/research/github-comparable-projects.md +++ b/docs/research/github-comparable-projects.md @@ -5,7 +5,7 @@ 本文件记录定向选出的 19 个仓库样本,不推断 GitHub 全站规模或总体分布。两个切片对应不同产品定位,不应简单理解为 19 个直接竞品。仓库内容会变化,结论应视为 2026-09-24 附近的查阅快照。 -> **历史资料提示:** 本文中的“当前”“本轮”均指各段落标注的 2026-09-24/25 研究时点,不代表现在的项目状态。旧名称、仓库 slug、测试数量和建议只作为决策记录保留。现在有两个独立运行时入口:[`interaction-risk-analysis`](../../skills/interaction-risk-analysis/SKILL.md) 与 [`person-deep-analysis`](../../skills/person-deep-analysis/SKILL.md);请以仓库 README 为准。 +> **历史资料提示:** 本文中的“当前”“本轮”均指各段落标注的 2026-09-24/25 研究时点,不代表现在的项目状态。旧名称、仓库 slug、测试数量和建议只作为决策记录保留。当前品牌为 **RelationForge**,现在有两个独立运行时入口:[`interaction-risk-analysis`](../../skills/interaction-risk-analysis/SKILL.md) 与 [`person-deep-analysis`](../../skills/person-deep-analysis/SKILL.md);请以仓库 README 为准。 ## 摘要 @@ -186,7 +186,7 @@ 3. **识骗防操控**:短而有行动感,读起来略像口号,品牌辨识度需再看。 4. **看清套路,守住选择**:最有人文感,适合作为标语;单独作为仓库名时用途不够直观。 -**当时的命名决定(已过期):** 采用“防骗与反操控”,Skill ID 为 `person-analysis`,仓库 slug 为 `evidence-based-person-analysis`。这些标识已被当前名称取代:**互动风险识别与解构 / `interaction-risk-analysis`**。 +**当时的命名决定(已过期):** 采用“防骗与反操控”,Skill ID 为 `person-analysis`,仓库 slug 为 `evidence-based-person-analysis`。这些标识已被当前品牌 **RelationForge** 及两个正式 Skill ID(`interaction-risk-analysis`、`person-deep-analysis`)取代。 ### 本轮查阅的一手仓库页面 diff --git a/docs/research/interaction-risk-skills-landscape.md b/docs/research/interaction-risk-skills-landscape.md index 379ab9e..169efaf 100644 --- a/docs/research/interaction-risk-skills-landscape.md +++ b/docs/research/interaction-risk-skills-landscape.md @@ -1,4 +1,4 @@ -# GitHub 上的互动风险分析相邻项目与命名评审 +# RelationForge:互动风险分析相邻项目与命名评审 调研日期:2026-09-25 问题:GitHub 社区有哪些人物/关系分析、诈骗识别与操控分析项目?当前项目应如何命名,才能覆盖不同互动风险并突出解构方法? @@ -39,7 +39,7 @@ GitHub 上确有相邻项目:有诈骗检测 Skill、关系/人物分析 Skill 4. **输出先解决受影响者的任务**:若资金或人身风险迫近,先保护安全、账户和后续转账;之后才在用户需要时解释人物/互动模式。避免危机中先给嫌疑人做长篇人格画像。 5. **保留主体性和反向用途边界**:用户可得出“证据不足,但我先不付款”;不需要接受 AI 的定性。拒绝生成诈骗话术、诱导策略、胁迫技巧、规避识别或报复方案。 -因此,“person-analysis”更适合作为**项目方法来源**,不适合作为唯一的面向用户的名称。单独使用它容易让人预期这是人格画像或关系画像;使用“防骗与反操控”又会弱化学校、职场及亲密关系霸凌等应用。`interaction-risk-analysis` 直指分析互动风险,能覆盖不同场景;中文展示名补足“识别与解构”的用户任务。 +因此,“person-analysis”更适合作为**历史方法来源**,不适合作为唯一的面向用户的名称。单独使用它容易让人预期这是人格画像或关系画像;使用“防骗与反操控”又会弱化学校、职场及亲密关系霸凌等应用。RelationForge 作为品牌覆盖人物材料与互动风险,两个 Skill ID 则分别说明具体任务。 > **品牌名:** RelationForge > **定位语:** Evidence-first reasoning for people, interactions, and risk diff --git a/evals/README.md b/evals/README.md index 2a91f09..1cccbee 100644 --- a/evals/README.md +++ b/evals/README.md @@ -2,7 +2,7 @@ ## 当前两个 Skill -运行时入口分别是 [`interaction-risk-analysis`](../skills/interaction-risk-analysis/SKILL.md) 和 [`person-deep-analysis`](../skills/person-deep-analysis/SKILL.md)。以下评估记录按各自运行时版本和 Skill ID 阅读。 +RelationForge 的运行时入口分别是 [`interaction-risk-analysis`](../skills/interaction-risk-analysis/SKILL.md) 和 [`person-deep-analysis`](../skills/person-deep-analysis/SKILL.md)。以下评估记录按各自运行时版本和 Skill ID 阅读。 `interaction-risk-cases.json` 定义 20 个拆解与安全场景;`interaction-risk-acceptance.md` 是逐例验收锚点。**这 20 例尚未使用当前 Skill ID `interaction-risk-analysis` 逐例运行。**旧 Skill ID `person-analysis` 下的宿主运行记录见[历史报告](results/2026-09-25-person-analysis-anti-fraud-acceptance.md),关于模型本身已有识别能力及新版解构方法的试跑见[方法评估](results/2026-09-25-decomposition-method-evaluation.md)。八个合成案例另有旧 ID 下普通 Codex / 显式 Skill 的配对输出,见 [`docs/demos/`](../docs/demos/README.md)。运行 `python3 scripts/validate_interaction_risk_evals.py` 检查案例结构。 diff --git a/skills/interaction-risk-analysis/SKILL.md b/skills/interaction-risk-analysis/SKILL.md index ce03b81..ebfc8b1 100644 --- a/skills/interaction-risk-analysis/SKILL.md +++ b/skills/interaction-risk-analysis/SKILL.md @@ -4,7 +4,7 @@ description: >- Use when someone wants to assess a suspicious interaction, relationship timeline, or repeated behavior involving possible scams, coercion, manipulation, abuse, or bullying. Keep analysis tied to evidence and observable effects, consider competing explanations and possible purposes, and preserve user-chosen verification or safety steps. Do not diagnose or state hidden motives as fact. --- -# Interaction Risk Analysis:互动风险识别与解构 +# RelationForge · 互动风险识别与解构 提供一套可复用的互动风险解构方法:从材料和事件出发,检查行为模式及其实际作用,提出有依据、可被反证的因果与目的假设,再把判断转成核验和应对选择。模型本身已有模式识别能力;Skill 的作用是让这些能力按可检查的步骤组织输出,而不是把模型直觉或标签当结论。主要用于诈骗、操控、胁迫、虐待和霸凌风险。 diff --git a/skills/interaction-risk-analysis/agents/openai.yaml b/skills/interaction-risk-analysis/agents/openai.yaml index fec4975..977431b 100644 --- a/skills/interaction-risk-analysis/agents/openai.yaml +++ b/skills/interaction-risk-analysis/agents/openai.yaml @@ -1,5 +1,5 @@ interface: - display_name: "互动风险识别与解构" + display_name: "RelationForge · 互动风险识别与解构" short_description: "拆解人物与互动线索,判断风险、核验证据、自己选下一步" default_prompt: "使用 $interaction-risk-analysis 解构这段互动:区分时间线、原话和行为、重复模式、实际效果、可能目的、不同解释、反证与未知;说明什么证据会改变判断,再给可选的核验和安全步骤,不要诊断或替我下结论。" policy: diff --git a/skills/person-deep-analysis/SKILL.md b/skills/person-deep-analysis/SKILL.md index d7c0017..0071275 100644 --- a/skills/person-deep-analysis/SKILL.md +++ b/skills/person-deep-analysis/SKILL.md @@ -4,7 +4,7 @@ description: >- Use when a user wants to analyze a self-description, profile, selected chat excerpts, interactions, or fictional characters while distinguishing evidence from interpretation; also use for possible romance/investment fraud, coercive relationship behavior, or explicitly requested multi-perspective reports. 当用户想分析自述、个人简介、选取的聊天片段、互动或虚构角色并区分证据与解释,或求助于疑似网恋/投资诈骗、胁迫控制,或明确要求多视角报告时使用;不用于诊断或替用户决定关系走向。 --- -# 人际深度解析 +# RelationForge · 人际深度解析 ## 目标与边界 diff --git a/skills/person-deep-analysis/agents/openai.yaml b/skills/person-deep-analysis/agents/openai.yaml index 7a4ff40..d539146 100644 --- a/skills/person-deep-analysis/agents/openai.yaml +++ b/skills/person-deep-analysis/agents/openai.yaml @@ -1,5 +1,5 @@ interface: - display_name: "人际深度解析" + display_name: "RelationForge · 人际深度解析" short_description: "Evidence-first analysis with optional psychology lenses" default_prompt: "使用 $person-deep-analysis 梳理材料明确表达了什么、有哪些解释和未知;如需多流派 Steelman 对照,请明确说明。" policy: