@ikon85/agent-workflow-kit 0.29.0 → 0.30.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.
@@ -9,50 +9,128 @@ Use this skill when the user asks for a Codex adapter sync, Codex drift check,
9
9
  Claude-to-Codex migration check, or when changes to Claude-facing project
10
10
  knowledge may need to be reflected in Codex-facing files.
11
11
 
12
+ ## Audit mode (default)
13
+
14
+ Audit is a read-only diagnosis from the current checkout. Inventory and compare
15
+ the source and adapter surfaces, then report the exact proposed changes. Do not
16
+ create or switch branches or worktrees, edit files, or change external state.
17
+
18
+ ## Apply mode
19
+
20
+ Apply only when the user asked to update or fix the adapter. Create or reuse the
21
+ correct issue or slice worktree before the first edit. Never apply adapter
22
+ changes on `main`; move any accidental main-checkout diff into the worktree and
23
+ leave the main checkout clean.
24
+
25
+ ## Model routing
26
+
27
+ Default to inherited parent model configuration. Do not pin a model merely
28
+ because the source workflow delegates, and do not invent model or role fields
29
+ on a spawn call. The supported built-in agent names are `default`, `worker`, and
30
+ `explorer`; custom agents declare overrides in their TOML files.
31
+
32
+ When an explicit custom-agent model is genuinely justified, route by task
33
+ shape:
34
+
35
+ - `gpt-5.6-sol` for complex, open-ended judgment work.
36
+ - `gpt-5.6-terra` for everyday tool-using development.
37
+ - `gpt-5.6-luna` for clear, repeatable, high-volume work.
38
+
39
+ Use `model_reasoning_effort` for a supported reasoning override. The family
40
+ name `gpt-5.6` describes the family and is not a fourth concrete variant in
41
+ this routing table. Keep user gates, security judgment, and approval decisions
42
+ in the main thread.
43
+
12
44
  ## Scope
13
45
 
14
46
  Source side:
15
- - `CLAUDE.md`
16
- - `frontend/CLAUDE.md`
17
- - `backend/CLAUDE.md`
47
+ - every repository instruction file matched by `**/CLAUDE.md`
18
48
  - `~/.claude/CLAUDE.md` when the user explicitly mentions global Claude
19
49
  instruction drift or global Claude changes
20
50
  - `.claude/skills/`
21
51
  - `.claude/agents/`
52
+ - Claude hook declarations and implementations
22
53
  - `.gitignore`
23
54
 
24
55
  Codex adapter side:
25
- - `AGENTS.md`
56
+ - every repository instruction file matched by `**/AGENTS.md` or
57
+ `**/AGENTS.override.md`
26
58
  - `.agents/skills/`
27
- - `.codex/config.toml`
59
+ - every trusted project config layer matched by `**/.codex/config.toml`
28
60
  - `.codex/agents/`
61
+ - Codex hook declarations
29
62
  - `.gitignore`
30
63
 
64
+ ## Inventory
65
+
66
+ Derive a fresh, counted inventory from the repository root; do not assume only
67
+ known package names or root-level files. Include:
68
+
69
+ - arbitrary nested `**/CLAUDE.md`, `**/AGENTS.md`, and
70
+ `**/AGENTS.override.md` instruction layers;
71
+ - every `**/.codex/config.toml`, noting that Codex loads project config and
72
+ hooks only from trusted project layers;
73
+ - `.claude/skills/**`, `.agents/skills/**`, `.claude/agents/**`, and
74
+ `.codex/agents/**`;
75
+ - Claude hook definitions in `.claude/settings*.json` and implementations in
76
+ `.claude/hooks/**` as adaptation candidates;
77
+ - Codex targets in `.codex/hooks.json` and inline `[hooks]` tables in each
78
+ active config layer; and
79
+ - ignore rules and every skill reference, asset, script, template, and other
80
+ distributed support file, regardless of extension.
81
+
82
+ For every relevant Claude hook behavior, record one explicit classification:
83
+ **Codex-adapted** with its target, or **intentionally Claude-only** with the
84
+ reason. Never port hooks blindly.
85
+
86
+ ## Custom-agent validation
87
+
88
+ Codex custom-agent files are standalone TOML config layers. Parse every
89
+ `.codex/agents/*.toml` file and require non-empty string values for the required
90
+ `name`, `description`, and `developer_instructions` fields. Validate supported
91
+ optional `model` and `model_reasoning_effort` fields as strings when present,
92
+ then let strict Codex config validation reject unsupported keys or values.
93
+ Reject a file that is malformed, misses a required field, or uses the legacy
94
+ schema. A README or no-op note is not a custom-agent TOML file.
95
+
96
+ ## Validation
97
+
98
+ Run validation from the repository root and keep the evidence in the report:
99
+
100
+ 1. Run `codex --strict-config --version` from the root and from a representative
101
+ nested directory for every discovered project config layer. Any unknown
102
+ active key is a failure, not a warning to ignore.
103
+ 2. Validate skill metadata and loading with the repository's strict
104
+ skill-frontmatter guard when one is available, then start a fresh Codex
105
+ session and check that every enabled skill is discoverable without load
106
+ warnings.
107
+ 3. Parse and validate every custom-agent TOML file against the
108
+ Custom-agent validation section above; strict config validation must also
109
+ accept its supported optional fields.
110
+ 4. Use `git check-ignore --no-index` on `.codex/config.toml`, every
111
+ `.codex/agents/*.toml`, `.agents/skills/**`, `.codex/hooks.json`, and any
112
+ adapted hook implementation. A checked-in adapter target being ignored is a
113
+ failure; local state and override files should remain ignored.
114
+ 5. Resolve every path named by skill prose and verify that all references,
115
+ assets, scripts, templates, and other distributed support files exist. Run
116
+ the repository's all-file mirror-parity guard when available so non-Markdown
117
+ presence parity and Markdown body/`mirror-xform` parity are both checked.
118
+ 6. Recompute the dual-surface skill denominator from the manifest, compare all
119
+ distributed files in both trees, and report the fresh result as **X of Y**
120
+ mirrored skills. Do not reuse a remembered count.
121
+ 7. Enforce this repository's 1024-character description cap as a named
122
+ repository safeguard. It is not a Codex product limit; the local guard owns
123
+ the policy and must fail when a description exceeds it.
124
+
31
125
  ## Workflow
32
126
 
33
- 1. Establish a worktree before making adapter changes pick the mode by how
34
- the sync was triggered:
35
- - **In-current-worktree (default for a per-slice gate).** If you are already
36
- in a non-main slice/feature worktree e.g. invoked as the mandatory
37
- `codex-adapter-sync` gate at the end of a skill-touching slice — sync the
38
- adapter **here**, in that same worktree. Commit the adapter changes
39
- alongside the slice and ship them in the slice's own PR. Do **not** spin up
40
- a separate adapter branch or PR: a per-slice gate that demanded its own
41
- worktree/PR would collide with the slice it is gating.
42
- - **Dedicated adapter worktree.** Only when invoked standalone from the main
43
- checkout (no active slice worktree): create or reuse a dedicated adapter
44
- worktree before inventory or edits — your project's worktree helper (or
45
- `git worktree add`) on an issue-anchored branch when an anchor exists, or a
46
- `chore/codex-adapter-sync-<slug>` worktree for a deliberate no-issue chore
47
- — and ship it through its own PR.
48
- - Either way: never land adapter changes directly on `main`. Move any
49
- accidental main-checkout adapter diff into the chosen worktree first, then
50
- leave the main checkout clean.
51
- 2. Inventory the source side and adapter side from inside that worktree. If
52
- global Claude instructions are in scope, read them from the main thread but
53
- keep personal overrides, secrets, and machine-local state out of the repo
54
- diff.
55
- 3. Compare project knowledge:
127
+ 1. Select the mode from the user's request. Audit in the current checkout. For
128
+ Apply, reuse the active non-main slice worktree when the sync gates that
129
+ slice; otherwise create or reuse a dedicated issue-anchored adapter worktree.
130
+ 2. Build the Inventory before proposing or making changes. If global Claude
131
+ instructions are in scope, inspect them without exposing personal overrides,
132
+ secrets, credentials, or machine-local state.
133
+ 3. Compare project knowledge and instruction precedence:
56
134
  - New or changed durable conventions in `CLAUDE.md` should be reflected in
57
135
  `AGENTS.md` only as concise adapter guidance or references.
58
136
  - Do not duplicate long `CLAUDE.md` sections into `AGENTS.md`.
@@ -62,26 +140,16 @@ Codex adapter side:
62
140
  Codex-facing adapter rule in `AGENTS.md` or a minimal safe Codex config
63
141
  change; do not copy personal style, identities, credentials, or long
64
142
  global sections.
65
- 4. Compare skills:
143
+ 4. Compare every skill and distributed support file:
66
144
  - Important repo/domain/workflow skills from `.claude/skills/` belong in
67
145
  `.agents/skills/`.
68
146
  - Keep each `SKILL.md` and its support files together.
69
147
  - Do not copy skills into `.codex/skills/`.
70
148
  - Leave clearly Claude-only setup, hook, or personal/meta skills out unless
71
149
  the user explicitly wants them ported.
72
- - Translate Claude-specific model delegation instead of copying it
73
- literally (tier mapping per your routing doctrine; if the repo carries a
74
- Codex mirror table in `AGENTS.md`, keep it in sync). In particular, Claude `Agent` dispatches with
75
- `model: sonnet` should become Codex `spawn_agent` dispatches with the
76
- appropriate `agent_type`; for mechanical coding/git work use a `worker`
77
- subagent with `model: gpt-5.4-mini` and `reasoning_effort: low` unless the
78
- source skill gives a stronger task-specific reason. Claude `opus` /
79
- judgment-tier dispatches (subtle logic, review/verify verdicts) map to
80
- `model: gpt-5.5` with `reasoning_effort: high` (verdicts never below
81
- high). Translate Claude `effort:` params to the nearest
82
- `reasoning_effort` value (`minimal|low|medium|high|xhigh`; Claude `max`
83
- → `xhigh`). Keep user gates, security judgment, and approval decisions
84
- in the main thread.
150
+ - Translate Claude-specific delegation rather than copying it literally.
151
+ Apply the Model routing section above only when an explicit custom-agent
152
+ override is justified; otherwise preserve inherited parent configuration.
85
153
  - Keep dual-surface generic/vendored skill bodies content-synced. When a
86
154
  Codex mirror must intentionally differ from the Claude source, bracket the
87
155
  source region and the Codex replacement with a matching transform marker
@@ -111,36 +179,30 @@ Codex adapter side:
111
179
  `chaseai-yt/grill-me-codex`, `docs/agents/skills/grill-with-docs-codex.md`)
112
180
  is not an escalation target and must NOT be rewritten — rewriting it would
113
181
  break attribution/a real link.
114
- 5. Validate Codex skill frontmatter:
115
- - `name` and `description` are required.
116
- - Quote `description` when it contains colons, arrows, commas, or other
117
- YAML-sensitive punctuation.
118
- - Keep `description` under 1024 characters.
119
- - Keep trigger detail in the body if the original Claude description is too
120
- long.
121
- 6. Compare agents:
122
- - Claude agents are `.md` files under `.claude/agents/`.
123
- - Codex agents are `.toml` files under `.codex/agents/`.
124
- - Convert agent instruction bodies into `developer_instructions`.
125
- - If no Claude agents exist, keep only a short README or no-op note.
126
- 7. Compare config and ignore rules:
127
- - Keep `.codex/config.toml` minimal and safe.
128
- - Never add secrets, provider credentials, auth tokens, or local personal
129
- overrides.
130
- - Ensure `.gitignore` excludes local Codex state and override files while
131
- allowing checked-in project config, agents, and skills.
132
- 8. Before edits, show the exact files that will be created or changed.
133
- 9. After edits, validate:
134
- - `.codex/config.toml` parses as TOML.
135
- - All `.agents/skills/*/SKILL.md` files load without Codex warnings.
136
- - No skill description exceeds 1024 characters.
137
- - `.codex/config.toml`, `.codex/agents/*.toml`, and `.agents/skills/**`
138
- are not accidentally ignored.
139
- 10. Prepare the branch for review:
140
- - Commit the adapter changes on the worktree branch after checking for
141
- secrets and ignored files.
142
- - Push the branch and create or update a PR.
143
- - Report the PR URL, changed files, skipped items, and verification results.
182
+ 5. Compare agents, hooks, config, and ignore rules:
183
+ - Claude agents are `.md`; Codex custom agents are `.toml` and must satisfy
184
+ Custom-agent validation.
185
+ - Classify each Claude hook behavior using the Inventory contract and check
186
+ Codex hook targets at every active trusted config layer.
187
+ - Keep `.codex/config.toml` minimal and safe. Never add secrets, provider
188
+ credentials, auth tokens, or local personal overrides.
189
+ - Ensure ignore rules exclude local Codex state and override files while
190
+ allowing checked-in config, agents, hooks, skills, and support files.
191
+ 6. In Audit mode, run every read-only Validation step that the checkout
192
+ supports and report the proposed file changes without mutating anything.
193
+ 7. In Apply mode, show the exact files to create or change before editing, make
194
+ only those changes, then run the complete Validation section. Prepare the
195
+ existing worktree branch for review: check for secrets and ignored files,
196
+ commit the adapter changes, push, and create or update its PR.
197
+
198
+ Codex skill frontmatter must also satisfy these repository rules:
199
+
200
+ - `name` and `description` are required.
201
+ - Quote `description` when it contains colons, arrows, commas, or other
202
+ YAML-sensitive punctuation.
203
+ - Enforce the Validation section's named description safeguard.
204
+ - Keep trigger detail in the body if the original Claude description is too
205
+ long.
144
206
 
145
207
  ## Output
146
208
 
@@ -1,8 +1,37 @@
1
1
  {
2
2
  "schema_version": 1,
3
3
  "description": "Public skill classification and publishing SSOT.",
4
+ "readiness": {
5
+ "contractVersion": 1,
6
+ "capabilities": {
7
+ "issueTracker": { "evidence": { "type": "sentinel", "paths": ["docs/agents/issue-tracker.md"], "allowLegacy": true } },
8
+ "triageLabels": { "evidence": { "type": "sentinel", "paths": ["docs/agents/triage-labels.md"], "allowLegacy": true } },
9
+ "managedBoard": { "allowNotApplicable": true, "evidence": { "type": "board-profile", "paths": ["docs/agents/board-sync.md"] } },
10
+ "specCompleteness": { "evidence": { "type": "sentinel", "paths": ["docs/conventions/spec-completeness.md"], "allowLegacy": true } },
11
+ "localCiRecipe": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/local-ci.md"], "allowLegacy": true } },
12
+ "projectReleaseProfile": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "validator": "project-release" } },
13
+ "securityAuditRunbook": { "evidence": { "type": "runbook-reference", "paths": ["docs/agents/skills/security-audit.md"], "allowLegacy": true } },
14
+ "prodTarget": { "evidence": { "type": "prod-section", "paths": ["CLAUDE.md", "AGENTS.md"] } },
15
+ "orchestrateWaveRecipe": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/orchestrate-wave.md"], "allowLegacy": true } },
16
+ "specCritiqueLayer": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/spec-self-critique.md"], "allowLegacy": true } },
17
+ "codeReviewLayer": { "evidence": { "type": "sentinel", "paths": ["docs/agents/code-review.md"], "allowLegacy": true } },
18
+ "verifySpikeLayer": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/verify-spike.md"], "allowLegacy": true } },
19
+ "auditSkillsLayer": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/audit-skills.md"], "allowLegacy": true } },
20
+ "worktreeRecoveryLayer": { "evidence": { "type": "sentinel", "paths": ["docs/agents/skills/git-worktree-recover.md"], "allowLegacy": true } },
21
+ "domainDocs": { "evidence": { "type": "sentinel", "paths": ["docs/agents/domain.md"], "allowLegacy": true } },
22
+ "censusChoice": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["census"] } },
23
+ "memoryLifecycle": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["memoryLifecycle"] } },
24
+ "worktreeLifecycle": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["worktreeLifecycle"] } },
25
+ "workflowAdvisories": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["workflowAdvisories"] } },
26
+ "safetyGuardrails": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["safetyGuardrails"] } },
27
+ "workflowSummary": { "evidence": { "type": "nonempty", "paths": ["CLAUDE.md", "AGENTS.md"] } },
28
+ "locProfile": { "evidence": { "type": "json", "paths": ["docs/agents/max-lines-allowlist.json"] } },
29
+ "kitOriginHint": { "evidence": { "type": "json", "paths": ["docs/agents/workflow-capabilities.json"], "required": ["kitOriginHint"] } }
30
+ }
31
+ },
4
32
  "skills": {
5
33
  "to-prd": {
34
+ "readiness": { "required": ["issueTracker", "managedBoard"] },
6
35
  "class": "generic",
7
36
  "publish": true,
8
37
  "entryPoint": true,
@@ -13,6 +42,7 @@
13
42
  "provenance": "matt-pocock"
14
43
  },
15
44
  "to-issues": {
45
+ "readiness": { "required": ["issueTracker", "managedBoard", "specCompleteness"] },
16
46
  "class": "generic",
17
47
  "publish": true,
18
48
  "entryPoint": true,
@@ -51,6 +81,7 @@
51
81
  "provenance": "own"
52
82
  },
53
83
  "wrapup": {
84
+ "readiness": { "optionalBlocks": { "deployReport": "prodTarget" } },
54
85
  "class": "generic",
55
86
  "publish": true,
56
87
  "entryPoint": true,
@@ -61,6 +92,7 @@
61
92
  "provenance": "own"
62
93
  },
63
94
  "verify-spike": {
95
+ "readiness": { "optionalBlocks": { "projectPlacement": "verifySpikeLayer" } },
64
96
  "class": "generic",
65
97
  "publish": true,
66
98
  "entryPoint": true,
@@ -81,6 +113,7 @@
81
113
  "provenance": "own"
82
114
  },
83
115
  "spec-self-critique": {
116
+ "readiness": { "optionalBlocks": { "projectEnrichment": "specCritiqueLayer" } },
84
117
  "class": "generic",
85
118
  "publish": true,
86
119
  "surfaces": [
@@ -90,6 +123,7 @@
90
123
  "provenance": "own"
91
124
  },
92
125
  "code-review": {
126
+ "readiness": { "optionalBlocks": { "projectEnrichment": "codeReviewLayer" } },
93
127
  "class": "generic",
94
128
  "publish": true,
95
129
  "surfaces": [
@@ -118,6 +152,7 @@
118
152
  "provenance": "own"
119
153
  },
120
154
  "board-to-waves": {
155
+ "readiness": { "required": ["issueTracker", "managedBoard"] },
121
156
  "class": "generic",
122
157
  "publish": true,
123
158
  "entryPoint": true,
@@ -138,6 +173,7 @@
138
173
  "provenance": "own"
139
174
  },
140
175
  "to-waves": {
176
+ "readiness": { "required": ["issueTracker", "managedBoard", "specCompleteness"] },
141
177
  "class": "generic",
142
178
  "publish": true,
143
179
  "entryPoint": true,
@@ -187,6 +223,7 @@
187
223
  "provenance": "matt-pocock"
188
224
  },
189
225
  "triage": {
226
+ "readiness": { "required": ["issueTracker", "managedBoard", "triageLabels"] },
190
227
  "class": "vendored",
191
228
  "publish": true,
192
229
  "entryPoint": true,
@@ -327,6 +364,7 @@
327
364
  "provenance": "own"
328
365
  },
329
366
  "audit-skills": {
367
+ "readiness": { "optionalBlocks": { "projectChecks": "auditSkillsLayer" } },
330
368
  "class": "generic",
331
369
  "publish": true,
332
370
  "entryPoint": false,
@@ -337,6 +375,7 @@
337
375
  "provenance": "own"
338
376
  },
339
377
  "local-ci": {
378
+ "readiness": { "required": ["localCiRecipe"] },
340
379
  "class": "generic",
341
380
  "publish": true,
342
381
  "entryPoint": false,
@@ -347,6 +386,10 @@
347
386
  "provenance": "own"
348
387
  },
349
388
  "orchestrate-wave": {
389
+ "readiness": {
390
+ "required": ["issueTracker", "managedBoard"],
391
+ "optionalBlocks": { "projectRecipe": "orchestrateWaveRecipe" }
392
+ },
350
393
  "class": "generic",
351
394
  "publish": true,
352
395
  "entryPoint": true,
@@ -357,6 +400,7 @@
357
400
  "provenance": "own"
358
401
  },
359
402
  "git-worktree-recover": {
403
+ "readiness": { "optionalBlocks": { "projectRecovery": "worktreeRecoveryLayer" } },
360
404
  "class": "generic",
361
405
  "publish": true,
362
406
  "entryPoint": false,
@@ -367,6 +411,7 @@
367
411
  "provenance": "own"
368
412
  },
369
413
  "security-audit": {
414
+ "readiness": { "required": ["securityAuditRunbook"] },
370
415
  "class": "generic",
371
416
  "publish": true,
372
417
  "entryPoint": false,
@@ -388,6 +433,7 @@
388
433
  "provenance": "own"
389
434
  },
390
435
  "project-release": {
436
+ "readiness": { "required": ["projectReleaseProfile"] },
391
437
  "class": "generic",
392
438
  "publish": true,
393
439
  "entryPoint": true,
package/README.md CHANGED
@@ -348,6 +348,19 @@ concurrency-safe. Do not run manifest-mutating commands concurrently. Flags:
348
348
 
349
349
  ## Release notes
350
350
 
351
+ ### 0.30.0
352
+
353
+ - added: `.claude/skills/skill-manifest.json`
354
+ - added: `scripts/readiness.mjs`
355
+ - added: `src/lib/atomicWrite.mjs`
356
+ - added: `src/lib/manifest.mjs`
357
+ - added: `src/lib/sentinel.mjs`
358
+ - changed: `.agents/skills/codex-adapter-sync/SKILL.md`
359
+
360
+ ### 0.29.1
361
+
362
+ - Metadata-only release.
363
+
351
364
  ### 0.29.0
352
365
 
353
366
  - added: `scripts/codex-exec.sh`
@@ -1,5 +1,5 @@
1
1
  {
2
- "kitVersion": "0.29.0",
2
+ "kitVersion": "0.30.0",
3
3
  "files": [
4
4
  {
5
5
  "path": ".agents/skills/ask-matt/SKILL.md",
@@ -107,7 +107,7 @@
107
107
  "ownerSkill": "codex-adapter-sync",
108
108
  "surface": "codex",
109
109
  "installRole": "consumer",
110
- "sha256": "3a8ad73c4bfce8c01e561d2dc0c7f0e24d9ac85c1bb2c8c0194a2de278cd6a2d",
110
+ "sha256": "ae398e40308e6ad8d6091c418435e2dca8a4f67e526ab85efa88e8e57c0354c2",
111
111
  "mode": 420,
112
112
  "origin": "kit"
113
113
  },
@@ -2023,6 +2023,14 @@
2023
2023
  "mode": 420,
2024
2024
  "origin": "kit"
2025
2025
  },
2026
+ {
2027
+ "path": ".claude/skills/skill-manifest.json",
2028
+ "kind": "doc",
2029
+ "installRole": "consumer",
2030
+ "sha256": "290cc3e847a10cb10b4ecb17cf0d45be0f60f95e96b7a70417b3e8da0a32e23c",
2031
+ "mode": 420,
2032
+ "origin": "kit"
2033
+ },
2026
2034
  {
2027
2035
  "path": ".claude/skills/spec-self-critique/scenarios.md",
2028
2036
  "kind": "skill",
@@ -2575,6 +2583,14 @@
2575
2583
  "mode": 493,
2576
2584
  "origin": "kit"
2577
2585
  },
2586
+ {
2587
+ "path": "scripts/readiness.mjs",
2588
+ "kind": "script",
2589
+ "installRole": "consumer",
2590
+ "sha256": "f5e8bc2e724f72d1aa9f94c4f8d87b8f4d3f9843797cd6ae59f48e563dc7c7fb",
2591
+ "mode": 493,
2592
+ "origin": "kit"
2593
+ },
2578
2594
  {
2579
2595
  "path": "scripts/release-delta-guard.mjs",
2580
2596
  "kind": "script",
@@ -2727,6 +2743,22 @@
2727
2743
  "mode": 493,
2728
2744
  "origin": "kit"
2729
2745
  },
2746
+ {
2747
+ "path": "src/lib/atomicWrite.mjs",
2748
+ "kind": "script",
2749
+ "installRole": "consumer",
2750
+ "sha256": "dbb971617ae641127857341a02cc029f30633ab5ef0c6efff2bab27b95794a9f",
2751
+ "mode": 420,
2752
+ "origin": "kit"
2753
+ },
2754
+ {
2755
+ "path": "src/lib/manifest.mjs",
2756
+ "kind": "script",
2757
+ "installRole": "consumer",
2758
+ "sha256": "171eba2662054379c40c1c629110fa8e34353de72e136004b861b2ac6a4edc13",
2759
+ "mode": 420,
2760
+ "origin": "kit"
2761
+ },
2730
2762
  {
2731
2763
  "path": "src/lib/release-apply.mjs",
2732
2764
  "kind": "script",
@@ -2750,6 +2782,14 @@
2750
2782
  "sha256": "7d0a8da3740ed1eb79edb80f0eedb3cd1de47692d4886c6b119b39073a6468d1",
2751
2783
  "mode": 420,
2752
2784
  "origin": "kit"
2785
+ },
2786
+ {
2787
+ "path": "src/lib/sentinel.mjs",
2788
+ "kind": "script",
2789
+ "installRole": "consumer",
2790
+ "sha256": "f99d28d2053d55222650d2ca426509d3f56eec5ef70709bbf8c4a278bf80024e",
2791
+ "mode": 420,
2792
+ "origin": "kit"
2753
2793
  }
2754
2794
  ]
2755
2795
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikon85/agent-workflow-kit",
3
- "version": "0.29.0",
3
+ "version": "0.30.0",
4
4
  "description": "Portable AI-agent workflow skills (plan → execute → land → learn) for Claude Code & Codex — grilling, TDD, diagnosis, two-axis code review, cross-model Codex review, design & domain-modeling, plus a skill router (ask-matt). npx init/update/diff/uninstall.",
5
5
  "type": "module",
6
6
  "bin": {