@kody-ade/kody-engine 0.2.62 → 0.3.0

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.
Files changed (30) hide show
  1. package/README.md +24 -24
  2. package/dist/bin/{kody2.js → kody.js} +171 -169
  3. package/dist/executables/bug/profile.json +6 -6
  4. package/dist/executables/chore/profile.json +6 -6
  5. package/dist/executables/classify/profile.json +1 -1
  6. package/dist/executables/feature/profile.json +6 -6
  7. package/dist/executables/fix/profile.json +1 -1
  8. package/dist/executables/fix/prompt.md +1 -1
  9. package/dist/executables/fix-ci/profile.json +1 -1
  10. package/dist/executables/init/profile.json +1 -1
  11. package/dist/executables/plan/profile.json +1 -1
  12. package/dist/executables/plan-verify/profile.json +2 -2
  13. package/dist/executables/plan-verify/prompt.md +1 -1
  14. package/dist/executables/research/profile.json +1 -1
  15. package/dist/executables/resolve/profile.json +1 -1
  16. package/dist/executables/review/profile.json +1 -1
  17. package/dist/executables/run/profile.json +1 -1
  18. package/dist/executables/run/prompt.md +2 -2
  19. package/dist/executables/spec/profile.json +4 -4
  20. package/dist/executables/sync/profile.json +1 -1
  21. package/dist/executables/types.ts +3 -3
  22. package/dist/executables/ui-review/profile.json +3 -3
  23. package/dist/executables/ui-review/prompt.md +8 -8
  24. package/dist/plugins/commands/kody-live-probe.md +2 -2
  25. package/dist/plugins/skills/kody-live-marker/SKILL.md +3 -3
  26. package/dist/plugins/test-plugin/.claude-plugin/plugin.json +2 -2
  27. package/dist/plugins/test-plugin/skills/kody-plugin-marker/SKILL.md +2 -2
  28. package/kody.config.schema.json +3 -3
  29. package/package.json +4 -4
  30. package/templates/{kody2.yml → kody.yml} +16 -16
@@ -33,7 +33,7 @@
33
33
  "with": {
34
34
  "label": "kody-flow:bug",
35
35
  "color": "d73a4a",
36
- "description": "kody2 flow: bug / enhancement"
36
+ "description": "kody flow: bug / enhancement"
37
37
  }
38
38
  },
39
39
  {
@@ -41,7 +41,7 @@
41
41
  "with": {
42
42
  "label": "kody:orchestrating",
43
43
  "color": "1d76db",
44
- "description": "kody2: orchestrating a multi-stage flow"
44
+ "description": "kody: orchestrating a multi-stage flow"
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
@@ -58,22 +58,22 @@
58
58
  "runWhen": { "data.taskState.core.lastOutcome.type": "RUN_COMPLETED" } },
59
59
 
60
60
  { "script": "finishFlow",
61
- "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
61
+ "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
62
62
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_PASS" } },
63
63
 
64
64
  { "script": "dispatch", "with": { "next": "fix", "target": "pr" },
65
65
  "runWhen": { "data.taskState.core.lastOutcome.type": ["REVIEW_CONCERNS", "REVIEW_FAIL"] } },
66
66
 
67
67
  { "script": "finishFlow",
68
- "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
68
+ "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
69
69
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_FAILED" } },
70
70
 
71
71
  { "script": "finishFlow",
72
- "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
72
+ "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
73
73
  "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
74
74
 
75
75
  { "script": "finishFlow",
76
- "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
76
+ "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
77
77
  "runWhen": { "data.taskState.core.lastOutcome.type": ["PLAN_FAILED", "RUN_FAILED", "FIX_FAILED", "AGENT_NOT_RUN"] } },
78
78
 
79
79
  { "script": "persistFlowState" }
@@ -33,7 +33,7 @@
33
33
  "with": {
34
34
  "label": "kody-flow:chore",
35
35
  "color": "c5def5",
36
- "description": "kody2 flow: chore / docs / dep-bump"
36
+ "description": "kody flow: chore / docs / dep-bump"
37
37
  }
38
38
  },
39
39
  {
@@ -41,7 +41,7 @@
41
41
  "with": {
42
42
  "label": "kody:orchestrating",
43
43
  "color": "1d76db",
44
- "description": "kody2: orchestrating a multi-stage flow"
44
+ "description": "kody: orchestrating a multi-stage flow"
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
@@ -55,22 +55,22 @@
55
55
  "runWhen": { "data.taskState.core.lastOutcome.type": "RUN_COMPLETED" } },
56
56
 
57
57
  { "script": "finishFlow",
58
- "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
58
+ "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
59
59
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_PASS" } },
60
60
 
61
61
  { "script": "dispatch", "with": { "next": "fix", "target": "pr" },
62
62
  "runWhen": { "data.taskState.core.lastOutcome.type": ["REVIEW_CONCERNS", "REVIEW_FAIL"] } },
63
63
 
64
64
  { "script": "finishFlow",
65
- "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
65
+ "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
66
66
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_FAILED" } },
67
67
 
68
68
  { "script": "finishFlow",
69
- "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
69
+ "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
70
70
  "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
71
71
 
72
72
  { "script": "finishFlow",
73
- "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
73
+ "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
74
74
  "runWhen": { "data.taskState.core.lastOutcome.type": ["RUN_FAILED", "FIX_FAILED", "AGENT_NOT_RUN"] } },
75
75
 
76
76
  { "script": "persistFlowState" }
@@ -36,7 +36,7 @@
36
36
  "with": {
37
37
  "label": "kody:classifying",
38
38
  "color": "0e8a16",
39
- "description": "kody2: classifying the issue"
39
+ "description": "kody: classifying the issue"
40
40
  }
41
41
  },
42
42
  { "script": "loadIssueContext" },
@@ -33,7 +33,7 @@
33
33
  "with": {
34
34
  "label": "kody-flow:feature",
35
35
  "color": "a2eeef",
36
- "description": "kody2 flow: feature / refactor"
36
+ "description": "kody flow: feature / refactor"
37
37
  }
38
38
  },
39
39
  {
@@ -41,7 +41,7 @@
41
41
  "with": {
42
42
  "label": "kody:orchestrating",
43
43
  "color": "1d76db",
44
- "description": "kody2: orchestrating a multi-stage flow"
44
+ "description": "kody: orchestrating a multi-stage flow"
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
@@ -61,22 +61,22 @@
61
61
  "runWhen": { "data.taskState.core.lastOutcome.type": "RUN_COMPLETED" } },
62
62
 
63
63
  { "script": "finishFlow",
64
- "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
64
+ "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
65
65
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_PASS" } },
66
66
 
67
67
  { "script": "dispatch", "with": { "next": "fix", "target": "pr" },
68
68
  "runWhen": { "data.taskState.core.lastOutcome.type": ["REVIEW_CONCERNS", "REVIEW_FAIL"] } },
69
69
 
70
70
  { "script": "finishFlow",
71
- "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
71
+ "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
72
72
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_FAILED" } },
73
73
 
74
74
  { "script": "finishFlow",
75
- "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody2: PR ready for human review/merge" },
75
+ "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
76
76
  "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
77
77
 
78
78
  { "script": "finishFlow",
79
- "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
79
+ "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
80
80
  "runWhen": { "data.taskState.core.lastOutcome.type": ["RESEARCH_FAILED", "PLAN_FAILED", "RUN_FAILED", "FIX_FAILED", "AGENT_NOT_RUN"] } },
81
81
 
82
82
  { "script": "persistFlowState" }
@@ -46,7 +46,7 @@
46
46
  "with": {
47
47
  "label": "kody:fixing",
48
48
  "color": "e99695",
49
- "description": "kody2: applying review feedback"
49
+ "description": "kody: applying review feedback"
50
50
  }
51
51
  },
52
52
  { "script": "fixFlow" },
@@ -42,6 +42,6 @@ You are Kody, an autonomous engineer. Apply the feedback below to the existing P
42
42
  - **"Already satisfied" (i.e. skipping the edit because the code already does what's asked) is only allowed when you can cite the exact file:line that already implements it.** If in doubt, make the edit — under `fixed`.
43
43
  - Do NOT run git/gh commands. The wrapper handles it.
44
44
  - Stay on `{{branch}}`.
45
- - Do not modify files under `.kody/`, `.kody-engine/`, `.kody2/`, `node_modules/`, `dist/`, `build/`, `.env`, `*.log`.
45
+ - Do not modify files under `.kody/`, `.kody-engine/`, `.kody/`, `node_modules/`, `dist/`, `build/`, `.env`, `*.log`.
46
46
  - If the feedback is ambiguous or conflicts with the issue, err toward what the feedback says.
47
47
  {{systemPromptAppend}}
@@ -46,7 +46,7 @@
46
46
  "with": {
47
47
  "label": "kody:fixing",
48
48
  "color": "e99695",
49
- "description": "kody2: applying review feedback"
49
+ "description": "kody: applying review feedback"
50
50
  }
51
51
  },
52
52
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "init",
3
3
  "role": "utility",
4
- "describe": "Scaffold a consumer repo with kody.config.json and the @kody2 workflow. No agent.",
4
+ "describe": "Scaffold a consumer repo with kody.config.json and the @kody workflow. No agent.",
5
5
  "inputs": [
6
6
  {
7
7
  "name": "force",
@@ -37,7 +37,7 @@
37
37
  "with": {
38
38
  "label": "kody:planning",
39
39
  "color": "5319e7",
40
- "description": "kody2: producing an implementation plan"
40
+ "description": "kody: producing an implementation plan"
41
41
  }
42
42
  },
43
43
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "plan-verify",
3
3
  "role": "utility",
4
- "describe": "Live-test executable. Loads kody-live-marker skill, /kody-live-probe command, kody-live-trace hook, and the bundled test-plugin. Asks the agent to emit confirmation tokens for each feature so Kody2 can validate plugin wiring end-to-end.",
4
+ "describe": "Live-test executable. Loads kody-live-marker skill, /kody-live-probe command, kody-live-trace hook, and the bundled test-plugin. Asks the agent to emit confirmation tokens for each feature so Kody can validate plugin wiring end-to-end.",
5
5
  "inputs": [
6
6
  { "name": "issue", "flag": "--issue", "type": "int", "required": true, "describe": "GitHub issue number to verify against." }
7
7
  ],
@@ -9,7 +9,7 @@
9
9
  "model": "inherit",
10
10
  "permissionMode": "default",
11
11
  "maxTurns": 15,
12
- "systemPromptAppend": "You are running Kody2's plugin-wiring live verification. Emit confirmation tokens exactly as the prompt instructs.",
12
+ "systemPromptAppend": "You are running Kody's plugin-wiring live verification. Emit confirmation tokens exactly as the prompt instructs.",
13
13
  "tools": ["Read", "Grep", "Glob", "Bash"],
14
14
  "hooks": ["kody-live-trace"],
15
15
  "skills": ["kody-live-marker"],
@@ -1,4 +1,4 @@
1
- You are Kody2's plugin-wiring live verification agent. Your ONLY job is to prove that each of the four extension mechanisms (plugins, skills, commands, hooks) is successfully loaded into your session. Do NOT address the issue's actual work.
1
+ You are Kody's plugin-wiring live verification agent. Your ONLY job is to prove that each of the four extension mechanisms (plugins, skills, commands, hooks) is successfully loaded into your session. Do NOT address the issue's actual work.
2
2
 
3
3
  Issue #{{issue.number}}: {{issue.title}}
4
4
 
@@ -37,7 +37,7 @@
37
37
  "with": {
38
38
  "label": "kody:researching",
39
39
  "color": "1d76db",
40
- "description": "kody2: researching the issue"
40
+ "description": "kody: researching the issue"
41
41
  }
42
42
  },
43
43
  {
@@ -39,7 +39,7 @@
39
39
  "with": {
40
40
  "label": "kody:resolving",
41
41
  "color": "b60205",
42
- "description": "kody2: resolving merge conflicts"
42
+ "description": "kody: resolving merge conflicts"
43
43
  }
44
44
  },
45
45
  {
@@ -38,7 +38,7 @@
38
38
  "with": {
39
39
  "label": "kody:reviewing",
40
40
  "color": "d93f0b",
41
- "description": "kody2: reviewing a PR"
41
+ "description": "kody: reviewing a PR"
42
42
  }
43
43
  },
44
44
  {
@@ -39,7 +39,7 @@
39
39
  "with": {
40
40
  "label": "kody:running",
41
41
  "color": "fbca04",
42
- "description": "kody2: implementing the change"
42
+ "description": "kody: implementing the change"
43
43
  }
44
44
  },
45
45
  { "script": "runFlow" },
@@ -7,7 +7,7 @@ You are Kody, an autonomous engineer. Take a GitHub issue from spec to a tested
7
7
  {{conventionsBlock}}{{coverageBlock}}{{toolsUsage}}# Issue #{{issue.number}}: {{issue.title}}
8
8
  {{issue.body}}
9
9
 
10
- # Existing plan (produced by `@kody2 plan`, if present)
10
+ # Existing plan (produced by `@kody plan`, if present)
11
11
  {{artifacts.plan}}
12
12
 
13
13
  If the plan above is non-empty, TREAT IT AS AUTHORITATIVE — follow its file list and approach rather than inventing your own. Deviate only if the plan is wrong; if you do, you MUST declare each deviation in the `PLAN_DEVIATIONS:` block of your final message (format below). Silent deviations are a hard failure, even if the code works. If the plan is empty, proceed from first principles and emit `PLAN_DEVIATIONS: none` in the final message.
@@ -32,7 +32,7 @@ If the plan above is non-empty, TREAT IT AS AUTHORITATIVE — follow its file li
32
32
  # Rules
33
33
  - Do NOT run **any** `git` or `gh` commands. The wrapper handles all git/gh operations. If a quality gate fails, that's the failure — do not investigate it via git.
34
34
  - Stay on the current branch (`{{branch}}`). It is already checked out for you.
35
- - Do NOT modify files under: `.kody/`, `.kody-engine/`, `.kody-lean/`, `.kody2/`, `node_modules/`, `dist/`, `build/`, `.env`, or any `*.log`.
35
+ - Do NOT modify files under: `.kody/`, `.kody-engine/`, `.kody-lean/`, `.kody/`, `node_modules/`, `dist/`, `build/`, `.env`, or any `*.log`.
36
36
  - Do NOT post issue comments — the wrapper handles that.
37
37
  - Pre-existing quality-gate failures: assume they are NOT your responsibility unless your edits touched related code.
38
38
  - Keep the plan and reasoning concise. Long monologues waste turns.
@@ -33,7 +33,7 @@
33
33
  "with": {
34
34
  "label": "kody-flow:spec",
35
35
  "color": "7057ff",
36
- "description": "kody2 flow: spec / RFC / design-doc"
36
+ "description": "kody flow: spec / RFC / design-doc"
37
37
  }
38
38
  },
39
39
  {
@@ -41,7 +41,7 @@
41
41
  "with": {
42
42
  "label": "kody:orchestrating",
43
43
  "color": "1d76db",
44
- "description": "kody2: orchestrating a multi-stage flow"
44
+ "description": "kody: orchestrating a multi-stage flow"
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
@@ -55,11 +55,11 @@
55
55
  "runWhen": { "data.taskState.core.lastOutcome.type": "RESEARCH_COMPLETED" } },
56
56
 
57
57
  { "script": "finishFlow",
58
- "with": { "reason": "spec-ready", "label": "kody:done", "color": "0e8a16", "description": "kody2: spec/plan artifact ready" },
58
+ "with": { "reason": "spec-ready", "label": "kody:done", "color": "0e8a16", "description": "kody: spec/plan artifact ready" },
59
59
  "runWhen": { "data.taskState.core.lastOutcome.type": "PLAN_COMPLETED" } },
60
60
 
61
61
  { "script": "finishFlow",
62
- "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody2: flow failed" },
62
+ "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
63
63
  "runWhen": { "data.taskState.core.lastOutcome.type": ["RESEARCH_FAILED", "PLAN_FAILED", "AGENT_NOT_RUN"] } },
64
64
 
65
65
  { "script": "persistFlowState" }
@@ -32,7 +32,7 @@
32
32
  "with": {
33
33
  "label": "kody:syncing",
34
34
  "color": "c5def5",
35
- "description": "kody2: syncing PR with base"
35
+ "description": "kody: syncing PR with base"
36
36
  }
37
37
  },
38
38
  {
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import type { AgentResult } from "../agent.js"
11
- import type { Kody2Config } from "../config.js"
11
+ import type { KodyConfig } from "../config.js"
12
12
  import type { Phase } from "../state.js"
13
13
 
14
14
  // ────────────────────────────────────────────────────────────────────────────
@@ -101,7 +101,7 @@ export interface InputSpec {
101
101
  }
102
102
 
103
103
  export interface ClaudeCodeSpec {
104
- /** "inherit" → use Kody2Config.agent.model. Or a concrete "provider/model". */
104
+ /** "inherit" → use KodyConfig.agent.model. Or a concrete "provider/model". */
105
105
  model: string
106
106
  permissionMode: "default" | "acceptEdits" | "plan" | "bypassPermissions"
107
107
  /** null = unbounded. */
@@ -184,7 +184,7 @@ export interface Context {
184
184
  /** Project root. */
185
185
  cwd: string
186
186
  /** Loaded kody.config.json. */
187
- config: Kody2Config
187
+ config: KodyConfig
188
188
  /** Stream-output verbosity. */
189
189
  verbose?: boolean
190
190
  quiet?: boolean
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ui-review",
3
3
  "role": "primitive",
4
- "describe": "UI/UX review of an open PR: browses the running preview with Playwright, compares behavior to diff intent, posts one structured review comment. Read-only on the repo (no commits); writes a throwaway Playwright spec under .kody2/.",
4
+ "describe": "UI/UX review of an open PR: browses the running preview with Playwright, compares behavior to diff intent, posts one structured review comment. Read-only on the repo (no commits); writes a throwaway Playwright spec under .kody/.",
5
5
  "kind": "oneshot",
6
6
  "inputs": [
7
7
  {
@@ -49,7 +49,7 @@
49
49
  "installCommand": "npx --yes playwright install --with-deps chromium"
50
50
  },
51
51
  "verify": "npx --no-install playwright --version",
52
- "usage": "Use `npx playwright test <file>` to run a Playwright spec. Write ad-hoc specs under `.kody2/ui-review/*.spec.ts`. If `npx playwright test` errors with `Cannot find package '@playwright/test'`, install it once with `npm install -D @playwright/test` (or the repo's package-manager equivalent) before retrying — the `playwright` browser binaries are already set up by preflight, but the per-repo test framework may not be. Prefer `page.goto(process.env.UI_REVIEW_BASE_URL)` — the base URL is injected as `UI_REVIEW_BASE_URL` at run time. Capture screenshots with `await page.screenshot({ path: '.kody2/ui-review/<name>.png' })` and reference those paths in your final review.",
52
+ "usage": "Use `npx playwright test <file>` to run a Playwright spec. Write ad-hoc specs under `.kody/ui-review/*.spec.ts`. If `npx playwright test` errors with `Cannot find package '@playwright/test'`, install it once with `npm install -D @playwright/test` (or the repo's package-manager equivalent) before retrying — the `playwright` browser binaries are already set up by preflight, but the per-repo test framework may not be. Prefer `page.goto(process.env.UI_REVIEW_BASE_URL)` — the base URL is injected as `UI_REVIEW_BASE_URL` at run time. Capture screenshots with `await page.screenshot({ path: '.kody/ui-review/<name>.png' })` and reference those paths in your final review.",
53
53
  "allowedUses": [
54
54
  "test",
55
55
  "--version"
@@ -60,7 +60,7 @@
60
60
  "outputArtifacts": [],
61
61
  "scripts": {
62
62
  "preflight": [
63
- { "script": "setLifecycleLabel", "with": { "label": "kody:reviewing", "color": "d93f0b", "description": "kody2: reviewing a PR" } },
63
+ { "script": "setLifecycleLabel", "with": { "label": "kody:reviewing", "color": "d93f0b", "description": "kody: reviewing a PR" } },
64
64
  { "script": "reviewFlow" },
65
65
  { "script": "loadTaskState" },
66
66
  { "script": "loadConventions" },
@@ -1,6 +1,6 @@
1
1
  You are Kody, a senior UI/UX reviewer. Review PR #{{pr.number}} by reading the diff AND browsing the running app with Playwright. Post ONE structured review comment. Do NOT edit any tracked source files. Do NOT run any `git` or `gh` commands.
2
2
 
3
- You MAY write throwaway Playwright specs and screenshots under `.kody2/ui-review/` — that directory is ignored by the repo.
3
+ You MAY write throwaway Playwright specs and screenshots under `.kody/ui-review/` — that directory is ignored by the repo.
4
4
 
5
5
  # PR #{{pr.number}}: {{pr.title}}
6
6
 
@@ -46,23 +46,23 @@ If the response is not 2xx or 3xx, the preview is unreachable. In that case, SKI
46
46
 
47
47
  2. **Plan the browse session.** For each UI-affecting change, pick 1–3 routes from the QA context that exercise it. If the change requires an authenticated role, grab credentials from the QA guide above. If no credentials are available for a role the change depends on, note that as a gap and browse only public pages.
48
48
 
49
- 3. **Write a Playwright spec.** Create exactly one file at `.kody2/ui-review/browse.spec.ts`. Use `process.env.UI_REVIEW_BASE_URL` as the base URL. For each route you plan to check, write a test that:
49
+ 3. **Write a Playwright spec.** Create exactly one file at `.kody/ui-review/browse.spec.ts`. Use `process.env.UI_REVIEW_BASE_URL` as the base URL. For each route you plan to check, write a test that:
50
50
  - navigates there,
51
51
  - performs the minimum interaction to exercise the change (click, submit, fill),
52
- - takes a screenshot at `.kody2/ui-review/<slug>.png`,
52
+ - takes a screenshot at `.kody/ui-review/<slug>.png`,
53
53
  - asserts at least one piece of visible content so the test fails loudly on a blank / error page.
54
54
 
55
- Include a `playwright.config.ts` at `.kody2/ui-review/playwright.config.ts` only if you need custom config; otherwise rely on defaults (headless chromium).
55
+ Include a `playwright.config.ts` at `.kody/ui-review/playwright.config.ts` only if you need custom config; otherwise rely on defaults (headless chromium).
56
56
 
57
57
  4. **Run it.** Invoke:
58
58
 
59
59
  ```bash
60
- UI_REVIEW_BASE_URL={{previewUrl}} npx playwright test .kody2/ui-review/browse.spec.ts --reporter=line
60
+ UI_REVIEW_BASE_URL={{previewUrl}} npx playwright test .kody/ui-review/browse.spec.ts --reporter=line
61
61
  ```
62
62
 
63
63
  Capture both stdout and exit code. If Playwright is not installed, the executor will have tried to install it in preflight — if it still fails, report the install error and fall back to a diff-only review.
64
64
 
65
- 5. **Inspect screenshots.** Use the Read tool on each `.png` under `.kody2/ui-review/` so the visual state is in your context. Note anything that looks broken, empty, misaligned, or inconsistent with the diff's intent.
65
+ 5. **Inspect screenshots.** Use the Read tool on each `.png` under `.kody/ui-review/` so the visual state is in your context. Note anything that looks broken, empty, misaligned, or inconsistent with the diff's intent.
66
66
 
67
67
  6. **Write the review.** Your FINAL MESSAGE must be the markdown review comment — no preamble, no DONE / COMMIT_MSG markers. The entire final message is posted verbatim to the PR.
68
68
 
@@ -71,7 +71,7 @@ If the response is not 2xx or 3xx, the preview is unreachable. In that case, SKI
71
71
  ```
72
72
  ## Verdict: PASS | CONCERNS | FAIL
73
73
 
74
- _UI review by kody2 — browsed {{previewUrl}}_
74
+ _UI review by kody — browsed {{previewUrl}}_
75
75
 
76
76
  ### Summary
77
77
  <2-3 sentences: what this PR changes in the UI, and whether the running app matches that intent>
@@ -95,7 +95,7 @@ _UI review by kody2 — browsed {{previewUrl}}_
95
95
 
96
96
  # Rules
97
97
 
98
- - No commits. No `git` / `gh` invocations. No edits to files outside `.kody2/ui-review/`.
98
+ - No commits. No `git` / `gh` invocations. No edits to files outside `.kody/ui-review/`.
99
99
  - Verdict **FAIL** only for clear visual regressions, broken flows, or correctness/accessibility issues that block merge.
100
100
  - Verdict **CONCERNS** for clarity/polish/edge-case gaps that shouldn't block.
101
101
  - Verdict **PASS** when the PR's UI changes work as intended and nothing obvious is broken.
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: Internal Kody2 live-test slash command. Prints a confirmation token proving commands are loaded.
2
+ description: Internal Kody live-test slash command. Prints a confirmation token proving commands are loaded.
3
3
  ---
4
4
 
5
5
  # /kody-live-probe
6
6
 
7
7
  Print the literal token `COMMAND_LOADED_OK` in your next message, followed by the current ISO timestamp on a new line.
8
8
 
9
- Do not perform any other action — this command is a no-op confirmation signal for Kody2 infrastructure validation.
9
+ Do not perform any other action — this command is a no-op confirmation signal for Kody infrastructure validation.
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: kody-live-marker
3
- description: Internal Kody2 live-test skill. Activates when a prompt mentions "kody-live-marker" and provides a confirmation token.
3
+ description: Internal Kody live-test skill. Activates when a prompt mentions "kody-live-marker" and provides a confirmation token.
4
4
  ---
5
5
 
6
6
  # kody-live-marker
7
7
 
8
- This skill exists only to verify that Kody2's synthetic plugin wiring actually loads skills into the agent's session.
8
+ This skill exists only to verify that Kody's synthetic plugin wiring actually loads skills into the agent's session.
9
9
 
10
10
  ## When to activate
11
11
 
@@ -13,6 +13,6 @@ When the user's prompt contains the phrase "kody-live-marker" or explicitly asks
13
13
 
14
14
  ## What to do
15
15
 
16
- Include the literal token `SKILL_LOADED_OK` somewhere in your final message. Include the skill's description verbatim: "Internal Kody2 live-test skill."
16
+ Include the literal token `SKILL_LOADED_OK` somewhere in your final message. Include the skill's description verbatim: "Internal Kody live-test skill."
17
17
 
18
18
  Do not use this skill for anything else. It is a no-op confirmation signal for infrastructure validation.
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "kody2-test-plugin",
2
+ "name": "kody-test-plugin",
3
3
  "version": "1.0.0",
4
- "description": "Kody2 internal live-test plugin. Ships a single skill that proves external-plugin loading works.",
4
+ "description": "Kody internal live-test plugin. Ships a single skill that proves external-plugin loading works.",
5
5
  "skills": ["./skills/"]
6
6
  }
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: kody-plugin-marker
3
- description: Kody2 external-plugin live-test skill. Activates when prompt mentions "kody-plugin-marker" and outputs a confirmation token.
3
+ description: Kody external-plugin live-test skill. Activates when prompt mentions "kody-plugin-marker" and outputs a confirmation token.
4
4
  ---
5
5
 
6
6
  # kody-plugin-marker
7
7
 
8
- This skill is bundled inside a standalone plugin directory (not copied into a synthetic plugin). Its purpose is to verify that Kody2's `plugins: string[]` profile field successfully loads an external plugin as-is.
8
+ This skill is bundled inside a standalone plugin directory (not copied into a synthetic plugin). Its purpose is to verify that Kody's `plugins: string[]` profile field successfully loads an external plugin as-is.
9
9
 
10
10
  ## When to activate
11
11
 
@@ -84,7 +84,7 @@
84
84
  },
85
85
  "issueContext": {
86
86
  "type": "object",
87
- "description": "kody2: how many and how much of the issue's comments the agent sees in its prompt. Higher = more context but larger prompts. Defaults: 50 comments, 10000 bytes each.",
87
+ "description": "kody: how many and how much of the issue's comments the agent sees in its prompt. Higher = more context but larger prompts. Defaults: 50 comments, 10000 bytes each.",
88
88
  "properties": {
89
89
  "commentLimit": {
90
90
  "type": "integer",
@@ -103,7 +103,7 @@
103
103
  },
104
104
  "testRequirements": {
105
105
  "type": "array",
106
- "description": "kody2 enforces that newly added files matching `pattern` ship with a sibling test file matching `requireSibling`. Misses fail the run; the agent gets one retry with the gap as feedback. Empty array or absent = no enforcement.",
106
+ "description": "kody enforces that newly added files matching `pattern` ship with a sibling test file matching `requireSibling`. Misses fail the run; the agent gets one retry with the gap as feedback. Empty array or absent = no enforcement.",
107
107
  "items": {
108
108
  "type": "object",
109
109
  "required": ["pattern", "requireSibling"],
@@ -127,7 +127,7 @@
127
127
  "model": {
128
128
  "type": "string",
129
129
  "pattern": "^[^/]+/.+$",
130
- "description": "Single 'provider/model' string used by kody2 (single-session pipeline). Use 'claude/...' or 'anthropic/...' for direct Anthropic API; anything else routes through LiteLLM proxy.",
130
+ "description": "Single 'provider/model' string used by kody (single-session pipeline). Use 'claude/...' or 'anthropic/...' for direct Anthropic API; anything else routes through LiteLLM proxy.",
131
131
  "examples": ["claude/claude-sonnet-4-6", "minimax/MiniMax-M2.7-highspeed"]
132
132
  },
133
133
  "modelMap": {
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.2.62",
4
- "description": "kody2 — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
3
+ "version": "0.3.0",
4
+ "description": "kody — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {
8
- "kody2": "dist/bin/kody2.js"
8
+ "kody": "dist/bin/kody.js"
9
9
  },
10
10
  "files": [
11
11
  "dist",
@@ -33,7 +33,7 @@
33
33
  "homepage": "https://github.com/aharonyaircohen/kody-engine",
34
34
  "bugs": "https://github.com/aharonyaircohen/kody-engine/issues",
35
35
  "scripts": {
36
- "kody2": "tsx bin/kody2.ts",
36
+ "kody": "tsx bin/kody.ts",
37
37
  "build": "tsup && node scripts/copy-assets.cjs",
38
38
  "test": "vitest run tests/unit tests/int --no-coverage",
39
39
  "test:e2e": "vitest run tests/e2e --no-coverage",