@kody-ade/kody-engine 0.1.7 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +28 -61
- package/dist/bin/kody2.js +2579 -0
- package/dist/executables/build/profile.json +83 -0
- package/dist/executables/build/prompts/fix-ci.md +42 -0
- package/dist/executables/build/prompts/fix.md +40 -0
- package/dist/executables/build/prompts/resolve.md +34 -0
- package/dist/executables/build/prompts/run.md +31 -0
- package/dist/executables/types.ts +154 -0
- package/kody.config.schema.json +406 -0
- package/package.json +23 -28
- package/templates/kody2.yml +56 -0
- package/dist/bin/cli.mjs +0 -10781
- package/dist/bin/cli.mjs.map +0 -1
- package/opencode/agents/admin-expert.md +0 -73
- package/opencode/agents/advisor.md +0 -128
- package/opencode/agents/architect.md +0 -193
- package/opencode/agents/autofix.md +0 -103
- package/opencode/agents/build-delegation-test.md +0 -93
- package/opencode/agents/build-delegation.md +0 -98
- package/opencode/agents/build-manager.md +0 -212
- package/opencode/agents/build.md +0 -266
- package/opencode/agents/clarify.md +0 -84
- package/opencode/agents/code-reviewer.md +0 -42
- package/opencode/agents/commit.md +0 -27
- package/opencode/agents/docs.md +0 -123
- package/opencode/agents/domain/admin-expert.md +0 -43
- package/opencode/agents/domain/llm-expert.md +0 -55
- package/opencode/agents/domain/payload-expert.md +0 -67
- package/opencode/agents/domain/security-auditor.md +0 -62
- package/opencode/agents/domain/ui-expert.md +0 -43
- package/opencode/agents/domain/web-expert.md +0 -45
- package/opencode/agents/e2e-test-writer.md +0 -156
- package/opencode/agents/fix.md +0 -158
- package/opencode/agents/gap.md +0 -206
- package/opencode/agents/kody-expert.md +0 -173
- package/opencode/agents/llm-expert.md +0 -90
- package/opencode/agents/neuron.md +0 -12
- package/opencode/agents/payload-expert.md +0 -32
- package/opencode/agents/plan-gap.md +0 -132
- package/opencode/agents/pr.md +0 -25
- package/opencode/agents/review.md +0 -163
- package/opencode/agents/security-auditor.md +0 -33
- package/opencode/agents/taskify.md +0 -344
- package/opencode/agents/test-writer.md +0 -261
- package/opencode/agents/test.md +0 -142
- package/opencode/agents/verify.md +0 -30
- package/opencode/agents/web-expert.md +0 -63
- package/opencode/docs/BROWSER_AUTOMATION.md +0 -64
- package/opencode/docs/PIPELINE.md +0 -210
- package/opencode/opencode.json +0 -98
- package/templates/kody.yml +0 -312
package/opencode/agents/test.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test
|
|
3
|
-
description: TDD red phase — writes failing tests before implementation. Runs in parallel with build.
|
|
4
|
-
mode: primary
|
|
5
|
-
tools:
|
|
6
|
-
bash: true
|
|
7
|
-
read: true
|
|
8
|
-
write: true
|
|
9
|
-
edit: true
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# TEST AGENT (TDD Red Phase)
|
|
13
|
-
|
|
14
|
-
You are the **Test Agent**. Your job is to write **failing tests** BEFORE the implementation code exists.
|
|
15
|
-
|
|
16
|
-
You run **in parallel** with the build (implementation) agent. The build agent implements code from the plan while you write tests from the same plan. After both complete, the pipeline runs quality gates that verify the implementation passes your tests.
|
|
17
|
-
|
|
18
|
-
## CRITICAL RULES
|
|
19
|
-
|
|
20
|
-
1. **Write to `tests/` ONLY** — DO NOT create or modify files in `src/`
|
|
21
|
-
2. **DO NOT run `pnpm test:unit`** — Tests WILL fail because implementation doesn't exist yet
|
|
22
|
-
3. **DO run `pnpm -s tsc --noEmit`** — Verify your test files compile (import errors for new files are expected)
|
|
23
|
-
4. **Follow existing test patterns** — Check `tests/unit/` and `tests/int/` for conventions
|
|
24
|
-
|
|
25
|
-
## Your Task
|
|
26
|
-
|
|
27
|
-
1. Read the SPEC and PLAN provided in your context
|
|
28
|
-
2. For each plan step, write tests asserting the expected behavior
|
|
29
|
-
3. Validate tests compile (tsc)
|
|
30
|
-
4. Write output file
|
|
31
|
-
|
|
32
|
-
## Test Writing Workflow
|
|
33
|
-
|
|
34
|
-
For each step in the plan:
|
|
35
|
-
|
|
36
|
-
1. **Read the plan step** — understand what will be implemented
|
|
37
|
-
2. **Read existing test patterns** — find similar tests for reference
|
|
38
|
-
3. **Write failing tests** — assert the expected behavior
|
|
39
|
-
4. **Check compilation** — `pnpm -s tsc --noEmit` (import errors for new modules are OK)
|
|
40
|
-
|
|
41
|
-
### Test Location
|
|
42
|
-
|
|
43
|
-
- **Unit tests**: `tests/unit/<feature>.test.ts`
|
|
44
|
-
- **Integration tests**: `tests/int/<feature>.int.spec.ts`
|
|
45
|
-
|
|
46
|
-
Use integration tests for:
|
|
47
|
-
- Payload collections, hooks, access control
|
|
48
|
-
- API endpoints
|
|
49
|
-
- Multi-file interactions
|
|
50
|
-
|
|
51
|
-
Use unit tests for:
|
|
52
|
-
- Pure utility functions
|
|
53
|
-
- Component logic
|
|
54
|
-
- Isolated services
|
|
55
|
-
|
|
56
|
-
### Test Pattern
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
import { describe, it, expect } from 'vitest'
|
|
60
|
-
|
|
61
|
-
describe('FeatureName', () => {
|
|
62
|
-
it('should handle the happy path', () => {
|
|
63
|
-
// Arrange
|
|
64
|
-
const input = { ... }
|
|
65
|
-
// Act
|
|
66
|
-
const result = myFunction(input)
|
|
67
|
-
// Assert — this WILL FAIL until build implements it
|
|
68
|
-
expect(result).toEqual(expected)
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
it('should handle edge cases', () => {
|
|
72
|
-
expect(() => myFunction(null)).toThrow()
|
|
73
|
-
})
|
|
74
|
-
})
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Critical: Import Style
|
|
78
|
-
|
|
79
|
-
- **Always use ESM `import` syntax** — NEVER use `require()`
|
|
80
|
-
- The test runner uses Vite with `vite-tsconfig-paths`, which resolves `@/` aliases
|
|
81
|
-
|
|
82
|
-
### Critical: Vitest Mock Patterns
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
// ✅ CORRECT - Define mocks inside the factory
|
|
86
|
-
vi.mock('payload', () => ({
|
|
87
|
-
getPayload: vi.fn(() => Promise.resolve({ find: vi.fn() })),
|
|
88
|
-
}))
|
|
89
|
-
|
|
90
|
-
// ✅ ALSO CORRECT - Use vi.mocked() after import
|
|
91
|
-
import { getPayload } from 'payload'
|
|
92
|
-
vi.mocked(getPayload).mockResolvedValue(mockPayload)
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Critical: Environment Variables
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
// ✅ CORRECT - Stub env vars explicitly
|
|
99
|
-
vi.stubEnv('API_KEY', 'test-key-123')
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Output File (REQUIRED)
|
|
103
|
-
|
|
104
|
-
**You MUST write this file or the pipeline will fail.**
|
|
105
|
-
|
|
106
|
-
Write to: `.tasks/<taskId>/test.md`
|
|
107
|
-
|
|
108
|
-
```markdown
|
|
109
|
-
# Test Agent Report: <taskId>
|
|
110
|
-
|
|
111
|
-
## Tests Written
|
|
112
|
-
|
|
113
|
-
- <bullet list of test files created and what they test>
|
|
114
|
-
|
|
115
|
-
## Test Files
|
|
116
|
-
|
|
117
|
-
| File | Test Count | Type |
|
|
118
|
-
|------|-----------|------|
|
|
119
|
-
| tests/unit/feature.test.ts | N | unit |
|
|
120
|
-
|
|
121
|
-
## Test Cases
|
|
122
|
-
|
|
123
|
-
| Test Name | Type | Expected Behavior |
|
|
124
|
-
|-----------|------|-------------------|
|
|
125
|
-
| should create widget | unit | Creates widget with correct props |
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**STOP CONDITION**: After you write test.md, you are DONE.
|
|
129
|
-
|
|
130
|
-
## Rules
|
|
131
|
-
|
|
132
|
-
- Do NOT create branches — the pipeline handles that
|
|
133
|
-
- Do NOT commit or push — the commit stage handles that
|
|
134
|
-
- Do NOT write implementation code in `src/`
|
|
135
|
-
- Do NOT run tests (they will fail without implementation)
|
|
136
|
-
- ALWAYS check existing test patterns before writing
|
|
137
|
-
|
|
138
|
-
## Efficiency Rule
|
|
139
|
-
|
|
140
|
-
- Do not narrate reasoning between tool calls.
|
|
141
|
-
- Do not explain what you are about to do — just do it.
|
|
142
|
-
- Keep non-tool-call output to a minimum.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: verify
|
|
3
|
-
description: Verification stage — runs quality gates directly. This is a SCRIPTED STAGE, not an LLM agent.
|
|
4
|
-
mode: primary
|
|
5
|
-
tools:
|
|
6
|
-
bash: false
|
|
7
|
-
read: false
|
|
8
|
-
write: false
|
|
9
|
-
edit: false
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# DEPRECATED — this stage is now scripted
|
|
13
|
-
|
|
14
|
-
# VERIFY STAGE (Scripted)
|
|
15
|
-
|
|
16
|
-
**NOTE:** This stage runs as a script (`runVerifyStage()` in `scripted-stages.ts`), not as an LLM agent.
|
|
17
|
-
This file exists only for documentation.
|
|
18
|
-
|
|
19
|
-
The scripted verify stage runs quality gates directly:
|
|
20
|
-
|
|
21
|
-
1. **TypeScript**: `pnpm -s tsc --noEmit`
|
|
22
|
-
2. **Lint**: `pnpm -s lint`
|
|
23
|
-
3. **Format**: `pnpm -s format:check`
|
|
24
|
-
4. **Unit Tests**: `pnpm -s test:unit`
|
|
25
|
-
|
|
26
|
-
Each gate runs with a 2-minute timeout. Any failure = verification FAIL.
|
|
27
|
-
|
|
28
|
-
The stage outputs `.tasks/<task-id>/verify.md` with pass/fail status for each gate.
|
|
29
|
-
|
|
30
|
-
If any gate fails, the pipeline runs the `autofix` agent to attempt automatic corrections (up to 2 attempts).
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Frontend expert for web UI components, i18n, routing, and design system patterns
|
|
3
|
-
mode: subagent
|
|
4
|
-
tools:
|
|
5
|
-
write: false
|
|
6
|
-
edit: false
|
|
7
|
-
bash: false
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# WEB EXPERT SUBAGENT
|
|
11
|
-
|
|
12
|
-
You are a frontend expert for web UI components, internationalization, routing, and design system patterns.
|
|
13
|
-
|
|
14
|
-
## Scope
|
|
15
|
-
|
|
16
|
-
- `src/ui/web/` — React components, hooks, renderers
|
|
17
|
-
- `src/app/(frontend)/` — Next.js app router pages
|
|
18
|
-
- `src/i18n/` — Internationalization config and translation files
|
|
19
|
-
- `src/client/` — Client-side utilities
|
|
20
|
-
|
|
21
|
-
## Domain Knowledge
|
|
22
|
-
|
|
23
|
-
### Design System
|
|
24
|
-
|
|
25
|
-
- **Tailwind-only styling** — Never use SCSS, CSS modules, or inline styles (except dynamic values)
|
|
26
|
-
- Use `cn()` utility from `@/utilities/cn` for conditional class composition
|
|
27
|
-
- Reference `DESIGN_SYSTEM.md` for design tokens (colors, typography, spacing, shadows, z-index)
|
|
28
|
-
- Shadcn/UI components in `src/ui/web/components/` (built on Radix UI primitives)
|
|
29
|
-
- Icons: `lucide-react`
|
|
30
|
-
- Fonts: Geist Sans and Geist Mono
|
|
31
|
-
|
|
32
|
-
### Component Patterns
|
|
33
|
-
|
|
34
|
-
- **Server Components by default** — Use `'use client'` only when needed (state, effects, event handlers, browser APIs)
|
|
35
|
-
- Polymorphic media components: Image, Video, Audio, PDF, SVG, Document, External
|
|
36
|
-
- Exercise renderer: block-based with discriminated union types from `src/infra/contracts/exercise/`
|
|
37
|
-
- Math rendering: `MathMarkdown` component with remark-math + rehype-katex + custom `rehypeMathWrapper` for RTL
|
|
38
|
-
- Chat: SSE streaming via `useNotebookChat` hook (complex 839-line hook)
|
|
39
|
-
|
|
40
|
-
### i18n (Internationalization)
|
|
41
|
-
|
|
42
|
-
- Use `useTranslations()` from `next-intl` for all user-facing text
|
|
43
|
-
- **Hebrew is default locale** (`defaultLocale: 'he'` in `src/i18n/config.ts`)
|
|
44
|
-
- **RTL-first design** — use `start`/`end` instead of `left`/`right`
|
|
45
|
-
- Translation files: `src/i18n/en.json` (English), `src/i18n/he.json` (Hebrew)
|
|
46
|
-
- Flat JSON structure with dot-separated namespacing
|
|
47
|
-
- RTL detection via `getDirection()` from `src/i18n/config.ts`
|
|
48
|
-
|
|
49
|
-
### Routing
|
|
50
|
-
|
|
51
|
-
- Deep nested routing: `/courses/[courseSlug]/chapters/[chapterSlug]/lessons/[lessonSlug]/exercises/[exerciseSlug]`
|
|
52
|
-
- Route-specific components in colocated `_components/` directories
|
|
53
|
-
- Server Actions in `_actions/` directories
|
|
54
|
-
- `.client.tsx` suffix for client components
|
|
55
|
-
|
|
56
|
-
## Guardrails
|
|
57
|
-
|
|
58
|
-
- **NEVER** use SCSS, CSS modules, or inline styles (except dynamic values)
|
|
59
|
-
- **NEVER** import from `@payloadcms/ui` in web components (that's admin territory)
|
|
60
|
-
- **NEVER** use relative imports across directories — always use `@/` aliases
|
|
61
|
-
- **ALL** user-facing text MUST use `useTranslations()` — no hardcoded strings
|
|
62
|
-
- **ALL** new translation keys MUST be added to both `en.json` and `he.json`
|
|
63
|
-
- **ALL** components MUST support RTL layout (use `start`/`end` instead of `left`/`right`)
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# Browser Automation Guide
|
|
2
|
-
|
|
3
|
-
## Starting the Browser
|
|
4
|
-
|
|
5
|
-
### Chrome Extension Relay (Recommended for logged-in sessions)
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
# Start the relay
|
|
9
|
-
openclaw browser start --profile chrome
|
|
10
|
-
|
|
11
|
-
# Then in Chrome: click the OpenClaw extension icon on a tab to attach it
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
### OpenClaw Isolated Browser
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
openclaw browser start --profile openclaw
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Other Browsers
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
openclaw browser start --profile firefox
|
|
24
|
-
openclaw browser start --profile safari
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Gateway Timeout Handling
|
|
28
|
-
|
|
29
|
-
The gateway may time out after ~1 minute of inactivity.
|
|
30
|
-
|
|
31
|
-
**Retry Protocol:**
|
|
32
|
-
|
|
33
|
-
1. First timeout → Run `openclaw gateway restart`
|
|
34
|
-
2. Retry the browser command
|
|
35
|
-
3. If still timeout → Run `openclaw gateway restart` again
|
|
36
|
-
4. Retry once more
|
|
37
|
-
5. If still failing → Report error to user
|
|
38
|
-
|
|
39
|
-
**Quick restart command:**
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
openclaw gateway restart
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Common Browser Actions
|
|
46
|
-
|
|
47
|
-
| Action | Command |
|
|
48
|
-
| --------------- | -------------------------------------------------------------------------- |
|
|
49
|
-
| Navigate to URL | `browser action="navigate", targetUrl="http://..."` |
|
|
50
|
-
| Take snapshot | `browser action="snapshot"` |
|
|
51
|
-
| Click element | `browser action="act", request={"kind": "click", ref: "e123"}` |
|
|
52
|
-
| Type text | `browser action="act", request={"kind": "type", ref: "e123", text: "..."}` |
|
|
53
|
-
| Get page status | `browser action="status", profile: "chrome"` |
|
|
54
|
-
|
|
55
|
-
## Finding Element References
|
|
56
|
-
|
|
57
|
-
Use `snapshot` to get the UI tree. Elements have refs like `e123` that can be used for clicks and typing.
|
|
58
|
-
|
|
59
|
-
## Troubleshooting
|
|
60
|
-
|
|
61
|
-
- **"Gateway closed"** → Restart gateway
|
|
62
|
-
- **"Chrome extension relay not running"** → Run `openclaw browser start --profile chrome`
|
|
63
|
-
- **"No tab connected"** → Click the OpenClaw extension icon in Chrome
|
|
64
|
-
- **PATH issues** → Run commands in user's terminal directly (driver may not have openclaw in PATH)
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
# OpenCode Pipeline
|
|
2
|
-
|
|
3
|
-
Automated development pipeline for A-Guy project using OpenCode CLI agents.
|
|
4
|
-
|
|
5
|
-
## Pipeline Flow
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
┌─────────────────────── SPEC PHASE ───────────────────────┐
|
|
9
|
-
│ │
|
|
10
|
-
│ taskify ──→ [gate?] ──→ gap ──→ [clarify: opt-in] │
|
|
11
|
-
│ (agent) hard-stop (agent) (agent) │
|
|
12
|
-
│ if high-risk │
|
|
13
|
-
└───────────────────────────────────────────────────────────┘
|
|
14
|
-
│
|
|
15
|
-
▼
|
|
16
|
-
┌─────────────────────── IMPL PHASE ───────────────────────┐
|
|
17
|
-
│ │
|
|
18
|
-
│ architect ──→ [gate?] ──→ plan-gap ──→ build ──────┐ │
|
|
19
|
-
│ (agent) risk-gated (agent) (agent) │ │
|
|
20
|
-
│ if medium+ │ │
|
|
21
|
-
│ ▼ │
|
|
22
|
-
│ ┌──────────────┐ │
|
|
23
|
-
│ │ Quality Gates │ │
|
|
24
|
-
│ │ tsc + tests │ │
|
|
25
|
-
│ └──────┬───────┘ │
|
|
26
|
-
│ pass? │ │
|
|
27
|
-
│ ┌───no───┴──yes──┐│
|
|
28
|
-
│ ▼ ▼│
|
|
29
|
-
│ Re-invoke commit│
|
|
30
|
-
│ build agent (script)│
|
|
31
|
-
│ (up to 2x) │ │
|
|
32
|
-
│ ▼ │
|
|
33
|
-
│ verify │
|
|
34
|
-
│ (script) │
|
|
35
|
-
│ tsc+lint │
|
|
36
|
-
│ +format │
|
|
37
|
-
│ +tests │
|
|
38
|
-
│ │ │
|
|
39
|
-
│ fail? ─┤ │
|
|
40
|
-
│ lint:fix │
|
|
41
|
-
│ format:fix │
|
|
42
|
-
│ (scripted, │
|
|
43
|
-
│ up to 2x) │
|
|
44
|
-
│ │ │
|
|
45
|
-
│ ▼ │
|
|
46
|
-
│ review ──→ fix ──→ commit ──→ verify ──→ pr │
|
|
47
|
-
│ (agent) (build (script) (script) (script) │
|
|
48
|
-
│ agent) │
|
|
49
|
-
│ │
|
|
50
|
-
└────────────────────────────────────────────────────────────┘
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Stages
|
|
54
|
-
|
|
55
|
-
| Stage | Type | Model | Input | Output |
|
|
56
|
-
| --------- | -------- | -------------- | ------------------------- | ------------ |
|
|
57
|
-
| taskify | agent | MiniMax-M2.5 | task.md | task.json |
|
|
58
|
-
| gap | agent | MiniMax-M2.5 | task.md, task.json | spec.md |
|
|
59
|
-
| clarify | agent | GPT-5.2 | task.md, spec.md | clarified.md |
|
|
60
|
-
| architect | agent | Opus 4.6 | spec.md, clarified.md | plan.md |
|
|
61
|
-
| plan-gap | agent | Opus 4.6 | spec.md, plan.md | plan-gap.md |
|
|
62
|
-
| build | agent | MiniMax-M2.5 | spec.md, plan.md + errors | build.md |
|
|
63
|
-
| commit | scripted | — | task.json | commit.md |
|
|
64
|
-
| review | agent | Opus 4.6 | build.md, plan.md, spec | review.md |
|
|
65
|
-
| fix | agent | MiniMax-M2.5 | review.md, verify.md | fix-summary |
|
|
66
|
-
| verify | scripted | — | code | verify.md |
|
|
67
|
-
| pr | scripted | — | task files | pr.md |
|
|
68
|
-
|
|
69
|
-
**Stage types:**
|
|
70
|
-
- **agent** — Runs via LLM agent (opencode)
|
|
71
|
-
- **scripted** — Runs directly via script (no LLM, fast)
|
|
72
|
-
|
|
73
|
-
Override any model with `OPENCODE_MODEL` env var.
|
|
74
|
-
|
|
75
|
-
## Build → Quality Gate Loop (Key Design)
|
|
76
|
-
|
|
77
|
-
After the build agent finishes, quality gates run automatically:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
build agent exits
|
|
81
|
-
│
|
|
82
|
-
▼
|
|
83
|
-
validate src changes ──→ commit code (preserve work)
|
|
84
|
-
│
|
|
85
|
-
▼
|
|
86
|
-
run gates: tsc + unit tests
|
|
87
|
-
│
|
|
88
|
-
├── ALL PASS ──→ continue to review
|
|
89
|
-
│
|
|
90
|
-
└── FAIL ──→ write build-errors.md
|
|
91
|
-
│
|
|
92
|
-
▼
|
|
93
|
-
re-invoke BUILD agent (not a separate agent!)
|
|
94
|
-
│ • has full context (spec, plan, code intent)
|
|
95
|
-
│ • reads build-errors.md
|
|
96
|
-
│ • fixes its own code
|
|
97
|
-
│
|
|
98
|
-
▼
|
|
99
|
-
re-run ALL gates
|
|
100
|
-
│
|
|
101
|
-
├── PASS ──→ continue
|
|
102
|
-
└── FAIL ──→ retry once more (max 2 attempts)
|
|
103
|
-
│
|
|
104
|
-
└── still failing ──→ pipeline FAILS
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Why the build agent, not a separate autofix agent?**
|
|
108
|
-
- Build agent wrote the code — it knows the intent
|
|
109
|
-
- It has spec, plan, and full context
|
|
110
|
-
- No cold-start penalty (same agent type)
|
|
111
|
-
- One agent fixes everything (tsc, lint, format, AND tests)
|
|
112
|
-
|
|
113
|
-
## Verify Stage (Post-Commit)
|
|
114
|
-
|
|
115
|
-
After commit, verify runs tsc + lint + format + tests. If lint/format fail:
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
verify fails
|
|
119
|
-
│
|
|
120
|
-
▼
|
|
121
|
-
pnpm lint:fix + pnpm format:fix (scripted, no LLM)
|
|
122
|
-
│
|
|
123
|
-
▼
|
|
124
|
-
re-run verify (max 2 attempts)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
No LLM agent needed — lint and format fixes are mechanical.
|
|
128
|
-
|
|
129
|
-
## Control Modes (Gates)
|
|
130
|
-
|
|
131
|
-
| Mode | Trigger | Gate Points | Use Case |
|
|
132
|
-
| ---------- | -------------------- | ------------------------------- | --------------------------------- |
|
|
133
|
-
| Auto | `risk_level: low` | None | Bug fixes, docs, low-risk changes |
|
|
134
|
-
| Risk-Gated | `risk_level: medium` | After architect | New features, refactors |
|
|
135
|
-
| Hard Stop | `risk_level: high` | After taskify + after architect | DB changes, security, billing |
|
|
136
|
-
|
|
137
|
-
- `/kody --auto` — Force auto mode (skip all gates)
|
|
138
|
-
- `/kody --gate` — Force risk-gated mode
|
|
139
|
-
- `/kody approve` — Approve and resume pipeline
|
|
140
|
-
- `/kody reject` — Cancel the task
|
|
141
|
-
|
|
142
|
-
## Task Types & Pipelines
|
|
143
|
-
|
|
144
|
-
| Task Type | Pipeline |
|
|
145
|
-
| --------- | -------------------------------------------------------------------- |
|
|
146
|
-
| feat | taskify → gap → architect → plan-gap → build → commit → review → fix → commit → verify → pr |
|
|
147
|
-
| fix | taskify → gap → architect → plan-gap → build → commit → review → fix → commit → verify → pr |
|
|
148
|
-
| refactor | taskify → gap → architect → plan-gap → build → commit → review → fix → commit → verify → pr |
|
|
149
|
-
| docs | build → commit → verify → pr |
|
|
150
|
-
|
|
151
|
-
## Task Structure
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
.tasks/
|
|
155
|
-
└── <YYMMDD-task-name>/
|
|
156
|
-
├── task.md # PRD/requirements (YOU write this)
|
|
157
|
-
├── task.json # Task classification (taskify agent)
|
|
158
|
-
├── spec.md # Detailed spec (gap agent)
|
|
159
|
-
├── clarified.md # Q&A answers or "Use recommended answers."
|
|
160
|
-
├── plan.md # Implementation plan (architect agent)
|
|
161
|
-
├── plan-gap.md # Gap analysis report (plan-gap agent)
|
|
162
|
-
├── build.md # Build report (build agent)
|
|
163
|
-
├── build-errors.md # Quality gate errors (for build retry, deleted on success)
|
|
164
|
-
├── commit.md # Commit report (scripted)
|
|
165
|
-
├── review.md # Code review (review agent)
|
|
166
|
-
├── fix-summary.md # Fix report (fix agent)
|
|
167
|
-
├── verify.md # Verification results (scripted)
|
|
168
|
-
├── pr.md # PR summary (scripted)
|
|
169
|
-
└── status.json # Pipeline status tracking
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Running the Pipeline
|
|
173
|
-
|
|
174
|
-
### Via GitHub Issue Comment
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
/kody # Full pipeline, auto-generate task-id
|
|
178
|
-
/kody --clarify # With clarify stage enabled
|
|
179
|
-
/kody fix the tests # Rerun with feedback
|
|
180
|
-
/kody spec 260217-user-metrics # Run spec phase only
|
|
181
|
-
/kody impl 260217-user-metrics # Run impl phase only
|
|
182
|
-
/kody rerun 260217-user-metrics --feedback "fix this"
|
|
183
|
-
/kody status 260217-user-metrics # Check pipeline status
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Via Local CLI
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
pnpm kody:run --task-id=260217-user-metrics --mode=full --local
|
|
190
|
-
pnpm kody:run --task-id=260217-user-metrics --mode=impl --local
|
|
191
|
-
pnpm kody:run --task-id=260217-user-metrics --mode=rerun --from=build --feedback="fix this" --local
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
## Commit Format
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
<type>(<scope>): <Subject in sentence case>
|
|
198
|
-
|
|
199
|
-
<Body with at least 20 characters>
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `security`
|
|
203
|
-
|
|
204
|
-
## Branch Naming
|
|
205
|
-
|
|
206
|
-
- `feat/<task-name>` — Features
|
|
207
|
-
- `fix/<task-name>` — Bug fixes
|
|
208
|
-
- `chore/<task-name>` — Maintenance
|
|
209
|
-
- `refactor/<task-name>` — Refactoring
|
|
210
|
-
- `docs/<task-name>` — Documentation
|
package/opencode/opencode.json
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"instructions": [],
|
|
4
|
-
"provider": {
|
|
5
|
-
"minimax": {
|
|
6
|
-
"options": {
|
|
7
|
-
"baseURL": "http://localhost:8080/v1",
|
|
8
|
-
"apiKey": "mock-key"
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
},
|
|
12
|
-
"agent": {
|
|
13
|
-
"build": {
|
|
14
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
15
|
-
"description": "Building features, refactoring, implementing changes"
|
|
16
|
-
},
|
|
17
|
-
"plan": {
|
|
18
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
19
|
-
"description": "Planning tasks, architecture design, complex problem solving"
|
|
20
|
-
},
|
|
21
|
-
"architect": {
|
|
22
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
23
|
-
"description": "Planning tasks, architecture design, complex problem solving"
|
|
24
|
-
},
|
|
25
|
-
"clarify": {
|
|
26
|
-
"model": "openai/gpt-5.2",
|
|
27
|
-
"description": "Collects operator questions and answers"
|
|
28
|
-
},
|
|
29
|
-
"taskify": {
|
|
30
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
31
|
-
"description": "Converts free-text tasks into structured task.json for pipeline routing"
|
|
32
|
-
},
|
|
33
|
-
"gap": {
|
|
34
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
35
|
-
"description": "Analyzes spec.md for gaps, missing info, and inconsistencies"
|
|
36
|
-
},
|
|
37
|
-
"plan-gap": {
|
|
38
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
39
|
-
"description": "Analyzes plan for gaps vs spec and codebase, auto-revises plan"
|
|
40
|
-
},
|
|
41
|
-
"autofix": {
|
|
42
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
43
|
-
"description": "Automatically fixes lint, type, and format errors from verify stage"
|
|
44
|
-
},
|
|
45
|
-
"verify": {
|
|
46
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
47
|
-
"description": "Runs tests, validates implementation passes all gates"
|
|
48
|
-
},
|
|
49
|
-
"test": {
|
|
50
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
51
|
-
"description": "Writes E2E and integration tests using Playwright"
|
|
52
|
-
},
|
|
53
|
-
"advisor": {
|
|
54
|
-
"model": "openai/gpt-5.2",
|
|
55
|
-
"description": "Code review, suggestions, best practices"
|
|
56
|
-
},
|
|
57
|
-
"pr": {
|
|
58
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
59
|
-
"description": "Creates branch, commits changes, opens pull request"
|
|
60
|
-
},
|
|
61
|
-
"kody-expert": {
|
|
62
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
63
|
-
"description": "Kody pipeline expert - understands pipeline execution, debugging, adding new stages",
|
|
64
|
-
"instructions": [".opencode/docs/PIPELINE.md"]
|
|
65
|
-
},
|
|
66
|
-
"build-manager": {
|
|
67
|
-
"model": "anthropic/claude-opus-4-6",
|
|
68
|
-
"description": "Orchestrates build and test-writer agents in parallel, handles retries and verification"
|
|
69
|
-
},
|
|
70
|
-
"test-writer": {
|
|
71
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
72
|
-
"description": "TDD test writer - writes failing tests before implementation"
|
|
73
|
-
},
|
|
74
|
-
"browser": {
|
|
75
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
76
|
-
"description": "Browser agent - navigates A-Guy platform, inspects pages, answers UI questions. Uses Chrome DevTools MCP locally, Playwright MCP in CI.",
|
|
77
|
-
"instructions": [".opencode/docs/BROWSER_AUTOMATION.md"]
|
|
78
|
-
},
|
|
79
|
-
"review": {
|
|
80
|
-
"model": "anthropic/claude-opus-4-6",
|
|
81
|
-
"description": "Architect-level code review of generated code for quality, security, and correctness"
|
|
82
|
-
},
|
|
83
|
-
"fix": {
|
|
84
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
85
|
-
"description": "Targeted fixes for issues found by review or verify stages"
|
|
86
|
-
},
|
|
87
|
-
"reflect": {
|
|
88
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
89
|
-
"description": "Post-task reflection - extracts patterns, updates knowledge base, creates skills when patterns repeat"
|
|
90
|
-
},
|
|
91
|
-
"e2e-test-writer": {
|
|
92
|
-
"model": "minimax-coding-plan/MiniMax-M2.7-highspeed",
|
|
93
|
-
"description": "Writes Playwright E2E tests for UI changes. Tests committed but NOT run in pipeline — CI runs them on PR."
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
"mcp": {}
|
|
97
|
-
|
|
98
|
-
}
|