@ngockhoale/ukit 2.6.5 → 2.6.7
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/CHANGELOG.md +72 -0
- package/README.md +40 -177
- package/manifests/documentation.yaml +662 -0
- package/manifests/instructionRules.yaml +376 -0
- package/manifests/platform.full.yaml +15 -0
- package/package.json +4 -2
- package/scripts/docs/render-instructions.mjs +42 -0
- package/src/core/projectImportant.js +1 -1
- package/src/core/uninstall.js +1 -1
- package/src/render/instructionRenderer.js +226 -0
- package/templates/.codex/README.md +1 -1
- package/templates/.gitignore +2 -2
- package/templates/.omp/RULES.md +1 -0
- package/templates/AGENTS.md +71 -147
- package/templates/CLAUDE.md +67 -141
- package/templates/docs/UKIT_INTERNALS.md +219 -0
- package/templates/instructions/core.md +210 -0
- package/templates/instructions/layout.yaml +149 -0
- package/templates/instructions/overlays/agents.md +15 -0
- package/templates/instructions/overlays/claude.md +3 -0
- package/templates/instructions/overlays/omp-rules.md +74 -0
- package/templates/instructions/overlays/repo.md +9 -0
- package/templates/instructions/repo-vars.yaml +23 -0
- package/templates/ukit/README.md +1 -1
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
generated: false
|
|
3
|
+
description: >-
|
|
4
|
+
Canonical rule-ID catalog for the root instruction contracts. Marker comments
|
|
5
|
+
<!-- RULE: ID --> tag normative behavior; semantic tests prove delivery.
|
|
6
|
+
# marker_in values are drawn from the fixed set of the four marker-bearing
|
|
7
|
+
# contract files {templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md}.
|
|
8
|
+
# templates/.omp/RULES.md and .omp/RULES.md are marker-free by SPEC §7.1 policy
|
|
9
|
+
# and must never appear here.
|
|
10
|
+
# DEVIATION from SPEC §7.2 table: OWN-01 is marker_in: AGENTS set only (not
|
|
11
|
+
# SHARED) — its anchor `PROJECT_IMPORTANT.md` does not exist in the CLAUDE
|
|
12
|
+
# files, and markers are comment-only (no prose edits allowed). AGENTS-set
|
|
13
|
+
# coverage matches the HOST-OC-01/HOST-OWN-01 rows that tag the same overlay.
|
|
14
|
+
rules:
|
|
15
|
+
- id: CORE-01
|
|
16
|
+
title: One remembered command — ukit install
|
|
17
|
+
kind: critical
|
|
18
|
+
statement: >-
|
|
19
|
+
Human-facing UKit workflow collapses to one remembered command:
|
|
20
|
+
`ukit install`; after install, work in natural language inside the
|
|
21
|
+
supported harnesses.
|
|
22
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
23
|
+
anchor: 'ukit install'
|
|
24
|
+
- id: CORE-02
|
|
25
|
+
title: Quality first, then speed, then token discipline
|
|
26
|
+
kind: supporting
|
|
27
|
+
statement: >-
|
|
28
|
+
Ordering of priorities for all work: quality first, then speed, then
|
|
29
|
+
token discipline.
|
|
30
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
31
|
+
- id: CLS-01
|
|
32
|
+
title: Trivial lane acts directly
|
|
33
|
+
kind: critical
|
|
34
|
+
statement: >-
|
|
35
|
+
Trivial tasks (typo, label, small rename, spacing, toggle flag, obvious
|
|
36
|
+
config change) act directly — no doc reads, planning, index, or agents.
|
|
37
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
38
|
+
anchor: 'Act directly'
|
|
39
|
+
- id: CLS-02
|
|
40
|
+
title: Simple lane pulls smallest useful context
|
|
41
|
+
kind: critical
|
|
42
|
+
statement: >-
|
|
43
|
+
Simple tasks (1-2 files, clear scope, existing pattern) are handled
|
|
44
|
+
directly, pulling only the smallest useful context.
|
|
45
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
46
|
+
anchor: 'smallest useful context'
|
|
47
|
+
- id: CLS-03
|
|
48
|
+
title: Non-trivial lane verifies harder
|
|
49
|
+
kind: supporting
|
|
50
|
+
statement: >-
|
|
51
|
+
Non-trivial/risky tasks read deeper, verify harder, and use the
|
|
52
|
+
index-first loop then skill activation then targeted verification.
|
|
53
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
54
|
+
- id: EXEC-01
|
|
55
|
+
title: Continue until write evidence or blocker
|
|
56
|
+
kind: critical
|
|
57
|
+
statement: >-
|
|
58
|
+
For explicit implement/apply/fix requests, continue until the actual edit
|
|
59
|
+
is made or a real blocker is found; never stop after read-only steps.
|
|
60
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
61
|
+
anchor: 'actual edit is made'
|
|
62
|
+
- id: EXEC-02
|
|
63
|
+
title: No done-claims without Edit/Write evidence
|
|
64
|
+
kind: critical
|
|
65
|
+
statement: >-
|
|
66
|
+
Completion wording requires concrete Edit/Write evidence in the current
|
|
67
|
+
turn, plus verification when the scope is risky.
|
|
68
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
69
|
+
anchor: 'concrete Edit/Write evidence'
|
|
70
|
+
- id: EXEC-03
|
|
71
|
+
title: Routed continuation is not a stopping point
|
|
72
|
+
kind: supporting
|
|
73
|
+
statement: >-
|
|
74
|
+
Routed states like pull-indexed-context or continuation-required are
|
|
75
|
+
internal continuation steps; finish the named milestone before widening.
|
|
76
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
77
|
+
- id: EXEC-04
|
|
78
|
+
title: Every stop names its reason
|
|
79
|
+
kind: critical
|
|
80
|
+
statement: >-
|
|
81
|
+
When a turn ends on a user-only action, open the reply with a
|
|
82
|
+
`WAITING ON YOU:` line and schedule a one-shot wakeup when available.
|
|
83
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
84
|
+
anchor: 'WAITING ON YOU'
|
|
85
|
+
- id: LONG-01
|
|
86
|
+
title: LAND one thing, DEFER the rest, DELEGATE broad work
|
|
87
|
+
kind: supporting
|
|
88
|
+
statement: >-
|
|
89
|
+
Near token-cap, land one in-flight item end-to-end, defer the rest into
|
|
90
|
+
docs/STATUS.md or bounded handoff tasks, delegate broad work to subagents.
|
|
91
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
92
|
+
- id: LONG-02
|
|
93
|
+
title: Post-compact continuity from disk state
|
|
94
|
+
kind: supporting
|
|
95
|
+
statement: >-
|
|
96
|
+
After any compact or handoff, continue from persisted disk state without
|
|
97
|
+
rereading pre-compact context; delegate and keep replies short.
|
|
98
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
99
|
+
- id: IDX-01
|
|
100
|
+
title: Check index freshness before code context
|
|
101
|
+
kind: critical
|
|
102
|
+
statement: >-
|
|
103
|
+
For tasks needing code context, check the index is fresh and refresh it
|
|
104
|
+
when stale or missing.
|
|
105
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
106
|
+
anchor: 'index is fresh'
|
|
107
|
+
- id: IDX-02
|
|
108
|
+
title: Open top 1-3 suspect files first
|
|
109
|
+
kind: critical
|
|
110
|
+
statement: >-
|
|
111
|
+
Open only the top 1-3 suspect files first, then widen if needed; use the
|
|
112
|
+
outline block to jump straight to the relevant region.
|
|
113
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
114
|
+
anchor: 'top 1-3 suspect files'
|
|
115
|
+
- id: IDX-03
|
|
116
|
+
title: Outlines locate code; code to be changed must still be read
|
|
117
|
+
kind: critical
|
|
118
|
+
statement: >-
|
|
119
|
+
The outline locates code but does not describe behaviour; any code about
|
|
120
|
+
to be changed must still be read.
|
|
121
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
122
|
+
anchor: 'must still be read'
|
|
123
|
+
- id: SKILL-01
|
|
124
|
+
title: Auto-activate the matching skill
|
|
125
|
+
kind: critical
|
|
126
|
+
statement: >-
|
|
127
|
+
On every non-trivial task, inspect installed project-local skills and
|
|
128
|
+
auto-activate the matching skill immediately; end users should not need
|
|
129
|
+
to know skill names.
|
|
130
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
131
|
+
anchor: 'auto-activate the matching skill'
|
|
132
|
+
- id: SKILL-02
|
|
133
|
+
title: Smallest effective skill set
|
|
134
|
+
kind: supporting
|
|
135
|
+
statement: >-
|
|
136
|
+
Use the smallest effective set of skills, usually 1-2.
|
|
137
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
138
|
+
- id: SKILL-03
|
|
139
|
+
title: Upgrade skill choice on sharper evidence
|
|
140
|
+
kind: supporting
|
|
141
|
+
statement: >-
|
|
142
|
+
If evidence becomes more specific than the original prompt, upgrade the
|
|
143
|
+
active skill choice immediately.
|
|
144
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
145
|
+
- id: HELP-01
|
|
146
|
+
title: Prefer internal helper commands for routing/context/verify
|
|
147
|
+
kind: supporting
|
|
148
|
+
statement: >-
|
|
149
|
+
Prefer the index helper scripts (route-task, resolve-context,
|
|
150
|
+
verify-context) for routing, related-file context, and verification.
|
|
151
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
152
|
+
- id: HELP-02
|
|
153
|
+
title: Never ask contributors to run internal helpers
|
|
154
|
+
kind: critical
|
|
155
|
+
statement: >-
|
|
156
|
+
Do not ask normal contributors to run internal helper commands or
|
|
157
|
+
memorize maintainer commands; run them yourself or tell them to rerun
|
|
158
|
+
`ukit install`.
|
|
159
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
160
|
+
anchor: 'Do not ask normal contributors'
|
|
161
|
+
- id: OWN-01
|
|
162
|
+
title: PROJECT_IMPORTANT.md is the canonical owner-instruction source
|
|
163
|
+
kind: critical
|
|
164
|
+
statement: >-
|
|
165
|
+
Read and follow the root PROJECT_IMPORTANT.md before project work; it is
|
|
166
|
+
the canonical project-owner instruction source.
|
|
167
|
+
marker_in: [templates/AGENTS.md, AGENTS.md]
|
|
168
|
+
anchor: 'PROJECT_IMPORTANT.md'
|
|
169
|
+
- id: SAFE-01
|
|
170
|
+
title: Preserve byte-level file details on edit
|
|
171
|
+
kind: critical
|
|
172
|
+
statement: >-
|
|
173
|
+
Preserve UTF-8 BOM/no-BOM and LF/CRLF for existing multilingual or
|
|
174
|
+
user-authored files.
|
|
175
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
176
|
+
anchor: 'BOM/no-BOM'
|
|
177
|
+
- id: SAFE-02
|
|
178
|
+
title: Prefer unique current-file anchors for risky edits
|
|
179
|
+
kind: critical
|
|
180
|
+
statement: >-
|
|
181
|
+
For risky/shared/large edits, prefer unique current-file anchors over
|
|
182
|
+
line numbers or stale pasted blocks.
|
|
183
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
184
|
+
anchor: 'unique current-file anchors'
|
|
185
|
+
- id: SAFE-03
|
|
186
|
+
title: Ask on missing or ambiguous stale specs
|
|
187
|
+
kind: supporting
|
|
188
|
+
statement: >-
|
|
189
|
+
Do not silently merge stale specs: if old_string is missing or ambiguous,
|
|
190
|
+
re-read current source and ask whether to apply, adapt, or skip.
|
|
191
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
192
|
+
- id: CTX-01
|
|
193
|
+
title: Deterministic segment bytes
|
|
194
|
+
kind: critical
|
|
195
|
+
statement: >-
|
|
196
|
+
Keep prompt-segment bytes deterministic so provider prompt prefixes can
|
|
197
|
+
be reused.
|
|
198
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
199
|
+
anchor: 'CTX-01'
|
|
200
|
+
- id: CTX-02
|
|
201
|
+
title: Keep roles and order
|
|
202
|
+
kind: critical
|
|
203
|
+
statement: >-
|
|
204
|
+
Keep message roles and order stable across calls.
|
|
205
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
206
|
+
anchor: 'CTX-02'
|
|
207
|
+
- id: CTX-03
|
|
208
|
+
title: Keep tool IDs and continuation state
|
|
209
|
+
kind: critical
|
|
210
|
+
statement: >-
|
|
211
|
+
Keep tool IDs and continuation state stable for prefix reuse.
|
|
212
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
213
|
+
anchor: 'CTX-03'
|
|
214
|
+
- id: CTX-04
|
|
215
|
+
title: No clock/random IDs in static blocks
|
|
216
|
+
kind: critical
|
|
217
|
+
statement: >-
|
|
218
|
+
Static prompt blocks must not contain clock values or random IDs.
|
|
219
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
220
|
+
anchor: 'CTX-04'
|
|
221
|
+
- id: CTX-05
|
|
222
|
+
title: Compaction starts a new epoch
|
|
223
|
+
kind: critical
|
|
224
|
+
statement: >-
|
|
225
|
+
Compaction starts a new cache epoch; do not expect prefix reuse across it.
|
|
226
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
227
|
+
anchor: 'CTX-05'
|
|
228
|
+
- id: CTX-06
|
|
229
|
+
title: Never change data to match a cache
|
|
230
|
+
kind: critical
|
|
231
|
+
statement: >-
|
|
232
|
+
Never mutate data to make it match a cache entry.
|
|
233
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
234
|
+
anchor: 'CTX-06'
|
|
235
|
+
- id: CTX-07
|
|
236
|
+
title: No unconfirmed cache fields
|
|
237
|
+
kind: critical
|
|
238
|
+
statement: >-
|
|
239
|
+
Do not rely on cache fields that have not been confirmed for the route in
|
|
240
|
+
use.
|
|
241
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
242
|
+
anchor: 'CTX-07'
|
|
243
|
+
- id: CTX-08
|
|
244
|
+
title: Tool-result reuse needs valid freshness
|
|
245
|
+
kind: critical
|
|
246
|
+
statement: >-
|
|
247
|
+
Reuse of tool results requires valid freshness.
|
|
248
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
249
|
+
anchor: 'CTX-08'
|
|
250
|
+
- id: CTX-09
|
|
251
|
+
title: Missing usage is unknown, not zero
|
|
252
|
+
kind: critical
|
|
253
|
+
statement: >-
|
|
254
|
+
Missing cache-usage reporting means unknown, not zero savings.
|
|
255
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
256
|
+
anchor: 'CTX-09'
|
|
257
|
+
- id: CTX-10
|
|
258
|
+
title: Never cut a required check to reduce calls
|
|
259
|
+
kind: critical
|
|
260
|
+
statement: >-
|
|
261
|
+
Never skip a required verification or check just to reduce call count.
|
|
262
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
263
|
+
anchor: 'CTX-10'
|
|
264
|
+
- id: HAND-01
|
|
265
|
+
title: Handoff Quality Gate is opt-in via docs/AI_HANDOFF
|
|
266
|
+
kind: supporting
|
|
267
|
+
statement: >-
|
|
268
|
+
The handoff quality gate activates only when a task goes through
|
|
269
|
+
docs/AI_HANDOFF; daily prompts keep the old flow.
|
|
270
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
271
|
+
- id: HAND-02
|
|
272
|
+
title: RUN.md is the authoritative handoff run cursor
|
|
273
|
+
kind: critical
|
|
274
|
+
statement: >-
|
|
275
|
+
docs/AI_HANDOFF/RUN.md is the authoritative run cursor; only the
|
|
276
|
+
HANDOFF FULLSTACK COMPLETE/BLOCKED markers after Phase done/blocked end
|
|
277
|
+
a run.
|
|
278
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
279
|
+
anchor: 'RUN.md'
|
|
280
|
+
- id: BUDGET-01
|
|
281
|
+
title: Context budget per task class
|
|
282
|
+
kind: critical
|
|
283
|
+
statement: >-
|
|
284
|
+
Context + verification budget rows: Trivial reads no docs, Simple reads
|
|
285
|
+
MEMORY only, Non-trivial adds PROJECT and CODE_MAP.
|
|
286
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
287
|
+
anchor: '**Trivial**: no docs'
|
|
288
|
+
- id: BUDGET-02
|
|
289
|
+
title: STATUS.md only for open-ended or continuation prompts
|
|
290
|
+
kind: supporting
|
|
291
|
+
statement: >-
|
|
292
|
+
docs/STATUS.md is used for open-ended status/continue prompts or
|
|
293
|
+
meaningful continuation context; stale status is orientation only.
|
|
294
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
295
|
+
- id: BUDGET-03
|
|
296
|
+
title: WORKLOG recent entries only
|
|
297
|
+
kind: supporting
|
|
298
|
+
statement: >-
|
|
299
|
+
docs/WORKLOG.md is read for recent relevant entries only; archive oldest
|
|
300
|
+
entries when over limits.
|
|
301
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
302
|
+
- id: STATUS-01
|
|
303
|
+
title: STATUS.md is not source truth
|
|
304
|
+
kind: supporting
|
|
305
|
+
statement: >-
|
|
306
|
+
docs/STATUS.md captures compact current state; it is not source truth and
|
|
307
|
+
must not replace source/index-first investigation.
|
|
308
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
309
|
+
- id: SUBAG-01
|
|
310
|
+
title: Delegate only on meaningful context or parallel gains
|
|
311
|
+
kind: supporting
|
|
312
|
+
statement: >-
|
|
313
|
+
Keep direct execution as default for trivial/simple work; delegate only
|
|
314
|
+
when it shrinks context or enables useful parallel progress.
|
|
315
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
316
|
+
- id: SUBAG-02
|
|
317
|
+
title: Small-task maintainer is a sidecar lane
|
|
318
|
+
kind: supporting
|
|
319
|
+
statement: >-
|
|
320
|
+
The ukit-small-task-maintainer subagent handles safe/reversible UKit
|
|
321
|
+
chores as a sidecar lane and hands risky work back to the main model.
|
|
322
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
323
|
+
- id: AUTO-01
|
|
324
|
+
title: autonomy.level controls how much UKit acts without asking
|
|
325
|
+
kind: supporting
|
|
326
|
+
statement: >-
|
|
327
|
+
autonomy.level in .ukit/storage/config.json controls how much UKit acts
|
|
328
|
+
without asking first; end users should not need to change it.
|
|
329
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
330
|
+
- id: TIER-01
|
|
331
|
+
title: Tiers bind through agent definitions
|
|
332
|
+
kind: critical
|
|
333
|
+
statement: >-
|
|
334
|
+
A model tier takes effect only when work is handed to an agent whose own
|
|
335
|
+
definition binds that model; the main session model never changes
|
|
336
|
+
mid-turn.
|
|
337
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
338
|
+
anchor: 'model:'
|
|
339
|
+
- id: TIER-02
|
|
340
|
+
title: Escalate one tier after repeated failure
|
|
341
|
+
kind: supporting
|
|
342
|
+
statement: >-
|
|
343
|
+
When the same file or symbol fails debugLoopThreshold times in one
|
|
344
|
+
session, route the next attempt one tier higher, capped at smart.
|
|
345
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
346
|
+
- id: HOST-OC-01
|
|
347
|
+
title: OpenCode must explicitly read the triggered SKILL.md
|
|
348
|
+
kind: critical
|
|
349
|
+
statement: >-
|
|
350
|
+
OpenCode reads AGENTS.md at session start only and does not auto-load
|
|
351
|
+
skills; the model must explicitly read the triggered SKILL.md.
|
|
352
|
+
marker_in: [templates/AGENTS.md, AGENTS.md]
|
|
353
|
+
anchor: 'read the triggered SKILL.md'
|
|
354
|
+
- id: HOST-OWN-01
|
|
355
|
+
title: Codex/OpenCode read the root owner instructions
|
|
356
|
+
kind: critical
|
|
357
|
+
statement: >-
|
|
358
|
+
When running in Codex or OpenCode, read and follow the root
|
|
359
|
+
PROJECT_IMPORTANT.md before doing project work.
|
|
360
|
+
marker_in: [templates/AGENTS.md, AGENTS.md]
|
|
361
|
+
anchor: 'read and follow the root'
|
|
362
|
+
- id: DURA-01
|
|
363
|
+
title: DuraOne skill activates only when installed
|
|
364
|
+
kind: supporting
|
|
365
|
+
statement: >-
|
|
366
|
+
The DuraOne skill is active only when the duraone pack is installed or
|
|
367
|
+
.claude/skills/duraone/SKILL.md exists; otherwise use generic standards.
|
|
368
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
369
|
+
- id: FALLBACK-01
|
|
370
|
+
title: Missing/corrupt runtime → rerun ukit install
|
|
371
|
+
kind: critical
|
|
372
|
+
statement: >-
|
|
373
|
+
If the workspace needs a refresh or runtime files are missing or corrupt,
|
|
374
|
+
tell maintainers to rerun `ukit install`.
|
|
375
|
+
marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
|
|
376
|
+
anchor: 'rerun `ukit install`'
|
|
@@ -246,6 +246,21 @@ items:
|
|
|
246
246
|
packs:
|
|
247
247
|
- core
|
|
248
248
|
|
|
249
|
+
# Shipped internal-orchestration detail (tier tables, subagent policy, sidecar review,
|
|
250
|
+
# small-task maintainer, helper/runtime/budget/status detail, DuraOne). Extracted from
|
|
251
|
+
# templates/instructions/core.md in DOC-104; `overwrite_with_backup` so `ukit update`
|
|
252
|
+
# refreshes it alongside the root contracts that point at it.
|
|
253
|
+
- id: docs-ukit-internals
|
|
254
|
+
type: config
|
|
255
|
+
sourceTemplate: docs/UKIT_INTERNALS.md
|
|
256
|
+
targetPath: docs/UKIT_INTERNALS.md
|
|
257
|
+
requires: []
|
|
258
|
+
mergeStrategy: overwrite_with_backup
|
|
259
|
+
variables: []
|
|
260
|
+
enabledByDefault: true
|
|
261
|
+
packs:
|
|
262
|
+
- core
|
|
263
|
+
|
|
249
264
|
- id: core-skill-delivery
|
|
250
265
|
type: skill
|
|
251
266
|
sourceTemplate: .claude/skills/delivery/SKILL.md
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngockhoale/ukit",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.7",
|
|
4
4
|
"description": "Install/update an index-first AI workspace for Claude Code, OpenAI Codex, OpenCode, and omp (Oh My Pi).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -55,7 +55,9 @@
|
|
|
55
55
|
"index:query": "node ./scripts/index/query-index.mjs",
|
|
56
56
|
"bug:triage": "node ./scripts/bug/triage.mjs",
|
|
57
57
|
"skill:audit": "node ./scripts/skill/audit-skill.mjs",
|
|
58
|
-
"
|
|
58
|
+
"docs:render": "node scripts/docs/render-instructions.mjs --write",
|
|
59
|
+
"docs:render:check": "node scripts/docs/render-instructions.mjs --check",
|
|
60
|
+
"test:artifact": "vitest run tests/integration/packageArtifact.test.js tests/integration/artifactReferenceIntegrity.test.js",
|
|
59
61
|
"test:release-core": "vitest run --exclude tests/integration/packageArtifact.test.js",
|
|
60
62
|
"release:verify": "node ./scripts/release/verify-release.mjs",
|
|
61
63
|
"test": "vitest run",
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// DOC-102 renderer CLI (SPEC §8.2).
|
|
3
|
+
// node scripts/docs/render-instructions.mjs --write (default) regenerate all outputs
|
|
4
|
+
// node scripts/docs/render-instructions.mjs --check print DRIFT <path> per mismatch, exit 1
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
renderInstructionsFromDisk,
|
|
10
|
+
checkRenderedInstructions,
|
|
11
|
+
} from '../../src/render/instructionRenderer.js';
|
|
12
|
+
|
|
13
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
|
|
14
|
+
|
|
15
|
+
const USAGE = 'usage: render-instructions.mjs [--write|--check]';
|
|
16
|
+
|
|
17
|
+
const args = process.argv.slice(2);
|
|
18
|
+
const unknown = args.filter((a) => a !== '--write' && a !== '--check');
|
|
19
|
+
if (unknown.length > 0) {
|
|
20
|
+
console.error(`${USAGE}\nunknown flag: ${unknown[0]}`);
|
|
21
|
+
process.exit(2);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const mode = args.includes('--check') ? 'check' : 'write';
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
if (mode === 'check') {
|
|
28
|
+
const drift = await checkRenderedInstructions({ repoRoot });
|
|
29
|
+
for (const target of drift) {
|
|
30
|
+
console.log(`DRIFT ${target}`);
|
|
31
|
+
}
|
|
32
|
+
process.exit(drift.length > 0 ? 1 : 0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const rendered = await renderInstructionsFromDisk({ repoRoot, write: true });
|
|
36
|
+
for (const [target, content] of rendered) {
|
|
37
|
+
console.log(`WROTE ${target} (${content.split('\n').length - 1} lines)`);
|
|
38
|
+
}
|
|
39
|
+
} catch (err) {
|
|
40
|
+
console.error(err && err.message ? err.message : err);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* projectImportant.js (TASK-037)
|
|
3
3
|
*
|
|
4
4
|
* Source-side inspector + deterministic envelope renderer for
|
|
5
|
-
* PROJECT_IMPORTANT.md per docs/PROJECT_IMPORTANT_SPEC.md §3, §4, §5.2, §6,
|
|
5
|
+
* PROJECT_IMPORTANT.md per docs/archive/specs/PROJECT_IMPORTANT_SPEC.md §3, §4, §5.2, §6,
|
|
6
6
|
* §12.1.
|
|
7
7
|
*
|
|
8
8
|
* Guarantees:
|
package/src/core/uninstall.js
CHANGED
|
@@ -16,7 +16,7 @@ import { PROJECT_IMPORTANT_FILENAME } from './projectImportant.js';
|
|
|
16
16
|
// tracked/followed. Before any destructive uninstall step a regular source gets a
|
|
17
17
|
// raw-byte backup beside it at the project root (never under .claude/.ukit/.codex/
|
|
18
18
|
// .omp — those may be deleted): `<name>.ukit-backup`, then `.ukit-backup.1`, `.2`, …
|
|
19
|
-
// via bounded exclusive-create collision walk. See docs/PROJECT_IMPORTANT_SPEC.md §15.
|
|
19
|
+
// via bounded exclusive-create collision walk. See docs/archive/specs/PROJECT_IMPORTANT_SPEC.md §15.
|
|
20
20
|
const IMPORTANT_BACKUP_SUFFIX = '.ukit-backup';
|
|
21
21
|
const IMPORTANT_BACKUP_COLLISION_LIMIT = 100;
|
|
22
22
|
|