@moreih29/nexus-core 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/agents/architect/body.md +7 -6
- package/agents/designer/body.md +3 -3
- package/agents/engineer/body.md +8 -8
- package/agents/postdoc/body.md +4 -4
- package/agents/researcher/body.md +4 -4
- package/agents/reviewer/body.md +2 -2
- package/agents/strategist/body.md +4 -4
- package/agents/tester/body.md +2 -2
- package/agents/writer/body.md +1 -1
- package/conformance/README.md +125 -0
- package/conformance/scenarios/full-plan-cycle.json +132 -0
- package/conformance/scenarios/task-deps-ordering.json +83 -0
- package/conformance/schema/fixture.schema.json +224 -0
- package/conformance/state-schemas/agent-tracker.schema.json +58 -0
- package/conformance/state-schemas/history.schema.json +124 -0
- package/conformance/state-schemas/plan.schema.json +72 -0
- package/conformance/state-schemas/runtime.schema.json +25 -0
- package/conformance/state-schemas/tasks.schema.json +93 -0
- package/conformance/tools/plan-decide.json +70 -0
- package/conformance/tools/plan-start.json +67 -0
- package/conformance/tools/task-add.json +73 -0
- package/conformance/tools/task-close.json +98 -0
- package/docs/behavioral-contracts.md +145 -0
- package/docs/consumer-implementation-guide.md +844 -0
- package/docs/nexus-layout.md +234 -0
- package/docs/nexus-state-overview.md +185 -0
- package/docs/nexus-tools-contract.md +427 -0
- package/manifest.json +126 -113
- package/package.json +5 -1
- package/schema/common.schema.json +0 -4
- package/schema/skill.schema.json +16 -1
- package/schema/vocabulary.schema.json +14 -9
- package/skills/nx-init/body.md +6 -9
- package/skills/nx-init/meta.yml +1 -0
- package/skills/nx-plan/body.md +14 -11
- package/skills/nx-plan/meta.yml +3 -0
- package/skills/nx-run/body.md +4 -4
- package/skills/nx-run/meta.yml +3 -0
- package/skills/nx-setup/body.md +9 -9
- package/skills/nx-setup/meta.yml +1 -0
- package/skills/nx-sync/meta.yml +1 -0
- package/vocabulary/capabilities.yml +58 -25
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"nexus_core_version": "0.
|
|
3
|
-
"nexus_core_commit": "
|
|
4
|
-
"schema_contract_version": "
|
|
2
|
+
"nexus_core_version": "0.2.0",
|
|
3
|
+
"nexus_core_commit": "166a3b29f2b5795b9df037442ddc5d2ae7e36e5a",
|
|
4
|
+
"schema_contract_version": "2.0",
|
|
5
5
|
"agents": [
|
|
6
6
|
{
|
|
7
7
|
"name": "architect",
|
|
@@ -17,29 +17,27 @@
|
|
|
17
17
|
"no_task_update"
|
|
18
18
|
],
|
|
19
19
|
"id": "architect",
|
|
20
|
-
"body_hash": "sha256:
|
|
20
|
+
"body_hash": "sha256:85f9a3de419f32cdae284436eb1d902bff19a2230c50fe3068ffc642949a63b7"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"name": "
|
|
24
|
-
"description": "
|
|
25
|
-
"task": "
|
|
26
|
-
"alias_ko": "
|
|
27
|
-
"category": "
|
|
28
|
-
"resume_tier": "
|
|
29
|
-
"model_tier": "
|
|
23
|
+
"name": "writer",
|
|
24
|
+
"description": "Technical writing — transforms research findings, code, and analysis into clear documents and presentations for the intended audience",
|
|
25
|
+
"task": "Technical writing, documentation, presentations",
|
|
26
|
+
"alias_ko": "라이터",
|
|
27
|
+
"category": "do",
|
|
28
|
+
"resume_tier": "bounded",
|
|
29
|
+
"model_tier": "standard",
|
|
30
30
|
"capabilities": [
|
|
31
|
-
"
|
|
32
|
-
"no_task_create",
|
|
33
|
-
"no_task_update"
|
|
31
|
+
"no_task_create"
|
|
34
32
|
],
|
|
35
|
-
"id": "
|
|
36
|
-
"body_hash": "sha256:
|
|
33
|
+
"id": "writer",
|
|
34
|
+
"body_hash": "sha256:2edd9bf52e537c446b5ebfaafab214ebaaad2491f019aa8534453bff3f1cd37b"
|
|
37
35
|
},
|
|
38
36
|
{
|
|
39
|
-
"name": "
|
|
40
|
-
"description": "
|
|
41
|
-
"task": "
|
|
42
|
-
"alias_ko": "
|
|
37
|
+
"name": "tester",
|
|
38
|
+
"description": "Testing and verification — tests, verifies, validates stability and security of implementations",
|
|
39
|
+
"task": "Testing, verification, security review",
|
|
40
|
+
"alias_ko": "테스터",
|
|
43
41
|
"category": "check",
|
|
44
42
|
"resume_tier": "ephemeral",
|
|
45
43
|
"model_tier": "standard",
|
|
@@ -47,14 +45,14 @@
|
|
|
47
45
|
"no_file_edit",
|
|
48
46
|
"no_task_create"
|
|
49
47
|
],
|
|
50
|
-
"id": "
|
|
51
|
-
"body_hash": "sha256:
|
|
48
|
+
"id": "tester",
|
|
49
|
+
"body_hash": "sha256:4dd04e1c93ff9c0c9fa6aebb60ece3f9719e82f9714b13feea01b6163633caec"
|
|
52
50
|
},
|
|
53
51
|
{
|
|
54
|
-
"name": "
|
|
55
|
-
"description": "
|
|
56
|
-
"task": "
|
|
57
|
-
"alias_ko": "
|
|
52
|
+
"name": "postdoc",
|
|
53
|
+
"description": "Research methodology and synthesis — designs investigation approach, evaluates evidence quality, writes synthesis documents",
|
|
54
|
+
"task": "Research methodology, evidence synthesis",
|
|
55
|
+
"alias_ko": "포닥",
|
|
58
56
|
"category": "how",
|
|
59
57
|
"resume_tier": "persistent",
|
|
60
58
|
"model_tier": "high",
|
|
@@ -63,22 +61,8 @@
|
|
|
63
61
|
"no_task_create",
|
|
64
62
|
"no_task_update"
|
|
65
63
|
],
|
|
66
|
-
"id": "
|
|
67
|
-
"body_hash": "sha256:
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "engineer",
|
|
71
|
-
"description": "Implementation — writes code, debugs issues, follows specifications from Lead and architect",
|
|
72
|
-
"task": "Code implementation, edits, debugging",
|
|
73
|
-
"alias_ko": "엔지니어",
|
|
74
|
-
"category": "do",
|
|
75
|
-
"resume_tier": "bounded",
|
|
76
|
-
"model_tier": "standard",
|
|
77
|
-
"capabilities": [
|
|
78
|
-
"no_task_create"
|
|
79
|
-
],
|
|
80
|
-
"id": "engineer",
|
|
81
|
-
"body_hash": "sha256:79ce728ef86027c3301b26454ae5e1ed2db58cf4ce812521df4f6473661e3cd3"
|
|
64
|
+
"id": "postdoc",
|
|
65
|
+
"body_hash": "sha256:da9b8c2568b8b5812abed6d6324139f814379d48dc63cdc5d0b5b263f5407814"
|
|
82
66
|
},
|
|
83
67
|
{
|
|
84
68
|
"name": "researcher",
|
|
@@ -93,13 +77,13 @@
|
|
|
93
77
|
"no_task_create"
|
|
94
78
|
],
|
|
95
79
|
"id": "researcher",
|
|
96
|
-
"body_hash": "sha256:
|
|
80
|
+
"body_hash": "sha256:7f5db3b52ae76a3b3214cf73b076980e15ef85c80b9aa86a9704f737e4b13251"
|
|
97
81
|
},
|
|
98
82
|
{
|
|
99
|
-
"name": "
|
|
100
|
-
"description": "
|
|
101
|
-
"task": "
|
|
102
|
-
"alias_ko": "
|
|
83
|
+
"name": "strategist",
|
|
84
|
+
"description": "Business strategy — evaluates market positioning, competitive landscape, and business viability of decisions",
|
|
85
|
+
"task": "Business strategy, market analysis, competitive positioning",
|
|
86
|
+
"alias_ko": "전략가",
|
|
103
87
|
"category": "how",
|
|
104
88
|
"resume_tier": "persistent",
|
|
105
89
|
"model_tier": "high",
|
|
@@ -108,14 +92,14 @@
|
|
|
108
92
|
"no_task_create",
|
|
109
93
|
"no_task_update"
|
|
110
94
|
],
|
|
111
|
-
"id": "
|
|
112
|
-
"body_hash": "sha256:
|
|
95
|
+
"id": "strategist",
|
|
96
|
+
"body_hash": "sha256:0254b4144a22c66209bd68119553d9057a4fb7f9b1ff7ebb9878687d99583465"
|
|
113
97
|
},
|
|
114
98
|
{
|
|
115
|
-
"name": "
|
|
116
|
-
"description": "
|
|
117
|
-
"task": "
|
|
118
|
-
"alias_ko": "
|
|
99
|
+
"name": "reviewer",
|
|
100
|
+
"description": "Content verification — validates accuracy, checks facts, confirms grammar and format of non-code deliverables",
|
|
101
|
+
"task": "Content verification, fact-checking, grammar review",
|
|
102
|
+
"alias_ko": "리뷰어",
|
|
119
103
|
"category": "check",
|
|
120
104
|
"resume_tier": "ephemeral",
|
|
121
105
|
"model_tier": "standard",
|
|
@@ -123,51 +107,71 @@
|
|
|
123
107
|
"no_file_edit",
|
|
124
108
|
"no_task_create"
|
|
125
109
|
],
|
|
126
|
-
"id": "
|
|
127
|
-
"body_hash": "sha256:
|
|
110
|
+
"id": "reviewer",
|
|
111
|
+
"body_hash": "sha256:f04d15249601b14046e7e40a4475defb289436c4474afbd89986964f8c3e7c2f"
|
|
128
112
|
},
|
|
129
113
|
{
|
|
130
|
-
"name": "
|
|
131
|
-
"description": "
|
|
132
|
-
"task": "
|
|
133
|
-
"alias_ko": "
|
|
114
|
+
"name": "engineer",
|
|
115
|
+
"description": "Implementation — writes code, debugs issues, follows specifications from Lead and architect",
|
|
116
|
+
"task": "Code implementation, edits, debugging",
|
|
117
|
+
"alias_ko": "엔지니어",
|
|
134
118
|
"category": "do",
|
|
135
119
|
"resume_tier": "bounded",
|
|
136
120
|
"model_tier": "standard",
|
|
137
121
|
"capabilities": [
|
|
138
122
|
"no_task_create"
|
|
139
123
|
],
|
|
140
|
-
"id": "
|
|
141
|
-
"body_hash": "sha256:
|
|
124
|
+
"id": "engineer",
|
|
125
|
+
"body_hash": "sha256:3d58b1b490c2f93cace2eedd0f04ec000f84514388eb086768cf53f8fa33db01"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "designer",
|
|
129
|
+
"description": "UX/UI design — evaluates user experience, interaction patterns, and how users will experience the product",
|
|
130
|
+
"task": "UI/UX design, interaction patterns, user experience",
|
|
131
|
+
"alias_ko": "디자이너",
|
|
132
|
+
"category": "how",
|
|
133
|
+
"resume_tier": "persistent",
|
|
134
|
+
"model_tier": "high",
|
|
135
|
+
"capabilities": [
|
|
136
|
+
"no_file_edit",
|
|
137
|
+
"no_task_create",
|
|
138
|
+
"no_task_update"
|
|
139
|
+
],
|
|
140
|
+
"id": "designer",
|
|
141
|
+
"body_hash": "sha256:88ac56147d0e5bdf23fa591ce570a9c2d0eb1338df4ec2219f6238ddfcb65df4"
|
|
142
142
|
}
|
|
143
143
|
],
|
|
144
144
|
"skills": [
|
|
145
145
|
{
|
|
146
146
|
"name": "nx-run",
|
|
147
147
|
"description": "Execution — user-directed agent composition.",
|
|
148
|
+
"summary": "Execution — user-directed agent composition",
|
|
148
149
|
"triggers": [
|
|
149
150
|
"run"
|
|
150
151
|
],
|
|
152
|
+
"harness_docs_refs": [
|
|
153
|
+
"resume_invocation"
|
|
154
|
+
],
|
|
151
155
|
"id": "nx-run",
|
|
152
|
-
"body_hash": "sha256:
|
|
156
|
+
"body_hash": "sha256:6c8d1a36626d4034209ff83780dec6238297ec4710612441b2ef09daac714ca8"
|
|
153
157
|
},
|
|
154
158
|
{
|
|
155
|
-
"name": "nx-
|
|
156
|
-
"description": "
|
|
157
|
-
"
|
|
158
|
-
"
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"body_hash": "sha256:ab636e7c338b58e2288855c2a99ce079c53bb39f7adf3af3ce5769b5a32f73b1"
|
|
159
|
+
"name": "nx-plan",
|
|
160
|
+
"description": "Structured multi-perspective analysis to decompose issues, align on decisions, and produce an enriched plan before execution. Plan only — does not execute.",
|
|
161
|
+
"summary": "Structured planning — subagent-based analysis, deliberate decisions, produce execution plan",
|
|
162
|
+
"triggers": [
|
|
163
|
+
"plan"
|
|
164
|
+
],
|
|
165
|
+
"harness_docs_refs": [
|
|
166
|
+
"resume_invocation"
|
|
167
|
+
],
|
|
168
|
+
"id": "nx-plan",
|
|
169
|
+
"body_hash": "sha256:2e3f4fabb2961c052c4449f19ec16ed940394be037a63d4af90a3d12df8e4895"
|
|
167
170
|
},
|
|
168
171
|
{
|
|
169
172
|
"name": "nx-sync",
|
|
170
173
|
"description": "Context knowledge synchronization — scans project state and updates .nexus/context/ design documents",
|
|
174
|
+
"summary": "Context knowledge synchronization",
|
|
171
175
|
"triggers": [
|
|
172
176
|
"sync"
|
|
173
177
|
],
|
|
@@ -175,57 +179,66 @@
|
|
|
175
179
|
"body_hash": "sha256:dbd3933c0474b2831a857308d9dd6ccd2c072f089327c22ce8d2842894fc3216"
|
|
176
180
|
},
|
|
177
181
|
{
|
|
178
|
-
"name": "nx-
|
|
179
|
-
"description": "
|
|
180
|
-
"
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
"
|
|
184
|
-
|
|
182
|
+
"name": "nx-init",
|
|
183
|
+
"description": "Project onboarding — scan, mission, essentials, context generation",
|
|
184
|
+
"summary": "Project onboarding — scan, mission, essentials, context generation",
|
|
185
|
+
"manual_only": true,
|
|
186
|
+
"id": "nx-init",
|
|
187
|
+
"body_hash": "sha256:11761d37bad2fb30ef1d562d22d9a395e27e0c3ce58ea42ad3b1799f47bf8950"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "nx-setup",
|
|
191
|
+
"description": "Interactive project setup wizard for Nexus configuration.",
|
|
192
|
+
"summary": "Interactive Nexus configuration wizard",
|
|
193
|
+
"manual_only": true,
|
|
194
|
+
"id": "nx-setup",
|
|
195
|
+
"body_hash": "sha256:e66b0116d5da403c6480876a5b0a575110bcd26ecaa30079ce17de64fc112e65"
|
|
185
196
|
}
|
|
186
197
|
],
|
|
187
198
|
"vocabulary": {
|
|
188
199
|
"capabilities": [
|
|
189
200
|
{
|
|
190
201
|
"id": "no_file_edit",
|
|
191
|
-
"description": "Agent cannot create or
|
|
192
|
-
"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
"
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
"patch",
|
|
202
|
-
"multiedit"
|
|
203
|
-
]
|
|
204
|
-
}
|
|
202
|
+
"description": "Agent cannot create, modify, or delete files in the user's workspace.",
|
|
203
|
+
"intent": "workspace_write_denial",
|
|
204
|
+
"blocks_semantic_classes": [
|
|
205
|
+
"file_creation",
|
|
206
|
+
"file_modification",
|
|
207
|
+
"file_deletion",
|
|
208
|
+
"partial_file_edit",
|
|
209
|
+
"structured_document_edit"
|
|
210
|
+
],
|
|
211
|
+
"prose_guidance": "Block any tool whose primary effect is to alter content at a workspace\nfile path. This includes: creating new files at arbitrary paths, rewriting\nwhole file contents, applying partial edits (diffs, patches, find-replace,\nmulti-edit batches), deleting or truncating files, and cell-level edits in\nstructured documents such as notebooks.\nRead-only operations are NOT blocked: reading file contents, querying\nmetadata, listing directories, and running code-intelligence queries that\ndo not mutate files.\n"
|
|
205
212
|
},
|
|
206
213
|
{
|
|
207
214
|
"id": "no_task_create",
|
|
208
|
-
"description": "Agent cannot create new tasks in the Nexus task pipeline",
|
|
209
|
-
"
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
"nx_task_add"
|
|
215
|
-
]
|
|
216
|
-
}
|
|
215
|
+
"description": "Agent cannot create new tasks in the Nexus task pipeline.",
|
|
216
|
+
"intent": "task_pipeline_append_denial",
|
|
217
|
+
"blocks_semantic_classes": [
|
|
218
|
+
"nexus_task_creation"
|
|
219
|
+
],
|
|
220
|
+
"prose_guidance": "Block any tool that appends a new task to the Nexus task pipeline (the\nmechanism by which Lead-owned work is enqueued for execution). Tools that\nread, list, or query existing tasks are NOT blocked. Tools that modify\nexisting task state belong to a separate capability (no_task_update) and\nare not governed here.\n"
|
|
217
221
|
},
|
|
218
222
|
{
|
|
219
223
|
"id": "no_task_update",
|
|
220
|
-
"description": "Agent cannot update the state of existing Nexus tasks",
|
|
221
|
-
"
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
224
|
+
"description": "Agent cannot update the state of existing Nexus tasks.",
|
|
225
|
+
"intent": "task_pipeline_mutate_denial",
|
|
226
|
+
"blocks_semantic_classes": [
|
|
227
|
+
"nexus_task_state_transition",
|
|
228
|
+
"nexus_task_metadata_modification"
|
|
229
|
+
],
|
|
230
|
+
"prose_guidance": "Block any tool that mutates an existing Nexus task: changing its status,\nediting its description, reassigning ownership, closing it, or modifying\nany field on its record. Tools that read, list, or query tasks are NOT\nblocked. Creation of new tasks is governed by no_task_create, not here.\n"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id": "no_shell_exec",
|
|
234
|
+
"description": "Agent cannot execute arbitrary shell commands or spawn subprocesses.",
|
|
235
|
+
"intent": "shell_execution_denial",
|
|
236
|
+
"blocks_semantic_classes": [
|
|
237
|
+
"shell_command_exec",
|
|
238
|
+
"subprocess_spawn",
|
|
239
|
+
"interactive_shell_session"
|
|
240
|
+
],
|
|
241
|
+
"prose_guidance": "Block any tool whose primary effect is to run a command-line invocation,\nshell script, or spawn a subprocess on the user's machine. This includes\ngeneral-purpose shell runners, background process managers, shell output\nreaders, and shell-session kill operations. Tools that read files, query\nmetadata, or call specialized non-shell APIs (HTTP, language-server\nqueries, sandboxed code evaluators that do not spawn user-machine\nprocesses) are NOT blocked.\n"
|
|
229
242
|
}
|
|
230
243
|
],
|
|
231
244
|
"categories": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moreih29/nexus-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Nexus ecosystem Authoring layer — canonical prompts, neutral metadata, and vocabulary shared by Nexus harnesses",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
"./skills/*": "./skills/*",
|
|
18
18
|
"./vocabulary/*": "./vocabulary/*",
|
|
19
19
|
"./schema/*": "./schema/*",
|
|
20
|
+
"./conformance/*": "./conformance/*",
|
|
21
|
+
"./docs/*": "./docs/*",
|
|
20
22
|
"./manifest.json": "./manifest.json"
|
|
21
23
|
},
|
|
22
24
|
"files": [
|
|
@@ -24,6 +26,8 @@
|
|
|
24
26
|
"skills",
|
|
25
27
|
"vocabulary",
|
|
26
28
|
"schema",
|
|
29
|
+
"conformance",
|
|
30
|
+
"docs",
|
|
27
31
|
"manifest.json"
|
|
28
32
|
],
|
|
29
33
|
"engines": {
|
package/schema/skill.schema.json
CHANGED
|
@@ -15,7 +15,22 @@
|
|
|
15
15
|
"items": { "$ref": "common.schema.json#/$defs/id" }
|
|
16
16
|
},
|
|
17
17
|
"alias_ko": { "type": "string" },
|
|
18
|
-
"manual_only": {
|
|
18
|
+
"manual_only": {
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"default": false,
|
|
21
|
+
"description": "When true, this skill MUST NOT be auto-invoked by the LLM from natural language inference. Only explicit user-initiated triggers (slash command or bracket tag typed by the user) may activate it."
|
|
22
|
+
},
|
|
23
|
+
"summary": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 10,
|
|
26
|
+
"maxLength": 120,
|
|
27
|
+
"description": "Short one-line identity for UI/catalog rendering. Not a substitute for description."
|
|
28
|
+
},
|
|
29
|
+
"harness_docs_refs": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "type": "string", "minLength": 1 },
|
|
32
|
+
"description": "List of harness-specific documentation keys that consumers should surface when rendering this skill. Keys reference entries in a consumer-local harness-docs directory."
|
|
33
|
+
}
|
|
19
34
|
},
|
|
20
35
|
"allOf": [
|
|
21
36
|
{
|
|
@@ -6,18 +6,23 @@
|
|
|
6
6
|
"capabilityEntry": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
|
9
|
-
"required": ["id", "description", "
|
|
9
|
+
"required": ["id", "description", "intent", "blocks_semantic_classes", "prose_guidance"],
|
|
10
10
|
"properties": {
|
|
11
11
|
"id": { "$ref": "common.schema.json#/$defs/id" },
|
|
12
12
|
"description": { "$ref": "common.schema.json#/$defs/description" },
|
|
13
|
-
"
|
|
14
|
-
"type": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
"intent": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"minLength": 1,
|
|
16
|
+
"pattern": "^[a-z][a-z0-9_]*$"
|
|
17
|
+
},
|
|
18
|
+
"blocks_semantic_classes": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"minItems": 1,
|
|
21
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" }
|
|
22
|
+
},
|
|
23
|
+
"prose_guidance": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 40
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
},
|
package/skills/nx-init/body.md
CHANGED
|
@@ -7,7 +7,7 @@ Scans the project and builds Nexus knowledge in the flat .nexus/ structure. On f
|
|
|
7
7
|
- NEVER modify source code. Slimming down CLAUDE.md beyond the project section is not this skill's responsibility.
|
|
8
8
|
- NEVER infer or guess information that cannot be confirmed from code — do not write it to context/.
|
|
9
9
|
- NEVER store secrets (API keys, credentials, etc.) in knowledge files.
|
|
10
|
-
- NEVER overwrite existing files without `--reset`. On resume, preserve existing files.
|
|
10
|
+
- NEVER overwrite existing files without `--reset`. On resume, preserve existing files intact.
|
|
11
11
|
- Project section in CLAUDE.md MUST go through user confirmation before writing.
|
|
12
12
|
- NEVER reference or create identity/, codebase/, reference/, or core/ paths.
|
|
13
13
|
- Essentials section MUST NOT exceed 10 lines. If more items are needed, move lower-priority ones to .nexus/context/.
|
|
@@ -51,12 +51,9 @@ Show backup directory list, let user select backups to delete.
|
|
|
51
51
|
```
|
|
52
52
|
IF --reset --cleanup flag:
|
|
53
53
|
Show list of .nexus/bak.*/ directories
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
options: [...backup list..., { label: "Cancel", description: "Exit without changes" }]
|
|
58
|
-
}]
|
|
59
|
-
})
|
|
54
|
+
Prompt user with options (using the harness's interactive prompt mechanism):
|
|
55
|
+
question: "Select a backup to delete (or cancel)"
|
|
56
|
+
options: [...backup list..., { label: "Cancel", description: "Exit without changes" }]
|
|
60
57
|
Delete selected backup and exit
|
|
61
58
|
|
|
62
59
|
ELSE IF --reset flag:
|
|
@@ -79,7 +76,7 @@ ELSE:
|
|
|
79
76
|
|
|
80
77
|
Auto-detect code structure and tech stack. Create the flat `.nexus/` directory structure if it does not exist.
|
|
81
78
|
|
|
82
|
-
Create directories (using
|
|
79
|
+
Create directories (using shell command execution):
|
|
83
80
|
- `.nexus/memory/`
|
|
84
81
|
- `.nexus/context/`
|
|
85
82
|
- `.nexus/state/`
|
|
@@ -165,7 +162,7 @@ On completion: "context knowledge N files generated"
|
|
|
165
162
|
Check whether team custom rules are needed.
|
|
166
163
|
|
|
167
164
|
```
|
|
168
|
-
|
|
165
|
+
prompt_user({
|
|
169
166
|
questions: [{
|
|
170
167
|
question: "Do you want to set up development rules now?",
|
|
171
168
|
options: [
|
package/skills/nx-init/meta.yml
CHANGED
package/skills/nx-plan/body.md
CHANGED
|
@@ -8,7 +8,7 @@ Facilitate structured multi-perspective analysis using subagents to decompose is
|
|
|
8
8
|
- NEVER call `nx_plan_start` before research is complete (research_summary is required)
|
|
9
9
|
- NEVER present multiple issues at once — one issue at a time only
|
|
10
10
|
- NEVER ask groundless questions — always research code/knowledge/decisions first
|
|
11
|
-
- NEVER use
|
|
11
|
+
- NEVER use the harness's team creation primitive. Inter-agent messaging for resume is permitted ONLY for resuming completed subagents whose `resume_tier` is `persistent` or `bounded`, and ONLY within the constraints of the Resume Policy section below. Direct inter-agent communication to running teammates remains forbidden in plan sessions.
|
|
12
12
|
- MUST record all decisions with `[d]` tag so they are not scattered across turns
|
|
13
13
|
- MUST call `nx_plan_decide` when recording `[d]`
|
|
14
14
|
- MUST check for existing plan.json before starting a new session
|
|
@@ -50,7 +50,7 @@ When triggered with `[plan:auto]` or invoked via `Skill({ args: "auto" })`, run
|
|
|
50
50
|
5. **Plan document** — generate tasks.json following Step 7 rules (including HOW-assisted decomposition if `how_agents` present in plan.json issues). Apply owner table and verification auto-pairing.
|
|
51
51
|
|
|
52
52
|
Key differences from interactive mode:
|
|
53
|
-
- No
|
|
53
|
+
- No user prompts or comparison tables — Lead decides autonomously
|
|
54
54
|
- No dynamic agenda proposals — Lead handles all derived issues internally
|
|
55
55
|
- Output: tasks.json ready for `[run]` execution
|
|
56
56
|
|
|
@@ -87,7 +87,7 @@ Determine planning depth and identify which HOW subagents to delegate analysis t
|
|
|
87
87
|
|
|
88
88
|
Understand code, core knowledge, and prior decisions before forming a planning agenda.
|
|
89
89
|
|
|
90
|
-
**Start by checking existing knowledge**: before spawning any subagent, use
|
|
90
|
+
**Start by checking existing knowledge**: before spawning any subagent, use file pattern search and file reading to scan `.nexus/memory/` and `.nexus/context/` for relevant memos and context files, and use `nx_history_search` to check for prior decisions on this topic. If the needed information is already there, use it directly and skip or narrow the subagent spawn. Only spawn subagents to fill gaps not covered by existing knowledge.
|
|
91
91
|
|
|
92
92
|
**Approach selection:**
|
|
93
93
|
|
|
@@ -154,7 +154,7 @@ For each issue:
|
|
|
154
154
|
|
|
155
155
|
## Resume Policy
|
|
156
156
|
|
|
157
|
-
When
|
|
157
|
+
When the harness's resume mechanism is unavailable, ALL resume paths are disabled — force fresh spawn. Otherwise:
|
|
158
158
|
|
|
159
159
|
| resume_tier | Same-issue default | Cross-issue | Disqualifiers |
|
|
160
160
|
|---|---|---|---|
|
|
@@ -211,7 +211,7 @@ All issues decided → generate the plan document (tasks.json) immediately:
|
|
|
211
211
|
- `deps` — task dependencies based on execution order
|
|
212
212
|
- `owner` — assign based on delegation analysis:
|
|
213
213
|
|
|
214
|
-
|
|
|
214
|
+
| Work type | owner | Criteria |
|
|
215
215
|
|-----------|-------|----------|
|
|
216
216
|
| Single file, small change | **lead** | Subagent overhead > task effort |
|
|
217
217
|
| Code implementation (.ts, .js, .py, etc.) | **engineer** | Source code creation/modification |
|
|
@@ -220,11 +220,14 @@ All issues decided → generate the plan document (tasks.json) immediately:
|
|
|
220
220
|
| Design analysis / review | **architect** etc. HOW | Technical trade-off judgment |
|
|
221
221
|
| Sequential edits to same file | **lead** | Parallel subagents risk conflict |
|
|
222
222
|
|
|
223
|
-
**Verification
|
|
224
|
-
-
|
|
225
|
-
-
|
|
223
|
+
**Verification auto-pairing** — create separate verification tasks:
|
|
224
|
+
- Any task with `owner: "engineer"` + `acceptance` field → pair a **tester** task (verify acceptance criteria)
|
|
225
|
+
- Any task with `owner: "writer"` → pair a **reviewer** task (verify deliverable)
|
|
226
226
|
- Paired verification tasks are linked via `deps` to the original task
|
|
227
|
-
|
|
227
|
+
|
|
228
|
+
**DO/CHECK decomposition principle**: DO category agents (engineer, writer, researcher) and CHECK category agents (tester, reviewer) operate on artifact-level scope and accumulate less per-task context than HOW category agents. When a task involves multiple independent artifacts (several files, several verification targets, multiple research questions), decompose the task across multiple parallel DO/CHECK subagents rather than bundling them into a single subagent. Single-subagent bundles risk context exhaustion with no wall-clock benefit over parallel decomposition. HOW agents benefit from consolidated context and should generally remain as single sessions. Task granularity is assessed per-task by the plan author, not declared per-agent in meta.yml.
|
|
229
|
+
|
|
230
|
+
4. **Populate tasks.json** via `nx_task_add`:
|
|
228
231
|
- Set `goal` from the plan topic
|
|
229
232
|
- Set `decisions` from plan.json decided summaries
|
|
230
233
|
- Call `nx_task_add(plan_issue=N, approach, acceptance, risk, owner)` for each task
|
|
@@ -292,8 +295,8 @@ Proceed with `[run]` to execute.
|
|
|
292
295
|
```
|
|
293
296
|
|
|
294
297
|
- **Create**: `nx_plan_start(topic, issues, research_summary)` — called in Step 3; auto-archives any existing plan.json
|
|
295
|
-
- **
|
|
296
|
-
- **Update**: `nx_plan_update(action, ...)` — add/remove/
|
|
298
|
+
- **Status**: `nx_plan_status()` — check current issue state + decisions
|
|
299
|
+
- **Update**: `nx_plan_update(action, ...)` — add/remove/modify/reopen issues
|
|
297
300
|
- **Decide**: `nx_plan_decide(issue_id, summary)` — marks issue as `decided`, writes decision inline
|
|
298
301
|
- **File presence = session in progress**
|
|
299
302
|
|
package/skills/nx-plan/meta.yml
CHANGED
|
@@ -2,6 +2,9 @@ name: nx-plan
|
|
|
2
2
|
description: Structured multi-perspective analysis to decompose issues, align on
|
|
3
3
|
decisions, and produce an enriched plan before execution. Plan only — does not
|
|
4
4
|
execute.
|
|
5
|
+
summary: "Structured planning — subagent-based analysis, deliberate decisions, produce execution plan"
|
|
5
6
|
triggers:
|
|
6
7
|
- plan
|
|
8
|
+
harness_docs_refs:
|
|
9
|
+
- resume_invocation
|
|
7
10
|
id: nx-plan
|
package/skills/nx-run/body.md
CHANGED
|
@@ -4,10 +4,10 @@ Execution norm that Lead follows when the user invokes the [run] tag. Composes s
|
|
|
4
4
|
|
|
5
5
|
## Constraints
|
|
6
6
|
|
|
7
|
-
- NEVER modify files via
|
|
7
|
+
- NEVER modify files via shell commands (sed, echo redirection, heredoc, tee, etc.) — always use the harness's dedicated file-editing primitives (gate enforced)
|
|
8
8
|
- NEVER terminate while pending tasks remain (Gate Stop nonstop)
|
|
9
9
|
- NEVER spawn a new branch without checking for main/master first
|
|
10
|
-
- MUST check tasks.json before executing — if absent,
|
|
10
|
+
- MUST check tasks.json before executing — if absent, generate the plan first
|
|
11
11
|
- MUST spawn subagents per-task based on owner field — Do not handle multi-task work as Lead solo when task count ≥ 2 or target files ≥ 2
|
|
12
12
|
- MUST NOT spawn parallel Engineers if their target files overlap — serialize instead
|
|
13
13
|
- MUST call nx_task_close before completing the cycle — archive plan+tasks to history.json
|
|
@@ -61,7 +61,7 @@ For each task, Lead chooses between fresh spawn and resume based on the `owner`'
|
|
|
61
61
|
2. If `ephemeral` → fresh spawn. Stop.
|
|
62
62
|
3. If `bounded` → check tasks.json history: did the same `owner` previously work on overlapping target files? If yes AND no intervening edits by other agents → resume candidate. Otherwise fresh. Always include "re-read target files before any modification" instruction in the resume prompt.
|
|
63
63
|
4. If `persistent` → resume by default if the same agent worked earlier in this run. Cross-task reuse allowed.
|
|
64
|
-
5. Before
|
|
64
|
+
5. Before attempting any resume, verify the harness's resume mechanism is available. If unavailable, fall back to fresh spawn silently — do NOT throw an error.
|
|
65
65
|
|
|
66
66
|
### Step 3: Verify (Lead + Check subagents)
|
|
67
67
|
|
|
@@ -142,7 +142,7 @@ ACCEPTANCE:
|
|
|
142
142
|
6. **SubagentStop escalation** — when a subagent stops with incomplete work, escalate through HOW diagnosis → re-delegation → user report. Max 1 cycle per task.
|
|
143
143
|
7. **Gate Stop nonstop** — cannot terminate while pending tasks exist
|
|
144
144
|
8. **Plan first** — if tasks.json is absent, nx-plan must run before Step 2
|
|
145
|
-
9. **No file modification via
|
|
145
|
+
9. **No file modification via shell commands** — sed, echo redirection, heredoc, tee, and similar shell-based file edits are prohibited. Always use the harness's dedicated file-editing primitives (gate enforced)
|
|
146
146
|
## State Management
|
|
147
147
|
|
|
148
148
|
`.nexus/state/tasks.json` — produced by nx-plan, managed via `nx_task_add`/`nx_task_update`. Gate Stop enforcement.
|