@mycodemap/mycodemap 0.4.2 → 0.5.0

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.
Files changed (120) hide show
  1. package/CHANGELOG.md +92 -3
  2. package/README.md +117 -46
  3. package/dist/ai/claude.d.ts +38 -0
  4. package/dist/ai/claude.d.ts.map +1 -0
  5. package/dist/ai/claude.js +169 -0
  6. package/dist/ai/claude.js.map +1 -0
  7. package/dist/ai/codex.d.ts +38 -0
  8. package/dist/ai/codex.d.ts.map +1 -0
  9. package/dist/ai/codex.js +169 -0
  10. package/dist/ai/codex.js.map +1 -0
  11. package/dist/ai/factory.d.ts +48 -0
  12. package/dist/ai/factory.d.ts.map +1 -0
  13. package/dist/ai/factory.js +95 -0
  14. package/dist/ai/factory.js.map +1 -0
  15. package/dist/ai/index.d.ts +12 -0
  16. package/dist/ai/index.d.ts.map +1 -0
  17. package/dist/ai/index.js +29 -0
  18. package/dist/ai/index.js.map +1 -0
  19. package/dist/ai/provider.d.ts +70 -0
  20. package/dist/ai/provider.d.ts.map +1 -0
  21. package/dist/ai/provider.js +31 -0
  22. package/dist/ai/provider.js.map +1 -0
  23. package/dist/ai/subagent-caller.d.ts +90 -0
  24. package/dist/ai/subagent-caller.d.ts.map +1 -0
  25. package/dist/ai/subagent-caller.js +280 -0
  26. package/dist/ai/subagent-caller.js.map +1 -0
  27. package/dist/ai/types.d.ts +70 -0
  28. package/dist/ai/types.d.ts.map +1 -0
  29. package/dist/ai/types.js +5 -0
  30. package/dist/ai/types.js.map +1 -0
  31. package/dist/cli/commands/design.d.ts +47 -0
  32. package/dist/cli/commands/design.d.ts.map +1 -0
  33. package/dist/cli/commands/design.js +268 -0
  34. package/dist/cli/commands/design.js.map +1 -0
  35. package/dist/cli/commands/server.d.ts +9 -0
  36. package/dist/cli/commands/server.d.ts.map +1 -0
  37. package/dist/cli/commands/server.js +65 -0
  38. package/dist/cli/commands/server.js.map +1 -0
  39. package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
  40. package/dist/cli/commands/ship/pipeline.js +8 -1
  41. package/dist/cli/commands/ship/pipeline.js.map +1 -1
  42. package/dist/cli/commands/ship/publisher.d.ts +9 -1
  43. package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
  44. package/dist/cli/commands/ship/publisher.js +149 -6
  45. package/dist/cli/commands/ship/publisher.js.map +1 -1
  46. package/dist/cli/design-contract-loader.d.ts +15 -0
  47. package/dist/cli/design-contract-loader.d.ts.map +1 -0
  48. package/dist/cli/design-contract-loader.js +175 -0
  49. package/dist/cli/design-contract-loader.js.map +1 -0
  50. package/dist/cli/design-contract-schema.d.ts +11 -0
  51. package/dist/cli/design-contract-schema.d.ts.map +1 -0
  52. package/dist/cli/design-contract-schema.js +75 -0
  53. package/dist/cli/design-contract-schema.js.map +1 -0
  54. package/dist/cli/design-handoff-builder.d.ts +15 -0
  55. package/dist/cli/design-handoff-builder.d.ts.map +1 -0
  56. package/dist/cli/design-handoff-builder.js +345 -0
  57. package/dist/cli/design-handoff-builder.js.map +1 -0
  58. package/dist/cli/design-scope-resolver.d.ts +8 -0
  59. package/dist/cli/design-scope-resolver.d.ts.map +1 -0
  60. package/dist/cli/design-scope-resolver.js +712 -0
  61. package/dist/cli/design-scope-resolver.js.map +1 -0
  62. package/dist/cli/design-verification-builder.d.ts +8 -0
  63. package/dist/cli/design-verification-builder.d.ts.map +1 -0
  64. package/dist/cli/design-verification-builder.js +369 -0
  65. package/dist/cli/design-verification-builder.js.map +1 -0
  66. package/dist/cli/index.js +2 -0
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli-new/commands/server.d.ts +13 -0
  69. package/dist/cli-new/commands/server.d.ts.map +1 -0
  70. package/dist/cli-new/commands/server.js +90 -0
  71. package/dist/cli-new/commands/server.js.map +1 -0
  72. package/dist/generator/ai-overview.d.ts +51 -0
  73. package/dist/generator/ai-overview.d.ts.map +1 -0
  74. package/dist/generator/ai-overview.js +160 -0
  75. package/dist/generator/ai-overview.js.map +1 -0
  76. package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
  77. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
  78. package/dist/infrastructure/storage/StorageFactory.js +55 -14
  79. package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
  80. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
  81. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  82. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
  83. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  84. package/dist/interface/types/design-contract.d.ts +68 -0
  85. package/dist/interface/types/design-contract.d.ts.map +1 -0
  86. package/dist/interface/types/design-contract.js +7 -0
  87. package/dist/interface/types/design-contract.js.map +1 -0
  88. package/dist/interface/types/design-handoff.d.ts +68 -0
  89. package/dist/interface/types/design-handoff.d.ts.map +1 -0
  90. package/dist/interface/types/design-handoff.js +4 -0
  91. package/dist/interface/types/design-handoff.js.map +1 -0
  92. package/dist/interface/types/design-mapping.d.ts +51 -0
  93. package/dist/interface/types/design-mapping.d.ts.map +1 -0
  94. package/dist/interface/types/design-mapping.js +4 -0
  95. package/dist/interface/types/design-mapping.js.map +1 -0
  96. package/dist/interface/types/design-verification.d.ts +49 -0
  97. package/dist/interface/types/design-verification.d.ts.map +1 -0
  98. package/dist/interface/types/design-verification.js +4 -0
  99. package/dist/interface/types/design-verification.js.map +1 -0
  100. package/dist/interface/types/index.d.ts +4 -0
  101. package/dist/interface/types/index.d.ts.map +1 -1
  102. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  103. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  104. package/dist/orchestrator/ai-feed-generator.js +377 -0
  105. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  106. package/docs/ai-guide/COMMANDS.md +73 -0
  107. package/docs/ai-guide/OUTPUT.md +415 -0
  108. package/docs/ai-guide/PATTERNS.md +14 -4
  109. package/docs/ai-guide/PROMPTS.md +12 -6
  110. package/docs/archive/test-report-symbol-search.md +384 -0
  111. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  112. package/docs/archive/test_report_scenario5.md +615 -0
  113. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  114. package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
  115. package/docs/product-specs/README.md +2 -1
  116. package/docs/rules/engineering-with-codex-openai.md +6 -2
  117. package/docs/rules/validation.md +9 -6
  118. package/package.json +1 -1
  119. package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
  120. package/scripts/validate-docs.js +247 -0
@@ -405,6 +405,421 @@ interface StructuredResult {
405
405
 
406
406
  ---
407
407
 
408
+ ## design validate 命令输出结构
409
+
410
+ ### JSON 输出 (--json)
411
+
412
+ ```typescript
413
+ type DesignContractSectionId =
414
+ | "goal"
415
+ | "constraints"
416
+ | "acceptanceCriteria"
417
+ | "nonGoals"
418
+ | "context"
419
+ | "openQuestions"
420
+ | "notes";
421
+
422
+ type DesignContractDiagnosticCode =
423
+ | "file-not-found"
424
+ | "missing-section"
425
+ | "duplicate-section"
426
+ | "empty-section"
427
+ | "unknown-section"
428
+ | "ambiguous-heading";
429
+
430
+ interface DesignValidateOutput {
431
+ ok: boolean;
432
+ exists: boolean;
433
+ filePath: string;
434
+ title?: string;
435
+ missingRequiredSections: Array<"goal" | "constraints" | "acceptanceCriteria" | "nonGoals">;
436
+ diagnostics: DesignContractDiagnostic[];
437
+ sections: Array<{
438
+ id: DesignContractSectionId;
439
+ title: string;
440
+ line: number;
441
+ itemCount: number;
442
+ }>;
443
+ }
444
+
445
+ interface DesignContractDiagnostic {
446
+ code: DesignContractDiagnosticCode;
447
+ severity: "error" | "warning" | "info";
448
+ message: string;
449
+ section?: DesignContractSectionId;
450
+ heading?: string;
451
+ line?: number;
452
+ suggestion?: string;
453
+ }
454
+ ```
455
+
456
+ ### 示例
457
+
458
+ ```json
459
+ {
460
+ "ok": false,
461
+ "exists": true,
462
+ "filePath": "/repo/mycodemap.design.md",
463
+ "title": "Design Contract: Missing acceptance example",
464
+ "missingRequiredSections": [
465
+ "acceptanceCriteria"
466
+ ],
467
+ "diagnostics": [
468
+ {
469
+ "code": "missing-section",
470
+ "severity": "error",
471
+ "message": "缺少必填 section: Acceptance Criteria",
472
+ "section": "acceptanceCriteria"
473
+ }
474
+ ],
475
+ "sections": [
476
+ {
477
+ "id": "goal",
478
+ "title": "Goal",
479
+ "line": 3,
480
+ "itemCount": 1
481
+ }
482
+ ]
483
+ }
484
+ ```
485
+
486
+ > `design validate --json` 必须保持纯 JSON;不要在前后拼接说明性 prose。
487
+
488
+ ---
489
+
490
+ ## design map 命令输出结构
491
+
492
+ ### JSON 输出 (--json)
493
+
494
+ ```typescript
495
+ type DesignMappingCandidateKind = "file" | "module" | "symbol";
496
+
497
+ type DesignMappingDiagnosticCode =
498
+ | "no-candidates"
499
+ | "over-broad-scope"
500
+ | "high-risk-scope"
501
+ | string;
502
+
503
+ interface DesignMappingReason {
504
+ section: DesignContractSectionId;
505
+ matchedText: string;
506
+ evidenceType: string;
507
+ }
508
+
509
+ interface DesignMappingCandidate {
510
+ kind: DesignMappingCandidateKind;
511
+ path: string;
512
+ moduleName?: string;
513
+ symbolName?: string;
514
+ reasons: DesignMappingReason[];
515
+ dependencies: string[];
516
+ testImpact: string[];
517
+ risk: "high" | "medium" | "low";
518
+ confidence: {
519
+ score: number;
520
+ level: "high" | "medium" | "low";
521
+ };
522
+ unknowns: string[];
523
+ }
524
+
525
+ interface DesignMappingDiagnostic {
526
+ code: DesignMappingDiagnosticCode;
527
+ severity: "error" | "warning" | "info";
528
+ blocker: boolean;
529
+ message: string;
530
+ candidatePaths?: string[];
531
+ }
532
+
533
+ interface DesignMapOutput {
534
+ ok: boolean;
535
+ filePath: string;
536
+ summary: {
537
+ candidateCount: number;
538
+ blocked: boolean;
539
+ unknownCount: number;
540
+ diagnosticCount: number;
541
+ };
542
+ candidates: DesignMappingCandidate[];
543
+ diagnostics: DesignMappingDiagnostic[];
544
+ }
545
+ ```
546
+
547
+ ### 示例
548
+
549
+ ```json
550
+ {
551
+ "ok": false,
552
+ "filePath": "/repo/mycodemap.design.md",
553
+ "summary": {
554
+ "candidateCount": 1,
555
+ "blocked": true,
556
+ "unknownCount": 0,
557
+ "diagnosticCount": 1
558
+ },
559
+ "candidates": [
560
+ {
561
+ "kind": "file",
562
+ "path": "src/cli/commands/analyze.ts",
563
+ "reasons": [
564
+ {
565
+ "section": "goal",
566
+ "matchedText": "src/cli/commands/analyze.ts",
567
+ "evidenceType": "path-anchor"
568
+ }
569
+ ],
570
+ "dependencies": [],
571
+ "testImpact": [],
572
+ "risk": "high",
573
+ "confidence": {
574
+ "score": 0.92,
575
+ "level": "high"
576
+ },
577
+ "unknowns": []
578
+ }
579
+ ],
580
+ "diagnostics": [
581
+ {
582
+ "code": "high-risk-scope",
583
+ "severity": "error",
584
+ "blocker": true,
585
+ "message": "候选范围命中了高 blast-radius 文件;请先补充更具体的 design scope,再继续执行。"
586
+ }
587
+ ]
588
+ }
589
+ ```
590
+
591
+ > `design map --json` 必须保持纯 JSON;不要在前后拼接说明性 prose。`unknowns` 与 `diagnostics` 都属于正式契约,不是可选注释。
592
+
593
+ ---
594
+
595
+ ## design handoff 命令输出结构
596
+
597
+ ### JSON 输出 (--json)
598
+
599
+ ```typescript
600
+ type DesignHandoffApprovalStatus = "approved" | "needs-review";
601
+
602
+ interface DesignHandoffTraceItem {
603
+ id: string;
604
+ text: string;
605
+ sourceRefs: string[];
606
+ }
607
+
608
+ interface DesignHandoffOutput {
609
+ ok: boolean;
610
+ filePath: string;
611
+ outputDir: string;
612
+ readyForExecution: boolean;
613
+ artifacts: {
614
+ markdownPath: string;
615
+ jsonPath: string;
616
+ };
617
+ summary: {
618
+ approvalCount: number;
619
+ assumptionCount: number;
620
+ openQuestionCount: number;
621
+ requiresReview: boolean;
622
+ };
623
+ handoff: {
624
+ touchedFiles: string[];
625
+ constraints: string[];
626
+ tests: string[];
627
+ approvals: Array<DesignHandoffTraceItem & {
628
+ status: DesignHandoffApprovalStatus;
629
+ }>;
630
+ assumptions: DesignHandoffTraceItem[];
631
+ openQuestions: DesignHandoffTraceItem[];
632
+ };
633
+ diagnostics: Array<{
634
+ code: "blocked-mapping" | "review-required" | string;
635
+ blocker: boolean;
636
+ message: string;
637
+ }>;
638
+ }
639
+ ```
640
+
641
+ ### 示例
642
+
643
+ ```json
644
+ {
645
+ "ok": true,
646
+ "filePath": "/repo/mycodemap.design.md",
647
+ "outputDir": "/repo/.mycodemap/handoffs",
648
+ "readyForExecution": false,
649
+ "artifacts": {
650
+ "markdownPath": "/repo/.mycodemap/handoffs/mycodemap.handoff.md",
651
+ "jsonPath": "/repo/.mycodemap/handoffs/mycodemap.handoff.json"
652
+ },
653
+ "summary": {
654
+ "approvalCount": 4,
655
+ "assumptionCount": 1,
656
+ "openQuestionCount": 1,
657
+ "requiresReview": true
658
+ },
659
+ "handoff": {
660
+ "touchedFiles": [
661
+ "src/cli/design-handoff-builder.ts"
662
+ ],
663
+ "constraints": [
664
+ "默认 artifact path 必须复用 src/cli/paths.ts"
665
+ ],
666
+ "tests": [
667
+ "src/cli/__tests__/design-handoff-builder.test.ts"
668
+ ],
669
+ "approvals": [
670
+ {
671
+ "id": "approved-goal",
672
+ "status": "approved",
673
+ "text": "Goal 已被纳入 handoff 事实输入",
674
+ "sourceRefs": ["design:goal"]
675
+ }
676
+ ],
677
+ "assumptions": [
678
+ {
679
+ "id": "assumption-1-1",
680
+ "text": "需要补充 reviewer 对未知范围的确认",
681
+ "sourceRefs": ["candidate:src/cli/design-handoff-builder.ts"]
682
+ }
683
+ ],
684
+ "openQuestions": [
685
+ {
686
+ "id": "open-question-1",
687
+ "text": "低风险 assumptions 是否也必须显式批准?",
688
+ "sourceRefs": ["design:openQuestions"]
689
+ }
690
+ ]
691
+ },
692
+ "diagnostics": [
693
+ {
694
+ "code": "review-required",
695
+ "blocker": false,
696
+ "message": "Handoff generated successfully but still requires human review before execution."
697
+ }
698
+ ]
699
+ }
700
+ ```
701
+
702
+ > `design handoff --json` 必须保持纯 JSON;`readyForExecution`、`approvals`、`assumptions`、`openQuestions` 都属于正式契约。human mode 默认写出 `.mycodemap/handoffs/{stem}.handoff.md|json`。
703
+
704
+ ---
705
+
706
+ ## design verify 命令输出结构
707
+
708
+ ### JSON 输出 (--json)
709
+
710
+ ```typescript
711
+ type DesignVerificationStatus =
712
+ | "satisfied"
713
+ | "needs-review"
714
+ | "violated"
715
+ | "blocked";
716
+
717
+ type DesignDriftKind =
718
+ | "scope-extra"
719
+ | "acceptance-unverified"
720
+ | "handoff-missing"
721
+ | "blocked-input";
722
+
723
+ interface DesignVerificationOutput {
724
+ ok: boolean;
725
+ filePath: string;
726
+ readyForExecution: boolean;
727
+ summary: {
728
+ checklistCount: number;
729
+ satisfiedCount: number;
730
+ needsReviewCount: number;
731
+ violatedCount: number;
732
+ blockedCount: number;
733
+ driftCount: number;
734
+ diagnosticCount: number;
735
+ reviewRequired: boolean;
736
+ blocked: boolean;
737
+ };
738
+ checklist: Array<{
739
+ id: string;
740
+ text: string;
741
+ status: DesignVerificationStatus;
742
+ evidenceRefs: string[];
743
+ }>;
744
+ drift: Array<{
745
+ kind: DesignDriftKind;
746
+ severity: "error" | "warning" | "info";
747
+ message: string;
748
+ sourceRefs: string[];
749
+ }>;
750
+ diagnostics: Array<{
751
+ code: "handoff-missing" | "handoff-invalid" | "blocked-input" | string;
752
+ blocker: boolean;
753
+ message: string;
754
+ sourceRefs: string[];
755
+ }>;
756
+ }
757
+ ```
758
+
759
+ ### 示例
760
+
761
+ ```json
762
+ {
763
+ "ok": true,
764
+ "filePath": "/repo/tests/fixtures/design-contracts/verify-ready.design.md",
765
+ "readyForExecution": false,
766
+ "summary": {
767
+ "checklistCount": 3,
768
+ "satisfiedCount": 1,
769
+ "needsReviewCount": 2,
770
+ "violatedCount": 0,
771
+ "blockedCount": 0,
772
+ "driftCount": 3,
773
+ "diagnosticCount": 1,
774
+ "reviewRequired": true,
775
+ "blocked": false
776
+ },
777
+ "checklist": [
778
+ {
779
+ "id": "acceptance-1",
780
+ "text": "src/cli/design-verification-builder.ts 会产出 conservative verification result",
781
+ "status": "satisfied",
782
+ "evidenceRefs": [
783
+ "candidate:src/cli/design-verification-builder.ts",
784
+ "diagnostic:handoff-missing"
785
+ ]
786
+ },
787
+ {
788
+ "id": "acceptance-2",
789
+ "text": "src/interface/types/design-verification.ts 会定义正式 verification schema",
790
+ "status": "needs-review",
791
+ "evidenceRefs": [
792
+ "design:acceptanceCriteria"
793
+ ]
794
+ }
795
+ ],
796
+ "drift": [
797
+ {
798
+ "kind": "handoff-missing",
799
+ "severity": "warning",
800
+ "message": "Canonical handoff artifact is missing, so verification remains review-needed even though a live handoff was rebuilt.",
801
+ "sourceRefs": [
802
+ "diagnostic:handoff-missing"
803
+ ]
804
+ }
805
+ ],
806
+ "diagnostics": [
807
+ {
808
+ "code": "handoff-missing",
809
+ "blocker": false,
810
+ "message": "Canonical handoff artifact is missing, so verification remains review-needed even though a live handoff was rebuilt.",
811
+ "sourceRefs": [
812
+ "diagnostic:handoff-missing"
813
+ ]
814
+ }
815
+ ]
816
+ }
817
+ ```
818
+
819
+ > `design verify --json` 必须保持纯 JSON;`checklist` 与 `drift` 都属于正式契约。`readyForExecution=false` 不等于 blocker,只有 `ok=false` 或 blocker diagnostics 才应返回非零 exit code。
820
+
821
+ ---
822
+
408
823
  ## impact 命令输出结构
409
824
 
410
825
  ### JSON 输出 (-j)
@@ -189,13 +189,25 @@ npm test
189
189
  **执行步骤**:
190
190
 
191
191
  ```bash
192
+ # Step 0: 如果任务来自人类设计,先校验 design contract
193
+ node dist/cli/index.js design validate mycodemap.design.md --json
194
+
195
+ # Step 0.5: 把 design contract 映射成 candidate code scope
196
+ node dist/cli/index.js design map mycodemap.design.md --json
197
+
198
+ # Step 0.75: 生成 reviewer / agent 共用的 handoff package
199
+ node dist/cli/index.js design handoff mycodemap.design.md --json
200
+
201
+ # Step 0.9: 基于 reviewed handoff truth 做 verification / drift 检查
202
+ node dist/cli/index.js design verify mycodemap.design.md --json
203
+
192
204
  # Step 1: 启动工作流
193
205
  node dist/cli/index.js workflow start "实现用户认证模块"
194
206
 
195
207
  # Step 2: 查看当前阶段建议
196
208
  node dist/cli/index.js workflow status
197
209
 
198
- # Step 3: 执行当前阶段的分析和实现
210
+ # Step 3: 执行当前阶段的分析(实现/提交/CI 不在 workflow phase 内)
199
211
 
200
212
  # Step 4: 完成阶段后推进
201
213
  node dist/cli/index.js workflow proceed
@@ -214,10 +226,8 @@ node dist/cli/index.js workflow checkpoint
214
226
  2. `read` - 阅读影响范围、复杂度与上下文
215
227
  3. `link` - 汇总依赖、引用与关联关系
216
228
  4. `show` - 生成概览、摘要与展示型结果
217
- 5. `commit` - 提交验证
218
- 6. `ci` - CI 验证
219
229
 
220
- > 说明:以上是当前公开实现,不代表最终收敛模型;如果只需要代码地图能力,优先使用前面几个核心分析模式。
230
+ > 说明:`workflow` 仍只保留 `find` / `read` / `link` / `show` 四阶段;如果任务由人类设计驱动,先走 `design validate → design map → design handoff → design verify` 固定输入、候选范围、review gate 与 drift 检查,再进入 workflow。
221
231
 
222
232
  ---
223
233
 
@@ -340,32 +340,38 @@
340
340
 
341
341
  请执行以下步骤:
342
342
 
343
- 1. **相关代码搜索**
343
+ 1. **先把设计写成可验证输入**
344
+ ```bash
345
+ cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
346
+ node dist/cli/index.js design validate mycodemap.design.md --json
347
+ ```
348
+
349
+ 2. **相关代码搜索**
344
350
  ```bash
345
351
  node dist/cli/index.js analyze -i find -k "{{RELATED_KEYWORD}}" --topK 10 --json
346
352
  ```
347
353
 
348
- 2. **参考现有实现**
354
+ 3. **参考现有实现**
349
355
  分析类似功能的实现方式
350
356
 
351
- 3. **确定实现位置**
357
+ 4. **确定实现位置**
352
358
  ```bash
353
359
  node dist/cli/index.js analyze -i read -t "候选目录" --json
354
360
  ```
355
361
  选择复杂度最低的模块
356
362
 
357
- 4. **影响分析**(如果需要修改现有代码)
363
+ 5. **影响分析**(如果需要修改现有代码)
358
364
  ```bash
359
365
  node dist/cli/index.js analyze -i read -t "目标文件" --json
360
366
  ```
361
367
 
362
- 5. **实现步骤**
368
+ 6. **实现步骤**
363
369
  - [ ] 创建新文件(添加 [META] [WHY] 头)
364
370
  - [ ] 实现核心功能
365
371
  - [ ] 添加单元测试
366
372
  - [ ] 运行测试验证
367
373
 
368
- 6. **验证**
374
+ 7. **验证**
369
375
  ```bash
370
376
  node dist/cli/index.js ci check-headers -f "新文件.ts"
371
377
  npm test