gm-codex 2.0.420 → 2.0.422

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-codex",
3
- "version": "2.0.420",
3
+ "version": "2.0.422",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: memorize
3
+ description: Background memory agent. Classifies context into memory/ dir and CLAUDE.md. Aggressively prunes stale/derivable/duplicate entries.
4
+ agent: true
5
+ ---
6
+
7
+ # Memorize — Background Memory Agent
8
+
9
+ Memory dir: C:/Users/user/.claude/projects/C--dev-plugforge/memory/
10
+ CLAUDE.md: C:/dev/plugforge/CLAUDE.md
11
+
12
+ ## STEP 1: READ
13
+
14
+ Read memory dir contents and MEMORY.md index. Read all existing memory files. Read CLAUDE.md in full.
15
+
16
+ If memory dir does not exist, create it. If MEMORY.md does not exist, create it empty.
17
+
18
+ ## STEP 2: PRUNE
19
+
20
+ Run BEFORE writing any new content.
21
+
22
+ Remove entries that are:
23
+ - Contradicted or superseded by current CLAUDE.md or observable codebase facts
24
+ - Duplicates of other entries (merge into one)
25
+ - Derivable at runtime via exec:codesearch: file paths, function names, API shapes, architecture patterns
26
+ - Active task state, current progress, session narration
27
+
28
+ Keep ONLY: cross-session unknowns that required multiple failed attempts to discover, user preferences and feedback, project decisions with non-obvious rationale.
29
+
30
+ When in doubt: DELETE. Memory must stay lean.
31
+
32
+ ## STEP 3: CLASSIFY
33
+
34
+ Examine the ## CONTEXT TO MEMORIZE section at the end of this prompt. For each fact, classify as:
35
+
36
+ - user: user role, goals, preferences, knowledge
37
+ - feedback: guidance on approach — corrections AND confirmations
38
+ - project: ongoing work, goals, bugs, incidents, decisions
39
+ - reference: pointers to external systems, URLs, paths
40
+
41
+ Discard:
42
+ - Facts already covered in CLAUDE.md (exact or paraphrase)
43
+ - Obvious facts derivable from reading the code
44
+ - Active task state or session progress
45
+
46
+ ## STEP 4: WRITE
47
+
48
+ For each classified fact:
49
+ 1. Check all existing memory files — if one covers the same topic, merge the new fact in
50
+ 2. If no existing file covers it, create memory/<slug>.md
51
+
52
+ File format:
53
+ ```
54
+ ---
55
+ name: <descriptive name>
56
+ description: <one-line under 80 chars>
57
+ type: user|feedback|project|reference
58
+ ---
59
+
60
+ <body>
61
+ ```
62
+
63
+ For feedback and project types, body must include:
64
+ - The fact or rule
65
+ - Why: <reason>
66
+ - How to apply: <concrete application>
67
+
68
+ ## STEP 5: UPDATE MEMORY.md
69
+
70
+ Rewrite the MEMORY.md index to reflect all current files in the memory dir.
71
+
72
+ Format: one line per file, under 150 chars each:
73
+ `- [Title](file.md) — one-line hook`
74
+
75
+ No frontmatter. Max 200 lines.
76
+
77
+ ## STEP 6: CONSOLIDATE
78
+
79
+ For each memory file: if its content is already fully covered by CLAUDE.md (exact or equivalent), delete the memory file and remove its line from MEMORY.md.
80
+
81
+ ## STEP 7: CLAUDE.md
82
+
83
+ A non-obvious technical caveat qualifies if it required multiple failed runs to discover and would not be apparent from reading code or docs.
84
+
85
+ For each qualifying fact from context:
86
+ - If CLAUDE.md already covers it → skip
87
+ - If genuinely non-obvious → append to the appropriate section
88
+
89
+ Never add: obvious patterns, active task progress, redundant restatements.
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.420",
3
+ "version": "2.0.422",
4
4
  "description": "State machine agent with hooks, 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-codex",
3
- "version": "2.0.420",
3
+ "version": "2.0.422",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.420",
3
+ "version": "2.0.422",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
@@ -6,6 +6,9 @@ allowed-tools: Bash(browser:*), Bash(exec:browser*)
6
6
 
7
7
  # Browser Automation with playwriter
8
8
 
9
+ **Use gm subagents for all independent work items. Invoke all skills in the chain: planning → gm-execute → gm-emit → gm-complete → update-docs.**
10
+
11
+
9
12
  ## Two Pathways
10
13
 
11
14
  **Session commands** (`browser:` prefix) — manage multi-step sessions via playwriter CLI. Each `browser:` block runs its commands sequentially.
@@ -64,12 +67,6 @@ browser:
64
67
  playwriter -s 1 -e 'console.log(state.x)'
65
68
  ```
66
69
 
67
- List active sessions:
68
-
69
- ```
70
- browser:
71
- playwriter session list
72
- ```
73
70
 
74
71
  **RULE**: The `-e` argument must use single quotes. The JS inside must use double quotes for strings.
75
72
 
@@ -135,21 +132,7 @@ task_N
135
132
 
136
133
  ## Common Patterns
137
134
 
138
- ### Navigate and check current URL/status
139
-
140
- ```
141
- exec:browser
142
- await page.goto('https://example.com')
143
- console.log('URL:', page.url())
144
- console.log('title:', await page.title())
145
- ```
146
-
147
- ### Screenshot
148
135
 
149
- ```
150
- browser:
151
- playwriter -s 1 -e 'await screenshotWithAccessibilityLabels({ page })'
152
- ```
153
136
 
154
137
  ### Data Extraction
155
138
 
@@ -159,18 +142,6 @@ const items = await page.$$eval('.product-title', els => els.map(e => e.textCont
159
142
  console.log(JSON.stringify(items))
160
143
  ```
161
144
 
162
- ### Fetch bypassing browser cache
163
-
164
- `fetch()` inside `page.evaluate()` hits the browser cache — use `cache: 'no-store'` to get fresh content:
165
-
166
- ```
167
- exec:browser
168
- const text = await page.evaluate(async () => {
169
- const r = await fetch('./app.js', { cache: 'no-store' })
170
- return await r.text()
171
- })
172
- console.log('Has feature:', text.includes('myFunction'))
173
- ```
174
145
 
175
146
  ### Console Monitoring — set up listener first, then poll
176
147
 
@@ -189,14 +160,6 @@ console.log('logs so far:', JSON.stringify(state.logs.slice(-20)))
189
160
  console.log('errors:', JSON.stringify(state.errors))
190
161
  ```
191
162
 
192
- ### Web Worker Access
193
-
194
- ```
195
- exec:browser
196
- const workers = page.workers()
197
- console.log('Workers:', workers.length, workers.map(w => w.url()).join(', '))
198
- ```
199
-
200
163
  ```
201
164
  exec:browser
202
165
  if (page.workers().length > 0) {
@@ -205,9 +168,6 @@ if (page.workers().length > 0) {
205
168
  }
206
169
  ```
207
170
 
208
- ### Access window globals
209
-
210
- ```
211
171
  exec:browser
212
172
  const result = await page.evaluate(() => JSON.stringify({
213
173
  entityCount: window.debug?.scene?.children?.length,
@@ -216,9 +176,6 @@ const result = await page.evaluate(() => JSON.stringify({
216
176
  console.log(result)
217
177
  ```
218
178
 
219
- ### Wait for element with short poll
220
-
221
- ```
222
179
  exec:browser
223
180
  const start = Date.now()
224
181
  while (Date.now() - start < 12000) {
@@ -5,6 +5,9 @@ description: Mandatory codebase search workflow. Use whenever you need to find a
5
5
 
6
6
  # CODEBASE SEARCH — Mandatory Workflow
7
7
 
8
+ **Use gm subagents for all independent work items. Invoke all skills in the chain: planning → gm-execute → gm-emit → gm-complete → update-docs.**
9
+
10
+
8
11
  `exec:codesearch` is the only way to search the codebase. Glob, Grep, Find, Explore are hook-blocked.
9
12
 
10
13
  ## Syntax
@@ -5,6 +5,9 @@ description: Create a lang/ plugin that wires any CLI tool or language runtime i
5
5
 
6
6
  # CREATE LANG PLUGIN
7
7
 
8
+ **Use gm subagents for all independent work items. Invoke all skills in the chain: planning → gm-execute → gm-emit → gm-complete → update-docs.**
9
+
10
+
8
11
  A lang plugin is a single CommonJS file at `<projectDir>/lang/<id>.js`. gm-cc's hooks auto-discover it — no hook editing, no settings changes. The plugin gets three integration points: **exec dispatch**, **LSP diagnostics**, and **context injection**.
9
12
 
10
13
  ## PLUGIN SHAPE
@@ -5,6 +5,9 @@ description: Run shell commands on remote SSH hosts via exec:ssh. Reads targets
5
5
 
6
6
  # exec:ssh — Remote SSH Execution
7
7
 
8
+ **Use gm subagents for all independent work items. Invoke all skills in the chain: planning → gm-execute → gm-emit → gm-complete → update-docs.**
9
+
10
+
8
11
  Runs shell commands on a remote host over SSH. No shell open, no manual connection — just write the command.
9
12
 
10
13
  ## Setup