@kynetic-ai/spec 0.11.0 → 0.12.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.
- package/README.md +55 -455
- package/dist/agent-runtime/bootstrap.d.ts +31 -0
- package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
- package/dist/agent-runtime/bootstrap.js +302 -0
- package/dist/agent-runtime/bootstrap.js.map +1 -0
- package/dist/agent-runtime/dispatch.d.ts +119 -10
- package/dist/agent-runtime/dispatch.d.ts.map +1 -1
- package/dist/agent-runtime/dispatch.js +1154 -219
- package/dist/agent-runtime/dispatch.js.map +1 -1
- package/dist/agent-runtime/invocation.d.ts +28 -1
- package/dist/agent-runtime/invocation.d.ts.map +1 -1
- package/dist/agent-runtime/invocation.js +171 -59
- package/dist/agent-runtime/invocation.js.map +1 -1
- package/dist/agent-runtime/prompts.d.ts +9 -0
- package/dist/agent-runtime/prompts.d.ts.map +1 -1
- package/dist/agent-runtime/prompts.js +42 -7
- package/dist/agent-runtime/prompts.js.map +1 -1
- package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
- package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-accumulator.js +203 -0
- package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
- package/dist/agent-runtime/session-event-types.d.ts +67 -0
- package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-types.js +13 -0
- package/dist/agent-runtime/session-event-types.js.map +1 -0
- package/dist/agent-runtime/workspace.d.ts +244 -0
- package/dist/agent-runtime/workspace.d.ts.map +1 -0
- package/dist/agent-runtime/workspace.js +2025 -0
- package/dist/agent-runtime/workspace.js.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +58 -13
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/spawner.d.ts +8 -0
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +25 -3
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-exec.js +1 -1
- package/dist/cli/batch-exec.js.map +1 -1
- package/dist/cli/command-annotations.d.ts +15 -3
- package/dist/cli/command-annotations.d.ts.map +1 -1
- package/dist/cli/command-annotations.js +23 -3
- package/dist/cli/command-annotations.js.map +1 -1
- package/dist/cli/commands/agent.d.ts +2 -0
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +144 -27
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +5 -5
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +118 -3
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +8 -6
- package/dist/cli/commands/guard.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +205 -47
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +24 -10
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/plan-import.d.ts +3 -3
- package/dist/cli/commands/plan-import.d.ts.map +1 -1
- package/dist/cli/commands/plan-import.js +213 -528
- package/dist/cli/commands/plan-import.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +533 -83
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/review.d.ts +14 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +1142 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +1 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +33 -10
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts +2 -4
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
- package/dist/cli/commands/session/checkpoint.js +6 -107
- package/dist/cli/commands/session/checkpoint.js.map +1 -1
- package/dist/cli/commands/session/commands.d.ts.map +1 -1
- package/dist/cli/commands/session/commands.js +33 -23
- package/dist/cli/commands/session/commands.js.map +1 -1
- package/dist/cli/commands/session/compact.js +4 -4
- package/dist/cli/commands/session/compact.js.map +1 -1
- package/dist/cli/commands/session/create.js +2 -2
- package/dist/cli/commands/session/create.js.map +1 -1
- package/dist/cli/commands/session/format.d.ts.map +1 -1
- package/dist/cli/commands/session/format.js +1 -6
- package/dist/cli/commands/session/format.js.map +1 -1
- package/dist/cli/commands/session/log.d.ts +32 -7
- package/dist/cli/commands/session/log.d.ts.map +1 -1
- package/dist/cli/commands/session/log.js +166 -60
- package/dist/cli/commands/session/log.js.map +1 -1
- package/dist/cli/commands/session/migrate.d.ts +9 -0
- package/dist/cli/commands/session/migrate.d.ts.map +1 -0
- package/dist/cli/commands/session/migrate.js +46 -0
- package/dist/cli/commands/session/migrate.js.map +1 -0
- package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
- package/dist/cli/commands/session/stale-close.js +5 -8
- package/dist/cli/commands/session/stale-close.js.map +1 -1
- package/dist/cli/commands/session/types.d.ts +1 -1
- package/dist/cli/commands/session/types.d.ts.map +1 -1
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +287 -257
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shadow.d.ts.map +1 -1
- package/dist/cli/commands/shadow.js +147 -31
- package/dist/cli/commands/shadow.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts +7 -0
- package/dist/cli/commands/skill-crud.d.ts.map +1 -1
- package/dist/cli/commands/skill-crud.js +41 -18
- package/dist/cli/commands/skill-crud.js.map +1 -1
- package/dist/cli/commands/skill-diff.d.ts.map +1 -1
- package/dist/cli/commands/skill-diff.js +29 -3
- package/dist/cli/commands/skill-diff.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +5 -4
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +359 -49
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/trait.d.ts.map +1 -1
- package/dist/cli/commands/trait.js +5 -27
- package/dist/cli/commands/trait.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +113 -52
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +69 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +26 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +108 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/sync-mode.d.ts +44 -0
- package/dist/cli/sync-mode.d.ts.map +1 -0
- package/dist/cli/sync-mode.js +64 -0
- package/dist/cli/sync-mode.js.map +1 -0
- package/dist/daemon/middleware/project-context.ts +25 -7
- package/dist/daemon/project-context.ts +18 -0
- package/dist/daemon/routes/agent-dispatch.ts +99 -22
- package/dist/daemon/routes/aggregation.ts +184 -0
- package/dist/daemon/routes/inbox.ts +5 -0
- package/dist/daemon/routes/items.ts +145 -0
- package/dist/daemon/routes/meta.ts +1 -1
- package/dist/daemon/routes/projects.ts +28 -6
- package/dist/daemon/routes/ref-resolution.ts +119 -0
- package/dist/daemon/routes/refs.ts +42 -0
- package/dist/daemon/routes/session-related.ts +140 -0
- package/dist/daemon/routes/sessions.ts +420 -19
- package/dist/daemon/routes/tasks.ts +62 -5
- package/dist/daemon/routes/triage.ts +40 -1
- package/dist/daemon/server.ts +143 -49
- package/dist/daemon/session-sync.ts +11 -0
- package/dist/daemon/shadow-sync.ts +11 -0
- package/dist/daemon/watcher.ts +56 -5
- package/dist/daemon/websocket/project-resolution.ts +77 -0
- package/dist/export/json.d.ts.map +1 -1
- package/dist/export/json.js +104 -1
- package/dist/export/json.js.map +1 -1
- package/dist/export/types.d.ts +52 -1
- package/dist/export/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parser/agent-detection.d.ts +1 -1
- package/dist/parser/agent-detection.d.ts.map +1 -1
- package/dist/parser/agent-detection.js +10 -0
- package/dist/parser/agent-detection.js.map +1 -1
- package/dist/parser/config.d.ts +397 -2
- package/dist/parser/config.d.ts.map +1 -1
- package/dist/parser/config.js +125 -3
- package/dist/parser/config.js.map +1 -1
- package/dist/parser/dispatch-workspaces.d.ts +18 -0
- package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
- package/dist/parser/dispatch-workspaces.js +209 -0
- package/dist/parser/dispatch-workspaces.js.map +1 -0
- package/dist/parser/doctor.d.ts.map +1 -1
- package/dist/parser/doctor.js +27 -8
- package/dist/parser/doctor.js.map +1 -1
- package/dist/parser/file-lock.d.ts.map +1 -1
- package/dist/parser/file-lock.js +9 -2
- package/dist/parser/file-lock.js.map +1 -1
- package/dist/parser/index.d.ts +6 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +6 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/plans.d.ts.map +1 -1
- package/dist/parser/plans.js +1 -0
- package/dist/parser/plans.js.map +1 -1
- package/dist/parser/refs.d.ts +8 -1
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +27 -1
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/review-operations.d.ts +72 -0
- package/dist/parser/review-operations.d.ts.map +1 -0
- package/dist/parser/review-operations.js +185 -0
- package/dist/parser/review-operations.js.map +1 -0
- package/dist/parser/review-task-integration.d.ts +78 -0
- package/dist/parser/review-task-integration.d.ts.map +1 -0
- package/dist/parser/review-task-integration.js +173 -0
- package/dist/parser/review-task-integration.js.map +1 -0
- package/dist/parser/review-threads.d.ts +101 -0
- package/dist/parser/review-threads.d.ts.map +1 -0
- package/dist/parser/review-threads.js +222 -0
- package/dist/parser/review-threads.js.map +1 -0
- package/dist/parser/review-validation.d.ts +69 -0
- package/dist/parser/review-validation.d.ts.map +1 -0
- package/dist/parser/review-validation.js +207 -0
- package/dist/parser/review-validation.js.map +1 -0
- package/dist/parser/reviews.d.ts +58 -0
- package/dist/parser/reviews.d.ts.map +1 -0
- package/dist/parser/reviews.js +230 -0
- package/dist/parser/reviews.js.map +1 -0
- package/dist/parser/session-branch.d.ts +91 -0
- package/dist/parser/session-branch.d.ts.map +1 -0
- package/dist/parser/session-branch.js +565 -0
- package/dist/parser/session-branch.js.map +1 -0
- package/dist/parser/session-sync-scheduler.d.ts +53 -0
- package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/session-sync-scheduler.js +100 -0
- package/dist/parser/session-sync-scheduler.js.map +1 -0
- package/dist/parser/setup-status.d.ts +7 -1
- package/dist/parser/setup-status.d.ts.map +1 -1
- package/dist/parser/setup-status.js +104 -39
- package/dist/parser/setup-status.js.map +1 -1
- package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
- package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/shadow-sync-scheduler.js +139 -0
- package/dist/parser/shadow-sync-scheduler.js.map +1 -0
- package/dist/parser/shadow.d.ts +121 -14
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +752 -27
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts +24 -0
- package/dist/parser/skill-render.d.ts.map +1 -1
- package/dist/parser/skill-render.js +98 -26
- package/dist/parser/skill-render.js.map +1 -1
- package/dist/parser/validate.d.ts +43 -3
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +204 -30
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +47 -11
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +329 -149
- package/dist/parser/yaml.js.map +1 -1
- package/dist/review/checks.d.ts +97 -0
- package/dist/review/checks.d.ts.map +1 -0
- package/dist/review/checks.js +175 -0
- package/dist/review/checks.js.map +1 -0
- package/dist/review/index.d.ts +3 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +3 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/subject-bindings.d.ts +83 -0
- package/dist/review/subject-bindings.d.ts.map +1 -0
- package/dist/review/subject-bindings.js +175 -0
- package/dist/review/subject-bindings.js.map +1 -0
- package/dist/schema/common.d.ts +26 -0
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +13 -0
- package/dist/schema/common.js.map +1 -1
- package/dist/schema/dispatch-workspace.d.ts +2643 -0
- package/dist/schema/dispatch-workspace.d.ts.map +1 -0
- package/dist/schema/dispatch-workspace.js +187 -0
- package/dist/schema/dispatch-workspace.js.map +1 -0
- package/dist/schema/inbox.d.ts +8 -8
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/meta.d.ts +648 -116
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +27 -0
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +30 -19
- package/dist/schema/plan.d.ts.map +1 -1
- package/dist/schema/plan.js +3 -1
- package/dist/schema/plan.js.map +1 -1
- package/dist/schema/review-records.d.ts +2676 -0
- package/dist/schema/review-records.d.ts.map +1 -0
- package/dist/schema/review-records.js +232 -0
- package/dist/schema/review-records.js.map +1 -0
- package/dist/schema/spec.d.ts +32 -14
- package/dist/schema/spec.d.ts.map +1 -1
- package/dist/schema/spec.js +5 -0
- package/dist/schema/spec.js.map +1 -1
- package/dist/schema/task.d.ts +187 -29
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +12 -2
- package/dist/schema/task.js.map +1 -1
- package/dist/schema/triage.d.ts +22 -22
- package/dist/sessions/cache.d.ts +119 -0
- package/dist/sessions/cache.d.ts.map +1 -0
- package/dist/sessions/cache.js +284 -0
- package/dist/sessions/cache.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/legacy.d.ts +77 -0
- package/dist/sessions/legacy.d.ts.map +1 -0
- package/dist/sessions/legacy.js +146 -0
- package/dist/sessions/legacy.js.map +1 -0
- package/dist/sessions/store.d.ts +103 -73
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +335 -186
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +44 -16
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +11 -2
- package/dist/sessions/types.js.map +1 -1
- package/dist/strings/errors.d.ts +32 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +17 -0
- package/dist/strings/errors.js.map +1 -1
- package/dist/strings/labels.d.ts +1 -0
- package/dist/strings/labels.d.ts.map +1 -1
- package/dist/strings/labels.js +1 -0
- package/dist/strings/labels.js.map +1 -1
- package/dist/utils/activity.d.ts +101 -0
- package/dist/utils/activity.d.ts.map +1 -0
- package/dist/utils/activity.js +408 -0
- package/dist/utils/activity.js.map +1 -0
- package/dist/utils/git.d.ts +31 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +87 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
- package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
- package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{CPPfDSei.js → B25nWFyA.js} +4 -4
- package/dist/web-ui/_app/immutable/chunks/{DBYE9jOd.js → B2bcA_Q_.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DzO4hlg9.js → B8tYZKAE.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{B5LJFxqa.js → BFGAyJjD.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DAMmvwn4.js → BG8eSzAd.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DxCk-KHc.js → Bp5pFYXL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{B8a0xDxR.js → BsJFsuAT.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BVA9Exy-.js → C0w6WDm5.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BJ0JX3ea.js → CWUQwB9H.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{D3vxvonu.js → CaAJD3dl.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{BP352uRn.js → ChB5iyEL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{pE6cYWlS.js → ChQD-6N8.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{Eo4gF7ih.js → CqbsoCwA.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{Cncwi6fQ.js → DJtZNgcs.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DjcCz-PU.js → DW_subyT.js} +2 -2
- package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/{BysXJlZb.js → Dg_zDpDS.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{D9QNBZM2.js → DqT6OH_u.js} +2 -2
- package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{C076q4JN.js → HNjs76Zz.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BkOJ8DkV.js → P0A_fJvS.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{k_Qegko0.js → Xvwhx_F1.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{62JVKtnb.js → dh5HeqUr.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
- package/dist/web-ui/_app/immutable/chunks/{D82RulSH.js → gPrj-hqC.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{CwELQvbx.js → oTsvd9y4.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DvA-KON-.js → y4GeEH6k.js} +1 -1
- package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
- package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
- package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
- package/dist/web-ui/_app/version.json +1 -1
- package/dist/web-ui/favicon-192.png +0 -0
- package/dist/web-ui/favicon-32.png +0 -0
- package/dist/web-ui/favicon.ico +0 -0
- package/dist/web-ui/index.html +14 -14
- package/package.json +12 -6
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
- package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
- package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
- package/templates/agents-sections/04-pr-workflow.md +15 -12
- package/templates/agents-sections/06-ralph-loop.md +15 -10
- package/templates/skills/manifest.yaml +25 -7
- package/templates/skills/merge/SKILL.md +120 -0
- package/templates/skills/plan/SKILL.md +55 -26
- package/templates/skills/review/SKILL.md +346 -130
- package/templates/skills/task-work/SKILL.md +93 -103
- package/dist/web-ui/_app/immutable/assets/0.BJaYkGW2.css +0 -1
- package/dist/web-ui/_app/immutable/assets/9.SzGLxi4x.css +0 -1
- package/dist/web-ui/_app/immutable/chunks/-lc0BifF.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/8RBjHMN1.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B5wTVqxm.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B6VSmczZ.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BEOQc37C.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BHtYorjv.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BMuCqDX8.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BUZujXJ2.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BWET-efb.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BXkNecpt.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BYzrIfX8.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BpuwufMc.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BwMO4RrG.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/C33JaVbg.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CGtqifKp.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CHDZZ7OG.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CUir3f4J.js +0 -60
- package/dist/web-ui/_app/immutable/chunks/CrCIbn0C.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D6TVmR9T.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D7LTux4W.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DAh4Wfku.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DAx07bEQ.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DOno4cA2.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DQA8NZIH.js +0 -2
- package/dist/web-ui/_app/immutable/chunks/DRfPm2bo.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DhQhksaB.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DjG7s6hm.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DkltRNvh.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DlaTnPKL.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/ExCq5swK.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/T3zZGv51.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/XZumBYeP.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/_ySfNjkF.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/iEtR5cV6.js +0 -1
- package/dist/web-ui/_app/immutable/entry/app.Cgu6uKeS.js +0 -2
- package/dist/web-ui/_app/immutable/entry/start.9XifnLoB.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/0.DISwcKSK.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/1.Cx2Ufqp1.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/10.C3z8ijXL.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/11.DZdIjZmM.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/12.FsIGfAOa.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/13.DZoFwagf.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/14.DaIzDKbQ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/15.BYyt4XWF.js +0 -2
- package/dist/web-ui/_app/immutable/nodes/16.CQkSqpOe.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/2.Bkf_j2UJ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/3.kaMCurJG.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/4.BSsFPTHG.js +0 -2
- package/dist/web-ui/_app/immutable/nodes/5.CpPlcCEZ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/6.BN4FqQmY.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/7.9kBYIZik.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/8.BuijtZ6B.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/9.C-Weba8R.js +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-work
|
|
3
|
-
description: Structured task lifecycle — start, work, note, submit, complete.
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
description: Structured task lifecycle — start, work, note, submit, complete. AC
|
|
4
|
+
annotations, fix cycle handling via review records, scope management, and
|
|
5
|
+
quality checks.
|
|
6
6
|
---
|
|
7
7
|
<!-- kspec-managed -->
|
|
8
8
|
# Task Work
|
|
9
9
|
|
|
10
|
-
Structured workflow for working on tasks. Full lifecycle from start through
|
|
10
|
+
Structured workflow for working on tasks. Full lifecycle from start through completion.
|
|
11
11
|
|
|
12
12
|
## When to Use
|
|
13
13
|
|
|
@@ -44,8 +44,8 @@ pending → in_progress → pending_review → completed
|
|
|
44
44
|
| Command | Transition | When |
|
|
45
45
|
|---------|-----------|------|
|
|
46
46
|
| `kspec task start @ref` | → in_progress | Beginning work |
|
|
47
|
-
| `kspec task submit @ref` | → pending_review |
|
|
48
|
-
| `kspec task complete @ref --reason "..."` | → completed |
|
|
47
|
+
| `kspec task submit @ref` | → pending_review | Work done, ready for review |
|
|
48
|
+
| `kspec task complete @ref --reason "..."` | → completed | Reviewed and merged |
|
|
49
49
|
| `kspec task block @ref --reason "..."` | → blocked | External blocker |
|
|
50
50
|
|
|
51
51
|
## CLI Lookups
|
|
@@ -62,6 +62,7 @@ Use CLI commands to find information. **Do NOT search `.kspec/` YAML files manua
|
|
|
62
62
|
| All traits | `kspec trait list` |
|
|
63
63
|
| Task's linked spec | `kspec task get @ref` → read `spec_ref` field |
|
|
64
64
|
| Task's linked plan | `kspec task get @ref` → if `plan_ref` is non-null, run `kspec plan get @plan-ref` |
|
|
65
|
+
| Reviews for a task | `kspec review for-task @ref` |
|
|
65
66
|
|
|
66
67
|
**Key pattern:** When `kspec item get` output shows "Inherited from @trait-slug", run `kspec item get @trait-slug` to see the trait's ACs. One command — do not grep YAML files.
|
|
67
68
|
|
|
@@ -71,7 +72,7 @@ Use CLI commands to find information. **Do NOT search `.kspec/` YAML files manua
|
|
|
71
72
|
|
|
72
73
|
```bash
|
|
73
74
|
kspec tasks ready # All ready tasks
|
|
74
|
-
kspec tasks ready --eligible # Automation-eligible only
|
|
75
|
+
kspec tasks ready --eligible # Automation-eligible only
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
### 2. Verify Work Is Needed
|
|
@@ -104,21 +105,24 @@ kspec plan get @plan-ref
|
|
|
104
105
|
kspec task start @ref
|
|
105
106
|
```
|
|
106
107
|
|
|
107
|
-
###
|
|
108
|
+
### 4. Branch Isolation (Required Before Edits)
|
|
108
109
|
|
|
109
|
-
Immediately after
|
|
110
|
+
Immediately after starting and before any file edits, create or switch to a dedicated branch.
|
|
110
111
|
|
|
111
112
|
```bash
|
|
112
|
-
#
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# Create the branch if missing, otherwise switch to it
|
|
116
|
-
git checkout -b "$TASK_BRANCH" 2>/dev/null || git checkout "$TASK_BRANCH"
|
|
113
|
+
# Preferred: deterministic dispatch-compatible branch
|
|
114
|
+
kspec task branch @ref
|
|
117
115
|
```
|
|
118
116
|
|
|
119
|
-
|
|
117
|
+
`kspec task branch` creates or resumes the branch `dispatch/task/<normalized-slug>/<short-task-ref>`. This ensures:
|
|
118
|
+
|
|
119
|
+
- **Dispatch continuity** — reviewer and fix-cycle agents can find and resume the branch
|
|
120
|
+
- **No naming collisions** — the branch name is deterministic from the task identity
|
|
121
|
+
- **Remote rehydration** — if the branch exists only on the remote, the command fetches it
|
|
122
|
+
|
|
123
|
+
If you need a non-dispatch branch (e.g., for work not tied to a task), use conventional prefixes (`feat/`, `fix/`, etc.) instead.
|
|
120
124
|
|
|
121
|
-
###
|
|
125
|
+
### 5. Work and Note
|
|
122
126
|
|
|
123
127
|
Read all ACs (own + trait) before implementing:
|
|
124
128
|
|
|
@@ -142,17 +146,58 @@ Note when you:
|
|
|
142
146
|
- Encounter a blocker
|
|
143
147
|
- Complete a significant piece
|
|
144
148
|
|
|
145
|
-
|
|
149
|
+
### 6. AC Test Annotations
|
|
146
150
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
- Verification: tests/commands that prove completion"
|
|
151
|
+
Every acceptance criterion should have at least one test annotated with a comment linking it to the AC. Use the comment syntax appropriate for the language:
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
// AC: @spec-ref ac-1
|
|
155
|
+
it('should validate input when given invalid data', () => { ... });
|
|
153
156
|
```
|
|
154
157
|
|
|
155
|
-
|
|
158
|
+
```python
|
|
159
|
+
# AC: @spec-ref ac-1
|
|
160
|
+
def test_validates_input():
|
|
161
|
+
...
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
```sql
|
|
165
|
+
-- AC: @spec-ref ac-1
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```html
|
|
169
|
+
<!-- AC: @spec-ref ac-1 -->
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The pattern is always: language-appropriate comment + `AC: @spec-ref ac-N`.
|
|
173
|
+
|
|
174
|
+
For **inherited trait ACs**, use the trait's ref, not the spec's ref:
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
// AC: @trait-json-output ac-1
|
|
178
|
+
it('should output valid JSON with --json flag', () => { ... });
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
If a trait AC genuinely doesn't apply, annotate it with a reason:
|
|
182
|
+
|
|
183
|
+
```javascript
|
|
184
|
+
// AC: @trait-json-output ac-3 — N/A: this command has no tabular output to format
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Annotations must be standalone line comments, not embedded inside block comments or docstrings.
|
|
188
|
+
|
|
189
|
+
### 7. Regenerate Derived Files
|
|
190
|
+
|
|
191
|
+
If your task modified any of these source files, regenerate before committing:
|
|
192
|
+
|
|
193
|
+
| Modified | Regenerate with |
|
|
194
|
+
|----------|----------------|
|
|
195
|
+
| `templates/skills/` or `.kspec/skills/` | `kspec skill render` |
|
|
196
|
+
| `templates/agents-sections/`, conventions, or workflows | `kspec agents generate` |
|
|
197
|
+
|
|
198
|
+
Commit the regenerated output alongside your source changes.
|
|
199
|
+
|
|
200
|
+
### 8. Commit
|
|
156
201
|
|
|
157
202
|
Include task and spec trailers:
|
|
158
203
|
|
|
@@ -167,12 +212,12 @@ Spec: @auth-feature
|
|
|
167
212
|
|
|
168
213
|
Trailers enable `kspec log @ref` to find related commits.
|
|
169
214
|
|
|
170
|
-
###
|
|
215
|
+
### 9. Quality Check
|
|
171
216
|
|
|
172
|
-
|
|
217
|
+
Before submitting, verify:
|
|
173
218
|
|
|
174
|
-
- **Own AC coverage** — Each spec AC has
|
|
175
|
-
- **Trait AC coverage** — Each inherited trait AC has
|
|
219
|
+
- **Own AC coverage** — Each spec AC has an annotated test
|
|
220
|
+
- **Trait AC coverage** — Each inherited trait AC has an annotated test (or N/A annotation)
|
|
176
221
|
- **Tests pass** — Full test suite, not just new tests
|
|
177
222
|
- **Code quality** — Matches existing patterns, no duplicated utilities
|
|
178
223
|
- **No regressions** — Existing tests still pass
|
|
@@ -181,43 +226,41 @@ Run quality checks before submitting. Verify:
|
|
|
181
226
|
kspec validate # Reports uncovered trait ACs as warnings
|
|
182
227
|
```
|
|
183
228
|
|
|
184
|
-
###
|
|
229
|
+
### 10. Submit
|
|
230
|
+
|
|
231
|
+
Submit transitions the task to `pending_review`. This signals that work is complete and ready for review.
|
|
185
232
|
|
|
186
233
|
```bash
|
|
187
234
|
kspec task submit @ref
|
|
188
235
|
```
|
|
189
236
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### 8. Complete Task
|
|
193
|
-
|
|
194
|
-
After PR is merged:
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
kspec task complete @ref --reason "Merged in PR #N. Summary of what was done."
|
|
198
|
-
```
|
|
237
|
+
The reviewer (human or agent) takes over from here. See `/kspec:review` for the review process and `/kspec:merge` for the merge process.
|
|
199
238
|
|
|
200
239
|
## Fix Cycle
|
|
201
240
|
|
|
202
|
-
When inheriting a `needs_work` task
|
|
241
|
+
When inheriting a `needs_work` task, the review feedback lives in kspec review records. Each fix cycle creates a new review record — the reviewer does not reopen the prior review.
|
|
203
242
|
|
|
204
|
-
1. **
|
|
243
|
+
1. **Read the review** — Find and read review threads
|
|
205
244
|
```bash
|
|
206
|
-
|
|
207
|
-
|
|
245
|
+
kspec review for-task @ref # Find all reviews (current + historical)
|
|
246
|
+
kspec review get @review-ref # Read full review with threads
|
|
208
247
|
```
|
|
209
248
|
|
|
210
|
-
2. **
|
|
249
|
+
2. **Address blocker threads** — Blockers must be resolved before re-approval. Questions and nits are non-blocking but should be addressed.
|
|
211
250
|
|
|
212
251
|
3. **Push fixes** — Commit with descriptive message
|
|
213
252
|
```bash
|
|
214
253
|
git add <files> && git commit -m "fix: address review feedback
|
|
215
254
|
|
|
216
255
|
Task: @task-slug"
|
|
217
|
-
git push
|
|
218
256
|
```
|
|
219
257
|
|
|
220
|
-
4. **
|
|
258
|
+
4. **Note what changed** — Before resubmitting, add a task note summarizing what was fixed and why. This note becomes a key entry in the activity timeline and gives the next reviewer context on what changed since the prior review.
|
|
259
|
+
```bash
|
|
260
|
+
kspec task note @ref "Fixed auth token validation: added null check before decode, updated test to cover expired token edge case. Addresses blocker thread on missing error handling."
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
5. **Re-submit** — `kspec task submit @ref` (back to pending_review, reviewer creates a new review record)
|
|
221
264
|
|
|
222
265
|
You do NOT merge in a fix cycle. The reviewer handles merge decisions.
|
|
223
266
|
|
|
@@ -244,56 +287,7 @@ Tasks describe expected outcomes, not rigid boundaries:
|
|
|
244
287
|
|
|
245
288
|
**When you notice something outside your task:** Capture it separately (`kspec inbox add` or `kspec task note`). Don't fix it inline — even small detours compound into drift.
|
|
246
289
|
|
|
247
|
-
##
|
|
248
|
-
|
|
249
|
-
Link tests to acceptance criteria:
|
|
250
|
-
|
|
251
|
-
```javascript
|
|
252
|
-
// AC: @spec-item ac-N
|
|
253
|
-
it('should validate input', () => { ... });
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
```python
|
|
257
|
-
# AC: @spec-item ac-N
|
|
258
|
-
def test_validates_input():
|
|
259
|
-
...
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Every AC should have at least one test with this annotation.
|
|
263
|
-
|
|
264
|
-
## Implementation Quality
|
|
265
|
-
|
|
266
|
-
Before submitting:
|
|
267
|
-
|
|
268
|
-
- **Search for existing utilities** — Don't duplicate helpers that already exist
|
|
269
|
-
- **Match neighboring file style** — Naming conventions, error handling, imports
|
|
270
|
-
- **Run full test suite** — Not just your new tests
|
|
271
|
-
- **Validate** — `kspec validate` for spec alignment
|
|
272
|
-
|
|
273
|
-
## Loop Mode
|
|
274
|
-
|
|
275
|
-
Autonomous task execution without human confirmation.
|
|
276
|
-
|
|
277
|
-
```bash
|
|
278
|
-
kspec tasks ready --eligible # Only automation-eligible tasks
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### Task Selection Priority
|
|
282
|
-
|
|
283
|
-
1. `needs_work` — Fix review feedback
|
|
284
|
-
2. `in_progress` — Continue existing work
|
|
285
|
-
3. Tasks that unblock others
|
|
286
|
-
4. Highest priority ready task
|
|
287
|
-
|
|
288
|
-
### Key Behaviors
|
|
289
|
-
|
|
290
|
-
- Verify work is needed before starting (prevent duplicates)
|
|
291
|
-
- Create/switch to a dedicated task branch before making code edits
|
|
292
|
-
- Decisions auto-resolve without prompts
|
|
293
|
-
- PR review handled externally (not this workflow)
|
|
294
|
-
- All actions are logged and auditable
|
|
295
|
-
|
|
296
|
-
### Blocking Rules
|
|
290
|
+
## Blocking Rules
|
|
297
291
|
|
|
298
292
|
**Block only for genuine external blockers:**
|
|
299
293
|
- Human architectural decision needed
|
|
@@ -314,17 +308,12 @@ kspec tasks ready --eligible # Check for other work
|
|
|
314
308
|
# If empty: stop responding (agent dispatch exits automatically)
|
|
315
309
|
```
|
|
316
310
|
|
|
317
|
-
### Turn Completion
|
|
318
|
-
|
|
319
|
-
After creating a PR, **stop responding**. The agent dispatch engine continues automatically — it checks for remaining eligible tasks and exits when none remain.
|
|
320
|
-
|
|
321
|
-
**Do NOT call `end-loop`** after creating a PR. That ends ALL remaining iterations. It's a rare escape hatch for when work is stalling across multiple iterations.
|
|
322
|
-
|
|
323
311
|
## Command Reference
|
|
324
312
|
|
|
325
313
|
```bash
|
|
326
314
|
# Task lifecycle
|
|
327
315
|
kspec task start @ref
|
|
316
|
+
kspec task branch @ref # Create/resume dispatch-compatible branch
|
|
328
317
|
kspec task note @ref "..."
|
|
329
318
|
kspec task submit @ref
|
|
330
319
|
kspec task complete @ref --reason "..."
|
|
@@ -335,18 +324,19 @@ kspec tasks ready
|
|
|
335
324
|
kspec tasks ready --eligible
|
|
336
325
|
kspec task get @ref
|
|
337
326
|
|
|
327
|
+
# Review integration
|
|
328
|
+
kspec review for-task @ref # Find linked reviews
|
|
329
|
+
kspec review get @review-ref # Read review details
|
|
330
|
+
|
|
338
331
|
# Validation
|
|
339
332
|
kspec validate
|
|
340
333
|
kspec validate --alignment
|
|
341
|
-
|
|
342
|
-
# Session context
|
|
343
|
-
kspec session start
|
|
344
334
|
```
|
|
345
335
|
|
|
346
336
|
## Integration
|
|
347
337
|
|
|
338
|
+
- **`/kspec:review`** — Review process for submitted work
|
|
339
|
+
- **`/kspec:merge`** — Merge approved work into integration branch
|
|
348
340
|
- **`/kspec:writing-specs`** — Create specs before deriving tasks
|
|
349
341
|
- **`/kspec:plan`** — Plans create specs that become tasks
|
|
350
|
-
- **`/kspec:review`** — Review checks AC coverage and code quality
|
|
351
342
|
- **`/kspec:observe`** — Capture friction found during task work
|
|
352
|
-
- **`/kspec:reflect`** — Session reflection after completing tasks
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
##
|
|
1
|
+
## Work and Review Lifecycle
|
|
2
2
|
|
|
3
|
-
Before
|
|
3
|
+
Before submitting work for review: `kspec task submit @ref` (transitions to `pending_review`).
|
|
4
4
|
|
|
5
|
-
The full
|
|
5
|
+
The full lifecycle:
|
|
6
6
|
|
|
7
|
-
1. **
|
|
8
|
-
2. **
|
|
9
|
-
3. **Review
|
|
7
|
+
1. **Work** — Implement, test, annotate ACs. See the kspec task-work skill.
|
|
8
|
+
2. **Submit** — `kspec task submit @ref` signals work is ready for review.
|
|
9
|
+
3. **Review** — Reviewer creates a kspec review record, investigates, submits verdict. See the kspec review skill.
|
|
10
|
+
4. **Merge** — After review approval, merge to integration branch. See the kspec merge skill.
|
|
10
11
|
|
|
11
|
-
**
|
|
12
|
-
-
|
|
13
|
-
- All
|
|
14
|
-
-
|
|
15
|
-
- AC coverage verified
|
|
12
|
+
**Review gates (from kspec review disposition):**
|
|
13
|
+
- Review disposition = `approved`
|
|
14
|
+
- All required checks passing
|
|
15
|
+
- No unresolved blocker threads
|
|
16
|
+
- AC coverage verified (own + trait)
|
|
16
17
|
|
|
17
|
-
**After merge:** `kspec task complete @ref --reason "Merged
|
|
18
|
+
**After merge:** `kspec task complete @ref --reason "Merged. Summary..."`
|
|
19
|
+
|
|
20
|
+
**Fix cycle:** If review requests changes, task transitions to `needs_work`. Worker reads review threads via `kspec review for-task @ref`, addresses blockers, resubmits.
|
|
@@ -23,7 +23,7 @@ kspec agent dispatch stop
|
|
|
23
23
|
`kspec setup` ensures default worker/reviewer agent definitions exist in `kynetic.meta.yaml`:
|
|
24
24
|
|
|
25
25
|
- `task-worker` — handles automation-eligible `task.ready`, `task.in_progress`, and `task.needs_work`
|
|
26
|
-
- `pr-reviewer` — handles `task.pending_review`
|
|
26
|
+
- `pr-reviewer` — handles `task.pending_review` (review and local merge)
|
|
27
27
|
|
|
28
28
|
Inspect current definitions with:
|
|
29
29
|
|
|
@@ -38,7 +38,7 @@ kspec agent list
|
|
|
38
38
|
| `task.ready` | `task-worker` | Worker picks up newly ready automation-eligible tasks |
|
|
39
39
|
| `task.in_progress` | `task-worker` | Worker can continue existing automation-eligible tasks |
|
|
40
40
|
| `task.needs_work` | `task-worker` | Fix-cycle tasks return to worker |
|
|
41
|
-
| `task.pending_review` | `pr-reviewer` | Review
|
|
41
|
+
| `task.pending_review` | `pr-reviewer` | Review and local merge in separate invocation |
|
|
42
42
|
|
|
43
43
|
### One-Shot Invocation
|
|
44
44
|
|
|
@@ -60,18 +60,23 @@ Common flags:
|
|
|
60
60
|
```
|
|
61
61
|
for each dispatched invocation:
|
|
62
62
|
1. Agent runtime checks eligible tasks — if none, invocation ends
|
|
63
|
-
2. Agent works on tasks
|
|
64
|
-
- Before editing files
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
2. Agent works on tasks
|
|
64
|
+
- Before editing files, use `kspec task branch @ref` for the deterministic
|
|
65
|
+
dispatch-compatible branch (dispatch/task/<slug>/<short-id>)
|
|
66
|
+
3. Agent submits task (kspec task submit @ref) when work is complete
|
|
67
|
+
4. Agent stops responding (turn complete)
|
|
68
|
+
5. Reviewer agent picks up pending_review tasks: creates kspec review,
|
|
69
|
+
investigates, submits verdict, merges locally if approved
|
|
70
|
+
6. Continue
|
|
68
71
|
```
|
|
69
72
|
|
|
70
|
-
**
|
|
73
|
+
**Do NOT create GitHub PRs for dispatched work.** Agent work is reviewed via kspec review records and merged locally to the integration branch. GitHub PRs are a human-directed activity for merging feature groups into main.
|
|
74
|
+
|
|
75
|
+
**When you stop responding, the dispatch engine continues automatically.** Do NOT call `kspec agent end-loop` after submitting a task.
|
|
71
76
|
|
|
72
77
|
### Task Inheritance
|
|
73
78
|
|
|
74
|
-
Priority: `needs_work` > `in_progress` > `pending`. Always inherit existing work before starting new tasks. (`pending_review` tasks are handled by the
|
|
79
|
+
Priority: `needs_work` > `in_progress` > `pending`. Always inherit existing work before starting new tasks. (`pending_review` tasks are handled by the reviewer agent, not the worker.)
|
|
75
80
|
|
|
76
81
|
### Blocking Rules
|
|
77
82
|
|
|
@@ -85,7 +90,7 @@ Priority: `needs_work` > `in_progress` > `pending`. Always inherit existing work
|
|
|
85
90
|
- Task seems complex (do the work)
|
|
86
91
|
- Tests are failing (fix them)
|
|
87
92
|
- Service needs running (start it)
|
|
88
|
-
- Another task
|
|
93
|
+
- Another task is in review (not a formal dependency)
|
|
89
94
|
|
|
90
95
|
**After blocking a task:**
|
|
91
96
|
```bash
|
|
@@ -9,63 +9,81 @@ skills:
|
|
|
9
9
|
platforms:
|
|
10
10
|
- claude-code
|
|
11
11
|
- codex
|
|
12
|
+
- droid
|
|
12
13
|
- id: observe
|
|
13
14
|
name: Observations
|
|
14
15
|
description: Capture and act on systemic patterns — friction, successes, questions, and ideas. The feedback loop that drives process improvement.
|
|
15
16
|
platforms:
|
|
16
17
|
- claude-code
|
|
17
18
|
- codex
|
|
19
|
+
- droid
|
|
18
20
|
- id: reflect
|
|
19
21
|
name: Session Reflection
|
|
20
22
|
description: Structured reflection at the end of work sessions. Identifies learnings, friction points, and improvements for system evolution.
|
|
21
23
|
platforms:
|
|
22
24
|
- claude-code
|
|
23
25
|
- codex
|
|
26
|
+
- droid
|
|
24
27
|
- id: triage
|
|
25
28
|
name: Triage
|
|
26
29
|
description: Triage inbox items systematically. Records decisions with audit trail, then executes actions. Supports inbox, observations, and automation eligibility triage.
|
|
27
30
|
platforms:
|
|
28
31
|
- claude-code
|
|
29
32
|
- codex
|
|
33
|
+
- droid
|
|
30
34
|
- id: triage-inbox
|
|
31
35
|
name: Inbox Triage
|
|
32
36
|
description: Process inbox items using the record-act pattern. Categorize, promote to spec/task, merge duplicates, defer, or delete stale items with full audit trail.
|
|
33
37
|
platforms:
|
|
34
38
|
- claude-code
|
|
35
39
|
- codex
|
|
40
|
+
- droid
|
|
36
41
|
- id: triage-automation
|
|
37
42
|
name: Automation Triage
|
|
38
43
|
description: Assess and prepare tasks for automation eligibility. Verify spec coverage, acceptance criteria, and task readiness for automated agents.
|
|
39
44
|
platforms:
|
|
40
45
|
- claude-code
|
|
41
46
|
- codex
|
|
47
|
+
- droid
|
|
42
48
|
- id: writing-specs
|
|
43
49
|
name: Writing Specs
|
|
44
50
|
description: Create and maintain specification items — modules, features, requirements, acceptance criteria, and traits. The source of truth for what to build.
|
|
45
51
|
platforms:
|
|
46
52
|
- claude-code
|
|
47
53
|
- codex
|
|
54
|
+
- droid
|
|
48
55
|
- id: plan
|
|
49
56
|
name: Plan to Spec
|
|
50
57
|
description: Translate approved plans into specs and tasks. Import structured documents or create incrementally. Plans persist as durable artifacts with audit trail.
|
|
51
58
|
platforms:
|
|
52
59
|
- claude-code
|
|
53
60
|
- codex
|
|
61
|
+
- droid
|
|
54
62
|
- id: task-work
|
|
55
63
|
name: Task Work
|
|
56
|
-
description: Structured task lifecycle — start, work, note, submit, complete.
|
|
64
|
+
description: Structured task lifecycle — start, work, note, submit, complete. AC annotations, fix cycle handling via review records, scope management, and quality checks.
|
|
57
65
|
platforms:
|
|
58
66
|
- claude-code
|
|
59
67
|
- codex
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
- droid
|
|
69
|
+
- id: review
|
|
70
|
+
name: Review
|
|
71
|
+
description: How to review work and use kspec review records. Covers both reviewer and worker perspectives — creating reviews, structuring findings, AC coverage verification, review principles, and the full review record interface.
|
|
63
72
|
platforms:
|
|
64
73
|
- claude-code
|
|
65
74
|
- codex
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
75
|
+
- droid
|
|
76
|
+
- id: merge
|
|
77
|
+
name: Merge
|
|
78
|
+
description: Merge approved work into an integration branch. Local-first git merge with gates based on kspec review disposition — approved status, passing checks, and resolved blocker threads.
|
|
79
|
+
platforms:
|
|
80
|
+
- claude-code
|
|
81
|
+
- codex
|
|
82
|
+
- droid
|
|
83
|
+
- id: create-workflow
|
|
84
|
+
name: Create Workflow
|
|
85
|
+
description: Formalize repeatable patterns into trackable kspec workflows. Design steps, choose triggers, create loop variants, and integrate with skills.
|
|
69
86
|
platforms:
|
|
70
87
|
- claude-code
|
|
71
88
|
- codex
|
|
89
|
+
- droid
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Merge
|
|
2
|
+
|
|
3
|
+
Merge approved work into an integration branch. Local-first — uses git merge directly, with merge gates based on kspec review disposition.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- After work has been reviewed and approved via `{skill:review}`
|
|
8
|
+
- Merging a task branch into a dev or integration branch
|
|
9
|
+
- Completing the work lifecycle after review approval
|
|
10
|
+
|
|
11
|
+
**Not for:** Creating pull requests to remote repositories (that's a human-directed activity for feature-level merges into main).
|
|
12
|
+
|
|
13
|
+
## Merge Gate
|
|
14
|
+
|
|
15
|
+
Before merging, verify all gates pass:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Check review disposition
|
|
19
|
+
kspec review for-task @ref
|
|
20
|
+
kspec review get @review-ref
|
|
21
|
+
# Disposition must be "approved"
|
|
22
|
+
|
|
23
|
+
# 2. Required checks passing
|
|
24
|
+
# Review checks should show all required checks as "pass"
|
|
25
|
+
|
|
26
|
+
# 3. No unresolved blocker threads
|
|
27
|
+
# Review should have no open blocker threads
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**All three must be satisfied:**
|
|
31
|
+
- Review disposition = `approved`
|
|
32
|
+
- All required checks passing (not stale)
|
|
33
|
+
- No unresolved blocker threads
|
|
34
|
+
|
|
35
|
+
If any gate fails, do not merge. Address the issue first:
|
|
36
|
+
- `changes_requested` → worker fixes issues, resubmits
|
|
37
|
+
- Required check failing → fix and re-run
|
|
38
|
+
- Unresolved blocker → resolve the thread or fix the issue
|
|
39
|
+
|
|
40
|
+
## Merge Process
|
|
41
|
+
|
|
42
|
+
### 1. Verify Branch State
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Confirm current branch
|
|
46
|
+
git branch --show-current
|
|
47
|
+
|
|
48
|
+
# Ensure branch is up to date with target
|
|
49
|
+
git fetch origin
|
|
50
|
+
git log --oneline origin/dev..HEAD # What will be merged
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Merge to Integration Branch
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Switch to target branch
|
|
57
|
+
git checkout dev
|
|
58
|
+
|
|
59
|
+
# Merge with merge commit (preserves trailers)
|
|
60
|
+
git merge --no-ff <task-branch>
|
|
61
|
+
|
|
62
|
+
# Verify merge succeeded
|
|
63
|
+
git log --oneline -3
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Use merge commits, not squash.** Merge commits preserve individual commit messages with their `Task:` and `Spec:` trailers, enabling `kspec log @ref` to find related commits.
|
|
67
|
+
|
|
68
|
+
### 3. Handle Conflicts
|
|
69
|
+
|
|
70
|
+
If a merge conflict occurs:
|
|
71
|
+
|
|
72
|
+
**Assess the conflict:**
|
|
73
|
+
- Is it a simple textual conflict (parallel edits to the same lines)?
|
|
74
|
+
- Or a semantic conflict (incompatible changes to behavior)?
|
|
75
|
+
|
|
76
|
+
**For simple conflicts:**
|
|
77
|
+
```bash
|
|
78
|
+
# View conflicting files
|
|
79
|
+
git diff --name-only --diff-filter=U
|
|
80
|
+
|
|
81
|
+
# Resolve conflicts in each file
|
|
82
|
+
# Then mark resolved
|
|
83
|
+
git add <resolved-files>
|
|
84
|
+
git commit # Completes the merge
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**For complex/semantic conflicts:**
|
|
88
|
+
- Do not force-merge
|
|
89
|
+
- Escalate: `kspec inbox add "Merge conflict between @task-a and @task-b — needs human review"`
|
|
90
|
+
- Or block the task: `kspec task block @ref --reason "Merge conflict with ..."`
|
|
91
|
+
|
|
92
|
+
### 4. Complete the Task
|
|
93
|
+
|
|
94
|
+
After successful merge:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
kspec task complete @ref --reason "Merged to dev. Summary of what was done."
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 5. Close the Review
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
kspec review close @review-ref
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Post-Merge Cleanup
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Delete the task branch locally
|
|
110
|
+
git branch -d <task-branch>
|
|
111
|
+
|
|
112
|
+
# Optionally delete remote branch
|
|
113
|
+
git push origin --delete <task-branch>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Integration
|
|
117
|
+
|
|
118
|
+
- **`{skill:task-work}`** — Work lifecycle leads to merge after review
|
|
119
|
+
- **`{skill:review}`** — Review disposition gates the merge
|
|
120
|
+
- **`kspec task complete`** — Final step after merge
|