Dotykačka Dev AI Workshop

Návod

Jak nahrát výsledky hodnocení

Výsledek je jeden JSON dokument s hodnocením všech medailonů. Nahrajete ho voláním API (ideálně to udělá rovnou váš AI agent), nebo přes formulář v prohlížeči.

1. Token = SHA-1 vašeho e-mailu

Každý požadavek se prokazuje hlavičkou Authorization: Bearer <token>. Token je SHA-1 hash vaší firemní e-mailové adresy zapsané malými písmeny, bez mezer a bez znaku konce řádku. Váš e-mail musí mít organizátor v seznamu účastníků.

–

macOS

export WSR_TOKEN=$(printf '%s' 'jan.novak@dotykacka.cz' | tr '[:upper:]' '[:lower:]' | shasum | cut -d' ' -f1)
echo $WSR_TOKEN

Linux

export WSR_TOKEN=$(printf '%s' 'jan.novak@dotykacka.cz' | tr '[:upper:]' '[:lower:]' | sha1sum | cut -d' ' -f1)

Python

python3 -c "import hashlib; print(hashlib.sha1('jan.novak@dotykacka.cz'.strip().lower().encode()).hexdigest())"

Pozor na echo bez -n: přidá konec řádku a hash pak nesedí. Proto printf '%s'. Příkazy jsou pro bash/zsh, na Windows platí i v Git Bash a WSL.

Ověření tokenu

curl -sS https://wsr.vibeapp.doty.eu/api/v1/me -H "Authorization: Bearer $WSR_TOKEN"

Vrátí vaše jméno a stav odevzdání. Odpověď 401 znamená, že token nesedí nebo e-mail není v seznamu.

2. Formát výsledků

Jeden JSON objekt s polem ratings – jedna položka na každý ohodnocený medailon. Původní medailon a jeho vylepšenou verzi (-new) hodnoťte jako dvě samostatné položky.

{
  "model": "Claude Opus 5.5",
  "ratings": [
    {
      "medallion": "Jan Novák",
      "variant": "original",
      "scores": {
        "creativity": 8,
        "technical": 7,
        "bug_free": 9
      },
      "comment": "Animovaná vizitka s mini hrou, na mobilu přetéká text."
    },
    {
      "medallion": "Jan Novák",
      "variant": "new",
      "scores": {
        "creativity": 9,
        "technical": 8,
        "bug_free": 9.5
      },
      "comment": "Opravené přetékání, přidaný tmavý režim."
    }
  ]
}
PolePovinnéPopis
modelneJaký AI model / nástroj hodnotil (např. Claude Opus 5.5, GPT-5). Zobrazí se ve statistikách.
ratings[]anoSeznam hodnocení, max. 300 položek.
medallionanoJméno autora = název jeho složky na Google Drive, např. Jan Novák. Na diakritice, velikosti písmen ani pořadí jména a příjmení nezáleží.
variantneoriginal = Původní medailon, new = Vylepšená verze (-new). Výchozí je original.
scores.creativityanoNápaditost – originalita nápadu a jeho zpracování. Číslo 1–10, desetinná místa povolena.
scores.technicalanoTechnické řešení – úroveň technického řešení, kvalita kódu, použité technologie. Číslo 1–10, desetinná místa povolena.
scores.bug_freeanoBezchybnost – množství chyb obráceně: 10 = žádné chyby, 1 = samé chyby. Číslo 1–10, desetinná místa povolena.
commentneKrátké zdůvodnění, max. 1000 znaků.

Svůj vlastní medailon hodnotit můžete, do výsledků se ale nezapočítá. Strojově čitelný popis formátu: /api/v1/format.

3. Nahrání

Nejdřív si formát ověřte (?dry_run=1 nic neuloží), pak nahrajte naostro:

curl -sS -X POST "https://wsr.vibeapp.doty.eu/api/v1/results?dry_run=1" \
  -H "Authorization: Bearer $WSR_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @results.json

curl -sS -X POST "https://wsr.vibeapp.doty.eu/api/v1/results" \
  -H "Authorization: Bearer $WSR_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @results.json

Nahrát můžete kolikrát chcete – platí poslední nahrání, předchozí se celé nahradí. První nahrání vrací 201, další 200.

Prompt pro AI agenta

Stáhněte medailony do složky rozcvicka/, nastavte WSR_TOKEN (viz krok 1) a agentovi (Claude Code, Codex, Cursor…) dejte tento prompt. Klidně ho upravte – hodnoticí kritéria jsou na vás.

The ./rozcvicka folder contains the medallions of the workshop participants. Each subfolder is named after its author and contains their medallion and an improved version made by a colleague (files with the -new suffix, e.g. index-new.html).

Rate each medallion separately: the original version as variant "original" and the -new version as variant "new". Open the medallions and try them out, do not judge the source code alone. Score each category with a number from 1 to 10 (higher = better):
- creativity: Creativity – originality of the idea and its execution
- technical: Technical execution – level of the technical solution, code quality, technologies used
- bug_free: Bug-free – number of bugs reversed: 10 = no bugs, 1 = full of bugs

Add a short justification to each rating in "comment" (in Czech, max. 1000 characters).

Save the result to results.json in exactly this format ("medallion" = the exact subfolder name, "model" = the model that did the rating):
{
  "model": "Claude Opus 5.5",
  "ratings": [
    {
      "medallion": "Jan Novák",
      "variant": "original",
      "scores": {
        "creativity": 8,
        "technical": 7,
        "bug_free": 9
      },
      "comment": "Animovaná vizitka s mini hrou, na mobilu přetéká text."
    },
    {
      "medallion": "Jan Novák",
      "variant": "new",
      "scores": {
        "creativity": 9,
        "technical": 8,
        "bug_free": 9.5
      },
      "comment": "Opravené přetékání, přidaný tmavý režim."
    }
  ]
}

Then validate and upload the file (the token is in the WSR_TOKEN environment variable):
curl -sS -X POST "https://wsr.vibeapp.doty.eu/api/v1/results?dry_run=1" -H "Authorization: Bearer $WSR_TOKEN" -H "Content-Type: application/json" --data-binary @results.json
curl -sS -X POST "https://wsr.vibeapp.doty.eu/api/v1/results" -H "Authorization: Bearer $WSR_TOKEN" -H "Content-Type: application/json" --data-binary @results.json

If the server reports format errors, fix them and upload again.

Odpovědi a chyby

KódVýznam
200 / 201Uloženo (201 = první nahrání, 200 = aktualizace). S dry_run=1 jen „formát je v pořádku“.
400Tělo požadavku není platný JSON.
401Chybí hlavička Authorization, token nesedí, nebo váš e-mail není v seznamu účastníků.
413Soubor je větší než 256 kB.
422JSON neodpovídá formátu – pole errors přesně říká, co opravit (např. ratings[3].scores.technical: chybí).
429Příliš mnoho pokusů, chvíli počkejte.