ClaudeMods
☰
ZH-CN
● 0 人在线 · 浏览 0 次
赞助提交作品
GitHub 仓库 · 发布者 chrisjainsley

dotnet-workflow-kit

面向 .NET 团队的预算化规划到审查交付工作流:开始、规划、实现、测试、审查和下一步;规划页与审查页以 Claude Artifacts 呈现,由一个配置文件定制,并在提示列上方显示实时进度条。

chrisjainsley@chrisjainsley

chrisjainsley/claude-dotnet-workflow-kit

原帖图片1
已翻译

关于这个 mod

dotnet-workflow-kit

面向 .NET 团队的 Claude Code 插件,把工作从工单一路带到规划、实现、审查和 QA 交接。它会生成带有强制字数预算的规划页和审查页,让你在每个阶段批准前都能读到拟议的工作与结果。

一个项目配置文件会设定你的架构、测试、跟踪器和 QA 工作流。六个技能 start、plan、implement、test、review 和 next 可以一起使用,也可以单独使用;无论有没有工单跟踪器或 Artifact 工具都可以。

安装 | 工作流 | 技能 | 进度条 | /goal | 品牌 | 配置文件参考 | dotnet-claude-kit | Jev | 参与贡献

安装

在终端中运行:

claude plugin marketplace add chrisjainsley/claude-dotnet-workflow-kit
claude plugin install dotnet-workflow-kit@dotnet-workflow-kit

然后从项目中在 Claude Code 里运行设置:

/dotnet-workflow-kit:setup

设置过程会询问团队情况,并写入 .claude/dotnet-workflow-kit.json。提交该文件即可共享设置。工作流发生变化时,再次运行设置。

脚本需要 Python 3.11 或更高版本。Pillow 是可选依赖;没有它时,规划构建器会嵌入原尺寸图片,而不是缩小图片。

从此仓库的克隆目录进行终端设置:

python scripts/setup.py

工作流

使用工单 ID 开始;当 tracker 为 none 时,也可以使用简短的 slug:

/dotnet-workflow-kit:start 1234

使用流水线驱动器继续,或把它包在一个目标中,让它持续运行到下一个闸门:

/dotnet-workflow-kit:next
/goal /next has stopped at a gate

驱动器会检查分支、PR 和已保存的状态,然后运行最早尚未完成的阶段。它会在规划回答或批准、审查决定以及阻塞项处暂停。在审查检查点之前,调用它即授权提交、推送、创建草稿 PR 和应用已配置的部署标签。工具包永远不会合并;每次合并都由人员批准。

| 阶段 | 执行者 | 结果 | |---|---|---| | 0. 开始 | Agent | 创建并推送分支;配置跟踪器时,分配并激活条目。 | | 1. 规划 | Agent,然后是你 | 构建规划页;你回答开放问题或批准。 | | 2. 实现 | Agent | 每次提交实现规划的一层,然后运行审查器扫描、修复发现项并验证。 | | 3. 测试 | Agent | 运行测试套件,然后在已配置环境中运行规划里的场景;修复失败并重新运行。 | | 4. 审查 | Agent,然后是你 | 在一个页面上呈现最终差异、发现项和 QA 证据;你批准或退回。 | | 5. 拉取请求 | Agent,然后是你 | 解决讨论串并让检查变绿。批准后,发布 QA 报告、应用标签并将 PR 标记为就绪。由你合并。 |

请求修改会把流水线退回实现阶段,并带上你的备注以及每个发现项的修复或接受选择。草稿在获得批准前一直是草稿。

技能

start

用于从 ID、问题 URL 或未跟踪的 slug 开始工作。它会使用 branch_pattern 从 base_branch 创建并推送分支。配置了跟踪器时,它会把条目分配给 user,并将其移动到配置的活动状态。随后在支持时重命名工作阶段,并交接给 plan。

plan

用于制定实现规划。它读取工单和代码库,然后写入 plans/<id>-<slug>/plan.md 并构建 plan.html。各部分遵循你的架构,包含测试场景、决定、风险和开放问题。脚本会在发布前检查各部分的字数预算。

当设置了 stack.frontend,且工单要修改一个原本没有设计稿的画面时,该技能会先绘制画面,使用 Claude Code 的 /design 命令或 Design canvas Artifact 类型,并把画板嵌入规划页的 Designs 部分,旁边附上可编辑画布的链接。跟踪器提供的设计会照原样使用,不会创建画布。

在 Artifact 页面上选择回答,选择 Approve 或 Revise the plan,然后按下 Send answers。页面会把选择传给工作阶段,工作阶段将其合并进规划;选择 Approve 后会直接进入 Implement。如果页面要求告诉 Claude 「decided」,说明无法联系到工作阶段;在聊天中说出这个词,技能会读取已保存的选择。

显示 Context、Specs 和 Open questions 表单的规划页

implement

用于构建已批准的规划。它按顺序遍历规划的层,每层提交一次;当 testing.tdd 严格时先测试,然后运行审查器扫描:只读审查器并行运行,清理和验证按顺序进行。内置审查器是 bug-hunt 和 conventions;配置文件可以启用配套审查器和 Codex 第二意见。在进行任何测试前,都会在分支上修复发现项;缺少的工具会带着原因出现在跳过列表中。此技能会编辑文件。

test

用于运行 Test 阶段并记录测试内容。它运行构建和测试套件,然后在 qa.environment 中运行已批准规划的场景;当环境需要部署时,会打开草稿 PR 并应用 qa.deploy_label。随后它会写入 QA 报告,或为 QA 团队写测试记录。

| 模式 | 内容 | 发布方式 | |---|---|---| | 报告 | Given/When/Then 场景、Pass/Fail/Blocked 结果、证据(API 请求与响应对、折叠到其所证明步骤下的查询结果;每个场景的截图和视频放在可见网格中)、摘要和未测试条件。 | 批准后,按 qa.evidence 发布。 | | 记录 | 变更内容、各角色的步骤、测试数据、边界情况、范围、环境和标志。 | 批准后,按 qa.evidence 为 qa-team 发布;否则打印到聊天中。 |

报告涵盖针对真实环境的验收运行和手动检查。单元测试套件和集成测试套件不算 QA 证据。测试记录来自已批准规划的 Specs;没有规划时则来自差异。使用以下命令选择记录模式:

/dotnet-workflow-kit:test notes

review

用于审查分支或 PR。它会把已批准的规划、实际差异、扫描发现项和 QA 证据合并到 review.md 与 review.html。如果该分支没有新鲜的扫描结果,它会先运行一次,让本次工作阶段没有实现过的分支也能接受审查。

页面包含判定数量、规划与交付内容的对照、变更图(点击可打开完整尺寸)、指向完整差异的文件链接、发现项、QA 报告和发布清单。选择 Approve 或 Request changes,然后按下 Send decision。页面会把决定传给工作阶段,工作阶段会读取每个未解决发现项的修复或接受选择;选择 Approve 后会直接进入拉取请求阶段。如果页面要求说明,在聊天中说 「decided」。

显示判定卡片、变更图和决定表单的审查页

next

用于从当前阶段运行工作流。它会读取实时信号以及 ~/.claude/dotnet-workflow-kit/pipeline/<slug>.json,并更新阶段完成情况。实时证据优先于已保存状态;在新提交之后,旧的扫描、测试运行和审查必须再次进行。0.5.0 写入的状态文件会在第一次读取时迁移。

要在不运行阶段的情况下查看进度:

/next status

在 0.6.0 中重命名

现在,技能使用它们所运行阶段的名称。旧名称没有别名;请更新已保存的提示或 /goal 文本。

| 之前 | 现在 | |---|---| | start-ticket | start | | visual-plan | plan | | next 内的 Execute 阶段以及 mega-review | implement(扫描位于 skills/review/sweep.md) | | qa-report 以及 next 内的 QA 阶段 | test | | visual-review | review | | Draft PR、Resolve comments、Publish 和 hand off 阶段 | next 阶段 5,Pull request |

进度条

该工具包提供一个 Claude Code mod,在提示列上方绘制进度条,终端和桌面 Code 标签页都支持。它会在工作项自己的分支上显示工作项:工单 ID 和简短标题、每个阶段对应一个区段的进度条、当前阶段、百分比以及 Claude 此刻正在做什么。等待你处理的阶段会变成琥珀色。进度条读取 start、plan 和 next 写入的流水线状态文件。

同一仓库其他分支上最近一天内有改动的条目,会以进度条末尾的 +N 标签显示;其中一个等待你处理时,标签会变成琥珀色。按下该标签或运行 /sessions 会打开 Sessions 窗格:每个条目按 Needs you、Running 和 Done 分组。开放条目是卡片,显示阶段和状态,并有一个 Show 按钮,指出要打开的工作阶段所在分支;当前查看的条目带紫色边框,等待你处理的条目带琥珀色边框。插件无法把应用切换到另一个工作阶段,因此 Show 只会为你指向它。已完成条目各占一行,可以用叉号隐藏单个条目,也可以用 Dismiss all 隐藏全部条目。另一个条目到达闸门时,提示默认关闭,因为应用自己的通知已经涵盖等待你处理的工作阶段;窗格最后一行可以打开提示。/progress 会隐藏或显示进度条,完成条目上的叉号可以隐藏它。

当拉取请求合并或关闭,或启动它的工作树不见时,条目会自动关闭;工作树聊天归档后工作树就会不见。/progress done 可以手动关闭当前分支的条目。已关闭条目会显示每个阶段都已完成;一天后它的行会消失,scripts/close_items.py 会删除状态文件。PR 检查每十分钟询问一次 gh(Azure Repos 则使用 az)。

插件安装后进度条会自行开启:每个新工作阶段都会加载 mods,不需要启用任何东西。开始工作项前它会保持空白。组织的托管设置可以阻止用户安装的 mods,例如设置 allowManagedModsOnly。

使用 /goal 运行

/next 会在一次回合中逐阶段运行,但如果回合提前结束,没有任何东西会重新启动它。工具包的 hooks 会把运行的两半分别包在一个目标中:

| 时机 | hooks 设置 | |---|---| | 规划获批 | /goal /next has reached the review checkpoint | | 审查获批 | /goal complete /next: the pull request is ready |

每个目标都会由 /next 结束该半段运行时发出的消息完成,因此它会自行清除,不会在你决定期间反复提示。当 /next 因阻塞项停止时,hooks 会让目标保持安静,直到你回答。你从规划页或审查页发送内容时,Send to Claude 会唤醒工作阶段;批准后运行会自行继续。页面无法联系到工作阶段时会说明这一点;请改为告诉工作阶段 「decided」。

没有 function hooks 时,每个闸门之后手动设置目标:

/goal /next has stopped at a gate

工具权限提示仍可能需要输入。流水线报告阻塞项时,先解决它再继续。

没有 Artifact 工具时

当 Artifact 工具不可用时,通过设置将 artifacts 设为 false。技能会构建相同的 HTML 页面,并提供要打开的本地文件路径。

本地表单无法保存回答或决定。在聊天中回复问题编号和选择,或回复 「approve」或 「changes」并附上你的发现项决定。发布清单的勾选不会持久化;请在工具包之外跟踪发布进度。 参见没有 Artifact 工具时运行。

品牌

规划页和审查页使用 Delivery Labs 的颜色,并带有链接到该网站的署名页脚。通过设置或配置文件将 branding 设为 false,即可使用没有页脚的中性配色。

配置文件参考

设置会在项目中写入 .claude/dotnet-workflow-kit.json。配置文件解析依次使用显式路径、项目文件、用户文件 ~/.claude/dotnet-workflow-kit.json,最后使用默认值。缺少的字段会获得默认值。

下面每一行都列出一个字段,包括以点号形式表示的嵌套字段。例如,testing.tdd 位于 i

安装

请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。

claude plugin marketplace add chrisjainsley/claude-dotnet-workflow-kit
claude plugin install dotnet-workflow-kit
原文 / README

dotnet-workflow-kit

A Claude Code plugin for .NET teams that takes work from a ticket through planning, implementation, review and QA hand-off. It builds plan and review pages with enforced word budgets, so you can read the proposed work and the results before approving each.

One project profile sets your architecture, tests, tracker and QA workflow. Use the six skills, start, plan, implement, test, review and next, together or on their own, with or without a ticket tracker or the Artifact tool.

Install | Workflow | Skills | Progress bar | /goal | Branding | Profile reference | dotnet-claude-kit | Jev | Contributing

Install

Run in a terminal:

claude plugin marketplace add chrisjainsley/claude-dotnet-workflow-kit
claude plugin install dotnet-workflow-kit@dotnet-workflow-kit

Then run setup in Claude Code from your project:

/dotnet-workflow-kit:setup

Setup asks about your team and writes .claude/dotnet-workflow-kit.json. Commit that file to share the settings. Run setup again when your workflow changes.

The scripts require Python 3.11 or later. Pillow is optional; without it, the plan builder embeds full-size images instead of downscaling them.

For terminal setup from a clone of this repository:

python scripts/setup.py

Workflow

Start with a ticket ID, or a short slug when tracker is none:

/dotnet-workflow-kit:start 1234

Use the pipeline driver to continue, or wrap it in a goal so it keeps going until the next gate:

/dotnet-workflow-kit:next
/goal /next has stopped at a gate

The driver checks the branch, PR and saved state, then runs the earliest unfinished stage. It pauses for plan answers or approval, the review decision, and blockers. Invoking it authorizes commits, pushes, a draft PR and configured deployment labels before the review checkpoint. The kit never merges; a person approves every merge.

| Stage | Who | Result | |---|---|---| | 0. Start | Agent | Create and push a branch; assign and activate the item when a tracker is configured. | | 1. Plan | Agent, then you | Build the plan page; you answer the open questions or approve. | | 2. Implement | Agent | Implement the plan one layer per commit, then run the reviewer sweep, fix findings and verify. | | 3. Test | Agent | Run the suites, then the plan's scenarios in the configured environment; fix failures and rerun. | | 4. Review | Agent, then you | Present the final diff, findings and QA evidence on one page; you approve or send it back. | | 5. Pull request | Agent, then you | Resolve threads and get checks green. After approval, post the QA report, apply labels and mark the PR ready. You merge. |

Requesting changes returns the pipeline to implementation with your notes and per-finding fix or accept choices. The draft stays a draft until approval.

Skills

start

Use to start work from an ID, issue URL or untracked slug. It creates and pushes a branch from base_branch using branch_pattern. With a tracker, it assigns the item to user and moves it to the configured active state. It then renames the session when supported and hands off to plan.

plan

Use for an implementation plan. It reads the ticket and codebase, then writes plans/<id>-<slug>/plan.md and builds plan.html. Sections follow your architecture, with test scenarios, decisions, risks and open questions. A script checks section budgets before publication.

When stack.frontend is set and a ticket changes a screen that came with no design, the skill draws the screens first, with Claude Code's /design command or the Design canvas Artifact type, and embeds the artboards in a Designs section of the plan page next to a link to the editable canvas. Designs supplied by the tracker are used as they are and no canvas is made.

On an Artifact page, choose answers, pick Approve or Revise the plan and press Send answers. The page passes the choices to the session, which folds them into the plan; on Approve it goes straight on to Implement. If the page says to tell Claude "decided", the session could not be reached; say it in chat and the skill reads the stored choices.

Plan page showing Context, Specs and the Open questions form

implement

Use to build an approved plan. It walks the plan's layers in order, one commit each, tests first when testing.tdd is strict, then runs the reviewer sweep: read-only reviewers in parallel, cleanup and verification in sequence. The built-in reviewers are bug-hunt and conventions; the profile can enable companion reviewers and a Codex second opinion. Findings are fixed on the branch before anything is tested, and missing tools appear in the skipped list with a reason. This skill edits files.

test

Use to run the Test stage and write up what was tested. It runs the build and the suites, then the approved plan's scenarios in qa.environment, opening the draft PR and applying qa.deploy_label when that environment needs a deployment. It then writes the QA report, or testing notes for a QA team.

| Mode | Content | Posting | |---|---|---| | Report | Given/When/Then scenarios, Pass/Fail/Blocked results, evidence (API request and response pairs, query results folded under the step each proves; screenshots and videos in a visible grid per scenario), summary and untested criteria. | After approval, post according to qa.evidence. | | Notes | What changed, steps per persona, test data, edge cases, scope, environment and flags. | After approval, post for qa-team according to qa.evidence; otherwise print in chat. |

Reports cover acceptance runs against a real environment and manual checks. Unit and integration suites do not count as QA evidence. Notes come from the approved plan's Specs, or the diff when no plan exists. Select notes mode with:

/dotnet-workflow-kit:test notes

review

Use to review a branch or PR. It combines the approved plan, actual diff, sweep findings and QA evidence into review.md and review.html. When no sweep is fresh for the branch, it runs one first, so a branch nobody implemented in this session can still be reviewed.

The page includes verdict counts, plan versus delivered, a change diagram (click it to open full size), file links to full diffs, findings, the QA report and a rollout checklist. Choose Approve or Request changes and press Send decision. The page passes the decision to the session, which reads it with each open finding's fix or accept choice; on Approve it goes straight on to the pull request stage. Say "decided" in chat if the page asks.

Review page showing verdict tiles, the change diagram and decision form

next

Use to run the workflow from the current stage. It reads live signals alongside ~/.claude/dotnet-workflow-kit/pipeline/<slug>.json and updates stage completion. Live evidence overrides saved state; sweeps, test runs and reviews older than new commits must run again. State files written by 0.5.0 are migrated on first read.

To inspect progress without running a stage:

/next status

Renamed in 0.6.0

The skills now carry the names of the stages they run. Old names are not aliased; update any saved prompts or /goal text.

| Before | Now | |---|---| | start-ticket | start | | visual-plan | plan | | Execute stage inside next, plus mega-review | implement (the sweep lives at skills/review/sweep.md) | | qa-report, plus the QA stage inside next | test | | visual-review | review | | Draft PR, Resolve comments and Publish and hand off stages | next stage 5, Pull request |

Progress bar

The kit ships a Claude Code mod that draws a progress bar above the prompt, in the terminal and the desktop Code tab. It shows the work item on the session's own branch: the ticket id and a short title, a bar with a segment per stage, the current stage, the percentage and what Claude is doing right now. A stage waiting on you turns amber. The bar reads the pipeline state file that start, plan and next write.

Other items on branches of the same repository, touched in the last day, appear as a +N chip at the end of the bar; it turns amber when one of them is waiting on you. Pressing the chip, or /sessions, opens the Sessions pane: every item grouped as Needs you, Running and Done. Open items are cards with their stages, status and a Show button that names the branch whose session to open; the item you are viewing has a purple edge and one waiting on you an amber one. A plugin cannot switch the app to another session, so Show points you to it instead. Finished items take one line each, with a cross to hide one and Dismiss all to hide the lot. A toast when another item reaches a gate is off by default, because the app's own notifications already cover a session waiting on you; the last row of the pane turns it on. /progress hides or shows the bar, and the cross on a finished item hides it.

An item closes by itself when its pull request merges or closes, or when the worktree it was started in is gone, as it is once a worktree chat is archived; /progress done closes the current branch's item by hand. A closed item shows every stage done, and a day later its row goes and scripts/close_items.py deletes its state file. The PR check asks gh (or az for Azure Repos) every ten minutes.

The bar turns on by itself once the plugin is installed: mods load in every new session, with nothing to enable. It stays empty until a work item is started. An organisation's managed settings can block user-installed mods, for example with allowManagedModsOnly.

Running with /goal

/next runs stage after stage inside one turn, but nothing restarts it if the turn ends early. The kit's hooks wrap each half of the run in a goal for you:

| When | The hooks set | |---|---| | The plan is approved | /goal /next has reached the review checkpoint | | The review is approved | /goal complete /next: the pull request is ready |

Each goal is met by the message /next ends that half with, so it clears on its own instead of re-prompting while you decide. While /next is stopped on a blocker the hooks keep the goal quiet until you answer. Sending from the plan or review page wakes the session through Send to Claude, and an approval carries the run on by itself. When a page cannot reach the session, it says so; tell the session "decided" instead.

Without function hooks, set a goal yourself after each gate:

/goal /next has stopped at a gate

Tool permission prompts may still require input. When the pipeline reports a blocker, resolve it before continuing.

Without the Artifact tool

Set artifacts to false through setup when the Artifact tool is unavailable. The skills build the same HTML pages and give you local file paths to open.

Local forms cannot save answers or decisions. Reply in chat with question numbers and choices, or with "approve" or "changes" and your finding decisions. Rollout checklist ticks do not persist; track rollout outside the kit. See Running without the Artifact tool.

Branding

The plan and review pages use the Delivery Labs colours and carry an attribution footer linking there. Set branding to false through setup, or in the profile file, to render the neutral palette with no footer.

Profile reference

Setup writes .claude/dotnet-workflow-kit.json in the project. Profile resolution uses an explicit path first, then the project file, then the user file at ~/.claude/dotnet-workflow-kit.json, then defaults. Missing fields receive defaults.

Each row below names a field, including nested fields in dotted form. For example, testing.tdd lives inside the testing object. Empty strings appear as "".

| Field | Allowed values | Default | Purpose | |---|---|---|---| | schema | Integer | 1 | Profile schema version. | | user | Free text | "" | Assignee and name used in page prose. | | architecture | clean, vertical, ddd-clean, modular-monolith | "clean" | Plan section order and review rules. | | testing.tdd | strict, encouraged, none | "encouraged" | TDD expectation; strict means tests first during execution. | | testing.unit | xunit, nunit, mstest | "xunit" | Unit test framework. | | testing.integration | webapplicationfactory, testcontainers, none | "webapplicationfactory" | Integration test approach. | | testing.acceptance | reqnroll, specflow, none | "none" | Acceptance test runner; none keeps scenarios without a BDD runner. | | qa.owner | qa-team, self, none | "self" | Who tests and signs off. | | qa.evidence | work-item, pr-comment, none | "none" | Where approved QA reports go. | | qa.handoff_label | Free text | "" | PR label for QA hand-off. | | qa.deploy_label | Free text | "" | PR label to deploy to QA. | | qa.environment | Free text | "local" | Environment named in QA evidence. | | tracker | azure-boards, github-issues, jira, none | "none" | Ticket adapter; none uses your description. | | tracker_project | Free text | "" | Project or organization identifier for tracker calls. | | scm | github, azure-repos | "github" | PR and diff adapter. | | base_branch | Free text | "main" | Starting branch and fallback PR base; stacked work uses its parent. | | branch_pattern | Free text containing {slug}; supports {kind} and {id} | "{kind}/{id}-{slug}" | Branch naming template. | | branch_kinds.feature | Non-empty text | "feat" | Feature value for the kind token. | | branch_kinds.bug | Non-empty text | "bug" | Bug value for the kind token. | | tracker_states.active | Free text | "" | State when work starts; blank uses the adapter default. | | tracker_states.qa_ready | Free text | "" | QA hand-off state; blank uses the adapter default. | | artifacts | true, false | true | Publish Artifacts, or build local HTML and take answers in chat. | | branding | true, false | true | Delivery Labs colours and an attribution footer on the plan and review pages; false renders the neutral palette with no footer. | | stack.data | ef-core, dapper, cosmos, other | "ef-core" | Data access conventions. | | stack.api | minimal-api, controllers, graphql, grpc | "minimal-api" | API contract style. | | stack.messaging | masstransit, wolverine, service-bus, none | "none" | Messaging conventions. | | stack.errors | result, exceptions | "exceptions" | Error handling conventions. | | stack.local_run | aspire, docker, plain | "plain" | How to start the system for local QA. | | stack.frontend | none, blazor, razor, react, angular, vue, javascript | "none" | Whether the repo has a frontend and which kind; see the plan skill. | | reviewers | bug-hunt, conventions, kit, security-scan, convention-learner, code-review-workflow | ["bug-hunt", "conventions"] | Reviewer sweep passes; the two built-ins always run. | | pipeline.execute | Free text | "" | Execution command; blank implements the plan directly. | | pipeline.resolve_comments | Free text | "" | Comment-resolution command; blank uses the SCM adapter. | | pipeline.qa | Free text | "" | QA command; blank runs plan Specs manually per the QA adapter. | | pipeline.open_pr_in_browser | true, false | true | In Claude desktop, open a newly created PR in the Claude browser pane. Set false to only report the link. | | pipeline.auto_fix_pr | true, false | true | In Claude desktop, turn on CI auto-fix and comment handling for a newly created PR, so the session wakes on CI failures, conflicts and review comments. Set false to leave it off. | | optional.dotnet-claude-kit | true, false | false | Companion plugin availability. | | optional.codex | true, false | false | Enable the Codex second-opinion reviewer. | | optional.roslyn-mcp | true, false | false | Roslyn MCP availability for code-review-workflow. | | optional.jev | true, false | false | Jev availability: a TYPESAFE_API_KEY or a jev MCP server. Detected by setup. See Jev. | | jev.flag_at | Number from 0 to 1 | 0.75 | Probability at or above which a scored check becomes a finding at the rule's severity. | | jev.review_at | Number from 0 to 1, at most flag_at | 0.4 | Probability at or above which a scored check is listed as low with "confirm by reading". | | checks | List of {id, rule, severity, files} | [] | Review checks the conventions reviewer enforces; files is an optional glob. Edited in the file, validated by scripts/doctor.py. | | extra_stages | List of {id, label, after, run, done_when, gate} | [] | The team's own /next stages. after names a built-in stage other than pull_request, or an earlier extra stage; run is a slash command or an instruction; done_when is the yes/no question that marks it done; gate: true stops for you after it. label is at most 12 characters and shows on the progress bar. Edited in the file. | | stage_checks | Object of stage name to a list of {id, prompt, on_fail} | {} | Yes/no prompts a /next stage must pass before it is marked done. Stages: start, plan, implement, test, review, pull_request. on_fail is fix (default, keep working the stage) or stop (blocker). Edited in the file. |

Validation requires a tracker when qa.evidence is work-item. Both bug-hunt and conventions remain in the reviewer list.

The clean, ddd-clean and modular-monolith profiles share Domain, Application, Infrastructure, API and Tests slices. Their adapters define different review rules. The vertical profile uses Slice, Persistence, Integration, Endpoint and Tests. See Adapters for supported tools and extension points.

dotnet-claude-kit

Setup recommends the companion plugin when your answers need its skills, and asks before installing it. These mappings come from scripts/kit_profile.py:

| Answer | dotnet-claude-kit skills it needs | |---|---| | architecture: clean | clean-architecture | | architecture: ddd-clean | clean-architecture, ddd | | architecture: vertical | vertical-slice | | testing.tdd: strict | tdd | | stack.data: ef-core | ef-core, migration-workflow | | stack.api: minimal-api | minimal-api, openapi, api-versioning | | stack.messaging: masstransit | messaging | | stack.messaging: wolverine | messaging | | stack.errors: result | error-handling | | stack.local_run: aspire | aspire | | reviewers: kit | code-review, 80-20-review, de-sloppify, verification-loop | | reviewers: security-scan | security-scan | | reviewers: convention-learner | convention-learner | | reviewers: code-review-workflow | code-review-workflow (also needs a Roslyn MCP server) |

The workflow kit also runs without the companion. Built-in adapters still guide the pages; unavailable companion reviewers are recorded as skipped. The code-review-workflow reviewer also requires a Roslyn MCP server.

Jev

Jev is TypeSafe's System One model: a fast, calibrated judge that returns probabilities, never text. With optional.jev true the kit uses it wherever a skill would otherwise decide on gut feel, and every call is skipped, never failed, when it is absent. Setup detects a TYPESAFE_API_KEY or a jev MCP server. Register the MCP at user scope so it loads in every project:

claude mcp add -s user jev -e TYPESAFE_API_KEY=<your key> -- npx -y @jkudish/jev-mcp

Add your own stage checks too. Each is a yes/no question a /next stage must answer yes to before it is marked done, judged on that stage's evidence. Jev scores them when enabled, and Claude answers them otherwise:

"stage_checks": {
  "implement": [{"id": "migration-reviewed", "prompt": "Does every new EF Core migration have a matching Down method?"}],
  "test": [{"id": "e2e-ran", "prompt": "Does the test output show the Playwright suite ran and passed?", "on_fail": "stop"}]
}

Add your own stages to the pipeline. /next runs each after the stage it names, and the progress bar gets a segment for it:

"extra_stages": [
  {"id": "security", "label": "Security", "after": "implement",
   "run": "/dotnet-claude-kit:security-scan",
   "done_when": "Did the scan report no high or critical findings?"}
]

Add your own review checks to the profile; the conventions reviewer enforces them on every sweep, and with Jev scripts/jev_checks.py scores every added hunk against them first:

"checks": [
  {"id": "cancellation", "rule": "Every new async method that performs I/O accepts and forwards a CancellationToken", "severity": "high", "files": "**/*.cs"},
  {"id": "clock", "rule": "Use the injected IClock, never DateTime.Now", "severity": "medium", "files": "src/**/*.cs"}
]

| Stage | What Jev does | |---|---| | start, plan | Screens ticket text and linked items for injected instructions; ranks linked items so only the relevant ones are read. | | plan | Settles open questions from the research facts, or preselects the recommended option and names the fact that would decide it. | | implement | Classifies open sweep findings as fixable in scope or scope-changing. | | sweep | Scores profile checks and the CLAUDE.md rubric per hunk; deduplicates findings; gates the verdict's claims against the diff and test output. | | test | Buckets failing tests as regression, refactor fallout, flaky or environment before fixing. | | review | Verifies Plan versus delivered rows, QA Pass evidence and Verdict tiles. | | next | Classifies red CI jobs; screens, classifies and ranks review threads. |

Diff hunks, claims, test output and ticket text are sent to api.typesafe.ai when a touchpoint runs; files matching the secret patterns never are. Set optional.jev to false when policy forbids it. docs/jev.md has the call shapes, the skipped wording and the checks reference.

Contributing

| Path | Contents | |---|---| | .claude-plugin/ | Plugin and marketplace manifests. | | commands/setup.md | Setup command instructions. | | skills/ | Six skills, the reviewer sweep and their supporting files. | | adapters/ | Tracker, source control, architecture, QA and stack instructions. | | assets/ | Shared page shell. | | scripts/ | Profile, setup, checks, rendering and the Jev checks scorer. | | docs/ | Usage guides, writing rules, the Jev reference and screenshots. | | tests/ | Fixtures and automated checks. |

Run the tests and plugin validation from the repository root before opening a PR:

python -m pytest
claude plugin validate .

Keep examples generic. Hygiene tests check for private identifiers and em dashes. Follow the writing rules for plan and review content.

License

MIT. See LICENSE.

Author: Chris Ainsley

更多类似作品