@deniscodp/skills 0.0.0-stage → 1.0.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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -2
  3. package/bin/deniscodp-skills.mjs +4 -0
  4. package/package.json +23 -4
  5. package/scripts/catalog.mjs +68 -0
  6. package/scripts/cli.mjs +264 -0
  7. package/scripts/install.mjs +184 -0
  8. package/scripts/recommended.mjs +102 -0
  9. package/skills/denisco-handoff-implementation/SKILL.md +254 -0
  10. package/skills/denisco-handoff-implementation/references/blocker-checklist.md +71 -0
  11. package/skills/denisco-handoff-implementation/references/delegated-implementation.md +168 -0
  12. package/skills/denisco-handoff-implementation/references/ownership.md +105 -0
  13. package/skills/denisco-handoff-implementation/references/session-plan.md +195 -0
  14. package/skills/denisco-handoff-implementation/scripts/ownership.mjs +153 -0
  15. package/skills/denisco-implementation-coordinator/SKILL.md +237 -0
  16. package/skills/denisco-implementation-coordinator/agents/openai.yaml +2 -0
  17. package/skills/denisco-implementation-coordinator/references/documents.md +175 -0
  18. package/skills/denisco-implementation-coordinator/references/runtimes.md +105 -0
  19. package/skills/denisco-interactive-spec-definition/SKILL.md +126 -0
  20. package/skills/denisco-interactive-spec-definition/references/blocker-checklist.md +71 -0
  21. package/skills/denisco-interactive-spec-definition/references/handoff-template.md +124 -0
  22. package/skills/denisco-project-context/SKILL.md +60 -0
  23. package/skills/denisco-project-context/references/project-documents.md +70 -0
  24. package/skills/denisco-visual-check/SKILL.md +136 -0
  25. package/skills/denisco-visual-check/references/judge-prompt.md +55 -0
  26. package/skills/denisco-visual-check/references/project-config.md +118 -0
  27. package/skills/denisco-workflow-benchmark/SKILL.md +113 -0
  28. package/skills/denisco-workflow-benchmark/agents/openai.yaml +2 -0
  29. package/skills/denisco-workflow-benchmark/references/measurement.md +166 -0
  30. package/skills/denisco-workflow-benchmark/references/workflow-contract.md +371 -0
  31. package/skills/denisco-workflow-benchmark/scripts/bench.mjs +156 -0
  32. package/skills/denisco-workflow-benchmark/scripts/cases.mjs +46 -0
  33. package/skills/denisco-workflow-benchmark/scripts/configuration.mjs +71 -0
  34. package/skills/denisco-workflow-benchmark/scripts/discover.mjs +88 -0
  35. package/skills/denisco-workflow-benchmark/scripts/eval-worker.mjs +58 -0
  36. package/skills/denisco-workflow-benchmark/scripts/io.mjs +82 -0
  37. package/skills/denisco-workflow-benchmark/scripts/prepare.mjs +69 -0
  38. package/skills/denisco-workflow-benchmark/scripts/runs.mjs +235 -0
  39. package/skills/denisco-workflow-benchmark/scripts/state-prompt.mjs +96 -0
  40. package/skills/denisco-workflow-benchmark/scripts/tracking.mjs +91 -0
  41. package/skills/denisco-workflow-benchmark/scripts/usage.mjs +175 -0
  42. package/skills/denisco-workflow-benchmark/scripts/workflow.mjs +334 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: denisco-implementation-coordinator
3
+ description: "Turn a decided handoff into a launchable coordination plan, then execute or resume it through sequential programmers with fresh contexts, bounded assignments and a report per worker. Use when explicitly invoked to prepare, run or resume coordinated development, or when denisco-handoff-implementation planning selects the coordinated path; not for specification, single-session direct programming or parallel execution."
4
+ disable-model-invocation: true
5
+ metadata:
6
+ version: "4.3.0"
7
+ ---
8
+
9
+ # Implementation coordinator
10
+
11
+ Input: a decided handoff, its PLAN/STATE when already planned, and a request to prepare, execute or
12
+ resume coordination. Read [coordination documents](references/documents.md) before writing:
13
+ COORDINATOR.md, COORDINATOR-HISTORY.md and the packet files are the coordinator's documents,
14
+ alongside STATE by default. HANDOFF, PLAN, STATE, STATE-HISTORY, the operational sidecar and
15
+ application code remain read-only for the coordinator, even between workers. The programmer
16
+ updates them only through the existing denisco-handoff-implementation workflow, including its scope,
17
+ permission and verification rules. An inconsistency is a finding to route through that workflow,
18
+ not permission to rewrite its inputs. The planning phase and the post-closure session below are
19
+ denisco-handoff-implementation sessions of this conversation, under that skill's rules and its own claim.
20
+
21
+ Load the installed `denisco-handoff-implementation` skill and read its `references/delegated-implementation.md`,
22
+ session plan and ownership contract before preparation or dispatch. Version 8.0.0 or a compatible
23
+ later version must support the worker profile and delivery template; an older installation is a
24
+ capability blocker, not something to override in a prompt. Locate the actual installed package and
25
+ pass its path to each worker. Read [runtime capabilities](references/runtimes.md) for the current
26
+ provider during preparation and recheck actual capabilities before launch. Preparation never
27
+ launches trial workers or judges.
28
+
29
+ ## From handoff to a launchable plan
30
+
31
+ One preparation phase takes a decided handoff to a plan the user can launch. It starts on the
32
+ user's yes to the specification's planning question when planning selects the coordinated path,
33
+ on an explicit invocation naming a handoff or STATE, or on an explicit preparation request. A
34
+ generic first request to coordinate through completion still prepares first. Complete the entry and
35
+ ownership checks in Establish the run before any preparation writes.
36
+
37
+ 1. **Technical plan.** Without PLAN, STATE and the planned block map, run denisco-handoff-implementation's
38
+ planning-only phase in this conversation first, including its blocker check and saved direct
39
+ execution prompt, then release its claim. An undecided handoff goes back to
40
+ denisco-interactive-spec-definition. An existing plan is read and reconciled, not replanned.
41
+ 2. **Path check.** Count implementation blocks, final integration excluded. With one block, or when
42
+ the runtime cannot create fresh-context workers, state the reason and end with
43
+ denisco-handoff-implementation's "Plan ready. Start <block>?" instead of a coordination proposal. An
44
+ explicit user request to coordinate a one-block task is honored.
45
+ 3. **Session plan.** Draft all remaining groups, including blocked work and final integration, with
46
+ block IDs, dependencies and grouping reasons. This is a tentative session plan, not a replacement
47
+ PLAN. Save both coordination documents, the preparation record and a concrete execution prompt;
48
+ reread them before reporting readiness. If no work is dependency-ready, record the blocker and a
49
+ pending continuation rather than ask to launch an unusable assignment.
50
+ 4. **Start question.** Ask "Coordination ready. Start A1?" with the first assignment's ID, the worker
51
+ profile and the extra skills the operating guide lists, or that it lists none. Recommend starting
52
+ execution in a fresh conversation with the saved prompt, because the coordinator re-reads its
53
+ whole context at every return and relay; a yes here remains valid. Add that after a usage-limit
54
+ stop only the launching conversation, continued without clearing it, can resume the interrupted
55
+ worker; a new conversation gives the residual to a new worker.
56
+
57
+ The user's yes starts execution in this conversation; otherwise end preparation with the saved
58
+ prompt. A later user-submitted execution prompt or equivalent scoped request starts the prepared
59
+ coordination. If the user explicitly requests both phases without a pause, preserve that
60
+ authorization, materialize/check preparation and proceed; do not invent an extra approval contrary
61
+ to the explicit request. Native plan approval, a bare "Implement the plan." or tool-mode changes
62
+ alone never authorize programmer launches.
63
+
64
+ In Plan Mode propose only the current phase and identify pending writes. After permission to write,
65
+ finish that phase; preparation then reaches its start question, not automatic execution. An execution
66
+ request for missing coordination documents prepares them first under the same phase boundary.
67
+ On an explicitly requested resume, reconcile the existing execution authorization and lifecycle;
68
+ do not ask for approval of every group. Reading saved prompts or stale active metadata never launches work.
69
+
70
+ ## Worker profile
71
+
72
+ The default profile is light: model inherited and effort `medium` for every programmer and the
73
+ integration worker, red blocks included. Request the effort through the spawn tool; where the runtime
74
+ exposes no effort setting, the worker inherits and COORDINATOR says so. Every packet limits reading
75
+ to the assigned HANDOFF points plus the sections they cite, and asks for targeted checks: browser
76
+ checks of the assigned criteria, and test or build output read as summary and failures only, with
77
+ the full log kept in a file. The full profile (inherited effort) applies to the one automatic recovery
78
+ attempt and whenever the user asks for it. Extra skills come only from the operating guide's
79
+ coordinated-workers section; without that section workers get none. Record the requested and
80
+ observed profile for every attempt.
81
+
82
+ ## Establish the run
83
+
84
+ Read project instructions, handoff, PLAN, STATE, operational JSON and relevant operating guidance.
85
+ Preserve user changes and existing evidence. On a new human session, ask about pending Your actions
86
+ and external changes once; a same-conversation start or internal worker rotation does not repeat it.
87
+ Resolve the authorized scope and any explicit limits from the current request and recorded decisions.
88
+ Between workers record new human answers in COORDINATOR for the next programmer to integrate through
89
+ the standard workflow. During an active assignment relay answers for the worker to record; defer
90
+ your own document writes until handover. Do not write them into STATE yourself. Reconcile COORDINATOR,
91
+ the technical evidence and actual ownership before proceeding. A technical plan change requires
92
+ refreshing the proposed groups, with its reason preserved in COORDINATOR-HISTORY.
93
+
94
+ Require fresh-context creation, worker communication/results and a safe ownership handover;
95
+ [runtime capabilities](references/runtimes.md) says how each runtime closes a returned worker.
96
+ Check capacity before each launch against the next assignment, never the whole plan: launch when
97
+ it fits. When the remaining chain outgrows what the runtime can reclaim, stop at a checkpoint with
98
+ the resume prompt, so a new conversation continues the same chain, authorization and recovery
99
+ allowance. Capability findings, capacity included, live in COORDINATOR and are rechecked at every
100
+ entry; a saved prompt carries only the user's authorization and limits. A recorded user condition
101
+ that repeats an earlier capability finding still binds: when the remaining work no longer depends
102
+ on it, say so and ask once whether to lift it.
103
+ If these capabilities become unavailable after preparation, leave a manual continuation in COORDINATOR before
104
+ execution and report the missing capability. Every blocked stop names the ways on, each with the
105
+ prompt to send: what can launch now, a runtime that has the missing capability, or direct
106
+ execution if the user chooses it. Do not silently perform all implementation in this
107
+ conversation, launch another CLI as a fallback, or change global configuration. Record limitations
108
+ without claiming that a handoff was saved if writes are blocked. Live context telemetry is optional;
109
+ cumulative token usage is not window occupancy.
110
+
111
+ Acquire the worktree claim for coordinator bookkeeping only when no worker can still write.
112
+ Record phase, authorization and limits in COORDINATOR, with decisions in COORDINATOR-HISTORY.
113
+ Document ownership remains limited even while holding the claim. With explicitly enabled and
114
+ already bound measurement, register this conversation before its workers using the benchmark
115
+ contract: planning for preparation, implementation for execution-only entry; one native conversation
116
+ keeps one registration with its phase history explained. Ownership bookkeeping and permitted
117
+ measurement records are the only non-document writes for the coordinator. Never call benchmark
118
+ close, prompt save/clear or bind to mutate technical documents. Missing setup goes through the
119
+ programmer's standard workflow; keep attribution gaps explicit. Otherwise leave measurement inactive.
120
+ Release the claim before dispatching a worker; keep its token out of prompts and STATE.
121
+
122
+ ## Assign, receive, repeat
123
+
124
+ 1. Select dependency-ready work within the authorized plan. Use colors as difficulty estimates,
125
+ then consider shared code, exploration and verification effort. A red block alone, two related
126
+ yellows or several greens are examples, not quotas. Preserve coherent changes, prerequisite
127
+ order and the plan's release boundaries. Narrow future groups when deliveries show underestimated
128
+ effort; explain the selection in COORDINATOR, preserving the prior proposal and rationale in
129
+ COORDINATOR-HISTORY. An unresolved verification gap blocks only work that depends on it. User
130
+ checks in Your actions do not stop the chain: relay them and continue with ready work. A verdict
131
+ asking for a change becomes a correction assignment placed before final integration and before
132
+ any release that needs it; a small correction within the next worker's points may open that
133
+ assignment. Recheck proposed groups against current technical documents before dispatch; only
134
+ the programmer can change technical blocks or criteria.
135
+ 2. Under coordinator ownership, save the exact packet in the attempt's packet file, record the
136
+ assignment (ordered block IDs and the delegated contract's fields) in COORDINATOR and append a
137
+ prepared-attempt entry to COORDINATOR-HISTORY. Release ownership and create a new worker with
138
+ no inherited conversation, using the worker profile. Pass document paths, authorization evidence,
139
+ known answers and the assignment, not full transcripts; cite the COORDINATOR-HISTORY entries the
140
+ worker needs instead of the whole history. A failed launch leaves a prepared, unexecuted
141
+ assignment. Follow the document contract for deferred lifecycle recording: no post-launch write
142
+ may race the worker's acquisition.
143
+ 3. While the worker owns the worktree, remain read-only, including tests/builds, STATE and metrics.
144
+ Keep the user informed with short progress updates, checking the worker's actual status
145
+ whenever the user writes: a stop may arrive without a notification. Relay necessary worker
146
+ questions to the user and return answers without inventing them. The worker records answers and
147
+ continues independent work; the coordinator is the sole user-facing questioner. Route user stop or scope
148
+ changes promptly; request orderly checkpoint/cleanup and verify quiescence before another writer.
149
+ A stop or launch restriction covers every agent the coordinator would start, judges included,
150
+ unless the user exempts it. An announced plan with an opt-out is not consent: wait for the
151
+ answer before launching and never record silence as approval. A worker paused for a judge
152
+ relay keeps ownership; relay per [runtime capabilities](references/runtimes.md) and resume
153
+ that worker with the verbatim observations.
154
+ 4. Receive the structured delivery. Inspect STATE, history and cited evidence for scope, unresolved
155
+ criteria and consistency; inspect code/logs when a discrepancy requires it. A worker's "done"
156
+ alone is insufficient. An interim runtime notice that the worker still waits on its own
157
+ background commands is not a delivery: stay read-only and keep waiting.
158
+ Close the returned worker right away with the runtime's stop/close operation, or the closure
159
+ runtime capabilities define where none exists, and confirm that it, its tasks and its resources
160
+ cannot continue writing. Services
161
+ that stay up are the ones the delivery hands over with port and PID; a worker never stays alive
162
+ to keep a service running. Release finite runtime slots; if capacity cannot be reclaimed, stop
163
+ with a continuation rather than reuse a full context.
164
+ 5. Acquire a fresh claim for bookkeeping. Record the delivery, closure, usage row and coordination
165
+ decision as the document contract specifies, update COORDINATOR, prepare the next attempt and
166
+ release. Request any technical reconciliation from a programmer through the standard workflow;
167
+ do not edit STATE or certify criteria yourself. Once the next worker is launched, or the run
168
+ stops, report the return to the user with the return card.
169
+
170
+ Every assignment gets a new worker, including a continuation of the same unfinished block; a worker
171
+ never expands its own range. The one exception is an external interruption, such as a usage limit
172
+ (429) or network failure, of a worker that holds the claim or has work in progress: resume that same
173
+ worker by message, naming the cause, and record the resume after its return. It is not a recovery
174
+ and leaves the allowance unchanged. Only the conversation that launched the worker can message it,
175
+ and a usage limit usually stops that conversation too. When it is gone (closed, cleared or replaced
176
+ by a new one), the worker cannot resume: verify the stop under the stopped-writer rule, release its
177
+ claims by their exact IDs and give the residual to a new worker with the same profile. That is
178
+ still no recovery.
179
+
180
+ A worker that ends without a delivery and without your stop, for example stopped by the user from
181
+ the runtime's interface, leaves a user decision. Keep it stopped and launch nothing. Report its last
182
+ checkpoint, uncommitted work and held claims, then ask once: resume that worker, give the residual
183
+ to a new worker, or stop the run. A resume or a new worker follows the rules above; a stop follows
184
+ Final integration and stopping.
185
+
186
+ Keep the coordinator context small: retain current decisions, delivery summaries and evidence
187
+ paths. Read historical details only for a concrete inconsistency or recovery. Save a coordination
188
+ resume prompt in COORDINATOR. The ordinary implementation prompt in STATE remains worker-owned.
189
+
190
+ ## Partial progress and recovery
191
+
192
+ A worker may return early for context pressure, a real blocker or an explicit limit. Preserve
193
+ unfinished work and assign a precise residual task to a new worker; partial progress is not
194
+ verification. For an assignment ending without useful progress, allow one automatic recovery with
195
+ a documented diagnosis, the full profile and a changed approach or smaller scope. Persist that
196
+ recovery allowance across workers and coordinator resumes. After another no-progress outcome on the
197
+ same unresolved obstacle, ask the user and stop that retry chain; continue only independently ready
198
+ work. Renaming an assignment or repeating the same failed check does not reset the allowance.
199
+ Useful progress means a supported implementation, verified criterion or resolved prerequisite, not
200
+ another summary or reread. A perceptual criterion still failing after denisco-visual-check's single
201
+ correction round is a user question relayed through the coordinator, not another correction
202
+ assignment or judge.
203
+
204
+ A crash or missing delivery requires ownership recovery first. Check actual worker/process status
205
+ and children; neither idle files nor an old claim proves exit. Apply the existing stopped-writer
206
+ recovery contract. If safety is uncertain, remain read-only and request the concrete coordination
207
+ needed. Preserve failures and recover from repository evidence rather than assuming completion.
208
+ Use the document contract's legacy migration: read old Coordination notes without changing them;
209
+ only a programmer can archive/replace those notes through the standard STATE/HISTORY procedure.
210
+
211
+ ## Final integration and stopping
212
+
213
+ After all implementation groups, dispatch a fresh worker with kind `integration`: complete the
214
+ plan's cross-block checks and remaining acceptance verification, correcting defects only within
215
+ the approved task. Use the same bounded contract with explicit correction scope. If too large,
216
+ checkpoint and split the residual integration work into fresh assignments. Reverify affected
217
+ criteria after corrections; do not rerun unchanged valid checks without a reason.
218
+
219
+ Finish only when Done when and required checks are met, with waivers and user-reported checks
220
+ identified. Keep technical verification separate from user acceptance and pending accounting.
221
+ If remaining work needs user/external action, a capability, an exhausted recovery decision or an
222
+ explicit limit, persist the unfinished state and continuation. Without an explicit limit, continue
223
+ until completion or a real stop; elapsed 20-30 minutes is not a default deadline. Honor feasible
224
+ time/assignment limits at safe checkpoints; claim enforcement of a monetary limit only with
225
+ reliable cost data. If a requested hard limit cannot be enforced, resolve it before dispatch.
226
+
227
+ Call a release or intermediate commit ready to merge only after checking commit order: every
228
+ commit of that release, its corrections included, precedes the first commit of later work.
229
+
230
+ Before ending, reconcile ownership, active workers, evidence and saved prompts. Report completed
231
+ work, failed/unavailable checks and the precise next step. End with Your actions or "Nothing needed
232
+ from you." This protocol is procedural: local tests do not prove model adherence or token savings.
233
+
234
+ After closure, a user request in this conversation, such as a merge, a push or a small correction,
235
+ runs as a direct denisco-handoff-implementation session: acquire its claim, follow its permission list and
236
+ always-ask rules, and update STATE and STATE-HISTORY consistently. Record the switch and its outcome
237
+ in COORDINATOR-HISTORY under the same claim, then release. A new goal still becomes a new task.
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,175 @@
1
+ # Coordination documents
2
+
3
+ Read before preparation, execution or resume. Default to COORDINATOR.md, COORDINATOR-HISTORY.md and
4
+ the `coordinator-packets/` folder beside the actual STATE resolved from the handoff's operational
5
+ context, not an assumed task root. Honor explicit project paths and put the real paths in prompts.
6
+ An existing document must match this task/worktree; report collisions rather than overwrite another
7
+ task. No new sidecar schema. Write these documents and the user-facing reports in the user's language.
8
+
9
+ ## Authority and writers
10
+
11
+ | Resource | Writer during coordinated execution | Authority |
12
+ |---|---|---|
13
+ | HANDOFF | Programmer through the standard workflow | Decided scope, requirements and permission rules |
14
+ | PLAN and operational block map | Programmer through the standard workflow | Technical blocks, dependencies and criteria |
15
+ | STATE | Programmer through the standard workflow | Current technical results, evidence, blockers and direct continuation |
16
+ | STATE-HISTORY | Programmer, append-only | Session history and replaced technical decisions/results |
17
+ | COORDINATOR | Coordinator | Current grouping proposal, assignment, worker usage, coordination limits and continuation |
18
+ | COORDINATOR-HISTORY | Coordinator, append-only | Proposed/revised groups, actual attempts, observations and reasons |
19
+ | `coordinator-packets/<attempt-id>.md` | Coordinator, once per attempt | Exact packet sent to that worker |
20
+
21
+ The coordinator reads technical evidence and reports discrepancies; the programmer resolves them
22
+ through denisco-handoff-implementation. Regrouping existing blocks does not authorize creating, deleting
23
+ or reinterpreting them. Neither holding the worktree claim nor owning a document expands task scope.
24
+ Programmers, including the final integration worker, read but never edit the coordination documents.
25
+ The coordinator never appends technical session entries, rewrites technical state, changes the map,
26
+ or repairs HANDOFF/PLAN on its own. All required technical updates follow the existing workflow.
27
+ Standard measurement helpers remain opt-in and run only under ownership; coordinator registration
28
+ and reports may update measurement records, but never technical documents through indirect commands.
29
+
30
+ ## COORDINATOR.md: current picture
31
+
32
+ Keep it short enough to resume without reading the full history. Use these sections:
33
+
34
+ 1. **Task and phase:** links to HANDOFF, PLAN, STATE, STATE-HISTORY, operational JSON and coordination
35
+ history; worktree; observed technical plan revision/date or content fingerprint; last update.
36
+ Distinguish preparation requested, prepared, executing, blocked, finished and cancelled.
37
+ 2. **Authorization and constraints:** preparation request and, separately, execution request/answer,
38
+ dates and scope. State the scope as the task's work: the plan's blocks, corrections arising from
39
+ the user's verdicts within HANDOFF points, and final integration; never a list of assignment IDs,
40
+ so regrouping leaves it current. Permission-list reference; limits and progress against them;
41
+ measurement state; worker profile and extra skills with their source. Include newly received
42
+ human answers awaiting the programmer's standard recording. Prepared does not mean authorized or
43
+ launched. Remove forwarded pending answers only after technical recording.
44
+ 3. **Proposed session plan:** ordered groups covering all remaining authorized work and integration.
45
+ Each row names stable assignment ID, kind, exact block IDs, dependencies/readiness, residual work,
46
+ reason for grouping and a one-line status: proposed, current, returned or superseded, plus, once
47
+ returned, verified blocks, commits and pending user checks. Mark blocked proposals. Future rows
48
+ are provisional; revise grouping when technical evidence changes, preserving history.
49
+ 4. **Worker usage:** one row per attempt with raw observations only: attempt, profile, blocks with
50
+ colors, criteria worked, tokens, tool uses and duration as the runtime reports them at completion,
51
+ and lines added/removed by the attempt's commits; then the total. Under the table state that
52
+ tokens are the worker's accumulated context rather than billed usage, that the coordinator is
53
+ excluded, and which rows a resume makes partial. Unknown values stay unknown. Add derived ratios
54
+ or analysis only when the user asks.
55
+ 5. **Current execution:** link to the current packet file, attempt ID, worker handle if observed,
56
+ requested and observed provider/model/effort, lifecycle observation and source, last returned
57
+ assignment/evidence references, services handed over (port, PID, owner), outstanding cleanup and
58
+ next action. Where the runtime has a concurrent-agent limit, record live agents against it at
59
+ each launch. Persist recovery usage per unresolved obstacle (`0` or `1`); new attempt names,
60
+ external-interruption resumes and coordinator resumes do not change it.
61
+ 6. **Continuation:** phase-correct launch/resume prompt or exact blocker. Keep prompts here outside
62
+ STATE's generated section. On completion/cancellation remove runnable obsolete prompts, keeping
63
+ remaining gaps and history. A manual fallback names the pending technical step and uses the
64
+ existing STATE continuation where applicable; it does not rewrite STATE. When STATE has no
65
+ continuation for that step, the fallback gives the complete direct request in the
66
+ denisco-handoff-implementation next-prompt form, so the user can always continue.
67
+
68
+ Do not duplicate the full criterion table or technical history. A summary such as "worker reports
69
+ B3-B5 verified; checked against STATE and linked artifacts; B6 remains incomplete" points at its
70
+ sources and names the inspection. Unknown model/effort or occupancy stays unknown. The configured
71
+ model is not proof of the actual runtime model. Record a new context only with observed fresh-instance
72
+ creation; never describe a clear/reset operation that was not performed.
73
+
74
+ ## COORDINATOR-HISTORY.md: append-only observations
75
+
76
+ Create it during preparation with the initial grouping and rationale. Keep dated entries for
77
+ revisions, prepared attempts, launch failures, interruptions and resumes, returned attempts,
78
+ recovery, post-closure sessions and final closure. Preserve the replaced grouping before updating
79
+ the current proposal. Give each returned attempt one entry with these fields, writing "unknown" for
80
+ anything not observed rather than a reconstructed guess:
81
+
82
+ - **Assignment:** assignment/attempt IDs, kind, exact blocks or residual work, grouping reason,
83
+ authorization reference and packet file link.
84
+ - **Launch:** native worker reference (agent ID), launch time, fresh-context setting, profile
85
+ requested versus observed, each with its tool/log evidence. Keep private log bodies and secrets out.
86
+ - **Interruptions:** cause (external, user stop or crash), time, resume by message or new worker
87
+ with the reason (for a user stop, the user's answer), recovery allowance after it.
88
+ - **Delivery:** the worker's report in brief: blocks worked, criteria, commits, questions, residual
89
+ work and stop reason.
90
+ - **Coordinator check:** what was checked against STATE, its dated HISTORY entry and actual evidence;
91
+ discrepancies stay explicit. Code revision and relevant dirty-worktree facts link to worker evidence.
92
+ - **Closure:** return time, how the worker was closed, ownership release, child/resource cleanup and
93
+ services handed over, each supported or explicitly unconfirmed. A response alone does not prove
94
+ exit or release.
95
+ - **Usage:** the values of its Worker usage row.
96
+ - **Next decision:** continue, regroup, recover, wait or finish, with the reason and recovery allowance.
97
+
98
+ Distinguish planned work, worker statements and coordinator observations. Link to stable assignment
99
+ IDs, dated technical history entries and concrete artifacts instead of relying only on mutable STATE.
100
+ Later evidence corrects a prior assertion by a new entry, never by erasing the original.
101
+
102
+ ## Return card
103
+
104
+ After each return, once the next worker is launched or the run stops, report in chat:
105
+
106
+ - one headline sentence with the outcome;
107
+ - **Ax-n (blocks):** what changes for the user, criteria passed or pending, commits, usage;
108
+ - **Now:** the worker just launched and its blocks, or why the run stopped;
109
+ - **Your actions:** numbered user checks saying where and how to verify, or "Nothing needed from you."
110
+
111
+ The card states only what COORDINATOR-HISTORY records; details stay there and in STATE.
112
+
113
+ ## Lifecycle recording without competing writers
114
+
115
+ Before launch, while holding its own claim, the coordinator writes the exact packet to
116
+ `coordinator-packets/<attempt-id>.md`, records the prepared attempt ID in both coordination
117
+ documents with a link to that file, then releases. A packet file is written once; a new attempt gets
118
+ a new file. After dispatch the coordinator remains read-only even if the programmer has not acquired
119
+ yet: a transient free claim is not a safe write window.
120
+ The programmer records assignment/attempt ID and observed worker identity in STATE and its technical
121
+ history through the standard workflow. It returns launch/configuration and closure evidence in its
122
+ delivery; it never edits COORDINATOR. The coordinator appends the actual observations only after
123
+ quiescence, release and its own fresh claim, retaining both occurrence and recording times when known.
124
+
125
+ Consequently a coordination file may still say prepared while a worker is active. It is a last
126
+ persisted observation, not a live process registry. On resume, correlate attempt ID with native
127
+ peer/invocation metadata, ownership and the worker's technical records before any relaunch. If launch
128
+ outcome or continued writes are uncertain, stay read-only and resolve that uncertainty; no timeout
129
+ turns a prepared record into proof that nothing started.
130
+
131
+ ## Prompts and phase boundary
132
+
133
+ Save concrete paths and actual scope, not placeholders. These templates illustrate the contract:
134
+
135
+ ```text
136
+ Use denisco-implementation-coordinator to execute the prepared coordination in <COORDINATOR.md>
137
+ for <HANDOFF.md>. Read <STATE.md>, the technical plan and applicable instructions.
138
+ I authorize sequential bounded programmers through the recorded task scope, including final
139
+ integration, with the recorded worker profile. Recheck readiness, capabilities and ownership;
140
+ preserve existing permissions and measurement state. Return questions requiring my decision
141
+ through the coordinator.
142
+ ```
143
+
144
+ ```text
145
+ Use denisco-implementation-coordinator to resume <COORDINATOR.md> for <HANDOFF.md>.
146
+ Read <STATE.md> and the recorded authorization/limits. Reconcile the last attempt with actual
147
+ workers, ownership and evidence before dispatch. Continue only unfinished authorized work.
148
+ ```
149
+
150
+ Model invocation of this skill is disabled, so plain text does not load it: save each prompt after
151
+ the runtime's explicit invocation (`/denisco-implementation-coordinator` in Claude Code,
152
+ `$denisco-implementation-coordinator` in Codex). Planning that selects the coordinated path loads the
153
+ installed skill by its path after the user's yes to the planning question.
154
+ The first is prepared before execution is authorized; reading it is not its submission by the user.
155
+ A preparation-only resume finishes preparation and reaches the start question. Native Plan Mode
156
+ approval materializes only the current phase. A later explicit execution request may name these
157
+ documents without copying the template. No additional approval is needed between ordinary groups.
158
+
159
+ ## Existing coordination notes
160
+
161
+ When upgrading from coordination embedded in STATE, first inspect actual workers and ownership.
162
+ The coordinator reads the old notes and HISTORY, imports their supported facts into its own
163
+ documents with source references, and preserves authorization, pending work and consumed recovery.
164
+ Missing facts remain unknown. An import is not a new launch or a fresh execution authorization.
165
+
166
+ The next authorized programmer, during its ordinary STATE update, archives replaced Coordination
167
+ text unchanged in STATE-HISTORY and replaces it with a short coordinator link and current assignment
168
+ reference. It preserves technical outcomes, pending answers and the normal implementation prompt.
169
+ Old HISTORY entries stay untouched. If no programmer can run yet, leave the legacy notes in place;
170
+ record migration pending in COORDINATOR. Do not launch a worker solely during preparation to migrate.
171
+ The coordinator uses the imported current record plus source evidence; stale notes never replenish
172
+ retries or override newer user restrictions. Conflicts are reconciled explicitly, not guessed away.
173
+
174
+ A COORDINATOR written before version 3.0.0 keeps its content: on the next bookkeeping write add the
175
+ missing sections and keep earlier packets where they are, with unknown values for unrecorded fields.
@@ -0,0 +1,105 @@
1
+ # Runtime capabilities
2
+
3
+ Discover the tools available in the actual session. Installed CLI versions or a skill file alone
4
+ do not prove that this session can spawn workers. Keep the implementation contract provider-neutral;
5
+ record actual capability gaps in COORDINATOR. Preparation inspects available tool metadata without
6
+ launching a test worker; execution rechecks actual availability. Do not install adapters or enable telemetry implicitly.
7
+
8
+ ## Codex
9
+
10
+ When the exposed spawn tool offers `fork_turns`, select `none` for each programmer. For another
11
+ tool interface use its documented fresh-context equivalent, not an assumed parameter. Supply
12
+ the task packet and actual installed skill paths explicitly. Verify the child has the required
13
+ filesystem, shell and applicable verification tools; do not assume it inherits every tool.
14
+ Use available message/wait/status/close operations. A completed response and a released worktree
15
+ claim answer different questions; check both. Keep the model inherited; request the profile's effort
16
+ only through a documented spawn setting, otherwise record it as inherited.
17
+
18
+ Codex multi-agent tools (`spawn_agent`, `send_message`, `followup_task`, `wait_agent`,
19
+ `list_agents`, `interrupt_agent`) expose no close operation, so closure is defined here. A returned
20
+ worker is closed, and the next one may launch, when its final answer has arrived, `list_agents` no
21
+ longer shows it running (otherwise `interrupt_agent` ends the turn first), its claim is released and
22
+ its delivery reports children drained. From then on it receives no `send_message` or
23
+ `followup_task`, which would reopen a closed context. Resuming a worker after an external
24
+ interruption uses `followup_task` before closure, as the message resume does elsewhere.
25
+
26
+ The tool instructions state the concurrent limit, for example "up to 4 agents can be active at once,
27
+ including you", and a closed worker may keep its slot. Before each launch count live agents with
28
+ `list_agents` and launch when the next assignment fits; after the first return record whether the
29
+ closed worker still appears. When no slot is left and work remains, record the capacity stop in
30
+ COORDINATOR and end with the resume prompt: a new conversation starts a new root thread, whose
31
+ slots the coordinator rechecks on entry. Only the user changes Codex's configured agent limits.
32
+
33
+ ## Claude Code
34
+
35
+ Create a new subagent instance for every assignment with an isolated context, in the background,
36
+ passing the Agent tool's `effort` setting for the profile. A resumed agent retains history and is
37
+ not a reset. Close a returned worker by stopping its background task (TaskStop) and confirm the
38
+ stop. A process the worker started can outlive it, so services that stay up are recorded by port
39
+ and PID from the delivery. Supply the installed skill paths and require the worker to
40
+ load them, or use the runtime's supported skill-preloading configuration if already available.
41
+ Do not rely on skills invoked in the parent having loaded in the child. Check its editing tools,
42
+ permission mode and working directory. Honor any restrictions on subagents spawning further agents.
43
+ Subagents cannot start further agents, so a programmer's blind judge goes through the relay below.
44
+ A subagent's hand-back ends its run, but a message to it resumes the same agent: use that to return
45
+ judge observations to the paused worker and to continue a worker stopped by a usage limit (429) or
46
+ a network error. A long pause makes the resume re-read its whole context;
47
+ relay promptly. A hand-back delivers one report per agent: when a relay pause used it, the packet
48
+ tells the worker to send its final delivery as a message to the coordinator. General-purpose agents can run shells. For judges prefer an agent type whose tools
49
+ are limited to reading files, such as a project agent definition with `tools: Read`; adding one
50
+ changes project configuration and needs the user's yes. Without it, rely on the judge boundary.
51
+
52
+ Usage limits apply to the whole account, so a 429 normally stops the coordinator conversation
53
+ together with its worker. `SendMessage` reaches a subagent only from the conversation that
54
+ launched it: after `/clear` or in a new conversation the subagent is absent from `ListAgents` and
55
+ cannot be resumed.
56
+
57
+ A subagent that ends its turn while its own background commands run sends a completion
58
+ notification saying it is waiting on its own background work, with interim usage. It resumes when
59
+ those commands finish; only its hand-back is the delivery. The user can stop a subagent from the
60
+ interface, and the coordinator may receive no notification. Check its state with `ListAgents` and
61
+ its metadata file, `subagents/agent-<id>.meta.json` beside the conversation transcript, which
62
+ records `finished` and `stoppedByUser`; a killed background command's output file reads `[killed]`.
63
+ `TaskStop` stops a worker, so it is never a status probe.
64
+
65
+ ## Verification and lifecycle limits
66
+
67
+ The programmer is the implementation owner, including ordinary visual captures and measurements.
68
+ If perceptual verification needs a fresh blind judge and the worker cannot create one, it can
69
+ send the coordinator the anonymized judge packet from denisco-visual-check. The coordinator may relay
70
+ that packet to an independent read-only judge and return its observations while the programmer
71
+ retains ownership. The worker pauses for the relay instead of ending its assignment; the
72
+ coordinator resumes that same worker with the observations. Only when resuming is unavailable does
73
+ the judgment become residual work for a new worker. This is verification delegation, not parallel
74
+ implementation. The judge gets no implementation transcript. Record actual native parentage
75
+ separately from operational roles.
76
+ If this capability or a slot is unavailable, retain the verification gap and request the existing
77
+ user-review/waiver options; do not claim an independent judgment occurred.
78
+
79
+ Before dispatch, check that the runtime can retire/release workers or has enough available
80
+ capacity for the next assignment. Do not hard-code a universal slot limit. A runtime without
81
+ usable status or communication may support bounded completion but not safe interruption: state
82
+ that limit and never start a replacement while the old worker may still be writing.
83
+
84
+ ## Telemetry
85
+
86
+ Coordination requires no live context counter. When a trustworthy per-worker occupancy observation
87
+ is already exposed, it can inform conservative sizing; record its source and observation time.
88
+ Unknown occupancy stays unknown. Benchmark totals describe cumulative usage, not context occupancy.
89
+ No fixed token threshold, polling integration, cost estimate or model-routing table is installed.
90
+
91
+ The Worker usage row takes what the runtime reports when a worker finishes. In Claude Code the
92
+ completion notification carries `subagent_tokens`, `tool_uses` and `duration_ms`. After a message
93
+ resume the tokens cover the worker's whole life while tool uses and duration cover only the last
94
+ segment, an interim notification carries only the usage so far, and an interrupted or stopped run
95
+ may report no usage at all: take the row from the final notification and mark such rows partial. Lines come from
96
+ `git show --shortstat` of the attempt's commits. Where a runtime reports none of this, the row says unknown.
97
+ Record provider/model/effort requested and actually observed separately in the coordination history,
98
+ with the source of each observation. Inherited configuration is the request, not runtime proof.
99
+ Likewise record actual fresh-instance creation rather than claiming a clear command was executed.
100
+
101
+ Provider integration references, to consult when developing an adapter rather than on every task:
102
+ [Codex subagents](https://learn.chatgpt.com/docs/agent-configuration/subagents),
103
+ [Codex App Server](https://learn.chatgpt.com/docs/app-server),
104
+ [Claude subagents](https://code.claude.com/docs/en/sub-agents),
105
+ [Claude subagent status lines](https://code.claude.com/docs/en/statusline#subagent-status-lines).