agentsclimarketplace

Cook

Skill SoftwareOneHN/dev-kit/references/cook

πŸ› οΈ Dev Kit β€” lifecycle-driven Agent Skill for structured development workflows. Brainstorm, plan, implement, debug, fix, test & adversarial code review. Java/Spring Boot + TypeScript/React/Vue rules included. Compatible with Claude Code, Cursor, Kiro, and 40+ agentic clients.

Install
npx -y skills add SoftwareOneHN/dev-kit --skill cook

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Implement tasks incrementally with test-first discipline. Use when ready to write code after planning. Supports --tdd flag for strict RED→GREEN→REFACTOR cycle.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

9.6 KB, as published. Nobody here has run it

Cook

Language Adaptation

Detect the user's language from their first message. If the user writes in a non-English language, ALL skill output β€” status updates, slice reports, questions β€” MUST be in that language. Do not mix languages.

Language-Specific Conventions

Before writing any code, detect the project language and load the corresponding convention file:

Project typeConvention source
Java (*.java, pom.xml, build.gradle)/java-developer command

Convention check hook: After touching ANY source file, verify the change against the loaded conventions BEFORE moving to the next step. If a violation is found, fix it immediately β€” do not proceed with a violation in place.

This is not optional. Every file touch triggers a convention check. No exceptions.

Overview

Build in thin vertical slices β€” implement one piece, test it, verify it, then move on. Never implement an entire feature in one pass. Each increment leaves the system in a working, testable state.

HARD GATE: Do NOT implement more than one slice without stopping to test and verify. Do NOT batch multiple slices into one pass. One slice at a time, no exceptions.

Modes

FlagBehavior
(default)Incremental implementation with tests after each slice
--tddStrict RED β†’ GREEN β†’ REFACTOR. Test written FIRST, must FAIL before any implementation

When to Use

  • Plan is approved and it's time to code
  • Implementing any multi-file change
  • Building a new feature from a task breakdown
  • Fixing bugs (use --tdd with the Prove-It Pattern)

When NOT to use: Single-line fixes, typo corrections, config-only changes.

The Increment Cycle (Default Mode)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                      β”‚
β”‚   Implement ──→ Test ──→ Verify ──┐  β”‚
β”‚       β–²                           β”‚  β”‚
β”‚       └───── Commit β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚              β”‚                       β”‚
β”‚              β–Ό                       β”‚
β”‚          Next slice                  β”‚
β”‚                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

For each slice:

  1. Implement the smallest complete piece of functionality
  2. Test β€” run the test suite (or write a test if none exists)
  3. Verify β€” confirm the slice works (tests pass, build succeeds)
  4. Commit β€” save progress with a descriptive message
  5. Report β€” tell the user what was done, what's next
  6. STOP β€” wait for user confirmation before next slice

The TDD Cycle (--tdd Mode)

    RED                GREEN              REFACTOR
 Write a test    Write minimal code    Clean up the
 that fails  ──→  to make it pass  ──→  implementation  ──→  (repeat)
      β”‚                  β”‚                    β”‚
      β–Ό                  β–Ό                    β–Ό
   Test FAILS        Test PASSES         Tests still PASS

Step 1: RED β€” Write a Failing Test

Write the test first. It MUST fail. A test that passes immediately proves nothing.

// RED: This test fails because createTask doesn't exist yet
@Test
void shouldCreateTaskWithDefaultStatus() {
	Task task = taskService.createTask("Buy groceries");

	assertThat(task.getId()).isNotNull();
	assertThat(task.getTitle()).isEqualTo("Buy groceries");
	assertThat(task.getStatus()).isEqualTo(TaskStatus.PENDING);
}

Step 2: GREEN β€” Make It Pass

Write the MINIMUM code to make the test pass. No over-engineering.

Step 3: REFACTOR β€” Clean Up

With tests green, improve the code without changing behavior. Run tests after every refactor step.

Then STOP. Report to user. Wait for confirmation before next cycle.

The Prove-It Pattern (Bug Fixes with --tdd)

Bug report arrives
       β”‚
       β–Ό
  Write a test that demonstrates the bug
       β”‚
       β–Ό
  Test FAILS (confirming the bug exists)
       β”‚
       β–Ό
  Implement the fix
       β”‚
       β–Ό
  Test PASSES (proving the fix works)
       β”‚
       β–Ό
  Run full test suite (no regressions)

Slicing Strategies

Vertical Slices (Preferred)

Build one complete path through the stack:

Slice 1: Create a task (DB + API + basic UI)
    β†’ Tests pass, user can create a task

Slice 2: List tasks (query + API + UI)
    β†’ Tests pass, user can see their tasks

Slice 3: Edit a task (update + API + UI)
    β†’ Tests pass, user can modify tasks

Each slice delivers working end-to-end functionality.

Risk-First Slicing

Tackle the riskiest piece first:

Slice 1: Prove the WebSocket connection works (highest risk)
Slice 2: Build real-time updates on the proven connection
Slice 3: Add offline support and reconnection

If Slice 1 fails, you discover it before investing in Slices 2 and 3.

Rules

Rule 1: One Thing at a Time

Each increment changes one logical thing. Don't mix concerns.

Bad: One commit that adds a new component, refactors an existing one, and updates the build config.

Good: Three separate increments.

Rule 2: Keep It Compilable

After each increment, the project MUST build and existing tests MUST pass.

Rule 3: Scope Discipline

Touch only what the task requires.

Do NOT:

  • "Clean up" code adjacent to your change
  • Refactor imports in files you're not modifying
  • Add features not in the spec
  • Modernize syntax in files you're only reading

Rule 4: Simplicity First

Before writing any code, ask: "What is the simplest thing that could work?"

SIMPLICITY CHECK:
βœ— Generic EventBus with middleware pipeline for one notification
βœ“ Simple function call

βœ— Abstract factory pattern for two similar components
βœ“ Two straightforward components with shared utilities

Rule 5: No Batch Implementation

NEVER implement multiple slices in one go. After each slice:

  • Report what was done
  • Show test results
  • Wait for user to say "next" or redirect

This is non-negotiable. The user must see each slice land before the next begins.

Writing Good Tests (--tdd)

Test State, Not Interactions

Assert on the outcome, not on which methods were called internally.

Prefer Real Implementations Over Mocks

Preference order:
1. Real implementation  β†’ Highest confidence
2. Fake               β†’ In-memory version of dependency
3. Stub               β†’ Returns canned data
4. Mock (interaction) β†’ Use sparingly, at boundaries only

Arrange-Act-Assert Pattern


@Test
void shouldMarkOverdueTasksWhenDeadlinePassed() {
	// Arrange
	Task task = createTask("Test", LocalDate.of(2025, 1, 1));

	// Act
	OverdueResult result = checkOverdue(task, LocalDate.of(2025, 1, 2));

	// Assert
	assertThat(result.isOverdue()).isTrue();
}

One Assertion Per Concept

Each test verifies one behavior. Multiple assertions are fine if they verify the same concept.

Common Rationalizations

RationalizationReality
"I'll test it all at the end"Bugs compound. A bug in Slice 1 makes Slices 2-5 wrong.
"It's faster to do it all at once"Feels faster until something breaks and you can't find which of 500 lines caused it.
"These changes are too small to commit separately"Small commits are free. Large commits hide bugs.
"This is too simple to test"Simple code gets complicated. The test documents expected behavior.
"I'll write tests after the code works"You won't. And tests written after test implementation, not behavior.
"Let me just quickly add this too"Scope expansion. Stop.

Red Flags

  • More than 100 lines written without running tests
  • Multiple unrelated changes in a single increment
  • Implementing the next slice without reporting the previous one
  • Skipping the test/verify step to move faster
  • Build or tests broken between increments
  • Writing code before a failing test exists (in --tdd mode)
  • Running the same test command twice without code changes in between

Verification

After each slice:

  • The change does one thing completely
  • All existing tests pass
  • Build succeeds
  • New functionality works as expected
  • Change is committed
  • User was informed before moving to next slice

After all slices complete:

  • Full test suite passes
  • Feature works end-to-end as specified
  • No uncommitted changes remain

Gives 2 of the 12 instructions most tdd skills give

Counted across 439 of the 443 authors here whose files we hold, read 2026-08-06

  • write minimal code to pass the testhere, and in 302 of 439, across 218 files
  • write a failing test firsthere, and in 176 of 439, across 112 files
  • refactor code only after tests passin 171 of 439, across 101 files
  • watch the test fail before writing codein 142 of 439, across 93 files
  • test one behavior per testin 106 of 439, across 44 files
  • refactor code while keeping tests greenin 99 of 439, across 86 files
  • delete code written before testsin 98 of 439, across 54 files
  • run tests after each refactor stepin 85 of 439, across 54 files
  • Use real code instead of mocks unless unavoidablein 64 of 439, across 21 files
  • confirm the test fails for the right reasonin 64 of 439, across 60 files
  • reproduce bugs with a test before fixingin 53 of 439, across 36 files
  • write tests before implementationin 48 of 439, across 39 files

Said here and by no other author read

  • match the user's language in all outputs
  • load project conventions before writing code
  • verify changes against loaded conventions after every file touch
  • run tests after each slice
  • wait for user confirmation before the next slice
  • tackle the riskiest piece first

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.