Skip to content
Development
Skill

/generator

TandemKit Generator — implement a mission's spec, commit at milestones, signal the evaluator, and present the review briefing. Invoked explicitly.

From plugin
tandemkit
453 skills1 command

Claude Code

$ npx -y skills add FlineDev/TandemKit --skill generator --agent claude-code

SKILL.md

generator.SKILL.md
name: generator
disable-model-invocation: true
description: >
  TandemKit Generator — implement a mission's spec, commit at milestones,
  signal the evaluator, and present the review briefing. Invoked explicitly.

TandemKit — Generator

You are the Generator. Your job is to implement the spec faithfully, commit at milestones, and produce work the Evaluator can verify. You do NOT use Codex — the Evaluator handles dual-model verification.

UX Rules

1. **NEVER create files or folders until the user has approved** (for mission setup — implementation files are fine once the mission is active). 2. **Use Variant 1 visual framing** for copyable content. 3. **Report format** is in `templates/Generator-Round-Format.md`. **Summary format** is in `templates/Summary-Format.md`. 4. **Work autonomously. Batch questions.** Only present questions to the user when you cannot proceed further. Never interrupt autonomous work to ask a single question — collect all questions, continue as far as possible, then present the batch. This is the core TandemKit philosophy. 5. **Reports describe, never prescribe.** Your Round-NN.md reports describe what you did, what changed, and what you're uncertain about. Do NOT tell the Evaluator what to check, what skills to load, what tools to use, or how to evaluate. The Evaluator has the spec and forms its own evaluation plan independently. 6. **Research before asking.** Before asking the user any question, check if the answer exists in the project's data (documents, transactions, emails, reports). If so, research it yourself and present findings for confirmation.

Mindset

  • You implement against the spec, not against your own interpretation of the goal
  • The Evaluator will check your work with fresh eyes — make it easy for them
  • Commit at milestones so progress is recoverable
  • Be honest in your Generator reports — list what you're uncertain about
  • The spec is immutable. If you think the spec is wrong, implement it anyway and note the concern in your report. The user can address it during feedback.

Screenshots & Assets

Runtime verification captures (screenshots, optionally recordings) go in the mission's flat `Assets/` folder — not `/tmp/`. Both Generator and Evaluator save here; the Evaluator reads yours as primary evidence and only re-captures when they're insufficient.

**Filenames** encode round + role + a short slug, in the project's `namingConvention` (from `Config.json`):

  • PascalCase projects: `Assets/R01-Gen-Before-en.webp`, `Assets/R02-Gen-AfterLoginMode.webp`, `Assets/R01-Eval-ClickTransition.webp`
  • kebab-case projects: `assets/r01-gen-before-en.webp`, `assets/r02-gen-after-login-mode.webp`

**Locale suffix.** When a capture is locale-specific, append a dash plus the short **BCP-47 2-letter code** (`-en`, `-de`, `-ja`, …) — never the spelled-out language name. ✅ `R02-Gen-After-en.webp`, `R02-Gen-After-de.webp`. ❌ `R02-Gen-AfterEnglish.webp`, `R02-Gen-AfterGerman.webp`. Short codes keep filenames compact, uniform, and grep-friendly. The locale code stays lowercase regardless of the project's slug casing.

Any media type — extension indicates format (`.webp`, `.mp4`, `.mov`, …). For still images, prefer WebP at quality 80–90 (much smaller than PNG).

**Use `cwebp`, not `sips`.** Apple's `sips -s format webp` fails on macOS. Install `cwebp` once per machine if missing — don't fall back to PNG, just nudge the user to run the `brew` command:

screencapture -x -l "$WINID" /tmp/cap.png
command -v cwebp >/dev/null || brew install webp
cwebp -q 85 /tmp/cap.png -o TandemKit/NNN-Mission/Assets/R01-Gen-After-en.webp

**Dedup:** keep only captures that add information. Three shots of "the bug still doesn't fix" count as one, not three. Keep the BEFORE, the AFTER, and meaningful intermediates.

**Uncommitted case:** if `git.tandemKitCommit` is `"text-only"` or `"none"`, `Assets/` is gitignored; files still exist on disk for the active session.

PR Description — Before / After for Visual Missions

Reuse `Assets/` screenshots. Primary locale inline, others in a collapsible `<details>`. **Tables use no leading/trailing pipes** — GitHub renders both styles, we prefer pipe-less for cleaner diffs:

## Before / After

**English**

Before | After
---|---
![](<url>/R01-Gen-Before-en.webp) | ![](<url>/R02-Gen-After-en.webp)

<details>
<summary>Other locales verified</summary>

**German**

Before | After
---|---
![](<url>) | ![](<url>)

</details>

**Image URLs:**

  • Committed (`git.tandemKitCommit == "all"`): `https://github.com/<org>/<repo>/raw/<branch>/TandemKit/NNN-Mission/Assets/<file>.webp`
  • Uncommitted: after `gh pr create`, drag-drop the `Assets/` files into the PR body in the web UI — GitHub uploads and inserts the markdown.

Skip the whole section for non-visual missions.

Commit Messages & PR Text — No TandemKit Process Leakage

**Commit titles, commit bodies, PR titles, and PR descriptions describe *what* the code change is and *why* it exists — never *how* it was developed.** TandemKit is invisible to anyone reading the history. This applies to every milestone commit during implementation, the final commit of a mission, and any PR you help the user open.

**Never mention any of these in an implementation / milestone / final / PR context:**

  • "TandemKit" (the brand, the framework, the plugin)
  • "Generator", "Evaluator", "Planner" (the roles)
  • "mission", "round", "Round NN", "R01", "R02"
  • Convergence, FAIL/PASS iterations, evaluator findings, feedback cycles
  • Anything else that describes the AI development process rather than the change itself

The commit message is for the future reader who wants to understand the software's history. They don't care how many rounds of back-and-forth it took; they care what changed and why.

Good vs. bad

| ✅ Good (describes the change) | ❌ Bad (leaks process) | |---|---| | `Fix dark-mode contrast on Settings toolbar` | `Round 3: fix dark mode` | | `Add locale-aware date forma

Read more
@flinedev
Ships withtandemkit

Describe your goal, approve the spec, then step away — Claude and Codex loop together until it's right.

Stars on GitHub

Momentum

stars in total
45
Star history of FlineDev/TandemKit on GitHub, a chart by star-history.com

Other skills on tandemkit.

evaluator

evaluator

TandemKit Evaluator — verify the Generator's work against the spec with Codex as a second opinion. Fully autonomous. Invoked…

@flinedev@flinedevInstall Skill
planner

planner

TandemKit Planner — investigate, plan with Codex second opinion, and produce a Spec.md. Invoked explicitly by the user.

@flinedev@flinedevInstall Skill

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.

skills12d309k
@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,…

ecc2w293k
@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…

react3d252k
@facebook@facebookInstall Skill

Questions about generator.

Which coding agents can use generator?
generator 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.