@wipcomputer/wip-ldm-os 0.4.41 → 0.4.43
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 +6 -9
- package/SKILL.md +1 -1
- package/bin/ldm.js +44 -0
- package/package.json +1 -1
- package/shared/boot/boot-config.json +65 -0
- package/shared/rules/git-conventions.md +4 -0
- package/shared/rules/release-pipeline.md +17 -0
- package/shared/rules/workspace-boundaries.md +5 -1
- package/shared/templates/claude-md-level1.md +37 -0
- package/shared/templates/install-prompt.md +28 -0
package/README.md
CHANGED
|
@@ -22,28 +22,25 @@ Open your AI and paste this:
|
|
|
22
22
|
```
|
|
23
23
|
Read https://wip.computer/install/wip-ldm-os.txt
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Check if LDM OS is already installed. If it is, run ldm install --dry-run and show me what I have and what's new.
|
|
26
|
+
|
|
27
|
+
If not, walk me through setup and explain:
|
|
28
|
+
|
|
26
29
|
1. What is LDM OS?
|
|
27
30
|
2. What does it install on my system?
|
|
28
31
|
3. What changes for us? (this AI)
|
|
29
32
|
4. What changes across all my AIs?
|
|
30
33
|
|
|
31
|
-
Check if LDM OS is already installed.
|
|
32
|
-
|
|
33
|
-
If it is, show me what I have and what's new.
|
|
34
|
-
|
|
35
|
-
If not, walk me through setup.
|
|
36
|
-
|
|
37
34
|
Then ask:
|
|
38
35
|
- Do you have questions?
|
|
39
36
|
- Want to see a dry run?
|
|
40
37
|
|
|
41
|
-
If I say yes:
|
|
38
|
+
If I say yes: Install the CLI first (npm install -g @wipcomputer/wip-ldm-os) and then run ldm install --dry-run.
|
|
42
39
|
|
|
43
40
|
Show me exactly what will change. Don't install anything until I say "install".
|
|
44
41
|
```
|
|
45
42
|
|
|
46
|
-
That's it. Your AI reads the spec,
|
|
43
|
+
That's it. Your AI reads the spec, checks what you have, and walks you through a dry run before touching anything.
|
|
47
44
|
|
|
48
45
|
## Included Skills
|
|
49
46
|
|
package/SKILL.md
CHANGED
package/bin/ldm.js
CHANGED
|
@@ -461,6 +461,50 @@ async function cmdInit() {
|
|
|
461
461
|
}
|
|
462
462
|
}
|
|
463
463
|
|
|
464
|
+
// Deploy boot-config.json to ~/.ldm/shared/boot/
|
|
465
|
+
const bootSrc = join(__dirname, '..', 'shared', 'boot');
|
|
466
|
+
const bootDest = join(LDM_ROOT, 'shared', 'boot');
|
|
467
|
+
if (existsSync(bootSrc)) {
|
|
468
|
+
mkdirSync(bootDest, { recursive: true });
|
|
469
|
+
const bootConfig = join(bootSrc, 'boot-config.json');
|
|
470
|
+
if (existsSync(bootConfig)) {
|
|
471
|
+
cpSync(bootConfig, join(bootDest, 'boot-config.json'));
|
|
472
|
+
console.log(` + boot-config.json deployed to ~/.ldm/shared/boot/`);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
// Deploy Level 1 CLAUDE.md template to ~/.claude/CLAUDE.md
|
|
477
|
+
const claudeMdTemplate = join(__dirname, '..', 'shared', 'templates', 'claude-md-level1.md');
|
|
478
|
+
const claudeMdDest = join(HOME, '.claude', 'CLAUDE.md');
|
|
479
|
+
if (existsSync(claudeMdTemplate) && existsSync(join(HOME, '.claude'))) {
|
|
480
|
+
cpSync(claudeMdTemplate, claudeMdDest);
|
|
481
|
+
console.log(` + Level 1 CLAUDE.md deployed to ~/.claude/CLAUDE.md`);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// Deploy shared templates to workspace settings/templates/
|
|
485
|
+
const templatesSrc = join(__dirname, '..', 'shared', 'templates');
|
|
486
|
+
if (existsSync(templatesSrc)) {
|
|
487
|
+
// Read workspace path from ~/.ldm/config.json
|
|
488
|
+
let workspacePath = '';
|
|
489
|
+
try {
|
|
490
|
+
const ldmConfig = JSON.parse(readFileSync(join(LDM_ROOT, 'config.json'), 'utf8'));
|
|
491
|
+
workspacePath = (ldmConfig.workspace || '').replace('~', HOME);
|
|
492
|
+
} catch {}
|
|
493
|
+
if (workspacePath && existsSync(workspacePath)) {
|
|
494
|
+
const templatesDest = join(workspacePath, 'settings', 'templates');
|
|
495
|
+
mkdirSync(templatesDest, { recursive: true });
|
|
496
|
+
let templatesCount = 0;
|
|
497
|
+
for (const file of readdirSync(templatesSrc)) {
|
|
498
|
+
if (file === 'claude-md-level1.md') continue; // deployed separately above
|
|
499
|
+
cpSync(join(templatesSrc, file), join(templatesDest, file));
|
|
500
|
+
templatesCount++;
|
|
501
|
+
}
|
|
502
|
+
if (templatesCount > 0) {
|
|
503
|
+
console.log(` + ${templatesCount} template(s) deployed to ${templatesDest.replace(HOME, '~')}/`);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
464
508
|
// Deploy shared prompts to ~/.ldm/shared/prompts/
|
|
465
509
|
const promptsSrc = join(__dirname, '..', 'shared', 'prompts');
|
|
466
510
|
const promptsDest = join(LDM_ROOT, 'shared', 'prompts');
|
package/package.json
CHANGED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agentId": "cc-mini",
|
|
3
|
+
"timezone": "America/Los_Angeles",
|
|
4
|
+
"maxTotalLines": 2000,
|
|
5
|
+
"steps": {
|
|
6
|
+
"sharedContext": {
|
|
7
|
+
"path": "~/.openclaw/workspace/SHARED-CONTEXT.md",
|
|
8
|
+
"label": "SHARED-CONTEXT.md",
|
|
9
|
+
"stepNumber": 2,
|
|
10
|
+
"critical": true
|
|
11
|
+
},
|
|
12
|
+
"journals": {
|
|
13
|
+
"dir": "~/wipcomputerinc/team/cc-mini/documents/journals",
|
|
14
|
+
"label": "Most Recent Journal (Parker)",
|
|
15
|
+
"stepNumber": 3,
|
|
16
|
+
"maxLines": 80,
|
|
17
|
+
"strategy": "most-recent"
|
|
18
|
+
},
|
|
19
|
+
"workspaceDailyLogs": {
|
|
20
|
+
"dir": "~/.openclaw/workspace/memory",
|
|
21
|
+
"label": "Workspace Daily Logs",
|
|
22
|
+
"stepNumber": 4,
|
|
23
|
+
"maxLines": 40,
|
|
24
|
+
"strategy": "daily-logs",
|
|
25
|
+
"days": ["today", "yesterday"]
|
|
26
|
+
},
|
|
27
|
+
"fullHistory": {
|
|
28
|
+
"label": "Full History",
|
|
29
|
+
"stepNumber": 5,
|
|
30
|
+
"reminder": "Read on cold start: staff/Parker/Claude Code - Mini/documents/cc-full-history.md"
|
|
31
|
+
},
|
|
32
|
+
"context": {
|
|
33
|
+
"path": "~/.ldm/agents/cc-mini/CONTEXT.md",
|
|
34
|
+
"label": "CC CONTEXT.md",
|
|
35
|
+
"stepNumber": 6,
|
|
36
|
+
"critical": true
|
|
37
|
+
},
|
|
38
|
+
"soul": {
|
|
39
|
+
"path": "~/.ldm/agents/cc-mini/SOUL.md",
|
|
40
|
+
"label": "CC SOUL.md",
|
|
41
|
+
"stepNumber": 7
|
|
42
|
+
},
|
|
43
|
+
"ccJournals": {
|
|
44
|
+
"dir": "~/.ldm/agents/cc-mini/memory/journals",
|
|
45
|
+
"label": "Most Recent CC Journal",
|
|
46
|
+
"stepNumber": 8,
|
|
47
|
+
"maxLines": 80,
|
|
48
|
+
"strategy": "most-recent"
|
|
49
|
+
},
|
|
50
|
+
"ccDailyLog": {
|
|
51
|
+
"dir": "~/.ldm/agents/cc-mini/memory/daily",
|
|
52
|
+
"label": "CC Daily Log",
|
|
53
|
+
"stepNumber": 9,
|
|
54
|
+
"maxLines": 60,
|
|
55
|
+
"strategy": "daily-logs",
|
|
56
|
+
"days": ["today", "yesterday"]
|
|
57
|
+
},
|
|
58
|
+
"repoLocations": {
|
|
59
|
+
"path": "~/.claude/projects/-Users-lesa--openclaw/memory/repo-locations.md",
|
|
60
|
+
"label": "repo-locations.md",
|
|
61
|
+
"stepNumber": 10,
|
|
62
|
+
"critical": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -27,3 +27,7 @@ Use worktrees for isolated work. Main working tree stays on main (read-only).
|
|
|
27
27
|
## Issues go on the public repo
|
|
28
28
|
|
|
29
29
|
For private/public repo pairs, all issues go on the public repo.
|
|
30
|
+
|
|
31
|
+
## On-demand reference
|
|
32
|
+
|
|
33
|
+
Before doing repo work, read `~/wipcomputerinc/settings/docs/how-worktrees-work.md` for the full worktree workflow with commands.
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Release Pipeline
|
|
2
2
|
|
|
3
|
+
## Never touch deployed files. The installer is the only deploy path.
|
|
4
|
+
|
|
5
|
+
Files at `~/.ldm/`, `~/.claude/`, `~/.openclaw/` are DEPLOYED by `ldm install`. Never edit them directly. Every change goes through the repo and the installer.
|
|
6
|
+
|
|
7
|
+
The plan for any feature must answer:
|
|
8
|
+
1. What source files change? (in the repo)
|
|
9
|
+
2. What does `ldm install` deploy? (templates, rules, docs, boot config, CLAUDE.md)
|
|
10
|
+
3. What needs to update for fresh install vs existing install?
|
|
11
|
+
4. What docs need updating?
|
|
12
|
+
5. What are ALL the files the installer touches on deploy?
|
|
13
|
+
|
|
14
|
+
Then: repo change, PR, merge, release, `ldm install`. That's the only path.
|
|
15
|
+
|
|
3
16
|
## Three steps. Never combine. Never skip.
|
|
4
17
|
|
|
5
18
|
| Step | What happens | What it means |
|
|
@@ -23,3 +36,7 @@ After Deploy, STOP. Do not copy files. Do not npm install -g. Do not npm link. D
|
|
|
23
36
|
## Never run tools from repo clones
|
|
24
37
|
|
|
25
38
|
Installed tools are for execution. Repo clones are for development. Use the installed commands (`crystal`, `wip-release`, `mdview`, etc.), never run from source.
|
|
39
|
+
|
|
40
|
+
## On-demand reference
|
|
41
|
+
|
|
42
|
+
Before releasing, read `~/wipcomputerinc/settings/docs/how-releases-work.md` for the full pipeline with commands.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Folder ownership
|
|
4
4
|
|
|
5
|
-
Each agent has its own folder under `
|
|
5
|
+
Each agent has its own folder under `team/`. Never touch another agent's folders. If something needs to change, ask the other agent.
|
|
6
6
|
|
|
7
7
|
## Repos are shared
|
|
8
8
|
|
|
@@ -19,3 +19,7 @@ Every tool must work fully on your machine without calling any external server.
|
|
|
19
19
|
## Never run tools from repo clones
|
|
20
20
|
|
|
21
21
|
Installed tools are for execution. Repo clones are for development. Use the installed commands, not source.
|
|
22
|
+
|
|
23
|
+
## On-demand reference
|
|
24
|
+
|
|
25
|
+
For the full directory map, read `~/wipcomputerinc/settings/docs/system-directories.md`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Global Instructions for Claude Code
|
|
2
|
+
|
|
3
|
+
## Writing Style
|
|
4
|
+
|
|
5
|
+
Never use em dashes. Use periods, colons, semicolons, or ellipsis (...) instead.
|
|
6
|
+
Timezone: PST (Pacific), 24-hour clock. Parker is in Los Angeles.
|
|
7
|
+
|
|
8
|
+
## Co-Authors on Every Commit
|
|
9
|
+
|
|
10
|
+
Read co-author lines from `~/wipcomputerinc/settings/config.json` coAuthors field. All contributors listed on every commit. No exceptions.
|
|
11
|
+
|
|
12
|
+
## 1Password CLI: Always Use Service Account Token
|
|
13
|
+
|
|
14
|
+
Never call `op` bare. Always prefix with the SA token:
|
|
15
|
+
```bash
|
|
16
|
+
OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/secrets/op-sa-token) op item get "Item Name" --fields label=fieldname
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Never Run Tools From Repo Clones
|
|
20
|
+
|
|
21
|
+
Installed tools are for execution. Repo clones are for development. Use installed commands (`crystal`, `wip-release`, `mdview`), never run from source.
|
|
22
|
+
|
|
23
|
+
## Shared File Protection
|
|
24
|
+
|
|
25
|
+
Never use Write on SHARED-CONTEXT.md or shared workspace files. Always use Edit to append or update specific sections. Overwriting destroys context that both agents depend on.
|
|
26
|
+
|
|
27
|
+
## Memory-First Rule
|
|
28
|
+
|
|
29
|
+
Before reaching for any external service or workaround: search memory first. Use `crystal_search`, `lesa_conversation_search`, or `lesa_memory_search`.
|
|
30
|
+
|
|
31
|
+
## Dev Conventions
|
|
32
|
+
|
|
33
|
+
For git workflow, releases, worktrees, and repo conventions: read `~/wipcomputerinc/settings/docs/` on demand when doing repo work. Key docs:
|
|
34
|
+
- `how-worktrees-work.md` ... git worktrees, the convention, commands
|
|
35
|
+
- `how-releases-work.md` ... the full release pipeline
|
|
36
|
+
- `system-directories.md` ... what lives where
|
|
37
|
+
- Also read `~/wipcomputerinc/settings/templates/dev-guide-private.md` for org-specific conventions
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Install LDM OS
|
|
2
|
+
|
|
3
|
+
Open your AI and paste this:
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Read https://wip.computer/install/wip-ldm-os.txt
|
|
8
|
+
|
|
9
|
+
Check if LDM OS is already installed. If it is, run ldm install --dry-run and show me what I have and what's new.
|
|
10
|
+
|
|
11
|
+
If not, walk me through setup and explain:
|
|
12
|
+
|
|
13
|
+
1. What is LDM OS?
|
|
14
|
+
2. What does it install on my system?
|
|
15
|
+
3. What changes for us? (this AI)
|
|
16
|
+
4. What changes across all my AIs?
|
|
17
|
+
|
|
18
|
+
Then ask:
|
|
19
|
+
- Do you have questions?
|
|
20
|
+
- Want to see a dry run?
|
|
21
|
+
|
|
22
|
+
If I say yes: Install the CLI first (npm install -g @wipcomputer/wip-ldm-os) and then run ldm install --dry-run.
|
|
23
|
+
|
|
24
|
+
Show me exactly what will change. Don't install anything until I say "install".
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
That's it. Your AI reads the spec, explains what it does, and walks you through a dry run before touching anything.
|