@christang/keel 5.1.1 → 5.1.2

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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 TanglmChris
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 TanglmChris
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,4 +1,4 @@
1
- <!-- keel:start version=5.1.1 -->
1
+ <!-- keel:start version=5.1.2 -->
2
2
  ## Keel Bootstrap
3
3
 
4
4
  - Start every session with `keel context`; OpenSpec artifacts and Git are the only durable authority — never native memory, goals, or transcripts.
@@ -1,166 +1,166 @@
1
- name: keel-spec-driven
2
- version: 1
3
- description: Keel OpenSpec workflow - proposal -> specs -> design -> executable tasks
4
- artifacts:
5
- - id: proposal
6
- generates: proposal.md
7
- description: Initial proposal document outlining the change
8
- template: proposal.md
9
- instruction: >
10
- Create the proposal document that establishes WHY this change is needed.
11
-
12
- Sections:
13
- - **Why**: 1-2 sentences on the problem or opportunity.
14
- - **What Changes**: Bullet list of changes. Mark breaking changes with **BREAKING**.
15
- - **Capabilities**: Identify new or modified specs.
16
- - **Impact**: Affected code, APIs, dependencies, systems, or risks.
17
-
18
- Keep it concise. Implementation details belong in design.md.
19
- requires: []
20
- - id: specs
21
- generates: specs/**/*.md
22
- description: Detailed specifications for the change
23
- template: spec.md
24
- instruction: >
25
- Create specification files that define WHAT the system should do.
26
-
27
- Create one spec file per capability listed in proposal.md.
28
-
29
- Delta operations use ## headers:
30
- - **ADDED Requirements**
31
- - **MODIFIED Requirements**
32
- - **REMOVED Requirements**
33
- - **RENAMED Requirements**
34
-
35
- Each requirement uses `### Requirement: <name>`.
36
- Each scenario uses exactly `#### Scenario: <name>` with WHEN/THEN bullets.
37
- requires:
38
- - proposal
39
- - id: design
40
- generates: design.md
41
- description: Technical design document with implementation details
42
- template: design.md
43
- instruction: >
44
- Create design.md when the change has cross-module behavior, external
45
- dependencies, data model changes, security/performance/migration
46
- complexity, or decisions that should be recorded before coding.
47
-
48
- Include context, goals/non-goals, decisions with rationale, risks and
49
- mitigations, migration/rollback notes when relevant, and open questions.
50
- Critical statements that affect scope, Acceptance, completion, or
51
- execution boundaries use D<n> for decisions, F<n> for verified facts,
52
- A<n> for assumptions, or Q<n> for unresolved questions. Record a basis
53
- for each; A/Q statements also name a resolution gate or durable owner.
54
- Ordinary narrative remains unnumbered.
55
- If authoring uncertainty or hidden-knowledge risk blocks design or task
56
- decisions, use risk-triggered deep alignment through
57
- `keel-align-expectations` before finalizing design.md or tasks.md; it
58
- is not an execution, review, or export gate. Domain reference guidance may identify hidden-knowledge
59
- assumptions that belong in design.md, specs, or tasks. Compressed recovery
60
- context belongs in durable OpenSpec artifacts or archive evidence, not
61
- `keel/HANDOFF.md`.
62
- When any task declares `Coupling: required`, complete the Coupled
63
- Iteration Contract with the coupled artifacts, invalidation triggers,
64
- required regeneration, final assertions, conflict authority, and
65
- baseline policy.
66
- requires:
67
- - proposal
68
- - id: tasks
69
- generates: tasks.md
70
- description: Implementation checklist with Keel execution contracts
71
- template: tasks.md
72
- instruction: >
73
- Create tasks.md as the implementation checklist and execution contract.
74
-
75
- Every executable task MUST be a checkbox authored in the compact v4 form
76
- from the template: Covers, Touch, Verify (Strategy plus ordered M<n>
77
- public checks), and an Evidence anchor with its Contract line, per-check
78
- results, semantic Review, and Blocker state. Omitted fields inherit
79
- versioned keel-task-capsule/v1 defaults: Owner is the current Keel
80
- agent, Mode is implementation, Read is the change artifacts plus
81
- discovered repository context, Acceptance derives from the resolved
82
- Covers authority, the Autonomy boundary is hard-stop, and Coupling is
83
- none. Exceptional boundaries are declared only when they differ from
84
- those defaults: Mode, extra Read paths, a task-specific Acceptance
85
- delta, Execution recommendation and Rationale, a pre-authorized
86
- fallback in the Autonomy boundary, Coupling with its Candidate Boundary
87
- and candidate Stop Rules, or extra Stop if limits.
88
- Compatible expanded v3 tasks compile through the same parser, but
89
- explicit legacy fields (including Commands or a Report section) must
90
- agree with the v4 defaults and conditional rules; contradictions fail
91
- with migration diagnostics, and newly authored tasks use only the
92
- compact form.
93
- Verify selects the least-cost strategy that still proves the resolved
94
- Acceptance: vertical-tdd, regression-first, characterization,
95
- snapshot-characterization, rendered-behavior, or evidence-first.
96
- Red-green strategies record per-label `.red` and `.green` Evidence for
97
- the same check before completion.
98
- The Task Authoring Gate requires every relevant critical expectation to
99
- be covered by a slice, deferred to a durable owner, or explicitly
100
- discarded with rationale before the slice can be selected for execution.
101
- Accepted hidden-knowledge assumptions from risk-triggered deep
102
- alignment or a domain reference are critical expectations when they
103
- affect completion definition or execution boundaries.
104
- Covers references the relevant D/F/A/Q identifiers. An unresolved Q<n>
105
- without an authorized fallback blocks implementation.
106
- A new or materially expanded dedicated skill remains non-executable until
107
- design or task evidence identifies authoritative sources, provenance and license
108
- implications, realistic positive and negative trigger cases, and
109
- required real-task evidence. Portable source authority and declared target
110
- projections must also be named when they affect Touch or Commands.
111
-
112
- Execution recommendation and Rationale are advisory notes for the current
113
- Keel agent. Keel-managed work executes in the current agent conversation;
114
- do not hand execution to another agent, subagent, or operator unless the
115
- selected task or user explicitly authorizes it.
116
- Autonomy boundary defaults to hard-stop. A pre-authorized fallback must
117
- state an exact reversible bound and the evidence required after use.
118
-
119
- Use `Coupling: none` by default. When `Coupling: required`, define one
120
- complete candidate, its allowed provisional failures, completion gate,
121
- final assertions, retry counting, immediate task-stop conditions, and
122
- evidence. The task must agree with design.md's Coupled Iteration Contract.
123
-
124
- `/opsx:apply` selects unchecked tasks from this file. The current agent may
125
- read any repository file needed for the selected task; Read lists required
126
- starting context, not a read allowlist. The Slice Start Gate requires each
127
- selected current slice or contiguous slice group to name source
128
- expectations and compile to a capsule whose Read, Touch, Acceptance,
129
- verification checks, and Stop/Autonomy boundaries are sufficient to
130
- execute without guessing. Rough
131
- future slices may remain drafts, but cannot be selected for
132
- implementation or marked complete. The current agent may only modify files
133
- listed under Touch for the selected task. If implementation requires files
134
- outside Touch, broader design work, or an interface/security boundary
135
- change not covered by design.md, stop and report an Out-of-scope Need.
136
- Before task completion, Evidence records the current agent's semantic
137
- Review with Status, Acceptance check, Scope check, and Findings. Findings
138
- are `none` or name a durable OpenSpec/archive owner or discard rationale;
139
- HANDOFF is never the owner.
140
- requires:
141
- - specs
142
- - design
143
- apply:
144
- requires:
145
- - tasks
146
- tracks: tasks.md
147
- instruction: |
148
- Use `/opsx:apply` as the implementation entry for Keel-managed work.
149
-
150
- Apply workflow:
151
- 1. Read the current change's proposal.md, specs, design.md when present, and tasks.md.
152
- 2. Select one unchecked task or a small contiguous group of unchecked tasks from tasks.md.
153
- 3. Run the Task Authoring Gate: every relevant critical expectation must be covered by a selected slice, deferred to a durable owner, or explicitly discarded with rationale.
154
- 4. Run the Slice Start Gate: every selected current slice must name source expectations and compile to a complete keel-task-capsule/v1 contract from its compact Covers, Touch, Verify, and Evidence fields plus any declared exceptional Mode, Read, Acceptance delta, Autonomy boundary, Coupling/Candidate Boundary, or Stop if clauses.
155
- 5. If a selected task lacks an execution contract, source expectations, or accepted hidden-knowledge assumptions raised by risk-triggered deep alignment or a domain reference, update OpenSpec first instead of dispatching implementation.
156
- 6. Rough future slices may remain non-executable drafts, but they cannot be selected for implementation or marked complete.
157
- 7. The current Keel agent remains task owner and executor. Treat any Execution recommendation as an advisory implementation note, not as a completion gate.
158
- 8. Do not hand Keel-managed execution to another agent, subagent, or operator unless the selected task or user explicitly authorizes it. Keep task selection, implementation, verification, and failure recovery in the current agent conversation.
159
- 9. Use the current checkout and selected task contract. Verification failure or context pressure preserves the checkout; continue from evidence, record a blocker, or explicitly roll back to last-green only when authorized.
160
- 10. When `Coupling: required`, verify design.md contains a Coupled Iteration Contract and that the task defines a complete candidate, completion gate, and evidence. If not, update OpenSpec instead of execution.
161
- 11. The current agent may read any repository file needed for the selected task, but repository-wide read authority is read-only and does not expand write authority.
162
- 12. Modify only files listed under Touch. If modifying any other file is required, stop and report an Out-of-scope Need with file or area, why needed, consequence if unchanged, minimal proposed change, and evidence.
163
- 13. Do not commit or push unless the selected task or human instruction explicitly allows it.
164
- 14. After each iteration, compare Changed Files and command evidence with the selected task contract before checking tasks complete.
165
- 15. Run `keel-review-checklist` only at completion gates: after a complete task group, before `/opsx:sync openspec/changes/<change>/tasks.md` or `/opsx:archive openspec/changes/<change>/tasks.md`, before meaningful handoff, or when implementation reports risks, follow-ups, or out-of-scope need. The Claude target's Keel Hook completion gate checks M-command evidence for these direct command paths.
166
- 16. Before archive or handoff, unresolved follow-ups must be owned by current OpenSpec tasks, a new OpenSpec change, archive evidence, or an explicit discard reason.
1
+ name: keel-spec-driven
2
+ version: 1
3
+ description: Keel OpenSpec workflow - proposal -> specs -> design -> executable tasks
4
+ artifacts:
5
+ - id: proposal
6
+ generates: proposal.md
7
+ description: Initial proposal document outlining the change
8
+ template: proposal.md
9
+ instruction: >
10
+ Create the proposal document that establishes WHY this change is needed.
11
+
12
+ Sections:
13
+ - **Why**: 1-2 sentences on the problem or opportunity.
14
+ - **What Changes**: Bullet list of changes. Mark breaking changes with **BREAKING**.
15
+ - **Capabilities**: Identify new or modified specs.
16
+ - **Impact**: Affected code, APIs, dependencies, systems, or risks.
17
+
18
+ Keep it concise. Implementation details belong in design.md.
19
+ requires: []
20
+ - id: specs
21
+ generates: specs/**/*.md
22
+ description: Detailed specifications for the change
23
+ template: spec.md
24
+ instruction: >
25
+ Create specification files that define WHAT the system should do.
26
+
27
+ Create one spec file per capability listed in proposal.md.
28
+
29
+ Delta operations use ## headers:
30
+ - **ADDED Requirements**
31
+ - **MODIFIED Requirements**
32
+ - **REMOVED Requirements**
33
+ - **RENAMED Requirements**
34
+
35
+ Each requirement uses `### Requirement: <name>`.
36
+ Each scenario uses exactly `#### Scenario: <name>` with WHEN/THEN bullets.
37
+ requires:
38
+ - proposal
39
+ - id: design
40
+ generates: design.md
41
+ description: Technical design document with implementation details
42
+ template: design.md
43
+ instruction: >
44
+ Create design.md when the change has cross-module behavior, external
45
+ dependencies, data model changes, security/performance/migration
46
+ complexity, or decisions that should be recorded before coding.
47
+
48
+ Include context, goals/non-goals, decisions with rationale, risks and
49
+ mitigations, migration/rollback notes when relevant, and open questions.
50
+ Critical statements that affect scope, Acceptance, completion, or
51
+ execution boundaries use D<n> for decisions, F<n> for verified facts,
52
+ A<n> for assumptions, or Q<n> for unresolved questions. Record a basis
53
+ for each; A/Q statements also name a resolution gate or durable owner.
54
+ Ordinary narrative remains unnumbered.
55
+ If authoring uncertainty or hidden-knowledge risk blocks design or task
56
+ decisions, use risk-triggered deep alignment through
57
+ `keel-align-expectations` before finalizing design.md or tasks.md; it
58
+ is not an execution, review, or export gate. Domain reference guidance may identify hidden-knowledge
59
+ assumptions that belong in design.md, specs, or tasks. Compressed recovery
60
+ context belongs in durable OpenSpec artifacts or archive evidence, not
61
+ `keel/HANDOFF.md`.
62
+ When any task declares `Coupling: required`, complete the Coupled
63
+ Iteration Contract with the coupled artifacts, invalidation triggers,
64
+ required regeneration, final assertions, conflict authority, and
65
+ baseline policy.
66
+ requires:
67
+ - proposal
68
+ - id: tasks
69
+ generates: tasks.md
70
+ description: Implementation checklist with Keel execution contracts
71
+ template: tasks.md
72
+ instruction: >
73
+ Create tasks.md as the implementation checklist and execution contract.
74
+
75
+ Every executable task MUST be a checkbox authored in the compact v4 form
76
+ from the template: Covers, Touch, Verify (Strategy plus ordered M<n>
77
+ public checks), and an Evidence anchor with its Contract line, per-check
78
+ results, semantic Review, and Blocker state. Omitted fields inherit
79
+ versioned keel-task-capsule/v1 defaults: Owner is the current Keel
80
+ agent, Mode is implementation, Read is the change artifacts plus
81
+ discovered repository context, Acceptance derives from the resolved
82
+ Covers authority, the Autonomy boundary is hard-stop, and Coupling is
83
+ none. Exceptional boundaries are declared only when they differ from
84
+ those defaults: Mode, extra Read paths, a task-specific Acceptance
85
+ delta, Execution recommendation and Rationale, a pre-authorized
86
+ fallback in the Autonomy boundary, Coupling with its Candidate Boundary
87
+ and candidate Stop Rules, or extra Stop if limits.
88
+ Compatible expanded v3 tasks compile through the same parser, but
89
+ explicit legacy fields (including Commands or a Report section) must
90
+ agree with the v4 defaults and conditional rules; contradictions fail
91
+ with migration diagnostics, and newly authored tasks use only the
92
+ compact form.
93
+ Verify selects the least-cost strategy that still proves the resolved
94
+ Acceptance: vertical-tdd, regression-first, characterization,
95
+ snapshot-characterization, rendered-behavior, or evidence-first.
96
+ Red-green strategies record per-label `.red` and `.green` Evidence for
97
+ the same check before completion.
98
+ The Task Authoring Gate requires every relevant critical expectation to
99
+ be covered by a slice, deferred to a durable owner, or explicitly
100
+ discarded with rationale before the slice can be selected for execution.
101
+ Accepted hidden-knowledge assumptions from risk-triggered deep
102
+ alignment or a domain reference are critical expectations when they
103
+ affect completion definition or execution boundaries.
104
+ Covers references the relevant D/F/A/Q identifiers. An unresolved Q<n>
105
+ without an authorized fallback blocks implementation.
106
+ A new or materially expanded dedicated skill remains non-executable until
107
+ design or task evidence identifies authoritative sources, provenance and license
108
+ implications, realistic positive and negative trigger cases, and
109
+ required real-task evidence. Portable source authority and declared target
110
+ projections must also be named when they affect Touch or Commands.
111
+
112
+ Execution recommendation and Rationale are advisory notes for the current
113
+ Keel agent. Keel-managed work executes in the current agent conversation;
114
+ do not hand execution to another agent, subagent, or operator unless the
115
+ selected task or user explicitly authorizes it.
116
+ Autonomy boundary defaults to hard-stop. A pre-authorized fallback must
117
+ state an exact reversible bound and the evidence required after use.
118
+
119
+ Use `Coupling: none` by default. When `Coupling: required`, define one
120
+ complete candidate, its allowed provisional failures, completion gate,
121
+ final assertions, retry counting, immediate task-stop conditions, and
122
+ evidence. The task must agree with design.md's Coupled Iteration Contract.
123
+
124
+ `/opsx:apply` selects unchecked tasks from this file. The current agent may
125
+ read any repository file needed for the selected task; Read lists required
126
+ starting context, not a read allowlist. The Slice Start Gate requires each
127
+ selected current slice or contiguous slice group to name source
128
+ expectations and compile to a capsule whose Read, Touch, Acceptance,
129
+ verification checks, and Stop/Autonomy boundaries are sufficient to
130
+ execute without guessing. Rough
131
+ future slices may remain drafts, but cannot be selected for
132
+ implementation or marked complete. The current agent may only modify files
133
+ listed under Touch for the selected task. If implementation requires files
134
+ outside Touch, broader design work, or an interface/security boundary
135
+ change not covered by design.md, stop and report an Out-of-scope Need.
136
+ Before task completion, Evidence records the current agent's semantic
137
+ Review with Status, Acceptance check, Scope check, and Findings. Findings
138
+ are `none` or name a durable OpenSpec/archive owner or discard rationale;
139
+ HANDOFF is never the owner.
140
+ requires:
141
+ - specs
142
+ - design
143
+ apply:
144
+ requires:
145
+ - tasks
146
+ tracks: tasks.md
147
+ instruction: |
148
+ Use `/opsx:apply` as the implementation entry for Keel-managed work.
149
+
150
+ Apply workflow:
151
+ 1. Read the current change's proposal.md, specs, design.md when present, and tasks.md.
152
+ 2. Select one unchecked task or a small contiguous group of unchecked tasks from tasks.md.
153
+ 3. Run the Task Authoring Gate: every relevant critical expectation must be covered by a selected slice, deferred to a durable owner, or explicitly discarded with rationale.
154
+ 4. Run the Slice Start Gate: every selected current slice must name source expectations and compile to a complete keel-task-capsule/v1 contract from its compact Covers, Touch, Verify, and Evidence fields plus any declared exceptional Mode, Read, Acceptance delta, Autonomy boundary, Coupling/Candidate Boundary, or Stop if clauses.
155
+ 5. If a selected task lacks an execution contract, source expectations, or accepted hidden-knowledge assumptions raised by risk-triggered deep alignment or a domain reference, update OpenSpec first instead of dispatching implementation.
156
+ 6. Rough future slices may remain non-executable drafts, but they cannot be selected for implementation or marked complete.
157
+ 7. The current Keel agent remains task owner and executor. Treat any Execution recommendation as an advisory implementation note, not as a completion gate.
158
+ 8. Do not hand Keel-managed execution to another agent, subagent, or operator unless the selected task or user explicitly authorizes it. Keep task selection, implementation, verification, and failure recovery in the current agent conversation.
159
+ 9. Use the current checkout and selected task contract. Verification failure or context pressure preserves the checkout; continue from evidence, record a blocker, or explicitly roll back to last-green only when authorized.
160
+ 10. When `Coupling: required`, verify design.md contains a Coupled Iteration Contract and that the task defines a complete candidate, completion gate, and evidence. If not, update OpenSpec instead of execution.
161
+ 11. The current agent may read any repository file needed for the selected task, but repository-wide read authority is read-only and does not expand write authority.
162
+ 12. Modify only files listed under Touch. If modifying any other file is required, stop and report an Out-of-scope Need with file or area, why needed, consequence if unchanged, minimal proposed change, and evidence.
163
+ 13. Do not commit or push unless the selected task or human instruction explicitly allows it.
164
+ 14. After each iteration, compare Changed Files and command evidence with the selected task contract before checking tasks complete.
165
+ 15. Run `keel-review-checklist` only at completion gates: after a complete task group, before `/opsx:sync openspec/changes/<change>/tasks.md` or `/opsx:archive openspec/changes/<change>/tasks.md`, before meaningful handoff, or when implementation reports risks, follow-ups, or out-of-scope need. The Claude target's Keel Hook completion gate checks M-command evidence for these direct command paths.
166
+ 16. Before archive or handoff, unresolved follow-ups must be owned by current OpenSpec tasks, a new OpenSpec change, archive evidence, or an explicit discard reason.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@christang/keel",
3
3
  "displayName": "Keel",
4
4
  "description": "Keel OpenSpec execution discipline CLI for Claude Code, Codex, and OpenCode.",
5
- "version": "5.1.1",
5
+ "version": "5.1.2",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keel",
3
- "version": "5.1.1",
3
+ "version": "5.1.2",
4
4
  "description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
5
5
  "author": {
6
6
  "name": "TanglmChris",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keel",
3
- "version": "5.1.1",
3
+ "version": "5.1.2",
4
4
  "description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
5
5
  "author": {
6
6
  "name": "TanglmChris",
@@ -1,30 +1,30 @@
1
- {
2
- "description": "Keel plugin hooks: non-blocking SessionStart projection and the manifest-gated PreToolUse write guard, both backed by the shared keel CLI contract.",
3
- "hooks": {
4
- "SessionStart": [
5
- {
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": "node",
10
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/session-start.js"],
11
- "timeout": 15
12
- }
13
- ]
14
- }
15
- ],
16
- "PreToolUse": [
17
- {
18
- "matcher": "Edit|Write|NotebookEdit",
19
- "hooks": [
20
- {
21
- "type": "command",
22
- "command": "node",
23
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/pretooluse-guard.js"],
24
- "timeout": 10
25
- }
26
- ]
27
- }
28
- ]
29
- }
30
- }
1
+ {
2
+ "description": "Keel plugin hooks: non-blocking SessionStart projection and the manifest-gated PreToolUse write guard, both backed by the shared keel CLI contract.",
3
+ "hooks": {
4
+ "SessionStart": [
5
+ {
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node",
10
+ "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/session-start.js"],
11
+ "timeout": 15
12
+ }
13
+ ]
14
+ }
15
+ ],
16
+ "PreToolUse": [
17
+ {
18
+ "matcher": "Edit|Write|NotebookEdit",
19
+ "hooks": [
20
+ {
21
+ "type": "command",
22
+ "command": "node",
23
+ "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/pretooluse-guard.js"],
24
+ "timeout": 10
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
30
+ }