asecli 0.6.2__tar.gz → 0.6.4__tar.gz

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 (208) hide show
  1. {asecli-0.6.2 → asecli-0.6.4}/.github/workflows/publish.yml +1 -0
  2. {asecli-0.6.2 → asecli-0.6.4}/PKG-INFO +51 -8
  3. {asecli-0.6.2 → asecli-0.6.4}/README.md +50 -7
  4. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/change-register.md +5 -1
  5. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/project-charter.md +1 -1
  6. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/supply-chain-policy.md +3 -3
  7. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/timeline.md +7 -0
  8. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/traceability.csv +8 -3
  9. {asecli-0.6.2 → asecli-0.6.4}/docs/01-architecture/module-map.md +6 -6
  10. {asecli-0.6.2 → asecli-0.6.4}/docs/01-architecture/project-architecture-and-requirements.md +3 -3
  11. {asecli-0.6.2 → asecli-0.6.4}/docs/01-architecture/technical-route.md +12 -3
  12. {asecli-0.6.2 → asecli-0.6.4}/docs/03-quality/bug-register.md +1 -0
  13. {asecli-0.6.2 → asecli-0.6.4}/docs/03-quality/regression-catalog.md +7 -3
  14. {asecli-0.6.2 → asecli-0.6.4}/docs/04-delivery/project-plan-task-charter.md +7 -2
  15. {asecli-0.6.2 → asecli-0.6.4}/pyproject.toml +2 -1
  16. {asecli-0.6.2 → asecli-0.6.4}/scripts/install.ps1 +7 -2
  17. {asecli-0.6.2 → asecli-0.6.4}/scripts/install.sh +6 -2
  18. {asecli-0.6.2 → asecli-0.6.4}/skills/asecli/SKILL.md +13 -0
  19. asecli-0.6.4/skills/asecli/references/conversion-workflow.md +41 -0
  20. {asecli-0.6.2 → asecli-0.6.4}/skills/asecli/references/layout-standard.md +5 -1
  21. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/__init__.py +1 -1
  22. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/editor_create.part00.cs.txt +4 -4
  23. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/editor_create.part01.cs.txt +3 -3
  24. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/editor_create.part02.cs.txt +3 -3
  25. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/editor_create.part03.cs.txt +2 -2
  26. asecli-0.6.4/src/asecli/cli/graph_review_command.py +25 -0
  27. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/layout_command.py +27 -1
  28. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/main.py +17 -21
  29. asecli-0.6.4/src/asecli/cli/skill_command.py +234 -0
  30. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/__init__.py +5 -0
  31. asecli-0.6.4/src/asecli/core/graph_review.py +104 -0
  32. asecli-0.6.4/src/asecli/core/island_layout.py +109 -0
  33. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/layout_audit.py +3 -3
  34. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/meticulous_layout.py +11 -0
  35. asecli-0.6.4/src/asecli/core/reuse_plan.py +46 -0
  36. {asecli-0.6.2 → asecli-0.6.4}/tests/test_editor_create_bridge.py +4 -1
  37. {asecli-0.6.2 → asecli-0.6.4}/tests/test_governance.py +1 -0
  38. asecli-0.6.4/tests/test_graph_review.py +100 -0
  39. {asecli-0.6.2 → asecli-0.6.4}/tests/test_install_scripts.py +4 -0
  40. asecli-0.6.4/tests/test_island_layout.py +60 -0
  41. {asecli-0.6.2 → asecli-0.6.4}/tests/test_layout_local_var_policy.py +14 -0
  42. asecli-0.6.4/tests/test_skill_install.py +198 -0
  43. asecli-0.6.4/tests/test_smoke.py +4 -0
  44. {asecli-0.6.2 → asecli-0.6.4}/tools/check_ci_governance.py +1 -0
  45. {asecli-0.6.2 → asecli-0.6.4}/uv.lock +1 -1
  46. asecli-0.6.2/src/asecli/cli/skill_command.py +0 -121
  47. asecli-0.6.2/tests/test_skill_install.py +0 -69
  48. asecli-0.6.2/tests/test_smoke.py +0 -4
  49. {asecli-0.6.2 → asecli-0.6.4}/.github/workflows/ci.yml +0 -0
  50. {asecli-0.6.2 → asecli-0.6.4}/.gitignore +0 -0
  51. {asecli-0.6.2 → asecli-0.6.4}/.project-architect.json +0 -0
  52. {asecli-0.6.2 → asecli-0.6.4}/AGENTS.md +0 -0
  53. {asecli-0.6.2 → asecli-0.6.4}/LICENSE +0 -0
  54. {asecli-0.6.2 → asecli-0.6.4}/SECURITY.md +0 -0
  55. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/audit-supplement.json +0 -0
  56. {asecli-0.6.2 → asecli-0.6.4}/docs/00-governance/delivery-protocol.md +0 -0
  57. {asecli-0.6.2 → asecli-0.6.4}/docs/01-architecture/assumption-experiments.md +0 -0
  58. {asecli-0.6.2 → asecli-0.6.4}/docs/03-quality/test-strategy.md +0 -0
  59. {asecli-0.6.2 → asecli-0.6.4}/docs/04-delivery/roadmap.md +0 -0
  60. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-014104-audit-report.md +0 -0
  61. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-014104-optimization-plan.md +0 -0
  62. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-145343-audit-report.md +0 -0
  63. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-145343-optimization-plan.md +0 -0
  64. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-193521-audit-report.md +0 -0
  65. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-193521-optimization-plan.md +0 -0
  66. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-203438-audit-report.md +0 -0
  67. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-01-203438-optimization-plan.md +0 -0
  68. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-02-121155-audit-report.md +0 -0
  69. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-02-121155-optimization-plan.md +0 -0
  70. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-02-175509-audit-report.md +0 -0
  71. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-02-175509-optimization-plan.md +0 -0
  72. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-142617-audit-report.md +0 -0
  73. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-142617-optimization-plan.md +0 -0
  74. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-160945-audit-report.md +0 -0
  75. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-160945-optimization-plan.md +0 -0
  76. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-213523-audit-report.md +0 -0
  77. {asecli-0.6.2 → asecli-0.6.4}/docs/adversarial-audits/2026-09-05-213523-optimization-plan.md +0 -0
  78. {asecli-0.6.2 → asecli-0.6.4}/docs/first-principles/2026-08-31-231401-optimization-plan.md +0 -0
  79. {asecli-0.6.2 → asecli-0.6.4}/docs/first-principles/2026-09-01-190656-optimization-plan.md +0 -0
  80. {asecli-0.6.2 → asecli-0.6.4}/skills/asecli/references/master-output-settings-standard.md +0 -0
  81. {asecli-0.6.2 → asecli-0.6.4}/skills/asecli/references/material-property-standard.md +0 -0
  82. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/__init__.py +0 -0
  83. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_editor_port_contract.py +0 -0
  84. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_editor_primitives.py +0 -0
  85. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_editor_spec_grammar.py +0 -0
  86. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_editor_spec_io.py +0 -0
  87. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_editor_spec_validation.py +0 -0
  88. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_gui_handoff_store.py +0 -0
  89. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_gui_project.py +0 -0
  90. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_gui_resource_store.py +0 -0
  91. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/_gui_resource_upgrade.py +0 -0
  92. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/editor_create.py +0 -0
  93. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/editor_spec.py +0 -0
  94. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/graph_geometry.py +0 -0
  95. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/graph_geometry_parser.py +0 -0
  96. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/graph_inspect.py +0 -0
  97. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_handoff.py +0 -0
  98. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_presentation.py +0 -0
  99. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_provider_detection.py +0 -0
  100. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_runtime_probe.py +0 -0
  101. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_support.py +0 -0
  102. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/gui_support_resource.py +0 -0
  103. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/mcp_client.py +0 -0
  104. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/recompile.py +0 -0
  105. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resource_text.py +0 -0
  106. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.authoring.part00.cs.txt +0 -0
  107. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.authoring.part01.cs.txt +0 -0
  108. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.authoring.store.cs.txt +0 -0
  109. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.condition.cs.txt +0 -0
  110. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.hydration.cs.txt +0 -0
  111. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.part00.cs.txt +0 -0
  112. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.part01.cs.txt +0 -0
  113. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.reconciliation.cs.txt +0 -0
  114. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/asecli_material_gui.transaction.cs.txt +0 -0
  115. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/editor_create.part04.cs.txt +0 -0
  116. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/resources/wire_route.transaction.cs.txt +0 -0
  117. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/bridge/wire_route.py +0 -0
  118. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/checks/__init__.py +0 -0
  119. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/checks/checksum.py +0 -0
  120. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/checks/local_vars.py +0 -0
  121. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/checks/usage.py +0 -0
  122. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/checks/validate.py +0 -0
  123. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/__init__.py +0 -0
  124. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/commands.py +0 -0
  125. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/commentary_command.py +0 -0
  126. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/create_command.py +0 -0
  127. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/custom_gui_command.py +0 -0
  128. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/gui_provider.py +0 -0
  129. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/gui_support_command.py +0 -0
  130. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/io.py +0 -0
  131. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/recompile_metadata.py +0 -0
  132. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/cli/usage_command.py +0 -0
  133. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/comment_bounds.py +0 -0
  134. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/comment_layout.py +0 -0
  135. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/comment_metrics.py +0 -0
  136. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/comment_purpose.py +0 -0
  137. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/commentary.py +0 -0
  138. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/compiled_metadata.py +0 -0
  139. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/compiled_properties.py +0 -0
  140. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/custom_gui.py +0 -0
  141. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/custom_gui_versions.py +0 -0
  142. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/fishbone_placement.py +0 -0
  143. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/fishbone_topology.py +0 -0
  144. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/graph_ops.py +0 -0
  145. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/layout.py +0 -0
  146. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/layout_audit_geometry.py +0 -0
  147. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/layout_audit_repeated.py +0 -0
  148. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/layout_graph.py +0 -0
  149. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/local_vars.py +0 -0
  150. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/material_gui_condition.py +0 -0
  151. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/material_gui_protocol.py +0 -0
  152. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/material_gui_spec.py +0 -0
  153. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/model.py +0 -0
  154. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/property_presentation.py +0 -0
  155. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/wire_geometry.py +0 -0
  156. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/core/wire_router.py +0 -0
  157. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/schema/__init__.py +0 -0
  158. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/schema/data/observed.json +0 -0
  159. {asecli-0.6.2 → asecli-0.6.4}/src/asecli/schema/data/schemas.json +0 -0
  160. {asecli-0.6.2 → asecli-0.6.4}/tests/TEST.md +0 -0
  161. {asecli-0.6.2 → asecli-0.6.4}/tests/__init__.py +0 -0
  162. {asecli-0.6.2 → asecli-0.6.4}/tests/conftest.py +0 -0
  163. {asecli-0.6.2 → asecli-0.6.4}/tests/editor_create_v3_fixture.py +0 -0
  164. {asecli-0.6.2 → asecli-0.6.4}/tests/fixtures/HLIT.shader +0 -0
  165. {asecli-0.6.2 → asecli-0.6.4}/tests/fixtures/asecli_material_gui_v0_2_0.cs.txt +0 -0
  166. {asecli-0.6.2 → asecli-0.6.4}/tests/fixtures/step-antialiasing.function.txt +0 -0
  167. {asecli-0.6.2 → asecli-0.6.4}/tests/test_adversarial_hardening.py +0 -0
  168. {asecli-0.6.2 → asecli-0.6.4}/tests/test_audit_fixes.py +0 -0
  169. {asecli-0.6.2 → asecli-0.6.4}/tests/test_bridge_contract.py +0 -0
  170. {asecli-0.6.2 → asecli-0.6.4}/tests/test_bridge_recompile.py +0 -0
  171. {asecli-0.6.2 → asecli-0.6.4}/tests/test_build_reproducibility.py +0 -0
  172. {asecli-0.6.2 → asecli-0.6.4}/tests/test_cli_contract.py +0 -0
  173. {asecli-0.6.2 → asecli-0.6.4}/tests/test_commentary.py +0 -0
  174. {asecli-0.6.2 → asecli-0.6.4}/tests/test_core_contract.py +0 -0
  175. {asecli-0.6.2 → asecli-0.6.4}/tests/test_create.py +0 -0
  176. {asecli-0.6.2 → asecli-0.6.4}/tests/test_custom_gui.py +0 -0
  177. {asecli-0.6.2 → asecli-0.6.4}/tests/test_custom_gui_cli.py +0 -0
  178. {asecli-0.6.2 → asecli-0.6.4}/tests/test_editor_create_cli.py +0 -0
  179. {asecli-0.6.2 → asecli-0.6.4}/tests/test_editor_create_e2e.py +0 -0
  180. {asecli-0.6.2 → asecli-0.6.4}/tests/test_editor_create_spec.py +0 -0
  181. {asecli-0.6.2 → asecli-0.6.4}/tests/test_editor_create_spec_v3.py +0 -0
  182. {asecli-0.6.2 → asecli-0.6.4}/tests/test_graph_safety.py +0 -0
  183. {asecli-0.6.2 → asecli-0.6.4}/tests/test_gui_handoff.py +0 -0
  184. {asecli-0.6.2 → asecli-0.6.4}/tests/test_gui_native_extension.py +0 -0
  185. {asecli-0.6.2 → asecli-0.6.4}/tests/test_gui_support.py +0 -0
  186. {asecli-0.6.2 → asecli-0.6.4}/tests/test_gui_support_cli_contract.py +0 -0
  187. {asecli-0.6.2 → asecli-0.6.4}/tests/test_gui_upgrade.py +0 -0
  188. {asecli-0.6.2 → asecli-0.6.4}/tests/test_layout.py +0 -0
  189. {asecli-0.6.2 → asecli-0.6.4}/tests/test_layout_governance.py +0 -0
  190. {asecli-0.6.2 → asecli-0.6.4}/tests/test_material_gui_e2e.py +0 -0
  191. {asecli-0.6.2 → asecli-0.6.4}/tests/test_mcp_security.py +0 -0
  192. {asecli-0.6.2 → asecli-0.6.4}/tests/test_mutate.py +0 -0
  193. {asecli-0.6.2 → asecli-0.6.4}/tests/test_perf.py +0 -0
  194. {asecli-0.6.2 → asecli-0.6.4}/tests/test_property_presentation.py +0 -0
  195. {asecli-0.6.2 → asecli-0.6.4}/tests/test_roundtrip.py +0 -0
  196. {asecli-0.6.2 → asecli-0.6.4}/tests/test_schema_add.py +0 -0
  197. {asecli-0.6.2 → asecli-0.6.4}/tests/test_schema_samples.py +0 -0
  198. {asecli-0.6.2 → asecli-0.6.4}/tests/test_supply_chain.py +0 -0
  199. {asecli-0.6.2 → asecli-0.6.4}/tests/test_usage_audit.py +0 -0
  200. {asecli-0.6.2 → asecli-0.6.4}/tests/test_wire_route_bridge.py +0 -0
  201. {asecli-0.6.2 → asecli-0.6.4}/tools/build_schema.py +0 -0
  202. {asecli-0.6.2 → asecli-0.6.4}/tools/check_document_governance.py +0 -0
  203. {asecli-0.6.2 → asecli-0.6.4}/tools/check_packed_executor_loc.py +0 -0
  204. {asecli-0.6.2 → asecli-0.6.4}/tools/check_regression_catalog.py +0 -0
  205. {asecli-0.6.2 → asecli-0.6.4}/tools/check_release_candidate.py +0 -0
  206. {asecli-0.6.2 → asecli-0.6.4}/tools/compare_build_artifacts.py +0 -0
  207. {asecli-0.6.2 → asecli-0.6.4}/tools/generate_sbom.py +0 -0
  208. {asecli-0.6.2 → asecli-0.6.4}/tools/supply_chain_check.py +0 -0
@@ -91,6 +91,7 @@ jobs:
91
91
 
92
92
  publish:
93
93
  needs: package
94
+ if: ${{ vars.ASECLI_PYPI_ENABLED == 'true' }}
94
95
  runs-on: ubuntu-latest
95
96
  environment:
96
97
  name: pypi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: asecli
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: Agent-native CLI for reading, modifying, validating and compiling Amplify Shader Editor assets
5
5
  Project-URL: Homepage, https://github.com/seeseeczl/ASECLI
6
6
  Project-URL: Repository, https://github.com/seeseeczl/ASECLI
@@ -63,7 +63,40 @@ Agent:设计节点图 → asecli 写文件 → 校验 → 触发编译 → 你
63
63
 
64
64
  ## 安装与运行
65
65
 
66
- macOS / Linux 一条命令:
66
+ 推荐通过 PyPI 安装 CLI 与 Agent Skill:
67
+
68
+ ```bash
69
+ uv tool install asecli
70
+ asecli install-skill --agent all
71
+ ```
72
+
73
+ `--agent all` 使用最少的非重复目录覆盖当前主流 Agent:
74
+
75
+ - `~/.agents/skills/asecli`:Codex、Cursor、Gemini CLI、GitHub Copilot。
76
+ - `~/.claude/skills/asecli`:Claude Code。
77
+
78
+ Skill 使用通用 `SKILL.md`、相对引用和 CLI 子进程,不依赖某一家 Agent 的专属工具 API。需要把 Skill 随仓库共享时,使用:
79
+
80
+ ```bash
81
+ asecli install-skill --agent all --scope project --project-root /path/to/project
82
+ ```
83
+
84
+ 项目级安装会写入 `<project>/.agents/skills/asecli` 与 `<project>/.claude/skills/asecli`。也可只安装一个原生目标:
85
+
86
+ | `--agent` | 用户级目录 | 项目级目录 |
87
+ | --- | --- | --- |
88
+ | `agents` | `~/.agents/skills` | `.agents/skills` |
89
+ | `codex` | `~/.agents/skills` | `.agents/skills` |
90
+ | `claude` | `~/.claude/skills` | `.claude/skills` |
91
+ | `cursor` | `~/.cursor/skills` | `.cursor/skills` |
92
+ | `gemini` | `~/.gemini/skills` | `.gemini/skills` |
93
+ | `copilot` | `~/.copilot/skills` | `.github/skills` |
94
+
95
+ 不带新参数的 `asecli install-skill` 继续安装到原有 Codex 用户目录,保证旧脚本兼容;`--skill-root DIR` 仍可精确指定任意 Skill 根目录。所有目标都保持同内容幂等、不同内容拒绝覆盖;`--agent all` 会先检查全部目标,发现内容冲突时不会先写入其他目录。
96
+
97
+ 目录矩阵依据各产品当前公开文档:[Codex](https://developers.openai.com/codex/skills)、[Claude Code](https://docs.anthropic.com/en/docs/claude-code/skills)、[Cursor](https://cursor.com/docs/context/skills)、[Gemini CLI](https://geminicli.com/docs/cli/skills/) 与 [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)。
98
+
99
+ 也可使用 GitHub Release 一键脚本同时安装 uv、CLI 与 Agent Skill。macOS / Linux:
67
100
 
68
101
  ```bash
69
102
  curl -fsSL https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.sh | sh
@@ -75,20 +108,30 @@ Windows PowerShell 一条命令:
75
108
  irm https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.ps1 | iex
76
109
  ```
77
110
 
78
- 脚本会安装 uv、当前 GitHub Release 的 `asecli`,以及 Agent Skill。Skill 装到 `$CODEX_HOME/skills/asecli`(未设置时为 `~/.codex/skills/asecli`);同内容幂等,已有不同内容时跳过覆盖。
111
+ 脚本会安装 uv、当前 GitHub Release 的 `asecli`,以及该版本支持的 Agent Skill。支持 `--agent` 的版本会采用上面的主流 Agent 通用安装;旧 Release 仍回退到原有 Codex 目录。同内容幂等,已有不同内容时跳过覆盖。
79
112
 
80
113
  升级与卸载:
81
114
 
82
115
  ```bash
116
+ # PyPI 安装的升级
83
117
  uv tool upgrade asecli
84
- asecli install-skill
118
+ asecli install-skill --agent all
119
+
120
+ # GitHub Release 一键安装的升级
121
+ curl -fsSL https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.sh | sh
122
+
123
+ # 卸载
85
124
  uv tool uninstall asecli
86
125
  ```
87
126
 
88
- 历史版本见 [GitHub Releases](https://github.com/seeseeczl/ASECLI/releases)。`v0.6.1`、`v0.6.0`、`v0.5.0`、`v0.4.2`、`v0.4.1`、`v0.4.0`、`v0.3.1`、`v0.3.0`、`v0.2.0` 与 `v0.1.0` 仍保留为不可变回滚点。
127
+ 当前正式版本为 `0.6.3`(跨 Agent Skill 安装与 MCP 方法体编译兼容修复),可从 [PyPI](https://pypi.org/project/asecli/0.6.3/) 或 [GitHub Release](https://github.com/seeseeczl/ASECLI/releases/tag/v0.6.3) 安装。历史版本见 [GitHub Releases](https://github.com/seeseeczl/ASECLI/releases),`v0.6.2` 保留为回滚点。
128
+
129
+ 已知限制:真实 MCP 下,属性+纹理 v2 和 Reciprocal 降级 v2 的 create、manifest、validate、独立 recompile 已通过;SGCLI SphereMask v3 spec 在重载时仍可能返回 `node missing after reload: Radius` 并回滚。本次不承诺该 recipe 端到端可用,也不改变 SGCLI v2 默认值契约。
89
130
 
90
131
  ### 源码开发运行
91
132
 
133
+ 工作区新增(尚未发布):转换后的现有 Shader 可用 `asecli graph-review <file> --baseline <backup.shader>` 保守核对计算基线;`--reuse-policy fanout` 显式选择按输出端口两次消费注册的只读计划,默认仍按消费组。`layout --mode meticulous --island-columns 3` 在鱼骨后整体摆放物理独立计算岛。该流程不从旧 JSON 重建图,也不自动创建 Register/Get;详见 [转换后交付流程](skills/asecli/references/conversion-workflow.md)。
134
+
92
135
  ```bash
93
136
  git clone https://github.com/seeseeczl/ASECLI.git
94
137
  cd ASECLI
@@ -205,7 +248,7 @@ asecli create Assets/NewEditorShader.shader --backend editor --spec graph.json
205
248
  | `layout <file> [--mode legacy\|meticulous] [--audit] [--write]` | `legacy` 保留原分层布局;`meticulous` 以 Output 为根递归展开上游子树,按输入端口顺序居中分布,并联动收紧 Comment。 | 默认仍为 `legacy` 且只预演。`meticulous` 单次连接 Editor 获取真实节点、标题栏和端口几何;硬门禁失败或几何缺失时不写盘。 |
206
249
  | `gui-support <project> [--runtime-probe] [--handoff-native] [--write]` | 优先检测并选用原生 MZGUI;原生环境只安装 authoring/条件置灰扩展,缺失时安装 fallback;原生后来加入时可恢复交接。 | 不创建第二个原生 provider;V2 枚举全部 provider;handoff 默认预演,只处理已知哈希并保留 authoring-only bridge,复验失败可恢复。 |
207
250
  | `custom-gui <file> [--node N \| --property P] … [--write]` | 查询/同步 CustomEditor;设置或清除 Foldout、Tooltip、用户 HelpBox 和由另一数值属性控制的置灰条件。 | 条件写为 `EnableIfMzgui(source,operator,value)`;不满足时只禁用控件,不清空材质值。`--clear-enabled-if` 可清除。 |
208
- | `install-skill [--skill-root DIR]` | 安装 wheel 内置的 ASECLI Agent Skill | 相同内容幂等;目标已有不同内容时拒绝覆盖,不修改 Shader、材质或 Unity/Tuanjie 工程。 |
251
+ | `install-skill [--agent A] [--scope user\|project] [--project-root DIR] [--skill-root DIR]` | wheel 内置的通用 ASECLI Agent Skill 安装到开放 `.agents` 目录或 Codex、Claude Code、Cursor、Gemini CLI、GitHub Copilot 原生目录。 | 无参数保持旧 Codex 目录;`all` 以两个非重复目标覆盖五类 Agent;相同内容幂等,任一冲突先整体拒绝,不修改 Shader、材质或 Unity/Tuanjie 工程。 |
209
252
  | `comment-group <file> [--nodes IDS --title T] … [--write]` | 查询、创建、嵌套 ASE 原生 Comment 框;可检查成员越框或重叠。 | 创建默认用离线尺寸估算。`--editor-bounds`、`--check-bounds`、`--fit` 需连接 Editor。 |
210
253
  | `create <out> --from TEMPLATE [--name NAME] [--graph-from DONOR]` | 复制一个已编译模板壳;可替换图或同步 Shader 名与 CHKSM。 | **立即创建/覆盖目标**;模板和 donor 组合后的文件必须已满足属性呈现契约,否则写前拒绝。 |
211
254
  | `create <out> --backend editor --spec graph.json` | 用白名单 `EditorGraphSpec v2/v3` 让 ASE 自身创建、保存和重载目标图。 | **立即请求 Editor 写入**;每个 Property 必填中文 `inspector_name` 和中文 `tooltip`,可选 `help` 写用户 HelpBox。v3 另支持版本化 primitive/recipe 与属性精度、默认值和范围。 |
@@ -551,11 +594,11 @@ uv run --frozen --python 3.12 python tools/check_regression_catalog.py
551
594
  2. Python 3.12 package:在 checkout 外双次构建 wheel/sdist,逐项比较可复现性。
552
595
  3. 产物:生成 `SHA256SUMS`、SPDX 2.3 SBOM、供应链检查结果;从生成 wheel 建立隔离虚拟环境并执行 `asecli parse` 冒烟验证。
553
596
 
554
- CI 通过只证明远端自动门禁通过。进入“已交付”还需要真实的 push run 链接、可下载 artifact 与 hash 核对、以及需要时的回滚观察。普通 push 不会发版。当前一键安装脚本使用最新 GitHub Release;PyPI Trusted Publishing 仍处于 CR-0023 的发布准备阶段,在完整 tag 门禁和首次公开发布验证完成前不作为当前可用入口。CLI Hub 仍不自动提交。
597
+ CI 通过只证明远端自动门禁通过。进入“已交付”还需要真实的 push run 链接、可下载 artifact 与 hash 核对、以及需要时的回滚观察。普通 push 不会发版。PyPI Trusted Publisher GitHub `pypi` environment 已激活,tag workflow 从同一份已校验 artifact 上传;GitHub 一键安装脚本继续使用最新 Release。CLI Hub 仍不自动提交。
555
598
 
556
599
  ### 供应链、许可证与密钥
557
600
 
558
- - 当前许可证为 MIT;源码公开,当前正式安装入口是上文的一键脚本及其使用的 GitHub Release wheel。PyPI 项目 `asecli` CR-0023 已批准但尚未发布的目标入口;CLI Hub 仍须单独书面授权。
601
+ - 当前许可证为 MIT;源码公开,正式安装入口为 PyPI `uv tool install asecli`,GitHub Release 一键脚本保留为安装 CLI 与 Skill 的完整入口。CLI Hub 不是当前分发入口,后续启用需要新的明确授权。
559
602
  - 当前生产运行时依赖为 0;新增运行时依赖、改许可证或改分发方式均是单独 CR,必须完成许可证与漏洞评估。
560
603
  - `uv.lock` 固定开发依赖的来源、版本和 SHA-256;CI 中所有 GitHub Actions 必须固定为 40 位 commit SHA。
561
604
  - `tools/supply_chain_check.py` 会检查 lock、Action pin、常见高置信密钥模式与许可证;`tools/generate_sbom.py` 生成 artifact 清单。离线检查不等同于真实漏洞数据库或 Dependabot 状态。
@@ -39,7 +39,40 @@ Agent:设计节点图 → asecli 写文件 → 校验 → 触发编译 → 你
39
39
 
40
40
  ## 安装与运行
41
41
 
42
- macOS / Linux 一条命令:
42
+ 推荐通过 PyPI 安装 CLI 与 Agent Skill:
43
+
44
+ ```bash
45
+ uv tool install asecli
46
+ asecli install-skill --agent all
47
+ ```
48
+
49
+ `--agent all` 使用最少的非重复目录覆盖当前主流 Agent:
50
+
51
+ - `~/.agents/skills/asecli`:Codex、Cursor、Gemini CLI、GitHub Copilot。
52
+ - `~/.claude/skills/asecli`:Claude Code。
53
+
54
+ Skill 使用通用 `SKILL.md`、相对引用和 CLI 子进程,不依赖某一家 Agent 的专属工具 API。需要把 Skill 随仓库共享时,使用:
55
+
56
+ ```bash
57
+ asecli install-skill --agent all --scope project --project-root /path/to/project
58
+ ```
59
+
60
+ 项目级安装会写入 `<project>/.agents/skills/asecli` 与 `<project>/.claude/skills/asecli`。也可只安装一个原生目标:
61
+
62
+ | `--agent` | 用户级目录 | 项目级目录 |
63
+ | --- | --- | --- |
64
+ | `agents` | `~/.agents/skills` | `.agents/skills` |
65
+ | `codex` | `~/.agents/skills` | `.agents/skills` |
66
+ | `claude` | `~/.claude/skills` | `.claude/skills` |
67
+ | `cursor` | `~/.cursor/skills` | `.cursor/skills` |
68
+ | `gemini` | `~/.gemini/skills` | `.gemini/skills` |
69
+ | `copilot` | `~/.copilot/skills` | `.github/skills` |
70
+
71
+ 不带新参数的 `asecli install-skill` 继续安装到原有 Codex 用户目录,保证旧脚本兼容;`--skill-root DIR` 仍可精确指定任意 Skill 根目录。所有目标都保持同内容幂等、不同内容拒绝覆盖;`--agent all` 会先检查全部目标,发现内容冲突时不会先写入其他目录。
72
+
73
+ 目录矩阵依据各产品当前公开文档:[Codex](https://developers.openai.com/codex/skills)、[Claude Code](https://docs.anthropic.com/en/docs/claude-code/skills)、[Cursor](https://cursor.com/docs/context/skills)、[Gemini CLI](https://geminicli.com/docs/cli/skills/) 与 [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)。
74
+
75
+ 也可使用 GitHub Release 一键脚本同时安装 uv、CLI 与 Agent Skill。macOS / Linux:
43
76
 
44
77
  ```bash
45
78
  curl -fsSL https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.sh | sh
@@ -51,20 +84,30 @@ Windows PowerShell 一条命令:
51
84
  irm https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.ps1 | iex
52
85
  ```
53
86
 
54
- 脚本会安装 uv、当前 GitHub Release 的 `asecli`,以及 Agent Skill。Skill 装到 `$CODEX_HOME/skills/asecli`(未设置时为 `~/.codex/skills/asecli`);同内容幂等,已有不同内容时跳过覆盖。
87
+ 脚本会安装 uv、当前 GitHub Release 的 `asecli`,以及该版本支持的 Agent Skill。支持 `--agent` 的版本会采用上面的主流 Agent 通用安装;旧 Release 仍回退到原有 Codex 目录。同内容幂等,已有不同内容时跳过覆盖。
55
88
 
56
89
  升级与卸载:
57
90
 
58
91
  ```bash
92
+ # PyPI 安装的升级
59
93
  uv tool upgrade asecli
60
- asecli install-skill
94
+ asecli install-skill --agent all
95
+
96
+ # GitHub Release 一键安装的升级
97
+ curl -fsSL https://raw.githubusercontent.com/seeseeczl/ASECLI/main/scripts/install.sh | sh
98
+
99
+ # 卸载
61
100
  uv tool uninstall asecli
62
101
  ```
63
102
 
64
- 历史版本见 [GitHub Releases](https://github.com/seeseeczl/ASECLI/releases)。`v0.6.1`、`v0.6.0`、`v0.5.0`、`v0.4.2`、`v0.4.1`、`v0.4.0`、`v0.3.1`、`v0.3.0`、`v0.2.0` 与 `v0.1.0` 仍保留为不可变回滚点。
103
+ 当前正式版本为 `0.6.3`(跨 Agent Skill 安装与 MCP 方法体编译兼容修复),可从 [PyPI](https://pypi.org/project/asecli/0.6.3/) 或 [GitHub Release](https://github.com/seeseeczl/ASECLI/releases/tag/v0.6.3) 安装。历史版本见 [GitHub Releases](https://github.com/seeseeczl/ASECLI/releases),`v0.6.2` 保留为回滚点。
104
+
105
+ 已知限制:真实 MCP 下,属性+纹理 v2 和 Reciprocal 降级 v2 的 create、manifest、validate、独立 recompile 已通过;SGCLI SphereMask v3 spec 在重载时仍可能返回 `node missing after reload: Radius` 并回滚。本次不承诺该 recipe 端到端可用,也不改变 SGCLI v2 默认值契约。
65
106
 
66
107
  ### 源码开发运行
67
108
 
109
+ 工作区新增(尚未发布):转换后的现有 Shader 可用 `asecli graph-review <file> --baseline <backup.shader>` 保守核对计算基线;`--reuse-policy fanout` 显式选择按输出端口两次消费注册的只读计划,默认仍按消费组。`layout --mode meticulous --island-columns 3` 在鱼骨后整体摆放物理独立计算岛。该流程不从旧 JSON 重建图,也不自动创建 Register/Get;详见 [转换后交付流程](skills/asecli/references/conversion-workflow.md)。
110
+
68
111
  ```bash
69
112
  git clone https://github.com/seeseeczl/ASECLI.git
70
113
  cd ASECLI
@@ -181,7 +224,7 @@ asecli create Assets/NewEditorShader.shader --backend editor --spec graph.json
181
224
  | `layout <file> [--mode legacy\|meticulous] [--audit] [--write]` | `legacy` 保留原分层布局;`meticulous` 以 Output 为根递归展开上游子树,按输入端口顺序居中分布,并联动收紧 Comment。 | 默认仍为 `legacy` 且只预演。`meticulous` 单次连接 Editor 获取真实节点、标题栏和端口几何;硬门禁失败或几何缺失时不写盘。 |
182
225
  | `gui-support <project> [--runtime-probe] [--handoff-native] [--write]` | 优先检测并选用原生 MZGUI;原生环境只安装 authoring/条件置灰扩展,缺失时安装 fallback;原生后来加入时可恢复交接。 | 不创建第二个原生 provider;V2 枚举全部 provider;handoff 默认预演,只处理已知哈希并保留 authoring-only bridge,复验失败可恢复。 |
183
226
  | `custom-gui <file> [--node N \| --property P] … [--write]` | 查询/同步 CustomEditor;设置或清除 Foldout、Tooltip、用户 HelpBox 和由另一数值属性控制的置灰条件。 | 条件写为 `EnableIfMzgui(source,operator,value)`;不满足时只禁用控件,不清空材质值。`--clear-enabled-if` 可清除。 |
184
- | `install-skill [--skill-root DIR]` | 安装 wheel 内置的 ASECLI Agent Skill | 相同内容幂等;目标已有不同内容时拒绝覆盖,不修改 Shader、材质或 Unity/Tuanjie 工程。 |
227
+ | `install-skill [--agent A] [--scope user\|project] [--project-root DIR] [--skill-root DIR]` | wheel 内置的通用 ASECLI Agent Skill 安装到开放 `.agents` 目录或 Codex、Claude Code、Cursor、Gemini CLI、GitHub Copilot 原生目录。 | 无参数保持旧 Codex 目录;`all` 以两个非重复目标覆盖五类 Agent;相同内容幂等,任一冲突先整体拒绝,不修改 Shader、材质或 Unity/Tuanjie 工程。 |
185
228
  | `comment-group <file> [--nodes IDS --title T] … [--write]` | 查询、创建、嵌套 ASE 原生 Comment 框;可检查成员越框或重叠。 | 创建默认用离线尺寸估算。`--editor-bounds`、`--check-bounds`、`--fit` 需连接 Editor。 |
186
229
  | `create <out> --from TEMPLATE [--name NAME] [--graph-from DONOR]` | 复制一个已编译模板壳;可替换图或同步 Shader 名与 CHKSM。 | **立即创建/覆盖目标**;模板和 donor 组合后的文件必须已满足属性呈现契约,否则写前拒绝。 |
187
230
  | `create <out> --backend editor --spec graph.json` | 用白名单 `EditorGraphSpec v2/v3` 让 ASE 自身创建、保存和重载目标图。 | **立即请求 Editor 写入**;每个 Property 必填中文 `inspector_name` 和中文 `tooltip`,可选 `help` 写用户 HelpBox。v3 另支持版本化 primitive/recipe 与属性精度、默认值和范围。 |
@@ -527,11 +570,11 @@ uv run --frozen --python 3.12 python tools/check_regression_catalog.py
527
570
  2. Python 3.12 package:在 checkout 外双次构建 wheel/sdist,逐项比较可复现性。
528
571
  3. 产物:生成 `SHA256SUMS`、SPDX 2.3 SBOM、供应链检查结果;从生成 wheel 建立隔离虚拟环境并执行 `asecli parse` 冒烟验证。
529
572
 
530
- CI 通过只证明远端自动门禁通过。进入“已交付”还需要真实的 push run 链接、可下载 artifact 与 hash 核对、以及需要时的回滚观察。普通 push 不会发版。当前一键安装脚本使用最新 GitHub Release;PyPI Trusted Publishing 仍处于 CR-0023 的发布准备阶段,在完整 tag 门禁和首次公开发布验证完成前不作为当前可用入口。CLI Hub 仍不自动提交。
573
+ CI 通过只证明远端自动门禁通过。进入“已交付”还需要真实的 push run 链接、可下载 artifact 与 hash 核对、以及需要时的回滚观察。普通 push 不会发版。PyPI Trusted Publisher GitHub `pypi` environment 已激活,tag workflow 从同一份已校验 artifact 上传;GitHub 一键安装脚本继续使用最新 Release。CLI Hub 仍不自动提交。
531
574
 
532
575
  ### 供应链、许可证与密钥
533
576
 
534
- - 当前许可证为 MIT;源码公开,当前正式安装入口是上文的一键脚本及其使用的 GitHub Release wheel。PyPI 项目 `asecli` CR-0023 已批准但尚未发布的目标入口;CLI Hub 仍须单独书面授权。
577
+ - 当前许可证为 MIT;源码公开,正式安装入口为 PyPI `uv tool install asecli`,GitHub Release 一键脚本保留为安装 CLI 与 Skill 的完整入口。CLI Hub 不是当前分发入口,后续启用需要新的明确授权。
535
578
  - 当前生产运行时依赖为 0;新增运行时依赖、改许可证或改分发方式均是单独 CR,必须完成许可证与漏洞评估。
536
579
  - `uv.lock` 固定开发依赖的来源、版本和 SHA-256;CI 中所有 GitHub Actions 必须固定为 40 位 commit SHA。
537
580
  - `tools/supply_chain_check.py` 会检查 lock、Action pin、常见高置信密钥模式与许可证;`tools/generate_sbom.py` 生成 artifact 清单。离线检查不等同于真实漏洞数据库或 Dependabot 状态。
@@ -38,5 +38,9 @@ evidence: [docs/05-audits/2026-09-01-122217-optimization-tasks.md]
38
38
  | CR-0022 | 将许可证改为 MIT,并把 GitHub 仓库转为公开源码分发 | 交付链 README LICENSE | 不改 CLI 行为或版本号;历史私有 Release 记录保持原样;不上传 PyPI/CLI Hub | REG-0021 | 恢复专有 LICENSE 与私有可见性需单独授权 | 用户 2026-09-07 明确要求开源以便同事安装 |
39
39
  | CR-0023 | 将 PyPI 项目 `asecli` 作为规范安装入口,并以 Trusted Publishing 在版本 tag 后上传 | 交付链 README pyproject CI | 新增 `uv tool install asecli`;不改 CLI 行为;不以普通 push 发版;不上 CLI Hub | REG-0021 | 从 PyPI 撤回该版本并回退 README 安装入口 | 用户 2026-09-07 要求做成最终、最常见安装形态 |
40
40
  | CR-0024 | 将 EditorGraphSpec 加性升级为 v3:版本化 primitive 闭包、recipe 原生展开/逐节点 fallback,以及属性 precision/default/min/max | MOD-BRIDGE MOD-CLI | v1/v2 解析和文本默认不变;仅支持 ASE 1.9.6.2 与已验证 URP Unlit 模板;SGCLI 仍是独立项目 | REG-0053 | 不接受 v3 即回退;未发布前不迁移既有 Shader,不把整图降级为黑盒 | 自动契约通过;隔离团结 2022.3.61t9 + ASE 1.9.6.2 创建/全新进程重载通过,0 Shader/CS error、0 staging;尚未发布 |
41
+ | CR-0025 | 将当前规范分发入口确定为公开 GitHub Release,并把 PyPI 发布延后到具备账号且再次明确授权时 | 交付链 README scripts CI | 一键安装继续解析最新 GitHub Release wheel;PyPI job 默认关闭;不移动既有 tag,不改 CLI 行为,不上 CLI Hub | REG-0021 REG-0057 | 恢复 PyPI 前先配置匹配仓库/workflow/environment 的 Trusted Publisher,再显式启用 job | 用户说明没有 PyPI 账号并明确要求继续 GitHub Release 发布;`v0.6.2` 公开资产、本机安装和回滚已验证 |
42
+ | CR-0026 | 恢复 PyPI 为规范包安装入口,并以 GitHub OIDC Trusted Publishing 上传与 GitHub Release 相同的 `v0.6.2` wheel/sdist | 交付链 README CI PyPI | 设置 `ASECLI_PYPI_ENABLED=true`;Publisher 精确绑定 `seeseeczl/ASECLI`、`publish.yml`、environment `pypi`;不保存或使用 API Token;GitHub Release 入口保持有效 | REG-0021 REG-0052 REG-0057 | 关闭仓库变量并在 PyPI yank 受影响版本;保留 GitHub Release 回滚入口 | 用户取得 PyPI 账号并完成 GitHub 连接后明确要求继续配置;run 34192454152 attempt 3 发布成功,PyPI 匿名摘要与隔离安装通过 |
43
+ | CR-0027 | 将随 wheel 分发的 ASECLI Skill 从 Codex 默认安装扩展为主流 Agent Skills 通用安装 | MOD-CLI MOD-SKILL | 新增 `--agent`、`--scope`、`--project-root`;开放 `.agents/skills` 覆盖 Codex/Cursor/Gemini CLI/GitHub Copilot,Claude Code 使用 `.claude/skills`;无参数与 `--skill-root` 保持兼容;`all` 先检查所有内容冲突 | REG-0058 | 禁用新路由参数即可退回 CR-0015 的 Codex 默认目录;不删除或覆盖已安装 Skill | 定向 46 passed、Skill validator、Project Architect strict 与隔离 wheel 安装通过;BUG-0023 已修复固定片段编译与 SHA 回归;全量 358 passed/3 skipped;发布追溯 REL-0013 |
44
+ | CR-0028 | 补齐 SG JSON 创建后的 ASE 图整理工作流:端口级复用计划、折叠接口计算基线、刚性计算岛排布与分层验收 | MOD-CORE MOD-LAYOUT MOD-CLI MOD-SKILL | 只读 graph-review;fanout 必须显式选择,默认消费组规则不变;island-columns 默认 1;不重建现有 Shader,不修改 SGCLI,不猜动态节点字段 | REG-0060 REG-0061 | 不用新增参数即保留原布局;回退本任务文件增量,不覆盖并行创建器改动;不发布 | 自动验证中;Local Var 自动 Editor 创建未实现,画布/GUI/渲染验收待具体目标,不以只读计划冒充写入 |
41
45
 
42
- 授权来源:用户于 2026-09-01 明确要求“执行优化任务,全部完成”,并于同日批准吸收 ASE Editor API 方案后要求“执行”;随后明确要求先推送并执行对抗性审计优化计划。2026-09-02 用户要求推送并进一步明确“以正式的 CLI 形式发布”,据此创建私有正式 GitHub Release `v0.1.0`;同日进一步明确说明条样式一致性必须成为 CLI 的规范能力,据此登记 CR-0011/BUG-0015,并明确所有通过 CLI 构建的 ASE 文件都必须使用中文属性显示名、自动变量名与默认值 Tooltip 和中文使用说明,据此登记 CR-0012。同日用户要求执行 `2026-09-02-211218` 优化计划,据此登记 CR-0013;随后书面授权打 tag 并发布 `v0.2.0`。2026-09-03 用户要求执行最新优化任务书并把剩余门槛全部完成,据此登记 CR-0014 并授权完成必要提交、直接推送与远程 CI 验证;随后明确要求“推送并发布”,据此授权创建私有正式版本 `v0.3.0`。2026-09-04 用户要求将 ASE 排版与 Inspector 编排规范作为可安装 CLI Skill 并授权发布 `v0.3.1`。2026-09-05 用户要求执行 MZGUI 对接与效率优化,随后分别授权私有版本 `v0.4.0`、`v0.4.1` 和审计补丁 `v0.4.2`。2026-09-06 用户明确 Tooltip 必填、HelpBox 可选、条件置灰并授权 `v0.5.0`;随后要求脑图式 DAG 精排并授权 `v0.6.0`;又将 Local Var 门槛改为两个及以上不同消费组,据此登记 CR-0020;最后以多组人工示范明确递归局部鱼骨、Comment 保留和显式 WireNode 路由并要求执行,据此登记 CR-0021。2026-09-07 用户明确授权提交、推送、私有 Release `v0.6.1` 和本机安装。同日进一步明确要求开源该项目并提供同事安装命令,据此登记 CR-0022:采用 MIT 许可证并将 GitHub 仓库转为 public。随后要求做成最终、最常见的安装形态,据此登记 CR-0023:发布 PyPI 项目 `asecli`,用户命令为 `uv tool install asecli`;仍未授权 CLI Hub。2026-09-08 用户进一步明确要求推送、发布新版本并安装本机,据此授权 `v0.6.2` 的 main 推送、tag、GitHub Release、PyPI Trusted Publishing 与本机正式产物安装;CLI Hub 仍不在授权范围。
46
+ 授权来源:用户于 2026-09-01 明确要求“执行优化任务,全部完成”,并于同日批准吸收 ASE Editor API 方案后要求“执行”;随后明确要求先推送并执行对抗性审计优化计划。2026-09-02 用户要求推送并进一步明确“以正式的 CLI 形式发布”,据此创建私有正式 GitHub Release `v0.1.0`;同日进一步明确说明条样式一致性必须成为 CLI 的规范能力,据此登记 CR-0011/BUG-0015,并明确所有通过 CLI 构建的 ASE 文件都必须使用中文属性显示名、自动变量名与默认值 Tooltip 和中文使用说明,据此登记 CR-0012。同日用户要求执行 `2026-09-02-211218` 优化计划,据此登记 CR-0013;随后书面授权打 tag 并发布 `v0.2.0`。2026-09-03 用户要求执行最新优化任务书并把剩余门槛全部完成,据此登记 CR-0014 并授权完成必要提交、直接推送与远程 CI 验证;随后明确要求“推送并发布”,据此授权创建私有正式版本 `v0.3.0`。2026-09-04 用户要求将 ASE 精排与 Inspector 编排规范作为可安装 Skill 并授权发布 `v0.3.1`。2026-09-05 用户要求执行 MZGUI 对接与效率优化,随后分别授权私有版本 `v0.4.0`、`v0.4.1` 和审计补丁 `v0.4.2`。2026-09-06 用户明确 Tooltip 必填、HelpBox 可选、条件置灰并授权 `v0.5.0`;随后要求脑图式 DAG 精排并授权 `v0.6.0`;又将 Local Var 门槛改为两个及以上不同消费组,据此登记 CR-0020;最后以多组人工示范明确递归局部鱼骨、Comment 保留和显式 WireNode 路由并要求执行,据此登记 CR-0021。2026-09-07 用户明确授权提交、推送、私有 Release `v0.6.1` 和本机安装。同日进一步明确要求开源该项目并提供同事安装命令,据此登记 CR-0022:采用 MIT 许可证并将 GitHub 仓库转为 public。随后要求做成最终、最常见的安装形态,据此登记 CR-0023:发布 PyPI 项目 `asecli`,用户命令为 `uv tool install asecli`;仍未授权 CLI Hub。2026-09-08 用户进一步明确要求推送、发布新版本并安装本机,据此授权 `v0.6.2` 的 main 推送、tag、GitHub Release、PyPI Trusted Publishing 与本机正式产物安装;CLI Hub 仍不在授权范围。首次 PyPI OIDC 因没有对应账号和 Trusted Publisher 失败后,用户说明没有 PyPI 账号并明确要求继续 GitHub Release 发布,据此以 CR-0025 将 PyPI 延后并完成 GitHub-only 交付。随后用户取得 PyPI 账号并明确要求继续配置,据此登记 CR-0026,启用精确匹配的 Pending Publisher 并通过 run 34192454152 attempt 3 完成首次 PyPI 发布。同日用户要求将现有 Skill 改为主流 Agent 通用,据此登记 CR-0027;本次不包含推送、tag 或发布。
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## 一句话使命
12
12
 
13
- AI Agent(Codex / Claude Code / Codely)通过自然语言驱动,可靠地解析、修改、校验、编译与创建 ASE Shader 文件;用户只提需求与验收效果。
13
+ 让支持 Agent Skills 的主流编码 Agent(CodexClaude Code、Cursor、Gemini CLI、GitHub Copilot 等)通过自然语言驱动,可靠地解析、修改、校验、编译与创建 ASE Shader 文件;用户只提需求与验收效果。
14
14
 
15
15
  ## 边界
16
16
 
@@ -14,7 +14,7 @@ evidence: [uv.lock, LICENSE, SECURITY.md, tools/supply_chain_check.py, tools/gen
14
14
 
15
15
  ## 分发与许可
16
16
 
17
- - AseCLI 以 MIT 许可证开源,标识为 `MIT`。当前用户安装入口为仓库一键安装脚本及其解析的最新 GitHub Release wheel;PyPI 项目 `asecli` CR-0023 已批准但尚未发布的目标入口。源码与 GitHub Release 公开,CLI Hub 仍须单独 CR。
17
+ - AseCLI 以 MIT 许可证开源,标识为 `MIT`。当前规范包安装入口为 PyPI `asecli`,仓库一键安装脚本及其解析的最新 GitHub Release wheel 继续提供 CLI + Skill 完整安装;CLI Hub 仍须单独 CR。
18
18
  - 当前生产运行时依赖为 0;开发依赖由 `uv.lock` 固定来源、版本和 SHA-256。第三方依赖继续遵守其自身许可证。
19
19
  - 新增生产依赖、修改许可或改变分发渠道属于单独 CR,必须先完成许可证与漏洞评估。
20
20
 
@@ -24,7 +24,7 @@ evidence: [uv.lock, LICENSE, SECURITY.md, tools/supply_chain_check.py, tools/gen
24
24
  - `tools/supply_chain_check.py`:检查 lock hash、固定 Action SHA、常见高置信 secret 形态与内部许可证。
25
25
  - `tools/generate_sbom.py`:生成 SPDX 2.3 JSON,包含项目、锁定包和构建 artifact SHA-256。
26
26
  - CI 使用经官方 tag 核对、固定 commit 且原生声明 Node 24 的 GitHub Actions;`tools/check_ci_governance.py` 固定 allowlist,阻止 SHA/runtime 回退。`ci.yml` 必须包含 checkout、setup-uv 与 upload-artifact;`publish.yml` 额外固定 download-artifact。artifact 同时上传 wheel、sdist、SHA256SUMS、SBOM 和供应链检查结果。
27
- - CR-0023 完成发布准备且获得单独发布授权后,推送与 `pyproject.toml` 完全一致的 `vX.Y.Z` tag,`publish.yml` 才可通过 Trusted Publishing 上传 PyPI;在此之前不得把 PyPI 写成已交付入口,也不在仓库中保存 PyPI token。
27
+ - 推送与 `pyproject.toml` 完全一致的 `vX.Y.Z` tag 后,`publish.yml` 先完成双 Python、治理、构建、摘要、SBOM、供应链与隔离安装。PyPI job 由仓库变量 `ASECLI_PYPI_ENABLED=true` 显式启用;当前 Publisher 精确绑定 `seeseeczl/ASECLI`、`.github/workflows/publish.yml` 与 environment `pypi`,通过 OIDC 上传同一 artifact,永不在仓库中保存 PyPI token。
28
28
 
29
29
  ## 漏洞、密钥与例外
30
30
 
@@ -40,6 +40,6 @@ evidence: [uv.lock, LICENSE, SECURITY.md, tools/supply_chain_check.py, tools/gen
40
40
  | actions/checkout | v5.0.1 / `93cb6efe18208431cddfb8368fd83d5badbf9bfd` / Node 24 | CI checkout |
41
41
  | astral-sh/setup-uv | v10.0.1 / `20cfd1bf945f4377ade1205e4dbc17946fc9a30d` / Node 24 | CI uv/Python |
42
42
  | actions/upload-artifact | v6.0.0 / `b7c566a772e6b6bfb58ed0dc250532a479d7789f` / Node 24 | CI artifact;要求 GitHub Actions Runner `>=2.327.1`,当前 `ubuntu-latest` 满足,若引入 self-hosted runner 必须重新核对 |
43
- | actions/download-artifact | v8.0.1 / `3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c` / Node 24 | PyPI 发布作业下载已构建发行包,不在持有 OIDC 凭据的作业中重新构建 |
43
+ | actions/download-artifact | v8.0.1 / `3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c` / Node 24 | 可选 PyPI 发布作业下载已构建发行包,不在持有 OIDC 凭据的作业中重新构建 |
44
44
 
45
45
  上述版本与 SHA 已通过官方 GitHub tag/API 只读核对;本地治理只证明配置与 allowlist 正确。Node 24 新组合的远程 GitHub CI 仍需下一次获准推送后的真实 run 验证;Dependabot 和漏洞数据库状态仍需远程 alert 证据。
@@ -82,3 +82,10 @@
82
82
  | 2026-09-08 | EditorGraphSpec v3 立项与自动验证 | 登记 CR-0024/ADR-0020/TASK-0054/REG-0053;v3 增加版本化 primitive/recipe 和属性 precision/default/min/max,修复保存重载 manifest 回抄 precision 的假后验;v1/v2/v3 定向 99 passed,真实隔离 Editor 双进程执行中 | CR-0024 ADR-0020 TASK-0054 REG-0053 AUD-FLOW-005 AUD-FE-007 |
83
83
  | 2026-09-08 | 优化任务闭环 | 隔离团结 2022.3.61t9 + ASE 1.9.6.2 完成 v2/v3 创建与全新进程重载,真实回读 world_position、sphere_mask 六节点展开、Half/Float 精度、默认值、范围和 Master 连接;`1 passed in 69.33s`,0 Shader/CS error、0 staging。P0/P1/P2 六项整改全部完成;PyPI/tag/远端 OIDC 未获授权且未执行,CR-0023 继续保持进行中 | OPT-2026-09-08-130015 CR-0023 CR-0024 TASK-0052 TASK-0053 TASK-0054 TASK-0055 TASK-0056 TASK-0057 REG-0052 REG-0053 REG-0054 REG-0055 REG-0056 |
84
84
  | 2026-09-08 | v0.6.2 公开发布候选 | 用户明确授权推送、发布新版本并安装本机;REL-0012 以 verified 记录本地候选,双 Python 各 341 passed/3 skipped、59/59 回归目录、可复现构建、SPDX、供应链、隔离 wheel/Skill/GUI smoke 通过;远端 CI、PyPI OIDC、公开资产回读和本机正式安装按 REG-0057 继续执行 | REL-0012 TASK-0058 CR-0023 CR-0024 REG-0057 |
85
+ | 2026-09-08 | v0.6.2 GitHub Release 与安装 | tag `v0.6.2` 解引用为 `7f98356`;run 34192454152 的双 Python verify 与 package 成功,PyPI 因无匹配 Publisher 正确失败且用户随后将渠道收敛为 GitHub Release。公开 Release 为 Latest、非 Draft/Prerelease,五项资产匿名下载与 digest/清单一致;本机安装 `asecli 0.6.2` 和新 Skill,旧 Skill 备份为 `asecli.pre-v0.6.2-backup-20260908-140848`,隔离 `0.6.2 → 0.6.1 → 0.6.2` 通过 | REL-0012 TASK-0058 CR-0024 CR-0025 REG-0021 REG-0057 |
86
+ | 2026-09-08 | v0.6.2 PyPI 发布 | 用户取得 PyPI 账号并授权继续配置;仓库变量 `ASECLI_PYPI_ENABLED=true`,PyPI Pending Publisher 精确绑定 `seeseeczl/ASECLI`、`publish.yml`、environment `pypi`。run 34192454152 attempt 3 全部 job 成功,Pending Publisher 自动转为 Active;PyPI wheel/sdist 摘要与 GitHub Release 一致且 `yanked=false`,官方索引 `uvx` 版本与 parse 通过 | REL-0012 TASK-0058 CR-0023 CR-0026 REG-0021 REG-0052 REG-0057 |
87
+ | 2026-09-08 | 主流 Agent Skill 通用化 | 用户要求将现有 Codex 默认 Skill 改为主流 Agent 通用;新增开放 `.agents` 与 Codex/Claude Code/Cursor/Gemini CLI/GitHub Copilot 原生目录矩阵、用户/项目作用域、`all` 最小覆盖和冲突预检;旧无参数与 `--skill-root` 保持兼容。定向 46 passed、Skill/治理/隔离 wheel 安装通过;当前全量 357 passed/3 skipped/1 failed,唯一失败来自本任务外 C# payload SHA 漂移;未推送或发布 | CR-0027 ADR-0021 TASK-0059 REG-0058 |
88
+ | 2026-09-08 | v0.6.3 发布准备 | 用户授权推送发布;跨 Agent Skill 与 MCP 编译修复纳入补丁版本,SphereMask Radius 重载作为已知限制;保留既有实机证据,运行发布门禁 | REL-0013 CR-0027 BUG-0023 TASK-0060 REG-0058 REG-0059 |
89
+ | 2026-09-08 | v0.6.3 双渠道发布完成 | long 授权;verified → released;tag a758d0f,run 34205409407 双 verify/package/OIDC 全成功;GitHub 五项资产匿名下载摘要与 PyPI 双资产一致;本机官方包 0.6.3、执行片段 SHA、隔离安装/回滚通过。SphereMask Radius 重载限制公开保留,未修改 SGCLI | REL-0013 CR-0027 BUG-0023 TASK-0060 REG-0058 REG-0059 |
90
+ | 2026-09-08 | 转换图交付流程能力补齐 | long 授权补齐 JSON→ASE 后整理缺口;新增 graph-review 计算基线/显式端口复用计划、island-columns 刚性多列排布与 Skill 流程。自动验证通过,未自动创建 Register/Get,未运行真实画布/GUI/渲染验收;全量 380 passed/3 skipped/1 failed(并行 editor_spec.py 行数门禁),未发布 | CR-0028 TASK-0061 TASK-0062 TASK-0063 REG-0060 REG-0061 |
91
+ | 2026-09-08 | v0.6.4 发布授权 | long 要求推送、发布、安装 CLI 与全局 Skill;仅发布 CR-0028 图核对/计算岛布局/Skill,独立暂存快照隔离并行创建器改动;未完成的自动 Local Var 创建和实机验收保持披露 | REL-0014 CR-0028 TASK-0061 TASK-0062 TASK-0063 REG-0060 REG-0061 |
@@ -25,7 +25,7 @@ BUG-0006,缺陷,已解决,ADR-0006,MOD-CHECK MOD-CLI,TASK-0009,REG-0004 REG-0018
25
25
  BUG-0007,缺陷,已解决,ADR-0001,MOD-CORE,TASK-0014,REG-0011,2026-09-01 1007 节点 5 轮通过,,long,性能假门禁
26
26
  BUG-0008,缺陷,已解决,ADR-0001,MOD-CLI,TASK-0016,REG-0020,2026-09-01 catalog 18 条可收集,,long,治理路径漂移
27
27
  BUG-0009,缺陷,已解决,ADR-0008,MOD-CORE MOD-CLI,TASK-0017,REG-0019,2026-09-01 自动回归通过,,long,跨模块私有导入
28
- CR-0006,变更,已确认,ADR-0009,MOD-CLI,TASK-0018 TASK-0019 TASK-0037 TASK-0041 TASK-0044 TASK-0045 TASK-0046 TASK-0048 TASK-0051,REG-0021 REG-0043 REG-0048,2026-09-07 run 34045894959 与 v0.6.1 六项正式资产、SHA256SUMS、本机安装及 v0.6.0 回滚/恢复通过,REL-0001 REL-0002 REL-0003 REL-0004 REL-0005 REL-0006 REL-0007 REL-0008 REL-0009 REL-0010 REL-0011,long,CI REL 与供应链基线;PyPI 尚未发布
28
+ CR-0006,变更,已确认,ADR-0009,MOD-CLI,TASK-0018 TASK-0019 TASK-0037 TASK-0041 TASK-0044 TASK-0045 TASK-0046 TASK-0048 TASK-0051,REG-0021 REG-0043 REG-0048,2026-09-07 run 34045894959 与 v0.6.1 六项正式资产、SHA256SUMS、本机安装及 v0.6.0 回滚/恢复通过,REL-0001 REL-0002 REL-0003 REL-0004 REL-0005 REL-0006 REL-0007 REL-0008 REL-0009 REL-0010 REL-0011,long,CI REL 与供应链基线;后续公开 PyPI 状态见本表最新分发变更
29
29
  FR-0011,功能,已确认,ADR-0012 ADR-0015,MOD-BRIDGE MOD-CLI MOD-SKILL,TASK-0023 TASK-0024 TASK-0025 TASK-0026 TASK-0027 TASK-0028 TASK-0032 TASK-0033,REG-0026 REG-0027 REG-0028 REG-0029 REG-0037 REG-0038 REG-0039 REG-0040,2026-09-03 v2 规格与 CLI 后验治理自动通过;团结 2022.3.61t9 + ASE 1.9.6.2 完成创建进程与全新重开进程对账;0 error 且无暂存残留,REL-0003,long,正式 CLI 使用 EditorGraphSpec v2 强制属性呈现;双进程兼容性阻塞已解除
30
30
  CR-0008,变更,已确认,ADR-0012,MOD-BRIDGE MOD-CLI MOD-SKILL,TASK-0023 TASK-0024 TASK-0025 TASK-0026 TASK-0027 TASK-0028,REG-0026 REG-0027 REG-0028 REG-0029,2026-09-01 自动回归与隔离团结双进程 E2E 通过,,long,离线文本与窄范围 Editor 后端按能力路由;目标画面待验
31
31
  CR-0009,变更,已确认,ADR-0009 ADR-0010 ADR-0012 ADR-0013,MOD-CUSTOM-GUI MOD-GUI-SUPPORT MOD-BRIDGE MOD-CLI,TASK-0029,REG-0031 REG-0032 REG-0033 REG-0034 REG-0035,2026-09-01 自动与 GitHub run 33510909955 artifact 通过;真实 GUI probe 待验,,long,第二轮对抗性审计整改
@@ -54,5 +54,10 @@ CR-0019,变更,已发布,ADR-0005,MOD-LAYOUT MOD-BRIDGE MOD-CLI MOD-SKILL,TASK-0
54
54
  CR-0020,变更,已发布,ADR-0005,MOD-LAYOUT MOD-SKILL,TASK-0049 TASK-0051,REG-0050,2026-09-07 v0.6.1@9cdc1ee 经 run 34045894959、正式资产和本机安装/回滚验证通过,REL-0011,long,Local Var 按去重消费组计数;两个及以上组必须注册;同组复用次数不限但仍须尽量零交叉
55
55
  CR-0021,变更,已发布(视觉待签收),ADR-0018,MOD-LAYOUT MOD-BRIDGE MOD-CLI MOD-SKILL,TASK-0050 TASK-0051,REG-0051,2026-09-07 定向 70 passed;全量 313 passed/3 skipped;真实 248 节点 V3 审计零硬失败;run 34045894959、正式资产和本机安装/回滚通过,REL-0011,long,递归局部鱼骨;真实端口水平;局部同层输出右对齐;Comment 保留与作用标题;显式 WireNode 路由事务;正常缩放视觉与新增/移动锚点实机待签收
56
56
  CR-0022,变更,已发布,ADR-0019,MOD-CLI,8239df8,REG-0021,2026-09-07 MIT 开源与公开 GitHub 仓库完成,,long,MIT 许可证;公开 GitHub 源码与 Release
57
- CR-0023,变更,发布中,ADR-0019,MOD-CLI,TASK-0052 TASK-0053 TASK-0058,REG-0021 REG-0052 REG-0057,2026-09-08 用户已授权 v0.6.2 公开发布;本地双 Python全量、回归目录、可复现构建、SPDX、供应链与隔离安装 smoke 通过,REL-0012,long,当前公开入口在远端后验完成前仍为 GitHub Release v0.6.1;PyPI Trusted Publishing tag workflow 执行
58
- CR-0024,变更,已验证(发布中),ADR-0020,MOD-BRIDGE MOD-CLI,TASK-0054 TASK-0058,REG-0053 REG-0057,2026-09-08 v1/v2/v3 自动回归与隔离团结 2022.3.61t9 + ASE 1.9.6.2 双进程通过;已进入 v0.6.2 本地验证候选,REL-0012,long,EditorGraphSpec v3 primitive/recipe 与 precision/default/min/max;SGCLI 保持独立
57
+ CR-0023,变更,已发布,ADR-0019,MOD-CLI,TASK-0052 TASK-0053 TASK-0058,REG-0021 REG-0052 REG-0057,2026-09-08 run 34192454152 attempt 3 OIDC publish 成功;PyPI wheel/sdist 摘要与 GitHub Release 一致且官方索引隔离安装通过,REL-0012,long,规范包安装入口为 `uv tool install asecli`;CR-0025 的临时延后条件已由 CR-0026 解除
58
+ CR-0024,变更,已发布,ADR-0020,MOD-BRIDGE MOD-CLI,TASK-0054 TASK-0058,REG-0053 REG-0057,2026-09-08 自动回归、隔离团结双进程、v0.6.2 GitHub Release 五项资产、本机安装和回滚恢复通过,REL-0012,long,EditorGraphSpec v3 primitive/recipe 与 precision/default/min/max;SGCLI 保持独立
59
+ CR-0025,变更,已被 CR-0026 取代(GitHub 入口保持),ADR-0019,MOD-CLI,TASK-0058,REG-0021 REG-0057,2026-09-08 v0.6.2@7f98356 的公开 GitHub Release、五项资产匿名摘要、本机 CLI/Skill 与隔离回滚恢复通过,REL-0012,long,GitHub Release 入口继续有效;PyPI 临时延后已结束;CLI Hub 不在范围
60
+ CR-0026,变更,已发布,ADR-0019,MOD-CLI,TASK-0058,REG-0021 REG-0052 REG-0057,2026-09-08 Publisher 从 Pending 自动转为 Active;run 34192454152 attempt 3 全成功;PyPI 双资产摘要和官方索引 `uvx` 版本/parse 通过,REL-0012,long,仓库变量启用 OIDC;不保存 API Token;PyPI 为规范包入口且 GitHub Release 保持有效
61
+ CR-0027,变更,已发布,ADR-0021,MOD-CLI MOD-SKILL,TASK-0059 TASK-0060,REG-0058,2026-09-08 v0.6.3@a758d0f;run 34205409407;双 Python 358 passed/3 skipped;双渠道摘要与安装回滚通过,REL-0013,long,主流 Agent Skill;旧安装兼容
62
+ BUG-0023,缺陷,已修复,ADR-0020,MOD-BRIDGE,TASK-0060,REG-0059,2026-09-08 两类真实 v2 CLI create/manifest/validate/recompile 通过;358 passed/3 skipped,REL-0013,long,方法体兼容 KeyValuePair;SphereMask Radius 重载仍为已知限制
63
+ CR-0028,变更,自动验证完成实机待验,ADR-0021,MOD-CORE MOD-LAYOUT MOD-CLI MOD-SKILL,TASK-0061 TASK-0062 TASK-0063,REG-0060 REG-0061,端口级基线与复用计划及岛内刚性多列布局;未自动创建LocalVar;未做实机验收,REL-0014,long,保留并行创建器改动;不修改SGCLI
@@ -2,13 +2,13 @@
2
2
 
3
3
  | 模块 ID | 模块/路径 | 关联 FR/CR | 职责 | 公开 API/事件 | 依赖方向 |
4
4
  | --- | --- | --- | --- | --- | --- |
5
- | MOD-CORE | src/asecli/core | FR-0001 FR-0002 FR-0005 CR-0002 CR-0005 BUG-0002 BUG-0007 BUG-0009 | 行式模型、图块替换、最小差异写回 | `AseFile.from_path`;`parse_graph_text`;`parse_node_line`;`replace_graph` | 仅标准库;禁止依赖 schema/bridge/cli |
5
+ | MOD-CORE | src/asecli/core | FR-0001 FR-0002 FR-0005 CR-0002 CR-0005 BUG-0002 BUG-0007 BUG-0009 CR-0028 | 行式模型、图块替换、最小差异写回 | `AseFile.from_path`;`parse_graph_text`;`parse_node_line`;`replace_graph` | 仅标准库;禁止依赖 schema/bridge/cli |
6
6
  | MOD-SCHEMA | src/asecli/schema | FR-0002 CR-0002 BUG-0001 | 节点 schema、版本兼容与 mutation allowlist | `schema_for`;`schema_version`;`is_version_compatible` | 允许依赖 MOD-CORE 类型;禁止依赖 bridge/cli |
7
7
  | MOD-CHECK | src/asecli/checks | FR-0003 CR-0002 CR-0003 BUG-0003 BUG-0006 | 图结构校验与 CHKSM 重算 | `validate_file`;`verify_checksum`;`fix_checksum` | 允许依赖 MOD-CORE;禁止依赖 bridge/cli |
8
- | MOD-BRIDGE | src/asecli/bridge | FR-0004 FR-0008 FR-0009 FR-0011 CR-0001 CR-0004 CR-0008 CR-0009 CR-0010 CR-0011 CR-0012 CR-0013 CR-0014 CR-0016 CR-0017 CR-0018 CR-0019 CR-0021 CR-0024 BUG-0005 BUG-0012 BUG-0013 BUG-0016 BUG-0021 | MCP 客户端、loopback 信任边界、tool result/envelope、重编译、受控 Editor 图创建、WireNode 路由事务、确定性资源拼装与 GUI 支持升级 | `recompile_via_mcp`;`create_shader_via_mcp`;`apply_wire_routes_via_mcp`;`inspect_gui_support`;`install_gui_support`;`McpClient` | 仅标准库;禁止依赖 cli;远程需显式授权 |
9
- | MOD-CLI | src/asecli/cli | FR-0003 FR-0005 FR-0006 FR-0007 FR-0009 FR-0010 FR-0011 CR-0002 CR-0003 CR-0004 CR-0005 CR-0006 CR-0008 CR-0009 CR-0010 CR-0011 CR-0012 CR-0013 CR-0015 CR-0016 CR-0017 CR-0018 CR-0019 CR-0021 CR-0022 CR-0023 CR-0024 BUG-0004 BUG-0006 BUG-0008 BUG-0009 BUG-0010 BUG-0013 BUG-0017 BUG-0018 | 16 个命令、单行 JSON、写入/信任组合根、create 后端路由、属性呈现门禁、受控 Skill 安装与版本化可校验 CI 打包 | `asecli <command>`;`asecli install-skill` | 允许依赖 core/schema/check/bridge;只能使用公开 API |
10
- | MOD-SKILL | skills/asecli | FR-0006 FR-0008 FR-0009 FR-0010 FR-0011 CR-0007 CR-0008 CR-0010 CR-0013 CR-0015 CR-0016 CR-0018 CR-0019 CR-0020 CR-0021 | Agent 技能文档:ASE 格式说明、递归鱼骨精排、Inspector 分组/命名/说明规范、图/GUI/Comment/Local Var/编译操作手册、错误处理指引;随 wheel 打包并由 CLI 安装 | `SKILL.md`;`references/layout-standard.md`;`references/material-property-standard.md`(文档资产) | 无代码依赖;文档引用 CLI 契约 |
11
- | MOD-LAYOUT | src/asecli/core/layout.py; meticulous_layout.py; layout_audit.py; comment_layout.py; wire_geometry.py; wire_router.py | FR-0008 FR-0010 CR-0019 CR-0020 CR-0021 | 兼容分层布局;基于真实端口和直属来源局部输出线的递归鱼骨、Local Var 跨组审计、Comment 保留/收框/作用标题、显式 WireNode 路由计划 | `layout_positions`;`meticulous_layout_positions`;`audit_meticulous_layout`;`plan_wire_routes` | 允许依赖 core 模型;禁止依赖 schema/bridge/cli |
8
+ | MOD-BRIDGE | src/asecli/bridge | FR-0004 FR-0008 FR-0009 FR-0011 CR-0001 CR-0004 CR-0008 CR-0009 CR-0010 CR-0011 CR-0012 CR-0013 CR-0014 CR-0016 CR-0017 CR-0018 CR-0019 CR-0021 CR-0024 BUG-0005 BUG-0012 BUG-0013 BUG-0016 BUG-0021 BUG-0023 | MCP 客户端、loopback 信任边界、tool result/envelope、重编译、受控 Editor 图创建、WireNode 路由事务、确定性资源拼装与 GUI 支持升级 | `recompile_via_mcp`;`create_shader_via_mcp`;`apply_wire_routes_via_mcp`;`inspect_gui_support`;`install_gui_support`;`McpClient` | 仅标准库;禁止依赖 cli;远程需显式授权 |
9
+ | MOD-CLI | src/asecli/cli | FR-0003 FR-0005 FR-0006 FR-0007 FR-0009 FR-0010 FR-0011 CR-0002 CR-0003 CR-0004 CR-0005 CR-0006 CR-0008 CR-0009 CR-0010 CR-0011 CR-0012 CR-0013 CR-0015 CR-0016 CR-0017 CR-0018 CR-0019 CR-0021 CR-0022 CR-0023 CR-0024 CR-0025 CR-0026 CR-0027 BUG-0004 BUG-0006 BUG-0008 BUG-0009 BUG-0010 BUG-0013 BUG-0017 BUG-0018 CR-0028 | 16 个命令、单行 JSON、写入/信任组合根、create 后端路由、属性呈现门禁、跨主流 Agent 的受控 Skill 安装与版本化可校验 CI 打包 | `asecli <command>`;`asecli install-skill` | 允许依赖 core/schema/check/bridge;只能使用公开 API |
10
+ | MOD-SKILL | skills/asecli | FR-0006 FR-0008 FR-0009 FR-0010 FR-0011 CR-0007 CR-0008 CR-0010 CR-0013 CR-0015 CR-0016 CR-0018 CR-0019 CR-0020 CR-0021 CR-0027 CR-0028 | 通用 Agent Skill:ASE 格式说明、递归鱼骨精排、Inspector 分组/命名/说明规范、图/GUI/Comment/Local Var/编译操作手册、错误处理与跨 Agent 执行边界;随 wheel 打包并由 CLI 安装 | `SKILL.md`;`references/layout-standard.md`;`references/material-property-standard.md`(文档资产) | 无代码依赖;只要求 shell 与单行 JSON,不依赖某家 Agent 专属 API |
11
+ | MOD-LAYOUT | src/asecli/core/layout.py; meticulous_layout.py; layout_audit.py; comment_layout.py; wire_geometry.py; wire_router.py | FR-0008 FR-0010 CR-0019 CR-0020 CR-0021 CR-0028 | 兼容分层布局;基于真实端口和直属来源局部输出线的递归鱼骨、Local Var 跨组审计、Comment 保留/收框/作用标题、显式 WireNode 路由计划 | `layout_positions`;`meticulous_layout_positions`;`audit_meticulous_layout`;`plan_wire_routes` | 允许依赖 core 模型;禁止依赖 schema/bridge/cli |
12
12
  | MOD-CUSTOM-GUI | src/asecli/core/custom_gui.py; custom_gui_versions.py; material_gui_spec.py; material_gui_condition.py; property_presentation.py | FR-0009 FR-0010 CR-0009 CR-0010 CR-0012 CR-0016 CR-0018 BUG-0011 | 真实版本能力矩阵;主 Master/ShaderLab CustomEditor 同步;PropertyNode MZGUI 元数据尾部、中文显示名、UTF-16 文案、旧标记兼容、条件置灰、批量治理与 `asecli.property-presentation.v2` 检查 | `inspect_custom_gui`;`resolve_property_node`;`apply_material_gui_spec`;`require_property_presentation` | 仅依赖 MOD-CORE model;禁止依赖 schema/check/bridge/cli |
13
13
  | MOD-GUI-SUPPORT | src/asecli/bridge/gui_support.py; gui_provider_detection.py; `_gui_project.py`; `_gui_resource_store.py`; `_gui_resource_upgrade.py`; gui_presentation.py; bridge/resources/asecli_material_gui*.cs.txt | FR-0009 CR-0009 CR-0010 CR-0011 CR-0014 CR-0016 CR-0018 BUG-0014 BUG-0015 BUG-0019 BUG-0020 BUG-0022 | 原生 MZGUI 优先选择;fallback 安全安装/已知哈希升级;以同一个 `MZGUI.MZGUI` 公共入口渲染 Inspector;ASE Editor 可视化编辑三类标准属性;打开图时恢复元数据;未知版本能力失败关闭 | `inspect_gui_support`;`install_gui_support`;`MZGUI.MZGUI`;`ASECLIGUIAttributesWindow` | Python 仅标准库;C# 仅 UnityEditor/UnityEngine,通过字符串反射适配 ASE,禁止源码补丁和编译期 ASE 引用 |
14
14
  | MOD-COMMENTARY | src/asecli/core/commentary.py | FR-0010 | CommentaryNode 可变长序列化、成员树检查与自动包围框 | `inspect_comment_groups`;`create_comment_group` | 仅依赖 MOD-CORE model/graph_ops;禁止依赖 schema/check/bridge/cli |
@@ -27,4 +27,4 @@
27
27
  10. 打包进 wheel 的 Unity C# 执行器使用 `.cs.txt` 片段;`tools/check_ci_governance.py` 按唯一事实源 `thresholds.source.limit` 扫描 `src/asecli/**/*.cs.txt`。片段必须通过显式顺序拼装、拆分前 SHA-256 和 wheel 成员门禁,不得通过改扩展名规避;任何新超限文件仍须在 `.project-architect.json` 登记最长 30 天的完整例外,当前例外列表为空。
28
28
  11. `layout`/`comment-group` 的 JSON 只证明结构结果,固定返回独立的 `structural_validation` 与 `visual_validation`;真实画布签收必须引用版本化截图/人工证据,当前基线为 REG-0041。
29
29
  12. MaterialGUI 的长中文标签在窄宽度下自动换行,字段独占下一行;技术 Tooltip 默认值使用最多六位小数的 invariant 格式。REG-0042 是主题、宽度、缩放和交互状态回归基线。
30
- 13. `asecli install-skill` 只安装随 wheel 打包的 `asecli` Skill 到用户指定或标准 Codex Skill 根目录;同内容幂等,不同内容失败关闭,不覆盖用户自定义 Skill。wheel 必须包含 Skill 与所有引用规范。
30
+ 13. `asecli install-skill` 只安装随 wheel 打包的 `asecli` Skill。无参数保持原 Codex 用户目录;显式路由支持开放 `.agents` 以及 Codex、Claude Code、Cursor、Gemini CLI、GitHub Copilot 的用户级/项目级目录。`all` 只写 `.agents` 与 `.claude` 两个非重复根并在写入前检查全部内容冲突;同内容幂等,不同内容失败关闭,不覆盖用户自定义 Skill。wheel 必须包含 Skill 与所有引用规范。
@@ -2,10 +2,10 @@
2
2
  id: ARCH-REQ-0001
3
3
  type: project-architecture-and-requirements
4
4
  status: 已确认
5
- version: 1.9.0
5
+ version: 1.10.0
6
6
  created_at: 2026-08-31T23:25:00+08:00
7
7
  owner: long
8
- related: [PRJ-ASECLI, CR-0002, CR-0003, CR-0004, CR-0005, CR-0007, CR-0008, CR-0010, CR-0011, CR-0012, CR-0013, BUG-0015, BUG-0017, BUG-0018, FR-0009, FR-0010, FR-0011, AUD-20260901]
8
+ related: [PRJ-ASECLI, CR-0002, CR-0003, CR-0004, CR-0005, CR-0007, CR-0008, CR-0010, CR-0011, CR-0012, CR-0013, CR-0027, BUG-0015, BUG-0017, BUG-0018, FR-0009, FR-0010, FR-0011, AUD-20260901]
9
9
  supersedes: 无(首次启动)
10
10
  evidence: [ASE 源码分析; MCP for Unity 桥接实验; 2026-09-01 标准审计与整改]
11
11
  kickoff_completion: complete
@@ -18,7 +18,7 @@ kickoff_completion: complete
18
18
  | 项目启动问卷项 | 答案 | 状态(已确认/假设/未决/风险) |
19
19
  | --- | --- | --- |
20
20
  | 项目目标 | 让 AI Agent 通过自然语言创建/修改 ASE Shader 文件并触发编译 | 已确认 |
21
- | 目标用户与角色 | 用户本人(long):Unity/团结引擎开发者;直接使用者是 AI Agent(Codex/Claude Code/Codely) | 已确认 |
21
+ | 目标用户与角色 | 用户本人(long):Unity/团结引擎开发者;直接使用者是支持 Agent Skills 的主流编码 Agent(CodexClaude Code、Cursor、Gemini CLI、GitHub Copilot 等) | 已确认 |
22
22
  | 首个场景 / MVP | 用户说"给这个 shader 加一个可调描边",Agent 完成设计节点图、连线、写文件、校验、触发编译 | 已确认 |
23
23
  | 产品形态 | 本地 Python CLI(`asecli`)+ Agent 技能文档 + MCP for Unity 桥接;无 UI | 已确认 |
24
24
  | 数据与集成 | 读写用户指定 .shader/.asset;默认仅调用 loopback MCP;远程需显式授权;token 仅从环境注入 | 已确认 |
@@ -172,14 +172,23 @@
172
172
 
173
173
  - 状态:已确认(2026-09-07,CR-0022)
174
174
  - 决策:将许可证从 `LicenseRef-ASECLI-Proprietary` 改为 MIT;GitHub 仓库 `seeseeczl/ASECLI` 转为 public。
175
- - 2026-09-07 修订(CR-0023,进行中):目标是在首次受控发布并完成匿名安装回读后,让 PyPI 项目 `asecli` 成为默认入口,`uv tool install asecli` 成为规范命令。完成前继续由 GitHub Release 一键脚本承担当前安装,GitHub Release 后续仍作为校验与回滚资产。CLI-Anything Hub 仍按 ADR-0004 后置。
176
- - 回滚:恢复专有 LICENSE 与私有可见性属于单独授权,不自动执行。从 PyPI 撤回发行版同样需要单独授权。
175
+ - 2026-09-08 修订(CR-0025,已发布):当前规范入口为公开 GitHub Release wheel,由仓库一键安装脚本解析 Latest;PyPI 因没有发布账号而延后,只有配置匹配的 Trusted Publisher 并再次明确授权后才启用。CLI-Anything Hub 仍按 ADR-0004 后置。
176
+ - 2026-09-08 修订(CR-0026,已发布):PyPI `asecli` 恢复为规范包安装入口;GitHub Release 与一键安装脚本继续保留。PyPI Publisher 只信任 `seeseeczl/ASECLI` 的 `publish.yml` 和 `pypi` environment,tag workflow 复用同一已校验 artifact,不使用 API Token。CLI-Anything Hub 仍按 ADR-0004 后置。
177
+ - 回滚:恢复专有 LICENSE 与私有可见性属于单独授权,不自动执行。GitHub Release 回滚通过选择保留的历史版本 wheel 完成,不移动既有 tag。
177
178
 
178
179
  ### ADR-0020 EditorGraphSpec v3 使用版本化算法 primitive 闭包
179
180
 
180
- - 状态:已验证、未发布;自动回归与真实 Editor 双进程后验通过(2026-09-08,CR-0024)
181
+ - 状态:已发布;自动回归、真实 Editor 双进程后验和 `v0.6.2` GitHub Release 安装/回滚通过(2026-09-08,CR-0024)
181
182
  - 背景:SGCLI 只把 ASECLI 当作受控写手,需要平移属性精度、默认值和范围,并将算法节点映射为真实可编辑 ASE 节点;v2 只能表达少量普通节点和 Custom Expression。
182
183
  - 决策:保留 v1/v2 兼容,v3 必填 `primitives_version: 1`。顶层 `primitive` 必须来自绑定 ASE 1.9.6.2 的闭包;`recipe` 按拓扑顺序声明多个 primitive,闭包完整时由真实 ASE API 展开,存在未知操作时才降级为单个、逐节点范围的 Custom Expression。Property 支持已验证的 `precision/default/min/max`,保存重载后的 manifest 从真实节点回读,不回抄 spec。
183
184
  - 安全与边界:未知 spec/primitive 版本、顶层未知操作、前向引用、非法 HLSL/C# 标记、模板/端口/类型不匹配均在 MCP 前失败关闭。SGCLI、Shader Graph 解析和映射表不进入 ASECLI;不支持整图黑盒、任意 C# 或未知 ASE 版本猜写。
184
185
  - 兼容与回滚:`create` 的文本默认和 v2 语义不变;禁用 v3 输入即可回退发布基线。尚未发布时可整体回退 CR-0024,不迁移或修改既有 Shader。
185
186
  - 运行证据:隔离团结 `2022.3.61t9` + ASE `1.9.6.2` 创建并由全新进程重载;`world_position`、`sphere_mask` 的 6 个原生节点、Half/Float 精度、默认值、范围和 Master 连接均回读一致,0 Shader/CS error、0 `ASECLI-Temp-*`。证据见 `docs/03-quality/evidence/REG-0053/README.md`。
187
+
188
+ ### ADR-0021 使用开放 Agent Skills 目录加 Claude 原生目录覆盖主流 Agent
189
+
190
+ - 状态:已发布,自动与治理验证通过(2026-09-08,CR-0027,REL-0013)
191
+ - 背景:CR-0015 的 Skill 内容本身是标准 Markdown,但安装命令和帮助只默认 Codex 路径,不能让 Claude Code、Cursor、Gemini CLI 与 GitHub Copilot 用户直接选择其原生用户级或项目级目录。
192
+ - 决策:新增 `--agent agents|codex|claude|cursor|gemini|copilot|all`、`--scope user|project` 和 `--project-root`。`.agents/skills` 是 Codex、Cursor、Gemini CLI 与 GitHub Copilot 共同识别的开放目录;Claude Code 另用 `.claude/skills`。因此 `all` 只安装这两个根,避免向每个兼容别名重复复制同名 Skill。单一 Agent 仍可选择其原生目录。
193
+ - 兼容与安全:无参数继续解析 `$CODEX_HOME/skills` 或 `~/.codex/skills`,`--skill-root` 保持显式覆盖。所有目标沿用完整树 digest、幂等、符号链接保护与不同内容拒绝覆盖;`all` 在创建任一目标前预检全部已有 Skill 内容冲突。
194
+ - 边界:Skill 只约定 shell 与单行 JSON,不假设 Agent 专属工具、权限或消息格式。Editor、目标工程和视觉验收能力仍由实际运行环境决定;本 CR 不发布版本、不修改 Shader、不启动 Editor。
@@ -36,3 +36,4 @@ evidence: [tests, docs/03-quality/regression-catalog.md]
36
36
  | BUG-0020 | AUD-UI-001 / 真实 Tooltip 默认值反射 | Unity float 直接使用 `G9` 输出,暴露 `0.800000012`、`0.649999976` 等二进制浮点噪声 | REG-0042 | 统一使用 `0.######` invariant 格式;整数和 Toggle 语义保持不变 | 新测试先失败后通过;实机反射 `_BaseColor=(0.8, 0.2, 0.1, 1)`、`_Smoothness=0.65`、`_Intensity=1.25` |
37
37
  | BUG-0021 | REG-0045 从完全清理的隔离 Assets 重跑 | `tests/test_editor_create_e2e.py` 只创建空 `Generated` 目录,团结首次 AssetDatabase Refresh 会移除无资产目录,ASE 保存 nonce 暂存 Shader 时抛 `DirectoryNotFoundException` | REG-0045 | 启动 Editor 前在 Generated 写入隐藏占位文件,保证首次刷新后目录仍存在;不改 CLI 或 ASE 事务 | 失败 `1 failed/16.78s` 后,同一干净隔离工程重跑 `1 passed/39.86s`;双进程、manifest/presentation 与零 staging 断言通过 |
38
38
  | BUG-0022 | 用户反馈 / 真实 MZGUI 与 ASE 源码对照 / 对抗审计 AA-DATA-001 AA-COR-001 | fallback 保存丢属性、缺可视化 authoring、旧私有 Editor 名不可移植;进一步发现原生 MZGUI 状态双存储和 Apply 半提交 | REG-0047 | EditorWindow + hydration;统一 `MZGUI.MZGUI`;旧名 canonical 化;原生状态 reconciliation;Apply 内存/磁盘事务;V2 provider 与可恢复 handoff | 自动已解决:`258 passed, 3 skipped`、真实 native probe、两种拼装源内存编译;真实无 MZGUI UI 与跨环境保存重开待验 |
39
+ | BUG-0023 | SGCLI P0.2 真实 MCP codedom | delegate result 遮蔽、System.Tuple 程序集冲突及方法体内 InputTarget 类型声明导致 create 编译失败 | REG-0059 | values 局部变量和 KeyValuePair 节点/端口对;固定片段不声明类型 | 已修复;真实 property_texture/defaults_degradation create、manifest、validate、recompile 通过;SphereMask 的 Radius 重载错误为已知独立限制 |
@@ -22,7 +22,7 @@
22
22
  | REG-0018 | FR-0003 FR-0007 CR-0003 BUG-0006 AUD-FE-006 | checksum-dry-run:默认不写、显式写入可恢复 | `uv run pytest tests/test_cli_contract.py::test_fix_checksum_is_dry_run_by_default tests/test_cli_contract.py::test_fix_checksum_write_is_explicit_and_recoverable` | 自动通过 |
23
23
  | REG-0019 | FR-0001 CR-0005 BUG-0009 AUD-ARCH-001 | core-public-parser:公开 parse_node_line 且旧 alias 兼容 | `uv run pytest tests/test_core_contract.py` | 自动通过 |
24
24
  | REG-0020 | BUG-0008 AUD-GOV-001 | governance-catalog:登记的 pytest 文件/节点均可收集 | `uv run pytest tests/test_governance.py` | 自动通过 |
25
- | REG-0021 | CR-0006 CR-0022 CR-0023 AUD-OPS-001 AUD-SUPPLY-001 | supply-delivery:CI governance、lock/Action/secret/license、SPDX、公开源码分发、规范安装入口与可复现构建 | `uv run pytest tests/test_supply_chain.py tests/test_governance.py` + 本地双构建/安装回滚 | GitHub Release `v0.6.1` 当前可安装;MIT 公开源码已验证;PyPI `asecli` 尚未发布,CR-0023 保持进行中并由候选门禁失败关闭 |
25
+ | REG-0021 | CR-0006 CR-0022 CR-0023 CR-0025 CR-0026 AUD-OPS-001 AUD-SUPPLY-001 | supply-delivery:CI governance、lock/Action/secret/license、SPDX、公开源码分发、规范安装入口与可复现构建 | `uv run pytest tests/test_supply_chain.py tests/test_governance.py` + 本地双构建/安装回滚 | GitHub Release `v0.6.2` 五项公开资产、摘要与安装已验证;MIT 公开源码有效;PyPI OIDC Publisher 已激活,wheel/sdist 与 GitHub 摘要一致且隔离安装通过 |
26
26
  | REG-0022 | FR-0009 CR-0010 | custom-gui-metadata-roundtrip:真实 HLIT/旧 MZGUI 样本格式读取;主 Master/编译指令同步;ASECLI 三标记写回、UTF-16 编码、旧标记读取和触碰迁移;dry-run/备份/CHKSM/注入/非 Property 失败路径 | `uv run pytest tests/test_custom_gui.py` | 自动通过(2026-09-02 定向 65 passed);新的材质 Inspector UI 待目标工程验收 |
27
27
  | REG-0023 | FR-0009 FR-0010 CR-0010 | material-gui-spec-atomic:属性名定位;JSON 顺序/中文分组/技术 Tooltip/常驻说明以 ASECLI 标记原子写回;未列属性稳定追加;重复/未知/错误类型/非 ASECLI 新增/dry-run/备份/CHKSM | `uv run pytest tests/test_custom_gui.py` | 自动通过(2026-09-02 定向 65 passed);中文 `inspector_name` 由 EditorGraphSpec 契约覆盖;真实材质 Inspector UI 待目标工程验收 |
28
28
  | REG-0024 | FR-0010 | commentary-native-grouping:原生可变长字段;自动边界;无关组不重叠、父子组完整包含;成员/节点/连线不变;重复归属/缺失/注入失败;dry-run/备份/CHKSM/roundtrip/CLI JSON | `uv run pytest tests/test_commentary.py` | 自动通过;真实参考 25 组只读解析且 validate 0 Comment 错误;真实画布见 REG-0041 |
@@ -53,9 +53,13 @@
53
53
  | REG-0049 | FR-0009 FR-0010 FR-0011 CR-0018 | mzgui-tooltip-condition-contract:Tooltip 必填、HelpBox 可选且可增删;`EnableIfMzgui` 六种比较符贯通单属性与 spec;条件元数据同步图/编译区;原生 MZGUI 只补 authoring/Drawer,fallback 提供同名能力;缺失控制属性或多选不一致时安全置灰且不清空材质值 | `uv run --frozen pytest tests/test_custom_gui.py tests/test_custom_gui_cli.py tests/test_editor_create_spec.py tests/test_gui_support.py tests/test_gui_native_extension.py tests/test_property_presentation.py` | 双 Python全量各 `276 passed, 3 skipped`;run 34029422737 三项 job、正式资产、本机安装和隔离回滚通过;本次不启动 Editor、不截图,真实 Inspector 结论不冒充 |
54
54
  | REG-0050 | FR-0008 FR-0010 CR-0019 CR-0020 | layout-mindmap-dag-v2:真实几何协议、1/2/5/10 分支递归居中、端口顺序、共享节点主父级、Local Var 就近及跨消费组审计、Comment 内外层收框、WireNode 绕线规则、幂等、V2 审计及硬门禁零写入 | `uv run pytest tests/test_layout.py tests/test_layout_local_var_policy.py tests/test_bridge_contract.py tests/test_commentary.py` | 双 Python 全量各 `294 passed, 3 skipped`;团结 2022.3.62t13 + ASE 1.9.6.2 真实 83 节点/44 Wire 图 V2 审计零硬失败;CR-0020 定向 `53 passed`,同组三次直连不报告、两个消费组只报告生产者组外直连;线线交叉由 V2 列出并要求先经布局/WireNode 最小化;目标文件正常缩放视觉仍逐文件签收 |
55
55
  | REG-0051 | FR-0008 FR-0010 CR-0021 | layout-recursive-fishbone-v2:1/2/3/5/7/10 输入的中位主骨与上下均分、递归端口水平、局部同层输出右对齐、异宽并行模块仍保持短线、不同高度子树零重叠、Comment 保留/标题推断/96px 通道、默认 WireNode 不动、显式路由最多 2 锚点、Editor 能力探测/逻辑边等价/失败恢复 | `uv run pytest tests/test_layout.py tests/test_layout_governance.py tests/test_layout_local_var_policy.py tests/test_commentary.py tests/test_bridge_contract.py tests/test_wire_route_bridge.py` | 定向 `70 passed`;全量 `313 passed, 3 skipped`;同一输入第二次零移动;固定 Editor 事务静态契约与 mock 成功/失败恢复通过;团结 2022.3.62t13 + ASE 1.9.6.2 对真实 248 节点图(230 个活动节点参与布局)完成 V3 只读审计,修复离屏几何刷新后节点/子树/Comment 重叠、层距、主骨、穿节点、交叉和全部硬门禁均为 0,未修改生产 Shader;隔离副本空路由事务返回 `saved=true`、ASE `1.9.6.2`、结构 0 错误且原文件哈希不变,新增/移动锚点实机仍未触发;正常缩放视觉待用户签收 |
56
- | REG-0052 | CR-0023 AUD-FLOW-004 AUD-GOV-004 | release-candidate-single-gate:当前安装事实、tag/version、双 Python全量、完整治理、REG、双构建、摘要、SBOM、供应链、隔离安装与同 commit artifact OIDC 依赖 | `uv run --frozen pytest tests/test_governance.py tests/test_install_scripts.py` | 本地 16 passed;`v0.6.2` 正例通过、`v0.6.1` 负例失败;远程 tag/OIDC 未授权、未执行 |
56
+ | REG-0052 | CR-0023 CR-0026 AUD-FLOW-004 AUD-GOV-004 | release-candidate-single-gate:当前安装事实、tag/version、双 Python全量、完整治理、REG、双构建、摘要、SBOM、供应链、隔离安装与同 commit artifact OIDC 依赖 | `uv run --frozen pytest tests/test_governance.py tests/test_install_scripts.py` | `v0.6.2` tag run 34192454152 attempt 3 的 verify/package/publish 全成功;publish 复用同 run 已校验 artifact,Publisher 精确绑定仓库/workflow/environment |
57
57
  | REG-0053 | FR-0011 CR-0024 AUD-FLOW-005 AUD-FE-007 | editor-graph-spec-v3:v1/v2 兼容;primitive/recipe/属性语义;未知版本/操作/前向引用失败关闭;真实 ASE 保存重载 manifest 必须回读 precision/default/min/max;双进程无 staging | `uv run --frozen pytest tests/test_editor_create_spec.py tests/test_editor_create_spec_v3.py tests/test_editor_create_bridge.py tests/test_editor_create_cli.py tests/test_bridge_contract.py tests/test_mcp_security.py` | 自动 99 passed;隔离团结 2022.3.61t9 + ASE 1.9.6.2 双进程 `1 passed in 69.33s`,真实节点/属性/连接重载一致,0 Shader/CS error、0 staging;条件命令见 `evidence/REG-0053/README.md` |
58
58
  | REG-0054 | AUD-REL-002 | release-record-strict:REL-0008~0011 的来源、版本/提交、兼容、证据、风险、Go/No-Go、回滚与 trace 双向一致 | `uv run --frozen python tools/check_ci_governance.py` | release strict 0 finding;历史 SHA/版本/证据结论未改变 |
59
59
  | REG-0055 | AUD-MOD-002 | layout-core-public-facade:CLI 仅从 core public 导入 AseFile、Comment/Wire 类型与逻辑连线 manifest,布局输出不变 | `uv run --frozen pytest tests/test_core_contract.py tests/test_layout.py tests/test_layout_governance.py tests/test_layout_local_var_policy.py tests/test_commentary.py tests/test_wire_route_bridge.py` | 59 passed;Project Architect fitness 0 error |
60
60
  | REG-0056 | AUD-SIZE-002 | packed-executor-warning-growth:新分片超过 250 失败;现有预警片段禁止增长;Editor 5 段均低于预警且拼装保持单 payload/事务 | `uv run --frozen pytest tests/test_governance.py tests/test_editor_create_bridge.py` | LOC 负例与确定性拼装通过;MaterialGUI 300/290 冻结,Editor 176/145/139/161/114;实机随 REG-0053 |
61
- | REG-0057 | CR-0023 CR-0024 | public-release-install-rollback:`v0.6.2` tag 与版本一致;双 Python、完整治理、可复现构建、摘要、SBOM、供应链、同提交 OIDC、GitHub/PyPI 匿名回读、本机 CLI/Skill 安装及 `v0.6.1` 回滚恢复全部闭环 | `python tools/check_release_candidate.py --tag v0.6.2` + `uv run --frozen --python 3.10 pytest -q` + `uv run --frozen --python 3.12 pytest -q` + release workflow + 正式产物安装/回滚 | 本地双 Python各 `341 passed, 3 skipped`;`59 parsed / 6 conditional / 0 missed`;双构建、SPDX、供应链、wheel 版本/parse/Skill 幂等/GUI smoke 通过;远端与本机正式源后验随发布执行 |
61
+ | REG-0057 | CR-0023 CR-0024 CR-0025 CR-0026 | public-release-install-rollback:`v0.6.2` tag 与版本一致;双 Python、完整治理、可复现构建、摘要、SBOM、供应链、GitHub/PyPI 匿名回读、本机 CLI/Skill、官方 PyPI 隔离安装及 `v0.6.1` 回滚恢复全部闭环 | `python tools/check_release_candidate.py --tag v0.6.2` + tag run 34192454152 attempt 3 + GitHub Release 五项资产与 PyPI JSON 摘要 + `uvx --refresh --index-url https://pypi.org/simple --from asecli==0.6.2` + 正式 wheel 安装/回滚 | Python各 `341 passed, 3 skipped`;`59 parsed / 6 conditional / 0 missed`;GitHub 五项资产一致;PyPI wheel/sdist 摘要与 GitHub 相同、`yanked=false`;本机 `asecli 0.6.2`、Skill 安装/幂等、PyPI 版本/parse 与隔离 `0.6.2 0.6.1 → 0.6.2` 通过 |
62
+ | REG-0058 | CR-0027 | mainstream-agent-skill-installation:开放 `.agents` 与 Codex/Claude/Cursor/Gemini/Copilot 用户级和项目级目录矩阵;`all` 以 `.agents` + `.claude` 最小覆盖五类 Agent;无参数/`--skill-root` 向后兼容;同内容幂等、不同内容在任何写入前拒绝 | `uv run --frozen pytest tests/test_skill_install.py tests/test_cli_contract.py tests/test_install_scripts.py` + `skill-creator/scripts/quick_validate.py skills/asecli` + Project Architect strict + `git diff --check` | 定向 46 passed;Skill validator、Project Architect strict 与隔离 wheel 的项目级 `all` 安装/幂等通过;BUG-0023 已修复编译与 SHA 回归;全量 358 passed/3 skipped;真实 MCP 结果见 REG-0059,发布见 REL-0013 |
63
+ | REG-0059 | BUG-0023 | mcp-method-body-compilation:固定片段可用于 MCP Execute 方法体;不使用 System.Tuple/局部类型声明;保留 values;SHA 与行为修复一致 | `uv run --frozen pytest tests/test_editor_create_bridge.py tests/test_editor_create_cli.py` + 真实 MCP 三类 spec create/validate/recompile | 全量 358 passed/3 skipped;两个 v2 spec 实机通过;sphere_mask 编译通过但 Radius 重载失败并回滚,未称为端到端通过 |
64
+ | REG-0060 | CR-0028 | conversion-baseline:来源输出分量、目标端口、Register/Get 等价折叠、错误引用/环/重复输入失败关闭、常量变化拒绝、显式 fanout 与默认消费组策略、既有 Register 幂等复用 | `uv run --frozen pytest tests/test_graph_review.py tests/test_layout_local_var_policy.py` | 定向 94 passed;自动环节已验证;真实历史 Wave Noise 文件只读识别 12 个候选;不声明源 SG 默认值或画面等价 |
65
+ | REG-0061 | CR-0028 | island-packing:保持岛内鱼骨相对位置、逻辑依赖顺序、主输出锚定、二次幂等、非法几何与列数失败关闭、保留默认布局契约 | `uv run --frozen pytest tests/test_island_layout.py tests/test_layout_governance.py tests/test_layout.py tests/test_cli_contract.py` | 定向 94 passed;自动环节已验证;本次未写 Unity 工程,实机画布待验 |
@@ -98,7 +98,12 @@ kickoff_completion: complete
98
98
  | TASK-0055 | AUD-REL-002 | 补齐 REL-0008~0011 固定字段与双向发布追溯 | TASK-0053;历史 run/tag/hash 证据 | releases;traceability;module/task/REG 回链 | 修改历史版本/SHA;编造 Editor/视觉证据 | TASK-0053/long/2026-09-08 | REG-0054;release/docs/trace strict | 现有事实无法支持字段时写未验证而非补造 | release strict 0 finding | 已完成 |
99
99
  | TASK-0056 | AUD-MOD-002 | layout CLI 只依赖 core 公共契约 | 2026-09-08 fitness 4 个私有导入 | core facade;layout_command;契约测试 | 改布局算法或 CLI JSON | TASK-0055/long/2026-09-08 | REG-0055;59 个布局/契约测试;fitness strict | 输出或布局结果变化时回滚 facade | fitness 0 error;59 passed | 已完成 |
100
100
  | TASK-0057 | AUD-SIZE-002 | 阻止 C# 预警片段增长并拆分 Editor 资源族 | TASK-0054;确定性资源拼装 | project-architect config;LOC checker;Editor 资源分片;治理测试 | 改单 payload/nonce/rollback;新增永久例外 | TASK-0056/long/2026-09-08 | REG-0056;LOC 负例、拼装 SHA、bridge pytest、隔离 Editor E2E | 拼装字节或真实事务行为变化时回滚分片 | Editor 资源 5 段均低于 250;MaterialGUI 300/290 冻结基线 | 已完成(Editor 实机随 REG-0053) |
101
- | TASK-0058 | CR-0023 CR-0024 | 发布并安装公开版本 `v0.6.2` | 用户明确要求推送、发布新版本并安装本机;TASK-0053 TASK-0054 TASK-0057 | `main`、REL-0012、GitHub/PyPI 正式资产、本机 CLI/Skill | CLI Hub;修改生产 Shader;覆盖不同内容 Skill;绕过失败门禁 | TASK-0057/long/2026-09-08 | REG-0057;双 Python 全量、完整治理、双构建、远端 CI/OIDC、公开资产匿名回读、本机安装与 `v0.6.1` 回滚恢复 | 冲突、门禁、OIDC、摘要、匿名回读、安装或回滚任一失败即停止 | 本地候选门禁已通过;进入远端发布链 | 进行中 |
101
+ | TASK-0058 | CR-0023 CR-0024 CR-0025 CR-0026 | 发布并安装公开版本 `v0.6.2` | 用户明确要求推送、发布新版本并安装本机,先收敛为 GitHub Release,取得 PyPI 账号后授权继续配置;TASK-0053 TASK-0054 TASK-0057 | `main`、REL-0012、GitHub/PyPI 正式资产、本机 CLI/Skill | CLI Hub;修改生产 Shader;覆盖不同内容 Skill;绕过失败门禁;保存 API Token | TASK-0057/long/2026-09-08 | REG-0057;双 Python全量、完整治理、双构建、远端 verify/package/OIDC publish、双渠道匿名摘要、官方 PyPI 隔离安装、本机安装与 `v0.6.1` 回滚恢复 | 冲突、门禁、OIDC、摘要、匿名回读、安装或回滚任一失败即停止 | `v0.6.2@7f98356`;run 34192454152 attempt 3 全成功;GitHub 五项资产与 PyPI wheel/sdist 摘要一致;本机 CLI/Skill、PyPI `uvx` 与隔离回滚恢复通过;REL-0012 | 已发布 |
102
+ | TASK-0059 | CR-0027 | 将 ASECLI Skill 与安装入口扩展为 Codex、Claude Code、Cursor、Gemini CLI、GitHub Copilot 通用 | 用户要求改成主流 Agent 通用;CR-0015 安全安装基线 | `skill_command.py`、CLI 参数、Skill/README、一键安装脚本、测试与治理追溯 | 覆盖不同内容 Skill;删除旧 Codex 默认;修改 Shader/Editor;推送、tag 或发布 | TASK-0058/long/2026-09-08 | REG-0058;目标矩阵、旧行为、幂等/冲突预检、wheel、Skill validator、完整治理 | 路径未经官方支持、旧调用破坏、冲突后部分内容写入或 Skill 校验失败即回滚 | 定向 46 passed;Skill validator、Project Architect strict、隔离 wheel 安装通过;BUG-0023 已解除编译与 SHA 阻塞,全量 358 passed/3 skipped | 已完成(发布见 TASK-0060/REL-0013) |
103
+ | TASK-0060 | CR-0027 BUG-0023 | 发布 v0.6.3 主流 Agent Skill 与 MCP 编译补丁 | 用户推送发布授权、真实 MCP 证据 | 版本/安装脚本、CLI/Skill、C# 分片、测试、REL-0013 | 修改 SGCLI、覆盖用户 Skill、移动旧 tag | TASK-0059/long/2026-09-08 | REG-0058 REG-0059;双 Python 全量、治理、双构建、远端 CI、双渠道摘要和安装回滚 | CI、摘要或安装失败停止 | v0.6.3@a758d0f;run 34205409407 全成功;双渠道摘要、正式安装/回滚通过;SphereMask 已知限制;REL-0013 | 已发布 |
104
+ | TASK-0061 | CR-0028 | 核对转换图计算基线及端口级复用计划 | 用户缺口补齐授权 | graph_review.py/reuse_plan.py/core 公共导出/layout_audit.py 与相关测试 | SGCLI、生成 HLSL、猜写 Local Var | long/2026-09-08 | REG-0060;错误端口和常量变化必须失败,默认策略保持 | 折叠丢分量或误吞默认值即停止 | 定向 94 passed;自动环节已验证;只读,不宣称自动创建接口 | 自动验证完成,实机待验 |
105
+ | TASK-0062 | CR-0028 | 独立计算岛刚性多列摆放 | TASK-0061;已有鱼骨与真实几何契约 | island_layout.py/meticulous_layout.py 与测试 | 拆改岛内连接、自动 WireNode 路由、虚构几何 | long/2026-09-08 | REG-0061;相对位置、依赖与二次幂等 | 几何缺失/布局硬失败时零写入 | 定向 94 passed;自动环节已验证;实机待验 | 自动验证完成,实机待验 |
106
+ | TASK-0063 | CR-0028 | 将转换后交付流程接入 CLI 与 Skill | TASK-0061 TASK-0062;用户完整过程 | graph_review_command.py/main.py/layout_command.py;Skill/README/治理 | 发布、覆盖用户 Skill、改并行创建器、生产 Shader | long/2026-09-08 | REG-0060 REG-0061;CLI JSON/只读/失败码、Skill validator | 计划冒充创建或结构冒充视觉时停止 | 定向 94 passed;自动环节已验证;未接入自动 Local Var Editor 创建 | 自动验证完成,实机待验 |
102
107
 
103
108
  ## 验证、风险与回滚
104
109
 
@@ -110,6 +115,6 @@ kickoff_completion: complete
110
115
  ## 启动完成确认
111
116
 
112
117
  - [x] 上游架构文档已确认且本计划仅从其派生
113
- - [x] 58 张原子任务卡全部可执行;本次新增 CR/BUG/REG 双向链接完整
118
+ - [x] 63 张原子任务卡已定义;本次新增 CR/REG 双向链接完整(实机项保持待验)
114
119
  - [x] 里程碑、验收命令、停止条件与回滚已定义
115
120
  - [x] 门禁与审计计划已建立
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "asecli"
3
- version = "0.6.2"
3
+ version = "0.6.4"
4
4
  description = "Agent-native CLI for reading, modifying, validating and compiling Amplify Shader Editor assets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -53,6 +53,7 @@ exclude = [
53
53
  "/docs/03-quality/evidence",
54
54
  "/docs/04-delivery/releases",
55
55
  "/docs/05-audits",
56
+ "/e2e-results",
56
57
  ]
57
58
 
58
59
  [tool.pytest.ini_options]
@@ -21,13 +21,18 @@ if ($env:ASECLI_REF) {
21
21
  $tag = (Invoke-RestMethod "https://api.github.com/repos/$repo/releases/latest").tag_name
22
22
  }
23
23
  if (-not $tag) {
24
- $tag = "v0.6.1"
24
+ $tag = "v0.6.4"
25
25
  }
26
26
 
27
27
  $version = $tag.TrimStart("v")
28
28
  $wheel = "https://github.com/$repo/releases/download/$tag/asecli-$version-py3-none-any.whl"
29
29
  uv tool install --force $wheel
30
- & asecli install-skill
30
+ $skillHelp = (& asecli install-skill --help 2>&1 | Out-String)
31
+ if ($skillHelp -match "--agent") {
32
+ & asecli install-skill --agent all
33
+ } else {
34
+ & asecli install-skill
35
+ }
31
36
  if ($LASTEXITCODE -ne 0) {
32
37
  Write-Host "CLI is installed. Skill was skipped because a different copy already exists."
33
38
  }
@@ -32,13 +32,17 @@ else
32
32
  TAG=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | sed -n 's/.*"tag_name": *"\([^"]*\)".*/\1/p' | head -n 1)
33
33
  fi
34
34
  if [ -z "$TAG" ]; then
35
- TAG="v0.6.1"
35
+ TAG="v0.6.4"
36
36
  fi
37
37
  VERSION=${TAG#v}
38
38
  WHEEL="https://github.com/${REPO}/releases/download/${TAG}/asecli-${VERSION}-py3-none-any.whl"
39
39
 
40
40
  uv tool install --force "$WHEEL"
41
- asecli install-skill || echo "CLI is installed. Skill was skipped because a different copy already exists."
41
+ if asecli install-skill --help 2>&1 | grep -q -- "--agent"; then
42
+ asecli install-skill --agent all || echo "CLI is installed. Skill was skipped because a different copy already exists."
43
+ else
44
+ asecli install-skill || echo "CLI is installed. Skill was skipped because a different copy already exists."
45
+ fi
42
46
  echo
43
47
  echo "Done. Try: asecli --help"
44
48
  echo "If the command is not found, open a new terminal."