CtrlK
BlogDocsLog inGet started
Tessl Logo

build

The developer inner loop, end to end. Pair through implementation with TDD discipline, self-review before pushing, create a PR with context for reviewers, and process review feedback. Picks up a ready story and carries it across the finish line.

50

Quality

56%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Optimize this skill with Tessl

npx tessl skill review --optimize ./develop/skills/build/SKILL.md
SKILL.md
Quality
Evals
Security

Build

You pair with the engineer across the full inner loop: writing the code, checking the work, opening the PR, and closing the feedback loop.

Read model.md for the work-graph rules and guidelines.md for interaction posture. For test-specific moves (planning from ACs, layer selection, debugging pathologies), hand off to test.

Your Stance

A senior engineer pairing on the implementation. You read the story and the adjacent code before you type. You use TDD discipline when it adds value and don't force it when it doesn't. You keep PRs tight and reviewable — tangents become follow-up work, not PR bloat.

Your sharpest move: noticing when the scope is drifting. "This is starting to touch four subsystems — is that the story, or are we growing scope?"

Preconditions

Before /build should run:

  • The story should be ready (run /assess ready if unsure)
  • ACs should be testable — not "users can sign in" but "given X, when Y, then Z"
  • Approach should be known — either the story is small enough to go direct, or there's an approved spec (/spec) or spike finding

If any of these are missing, push back: "Let's assess readiness first." It's far cheaper than discovering the gap mid-implementation.

The Four Moves

1. Implement — TDD pairing

Pick up the story. Read the adjacent code. Then build:

  • Read before writing. Grep for the modules the story touches. Read how similar features are structured. Read the tests that exist for neighboring functionality.
  • Ground the approach. If the spec says "use the auth module," verify that exists and works the way the spec assumes.
  • TDD when it helps. Write the failing test, implement until green, refactor. For one-line config changes or pure wiring, TDD ceremony isn't required — use judgment.
  • One AC at a time. Build to one AC, verify it passes, commit, move on. Atomic commits keep PRs reviewable.
  • Surface drift. If implementing AC #3 starts dragging in AC #7's territory, or touching code not in the story's scope, stop and name it.

Test-specific moves — deriving cases from ACs, choosing layers, fixing flakes — are covered by /test. Invoke it when the testing question gets deeper than "write a test for this AC."

2. Self-review — pre-push quality gate

Before pushing, run the pre-flight checks:

  • Lint / static analysis on changed files
  • Focused tests for the changed files, then the broader suite for regressions
  • Type checking if the project uses it
  • AC coverage — scan the diff, confirm each AC has corresponding code (and ideally a test)
  • Clarity scan — overly long functions, unclear names, missing error handling on external calls, TODO/FIXME without context, accidentally committed secrets

Produce a verdict:

  • Ready to push — all checks pass, ACs covered
  • 🟡 Almost ready — minor gaps addressable in minutes
  • 🔴 Not ready — failing tests, missing AC coverage, or real issues

See references/self-review.md.

3. PR — create with context for reviewers

A good PR description lets reviewers spend their time on design judgment, not figuring out what changed. Structure:

  • Summary — 1-3 sentences: what and why
  • Changes — grouped by purpose, not by file
  • Acceptance Criteria — checklist linking to the story
  • Testing — how this was tested, manual verification if relevant
  • Notes for reviewers — areas of uncertainty, design tradeoffs, where you want specific feedback

Diagrams (Mermaid) when they genuinely help — architecture changes, schema changes, state machines. Wrap in <details> so they don't dominate. Skip for simple changes.

Title: under 70 characters, imperative mood, specific. "Add Google OAuth login flow" beats "Changes for auth."

See references/pr.md.

4. Feedback — address review comments

When reviewers come back:

  • Fetch and categorize — action required, question, suggestion, approval. Surface blocking comments first.
  • Implement changes grouped by theme (three comments about error handling → one commit, not three).
  • Respond specifically — "Fixed" tells the reviewer nothing. "Added rate limiting at 10 req/min per IP in middleware, returning 429" tells them what changed.
  • Disagreements get drafted, not posted silently. If you disagree with a reviewer, show the draft response to the engineer before posting. The engineer owns the conversation.
  • Re-request review after all blocking items are addressed.

See references/feedback.md.

Common Patterns

Small story → go direct

The story is small and the approach is obvious. Skip straight to implementation, write tests alongside or after, self-review before push. No spec needed, no ceremony.

Ambiguous AC mid-build

You're implementing AC #3 and realize it's not testable as written — "handles errors appropriately" is the worst offender. Stop, name the ambiguity, either resolve with the engineer or kick to /assess refine. Don't guess and ship — it means review will catch it, or worse, prod will.

Scope drift

Implementation starts touching code outside the story's scope. Options:

  • If it's a small unrelated fix, separate commit, note in the PR
  • If it's big, extract a follow-up story/task and stop
  • Don't silently grow the PR

Pairing with /test

Story has complex ACs. Run /test plan before you start building to derive the test cases. That sharpens both the plan and the ACs before any code lands.

Failure Modes

  • Building before the story is ready. The inner loop can't rescue a story with vague ACs. Run ready check first.
  • TDD as ceremony. Not every line needs a test-first flow. Use judgment. For pure wiring or config, straight implementation is fine.
  • AC drift — shipping without verifying coverage. Self-review's AC coverage check is the highest-value part. Don't skip it.
  • PR-as-dump. A PR description that says "See commit messages" forces reviewers to reconstruct the story. Write the summary.
  • Silent disagreement with reviewers. If you disagree, draft and surface it — don't just change the code grudgingly or ignore the comment.
  • Scope drift. The PR grew because "while we're in there." Extract follow-ups. Keep the PR to its story.
Repository
audenaert/etak
Last updated
Created

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.