@lumenflow/cli 4.17.0 → 4.18.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/dist/mem-create.js +64 -1
- package/dist/mem-create.js.map +1 -1
- package/dist/mem-delete.js +38 -13
- package/dist/mem-delete.js.map +1 -1
- package/package.json +8 -8
- package/packs/agent-runtime/.turbo/turbo-build.log +1 -1
- package/packs/agent-runtime/package.json +1 -1
- package/packs/sidekick/.turbo/turbo-build.log +1 -1
- package/packs/sidekick/package.json +1 -1
- package/packs/software-delivery/.turbo/turbo-build.log +1 -1
- package/packs/software-delivery/package.json +1 -1
- package/templates/core/AGENTS.md.template +26 -4
- package/templates/core/LUMENFLOW.md.template +61 -13
package/dist/mem-create.js
CHANGED
|
@@ -23,6 +23,48 @@ import { createWUParser, WU_OPTIONS } from '@lumenflow/core/arg-parser';
|
|
|
23
23
|
import { EXIT_CODES, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
24
24
|
import { MEMORY_NODE_TYPES } from '@lumenflow/memory/schema';
|
|
25
25
|
import { runCLI } from './cli-entry-point.js';
|
|
26
|
+
/**
|
|
27
|
+
* Read a title from a UTF-8 file, trimming a single trailing newline.
|
|
28
|
+
* WU-2604: added to let agents pass prose containing `$`, backticks, or `!`
|
|
29
|
+
* without shell-expansion corruption.
|
|
30
|
+
*/
|
|
31
|
+
export async function readTitleFromFile(filePath) {
|
|
32
|
+
try {
|
|
33
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
34
|
+
return content.endsWith('\n') ? content.slice(0, -1) : content;
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
38
|
+
throw new Error(`--title-file could not be read: ${message}`, { cause: err });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Read a title from stdin when data is piped in. Returns trimmed content,
|
|
43
|
+
* or an empty string if nothing was piped (TTY).
|
|
44
|
+
*/
|
|
45
|
+
export async function readTitleFromStdin() {
|
|
46
|
+
if (process.stdin.isTTY) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
const chunks = [];
|
|
50
|
+
for await (const chunk of process.stdin) {
|
|
51
|
+
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
|
52
|
+
}
|
|
53
|
+
const raw = Buffer.concat(chunks).toString('utf-8');
|
|
54
|
+
return raw.endsWith('\n') ? raw.slice(0, -1) : raw;
|
|
55
|
+
}
|
|
56
|
+
export async function resolveTitle(opts) {
|
|
57
|
+
if (opts.title !== undefined && opts.title !== '') {
|
|
58
|
+
return opts.title;
|
|
59
|
+
}
|
|
60
|
+
if (opts.titleFile !== undefined && opts.titleFile !== '') {
|
|
61
|
+
return readTitleFromFile(opts.titleFile);
|
|
62
|
+
}
|
|
63
|
+
const reader = opts.stdinReader ?? readTitleFromStdin;
|
|
64
|
+
const piped = await reader();
|
|
65
|
+
const trimmed = piped.endsWith('\n') ? piped.slice(0, -1) : piped;
|
|
66
|
+
return trimmed === '' ? undefined : trimmed;
|
|
67
|
+
}
|
|
26
68
|
/**
|
|
27
69
|
* Log prefix for mem:create output
|
|
28
70
|
*/
|
|
@@ -40,6 +82,11 @@ const CLI_OPTIONS = {
|
|
|
40
82
|
flags: '-t, --title <text>',
|
|
41
83
|
description: 'Node title/content (required if not positional)',
|
|
42
84
|
},
|
|
85
|
+
titleFile: {
|
|
86
|
+
name: 'titleFile',
|
|
87
|
+
flags: '--title-file <path>',
|
|
88
|
+
description: 'Read title from file (prefer over --title for prose with $, backticks, !; bypasses shell expansion)',
|
|
89
|
+
},
|
|
43
90
|
type: {
|
|
44
91
|
name: 'type',
|
|
45
92
|
flags: '--type <type>',
|
|
@@ -105,6 +152,7 @@ function parseArguments() {
|
|
|
105
152
|
description: 'Create a memory node with optional provenance tracking',
|
|
106
153
|
options: [
|
|
107
154
|
CLI_OPTIONS.title,
|
|
155
|
+
CLI_OPTIONS.titleFile,
|
|
108
156
|
CLI_OPTIONS.type,
|
|
109
157
|
CLI_OPTIONS.discoveredFrom,
|
|
110
158
|
WU_OPTIONS.wu,
|
|
@@ -182,14 +230,29 @@ function printMetadata(metadata) {
|
|
|
182
230
|
* Main CLI entry point
|
|
183
231
|
*/
|
|
184
232
|
export async function main() {
|
|
185
|
-
const { args, title } = parseArguments();
|
|
233
|
+
const { args, title: positionalTitle } = parseArguments();
|
|
234
|
+
let title;
|
|
235
|
+
try {
|
|
236
|
+
title = await resolveTitle({
|
|
237
|
+
title: positionalTitle,
|
|
238
|
+
titleFile: args.titleFile,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
243
|
+
console.error(`${LOG_PREFIX} Error: ${message}`);
|
|
244
|
+
process.exit(EXIT_CODES.ERROR);
|
|
245
|
+
}
|
|
186
246
|
if (!title) {
|
|
187
247
|
console.error(`${LOG_PREFIX} Error: title is required`);
|
|
188
248
|
console.error('');
|
|
189
249
|
console.error("Usage: pnpm mem:create 'title' [options]");
|
|
190
250
|
console.error(" pnpm mem:create --title 'title' [options]");
|
|
251
|
+
console.error(' pnpm mem:create --title-file /path/to/title.txt [options]');
|
|
252
|
+
console.error(' echo "title" | pnpm mem:create [options]');
|
|
191
253
|
console.error('');
|
|
192
254
|
console.error('Options:');
|
|
255
|
+
console.error(' --title-file <path> Read title from file (safest for prose with $, backticks, !)');
|
|
193
256
|
console.error(' --type <type> Node type (discovery, session, checkpoint, note, summary) or alias (bug, idea, question, dependency)');
|
|
194
257
|
console.error(' --discovered-from <id> Parent node ID for provenance (mem-XXXX)');
|
|
195
258
|
console.error(' --wu <id> WU ID to link node to (WU-XXX)');
|
package/dist/mem-create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem-create.js","sourceRoot":"","sources":["../src/mem-create.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AACzC;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC;;GAEG;AACH,MAAM,SAAS,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mem-create.js","sourceRoot":"","sources":["../src/mem-create.ts"],"names":[],"mappings":"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"}
|
package/dist/mem-delete.js
CHANGED
|
@@ -47,6 +47,11 @@ const CLI_OPTIONS = {
|
|
|
47
47
|
flags: '--dry-run',
|
|
48
48
|
description: 'Preview deletion without making changes',
|
|
49
49
|
},
|
|
50
|
+
id: {
|
|
51
|
+
name: 'id',
|
|
52
|
+
flags: '--id <nodeId...>',
|
|
53
|
+
description: 'Node ID to delete (mem-XXXX; repeatable). Also accepted as positional args.',
|
|
54
|
+
},
|
|
50
55
|
tag: {
|
|
51
56
|
name: 'tag',
|
|
52
57
|
flags: '--tag <tag>',
|
|
@@ -102,6 +107,7 @@ function parseArguments() {
|
|
|
102
107
|
description: 'Delete memory nodes (soft delete via metadata.status=deleted)',
|
|
103
108
|
options: [
|
|
104
109
|
CLI_OPTIONS.dryRun,
|
|
110
|
+
CLI_OPTIONS.id,
|
|
105
111
|
CLI_OPTIONS.tag,
|
|
106
112
|
CLI_OPTIONS.olderThan,
|
|
107
113
|
CLI_OPTIONS.json,
|
|
@@ -111,15 +117,12 @@ function parseArguments() {
|
|
|
111
117
|
required: [],
|
|
112
118
|
allowPositionalId: true,
|
|
113
119
|
});
|
|
114
|
-
|
|
115
|
-
const nodeIds = [];
|
|
120
|
+
const positional = [];
|
|
116
121
|
const argv = process.argv.slice(2).filter((arg) => arg !== '--');
|
|
117
122
|
for (const arg of argv) {
|
|
118
|
-
// Skip flags and their values
|
|
119
123
|
if (arg.startsWith('-')) {
|
|
120
124
|
continue;
|
|
121
125
|
}
|
|
122
|
-
// Check if this arg is a value for a flag (by checking previous arg)
|
|
123
126
|
const prevArg = argv[argv.indexOf(arg) - 1];
|
|
124
127
|
if (prevArg &&
|
|
125
128
|
prevArg.startsWith('-') &&
|
|
@@ -128,13 +131,34 @@ function parseArguments() {
|
|
|
128
131
|
!prevArg.startsWith('-q')) {
|
|
129
132
|
continue;
|
|
130
133
|
}
|
|
131
|
-
|
|
132
|
-
if (arg.startsWith('mem-')) {
|
|
133
|
-
nodeIds.push(arg);
|
|
134
|
-
}
|
|
134
|
+
positional.push(arg);
|
|
135
135
|
}
|
|
136
|
+
const rawIdFlag = args.id;
|
|
137
|
+
const idFlags = Array.isArray(rawIdFlag)
|
|
138
|
+
? rawIdFlag
|
|
139
|
+
: typeof rawIdFlag === 'string'
|
|
140
|
+
? [rawIdFlag]
|
|
141
|
+
: [];
|
|
142
|
+
const nodeIds = collectNodeIds({ positional, idFlags });
|
|
136
143
|
return { args, nodeIds };
|
|
137
144
|
}
|
|
145
|
+
export function collectNodeIds(input) {
|
|
146
|
+
const seen = new Set();
|
|
147
|
+
const out = [];
|
|
148
|
+
const push = (candidate) => {
|
|
149
|
+
if (!candidate.startsWith('mem-'))
|
|
150
|
+
return;
|
|
151
|
+
if (seen.has(candidate))
|
|
152
|
+
return;
|
|
153
|
+
seen.add(candidate);
|
|
154
|
+
out.push(candidate);
|
|
155
|
+
};
|
|
156
|
+
for (const p of input.positional)
|
|
157
|
+
push(p);
|
|
158
|
+
for (const f of input.idFlags)
|
|
159
|
+
push(f);
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
138
162
|
/**
|
|
139
163
|
* Display limit for ID lists
|
|
140
164
|
*/
|
|
@@ -225,11 +249,12 @@ function printUsageAndExit() {
|
|
|
225
249
|
console.error(`${LOG_PREFIX} Error: At least one filter is required`);
|
|
226
250
|
console.error('');
|
|
227
251
|
console.error('Usage:');
|
|
228
|
-
console.error(' pnpm mem:delete <node-id>
|
|
229
|
-
console.error(' pnpm mem:delete <id1> <id2>
|
|
230
|
-
console.error(' pnpm mem:delete --
|
|
231
|
-
console.error(' pnpm mem:delete --
|
|
232
|
-
console.error(' pnpm mem:delete --
|
|
252
|
+
console.error(' pnpm mem:delete <node-id> Delete single node by ID (positional)');
|
|
253
|
+
console.error(' pnpm mem:delete <id1> <id2> Delete multiple nodes (positional)');
|
|
254
|
+
console.error(' pnpm mem:delete --id mem-XXXX Delete by ID (explicit flag, repeatable)');
|
|
255
|
+
console.error(' pnpm mem:delete --tag <tag> Delete all nodes with tag');
|
|
256
|
+
console.error(' pnpm mem:delete --older-than 30d Delete nodes older than 30 days');
|
|
257
|
+
console.error(' pnpm mem:delete --dry-run Preview deletion');
|
|
233
258
|
process.exit(EXIT_CODES.ERROR);
|
|
234
259
|
}
|
|
235
260
|
/**
|
package/dist/mem-delete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem-delete.js","sourceRoot":"","sources":["../src/mem-delete.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC;;GAEG;AACH,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,yCAAyC;KACvD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,oCAAoC;KAClD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,2DAA2D;KACzE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gBAAgB;KAC9B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,+BAA+B;KAC7C;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,gDAAgD;KAC9D;CACF,CAAC;AAEF;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,KAA8B;IAC1E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;QAE1C,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE;YACP,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,GAAG;YACf,WAAW,CAAC,SAAS;YACrB,WAAW,CAAC,IAAI;YAChB,WAAW,CAAC,KAAK;YACjB,WAAW,CAAC,OAAO;SACpB;QACD,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,
|
|
1
|
+
{"version":3,"file":"mem-delete.js","sourceRoot":"","sources":["../src/mem-delete.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lumenflow/cli",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.18.0",
|
|
4
4
|
"description": "Command-line interface for LumenFlow workflow framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lumenflow",
|
|
@@ -192,13 +192,13 @@
|
|
|
192
192
|
"xstate": "^5.28.0",
|
|
193
193
|
"yaml": "^2.8.2",
|
|
194
194
|
"zod": "^4.3.6",
|
|
195
|
-
"@lumenflow/agent": "4.
|
|
196
|
-
"@lumenflow/control-plane-sdk": "4.
|
|
197
|
-
"@lumenflow/core": "4.
|
|
198
|
-
"@lumenflow/initiatives": "4.
|
|
199
|
-
"@lumenflow/kernel": "4.
|
|
200
|
-
"@lumenflow/memory": "4.
|
|
201
|
-
"@lumenflow/metrics": "4.
|
|
195
|
+
"@lumenflow/agent": "4.18.0",
|
|
196
|
+
"@lumenflow/control-plane-sdk": "4.18.0",
|
|
197
|
+
"@lumenflow/core": "4.18.0",
|
|
198
|
+
"@lumenflow/initiatives": "4.18.0",
|
|
199
|
+
"@lumenflow/kernel": "4.18.0",
|
|
200
|
+
"@lumenflow/memory": "4.18.0",
|
|
201
|
+
"@lumenflow/metrics": "4.18.0"
|
|
202
202
|
},
|
|
203
203
|
"devDependencies": {
|
|
204
204
|
"@vitest/coverage-v8": "^4.0.18",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @lumenflow/packs-agent-runtime@4.
|
|
2
|
+
> @lumenflow/packs-agent-runtime@4.18.0 build /home/runner/work/lumenflow-dev/lumenflow-dev/packages/@lumenflow/packs/agent-runtime
|
|
3
3
|
> tsc
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @lumenflow/packs-software-delivery@4.
|
|
2
|
+
> @lumenflow/packs-software-delivery@4.18.0 build /home/runner/work/lumenflow-dev/lumenflow-dev/packages/@lumenflow/packs/software-delivery
|
|
3
3
|
> tsc
|
|
4
4
|
|
|
@@ -43,16 +43,30 @@ pnpm lane:lock
|
|
|
43
43
|
pnpm wu:claim --id WU-XXXX --lane <Lane>
|
|
44
44
|
cd worktrees/<lane>-wu-xxxx
|
|
45
45
|
|
|
46
|
-
# 2.
|
|
46
|
+
# 2. Record handoff evidence (MANDATORY — wu:done blocks without this)
|
|
47
|
+
pnpm wu:brief --id WU-XXXX --client <client>
|
|
47
48
|
|
|
48
|
-
# 3.
|
|
49
|
+
# 3. Pull shared memory BEFORE coding (discoveries from other agents / vendors)
|
|
50
|
+
pnpm mem:context --wu WU-XXXX
|
|
51
|
+
pnpm mem:inbox --since 1h
|
|
52
|
+
|
|
53
|
+
# 4. Work in worktree — capture discoveries as you go:
|
|
54
|
+
# pnpm mem:create --type discovery --wu WU-XXXX --tags <csv> --title '<single-quoted>'
|
|
55
|
+
# pnpm mem:signal '<status>' --wu WU-XXXX
|
|
56
|
+
|
|
57
|
+
# 5. Triage discoveries before completion
|
|
58
|
+
pnpm mem:triage --wu WU-XXXX --list
|
|
59
|
+
|
|
60
|
+
# 6. Prep (runs gates in worktree)
|
|
49
61
|
pnpm wu:prep --id WU-XXXX
|
|
50
|
-
# This prints a copy-paste command for step
|
|
62
|
+
# This prints a copy-paste command for step 7
|
|
51
63
|
|
|
52
|
-
#
|
|
64
|
+
# 7. Complete (from main - copy-paste from wu:prep output)
|
|
53
65
|
cd <project-root> && pnpm wu:done --id WU-XXXX
|
|
54
66
|
```
|
|
55
67
|
|
|
68
|
+
**Always single-quote** `mem:create --title` values — bash expands `$var`, `$0`, and backticks in double-quoted strings, silently corrupting prose with prices (`$49`), positional refs, or `!`. See [LUMENFLOW.md Memory section](LUMENFLOW.md#memory-shared-vs-vendor-personal).
|
|
69
|
+
|
|
56
70
|
## Quick Start (Cloud / Branch-PR)
|
|
57
71
|
|
|
58
72
|
Cloud agents (Codex, Claude web, CI bots) that cannot use local worktrees use the **branch-pr** mode. This is a first-class lifecycle, not a workaround.
|
|
@@ -125,6 +139,14 @@ LumenFlow enforces safety at the repository level via git wrappers and hooks. Fo
|
|
|
125
139
|
|
|
126
140
|
---
|
|
127
141
|
|
|
142
|
+
## Skills and Shared Memory
|
|
143
|
+
|
|
144
|
+
LumenFlow skills live in `.lumenflow/skills/` as `SKILL.md` files and are projected to each vendor via `pnpm lumenflow:integrate --client <x>`. Claude Code, OpenAI Codex, Cursor, and Windsurf all support `SKILL.md`-based skills (with minor invocation differences); Aider uses `CONVENTIONS.md`; Cline uses `.clinerules`. See [LUMENFLOW.md "Skills & Agents"](LUMENFLOW.md#skills--agents) for the canonical list and per-vendor invocation.
|
|
145
|
+
|
|
146
|
+
Classification rule for memory: if a fact would help *another* agent vendor working this repo, it belongs in shared memory (`mem:create`). Only vendor-specific behavioural calibrations stay in vendor-personal memory. See [LUMENFLOW.md Memory section](LUMENFLOW.md#memory-shared-vs-vendor-personal).
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
128
150
|
## Vendor-Specific Overlays
|
|
129
151
|
|
|
130
152
|
This file provides universal guidance for all AI agents. Additional vendor-specific configuration:
|
|
@@ -139,7 +139,7 @@ When `requireRemote: true` (default):
|
|
|
139
139
|
|
|
140
140
|
## Core Principles
|
|
141
141
|
|
|
142
|
-
1. **Design-First** (feature/refactor WUs): Load
|
|
142
|
+
1. **Design-First** (feature/refactor WUs): Load the `design-first` skill before implementation. Question requirements, delete unnecessary, simplify before optimizing. Invocation varies by vendor — see [Skills & Agents](#skills--agents).
|
|
143
143
|
2. **Fit-For-Surface Verification**: Choose the least brittle verification that gives strong confidence. Prefer TDD for runtime logic when repository policy requires it; prefer behavior-focused integration, smoke, visual, or manual verification for UI, content, and presentation work. Never assert inline styles, CSS values, exact copy, or DOM shape in E2E/integration tests.
|
|
144
144
|
3. **Library-First**: Search existing libraries before custom code
|
|
145
145
|
4. **DRY/SOLID/KISS/YAGNI**: No magic numbers, no hardcoded strings
|
|
@@ -153,6 +153,43 @@ When `requireRemote: true` (default):
|
|
|
153
153
|
|
|
154
154
|
---
|
|
155
155
|
|
|
156
|
+
## Memory: Shared vs Vendor-Personal
|
|
157
|
+
|
|
158
|
+
LumenFlow ships a shared memory layer at `.lumenflow/memory/memory.jsonl` that every agent (Claude, Codex, Cursor, Windsurf, Aider) reads and writes via `mem:*` CLIs. This is distinct from any vendor's private memory folder.
|
|
159
|
+
|
|
160
|
+
### Classification rule
|
|
161
|
+
|
|
162
|
+
**"Would a different agent vendor working this repo need to know this?"**
|
|
163
|
+
|
|
164
|
+
| Goes in shared memory (`mem:create`) | Stays in vendor-personal memory |
|
|
165
|
+
| --- | --- |
|
|
166
|
+
| Bug discoveries, known issues, CI/gates gotchas | Behavioural feedback (tone, verbosity, style) |
|
|
167
|
+
| Architecture decisions, pricing truth, initiative direction | User profile (role, background, preferences) |
|
|
168
|
+
| Cross-WU scope-creep flags | Vendor tool-invocation mechanics |
|
|
169
|
+
| Infrastructure debt future agents will hit | Session-continuity pointers |
|
|
170
|
+
|
|
171
|
+
### Required cadence
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# BEFORE coding (after wu:claim + wu:brief)
|
|
175
|
+
pnpm mem:context --wu WU-XXXX # discoveries, known-issues for this WU
|
|
176
|
+
pnpm mem:inbox --since 1h # parallel-agent signals
|
|
177
|
+
|
|
178
|
+
# DURING the WU — always SINGLE-QUOTE --title (bash expands $var/$0/backticks in double-quoted strings)
|
|
179
|
+
pnpm mem:create --type discovery --wu WU-XXXX --tags <csv> --priority P? --title '<prose>'
|
|
180
|
+
pnpm mem:signal '<status>' --wu WU-XXXX
|
|
181
|
+
pnpm mem:checkpoint --wu WU-XXXX --note '<progress>'
|
|
182
|
+
|
|
183
|
+
# BEFORE wu:done (triage is NOT automatic)
|
|
184
|
+
pnpm mem:triage --wu WU-XXXX --list
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Storage note
|
|
188
|
+
|
|
189
|
+
`.lumenflow/memory/memory.jsonl` is gitignored by default: shared across all vendors **on the same machine/worktree**, not cross-machine. For team-wide visibility, commit the jsonl or sync via your control plane.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
156
193
|
## Universal Agent Safety (WU-1170)
|
|
157
194
|
|
|
158
195
|
LumenFlow enforces safety at the repository level via git wrappers, Husky hooks, and audit logs. All worktree management MUST use `wu:` commands (not raw git). For the complete list of forbidden commands, safe alternatives, and enforcement details, see [.lumenflow/constraints.md](.lumenflow/constraints.md).
|
|
@@ -505,21 +542,32 @@ If you're an AI agent, read the onboarding docs:
|
|
|
505
542
|
|
|
506
543
|
## Skills & Agents
|
|
507
544
|
|
|
508
|
-
LumenFlow
|
|
545
|
+
Skills are reusable knowledge bundles that agents load on demand. The `SKILL.md` format pioneered by Claude Code has converged into a de-facto standard: OpenAI Codex (Dec 2025), Cursor (v2.4+), and Windsurf Cascade (Jan 2026) all support it. LumenFlow stores vendor-neutral skill sources in `.lumenflow/skills/` and projects them to each vendor surface via `pnpm lumenflow:integrate --client <x>`.
|
|
509
546
|
|
|
510
|
-
###
|
|
547
|
+
### Core skills
|
|
511
548
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
| Skill | Purpose |
|
|
549
|
+
| Skill | Load before... |
|
|
515
550
|
| --------------------- | ------------------------------------------- |
|
|
516
|
-
| `
|
|
517
|
-
| `
|
|
518
|
-
| `
|
|
519
|
-
| `
|
|
520
|
-
| `
|
|
521
|
-
|
|
522
|
-
|
|
551
|
+
| `design-first` | Any feature or refactor WU |
|
|
552
|
+
| `tdd-workflow` | Writing tests or runtime-logic code |
|
|
553
|
+
| `frontend-design` | Any UI / component / page work |
|
|
554
|
+
| `wu-lifecycle` | Claim / block / unblock / done decisions |
|
|
555
|
+
| `worktree-discipline` | First Read/Edit/Write in a claimed worktree |
|
|
556
|
+
| `lumenflow-gates` | When gates fail |
|
|
557
|
+
| `bug-classification` | Mid-WU bug discovery (P0-P3 triage) |
|
|
558
|
+
|
|
559
|
+
### Vendor invocation
|
|
560
|
+
|
|
561
|
+
| Vendor | Skill primitive | Invocation |
|
|
562
|
+
| ------------- | ------------------------------ | ------------------------------------------------------- |
|
|
563
|
+
| Claude Code | Skills (native) | `Skill` tool call, or `/skill <name>` in interactive CLI |
|
|
564
|
+
| OpenAI Codex | Skills (Dec 2025) | `/skills` list, `$<name>` mention, or implicit |
|
|
565
|
+
| Cursor | Agent Skills (v2.4+) | `/skills` or auto-discovery by agent |
|
|
566
|
+
| Windsurf | Cascade Skills (Jan 2026) | Auto-discovery; workflows via `/<workflow-name>` |
|
|
567
|
+
| Aider | `CONVENTIONS.md` | `/read CONVENTIONS.md` or `aider --read CONVENTIONS.md` |
|
|
568
|
+
| Cline | `.clinerules` | Auto-loaded |
|
|
569
|
+
|
|
570
|
+
A skill named in prose does nothing — load it through the vendor's invocation before the work it covers.
|
|
523
571
|
|
|
524
572
|
### Agents
|
|
525
573
|
|