Skip to content
Development
Skill

/wrap-up

Post-implementation quality gate. Runs automated checks (tests, lint, types), invokes /flagrare:implementation-review for the seven-check parallel review, culls every code comment in the diff that is not a trap-preventer, then performs additional SOLID and Clean Code review on

From plugin
agent-skills
1240 skills

Claude Code

$ npx -y skills add Flagrare/agent-skills --skill wrap-up --agent claude-code

SKILL.md

wrap-up.SKILL.md
name: wrap-up
description: "Post-implementation quality gate. Runs automated checks (tests, lint, types), invokes /flagrare:implementation-review for the seven-check parallel review, culls every code comment in the diff that is not a trap-preventer, then performs additional SOLID and Clean Code review on any findings not covered. Use when the user says 'wrap up', 'review changes', 'check my work', 'am I done', or after completing an implementation task."

Wrap-up

Validate implementation quality through automated checks and structured review.

This skill orchestrates automated tooling and the `/flagrare:implementation-review` skill, then layers additional quality checks on top.

---

When to Use

1. User says "wrap up", "review changes", "check my work", "am I done", "did I miss anything" 2. After completing a todo item or implementation task 3. Before committing (remind the user: "Ready for wrap-up?")

---

Workflow

Step 1: Run Automated Checks

Detect and run the project's test, lint, and typecheck commands.

**Detection order:**

1. Check `package.json` for scripts 2. Check `build.gradle.kts` / `build.gradle` for tasks 3. Check `pyproject.toml` for tool configs 4. Check `Makefile` for targets 5. Check common config files (`.eslintrc`, `tsconfig.json`, `pytest.ini`, etc.)

**Common commands by stack:**

| Stack | Test | Lint | Typecheck | |-------|------|------|-----------| | Node (npm) | `npm test` | `npm run lint` | `npm run typecheck` or `npx tsc --noEmit` | | Node (pnpm) | `pnpm test` | `pnpm lint` | `pnpm typecheck` | | Kotlin/Gradle | `./gradlew test` | `./gradlew ktlintCheck` | (built into compiler) | | Python | `pytest` | `ruff check .` or `flake8` | `mypy .` or `pyright` | | Go | `go test ./...` | `golangci-lint run` | (built into compiler) |

**Execute all three, continue even if one fails:**

{test_cmd} ; {lint_cmd} ; {typecheck_cmd}

**Report failures clearly:**

## Automated Checks

| Check | Status | Issues |
|-------|--------|--------|
| Tests | PASS | - |
| Lint | FAIL | 3 errors in `src/utils.ts` |
| Types | PASS | - |

If any check fails, list the specific errors.

Step 2: Invoke `/flagrare:implementation-review`

Call `/flagrare:implementation-review`. This runs seven parallel subagent checks:

1. Plan gap analysis 2. Use-case coverage 3. Missing test scenarios 4. Test philosophy (Kent Dodds Testing Trophy) 5. SOLID violations 6. Clean Code violations 7. Security (pulls in `/flagrare:security-audit`)

Checks 2-4 apply `/flagrare:testing-philosophy`, behavior over implementation and the e2e necessity floor, so test quality is owned there; don't re-litigate it in Step 4. Check 7 applies `/flagrare:security-audit`, so security is owned there; don't re-litigate it in Step 4 either.

**Wait for it to complete.** Collect all findings.

Step 3: Comment cull

Every code comment the diff adds is deleted unless it is a trap-preventer. This step acts; it does not flag. Check 6 of `/flagrare:implementation-review` reports what-comments, this step is where the deleting happens, and it covers every comment in the diff, not only the ones Check 6 named.

Enumerate every comment in the diff: line comments, block comments, file headers, doc comments on non-public symbols, and comments in test files, which are the most common survivors. Apply this test to each one, and both halves must hold:

1. If a future reader deleted or moved the code this comment sits on, would that look like a safe cleanup? 2. Would it break something they could not see from the code, the types, or the tests?

A "no" to either half means delete. The reader is not confused without it; they are only less entertained.

Before keeping a survivor, try to make it unnecessary. A constraint that can live in a name, a test title, or an assertion message should live there instead, because those are read every time the code is, and the comment is read once. A test that must be the first render in a fresh module registry is named for that; a fixture id that has a recovery query belongs in the assertion message that fires when the fixture is gone, not in a header the reader scrolls past.

What always goes, whatever it says about itself:

  • **What-comments**: restate the code below them.
  • **Provenance**: "on purpose", "deliberately", "the design says", "per the ticket", "the reviewer asked". These record why the author did something, which is a fact about the author, not a constraint on the reader.
  • **File headers**: "this file holds the ids the specs use", "shared helpers for X". The file name and the exports say this.
  • **Citations**: tickets, TDDs, Figma frames, PR numbers, doc sections. They rot, and the reader cannot act on them.
  • **Narration in tests**: "we render, then we assert". The test body is the narration.

Never trim a comment into survival. Delete it whole or keep it whole; a comment that needed shortening was not a trap-preventer, it was a long provenance note. A survivor is one or two lines, states the constraint plainly, and cites nothing.

Apply the deletions directly, without asking. Record every deletion and every survivor with its one-line justification for the Step 5 report, so the user can veto a deletion or cut a survivor. The bias is that a human reviewer will ask "does this file need all these comments?" far more often than "why is there no comment here."

Step 4: Additional Review (gaps not covered by /flagrare:implementation-review)

After `/flagrare:implementation-review` reports, check for anything it might have missed due to scope. These are supplementary checks, not duplicates.

**Naming review:**

  • Are names intention-revealing?
  • Do they avoid mental mapping?
  • Bad: `d`, `theList`, `hp`, `apts`
  • Good: `elapsedDays`, `activeUsers`, `hoursPerTask`, `apartments`

**Function size review:**

  • Are functions small (ideally under 20 lines)?
  • Do they have few arguments (3 or fewer ideal)?
  • Are abstraction levels consistent within a function?
Read more
@flagrare
Ships withagent-skills

Thirty-eight skills that wrap around your development cycle in Claude Code. They turn tickets into ATDD plans, smoke-test features against a running app or service, hunt down bugs with runtime evidence, guard commits against doc drift, run seven-axis code

Stars on GitHub

Momentum

stars in total
12
Star history of Flagrare/agent-skills on GitHub, a chart by star-history.com

Other skills on agent-skills.

atdd-plan

atdd-plan

Produce an ATDD-first implementation plan in Claude Code's native plan mode, with named design patterns called out where they…

brag-doc

brag-doc

Generate a comprehensive, impact-framed brag-doc entry for a chosen time window (day, week, biweek, month, or custom). Pulls…

bug-bash

bug-bash

Programmatic bug bashing, ingest a prescribed test plan (Notion, markdown, pasted spec), drive a real running system (browser via…

career

career

Run the career skills that are due, in one pass, and return one short combined digest plus an updated board. It reads timestamps…

codebase-explore

codebase-explore

Explore the codebase to map conventions, reusable utilities, analogous features, and data flows relevant to a planned change.…

daily-code-review

daily-code-review

Generate a daily code review report showing stale PRs, items needing your attention, and active work for your team. Use whenever…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about wrap-up.

Which coding agents can use wrap-up?
wrap-up installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.