$ cat jak-pisac-zadania.md

How to write tasks — a template

Every field is a question I will ask before I start. If the answer is already in the task, I start. If it is not, I wait — or I guess.

Every field in this template is a question I have to ask anyway before I start the task. If the answer is already in the task, I start. If it is not, I wait for you or I guess — and sometimes I guess differently than you wanted.

The template — copy and fill in

TITLE: [verb + what, e.g. "Add a tag filter on the homepage"]
PROJECT: [project / environment name — if we run more than one]

GOAL — why are we doing this?
[1–2 sentences: what problem this solves, or what it should do for the business]

DESCRIPTION — what exactly should exist?
- Where in the app: [page URL / subpage / module]
- For whom: [logged-in user / logged-out / both / admin]
- How it should work: [step by step: what the user sees and clicks]

ACCEPTANCE CRITERIA — the task is done when:
1. [...]
2. [...]
3. [...]

MATERIALS:
[links, screenshots, copy, examples from other sites — or "none"]

OPEN DECISIONS:
[questions you do not have an answer to — write "you decide" or give your answer]

What to put in each field

TITLE. One sentence, starting with a verb. The title alone should make it clear what will change.

PROJECT. If we work on more than one project, or the project has several versions or environments — always say which one the task is for. If there is only one project, skip this field.

GOAL. Why we are doing this. When I know the goal, I can propose a simpler way to solve the same problem.

DESCRIPTION. What exactly should exist, and where. Write it from the point of view of the person who will see it and click it.

ACCEPTANCE CRITERIA. A list of things to tick off. This is how you check the task is done — and how I check it before I hand it over.

MATERIALS. Everything you have: screenshots, links, copy, a competitor example. “None” is also an answer.

OPEN DECISIONS. Things you do not know. Write “you decide” — then I do not wait for you.

Five rules

  1. Numbers instead of adjectives. “Every 3 days”, “5 points”, “max 12 photos” — not “often”, “cheap”, “a few”. Everyone hears an adjective differently; everyone hears a number the same way.
  2. User-visible copy, verbatim. Button labels, messages, section names — word for word. Or say it outright: “make it up”.
  3. An acceptance criterion must be checkable with YES / NO. “It should look nice” — you cannot. “On a phone the cards stack in a single column” — you can.
  4. One task = one thing. If you write “and while you’re at it…” — that is a second task. Send it separately, with its own criteria.
  5. Don’t know the answer? Write “you decide”. That unblocks the work. The worst field is an empty one — nobody knows if it was skipped or left open on purpose.

An example of a well-written task

Title Add a “NEW” badge on cards of freshly added products

Project Shop — Polish and English versions.

Goal — why are we doing this? New products disappear among the old ones — the user cannot see that something arrived since their last visit. The badge should lift clicks on new arrivals.

Description — what exactly should exist?

  • Where: homepage (product list) + category pages.
  • For whom: the user — logged in and logged out.
  • How it should work: a product added in the last 14 days has a “NEW” badge in the corner of the photo. After 14 days the badge disappears on its own, with no one clicking anything.

Acceptance criteria — done when

  • A product added ≤ 14 days ago has the badge on the card — on the homepage and on the category page.
  • After 14 days the badge disappears automatically.
  • On a phone the badge does not cover the product photo.
  • Works in both language versions, with a translated label.

Materials None — pick the badge colour and shape to match the site.

Open decisions I don’t know if 14 days is the right threshold. You decide, and write in the summary what you set.


Minimum rule: if you do not have time to fill everything in, fill in at least TITLE, GOAL and ACCEPTANCE CRITERIA. The other fields speed the work up — those three make it possible at all.


P.S. I wrote this template for people who assign me work. Then it turned out a task written this way is also a perfect input for coding agents — yes/no acceptance criteria are a ready checklist for an automatic reviewer, and “open decisions” are the questions an agent would stall on. A good task for a human and a good task for a machine are the same task. More on that in The judge that makes the decisions.

↑