From flowkit
Use when a defined scope of this repository should be built autonomously — an epic number, a milestone, an issue list, "the next N issues", or "find gaps in area X" — and the operator wants no further interaction until done or stopped.
How this skill is triggered — by the user, by Claude, or both
Slash command
/flowkit:implementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Konventionen und rote Linien: `AGENTS.md` im Repo-Root (IMMER zuerst lesen).
Konventionen und rote Linien:
AGENTS.mdim Repo-Root (IMMER zuerst lesen). Repo-Spezifika:.claude/workflow.config.json(CONFIG — zuerst laden und gegen das Schema des Plugins plausibilisieren; fehlt sie oder fehlt CONFIG.repoSlug: STOPP mit Hinweis auf /flowkit:setup. Keine stillen Defaults für repoSlug). Orchestrierung:${CLAUDE_PLUGIN_ROOT}/workflows/implement.workflow.js(CLAUDE_PLUGIN_ROOT= von Claude Code gesetzte Env-Var mit dem absoluten Pfad zur Wurzel dieses Plugins).
Ein Aufruf, danach keine Rückfrage bis fertig oder Stop. Qualität kommt aus den Stationen (frischer AC-Verifier, Critic, Review-Gate), nicht aus Zwischenfragen. Jedes Issue hat ein hartes Budget (CONFIG.budgets je size-Label) — Überschreitung bricht sauber ab statt weiterzubrennen.
epic <N> → offene Sub-Issues des Epic, gefiltert um CONFIG.excludeLabels
(gleiche Filterlogik wie bei next <N> unten, angewandt auf gh sub-issue list):
CFG=.claude/workflow.config.json
EXCL_JSON=$(jq -c '.excludeLabels // []' "$CFG")
gh sub-issue list <N> -R "$REPO_SLUG" --json number,state,labels \
| jq --argjson excl "$EXCL_JSON" '
.subIssues[] | select(.state=="OPEN")
| select((.labels | map(.name)) as $l
| ([$l[] | select(. as $x | $excl | index($x))] | length) == 0)
| .number'
Getestet gegen Beispiel-JSON ({"subIssues":[{"number":101,"state":"OPEN", "labels":[{"name":"area/backend"}]},{"number":102,"state":"OPEN","labels": [{"name":"type/operator"}]},{"number":104,"state":"OPEN","labels": [{"name":"type/epic"}]}]} mit excl=["type/operator","type/epic"] → liefert
nur 101).
milestone "<Name>" → offene Issues des Milestones.
issues <N,N,...> → genau diese, in dieser Reihenfolge.
next <N> → die nächsten N offenen agent-ready-Issues nach Priorität. Lauffähiges
Muster (gh liefert JSON, die Filterung macht ein separater jq-Aufruf mit sauber
gebundenen Variablen — gh-eigenes --jq kann keine --argjson):
N=5 # gewünschte Anzahl
CFG=.claude/workflow.config.json
EXCL_JSON=$(jq -c '.excludeLabels // []' "$CFG")
RE=$(jq -r '.milestoneExcludeRegex // ""' "$CFG")
LIMIT=$(jq -r '.issueLimit // 300' "$CFG")
gh issue list -R "$REPO_SLUG" --state open --label agent-ready \
--limit "$LIMIT" --json number,labels,milestone \
| jq --argjson excl "$EXCL_JSON" --arg re "$RE" --argjson n "$N" '
map(select($re == "" or (((.milestone // {title:""}).title | test($re)) | not)))
| map(select((.labels | map(.name)) as $l
| ([$l[] | select(. as $x | $excl | index($x))] | length) == 0))
| sort_by(((.labels | map(.name) | map(select(startswith("priority/"))) | first) // "priority/P9"))
| .[:$n] | map(.number)'
Vor dem ersten Lauf einmal read-only gegen das Repo testen (gefahrlos, nur Lesen).
max <X> → harte Obergrenze der Einheiten für diesen Lauf.
gaps <Bereich> [max X] → flowkit:issue im gaps-Modus aufrufen, dann die neu
angelegten agent-ready-Issues abarbeiten. Mit explizitem max vollautonom;
ohne max einmalige Freigabe der Liste via AskUserQuestion.
Pro Issue bestimmen: lane = "quick" wenn Label flow/quick UND kein area/* in
CONFIG.protectedAreas, sonst "full" · size aus dem size/*-Label (fehlt es: "M"
annehmen und im Issue nachlabeln) · area = erstes area/*-Label.
Workflow({ scriptPath: "${CLAUDE_PLUGIN_ROOT}/workflows/implement.workflow.js",
args: { config: <CONFIG als Objekt>,
units: [{ n: 123, lane: "full", size: "M", area: "backend" }, ...] } })
<!-- plan:v1 -->.Closes #N. Merged nie selbst.<!-- ac-verify:v1 -->.area/* in CONFIG.protectedAreas liegt): eigener
frischer Agent VOR dem Merge (Injection, AuthZ, Secrets, Test-Gaming-Querblick).needs-human,
PR bleibt als Draft mit Kommentar; der LAUF fährt mit dem nächsten Issue fort.
Eskalation passiert INNERHALB der Einheit: ab Fix-Runde 2 laufen Fixes genau
eine Modellstufe höher (CONFIG.models.escalation).budget-exceeded, PR auf Draft, Worktree-Cleanup), zählt NICHT als Fehler,
Lauf geht weiter.max X erreicht oder Queue leer → regulärer Stop mit Bericht;
CONFIG.caps.issuesPerRun deckelt jeden Lauf zusätzlich hart.„gemergt/grün/erledigt" gilt nur nach gh-Verifikation, nie aus Agent-JSON. Nach
Abbruch: denselben Workflow mit resumeFromRunId starten — erledigte Einheiten
kommen aus dem Cache. Der Lauf-Bericht enthält Token-Verbrauch je Issue (Datenbasis
für die Budget-Kalibrierung in Stufe 2). Wenn CONFIG.notify true ist: nach Lauf-Ende
den Kurzbericht (erledigt/offen/Stop-Grund) zusätzlich als Push-Benachrichtigung
senden (PushNotification-Tool, falls in der Session verfügbar; sonst überspringen).
npx claudepluginhub ahlerjam/flowkit --plugin flowkitCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.