@colin4k1024/tsp 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -65,6 +65,7 @@ TSP 整合了多个社区开源框架的精华能力,而非从零构建:
65
65
  | **ECC** (Everything Claude Code) | 社区 | 125+ specialist skills、27 specialist agents、language rules packs、runtime hooks、安装工具链 |
66
66
  | **BMAD** | 方法来源(已吸收) | 单入口主链(`/team-help`)、Requirement Challenge、Design Review、Implementation Readiness、Story Slice、`artifact:persist` 落盘、Release→Closeout 收口 |
67
67
  | **Graphify** | 社区(`safishamsi/graphify`) | 可选知识图谱能力(brownfield 结构扫描、依赖路径分析、架构问答证据),以 runbook + 本地 skill 接入,不替换 workflow-engine |
68
+ | **GitNexus** | 社区(`abhigyanpatwari/GitNexus`) | 受控可选代码智能能力(MCP 查询、impact、detect_changes、多仓图谱证据),以 runbook + thin skill 接入,不内置依赖 |
68
69
  | **GSD** (Getting Shit Done) | 社区 | Quality Gates 分类法(4 类 gate)、wave-execution、session-continuity、discuss-phase、quick-execution、context-engineering、workflow-forensics |
69
70
  | **gstack** | 社区 | brainstorming 苏格拉底式创意探索、cross-model-review 跨模型交叉审查、multi-perspective-review 多视角评审(CEO/Design/Eng/DevEx) |
70
71
  | **Superpowers** | 社区 | session-continuity 会话暂停/恢复、subagent-driven-development 子 agent 驱动开发、git-worktree-isolation 任务隔离 |
@@ -72,6 +73,28 @@ TSP 整合了多个社区开源框架的精华能力,而非从零构建:
72
73
  | **rtk** (Rust Token Killer) | 社区 | CLI 代理透明命令重写,60-90% token 节约,100+ 命令支持(git/gh/cargo/npm/docker/kubectl/aws) |
73
74
  | 社区贡献 | 多方 | UI/UX Pro Max 设计系统、vertical workflow examples、Santa Method 对抗验证、Ralph RFC Pipeline |
74
75
 
76
+ ### 外部设计 skill 接入
77
+
78
+ TSP 当前支持把第三方设计 skill 作为外部扩展能力接入使用,其中 [huashu-design](https://github.com/alchaincyf/huashu-design) 是与本平台协同性较高的一项:它偏向高保真设计产出,覆盖 HTML 原生交互原型、浏览器演讲幻灯片、时间轴动画、信息图与 5 维度设计评审;TSP 则负责团队协作、角色分工、handoff、quality gate 与发布收口。
79
+
80
+ 推荐的组合方式是:让 TSP 管任务链路,让 huashu-design 管最终视觉和动效交付。典型场景包括:
81
+
82
+ - `frontend-engineer` 先在 TSP 流程内收敛页面目标、状态边界和验收标准,再调用 huashu-design 做高保真原型或动画样机。
83
+ - `tech-lead` / `qa-engineer` 在评审阶段把 huashu-design 产出的 HTML demo、deck 或动画作为 UI 证据补充到 review / release 资料里。
84
+ - `product-manager` / `architect` 在方案讨论阶段借助 huashu-design 的设计方向顾问、设计评审与 deck 产出,加速多方案对比。
85
+
86
+ 上游安装方式:
87
+
88
+ ```bash
89
+ npx skills add alchaincyf/huashu-design
90
+ ```
91
+
92
+ 当前仓库对 huashu-design 的接入是文档级集成,而不是内置分发:
93
+
94
+ - TSP 不会把 huashu-design 自动打包进 `skills/`、install profile、npm 包或 overlay 清单。
95
+ - 你需要单独从上游安装和更新该 skill,再在 TSP 任务流里按需调用。
96
+ - 由于上游 README 明确写明企业/商用/工具链集成需先获得授权,本仓库目前只提供接入说明与致谢,不 vendoring 上游 `SKILL.md`、assets、scripts 或 references。
97
+
75
98
  ### 核心依赖
76
99
 
77
100
  | 依赖 | 用途 |
@@ -172,6 +195,58 @@ TSP 整合了多个社区开源框架的精华能力,而非从零构建:
172
195
 
173
196
  完整矩阵见 [docs/runbooks/command-and-capability-matrix.md](docs/runbooks/command-and-capability-matrix.md) 和 [docs/runbooks/runtime-capabilities-overview.md](docs/runbooks/runtime-capabilities-overview.md)。
174
197
 
198
+ ## 致谢 / Acknowledgements
199
+
200
+ TSP 的公开能力是在多个社区项目、技能仓库和工程方法论的基础上吸收、裁剪和重组出来的。以下仓库是当前根 README 主叙事里直接引用或明确协同的社区 GitHub:
201
+
202
+ | 仓库 | 在 TSP 中的关系 | 说明 |
203
+ |------|------|------|
204
+ | [affaan-m/everything-claude-code](https://github.com/affaan-m/everything-claude-code) | 上游能力来源 | ECC harness layer、specialist agents、skills、runtime hooks 与安装工具链的重要参考来源 |
205
+ | [safishamsi/graphify](https://github.com/safishamsi/graphify) | 已吸收并本地化 | 为 brownfield 结构扫描、依赖路径分析与架构问答补充知识图谱能力 |
206
+ | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 受控可选接入 | 为 brownfield MCP 查询、impact、detect_changes 和多仓代码图谱证据提供外部能力;因许可证与 Node 20 要求,不内置依赖 |
207
+ | [rtk-ai/rtk](https://github.com/rtk-ai/rtk) | 已集成运行时能力 | CLI 透明命令重写与 token 优化能力来源 |
208
+ | [VoltAgent/awesome-design-md](https://github.com/VoltAgent/awesome-design-md) | 设计资产来源 | 为 `DESIGN.md` 品牌风格扩展提供参考品牌库 |
209
+ | [alchaincyf/huashu-design](https://github.com/alchaincyf/huashu-design) | 外部协同能力 | 提供高保真原型、HTML slides、动画与设计评审能力;当前仅做文档级接入说明,不内置分发 |
210
+
211
+ ### 已吸收并落地的外部能力来源
212
+
213
+ 以下上游项目已经通过 intake / runbook / skill 适配进入当前仓库的公开能力面;对应的采用边界、落地状态与本地化结果见 [docs/runbooks/external-capability-intake.md](docs/runbooks/external-capability-intake.md)。
214
+
215
+ | 分组 | 上游项目 | 当前在仓库中的落点 |
216
+ |------|------|------|
217
+ | 协作与行为技能 | [anthropics/skills](https://github.com/anthropics/skills), [Colin4k1024/andrej-karpathy-skills](https://github.com/Colin4k1024/andrej-karpathy-skills), [tanweai/pua](https://github.com/tanweai/pua), [obra/superpowers](https://github.com/obra/superpowers), [omkamal/pypict-claude-skill](https://github.com/omkamal/pypict-claude-skill), [testcontainers/testcontainers-java](https://github.com/testcontainers/testcontainers-java) | 浏览器 smoke、Karpathy 行为护栏、PUA 闭环、systematic debugging、pairwise-test-design、Testcontainers 集成测试 |
218
+ | PR、发布与 API 治理 | [qodo-ai/pr-agent](https://github.com/qodo-ai/pr-agent), [reviewdog/reviewdog](https://github.com/reviewdog/reviewdog), [reviewdog/action-eslint](https://github.com/reviewdog/action-eslint), [semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator), [semantic-release/semantic-release](https://github.com/semantic-release/semantic-release), [OpenAPITools/openapi-diff](https://github.com/OpenAPITools/openapi-diff), [stoplightio/spectral](https://github.com/stoplightio/spectral) | AI PR review、reviewdog 门禁、release notes 自动化、API breaking change / lint runbooks |
219
+ | 供应链、安全与 provenance | [actions/dependency-review-action](https://github.com/actions/dependency-review-action), [github/codeql-action](https://github.com/github/codeql-action), [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action), [ossf/scorecard-action](https://github.com/ossf/scorecard-action), [anchore/sbom-action](https://github.com/anchore/sbom-action), [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance), [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer), [slsa-framework/slsa-verifier](https://github.com/slsa-framework/slsa-verifier), [sigstore/policy-controller](https://github.com/sigstore/policy-controller), [pact-foundation/pact-jvm](https://github.com/pact-foundation/pact-jvm), [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator), [in-toto/attestation](https://github.com/in-toto/attestation), [in-toto/witness](https://github.com/in-toto/witness) | dependency review、CodeQL、Trivy、Scorecard、SBOM、attestation、签名、SLSA 验证、policy controller、contract testing 等发布前后治理 runbooks |
220
+ | 平台治理与基础设施门禁 | [renovatebot/renovate](https://github.com/renovatebot/renovate), [gitleaks/gitleaks](https://github.com/gitleaks/gitleaks), [step-security/harden-runner](https://github.com/step-security/harden-runner), [rhysd/actionlint](https://github.com/rhysd/actionlint), [zizmorcore/zizmor](https://github.com/zizmorcore/zizmor), [open-policy-agent/conftest](https://github.com/open-policy-agent/conftest), [bridgecrewio/checkov](https://github.com/bridgecrewio/checkov), [yannh/kubeconform](https://github.com/yannh/kubeconform), [GitHubSecurityLab/actions-permissions](https://github.com/GitHubSecurityLab/actions-permissions), [kyverno/kyverno](https://github.com/kyverno/kyverno), [helm-unittest/helm-unittest](https://github.com/helm-unittest/helm-unittest) | 依赖升级、secret scanning、runner hardening、workflow lint / audit、policy-as-code、IaC 校验、Kubernetes schema / policy / chart 测试 |
221
+
222
+ ### 技能与工具参考来源
223
+
224
+ 以下项目主要出现在 `skills/`、参考资料或配套文档中,作为具体 skill、范式、工具链或示例来源,同样在此统一致谢:
225
+
226
+ | 分组 | 上游项目 | 当前用途 |
227
+ |------|------|------|
228
+ | UI/UX 与设计智能 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | `ui-ux-promax` 的上游来源与方法库 |
229
+ | 测试与评估 | [google/googletest](https://github.com/google/googletest), [joaquinhuigomez/agent-eval](https://github.com/joaquinhuigomez/agent-eval) | C++ testing / GoogleTest 参考、agent evaluation 方法与任务评测参考 |
230
+ | 仓库分析与记忆 | [haibindev/repo-scan](https://github.com/haibindev/repo-scan), [sreedhargs89/context-keeper](https://github.com/sreedhargs89/context-keeper) | repo-scan、ck / context keeper 相关能力来源 |
231
+ | 多 agent 编排 | [humanplane](https://github.com/humanplane), [standardagents/dmux](https://github.com/standardagents/dmux) | RFC pipeline 分解思路、dmux 多 pane agent orchestration |
232
+ | Agent 开发框架与媒体参考 | [cloudwego/eino](https://github.com/cloudwego/eino), [cloudwego/eino-ext](https://github.com/cloudwego/eino-ext), [video-db/videodb-cookbook](https://github.com/video-db/videodb-cookbook) | ADK framework adapters 的 EINO 参考、VideoDB cookbook 示例 |
233
+
234
+ ### 全仓 README 与文档 GitHub 引用补充清单
235
+
236
+ 以下仓库同样出现在本仓库其他 `README*.md`、skill 文档或参考资料中,主要用于示例、教程、生态说明或补充参考。它们被纳入致谢归档,但不等于 TSP 的核心依赖或正式内置能力:
237
+
238
+ | 分组 | 仓库 | 主要出现位置 | 用途 |
239
+ |------|------|------|------|
240
+ | GoFrame 生态 | [gogf/gf](https://github.com/gogf/gf) | `skills/goframe-v2/examples/**/README*.MD` | GoFrame 框架本体及 contrib 模块引用 |
241
+ | GoFrame 示例 | [gogf/examples](https://github.com/gogf/examples) | `skills/goframe-v2/examples/**/README*.MD` | 示例仓库、教学与 clone 指引 |
242
+ | 依赖注入 | [samber/do](https://github.com/samber/do) | `skills/goframe-v2/examples/practices/injection/README*.MD` | DI 示例依赖 |
243
+ | JWT | [golang-jwt/jwt](https://github.com/golang-jwt/jwt) | `skills/goframe-v2/examples/httpserver/jwt/README*.MD` | JWT 认证示例依赖 |
244
+ | MongoDB | [mongodb/mongo-go-driver](https://github.com/mongodb/mongo-go-driver) | `skills/goframe-v2/examples/nosql/mongodb/README*.MD` | MongoDB 官方 Go 驱动参考 |
245
+ | Redis | [redis/go-redis](https://github.com/redis/go-redis) | `skills/goframe-v2/examples/nosql/redis/README*.MD` | Redis Go 客户端参考 |
246
+ | 服务治理 | [polarismesh/polaris](https://github.com/polarismesh/polaris) | `skills/goframe-v2/examples/config/polaris/README.MD` | Polaris 服务发现 / 配置生态参考 |
247
+
248
+ 如果后续有新的 README 引用了社区 GitHub 仓库,默认也应同步补入本节,保持主入口文档的致谢口径完整可追溯。
249
+
175
250
  ## BMAD 方法论(当前口径)
176
251
 
177
252
  当前仓库对 BMAD 的使用不是并行命令体系,而是吸收到 `/team-*` 主链中的执行方法。主链口径统一为:`/team-help -> challenge -> design -> readiness -> story-slice execute -> release -> closeout`。
@@ -190,12 +265,12 @@ TSP 整合了多个社区开源框架的精华能力,而非从零构建:
190
265
  - 文档生命周期字段用于明确责任与新鲜度:`doc_tier`、`owner`、`updated`、`last_verified`、`source_of_truth`。
191
266
  - 历史资料通过 `doc_tier: historical` 分层,避免与现行操作手册并列误用。
192
267
 
193
- ## 可选知识图谱能力(Graphify)
268
+ ## 可选知识图谱能力(Graphify + GitNexus
194
269
 
195
- - 定位:Graphify 作为可选能力用于 brownfield 结构认知,不替代 workflow-engine 或 `/team-*` 主链。
196
- - 入口:先执行 `npm run graphify:doctor` 做依赖检查,再按 [docs/runbooks/graphify-knowledge-graph-usage.md](docs/runbooks/graphify-knowledge-graph-usage.md) 执行 `build/query/path/explain`。
270
+ - 定位:Graphify 作为轻量结构证据层,GitNexus 作为受控可选代码智能层;两者都不替代 workflow-engine 或 `/team-*` 主链。
271
+ - 入口:Graphify 先执行 `npm run graphify:doctor`,GitNexus 先执行 `npm run gitnexus:doctor`;详细操作见 [graphify-knowledge-graph-usage.md](docs/runbooks/graphify-knowledge-graph-usage.md) [gitnexus-code-intelligence-usage.md](docs/runbooks/gitnexus-code-intelligence-usage.md)。
197
272
  - 分发:通过安装模块 `knowledge-graph` 与组件 `capability:knowledge-graph` 提供;仅默认纳入 `research` 与 `full` profile。
198
- - 治理边界:不在本仓库执行 `graphify codex install` `graphify claude install`,避免改写 AGENTS/hooks 契约。
273
+ - 治理边界:不在本仓库执行 Graphify/GitNexus 的自动 setup 类命令;GitNexus 不进入 TSP 依赖,且索引时必须保护既有 AGENTS/CLAUDE 契约。
199
274
 
200
275
  ## 近期新增功能(v2.0.0 → v2.3.0)
201
276
 
@@ -249,6 +324,8 @@ node scripts/install-apply.js uninstall --target claude # dry-run 默认
249
324
  node scripts/install-apply.js uninstall --target claude --apply
250
325
  ```
251
326
 
327
+ `enterprise overlay` 是公开仓保留的私有扩展入口;公开 npm 包不内置公司专属 skills、rules 或 profile。
328
+
252
329
  ### BMAD Absorption v2(v2.1.12)
253
330
 
254
331
  - `/team-help` 继续收口为 `/team-*` 唯一公开入口,不新增 `/bmad-*` 并行命令面
@@ -219,8 +219,8 @@ async function provisionBridge(packageRoot, installRoot, crateDir, dependencies
219
219
  ui.warn(
220
220
  `No bundled prebuilt binary found for ${plat}-${arch}.\n` +
221
221
  ` The npm package may have been published without prebuilt binaries.\n` +
222
- ` Try reinstalling: npx @colin4k1024/tsp-create@latest\n` +
223
- ` Or use source mode: npx @colin4k1024/tsp-create --from-source`
222
+ ` Try reinstalling: npx @colin4k1024/tsp@latest\n` +
223
+ ` Or use source mode: npx @colin4k1024/tsp --from-source`
224
224
  );
225
225
  ui.warn('Self-evolution hooks will run in passthrough mode until the binary is provisioned.');
226
226
  return null;
package/bin/tsp-create.js CHANGED
@@ -5,11 +5,11 @@
5
5
  * tsp-create — interactive npx installer for the Team Skills Platform.
6
6
  *
7
7
  * Usage:
8
- * npx @colin4k1024/tsp-create # interactive wizard
9
- * npx @colin4k1024/tsp-create --target claude --profile team
10
- * npx @colin4k1024/tsp-create --from-source # git clone mode
11
- * npx @colin4k1024/tsp-create --dry-run
12
- * npx @colin4k1024/tsp-create --help
8
+ * npx @colin4k1024/tsp # interactive wizard
9
+ * npx @colin4k1024/tsp --target claude --profile team
10
+ * npx @colin4k1024/tsp --from-source # git clone mode
11
+ * npx @colin4k1024/tsp --dry-run
12
+ * npx @colin4k1024/tsp --help
13
13
  */
14
14
 
15
15
  const ui = require('./lib/ui');
@@ -83,10 +83,10 @@ function showHelp(exitCode = 0) {
83
83
  ${ui.bold('tsp-create')} — Team Skills Platform interactive installer
84
84
 
85
85
  ${ui.bold('Usage:')}
86
- npx @colin4k1024/tsp-create Interactive wizard
87
- npx @colin4k1024/tsp-create --target claude --profile team
88
- npx @colin4k1024/tsp-create --from-source Clone from git
89
- npx @colin4k1024/tsp-create --dry-run Preview without writing
86
+ npx @colin4k1024/tsp Interactive wizard
87
+ npx @colin4k1024/tsp --target claude --profile team
88
+ npx @colin4k1024/tsp --from-source Clone from git
89
+ npx @colin4k1024/tsp --dry-run Preview without writing
90
90
 
91
91
  ${ui.bold('Options:')}
92
92
  --target <name> Target platform (${targetIds})
@@ -150,7 +150,7 @@ async function main() {
150
150
  const profileIds = formatInlineList(listPublicInstallProfiles().map((profile) => profile.id));
151
151
  ui.warn('stdin is not a TTY — the interactive wizard cannot run.');
152
152
  ui.info('Use non-interactive flags instead:');
153
- ui.info(' npx @colin4k1024/tsp-create --from-source --target claude --profile team');
153
+ ui.info(' npx @colin4k1024/tsp --from-source --target claude --profile team');
154
154
  ui.info(`Available targets: ${targetIds}`);
155
155
  ui.info(`Available profiles: ${profileIds}`);
156
156
  process.exit(1);
@@ -190,7 +190,7 @@ async function main() {
190
190
  const profileIds = formatInlineList(listPublicInstallProfiles().map((profile) => profile.id));
191
191
  ui.warn('stdin is not a TTY — the interactive wizard cannot run.');
192
192
  ui.info('Use non-interactive flags instead:');
193
- ui.info(' npx @colin4k1024/tsp-create --target claude --profile team');
193
+ ui.info(' npx @colin4k1024/tsp --target claude --profile team');
194
194
  ui.info('');
195
195
  ui.info(`Available targets: ${targetIds}`);
196
196
  ui.info(`Available profiles: ${profileIds}`);
@@ -34,8 +34,8 @@
34
34
  2. 默认以 `karpathy-guidelines` 的方式先暴露歧义、范围边界与更简单路径,不在入口阶段静默替用户补全高风险假设。
35
35
  3. 检查现有证据是否齐备:PRD、delivery-plan、arch-design、handoff、execute-log、test-plan、launch-acceptance、deployment-context、release-plan、closeout-summary,以及 `docs/memory/project-context.md`。
36
36
  4. 若任务边界清晰、影响面小、风险低,优先推荐 `/quick`;否则继续沿 `/team-*` 主链推进。
37
- 5. 若是既有项目(brownfield)且现状上下文不足,优先建议执行 `/update-codemaps` 并启用 `doc-architecture`,把现有模块、集成点、关键数据流和历史包袱回落到 `delivery-plan.md` / `arch-design.md`。
37
+ 5. 若是既有项目(brownfield)且现状上下文不足,优先建议执行 `/update-codemaps` 并启用 `doc-architecture`,需要轻量结构证据时选择 Graphify,需要跨模块影响面或 MCP 证据时选择 GitNexus,再把现有模块、集成点、关键数据流和历史包袱回落到 `delivery-plan.md` / `arch-design.md`。
38
38
  6. 若需求规模较大或涉及多角色并行,实现前先要求把计划切成可独立验收、可独立 handoff 的 story-sized execution units,并确认 `artifact:persist` 已创建对应任务目录与关键 artifact,再进入 `/team-execute`。
39
39
  7. 若缺少 PRD 或需求边界,推荐 `/team-intake`;若缺少 challenge、design review 或 implementation-readiness,推荐 `/team-plan`;若 readiness proof 与 handoff 齐备,推荐 `/team-execute`;若已完成实现与自测,推荐 `/team-review`;若已获得放行,推荐 `/team-release`;若发布观察窗口结束,推荐 `/team-closeout`。
40
- 8. 若是既有项目且上下文不足,提示先补齐 brownfield / doc-architecture 类上下文,再进入计划或执行。
40
+ 8. 若是既有项目且上下文不足,提示先补齐 brownfield / doc-architecture 类上下文;必要时用 Graphify 或 GitNexus 补图谱证据,再进入计划或执行。
41
41
  9. 输出结构化建议:推荐命令、原因、阻塞项、降级路径,并说明是否需要先运行 `npm run workflow:readiness`。
@@ -40,7 +40,7 @@
40
40
  2. 默认把 `karpathy-guidelines` 作为计划收口护栏:要求显式写出假设、更简单备选路径、当前不做项,以及为什么本轮范围已经足够。
41
41
  3. 按任务特征装配动态讨论分组,先讨论再收敛,避免未经质疑直接进入计划冻结。
42
42
  4. 若启用 `doc-architecture`,补齐 Service Catalog、Communication Matrix、NFR Summary,并明确其 artifact 回落位置。
43
- 5. 若是既有项目(brownfield),先梳理现有模块边界、外部依赖、历史约束和缺失文档;必要时运行 `/update-codemaps`,再把 brownfield snapshot 回落到 `delivery-plan.md` 与 `arch-design.md`。
43
+ 5. 若是既有项目(brownfield),先梳理现有模块边界、外部依赖、历史约束和缺失文档;必要时运行 `/update-codemaps`,需要轻量结构证据时选择 Graphify,需要跨模块影响面或 MCP 证据时选择 GitNexus,再把 brownfield snapshot 回落到 `delivery-plan.md` 与 `arch-design.md`。
44
44
  6. 若为企业内部应用,锁定应用等级、技术架构等级、关键组件偏离和资产入口要求,并判断是否必须输出 ADR。
45
45
  7. 为本次任务显式装配 shared 能力、ECC 增强与可选 enterprise overlay 组合,并说明哪些私有 overlay 能力、runbook 或 overlay 仅按场景启用。
46
46
  8. 若存在多参数、多角色、多配置或多终端组合,提前判断是否需要 `pairwise-test-design` 压缩测试矩阵。
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 用途
6
6
 
7
- 扫描代码结构并生成 token-lean codemaps,适合作为 brownfield 项目的现状快照与主链前置上下文。
7
+ 扫描代码结构并生成 token-lean codemaps,适合作为 brownfield 项目的现状快照与 Graphify / GitNexus 图谱分析前置上下文。
8
8
 
9
9
  ## 主责角色
10
10
 
@@ -21,6 +21,7 @@
21
21
  - docs/CODEMAPS/ 下的结构化 codemap
22
22
  - .reports/codemap-diff.txt 差异摘要
23
23
  - 可供 `/team-help` / `/team-plan` 消费的 brownfield context
24
+ - 可供 Graphify / GitNexus 继续深挖的结构化问题清单
24
25
 
25
26
  输出字段定义与交付结构见 [team-command-output-contracts.md](../docs/runbooks/team-command-output-contracts.md)。
26
27
 
@@ -29,4 +30,4 @@
29
30
  1. 先识别仓库类型、源码目录、入口文件和主要依赖边界。
30
31
  2. 为 architecture/backend/frontend/data/dependencies 生成 token-lean 文档,不写实现细节噪音。
31
32
  3. 若已有 codemap,先比较变更比例;超过阈值时要求人工确认再覆盖。
32
- 4. 把结果作为 brownfield context snapshot 的辅助输入,回落到 `delivery-plan.md` / `arch-design.md`,不要形成平行事实源。
33
+ 4. 把结果作为 brownfield context snapshot 的辅助输入;若需要图谱证据,再选择 Graphify 或 GitNexus,并把结论回落到 `delivery-plan.md` / `arch-design.md`,不要形成平行事实源。
@@ -140,7 +140,7 @@
140
140
  {
141
141
  "id": "capability:knowledge-graph",
142
142
  "family": "capability",
143
- "description": "Optional Graphify knowledge-graph capability for repository structure reasoning and dependency-path analysis.",
143
+ "description": "Optional Graphify and GitNexus code-graph capabilities for repository structure reasoning, dependency paths, and impact analysis.",
144
144
  "modules": [
145
145
  "knowledge-graph"
146
146
  ]
@@ -293,10 +293,12 @@
293
293
  {
294
294
  "id": "knowledge-graph",
295
295
  "kind": "skills",
296
- "description": "Optional Graphify-based knowledge graph capability for brownfield structure discovery, architecture Q&A, and evidence capture.",
296
+ "description": "Optional Graphify and GitNexus code-graph capabilities for brownfield structure discovery, architecture Q&A, impact analysis, and evidence capture.",
297
297
  "paths": [
298
298
  "skills/graphify",
299
- "docs/runbooks/graphify-knowledge-graph-usage.md"
299
+ "skills/gitnexus",
300
+ "docs/runbooks/graphify-knowledge-graph-usage.md",
301
+ "docs/runbooks/gitnexus-code-intelligence-usage.md"
300
302
  ],
301
303
  "targets": [
302
304
  "claude",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colin4k1024/tsp",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "Open-source Team Skills Platform for role-based AI delivery workflows, shared skills, hooks, commands, and multi-platform installs.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,6 +41,7 @@
41
41
  "validate:refs": "node scripts/validate-file-references.js --strict",
42
42
  "validate:docs-freshness": "node scripts/validate-doc-freshness.js",
43
43
  "graphify:doctor": "node scripts/graphify-preflight.js",
44
+ "gitnexus:doctor": "node scripts/gitnexus-preflight.js",
44
45
  "validate:skill-structure": "node scripts/validate-skill-structure.js",
45
46
  "validate:prebuilt": "node scripts/validate-prebuilt.js",
46
47
  "validate:tarball": "node scripts/validate-packed-tarball.js",
@@ -49,6 +50,7 @@
49
50
  "workflow:list": "node scripts/workflow-list.js",
50
51
  "workflow:help": "node scripts/workflow-help.js",
51
52
  "artifact:persist": "node scripts/artifact-persistence.js",
53
+ "project:progress": "node scripts/project-progress.js",
52
54
  "workflow:run": "node scripts/workflow-run.js",
53
55
  "workflow:runs": "node scripts/workflow-runs.js",
54
56
  "workflow:readiness": "node scripts/workflow-readiness.js",
@@ -0,0 +1,187 @@
1
+ #!/usr/bin/env node
2
+ 'use strict'
3
+
4
+ const { spawnSync } = require('child_process')
5
+
6
+ const MIN_NODE_MAJOR = 20
7
+ const PACKAGE_NAME = 'gitnexus'
8
+ const NPM_METADATA_TIMEOUT_MS = 8000
9
+
10
+ function run(command, args, options = {}) {
11
+ return spawnSync(command, args, {
12
+ encoding: 'utf8',
13
+ ...options,
14
+ })
15
+ }
16
+
17
+ function summarizeCommandFailure(result) {
18
+ if (result.error) {
19
+ return result.error.message
20
+ }
21
+
22
+ return `${result.stdout || ''}${result.stderr || ''}`
23
+ .split(/\r?\n/)
24
+ .map((line) => line.trim())
25
+ .filter(Boolean)
26
+ .slice(0, 4)
27
+ .join(' | ')
28
+ }
29
+
30
+ function parseNodeVersion(text) {
31
+ const match = String(text || '').trim().match(/^v?(\d+)\.(\d+)\.(\d+)/)
32
+ if (!match) {
33
+ return null
34
+ }
35
+
36
+ return {
37
+ major: Number(match[1]),
38
+ minor: Number(match[2]),
39
+ patch: Number(match[3]),
40
+ raw: `${match[1]}.${match[2]}.${match[3]}`,
41
+ }
42
+ }
43
+
44
+ function isNodeSupported(version) {
45
+ return Boolean(version && version.major >= MIN_NODE_MAJOR)
46
+ }
47
+
48
+ function detectCommand(command) {
49
+ const result = run(command, ['--version'])
50
+ if (result.error || result.status !== 0) {
51
+ return {
52
+ ok: false,
53
+ command,
54
+ output: result.error ? result.error.message : `${result.stdout || ''}${result.stderr || ''}`.trim(),
55
+ }
56
+ }
57
+
58
+ return {
59
+ ok: true,
60
+ command,
61
+ output: `${result.stdout || ''}${result.stderr || ''}`.trim(),
62
+ }
63
+ }
64
+
65
+ function parsePackageMetadata(rawJson) {
66
+ if (!rawJson) {
67
+ return null
68
+ }
69
+
70
+ const parsed = JSON.parse(rawJson)
71
+ return {
72
+ version: parsed.version || '(unknown)',
73
+ license: parsed.license || '(unknown)',
74
+ engines: parsed.engines || {},
75
+ }
76
+ }
77
+
78
+ function loadPackageMetadata() {
79
+ if (process.env.GITNEXUS_PREFLIGHT_NPM_VIEW_JSON) {
80
+ return {
81
+ ok: true,
82
+ source: 'env',
83
+ metadata: parsePackageMetadata(process.env.GITNEXUS_PREFLIGHT_NPM_VIEW_JSON),
84
+ }
85
+ }
86
+
87
+ const result = run('npm', ['view', PACKAGE_NAME, 'version', 'license', 'engines', '--json'], {
88
+ timeout: NPM_METADATA_TIMEOUT_MS,
89
+ })
90
+ if (result.error || result.status !== 0) {
91
+ return {
92
+ ok: false,
93
+ source: 'npm',
94
+ warning: summarizeCommandFailure(result),
95
+ }
96
+ }
97
+
98
+ try {
99
+ return {
100
+ ok: true,
101
+ source: 'npm',
102
+ metadata: parsePackageMetadata(result.stdout),
103
+ }
104
+ } catch (error) {
105
+ return {
106
+ ok: false,
107
+ source: 'npm',
108
+ warning: `Failed to parse npm metadata: ${error.message || error}`,
109
+ }
110
+ }
111
+ }
112
+
113
+ function main() {
114
+ console.log('GitNexus preflight check')
115
+ console.log('========================')
116
+
117
+ const nodeVersion = parseNodeVersion(process.env.GITNEXUS_PREFLIGHT_NODE_VERSION || process.version)
118
+ const npm = detectCommand('npm')
119
+ const npx = detectCommand('npx')
120
+ const packageInfo = loadPackageMetadata()
121
+ const warnings = []
122
+
123
+ let hasFailure = false
124
+
125
+ if (!nodeVersion) {
126
+ hasFailure = true
127
+ console.log(`- Node: unable to detect version (requires Node >= ${MIN_NODE_MAJOR})`)
128
+ } else if (!isNodeSupported(nodeVersion)) {
129
+ hasFailure = true
130
+ console.log(`- Node: ${nodeVersion.raw} (requires Node >= ${MIN_NODE_MAJOR})`)
131
+ } else {
132
+ console.log(`- Node: ${nodeVersion.raw} (ok)`)
133
+ }
134
+
135
+ if (!npm.ok) {
136
+ hasFailure = true
137
+ console.log('- npm: missing or unavailable')
138
+ } else {
139
+ console.log(`- npm: ${npm.output || 'available'} (ok)`)
140
+ }
141
+
142
+ if (!npx.ok) {
143
+ hasFailure = true
144
+ console.log('- npx: missing or unavailable')
145
+ } else {
146
+ console.log(`- npx: ${npx.output || 'available'} (ok)`)
147
+ }
148
+
149
+ if (packageInfo.ok && packageInfo.metadata) {
150
+ const engine = packageInfo.metadata.engines.node || '(not declared)'
151
+ console.log(`- GitNexus package: ${packageInfo.metadata.version} (license ${packageInfo.metadata.license}, node ${engine})`)
152
+ } else {
153
+ warnings.push(`Could not read npm metadata for ${PACKAGE_NAME}; continue only after checking the upstream license and engine manually.`)
154
+ if (packageInfo.warning) {
155
+ warnings.push(packageInfo.warning)
156
+ }
157
+ console.log('- GitNexus package: metadata unavailable (warning)')
158
+ }
159
+
160
+ if (warnings.length) {
161
+ console.log('\nWarnings:')
162
+ for (const warning of warnings) {
163
+ console.log(`- ${warning}`)
164
+ }
165
+ }
166
+
167
+ console.log('\nControlled integration boundaries:')
168
+ console.log('- GitNexus is optional and is not installed by TSP.')
169
+ console.log('- Review the upstream license before use; current npm metadata may report PolyForm-Noncommercial-1.0.0.')
170
+ console.log('- Do not run `gitnexus setup` automatically; it writes global editor/MCP configuration.')
171
+ console.log('- Do not run `gitnexus analyze` without `--skip-agents-md` in TSP-managed repositories.')
172
+
173
+ if (hasFailure) {
174
+ console.log('\nFix the failed checks before enabling GitNexus for a project.')
175
+ process.exit(1)
176
+ }
177
+
178
+ console.log('\nRecommended next commands:')
179
+ console.log('- npx --yes gitnexus@latest analyze --skip-agents-md')
180
+ console.log('- npx --yes gitnexus@latest status')
181
+ console.log('- npx --yes gitnexus@latest list')
182
+
183
+ console.log('\nManual MCP command:')
184
+ console.log('- npx --yes gitnexus@latest mcp')
185
+ }
186
+
187
+ main()
@@ -66,10 +66,10 @@
66
66
  "默认以 `karpathy-guidelines` 的方式先暴露歧义、范围边界与更简单路径,不在入口阶段静默替用户补全高风险假设。",
67
67
  "检查现有证据是否齐备:PRD、delivery-plan、arch-design、handoff、execute-log、test-plan、launch-acceptance、deployment-context、release-plan、closeout-summary,以及 `docs/memory/project-context.md`。",
68
68
  "若任务边界清晰、影响面小、风险低,优先推荐 `/quick`;否则继续沿 `/team-*` 主链推进。",
69
- "若是既有项目(brownfield)且现状上下文不足,优先建议执行 `/update-codemaps` 并启用 `doc-architecture`,把现有模块、集成点、关键数据流和历史包袱回落到 `delivery-plan.md` / `arch-design.md`。",
69
+ "若是既有项目(brownfield)且现状上下文不足,优先建议执行 `/update-codemaps` 并启用 `doc-architecture`,需要轻量结构证据时选择 Graphify,需要跨模块影响面或 MCP 证据时选择 GitNexus,再把现有模块、集成点、关键数据流和历史包袱回落到 `delivery-plan.md` / `arch-design.md`。",
70
70
  "若需求规模较大或涉及多角色并行,实现前先要求把计划切成可独立验收、可独立 handoff 的 story-sized execution units,并确认 `artifact:persist` 已创建对应任务目录与关键 artifact,再进入 `/team-execute`。",
71
71
  "若缺少 PRD 或需求边界,推荐 `/team-intake`;若缺少 challenge、design review 或 implementation-readiness,推荐 `/team-plan`;若 readiness proof 与 handoff 齐备,推荐 `/team-execute`;若已完成实现与自测,推荐 `/team-review`;若已获得放行,推荐 `/team-release`;若发布观察窗口结束,推荐 `/team-closeout`。",
72
- "若是既有项目且上下文不足,提示先补齐 brownfield / doc-architecture 类上下文,再进入计划或执行。",
72
+ "若是既有项目且上下文不足,提示先补齐 brownfield / doc-architecture 类上下文;必要时用 Graphify 或 GitNexus 补图谱证据,再进入计划或执行。",
73
73
  "输出结构化建议:推荐命令、原因、阻塞项、降级路径,并说明是否需要先运行 `npm run workflow:readiness`。"
74
74
  ]
75
75
  },
@@ -136,7 +136,7 @@
136
136
  "默认把 `karpathy-guidelines` 作为计划收口护栏:要求显式写出假设、更简单备选路径、当前不做项,以及为什么本轮范围已经足够。",
137
137
  "按任务特征装配动态讨论分组,先讨论再收敛,避免未经质疑直接进入计划冻结。",
138
138
  "若启用 `doc-architecture`,补齐 Service Catalog、Communication Matrix、NFR Summary,并明确其 artifact 回落位置。",
139
- "若是既有项目(brownfield),先梳理现有模块边界、外部依赖、历史约束和缺失文档;必要时运行 `/update-codemaps`,再把 brownfield snapshot 回落到 `delivery-plan.md` 与 `arch-design.md`。",
139
+ "若是既有项目(brownfield),先梳理现有模块边界、外部依赖、历史约束和缺失文档;必要时运行 `/update-codemaps`,需要轻量结构证据时选择 Graphify,需要跨模块影响面或 MCP 证据时选择 GitNexus,再把 brownfield snapshot 回落到 `delivery-plan.md` 与 `arch-design.md`。",
140
140
  "若为企业内部应用,锁定应用等级、技术架构等级、关键组件偏离和资产入口要求,并判断是否必须输出 ADR。",
141
141
  "为本次任务显式装配 shared 能力、ECC 增强与可选 enterprise overlay 组合,并说明哪些私有 overlay 能力、runbook 或 overlay 仅按场景启用。",
142
142
  "若存在多参数、多角色、多配置或多终端组合,提前判断是否需要 `pairwise-test-design` 压缩测试矩阵。",
@@ -468,7 +468,7 @@
468
468
  },
469
469
  {
470
470
  "name": "update-codemaps",
471
- "summary": "扫描代码结构并生成 token-lean codemaps,适合作为 brownfield 项目的现状快照与主链前置上下文。",
471
+ "summary": "扫描代码结构并生成 token-lean codemaps,适合作为 brownfield 项目的现状快照与 Graphify / GitNexus 图谱分析前置上下文。",
472
472
  "primary_role": "doc-updater",
473
473
  "inputs": [
474
474
  "代码仓结构",
@@ -478,13 +478,14 @@
478
478
  "outputs": [
479
479
  "docs/CODEMAPS/ 下的结构化 codemap",
480
480
  ".reports/codemap-diff.txt 差异摘要",
481
- "可供 `/team-help` / `/team-plan` 消费的 brownfield context"
481
+ "可供 `/team-help` / `/team-plan` 消费的 brownfield context",
482
+ "可供 Graphify / GitNexus 继续深挖的结构化问题清单"
482
483
  ],
483
484
  "steps": [
484
485
  "先识别仓库类型、源码目录、入口文件和主要依赖边界。",
485
486
  "为 architecture/backend/frontend/data/dependencies 生成 token-lean 文档,不写实现细节噪音。",
486
487
  "若已有 codemap,先比较变更比例;超过阈值时要求人工确认再覆盖。",
487
- "把结果作为 brownfield context snapshot 的辅助输入,回落到 `delivery-plan.md` / `arch-design.md`,不要形成平行事实源。"
488
+ "把结果作为 brownfield context snapshot 的辅助输入;若需要图谱证据,再选择 Graphify 或 GitNexus,并把结论回落到 `delivery-plan.md` / `arch-design.md`,不要形成平行事实源。"
488
489
  ]
489
490
  },
490
491
  {