ln-500-story-quality-gate by levnikolaevich/claude-code-skills
npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-500-story-quality-gate路径说明: 文件路径(
shared/、references/、../ln-*)是相对于技能仓库根目录的。如果在当前工作目录下未找到,请定位此 SKILL.md 文件所在的目录,然后向上返回一级以找到仓库根目录。如果缺少shared/目录,请通过 WebFetch 从https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}获取文件。
一个轻量级的编排器,用于协调质量检查和测试计划,然后确定故事的最终裁决。
| 输入 | 是否必需 | 来源 | 描述 |
|---|---|---|---|
storyId |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 是 |
| args, git branch, kanban, user |
| 要处理的故事 |
解析方式: 故事解析链。状态过滤器: 待评审
| 级别 | 含义 | 操作 |
|---|---|---|
| 通过 | 所有检查通过,无问题 | 故事 -> 完成 |
| 关注 | 次要问题,风险可接受 | 故事 -> 完成,并添加注释说明关注点 |
| 失败 | 发现阻塞性问题 | 创建修复任务,返回至 ln-400 |
| 豁免 | 用户已确认问题 | 故事 -> 完成,并记录豁免原因 |
裁决计算: 任何检查失败则为失败。存在次要问题则为关注。全部通过则为通过。
公式:质量分数 = 100 - (20 x 失败计数) - (10 x 关注计数)
| 分数范围 | 状态 | 操作 |
|---|---|---|
| 90-100 | 优秀 | 通过 |
| 70-89 | 可接受 | 关注(继续执行并记录备注) |
| 50-69 | 低于阈值 | 失败(创建修复任务) |
| <50 | 严重 | 失败(紧急优先级) |
| 非功能性需求 | 检查项 | 问题前缀 |
|---|---|---|
| 安全性 | 认证、输入验证、密钥暴露 | SEC- |
| 性能 | N+1 查询、缓存、响应时间 | PERF- |
| 可维护性 | DRY、SOLID、圈复杂度、错误处理 | MNT- |
其他前缀:TEST-(覆盖率缺口)、ARCH-(架构)、DOC-(文档)、DEP-(依赖项)、COV-(验收标准覆盖率)、DB-(数据库模式)、AC-(验收标准验证)
必读: 加载 shared/references/tools_config_guide.md、shared/references/storage_mode_detection.md 和 shared/references/input_resolution_pattern.md
提取:task_provider = 任务管理 -> 提供者 (linear | file)。
docs/tasks/kanban_board.md 自动发现团队/配置task_provider = linear:get_issue(storyId) + list_issues(parentId=storyId)task_provider = file:读取 story.md + Glob("docs/tasks/epics/*/stories/*/tasks/*.md")具有高准备度(执行前已验证)的故事可以跳过昂贵的检查。
IF readiness_score available in CONTEXT:
IF readiness_score == 10:
fast_track = true
ELSE:
fast_track = false
ELSE:
fast_track = false # 无准备度数据 — 完整门控
快速通道矩阵(准备度 == 10):
| 组件 | 完整门控 | 快速通道 | 原因 |
|---|---|---|---|
| ln-513 回归测试 | 运行 | 运行 | 始终关键,成本低 |
| 代码检查工具 | 运行 | 运行 | 成本低,捕获格式问题 |
| 验收标准验证(3项检查) | 运行 | 运行 | 成本低,验证验收标准覆盖率 |
| ln-511 指标 + 静态分析 | 运行 | 运行 | 捕获单任务评审遗漏的复杂度/DRY/死代码问题 |
| ln-511 MCP 参考(OPT-、BP-、PERF-) | 运行 | 跳过 | 昂贵的外部调用 |
| 内联代理评审 | 运行 | 运行(至少 1 个代理) | 捕获静态分析遗漏的逻辑/算法错误 |
| ln-520 测试计划 | 运行 | 运行(简化版) | 始终创建自动测试计划;跳过研究 + 手动测试 |
| 非功能性需求验证 | 所有维度 | 仅安全性 | 性能/可维护性较不关键 |
--fast-track 标志,如果 fast_track == true)--skip-mcp-ref)-> 验收标准 -> 代码检查工具 -> 回归测试(ln-513)-> 代理评审(至少 1 个代理)——仅跳过 MCP 参考task_provider = linear:get_issue(testTaskId)task_provider = file:读取 测试任务文件 docs/tasks/epics/.../tasks/T{NNN}-*.mdtask_provider = linear:create_comment({issueId: storyId, body: verdict_summary})task_provider = file:写入 评论到 docs/tasks/epics/.../comments/{ISO-timestamp}.mddocs/project/architecture_health.md 的 ## 根本原因日志 下(如果缺失则创建该部分)。格式:| {日期} | {故事_id} | {问题_id} | {分类} | {采取的行动} |shared/references/detection_efficacy_audit.md 运行检测效能审计。将结果记录到 docs/project/architecture_health.md 的 ## 逃逸缺陷日志 下。分类:算法逻辑 | 性能模式 | 领域特定 | 资源边界 | 封装 | 数据结构 | 并发。task_provider = linear:save_issue({id: storyId, state: "Done"}) 用于通过/关注/豁免;为失败创建修复任务task_provider = file:编辑 story.md 中的 **状态:** 行为 完成 用于通过/关注/豁免;为失败创建修复任务文件必读: 加载 shared/references/git_worktree_fallback.md
仅在裁决为通过、关注或豁免时运行。使用来自 ln-510/ln-513 的已验证结果——不重新运行检查。
git add -A && git commit -m "{storyId}: {故事标题}"git push -u origin {分支}git worktree remove {工作树目录}(分支在远程保留)
realpath . 以 realpath {工作树目录} 开头对于失败裁决: 跳过阶段 7。创建修复任务,返回至 ln-400。
待办事项写入格式(必填):
- 调用 ln-510-quality-coordinator (进行中)
- 检查测试任务状态 (待定)
- 调用 ln-520-test-planner (待定,如果需要)
- 验证测试覆盖率 (待定)
- 计算质量分数 + 非功能性需求 (待定)
- 确定裁决 + 更新故事 (待定)
- 分支最终化 (待定)
| 阶段 | 工作器 | 目的 |
|---|---|---|
| 3 | ln-510-quality-coordinator | 代码质量 + 验收标准 + 代码检查工具 + 回归测试 |
| 4 | ln-520-test-planner | 研究 + 手动测试 + 自动测试计划 |
调用方式:
Skill(skill: "ln-510-quality-coordinator", args: "{storyId}")
Skill(skill: "ln-520-test-planner", args: "{storyId}")
反模式:
task_provider 配置(Linear 或基于文件)来处理任务shared/agents/prompt_templates/modes/code.md 直接执行代理评审,至少使用 1 个外部代理和关键验证协议。必读: 加载 references/minimum_quality_checks.md 以了解不可协商的检查项。gate: PASS | CONCERNS | FAIL | WAIVED
quality_score: {0-100}
nfr_validation:
security: PASS | CONCERNS | FAIL
performance: PASS | CONCERNS | FAIL
reliability: PASS | CONCERNS | FAIL
maintainability: PASS | CONCERNS | FAIL
issues: [{id: "SEC-001", severity: high|medium|low, finding: "...", action: "..."}]
必读: 加载 shared/references/meta_analysis_protocol.md
技能类型:execution-orchestrator。在所有阶段完成后运行。使用 execution-orchestrator 格式输出到聊天。
shared/references/tools_config_guide.mdshared/references/storage_mode_detection.mdshared/references/orchestrator_pattern.md../ln-510-quality-coordinator/SKILL.md../ln-520-test-planner/SKILL.mdshared/references/risk_based_testing_guide.mdreferences/minimum_quality_checks.mdshared/references/git_worktree_fallback.md版本: 7.0.0 最后更新: 2026-02-09
每周安装次数
151
仓库
GitHub 星标数
245
首次出现
2026年2月3日
安全审计
安装于
cursor138
gemini-cli136
codex136
claude-code136
opencode136
github-copilot134
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Thin orchestrator that coordinates quality checks and test planning, then determines final Story verdict.
| Input | Required | Source | Description |
|---|---|---|---|
storyId | Yes | args, git branch, kanban, user | Story to process |
Resolution: Story Resolution Chain. Status filter: To Review
| Level | Meaning | Action |
|---|---|---|
| PASS | All checks pass, no issues | Story -> Done |
| CONCERNS | Minor issues, acceptable risk | Story -> Done with comment noting concerns |
| FAIL | Blocking issues found | Create fix tasks, return to ln-400 |
| WAIVED | Issues acknowledged by user | Story -> Done with waiver reason documented |
Verdict calculation: FAIL if any check fails. CONCERNS if minor issues exist. PASS if all clean.
Formula: Quality Score = 100 - (20 x FAIL_count) - (10 x CONCERN_count)
| Score Range | Status | Action |
|---|---|---|
| 90-100 | Excellent | PASS |
| 70-89 | Acceptable | CONCERNS (proceed with notes) |
| 50-69 | Below threshold | FAIL (create fix tasks) |
| <50 | Critical | FAIL (urgent priority) |
| NFR | Checks | Issue Prefix |
|---|---|---|
| Security | Auth, input validation, secrets exposure | SEC- |
| Performance | N+1 queries, caching, response times | PERF- |
| Maintainability | DRY, SOLID, cyclomatic complexity, error handling | MNT- |
Additional prefixes: TEST- (coverage gaps), ARCH- (architecture), DOC- (documentation), DEP- (dependencies), COV- (AC coverage), DB- (database schema), AC- (AC validation)
MANDATORY READ: Load shared/references/tools_config_guide.md, shared/references/storage_mode_detection.md, and shared/references/input_resolution_pattern.md
Extract: task_provider = Task Management → Provider (linear | file).
docs/tasks/kanban_board.mdtask_provider = linear: get_issue(storyId) + list_issues(parentId=storyId)task_provider = file: Read story.md + Glob("docs/tasks/epics/*/stories/*/tasks/*.md")Stories with high readiness (validated pre-execution) can skip expensive checks.
IF readiness_score available in CONTEXT:
IF readiness_score == 10:
fast_track = true
ELSE:
fast_track = false
ELSE:
fast_track = false # No readiness data — full gate
Fast-track matrix (readiness == 10):
| Component | Full Gate | Fast-Track | Why |
|---|---|---|---|
| ln-513 regression tests | RUN | RUN | Always critical, cheap |
| Linters | RUN | RUN | Cheap, catches formatting |
| Criteria Validation (3 checks) | RUN | RUN | Cheap, validates AC coverage |
| ln-511 metrics + static analysis | RUN | RUN | Catches complexity/DRY/dead code that per-task review misses |
| ln-511 MCP Ref (OPT-, BP-, PERF-) | RUN | SKIP | Expensive external calls |
| Inline agent review | RUN | RUN (1 agent minimum) | Catches logic/algorithm bugs that static analysis misses |
--fast-track flag if fast_track == true)--skip-mcp-ref) -> criteria -> linters -> regression (ln-513) -> agent review (1 agent min) — skips MCP Ref onlyIF fast_track: invoke ln-520 in simplified mode (skip research + manual testing, run only auto-test planning): Skill(skill: "ln-520-test-planner", args: "{storyId} --simplified") Proceed to Phase 5.
Check test task status:
Invoke ln-520-test-planner via Skill tool (if needed)
task_provider = linear: get_issue(testTaskId)task_provider = file: Read test task file from docs/tasks/epics/.../tasks/T{NNN}-*.mdtask_provider = linear: create_comment({issueId: storyId, body: verdict_summary})task_provider = file: Write comment to docs/tasks/epics/.../comments/{ISO-timestamp}.mdMANDATORY READ: Load shared/references/git_worktree_fallback.md
Runs only when verdict is PASS, CONCERNS, or WAIVED. Consumes verified results from ln-510/ln-513 — does NOT rerun checks.
git add -A && git commit -m "{storyId}: {Story Title}"git push -u origin {branch}git worktree remove {worktree_dir} (branch preserved on remote)
realpath . starts with realpath {worktree_dir}On FAIL verdict: Skip Phase 7. Create fix tasks, return to ln-400.
TodoWrite format (mandatory):
- Invoke ln-510-quality-coordinator (in_progress)
- Check test task status (pending)
- Invoke ln-520-test-planner (pending, if needed)
- Verify test coverage (pending)
- Calculate Quality Score + NFR (pending)
- Determine verdict + update Story (pending)
- Branch finalization (pending)
| Phase | Worker | Purpose |
|---|---|---|
| 3 | ln-510-quality-coordinator | Code quality + criteria + linters + regression |
| 4 | ln-520-test-planner | Research + manual testing + auto test planning |
Invocation:
Skill(skill: "ln-510-quality-coordinator", args: "{storyId}")
Skill(skill: "ln-520-test-planner", args: "{storyId}")
Anti-Patterns:
task_provider config (Linear or file-based) for tasksshared/agents/prompt_templates/modes/code.md with at least 1 external agent and critical verification protocol. MANDATORY READ: Load references/minimum_quality_checks.md for non-negotiable checks.ln-510 quality checks: pass OR fix tasks created
Test task status checked; ln-520 invoked if needed
Test coverage verified (when test task Done)
Quality Score calculated; NFR validation completed
Gate output format:
gate: PASS | CONCERNS | FAIL | WAIVED
quality_score: {0-100}
nfr_validation:
security: PASS | CONCERNS | FAIL
performance: PASS | CONCERNS | FAIL
reliability: PASS | CONCERNS | FAIL
maintainability: PASS | CONCERNS | FAIL
issues: [{id: "SEC-001", severity: high|medium|low, finding: "...", action: "..."}]
Story set to Done (PASS/CONCERNS/WAIVED) or fix tasks created (FAIL)
Branch finalized: committed, pushed to remote, worktree cleaned up (PASS/CONCERNS/WAIVED)
Root cause analysis recorded in architecture_health.md for every FAIL verdict
Comment with gate verdict posted
MANDATORY READ: Load shared/references/meta_analysis_protocol.md
Skill type: execution-orchestrator. Run after all phases complete. Output to chat using the execution-orchestrator format.
shared/references/tools_config_guide.mdshared/references/storage_mode_detection.mdshared/references/orchestrator_pattern.md../ln-510-quality-coordinator/SKILL.md../ln-520-test-planner/SKILL.mdshared/references/risk_based_testing_guide.mdreferences/minimum_quality_checks.mdVersion: 7.0.0 Last Updated: 2026-02-09
Weekly Installs
151
Repository
GitHub Stars
245
First Seen
Feb 3, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
cursor138
gemini-cli136
codex136
claude-code136
opencode136
github-copilot134
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
46,600 周安装
Groove Git日志自动化工具 - 自动生成每日Git提交摘要和变更记录
119 周安装
自媒体自动发布工具 - 支持百家号、知乎、公众号等平台一键发布,提升内容分发效率
105 周安装
Outlook自动化指南:通过Rube MCP与Composio工具包实现邮件、日历、联系人管理
83 周安装
WhoDB数据库助手:简化数据库操作,支持SQL查询、模式探索与数据导出
93 周安装
Xcode MCP 设置指南:连接 Claude、Cursor、VS Code 等 AI 助手到 Xcode 开发环境
101 周安装
Kotlin Multiplatform AGP 9.0 迁移指南:解决插件兼容性与项目重构
71 周安装
| ln-520 test planning | RUN | RUN (simplified) | Auto-test plan always created; research + manual testing skipped |
| NFR validation | All dims | Security only | Perf/Maintainability less critical |
docs/project/architecture_health.md## Root Cause Log| {date} | {story_id} | {issue_id} | {classification} | {action_taken} |shared/references/detection_efficacy_audit.md. Log results to docs/project/architecture_health.md under ## Escaped Defect Log. Classifications: algorithm_logic | performance_pattern | domain_specific | resource_bounds | encapsulation | data_structure | concurrency.task_provider = linear: save_issue({id: storyId, state: "Done"}) for PASS/CONCERNS/WAIVED; create fix tasks for FAILtask_provider = file: Edit **Status:** line to Done in story.md for PASS/CONCERNS/WAIVED; create fix task files for FAILshared/references/git_worktree_fallback.md