| name | kody |
| description | Write Kody-Engine-ready GitHub issues and interact with the Kody pipeline (trigger, monitor, verify) |
| version | 1.0.0 |
Kody — GitHub Issue Writing & Pipeline Interaction
Use this skill when working in a repository that has Kody Engine installed. It has two parts:
- Writing issues — so Kody understands the task correctly on the first try
- Pipeline interaction — triggering, monitoring, and verifying Kody pipeline runs
Part 1 — Writing Kody-Ready Issues
What Kody reads from an issue
Kody reads the issue body + comments to understand the task. Specifically:
- The issue body becomes the primary task description (written to
.kody/tasks/<task-id>/task.md)
- The first 5 comments are included as context
- The last 10 comments are included (for ongoing discussions)
- Labels are read to determine complexity and task type
Issue body structure
Structure the issue body with these sections, in order:
## Goal
One clear sentence describing what needs to be built or fixed.
## Context
Why this is needed — background, motivation, user story.
1–3 paragraphs. Be specific about the problem, not the solution.
## Acceptance Criteria
- [ ] Criterion 1 (observable, testable)
- [ ] Criterion 2
- [ ] Criterion 3
## Scope
**In scope:** what Kody should implement.
**Out of scope:** what Kody should skip or what another issue covers.
What makes an issue Kody-friendly
| Good | Bad |
|---|
| Single, well-scoped task | Multiple unrelated tasks in one issue |
| Concrete acceptance criteria | Vague goals like "improve performance" |
| Specific file/feature references | "Fix the frontend" |
| Explains why, not just what | Just describing the implementation |
| Mentions affected files/modules | No context about where to work |
Labels Kody reads
Add these labels before triggering the pipeline to control behavior:
| Label | Effect |
|---|
kody:low | Skip plan stage and review stage — Kody builds directly |
kody:medium | Skip review-fix stage (review runs but failures are not auto-retried) |
kody:high | Full pipeline including risk gate — Kody pauses for @kody approve before building |
kody:feature | Labels the task as a feature in the PR title (feat: prefix) |
kody:bugfix | Labels the task as a bug fix (fix: prefix) |
kody:refactor | Labels as refactoring (refactor: prefix) |
kody:docs | Labels as documentation (docs: prefix) |
Tip: If you don't set a complexity label, Kody's taskify stage infers it from the issue scope. Set kody:low explicitly if you want a fast, focused build with no review overhead.
What to avoid
- Multi-issue issues — split them. Kody processes one task per pipeline run.
- Solution-first descriptions — describe the problem, not the implementation. Let Kody propose the solution in its plan.
- Missing acceptance criteria — without them, there's no clear definition of done.
- References to other issues — if work depends on another issue being done first, say so explicitly in Scope.
Part 2 — Triggering the Kody Pipeline
Who can trigger Kody
Only users with these GitHub author associations can trigger Kody:
- OWNER — repo owner
- MEMBER — organization member
- COLLABORATOR — accepted collaborator
Bot accounts, contributors, and first-time contributors are blocked and receive an error comment.
Trigger commands
Post a comment on the GitHub issue (or PR) using one of these:
@kody
@kody full
@kody rerun
@kody rerun <id>
@kody rerun <id> --from <stage>
@kody fix
@kody fix-ci
@kody review
@kody review <url>
@kody bootstrap
@kody approve
@kody ask <q>
@kody hotfix
@kody decompose
Passing feedback to a pipeline run
Append feedback after the command — it becomes the feedback field:
@kody
@kody --feedback "Use the new API endpoint instead of the old one"
@kody approve --feedback "Yes, go ahead with the changes"
Part 3 — Monitoring the Pipeline
Label lifecycle
Kody sets these labels in sequence as the pipeline progresses. Watch them to track status:
kody:planning → kody:building → kody:verifying → kody:review
→ kody:fixing → kody:shipping → kody:done (success)
↘ kody:failed
kody:waiting # Pipeline paused — Kody is waiting for answers to questions
kody:paused # Pipeline paused — awaiting @kody approve (risk gate for kody:high)
In CI runs, labels are the only persistent state between steps (.kody/tasks/ doesn't survive across CI jobs). If a pipeline fails and is retried, Kody reads these labels to determine where to resume.
What Kody posts as comments
Kody posts these comment types on the issue during the pipeline:
| Comment | Meaning |
|---|
🚀 Kody pipeline started: \task-id` (logs)` | Pipeline triggered, logs linked |
| Questions listed in a block | Pipeline paused at question gate — answer each question in a comment |
🛑 **Risk gate: HIGH complexity — awaiting approval** + plan summary | Pipeline paused at risk gate — use @kody approve to proceed |
To approve: \@kody approve`` | Follow-up after risk gate warning |
✅ Fix pushed to PR #N | Review-fix stage pushed changes to the PR |
🎉 PR created: https://... | Pipeline succeeded — PR link posted |
## Pipeline Summary (table) | Stage-by-stage status, duration, and retry count |
❌ Pipeline failed at **stage-name** | Pipeline failed — check the stage details |
Reading the pipeline summary
The pipeline summary comment is a markdown table:
## Pipeline Summary
| Stage | Status | Duration | Retries |
| ------- | ------- | -------- | ------- |
| taskify | ✅ PASS | 12s | 0 |
| plan | ✅ PASS | 45s | 0 |
| build | ✅ PASS | 3m 12s | 0 |
| verify | ✅ PASS | 1m 08s | 1 |
| review | ✅ PASS | 28s | 0 |
| ship | ✅ PASS | 18s | 0 |
- Status
✅ PASS — stage succeeded
- Status
❌ FAIL — stage failed; check the error comment above the summary
- Retries > 0 — Kody self-healed via retry; the summary shows how many attempts were needed
Part 4 — Verifying Success & Triaging Failures
Pipeline succeeded — what to check
- PR link in the success comment (
🎉 PR created: ...)
- Pipeline summary — all stages show
✅ PASS
- Labels —
kody:done + kody:success on the issue
- PR body — should contain
Closes #<issue-number> and a summary of changes
If the PR was created but labels aren't updated (rare CI timing issue), manually refresh by checking the PR status.
Pipeline failed — triage path
- Find the failure stage — look for
❌ Pipeline failed at **stage-name** in the comments
- Check the error message — the failure comment contains the error details
- Read the retry count — if retries > 0, Kody already tried to self-heal
- Choose your action:
@kody fix
@kody rerun --from build
@kody rerun --from plan
@kody bootstrap
Verify stage failures
| Stage | Common failure | Fix command |
|---|
taskify | Issue body too vague | Edit the issue body with clearer acceptance criteria, then @kody rerun --from taskify |
plan | Kody proposed wrong approach | Add guidance in a comment, then @kody rerun --from plan |
build | Kody wrote broken code | @kody fix — Kody diagnoses and fixes |
verify | Tests/lint/typecheck fail | @kody fix — Kody runs diagnosis and retries |
review | Kody's own review found issues | @kody (standard full pipeline) — review-fix runs automatically |
ship | Push/auth error | Check that the branch doesn't exist and GitHub token is valid, then @kody rerun --from ship |
Question gate — Kody is waiting for you
If Kody posts a list of questions and the issue shows kody:waiting:
- Answer each question by posting a comment with the answers
- Kody reads the comment and resumes the pipeline automatically
You don't need to use any special command — just post a regular comment with the answers.
Risk gate — high complexity waiting for approval
If the issue shows kody:high and Kody posted the risk gate comment with a plan summary:
- Review the plan summary in the comment
- Approve or redirect:
@kody approve
@kody approve --feedback "Yes, but use the v2 API instead"
After approval, Kody resumes from the build stage (not from scratch).
Summary — Quick Reference
| Goal | Action |
|---|
| Start a full pipeline | Comment @kody on the issue |
| Monitor progress | Watch kody:* labels |
| Answer questions | Post a regular comment with answers |
| Approve high-risk task | Comment @kody approve |
| Fix a failure | Comment @kody fix |
| Resume a specific task | Comment @kody rerun <task-id> --from <stage> |
| Create Kody-ready issue | See Part 1 above |