Skip to content

chore(release): prepare for v0.1.3 release#10

Merged
em0t merged 2 commits intomainfrom
chore-v0.1.3-release
Dec 19, 2025
Merged

chore(release): prepare for v0.1.3 release#10
em0t merged 2 commits intomainfrom
chore-v0.1.3-release

Conversation

@em0t
Copy link
Copy Markdown
Collaborator

@em0t em0t commented Dec 19, 2025

改动内容

Git 插件 (0.1.1)

  • 新增 commit-push 命令,支持提交并推送工作流
  • 新增 command-procedures.md 共享逻辑层,统一任务 ID 提取和 commit 生成规范
  • 大幅扩展 README.md,增加架构说明、调用流程图、命令对比表
  • 改进 commit 信息格式,支持英文和中文双语描述
  • 更新所有命令和 Skill 文档,引用共享逻辑层避免重复

Sync 插件 (0.1.3)

  • 新增 cursor-templates 目录,提供预格式化的 Cursor 兼容模板
  • 改进同步策略,采用直接覆盖模式确保配置一致性
  • 简化同步流程,使用三级模板查找和直接复制(无需运行时转换)
  • 更新 basic.md 和 cursor.md 命令文档,说明新的同步策略

其他

  • 新增 CHANGELOG.md,记录版本历史和主要更新
  • 统一升级版本号:marketplace 0.1.3, git 0.1.1, sync 0.1.3

影响面

  • Git 插件:新增命令和共享逻辑层,向后兼容
  • Sync 插件:同步策略改为直接覆盖,简化团队配置管理
  • 文档:大幅完善,提升可维护性和用户体验
  • 无破坏性变更,所有现有功能保持兼容

em0t added 2 commits December 19, 2025 14:19
## 改动内容

### Git 插件 (0.1.1)
- 新增 commit-push 命令,支持提交并推送工作流
- 新增 command-procedures.md 共享逻辑层,统一任务 ID 提取和 commit 生成规范
- 大幅扩展 README.md,增加架构说明、调用流程图、命令对比表
- 改进 commit 信息格式,支持英文和中文双语描述
- 更新所有命令和 Skill 文档,引用共享逻辑层避免重复

### Sync 插件 (0.1.3)
- 新增 cursor-templates 目录,提供预格式化的 Cursor 兼容模板
- 改进同步策略,采用直接覆盖模式确保配置一致性
- 简化同步流程,使用三级模板查找和直接复制(无需运行时转换)
- 更新 basic.md 和 cursor.md 命令文档,说明新的同步策略

### 其他
- 新增 CHANGELOG.md,记录版本历史和主要更新
- 统一升级版本号:marketplace 0.1.3, git 0.1.1, sync 0.1.3

## 影响面
- Git 插件:新增命令和共享逻辑层,向后兼容
- Sync 插件:同步策略改为直接覆盖,简化团队配置管理
- 文档:大幅完善,提升可维护性和用户体验
- 无破坏性变更,所有现有功能保持兼容
## 改动内容
- 更新插件版本号:git 0.1.1, sync 0.1.3
- 更新插件描述,反映新功能特性
- 添加 CHANGELOG.md 链接,方便查看版本历史
- 重写 Git 工作流文档,清晰说明三种提交方式及适用场景
  - /git:commit:仅提交(本地开发)
  - /git:commit-push:提交并推送(备份到远程)
  - /git:commit-push-pr:提交、推送并创建 MR(完整流程)

## 影响面
- 文档更准确,用户可以更清楚地选择合适的命令
- 新增 CHANGELOG 链接,提升可维护性
@em0t em0t merged commit f50bc68 into main Dec 19, 2025
@em0t em0t deleted the chore-v0.1.3-release branch December 22, 2025 07:49
Jun-Hex added a commit that referenced this pull request Apr 21, 2026
… writeback phase

Previously requirement-traceability only emitted forward_verification.json
and required a separate metersphere-sync execute call to write results
back to MS test plan. Local AI workflow runs that didn't go through the
qa-workflow orchestrator missed this step and left MS plans empty.

- requirement-traceability: add Phase 6 writeback (skipped in smoke-test
  mode) that invokes metersphere-sync execute internally
- qa-workflow: drop the standalone metersphere-sync execute step;
  qa-full step IDs renumbered (#10/#11/#12 -> #9/#10/#11)
- fix earlier numbering inconsistencies in qa-workflow PHASES/SKILL
- bump test plugin to 0.0.9 and marketplace metadata to 0.1.39

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jun-Hex added a commit that referenced this pull request Apr 21, 2026
…A wiring, codex agent (#52)

* feat(test): add QA workflow plugin with test design and code-level test generation skills #TAP-6927590596

## 改动内容
- 新增 test 插件,从 skills-hub 迁移 6 个 QA 工作流 skill(requirement-clarification、test-design、test-review、requirement-traceability、bug-fix-review、shared-tools)
- 新增 unit-test-design skill(单元测试代码生成,支持从项目已有测试学习约定)
- 新增 integration-test-design skill(集成测试代码生成,支持 API/DB/消息队列/gRPC 测试)
- 新增测试质量防线(防硬编码过测、断言质量、防 Mock 滥用、变异测试思维、Property-Based Testing)
- Python 脚本安全加固(移除硬编码 URL/ID、路径穿越防护、token 过期、词边界正则、分页支持)

## 影响面
- 新增 plugins/test/ 目录(9 个 skill + shared-tools 脚本)
- marketplace.json 新增 test 插件注册(v0.0.6)
- .gitignore 新增 !plugins/test/skills/test-*/ 排除规则

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): add multi-agent QA skills and fix review findings #TAP-6927590596

- Add 4 new skills: test-case-generation (with redundant-pair review),
  verification-test-gen, test-failure-analyzer, ui-fidelity-check
- Add 10 agent definitions under agents/ directory (multi-perspective,
  redundant-pair, forward/reverse tracers, failure classifier)
- Merge deprecated test-design + test-review into test-case-generation
- Enhance existing skills with dual-channel tracing, self-loop protocol,
  quantified confidence scoring, and model tiering strategy
- Fix 11 review findings: version sync, forward-tracer degradation
  format adaptation, R- prefix normalization, target_id in agent outputs,
  verification.confidence null type, final_cases.json consumption,
  orphaned agents/test-review cleanup, README dedup

Made-with: Cursor

* feat(shared-tools): upgrade fetch_feishu_doc.py with wiki children traversal and full rendering

Replace simplified 409-line version with full-featured 1017-line implementation
that supports --with-children / --max-children for wiki sub-document fetching,
recursive block rendering via MarkdownRenderer class, table/sheet/board content
extraction, and FEISHU_HOST backward compatibility.

Made-with: Cursor

* feat(requirement-traceability): add smoke-test mode with defect extraction and P0 gate

Made-with: Cursor

* feat(test): define ask_question structured output format for interactive Q&A cards

Skill docs only described ask_question as a natural language concept without
specifying an output schema. Agent produced plain markdown Q&A that the platform
could not parse into interactive cards. Added a formal AskUserQuestion + JSON
code fence format in CONVENTIONS.md with field schema, constraints and examples.
Updated requirement-clarification (3.3) and test-case-generation (6.2) PHASES.md
to reference and demonstrate the new format.

Made-with: Cursor

* fix(test): track review agent definitions excluded by gitignore

The test-*/ pattern in .gitignore was unintentionally excluding
agents/test-case-generation/ (containing review-agent-1.md and
review-agent-2.md), causing review tool degradation in the
test-case-generation workflow. Add an exception for the agents
directory matching the existing skills exception.

Made-with: Cursor

* fix(test): prohibit priority and method prefixes in test case titles

Strengthen title field constraints to explicitly ban redundant prefixes
like "P1 等价类-有效类:" since priority and test_method are separate fields.

Made-with: Cursor

* feat(test): add change-analysis, test-case-review, and api-contract-validation skills

New skills:
- change-analysis: Story 7-phase impact analysis + Bug 5-phase root cause
  with coverage assessment and supplementary case generation
- test-case-review: independent 4-dimension review (coverage, completeness,
  correctness, quality) with supplementary case generation
- api-contract-validation: deep frontend-backend API contract consistency
  validation with breaking change detection

Enhancements to existing skills:
- requirement-clarification: design-draft and joint doc+design modes,
  implementation_brief.json output, platform_scope, API contract dimension
- bug-fix-review: local diff input support, rename output to
  bug_fix_analysis.json, move code change fields to any_of
- CONTRACT_SPEC: add any_of input category
- verification-test-gen: add story_link shortcut input

Code review fixes:
- Sync marketplace.json version with plugin.json (0.0.28)
- Fix api-contract-validation contract: required -> one_of for frontend inputs
- Rename change-analysis Bug output to change_fix_analysis.json
- Add .claude/settings.json to .gitignore
- Add v0.0.17 changelog and complete v0.0.18 entries in README

Made-with: Cursor

* feat(test): enhance unit-test-design with business-scenario-driven principles and fixture best practices

- Add 5 business-scenario-driven design principles (independent truth source,
  value assessment by behavior layer, user-story naming, fixture-driven testing,
  historical bug-driven strategy)
- Add iOS/Swift fixture loading best practices (#filePath relative path)
- Add batch framework consistency rule for Swift Testing vs XCTest
- Extract detailed phase steps to PHASES.md, keep SKILL.md as summary
- Add test_plan.md lifecycle and content update rules
- Add helper scoping conventions to avoid cross-module naming conflicts

Made-with: Cursor

* docs(test): 修复 unit-test-design skill 文档交叉引用一致性问题 #TAP-6927590596

## 改动内容
- 将 test_plan.md 模板中的 HTML 注释改为可见的加粗标题分隔(Go/Swift 示例)
- 统一 PHASES.md 与 CONVENTIONS.md 中子代理术语为「Task 工具(子代理机制)」
- Helper 命名规范补充多语言示例(Go/Python/TS)
- 合并 Swift/Go 重复的注释语法描述
- Phase 2 生命周期表补充「需求关联」产出项
- Phase 2 价值评估步骤明确要求记录分层标签,供 Phase 3 参数化评估消费
- 参数化测试模板中的 Go 特定函数名改为语言无关占位
- METHODS.md 的 Bundle.module 加载补充 XCTest 框架示例

## 影响面
- 仅文档变更,不影响代码逻辑
- 提升 SKILL.md / PHASES.md / METHODS.md 三文件间的一致性
- 向后兼容

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>
Made-with: Cursor

* fix(requirement-traceability): exclude MR workflow status from smoke-test defect judgment

MR merge status (opened/draft), merge conflicts, pipeline status, and review
status are CI/CD workflow concerns, not code implementation defects. Add
exclusion rules to prevent false P0s when MRs are legitimately unmerged.

Made-with: Cursor

* feat(skills): adopt tiered Figma MCP data fetching protocol

Replace single get_figma_data alias with graduated figma_metadata /
figma_context / figma_screenshot / figma_extract aliases in shared-tools
and all 5 workflow skills. Add use_figma JS script templates for
text extraction, component structure, interactive state, and layout.

Made-with: Cursor

* feat(test): add data sufficiency gate for conditional report sections #TAP-6927590596

## 改动内容
- CONVENTIONS.md: 新增"条件触发章节的数据充分性门控"通用约定,定义三级判定(sufficient/partial/none)
- PHASES.md 3.2.4: 插入 Step 1.5 数据充分性检查,扫描源材料中 API 技术证据,无证据则跳过契约提取
- PHASES.md 4.4: 整合 API 契约前增加 evidence level 前置检查
- PHASES.md 4.5: 新增报告章节输出规则,evidence 为 none 时省略该章节
- SKILL.md: 注意事项新增跳过规则引用,输出格式说明补充 none 场景
- CHECKLIST.md: API 契约检查项增加 api_evidence_level 前提条件
- contract.yaml: 新增 api_evidence_level 结构化输出字段

## 影响面
- requirement-clarification skill: 当参考信息不含代码或技术文档时,不再凭推测生成 API 契约章节
- 下游 skill: api_evidence_level 字段可用于程序化判断是否跳过了 API 契约
- 通用约定: 其他 skill 的条件触发章节可复用此门控模式

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): add requirement-review skill with 12-dimension framework

## Changes
- Add requirement-review skill (SKILL.md, PHASES.md, CHECKLIST.md, TEMPLATES.md, contract.yaml)
- Upgrade from 6 to 12 review dimensions with QA checklist integration
- Add document-design cross-validation (conditional on design artifact availability)
- Add multi-perspective parallel analysis for complex requirements (>=5 FPs)
- Add structured ask_question format for blocking item confirmation
- Add concrete report format examples for consistent LLM output
- Update plugin description to include both review and clarification
- Bump test plugin version 0.0.29 -> 0.0.30, metadata 0.1.38 -> 0.1.39

## Impact
- New skill directory: plugins/test/skills/requirement-review/
- Plugin description updated in plugin.json and marketplace.json

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(change-analysis): add Android third-party interaction impact assessment module #TAP-6927590596

## 改动内容
- 新增 EXTERNAL-IMPACT.md:定义 Android 三方交互命中判断规则和评估流程
- 新增 taptap-android-third-party-interaction-capabilities.md:主站侧交互能力参考
- 新增 taptap-sdk-android-to-main-app-calls.md:SDK 侧调用参考
- PHASES.md 增加阶段 3A 命中检测、阶段 4 外部影响评估、阶段 6 测试评估
- SKILL.md 增加按需扩展模块说明和约束规则

## 影响面
- change-analysis skill:Android 项目 MR 分析时自动执行命中检测
- 适配本地版本:generated_cases.json → supplementary_cases.json,report.md → change_analysis.json

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): 中间文件消歧重命名、共享内容提取、废弃 skill 合并 #TAP-6927590596

## 改动内容
- 中间产出文件消歧重命名:analysis_checklist.md → 各 skill 专属名(change_checklist / traceability_checklist / verification_checklist / bug_fix_checklist);coverage_report.json → 带前缀名(change_coverage_report / traceability_coverage_report);review_result.md → tc_gen_review / tc_review_detail
- CONVENTIONS.md 拆分:断言审计、Agent 定义规范、需求追溯协议等大段内容提取到 _shared/ 共享目录(ASSERTION_AUDIT / AGENT_PROTOCOL / TRACEABILITY_PROTOCOL / REVIEW_4_DIMENSIONS / REQUIREMENT_DIMENSIONS)
- bug-fix-review 标记废弃,能力合并到 change-analysis Bug 场景(新增 risk_assessment.json 输出)
- verification-test-gen 重命名为 verification-test-generation
- requirement-clarification / requirement-review CHECKLIST.md 提取共享评审维度到 _shared/

## 影响面
- 所有引用旧文件名的 skill(change-analysis / requirement-traceability / test-case-generation / test-case-review / verification-test-gen / api-contract-validation)均已同步更新
- CONVENTIONS.md 从 ~800 行精简到 ~250 行,内容移入 _shared/ 子目录
- 插件版本 0.0.31 → 0.0.32,marketplace 0.1.40 → 0.1.41

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): SKILL.md 样板精简、Pipeline 数据流规格、合约校验脚本 #TAP-6927590596

## 改动内容
- 13 个 SKILL.md 移除模型分层重复介绍行,合并共享工具引用为单行
- 新建 PIPELINES.md 正式定义 8 条链路的 skill 序列和输出→输入文件名映射
- 新建 validate_contracts.py 校验 contract.yaml 一致性(name/冲突/from_upstream)
- README.md 目录结构同步更新(_shared 目录、废弃标注、PIPELINES.md)
- 修正 verification-test-generation/contract.yaml name 字段(重命名遗漏)

## 影响面
- 所有 test plugin skills 的 SKILL.md 文档瘦身
- 新增 PIPELINES.md 供编排层实现跨 session 数据传递参考
- 新增 validate_contracts.py 可作为 CI 校验步骤

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): optimize test plugin skills — slim docs, split METHODS, improve triggers #TAP-6927590596

## 改动内容
- Slim deprecated bug-fix-review: 113→12 line SKILL.md, delete PHASES.md, mark contract deprecated
- Split METHODS.md into language-specific files: integration (1099→30 index + 5 files), unit (921→38 index + 7 files)
- Add Chinese trigger keywords to 4 skill descriptions (verification-test-gen, api-contract, ui-fidelity, test-failure)
- Move review principles + 4-dimension table from test-case-generation SKILL.md to CHECKLIST.md
- Shorten reference chains: CONVENTIONS.md#断言审计 → direct _shared/ASSERTION_AUDIT.md links
- Strengthen requirement-review vs requirement-clarification boundary in descriptions
- Add duplicate review detection to test-case-review init phase
- Fix PIPELINES.md missing code_change_analysis.md in change-analysis output
- Expand terminology table (+5 entries) and add contract validation tool guide

## 影响面
- test plugin skills: 26 files modified, 12 new files (methods/), 1 deleted
- Net reduction: ~2000 lines from main skill files (content moved to methods/ subdirectories)
- No logic changes — pure documentation restructuring and description optimization

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): 为全部多阶段 skill 添加阶段执行保障和输出验证机制

审计发现所有 test skill 缺少最终阶段的输出文件验证步骤,中间阶段完成后
可能直接终止导致产物文件丢失。本次修复:
- CONVENTIONS.md 新增「阶段执行保障」通用约定
- 13 个 SKILL.md 统一添加 Closing Checklist(CRITICAL)节
- requirement-clarification 添加 clarify→consolidate 强制衔接和输出验证
- test-case-review 标注 review_result.md 为中间文件消除命名歧义

Made-with: Cursor

* fix(test): fix review findings in shared-tools scripts #TAP-6927590596

- fix stderr mixing progress logs with JSON metadata in fetch_feishu_doc.py (add [LOG] prefix to log messages)
- fix diff_stats.additions semantic error in gitlab_helper.py (rename to changed_files_count)
- fix table rendering misalignment for merged cells in fetch_feishu_doc.py (append empty string instead of skipping)
- change default ref from master to main in gitlab_helper.py file-content subcommand
- align env var documentation: FEISHU_BASE_URL as primary (FEISHU_HOST as alias) in SKILL.md and contract.yaml

- shared-tools scripts: fetch_feishu_doc.py, gitlab_helper.py
- shared-tools documentation: SKILL.md, contract.yaml
- downstream consumers of stderr metadata and diff_stats output

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): add output workspace convention for requirement-based artifact organization #TAP-6927590596

- CONVENTIONS.md 新增「输出工作区」约定,定义 $TEST_WORKSPACE 环境变量
- .gitignore 添加 plugins/test/workspace/ 和 plugins/test/skills/*/output/ 规则
- 版本升级 test 插件 0.0.30 → 0.0.31

- test 插件:本地 AI 工作流调用多个 skill 时,可通过 $TEST_WORKSPACE 将产物按需求维度组织
- 向后兼容:未设置环境变量时行为不变

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): fix search_prs.py state filter and add missing env_vars declaration #TAP-6927590596

- fix search_prs.py to use is:open+is:merged qualifiers instead of state:open+state:closed, excluding abandoned/rejected PRs from traceability results
- extract merged_at from GitHub Search API pull_request object instead of hardcoding empty string
- add missing env_vars (GITLAB_URL, GITLAB_TOKEN, GITLAB_PROJECT_MAPPING, GITHUB_TOKEN, GITHUB_REPO_MAPPING) to api-contract-validation/contract.yaml
- bump test plugin version 0.0.31 → 0.0.32, marketplace 0.1.40 → 0.1.41

- shared-tools/scripts/search_prs.py: downstream skills (requirement-traceability, change-analysis, bug-fix-review) will no longer receive false positive PR matches
- api-contract-validation/contract.yaml: env var consistency with other skills using the same script dependencies

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: prepare release v0.1.30 — add test plugin v0.0.1

Reset versions to production+1, update CHANGELOG, README, and plugin
version history. Remove orphaned quality plugin entry from marketplace.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(test): add metersphere-sync skill for test plan management

Add new metersphere-sync skill and metersphere_helper.py shared script
to sync AI-generated test cases to MeterSphere platform.

Key capabilities:
- Import test cases to MS with auto module creation and "AI 用例生成" tag
- Find-or-create test plans (idempotent, scoped to AI 工作流 category)
- Associate cases to plans
- Auto-mark execution results based on verification confidence scores
  - confidence >= 90 + pass → Pass
  - confidence >= 70 + fail → Failure
  - others → Prepare (manual needed) with comment

All MS API endpoints verified against live instance. Default config
values built into script for zero-configuration usage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(test): update README for metersphere-sync skill addition

Add metersphere-sync to skills table, directory structure, environment
variables, and version history sections.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(test): add qa-workflow orchestrator skill

Add end-to-end QA workflow orchestrator that automatically chains
skills from requirement clarification through code review:

- Phase 1: requirement-clarification → test-case-generation → metersphere-sync
- Phase 2: change-analysis + verification-test-generation (parallel) →
  conditional ui-fidelity-check / api-contract-validation →
  requirement-traceability → metersphere-sync(execute)
- Phase 3: git:code-reviewing → git:commit-push-pr (optional)

Key features:
- Conditional branches based on requirement characteristics
  (design_link → UI check, coordination_needed → API contract)
- Multiple code change sources (MR link, local git diff, auto-PR)
- 3 workflow templates: qa-full, qa-lite (no MS), verify-only
- File-based state persistence with interrupt recovery
- Parallel execution for independent verification steps

Also adds confirm_policy parameter to test-case-generation for
automated orchestration (accept_all mode skips user confirmation).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(test): optimize metersphere_helper.py based on code review

- Add concurrent case import with ThreadPoolExecutor(max_workers=5)
  instead of sequential HTTP calls (5x faster for bulk imports)
- Add concurrent batch result updates
- Fix modules_created counter bug (was always 0 due to TOCTOU check
  after ensure_module already created the module)
- Add is_new flag to _ensure_module return value
- Move AES import to module level for early failure detection
- Fix quadratic bytes concatenation in multipart body construction

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): add requirement_text input to qa-workflow

Support plain text requirement descriptions as input, in addition
to story links and local documents.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): clarify story_link description as feishu doc URL

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style(test): capitalize plugin title in README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(test): systematic skill review fixes and workflow enforcement

## 改动内容
- fix: frontmatter name mismatch in verification-test-generation (verification-test-gen → verification-test-generation)
- fix: 3 Closing Checklist file name mismatches (test-case-generation, change-analysis, requirement-traceability)
- fix: 5 broken reference links to non-existent CONVENTIONS.md anchors
- delete: remove deprecated bug-fix-review skill directory and clean up all references
- enhance: add trigger phrases to unit-test-design, integration-test-design, verification-test-generation
- enhance: add missing Quick Start fields (Skill type for requirement-review, failure gate for qa-workflow)
- refactor: simplify Figma MCP sections in 7 skills to single-line shared-tools references
- enforce: add mandatory phase completion checks with Glob validation and stop conditions (test-case-generation)
- enforce: add explicit Read requirement and file existence gate in test-case-review summary phase
- convention: add inter-phase file validation and large file reading strategy to CONVENTIONS.md

## 影响面
- 所有 15 个 skill 的 SKILL.md(bug-fix-review 已删除)
- test-case-generation/PHASES.md 和 test-case-review/PHASES.md 的阶段执行流程
- CONVENTIONS.md 新增 3 个通用约定章节
- README.md 目录结构和核心 Skills 表

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): fallback to MS_DEFAULT_NODE_ID when parent_module_id is empty

import-cases 传入空 parent_module_id 时,模块会以 parentId="" 创建为孤儿节点,
导致用例全部落入「未规划用例」。现在空值时回退到 MS_DEFAULT_NODE_ID。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(test): add requirement sufficiency gate and iterative re-entry for test-case-generation

## 改动内容
- 插入 Phase 2.5 需求充分性门控:4 维度三级判定(功能范围/验收标准/输入输出/状态流程),消费上游 clarified_requirements 信号,不充分时暂停请求用户补充或标注风险
- 修改 Phase 2.4 多视角分析触发条件:OR → AND + 充分性前提,信息不足时不跳过分析
- 修改 Phase 3.0 快速路径:增加充分性条件,不充分的简单需求走完整流程
- review-agent-1/2 追加推测性内容审查:当充分性非 sufficient 时逐条检查用例细节是否有需求原文依据
- Phase 4.1/4.2 追加 confidence_ceiling 传播:生成阶段读取并应用置信度上限
- 插入 Phase 1.5 重入检查:支持 re_entry_phase 参数从指定阶段重入,配合 requirement_change_summary 实现增量更新
- contract.yaml 新增 re_entry_phase、requirement_change_summary 输入及 sufficiency_assessment.json 产物

## 影响面
- test-case-generation skill 的 PHASES.md、SKILL.md、contract.yaml
- review-agent-1.md 和 review-agent-2.md 的分析重点和输入定义
- 不影响其他 skill 和上游 requirement-clarification 的接口

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): resolve confidence scoring contradictions in requirement-traceability

## 改动内容
- align PHASES.md bidirectional confidence rule with CONVENTIONS.md cross-agent consensus rule
- add 60-69 confidence range handling (previously undefined in both specs)
- add forward/reverse contradiction handling with -15 penalty and conflict flag
- add UI fidelity high-severity cross-annotation to forward verification results
- clarify dedup confidence inheritance (use highest-priority source's confidence)
- explicitly exclude API contract low-severity issues from defect extraction

## 影响面
- plugins/test/skills/requirement-traceability/PHASES.md: Phase 4.1 cross-verification, Phase 4.4 UI fidelity mapping, Phase 4.6 defect extraction
- plugins/test/CONVENTIONS.md: cross-agent consensus rule now covers all confidence ranges

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): 禁止用例标题包含来源前缀

## 改动内容
- CONVENTIONS.md title 字段约束增加禁止来源前缀([补充]、【补充】、[新增]等)
- 明确这些信息已由 source 字段承载,不应出现在标题中

## 影响面
- 影响所有 test skill 的用例生成输出格式约束
- 解决 AI Agent 在 supplementary_cases.json 中误加 [补充] 前缀的问题

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): migrate ask_question text output to native AskUserQuestion tool calls

## 改动内容
- Rewrite CONVENTIONS.md ask_question section to instruct calling AskUserQuestion tool instead of outputting text markers
- Align constraints with tool schema: 1-4 questions, 2-4 options, required description, header <=12 chars
- Update all skill references across requirement-clarification, requirement-review, test-case-generation, and shared TRACEABILITY_PROTOCOL
- Add missing description fields to all option examples
- Bump test plugin version 0.0.6 → 0.0.7

## 影响面
- All test skills that use interactive questioning (requirement-clarification, requirement-review, test-case-generation)
- CLI users: will see interactive numbered option selection instead of plain text
- ai-case Web: no code changes needed — backend already supports ToolUseBlock extraction path with regex fallback

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): bridge smoke_test_report into metersphere-sync execute flow

## 改动内容
- Add smoke_test_report.json as optional input in metersphere-sync contract.yaml
- Add Phase 4.0 pre-check in PHASES.md: read smoke_test_report, downgrade all plan cases to Prepare when P0 defects found
- Update SKILL.md with smoke test linkage capability description
- Bump test plugin version 0.0.7 → 0.0.8

## 影响面
- metersphere-sync mode=execute: now respects requirement-traceability smoke test verdict
- qa-workflow orchestration: no changes needed, metersphere-sync handles internally
- Backward compatible: smoke_test_report.json is optional, absence preserves existing behavior

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): unify script config via .env and python-dotenv

## 改动内容
- 新增 .env.example 配置模板,涵盖 MeterSphere / Feishu / GitLab / GitHub 全部变量
- 6 个 Python 脚本统一添加 python-dotenv 自动加载(graceful fallback)
- metersphere_helper.py 移除 ms_config.json 依赖,硬编码字段 ID 迁移为 MS_FIELD_ID_* 环境变量
- .gitignore 添加 .env 忽略规则(白名单 .env.example)

## 影响面
- plugins/test/skills/shared-tools/scripts/ 下所有 Python 脚本
- 新用户需 cp .env.example .env 并填入密钥后方可运行
- 无运行时行为变更,仅配置加载方式从 JSON 文件迁移为 dotenv

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): support hierarchical module structure in metersphere import

## 改动内容
- 新增 `_ensure_module_path()` 函数,支持按 `/` 分隔路径逐层创建模块
- `import-cases` 新增 `--requirement <需求名>` 参数,先创建需求级父模块再挂子模块
- 更新 SKILL.md / PHASES.md 文档同步新用法

## 影响面
- metersphere_helper.py 的 import-cases 命令(向后兼容,不传 --requirement 行为不变)
- metersphere-sync skill 文档

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* chore(release): prepare v0.1.33 — add test plugin v0.0.3

Reset versions to production +1. Update CHANGELOG, README,
and plugin version history for test plugin release.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): sync codex plugin.json version to 0.0.3

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test-case-generation): add large file write guard to prevent JSON truncation

- Add global "large file write rules" section at top of PHASES.md
- Add truncation guard for tc_gen_review.md in phase 5.6 (max 200 lines, summary only)
- Add truncation guard for final_cases.json in phase 7.2 (use Bash+Python when >50 cases)
- Bump test plugin version to 0.0.8

- test-case-generation skill: prevents LLM output token limit from truncating Write tool calls
- Fixes observed "JSON Parse error: Expected '}'" when writing large review/case files

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove committed __pycache__ and add gitignore rule

Remove 6 .pyc binary files from git tracking and add __pycache__/
and *.pyc rules to .gitignore to prevent future accidental commits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): add missing comma in plugin.json

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): sync codex plugin.json version to 0.0.4

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): unify test case JSON format contract across skills and backend

## Changes
- change-analysis/PHASES.md: add top-level array constraint for supplementary_cases.json
- test-case-review/PHASES.md: add top-level array constraint for supplementary_cases.json
- metersphere-sync/PHASES.md: clarify format conversion is done by backend, not AI
- test-case-generation/SKILL.md: add explicit CONVENTIONS.md field table reference

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): optimize skill ecosystem — deduplicate, restructure, and standardize

## 改动内容
- Delete deprecated bug-fix-review skill (merged into change-analysis)
- Refactor feedback SKILL.md from 879 to 218 lines by splitting into PHASES.md, TEMPLATES.md, TEAM_ASSIGNMENTS.md
- Extract shared test quality guidelines to _shared/TEST_QUALITY_GUIDELINES.md (eliminate ~90 lines duplication between unit-test-design and integration-test-design)
- Create _shared/LARGE_FILE_HANDLING.md for common write-tool token limit rules
- Add explicit trigger keywords to 5 skill descriptions
- Add disambiguation markers to 5 skills to resolve trigger overlap
- Standardize confidence marking in feedback to reference CONVENTIONS.md
- Add model selection decision tree to CONVENTIONS.md
- Add Closing Checklist to metersphere-sync, requirement-review, qa-workflow
- Add feedback contract.yaml (was missing)
- Expand README skill quick-reference table
- Bump test plugin version to 0.0.5

## 影响面
- plugins/test/skills/ — 16 skills modified, 1 deleted, 6 new files created
- plugins/test/skills/_shared/ — 2 new shared protocol files
- plugins/test/CONVENTIONS.md — model selection guidance added
- plugins/test/README.md — expanded skill selection guide
- Version: test plugin 0.0.4 → 0.0.5, marketplace 0.1.34 → 0.1.35

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): add exploratory testing method to test-case-generation skill

## 改动内容
- METHODS.md: 新增探索性测试法完整章节(Charter/Oracle/启发式/格式说明)
- SKILL.md: 方法选择指引表新增探索性测试法行 + test_method 取值扩展
- CONVENTIONS.md: test_method 字段取值 + 探索性用例格式约束
- test-case-writer.md: 注意事项补充探索性用例格式说明
- 版本号 0.0.5 → 0.0.6

## 影响面
- test-case-generation skill 新增第 7 种测试设计方法
- 子 Agent (test-case-writer) 可正确生成探索性测试用例
- 向后兼容:新增枚举值,不影响现有用例和后端校验

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): review 修复 — 启动器负责人统一为陆航 + headers 缩进修正 #no-ticket

## 改动内容
- TEAM_ASSIGNMENTS.md: 将启动器研发负责人从"陈昊"统一为"陆航"(2 处矛盾)
- feishu_api.py: 修复 _request 方法中 X-PLUGIN-TOKEN headers 缩进错误,归入 else 块

## 影响面
- feedback skill 的 Bug 工单指派逻辑
- feishu_api.py 的 /open-apis/ 路径调用(当前无调用方,属预防性修复)

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: untrack ai-workflow-panorama.html #no-ticket

## 改动内容
- 从版本控制中移除 ai-workflow-panorama.html,本地文件保留

## 影响面
- 无功能影响

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* chore(release): prepare v0.1.35 — test plugin v0.0.5 #no-ticket

## 改动内容
- 版本重置:marketplace 0.1.34 → 0.1.35,test 0.0.4 → 0.0.5
- 更新 CHANGELOG.md 新增 0.1.35 条目
- 更新 README.md / README.en.md 插件版本表格
- 更新 test/README.md 版本历史

## 影响面
- 版本号和文档,无功能变更

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): fix remaining 陈昊 reference in TEAM_ASSIGNMENTS.md line 22 #no-ticket

## 改动内容
- 修正第 22 行"重要"提示中启动器研发负责人从"陈昊"改为"陆航"

## 影响面
- feedback skill 工单指派逻辑

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): move create_feishu_doc.py to shared-tools #no-ticket

## 改动内容
- 从 ai-case platform-integration 迁移 create_feishu_doc.py 到 shared-tools/scripts/
- 更新 shared-tools SKILL.md 工具清单和用法文档

## 影响面
- test 插件自包含飞书文档创建能力,不再依赖消费方项目的本地 skill

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): remove stats summary section from requirement-review report #no-ticket

## 改动内容
- 移除报告模板中的「评审统计摘要」章节(A|B|C|D 格式可读性差,对用户无价值)
- 后续章节编号顺延(原 4→3, 5→4, 6→5)
- 更新填写说明中的章节引用

## 影响面
- requirement-review 的报告输出格式

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): remove create_feishu_doc.py from test plugin — export handled by platform #no-ticket

## 改动内容
- Remove create_feishu_doc.py from shared-tools (not a universal QA tool, platform-specific)
- Remove Feishu export step from requirement-review PHASES.md — platform handles export via get_export_handler
- Remove stats summary section from report template (poor readability, no user value)
- Update contract.yaml and TEMPLATES.md to reflect the change

## 影响面
- requirement-review skill no longer calls create_feishu_doc.py directly
- Feishu export is now consistent across all workflows (triggered by platform, not by AI agent)

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(test): unify Feishu export — remove create_feishu_doc.py, delegate to platform #no-ticket

## 改动内容
- Delete create_feishu_doc.py from shared-tools/scripts/ (platform-specific, not a universal QA tool)
- Remove Feishu export step from requirement-review PHASES.md (platform handles via get_export_handler)
- Remove stats summary section from report template (A|B|C|D format, poor readability)
- Clean up shared-tools SKILL.md: remove create_feishu_doc entry and usage docs
- Update contract.yaml: remove create_feishu_doc dependency
- Update chapter numbering (3→5 chapters after stats removal)

## 影响面
- requirement-review: AI no longer calls create_feishu_doc.py; export handled by platform
- All workflows now use consistent export path (platform get_export_handler)

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test): enforce strict case JSON schema across MS import path

- metersphere_helper.py: add _validate_case_schema with exit-code-2
  rejection for legacy formats (top-level expected, name/prerequisite,
  steps:string[], tags, typos); unify default module name to "未分类"
- CONVENTIONS.md / metersphere-guide / 4 PHASES.md: remove legacy field
  descriptions, document strict contract behavior
- bump test plugin 0.0.5 -> 0.0.8, marketplace metadata 0.1.35 -> 0.1.38

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(contracts): cross-repo contract bridge + 3 skill contract fixes

- New scripts/contract-bridge-check.py (with --lenient mode) checks
  marketplace skill output declarations against ai-case consumer reads
- New scripts/contract-bridge-allowlist.yaml documents framework /
  backend-written / dynamic-fallback files exempt from the check
- test-case-generation v2.1: drop unused final_cases.json, add
  module_*_cases.json glob pattern, mark review-stage outputs optional
- change-analysis v1.1: declare change_checklist.md / bug_description.md
  (previously written by skill but undeclared)
- test-case-review v1.1: declare review_data.md
- requirement-traceability agents: fix internal misnaming
  analysis_checklist.md -> change_checklist.md (the file that
  change-analysis actually writes)
- tests/validate.sh: integrate bridge check (lenient mode)
- .pre-commit-config.yaml: local hook for bridge + contract validation
- .github/workflows/validate.yml: setup Python + install pyyaml

Bridge exit 0: producer declarations align with ai-case reads
(allowlist covers backend-written and dynamic-fallback files).

* feat(contracts): add testcase.schema.json (auto-derived from ai-case Pydantic)

- New plugins/test/contracts/testcase.schema.json: JSON Schema declaring
  the testcase JSON structure (list[TestCase] with priority enum,
  step pairing, additionalProperties=false, etc.)
- Source of truth: ai-case backend/apps/code_analysis/services/case_schema.py
  (Pydantic). Schema is auto-generated by ai-case
  scripts/export-testcase-schema.py — do not hand-edit.
- tests/validate.sh: load schema + validate 1 valid sample passes,
  4 invalid patterns (priority enum, empty title, extra fields, empty steps)
  all rejected
- .github/workflows/validate.yml: install jsonschema dep
- .pre-commit-config.yaml: schema sanity hook

Bumps test plugin 0.0.9 -> 0.0.10, marketplace metadata 0.1.39 -> 0.1.40.

* feat(contracts): add defect-list.schema.json (catches field name drift)

Source of truth for defect_list.json structure (produced by
requirement-traceability in smoke-test mode, consumed by ai-case
smoke_test workflow).

Catches field name drift via explicit `not.anyOf.required` ban on
known typos: actual / expected / desc / title (the correct names are
actual_result / expected_result / description / name). additionalProperties
remains true so skill can add new fields without schema bump.

Validated against real session 239 data (passes) and 4 typo patterns
(rejected). Wired into ai-case PreToolUse hook in companion ai-case PR.

Bumps test plugin 0.0.10 -> 0.0.11, marketplace metadata 0.1.40 -> 0.1.41.

* feat(contracts): add smoke-test-report.schema.json (catches verdict/summary drift)

Source of truth for smoke_test_report.json structure. ai-case smoke_test
post_complete reads top-level fields verdict / verification_summary /
defect_summary directly into session.output_data — these MUST not drift.

verdict is enum (pass / fail). Catches typo patterns:
- top-level: result→verdict, verdicts→verdict, defects_summary→defect_summary,
  verify_summary→verification_summary
- defect_summary nested: priority_distribution→by_priority,
  category_distribution→by_category
- defects[i] field typos same as defect-list.schema.json (actual / expected /
  desc / title)

Validated against real session 239 (passes) and 7 typo patterns (rejected).
Wired into ai-case PreToolUse hook in companion ai-case PR.

Bumps test plugin 0.0.11 -> 0.0.12, marketplace metadata 0.1.41 -> 0.1.42.

* chore(review): apply review feedback — 5 items

- testcase-schema-sanity: extract inline shell+python to tests/check-schemas.sh
  (eliminate multi-layer quote nesting, easier to maintain when schema evolves)
- defect-list / smoke-test-report schema description: clarify not.anyOf.required
  is an explicit blacklist of known typos (not exhaustive — append when new
  patterns surface)
- testcase.schema.json description (via export-testcase-schema.py): mark as
  derived artifact + note Pydantic-vs-JSON-Schema asymmetry; regenerated to
  reflect updated description
- contract-bridge-check.py: replace fragile script_dir.parent.parent.parent.parent
  with Path.cwd().resolve() based relative path
- contract-bridge-check.py: add FILENAME_DENY_LIST + DENY_SUFFIXES to skip
  obvious non-workdir literals (project configs / docs / *.schema.json)

Bumps test plugin 0.0.12 -> 0.0.13, marketplace metadata 0.1.42 -> 0.1.43.

* docs(contracts): clarify why defect-list schema bans 'title' field

Decision (with evidence):
- requirement-traceability/TEMPLATES.md:306 already declares `name` as
  the canonical field name for defects
- Real session 239 data uses `name`
- ai-case smoke_test workflow only reads `d.get('name')`, no fallback to title

Rationale: although JIRA / TAPD industry conventions use `title` for bug
title, marketplace internal convention is `name` (as documented in
TEMPLATES.md). Schema ban on `title` is the enforcement mechanism — without
it, the convention can't be machine-checked.

Annotated `name` field description in defect-list.schema.json with this
rationale so future maintainers see the context.

Bumps test plugin 0.0.13 -> 0.0.14, marketplace metadata 0.1.43 -> 0.1.44.

* feat(test): contract-driven RR/CA summary outputs + TC consume upstream

- Add rr-summary.schema.json and ca-summary.schema.json (downstream
  consumption contracts; field-typo blacklists follow smoke-test pattern)
- requirement-review PHASES.md: stage 5.1.5 writes rr_summary.json
- change-analysis PHASES.md: stage 7 (Story) and stage 5 (Bug) write
  ca_summary.json
- test-case-generation PHASES.md: stage 2.5 "consume upstream signals"
  expanded to handle injected RR/CA blocks (verdict=not_ready halts;
  ca.new_features force coverage; high risks force scenarios)
- Bump test plugin to 0.0.16, marketplace metadata to 0.1.46

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(test): guide AI on positional URL misuse in fetch_feishu_doc.py

AI agents often call fetch_feishu_doc.py with a positional URL because
sibling scripts in shared-tools (gitlab_helper, github_helper, search_*)
all use positional args, plus CLI naming priors (curl URL, wget URL)
push the model toward the same shape. Each miss wastes one turn.

Switch to parse_known_args and, when the first unknown arg looks like
an http(s) URL while --url/--doc-id is missing, print a precise hint
including the exact corrected command before exiting 2.

Bump test plugin to 0.0.17 (codex 0.0.15) and marketplace to 0.1.47.

* style: ruff lint cleanup for skill scripts — no behavioral changes

- Remove unused imports (os, sys, timedelta) and utf-8 coding declarations
- Replace try/except pass with contextlib.suppress
- Modernize type hints: typing.Dict/List/Optional/Union → built-in dict/list/|
- Merge nested with statements
- Fix trailing whitespace and f-string formatting
- Rename unused loop variable to _param_name

- doc-auto-sync scripts (check-docs, check-stale-docs)
- shared-tools scripts (fetch_feishu_doc, github/gitlab_helper, search_mrs/prs, validate_contracts)
- Pure style changes, zero runtime impact

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(test/change-analysis): add Codex cross-validation agent and Phase 3.5

- Add codex-change-analyzer agent definition (agents/change-analysis/)
- Add Phase 3.5 cross-validation section to PHASES.md
- Update AGENT_PROTOCOL.md directory tree with change-analysis agents

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(shared-tools): add codex_agent.py and environment-aware codex-change-analyzer

- Add codex_agent.py: OpenAI API agent loop for code analysis cross-validation
  - Multi-step tool use (bash, read_file, grep_search) with security whitelist
  - Graceful degradation when OPENAI_API_KEY is not set
  - Configurable model, timeout, max turns
- Update codex-change-analyzer.md: three-tier environment detection
  (Codex CLI → codex_agent.py → Claude fallback)
  - Sub-agent fetches diff independently via helper scripts
  - Add user_impact field for non-technical stakeholders
- Update shared-tools SKILL.md: add codex_agent.py to tool inventory

#no-ticket

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): unify tag assignment — backend-only, ignore AI output

Tags are now assigned unconditionally by the import layer based on
workflow type. AI-generated JSON must not include a `tags` field.

- CONVENTIONS.md: add `tags` field prohibition
- EXTERNAL-IMPACT.md: remove hardcoded tag instruction
- metersphere_helper.py: accept --tags CLI param, default ['AI 用例生成']
- metersphere-sync SKILL/PHASES: update tag docs to --tags param

Generated-By: Claude Code <https://claude.ai/code>

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(test): declare rr_summary.json / ca_summary.json in contract.yaml output

PR review #5 + #6: contract-bridge-check tool watches contract.yaml output
declarations vs consumer references. Both summary JSON files were referenced
by ai-case backend (post_complete + extract_story_output) but never declared
in producer contract.yaml — defeats the purpose of the bridge tool we just
shipped in this PR.

- requirement-review/contract.yaml: add rr_summary.json with schema reference
- change-analysis/contract.yaml: add ca_summary.json with schema reference
- Bump test plugin to 0.0.18, codex 0.0.16, marketplace metadata 0.1.48

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* fix(codex_agent): use Path.is_relative_to to block sibling-prefix path traversal

PR review #2: _execute_read_file used `str(resolved).startswith(str(work_resolved))`
to enforce the work_dir sandbox. When work_dir=/tmp/foo, attacker path
'../foobar/secret' resolves to /tmp/foobar/secret which still starts with
/tmp/foo and bypasses the check.

Replaced with Path.is_relative_to (3.9+, project already uses 3.10+ syntax).
Verified standalone:
- OLD startswith: BYPASSED (sibling /tmp/foobar accepted)
- NEW is_relative_to: BLOCKED
- Valid path inside.txt: still PASS

Bumps: test plugin 0.0.19, codex-plugin 0.0.17, marketplace metadata 0.1.49

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* fix(codex_agent): floor OpenAI call timeout at 5s

PR review #3: timeout=min(120, timeout - elapsed + 5) becomes 0 or negative
when elapsed approaches the budget (elapsed > timeout - 5). OpenAI SDK
behavior on negative/zero timeout is undefined (most clients raise immediately).

Add max(5, ...) floor so the SDK always gets a sane positive value.
The outer `if elapsed > timeout: break` already handles full-timeout exit;
this protects only the narrow "elapsed near budget" edge.

Bumps: test 0.0.20, codex 0.0.18, marketplace 0.1.50

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* chore(test): align test plugin versions to 0.0.20 across all manifests

Previous BSD sed range syntax silently failed to bump marketplace test entry
in the timeout fix commit, leaving inconsistent versions:
- claude plugin.json: 0.0.20
- codex plugin.json: 0.0.18 (stale, missed 2 fix commits)
- marketplace test entry: 0.0.19 (stale, missed 1 fix commit)

CI validate.sh Check 2 + Check 4 caught it. Bring all three to 0.0.20.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* chore(release): prepare v0.1.35 — test plugin v0.0.5, spec plugin v0.1.7

Reset dev versions to prod+1:
- marketplace metadata: 0.1.50 → 0.1.35
- test plugin: 0.0.20 → 0.0.5 (claude + codex)
- spec plugin: 0.1.6 → 0.1.7 (claude + codex)

CHANGELOG 0.1.35 entry expanded with 17 new commits since prior release prep:
- Cross-repo contract bridge (contract-bridge-check.py + RR/CA contract.yaml declarations)
- 5 JSON schemas under contracts/ (testcase / defect-list / smoke-test-report / rr-summary / ca-summary)
- codex_agent.py standalone OpenAI agent + change-analysis Phase 3.5 cross-validation
- Strict case JSON schema enforcement on MS import path
- Security fixes: codex_agent path traversal (sibling-prefix bypass), OpenAI timeout floor

New Spec Plugin (0.1.7) section added for ruff lint cleanup in doc-auto-sync scripts.

All version locations verified consistent; tests/validate.sh passes all checks.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* fix(test): 4 follow-up polish from PR review

Post-prepare-release polish for v0.0.5 (no version bump — same release window):

1. metersphere_helper.py:281 — strengthen MS internal format detection
   Use 'num' or 'result' (MS-specific keys) instead of 'desc' which AI may
   write as a typo for 'action'. Verified: helper test cases still pass.

2. defect-list.schema.json — tighten priority enum from [P0,P1,P2,P3] to [P0,P1,P2]
   matching requirement-traceability/TEMPLATES.md which only defines P0-P2 rules.
   AI cannot write P3 priorities for defects (consistent with consumer logic).

3. change-analysis/contract.yaml — declare codex-change-analyzer agent dependency
   New agent introduced in this PR (Phase 3.5 cross-validation) but missing from
   contract dependencies section. Closes consistency gap with rr/ca summary work.
   Also declared codex_agent.py script dependency (Phase 3.5 fallback chain).

4. metersphere_helper.py CLI — add _flag_value helper to give clear error on
   missing flag values. Replaces 6 sites of args[args.index(flag) + 1] that
   previously raised IndexError → wrapped as 'list index out of range' error,
   unfriendly for AI self-repair. Helper exits 2 with 'ERROR: --tag 缺少参数值'.
   Verified standalone: missing → default, flag-with-value → returns value,
   flag-at-end → exit 2 with clear message.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* feat(test): enforce evidence_tag schema in AskUserQuestion to prevent fabricated options

Add cross-cutting "Output Sourcing Principle" to CONVENTIONS.md and upgrade
AskUserQuestion contract so AI cannot smuggle made-up details (e.g. R9 case
where "official badge on Android" was offered as a "quoted" option without
any source).

CONVENTIONS.md
- New section "输出溯源原则" defining 3-tier evidence_tag (quoted/derived/
  unknown). No "assumed" tier — when AI has no evidence, the right move is
  open-ended question, not a fabricated option for the user to pick from.
- New "derived 推导边界" subsection with three gates: conclusion specificity
  ≤ source, single-step inference, locatable to specific words.
- AskUserQuestion section adds evidence_tag/evidence_ref to question and
  option schema. quoted/derived must contain a paired-quote excerpt
  («…»/『…』/"…"/'…') of the source text — not just a locator.
- Anti-fabrication templates: when no evidence, write candidates as hint
  text inside `question`, leave `options` for meta-actions only.
- Disclaimer: schema only checks quote format, not whether the excerpt
  actually exists in source material — that fallback is prompt + human
  review + future audit agent.

Skills (requirement-clarification, requirement-review, test-case-generation)
- Add CRITICAL callouts before each AskUserQuestion call site.
- Update all JSON examples to new schema with proper evidence_tag/ref.
- Add placeholder-replacement warning so AI doesn't ship literal "{xxx}".

Versions: test plugin 0.0.5 -> 0.0.6, marketplace metadata 0.1.35 -> 0.1.36.

* refactor(test): merge verification-test-generation into requirement-traceability

The verification-test-generation skill turned out to be unused in production:
ai-case backend has no workflow registered for it, and traceability already
had a fallback for "no upstream verification cases". Its core value (giving
AI structured input/expected pairs to reason against code) is achievable by
having traceability consume final_cases.json directly — final_cases steps[]
already encode action→expected pairs that AI can reason about just as well.

Removes
- skills/verification-test-generation/ (SKILL.md, PHASES.md, contract.yaml)
- agents/verification-test-writer.md

requirement-traceability changes
- Forward channel input priority: final_cases.json (test-case-generation) →
  requirement_points.json acceptance_criteria → checklist descriptions.
  Eliminates the "regenerate verification cases" middle layer.
- New 3.2.0 traceability assessment subsection (absorbed from verification's
  4.2.0): hard-block tracing when call depth > 3, dynamic dispatch, external
  dependency, complex logic — mark inconclusive instead of reasoning through
  unreliable code paths.
- New 3.2.1 tracing flow + 3.2.2 trace format + 3.2.3 result schema +
  3.2.4 forward-tracer fallback. forward_verification.json case_id now uses
  final_cases ID directly (M1-TC-01) for case-level MS plan writeback,
  falling back to FORWARD-TRACER-FP-N only in degraded mode.
- contract.yaml: dropped verification_cases input, added final_cases input.

metersphere-sync execute mode rewired
- contract.yaml + SKILL.md + PHASES.md: input switched from
  verification_cases.json to forward_verification.json (traceability output).
- 4.3 matching upgraded: case_id from final_cases is the MS case primary
  key — direct equality match enables case-level Pass/Failure writeback
  instead of FP-aggregated. Falls back to FP-level only when case_id has
  the FORWARD-TRACER-FP-N degraded-mode prefix.

qa-workflow orchestration cleanup
- WORKFLOW_DEFS.md: removed verification-test-generation step from qa-full,
  qa-lite, verify-only templates; renumbered downstream steps.
- SKILL.md / PHASES.md / contract.yaml: synced to new step numbering.

Global doc updates
- CONVENTIONS.md: dropped VC- prefix from numbering table; added migration
  note pointing to v0.0.7 merge.
- _shared/TRACEABILITY_PROTOCOL.md: forward channel description rewritten
  around final_cases consumption; verification cases JSON spec replaced
  with forward_verification.json schema.
- _shared/AGENT_PROTOCOL.md: removed verification-test-writer from agent
  inventory.
- PIPELINES.md / README.md: pipeline diagrams + skill table reflect new
  shape (no separate verification node, traceability consumes final_cases).
- test-case-generation/SKILL.md description: smoke-test redirect now
  points to requirement-traceability mode=smoke-test instead of
  the deleted skill.

Versions: test plugin 0.0.6 → 0.0.7, marketplace metadata 0.1.36 → 0.1.37.

Known follow-up (separate PR): ai-case SmokeTestWorkflow doesn't auto-trigger
metersphere-sync mode=execute after traceability completes — MS plan cases
stay in Prepare. Requires backend should_auto_trigger_metersphere_execute
hook + Celery task; not in scope here.

* refactor(test): move MS plan write-back into requirement-traceability writeback phase

Previously requirement-traceability only emitted forward_verification.json
and required a separate metersphere-sync execute call to write results
back to MS test plan. Local AI workflow runs that didn't go through the
qa-workflow orchestrator missed this step and left MS plans empty.

- requirement-traceability: add Phase 6 writeback (skipped in smoke-test
  mode) that invokes metersphere-sync execute internally
- qa-workflow: drop the standalone metersphere-sync execute step;
  qa-full step IDs renumbered (#10/#11/#12 -> #9/#10/#11)
- fix earlier numbering inconsistencies in qa-workflow PHASES/SKILL
- bump test plugin to 0.0.9 and marketplace metadata to 0.1.39

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(test): pilot handoff metadata + Next Steps output spec on requirement-clarification

Apply spec-kit-style handoff pattern to a single skill as a pilot:
- frontmatter declares handoffs[] (recommended next skill, when, prompt hint)
- Closing step now requires a structured "Next Steps" block with a copyable
  Skill() invocation and an explicit confirm-to-relay prompt

If feedback is positive the same pattern will roll out to test-case-generation,
change-analysis, and requirement-traceability.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(release): prepare v0.1.35 — test plugin v0.0.5, spec plugin v0.1.7

- Reset marketplace metadata to 0.1.35 (production+1) and test plugin to 0.0.5
- Drop superseded 0.1.37 changelog entry; consolidate all post-0.1.34 changes
  under a single 0.1.35 entry covering traceability writeback, requirement-
  clarification handoff pilot, qa-workflow renumber, verification-test-
  generation merge, and the cross-repo contract bridge
- Expand test plugin v0.0.5 entry in plugin README accordingly

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant