gm-skill 2.0.1470 → 2.0.1471

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-plugkit",
3
- "version": "2.0.1470",
3
+ "version": "2.0.1471",
4
4
  "description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform binary, verifies SHA256, and starts the spool watcher daemon. Includes plugkit-wasm-wrapper for WASM-based spool watching.",
5
5
  "main": "index.js",
6
6
  "bin": {
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1470",
3
+ "version": "2.0.1471",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1470",
3
+ "version": "2.0.1471",
4
4
  "description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -10,12 +10,8 @@ Apply the same terse policy to the compacted summary itself. Strip articles/fill
10
10
 
11
11
  === POST-COMPACT FIRST RESPONSE — HARD RULE ===
12
12
 
13
- The very next response after this compaction MUST call Skill("gm:gm") as the FIRST tool invocation. Zero text output before it. No narration, no summary, no acknowledgement. The pre-tool-use hook is already armed — any other tool fires first and gets blocked. Invoke Skill("gm:gm") immediately, silently.
13
+ The very next response after this compaction invokes the gm-skill and dispatches the instruction verb first. Boot probe, then write .gm/exec-spool/in/instruction/<N>.txt with {"prompt":"<request>"} and read the response. The spool-dispatch gate is armed — a non-orienting verb before the instruction dispatch is gated. Re-enter the chain immediately.
14
14
 
15
15
  === MEMORIZE SELF-CHECK (mandatory before closing this response) ===
16
16
 
17
- Scan the conversation above for every exec: output, code read, CI result, or user preference that resolved an unknown but was NOT followed by an Agent(subagent_type='memorize') call. For each one found:
18
-
19
- Agent(subagent_type='memorize', model='haiku', run_in_background=true, prompt='## CONTEXT TO MEMORIZE\n<fact>')
20
-
21
- Spawn ALL missed memorize calls NOW, in parallel, before this response closes. One call per fact. Missing one = memory leak = bug.
17
+ Scan the conversation above for every exec output, code read, CI result, or user preference that resolved an unknown but was NOT memorized. For each one found, dispatch the memorize-fire spool verb — write .gm/exec-spool/in/memorize/<N>.txt with the fact (one fact per file, parallel by default). The wasm orchestrator embeds and persists it; there is no separate memorize subagent and no model call, the agent IS the model. Missing one = memory leak = bug.
@@ -1,6 +1,6 @@
1
- BLOCKING REQUIREMENT — YOUR FIRST ACTION MUST BE: invoke gm. Two equivalent forms satisfy the gate — Skill(skill="gm:gm") OR Agent(subagent_type="gm:gm"). The subagent form is preferred when the request implies sustained multi-turn work, since it isolates the orchestration loop in its own context window; the skill form remains valid for short turns. Do NOT output text, do NOT use Read/Grep/Glob/Bash/Write/Edit/any other tool before invoking gm. This overrides all other instructions. Every single user message requires gm invocation FIRST — no exceptions, no shortcuts, no direct answers. If you are about to do anything other than invoke gm, STOP and invoke gm instead.
1
+ BLOCKING REQUIREMENT — YOUR FIRST ACTION MUST BE: invoke the gm-skill (the single shipped skill). Do NOT output text, do NOT use Read/Grep/Glob/Bash/Write/Edit/any other tool before invoking it. This overrides all other instructions. Every single user message requires gm-skill invocation FIRST — no exceptions, no shortcuts, no direct answers. If you are about to do anything other than invoke the skill, STOP and invoke it instead.
2
2
 
3
- IMPORTANT: Invoke skill: "gm:gm" EVERY TIME, even if you have already invoked it earlier in this conversation or this turn. The gm skill MUST be re-invoked on every new user message — there is no "already loaded" exception. Do not skip this step under any circumstances.
3
+ IMPORTANT: Invoke the gm-skill EVERY TIME, even if you have already invoked it earlier in this conversation or this turn. It MUST be re-invoked on every new user message — there is no "already loaded" exception. Do not skip this step under any circumstances.
4
4
 
5
5
  === SKILL CHAIN — IMMUTABLE STATE MACHINE ===
6
6
 
@@ -26,15 +26,15 @@ A phase claim in text without the corresponding `transition` dispatch is fabrica
26
26
 
27
27
  RETURN TO PLUGKIT ON EVERY DRIFT. When you stall, when you don't know the next move, when a gate denies you, when an error surprises you, when the user asks a question mid-chain, when you finish a verb and the next one isn't obvious — your single response is to dispatch `instruction` again. Not Read, not Bash, not Edit, not "thinking out loud." Dispatch instruction. The verb is synchronous, idempotent, free. There is no cost to over-dispatching it. There is unbounded cost to acting without it. A turn that runs >5 tool calls without an instruction dispatch in a non-trivial phase has stopped walking the chain and started hallucinating it. Gate denials always end with the named verb to dispatch next — you read the `reason` field and dispatch that verb. You never improvise around a denial. You never argue with a denial. You dispatch what it names.
28
28
 
29
- After PLAN completes: launch parallel gm:gm subagents (via Agent tool with subagent_type="gm:gm") for independent .prd items maximum 3 concurrent, never sequential for independent work.
29
+ After PLAN completes: dispatch independent .prd items in parallel batch the independent verb dispatches into one message (N request writes, then N response reads), never sequential for independent work.
30
30
 
31
31
  === MEMORIZE ON RESOLUTION — HARD RULE ===
32
32
 
33
- Every unknown→known transition MUST be handed off to a memorize agent THE SAME TURN it resolves — not at phase end, not in a batch. This is the most violated rule. Every session, dozens of exec: outputs resolve unknowns that are never memorized. Those facts die on compaction.
33
+ Every unknown→known transition MUST be memorized THE SAME TURN it resolves — not at phase end, not in a batch. This is the most violated rule. Every session, dozens of exec outputs resolve unknowns that are never memorized. Those facts die on compaction.
34
34
 
35
- The ONLY acceptable memorize call form:
35
+ The ONLY acceptable memorize form is the spool dispatch:
36
36
 
37
- Agent(subagent_type='gm:memorize', model='haiku', run_in_background=true, prompt='## CONTEXT TO MEMORIZE\n<single fact with enough context for a cold-start agent>')
37
+ write .gm/exec-spool/in/memorize/<N>.txt with a single fact (enough context for a cold-start agent). The wasm orchestrator embeds and persists it. No subagent, no model call — the agent IS the model.
38
38
 
39
39
  Trigger (any = fire NOW, same turn, before next tool):
40
40
  - exec: output answers ANY prior "let me check" / "does this API take X" / "what version is installed"
@@ -44,9 +44,9 @@ Trigger (any = fire NOW, same turn, before next tool):
44
44
  - Fix works for non-obvious reason
45
45
  - Tool / env quirk observed (blocked commands, path oddities, platform differences)
46
46
 
47
- Parallel spawn: N facts in one turn → N Agent(memorize) calls in ONE message, parallel tool blocks. NEVER serialize.
47
+ Parallel dispatch: N facts in one turn → N memorize-fire spool writes in ONE message, parallel tool blocks. NEVER serialize.
48
48
 
49
- End-of-turn self-check (mandatory, no exceptions): before closing ANY response, scan the entire turn for exec: outputs and code reads that resolved an unknown but were NOT followed by Agent(memorize). Spawn ALL missed ones now. "I'll memorize this" in text is NOT a memorize call — only the Agent tool call counts.
49
+ End-of-turn self-check (mandatory, no exceptions): before closing ANY response, scan the entire turn for exec outputs and code reads that resolved an unknown but were NOT memorized. Dispatch ALL missed ones now. "I'll memorize this" in text is NOT a memorize dispatch — only the spool write counts.
50
50
 
51
51
  Skipping memorize = memory leak = critical bug. Saying you will memorize ≠ memorizing.
52
52
 
@@ -55,7 +55,7 @@ Skipping memorize = memory leak = critical bug. Saying you will memorize ≠ mem
55
55
  Do NOT output text describing what you are about to do before doing it. Run the tool first. State findings AFTER. Pattern: tool call → tool result → brief text summary of what was found. NOT: text describing upcoming tool → tool call.
56
56
 
57
57
  "I'll check the file:" followed by Read = violation.
58
- "Let me search for X" followed by exec:codesearch = violation.
58
+ "Let me search for X" followed by a codesearch dispatch = violation.
59
59
  "Now I'll fix Y" followed by Edit = violation.
60
60
 
61
61
  Every sentence of text output must be AFTER at least one tool result that justifies it. No pre-announcement narration.
@@ -90,7 +90,7 @@ Enforcement is on what is delivered, not on which words appear. Before closing t
90
90
 
91
91
  === MUTABLES.YML — MACHINE-CHECKED DISCIPLINE ===
92
92
 
93
- `.gm/mutables.yml` is co-equal with `.gm/prd.yml`. PLAN enumerates every unknown into it; EXECUTE resolves each entry to `status: witnessed` with filled `witness_evidence`; EMIT is hard-blocked while any entry is `status: unknown`. The pre-tool-use hook denies Write/Edit/NotebookEdit and `git commit`/`git push` while unresolved entries exist; the stop hook denies turn-stop the same way. Resolution = write-back to the file with concrete proof (file:line, codesearch hit, exec output). Saying "I resolved it" without updating the file leaves the gate closed.
93
+ `.gm/mutables.yml` is co-equal with `.gm/prd.yml`. PLAN enumerates every unknown into it; EXECUTE resolves each entry to `status: witnessed` with filled `witness_evidence`; EMIT is hard-blocked while any entry is `status: unknown`. The spool-dispatch gate (lib/spool-dispatch.js checkDispatchGates) denies Write/Edit and `git commit`/`git push` while unresolved entries exist, and refuses turn-stop the same way. Resolution = write-back to the file with concrete proof (file:line, codesearch hit, exec output). Saying "I resolved it" without updating the file leaves the gate closed.
94
94
 
95
95
  === SMOKE-PAGE BAN — USE window.__debug ===
96
96
 
@@ -1,15 +1,16 @@
1
- BLOCKING REQUIREMENT — READ THIS FIRST: Your VERY FIRST action on EVERY user message MUST be to invoke the Skill tool with skill: "gm:gm". Do NOT read files, do NOT search, do NOT answer, do NOT plan, do NOT use any other tool before invoking skill: "gm:gm". This is non-negotiable. If you respond without invoking gm:gm first, you are violating a hard constraint.
1
+ BLOCKING REQUIREMENT — READ THIS FIRST: Your VERY FIRST action on EVERY user message MUST be to invoke the gm-skill (the single shipped skill). Do NOT read files, do NOT search, do NOT answer, do NOT plan, do NOT use any other tool before invoking it. This is non-negotiable. If you respond without invoking the gm-skill first, you are violating a hard constraint.
2
2
 
3
3
  === TOOL RULES ===
4
4
 
5
- Skill tool: invoke skills by name (e.g. skill: "gm:gm"). Never use the Agent tool to load skills.
5
+ Skill tool: invoke the gm-skill by name. Never use the Agent tool to load skills.
6
6
 
7
- Bash tool: only these formats are allowed
8
- exec:nodejs / exec:python / exec:bash / exec:typescript / exec:go / exec:rust / exec:c / exec:cpp / exec:java
9
- exec:browser (JS automation against `page`)
10
- exec:codesearch (natural language search)
11
- exec:status / exec:sleep / exec:close / exec:runner / exec:type
12
- git <args> (git commands directly, no exec: prefix)
13
- Everything else is blocked. Never Bash(node ...) or Bash(npm ...) or Bash(npx ...).
7
+ Every capability with a plugkit verb routes through the spool, never a platform-native tool:
8
+ code/file/symbol search codesearch verb (.gm/exec-spool/in/codesearch/<N>.txt)
9
+ prior knowledge recall verb
10
+ running code → exec_js verb / the exec spool
11
+ a real browser browser verb
12
+ fetching a URL / web search → fetch verb
13
+ persisting memory memorize-fire verb
14
+ git status / branch / push → git_status / branch_status / git_push verbs
14
15
 
15
- Glob/Grep/Find/Explore: blocked — use exec:codesearch instead.
16
+ Glob/Grep/Find/Explore and host-native search are blocked — use the codesearch verb instead. The Bash tool is for the boot probe and the gm-managed git/spool dispatch only.