CtrlK
BlogDocsLog inGet started
Tessl Logo

review-loop

Bounded review-apply-resolve convergence loop for a GitHub PR, drafts included. Runs up to N=5 iterations of pr-reviewer → implement-suggestion (--resolve-all) → polish simplify, converging until every review thread is resolved through a fix OR a reply, so the PR ends with zero open threads and only genuine human-judgment flags left open. Convergence also means CI is not red: each push is check-read and a red mechanical failure delegated to ci-auto-fix (--no-ci). On convergence it refreshes the PR description (--no-refresh) and, on a UI PR, runs ui-verify against the live preview once, report-only (--no-preview-run). When the last review still stands (unmoved head, open unreplied threads), iteration 1 applies before re-reviewing. --merge squash-merges on a clean convergence, an approving verdict, and green CI. Run it at the TOP LEVEL of a session holding a sub-agent dispatch tool, never nested in a sub-agent. Use after opening a draft PR to converge it before undrafting. Triggers on "/review-loop".

61

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/quality/review-loop/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

58%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A rigorously sequenced orchestrator procedure with exemplary validation gates, feedback loops, and error-recovery paths, and largely executable concrete guidance. Its weaknesses are severe length with verbatim duplication of rules across sections, and a bundle that omits the rules file the body repeatedly directs the reader to while inlining the content that belongs there.

Suggestions

Ship the referenced bundle files or stop referencing them: ./rules/agent0-runtime.md and scripts/agent0-setup.sh are cited as required reading ("Read rules/agent0-runtime.md before Step 0") but are absent from the bundle, leaving those instructions dangling.

Deduplicate the repeated material to tighten conciseness: state the four skip lines, the capability-vs-tool-name rule, and the Agent0 sandbox rules once each and link to them from the other sections instead of restating them in Dispatch mechanics, Step 0, the install block, and Hard rules.

Move the Agent0 runtime adaptation (the "Dash0 Agent0 sandboxes" subsection and the on-demand install block's line-by-line rationale) into rules/agent0-runtime.md, keeping SKILL.md to the route-resolution table and a one-line pointer, which would cut several hundred lines from the always-loaded body.

DimensionReasoningScore

Conciseness

The body is ~1039 lines (~18K tokens) with substantial verbatim duplication: the four skip lines are printed in full in both the "Dispatch mechanics" table and the markdown sample block, the dispatch-capability-not-a-name rationale is restated in four places ("Dispatch mechanics", Step 0 rows, the never-conclude paragraphs, and "Hard rules"), and the Agent0 sandbox rules are repeated across "Dash0 Agent0 sandboxes", Step 0, the on-demand install block, and "Hard rules". This matches anchor 2 ("several unnecessary explanations or padded sections") rather than 1, since the content is domain-specific procedure, not explanations of concepts Claude already knows, and most of it is load-bearing rather than padded.

2 / 5

Actionability

Mostly executable guidance: complete bash blocks for PR-reference parsing, flag parsing, the unresolved-thread GraphQL query, the on-demand install, and the undraft/squash-merge sequence, plus exact dispatch call shapes ("Task(subagent_type=\"pr-reviewer\", prompt=\"<PR-URL> [--critical]\")"). It stops short of anchor 5 because the core Step 1 procedure is annotated pseudocode ("while ITERATION < CAP: ... if NO_CI == 0: CI_STATE = read check state") rather than copy-paste-ready code — a flexibility the file explicitly justifies (the dispatch tool's spelling varies by harness), which keeps it above anchor 3.

4 / 5

Workflow Clarity

The multi-step process is clearly sequenced (Step 0 preconditions → Step 1 loop with sub-steps A–D → Step 1.6 ui-verify → Step 2 description refresh → Step 2.5 merge gates → Step 3 report) with explicit validation checkpoints and feedback loops throughout: unresolved_thread_count(), ci_is_settled() with its "unread"/"pending" re-read arms, the no-progress guard, the merge gate table, and the post-refresh re-review. This matches the anchor-5 example's validate → fix → re-validate pattern, and the batch/destructive operations (auto-apply, push, merge) all carry validation, so no cap applies.

5 / 5

Progressive Disclosure

The bundle ships no reference files at all, yet the body makes repeated load-bearing references to files it does not contain — "Read rules/agent0-runtime.md before Step 0" and "scripts/agent0-setup.sh" — and hundreds of lines of Agent0 runtime adaptation ("Dash0 Agent0 sandboxes", the on-demand install block with line-by-line rationale) are inlined directly in the SKILL.md, matching anchor 2's "content that clearly belongs in separate files is inlined". It is not anchor 1 (sections, anchors, and tables make navigation possible) and not anchor 3 (the problem is not weak signaling but a required-read referenced file missing from the bundle plus inlined separable content).

2 / 5

Total

13

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A dense, highly specific description that explicitly covers what the loop does, when to use it, and how it is triggered, with concrete iteration semantics, CI handling, and merge gating. Its only weaknesses are verbosity relative to typical descriptions and heavy reliance on internal sibling-skill names rather than user-facing synonyms.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with comprehensive coverage of the skill's flow: "Runs up to N=5 iterations of pr-reviewer → implement-suggestion (--resolve-all) → polish simplify", "each push is check-read and a red mechanical failure delegated to ci-auto-fix", "refreshes the PR description", "--merge squash-merges on a clean convergence". There is no vague or abstract language; it does not fit anchor 4 because the action coverage has no gaps.

5 / 5

Completeness

It clearly answers both questions: the "what" is the full iteration pipeline ("review-apply-resolve convergence loop... runs up to N=5 iterations... converging until every review thread is resolved through a fix OR a reply") and the "when" is explicit with concrete triggers ("Use after opening a draft PR to converge it before undrafting. Triggers on '/review-loop'."). Not anchor 4, because the when-clause is already explicit and specific.

5 / 5

Trigger Term Quality

Good natural-keyword coverage — "GitHub PR", "draft PR", "review thread", "CI", "merge", "undrafting" — plus an explicit trigger ("Triggers on '/review-loop'"). It falls short of anchor 5 because common synonyms are missing ("pull request", "review comments", "fix review feedback") and the text is interleaved with internal skill names (pr-reviewer, ci-auto-fix, ui-verify) a user would not naturally say.

4 / 5

Distinctiveness Conflict Risk

It occupies a clear niche — a bounded review-apply-resolve convergence loop for a GitHub PR — and triggers on a dedicated slash command ("Triggers on '/review-loop'"), so the risk of firing for the wrong skill is minimal. The neighboring sub-skills it names (pr-reviewer, implement-suggestion) are invoked by this loop, not confused with it as trigger competitors.

5 / 5

Total

19

/

20

Passed

Validation

68%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 11 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (1040 lines); consider splitting into references/ and linking

Warning

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

relative_links

Relative link issues: 5 missing, 10 suspicious

Warning

referenced_paths_exist

Referenced path issues: 3 missing

Warning

Total

11

/

16

Passed

Repository
mthines/agent-skills
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.