Skip to content

polish(skill): 优化 nexusx-4phase skill 文档结构与模板完整性#94

Open
allmonday wants to merge 9 commits into
masterfrom
006-skill-template-polish
Open

polish(skill): 优化 nexusx-4phase skill 文档结构与模板完整性#94
allmonday wants to merge 9 commits into
masterfrom
006-skill-template-polish

Conversation

@allmonday

Copy link
Copy Markdown
Collaborator

Summary

针对 skill/ 目录做结构化优化,解决上一轮代码评审识别的 14 处 P0/P1/P2 矛盾与缺口,让 skill 在使用过程中更平滑、对用户指令更友好。

  • 自洽性修复(P0):spec 路径单复数不一致(spec/specs/<编号>-*/)、argument-hint 非法 frontmatter 字段、模板 main.py 与 phase3 文档冲突、router/ 残留目录——全部闭环
  • 入口总览 + Phase 0 外置:SKILL.md 瘦身 330 → 142 行;新建 phases/phase0.md(240 行)承载完整 Step 0-1~0-8;SKILL.md 顶部新增 ## 适用版本(nexusx >= 3.2)+ ## 调用约定,让新人 5 分钟可入门
  • 模板完整性:补齐 service/user/{dtos,service,spec}.py(与 sprint/task 文件结构对等);测试统一迁到 tests/test_<domain>_methods.pyUserSummary 沉淀为单一来源被 task/dtos 引用
  • 决策引导清晰:phase3.md 重组为「推荐默认组合」(4) + 「可选扩展」(2) + 「决策引导」;虚拟实体 / 跨层数据流 / 3.0 MCP 迁移各补 10~20 行内联摘要(用户不点外链即可决策)
  • spec-management 工作流:新增 ## 语言要求(FR-008)与 ## 从旧结构迁移(FR-009,含 spec 编号保留规则与跳过 Phase 0 判定标准)

Changes

Skill 文档skill/

  • SKILL.md:删 argument-hint;新增适用版本 + 调用约定 + 阶段导航;Phase 0 整体迁出;项目结构段补 tests/;ASCII 框图路径简化
  • phases/phase0.md(新):Step 0-1~0-8 完整外置;Step 0-3 含虚拟实体 10 行内联摘要;末尾「老用户迭代」章节
  • phases/phase1~4.md:路径统一为 specs/<编号>-<需求简述>/phaseN.md;移除散落的「3.0 起 / 3.2+」版本门槛
  • phases/phase3.md:出口分级 + 跨层数据流摘要 + UseCase MCP 版本演进摘要
  • spec-management.md:新增 ## 语言要求 + ## 从旧结构迁移

Skill 模板skill/template/

  • src/service/user/{dtos,service,spec}.py(新):补齐与 sprint/task 对等的文件结构;UserServicelist_users + create_user
  • src/service/task/dtos.pyUserSummary 改为从 user/dtos 引用(单一来源,消除重复定义)
  • src/main.py:默认仅 REST + UseCase MCP + Voyager + GraphQL HTTP;JSON-RPC / CLI 注释化;base 实体层 MCP(create_mcp_server)加层级注释;注册 UserService
  • tests/(新):conftest.py(in-memory sqlite + monkey-patch session)+ 三 service 测试共 10 cases
  • pyproject.toml:新增 persist / persist-pg / persist-mysql optional 组;修复 persist-pg/persist-mysql self-reference(避免被解析为 PyPI persist 包,详见 code-review finding support basic graphql functions #1
  • 删除 src/router/(手写 router 残留)与 service/{sprint,task}/test.py(空占位)

Spec / Design artifacts

specs/006-skill-template-polish/:spec → clarify (5 决策) → plan → research → data-model → contracts/skill-interface → quickstart → tasks (38 项) → checklists (requirements + documentation) → baseline → vv-result。

Test plan

quickstart.md 全 6 组检查:

  • 检查 1 自洽性:5/5 子项 PASS(grep spec/phase 仅余 1 处迁移表的合理保留)
  • 检查 2 入口总览:phases/phase0.md 存在(240 行);SKILL.md 含 ## 适用版本 + ## 调用约定;散落版本门槛清理(phase1/2/4=0,phase3=1 合理保留)
  • 检查 3 模板可运行:uv sync --all-extras && uvicorn src.main:app 启动;/voyager/ / /graphql / /openapi.json / /api/user_service/list_users 全部 HTTP 200
  • 检查 4 测试位置与运行:pytest tests/10 passed(3 user + 3 sprint + 4 task,覆盖正常 + 边界场景)
  • 检查 5 核心概念自包含:虚拟实体 / 跨层数据流 / UseCase MCP 版本演进 内联摘要到位
  • 检查 6 spec-management 完整性:含 ## 语言要求 + ## 从旧结构迁移

/code-review medium 自检:

  • Finding support basic graphql functions #1 CONFIRMED 已修复(pyproject.toml self-reference,commit 86520ca);verifier 实测 uv sync --extra persist-pg 现装 alembic 1.18.5 + asyncpg,不再装 PyPI persist / zope-interface / six

  • Finding fix(demo): add missing dependency greenlet to demo group #2 PLAUSIBLE 接受为技术债(conftest 未 patch er._session_factory / Resolver / graphql_handler;当前 methods 层测试够用,已加注释标记)

  • 5 项 REFUTED 记录在 vv-result.md 防止重复发现

  • 请人工验证(自动化无法评测):

    • SC-001:有 FastAPI 基础但未用过 nexusx 的开发者,从打开 skill 到产出可运行 Phase 1 项目 ≤30 分钟
    • SC-004:抽 phase2.md 独立阅读,5 题理解度问题答对 ≥4

🤖 Generated with Claude Code

allmonday added 9 commits July 1, 2026 06:44
spec / clarify (5 决策) / plan / research / data-model / contracts /
quickstart / tasks (38 项) / checklists (requirements + documentation) /
baseline / vv-result。文档自洽性、模板完整性、决策引导清晰三个维度。
- SKILL.md:删除非法 argument-hint 字段;新增 ## 适用版本 (nexusx >= 3.2)
  与 ## 调用约定;spec/phase0.md 单数路径修正
- phases/phase1~4.md:所有 spec/phaseN.md 单数路径统一为
  specs/<编号>-<需求简述>/phaseN.md;移除散落的"3.0 起 / 3.2+"版本门槛,
  改为引用 SKILL.md 适用版本
- phase4.md:补 OpenAPI 端点实测 V 升验收项
- spec-management.md:新增 ## 语言要求 (FR-008) 与 ## 从旧结构迁移 (FR-009,
  含 spec 编号保留规则与跳过 Phase 0 的判定标准)
- service/user/{dtos,service,spec}.py:补齐与 sprint/task 对等的文件结构,
  UserService 含 list_users + create_user;UserSummary 作为单一来源被
  task/dtos.py 引用(消除重复定义)
- task/dtos.py:UserSummary 改为从 user/dtos 引用
- 删除 service/<domain>/test.py 空占位与 src/router/ 残留目录
- 新增 tests/ 目录:conftest.py (in-memory sqlite + monkey-patch 各
  methods 模块的 async_session) + 三个 service 测试共 10 cases
- main.py:默认仅 REST + UseCase MCP + Voyager + GraphQL HTTP;
  JSON-RPC / CLI 注释化;base 实体层 MCP (create_mcp_server) 加层级
  注释;注册 UserService 到 use_case_config 与 voyager
- pyproject.toml:新增 persist / persist-pg / persist-mysql optional 组

验证:uv sync --all-extras && uvicorn 启动 4 端点 200;pytest 10/10 通过
T029-T034 全 6 组检查结果:3 完全 PASS、2 PARTIAL(依赖 US2/US4)、
1 需人工评测(T035 SC-001/SC-004)。3 commit 检查点已落地。
- 新增 phases/phase0.md(240 行):从 SKILL.md 整体迁出 Phase 0 内容
  (Step 0-1~0-8),按二级标题分节;含 FR-012 双向引用 spec-management.md
  的"老用户迭代"章节;Step 0-3 内联虚拟实体 10 行摘要(FR-011)
- SKILL.md 瘦身 330 → 142 行:删除内联 Phase 0(200+ 行);阶段导航段
  改为外链 phases/phase0~4.md;ASCII 框图 spec/<phase>.md 改为 phaseN.md
  简写 + 注释完整路径;项目结构段去掉 service/<domain>/test.py,加 tests/
- spec-management.md 已有的"从旧结构迁移"和"跳过 Phase 0 判定标准"
  反向引用 phase0.md(双向闭环)
- UseCase 出口形态段重组为「推荐默认组合」(4 个:MCP / REST / Voyager /
  GraphQL HTTP)+「可选扩展」(2 个:JSON-RPC / CLI)+「决策引导」一段,
  让用户 1 分钟能选定组合(FR-005)
- 新增「UseCase MCP 版本演进」内联摘要(FR-011):当前推荐 / 已移除 /
  3 步迁移 / 拒绝内省 / 延伸阅读
- 扩展「跨层数据流」内联摘要(4 → 15 行):ExposeAs / SendTo / Collector
  各自典型场景 + 与 ORM Relationship 区别 + 何时用
直接写 ["persist", ...] 会被解析为 PyPI 包 persist(zope-interface 持久化库),
导致 uv sync --extra persist-pg 装到 PyPI persist + asyncpg 但跳过 alembic,
首次 alembic upgrade head 触发 ModuleNotFoundError。

修复:用项目名自引用本地 persist extra —— ["nexusx-template[persist]", ...]

verifier 实测复现并确认修复:persist-pg 现装 alembic==1.18.5 + asyncpg==0.31.0,
PyPI persist / six / zope-interface / pluggy 全清;pytest 10/10 回归通过。

Code-review finding #1 (CONFIRMED)。
- vv-result.md 新增 ## Code Review 结果(2026-07-01)段:
  - Finding #1 CONFIRMED 已修复(commit 86520ca)
  - Finding #2 PLAUSIBLE 接受为技术债
  - 5 项 REFUTED 记录防止重复发现
  - 关键代码定位供未来 review 复用
- tests/conftest.py 加注释列出未 patch 的 4 处绑定
  (er._session_factory / Resolver / graphql_handler / mcp),
  方便后续扩展到服务层测试时定位
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants