@sudosandwich/limps 2.12.0 → 2.13.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 +184 -73
- package/dist/cli/config-cmd.d.ts.map +1 -1
- package/dist/cli/config-cmd.js +3 -3
- package/dist/cli/config-cmd.js.map +1 -1
- package/dist/cli/graph-check.d.ts +15 -0
- package/dist/cli/graph-check.d.ts.map +1 -0
- package/dist/cli/graph-check.js +36 -0
- package/dist/cli/graph-check.js.map +1 -0
- package/dist/cli/graph-db.d.ts +4 -0
- package/dist/cli/graph-db.d.ts.map +1 -0
- package/dist/cli/graph-db.js +14 -0
- package/dist/cli/graph-db.js.map +1 -0
- package/dist/cli/graph-entity.d.ts +11 -0
- package/dist/cli/graph-entity.d.ts.map +1 -0
- package/dist/cli/graph-entity.js +18 -0
- package/dist/cli/graph-entity.js.map +1 -0
- package/dist/cli/graph-health.d.ts +19 -0
- package/dist/cli/graph-health.d.ts.map +1 -0
- package/dist/cli/graph-health.js +59 -0
- package/dist/cli/graph-health.js.map +1 -0
- package/dist/cli/graph-overlap.d.ts +12 -0
- package/dist/cli/graph-overlap.d.ts.map +1 -0
- package/dist/cli/graph-overlap.js +21 -0
- package/dist/cli/graph-overlap.js.map +1 -0
- package/dist/cli/graph-reindex.d.ts +14 -0
- package/dist/cli/graph-reindex.d.ts.map +1 -0
- package/dist/cli/graph-reindex.js +49 -0
- package/dist/cli/graph-reindex.js.map +1 -0
- package/dist/cli/graph-search.d.ts +15 -0
- package/dist/cli/graph-search.d.ts.map +1 -0
- package/dist/cli/graph-search.js +37 -0
- package/dist/cli/graph-search.js.map +1 -0
- package/dist/cli/graph-suggest.d.ts +12 -0
- package/dist/cli/graph-suggest.d.ts.map +1 -0
- package/dist/cli/graph-suggest.js +35 -0
- package/dist/cli/graph-suggest.js.map +1 -0
- package/dist/cli/graph-trace.d.ts +17 -0
- package/dist/cli/graph-trace.d.ts.map +1 -0
- package/dist/cli/graph-trace.js +30 -0
- package/dist/cli/graph-trace.js.map +1 -0
- package/dist/cli/graph-watch.d.ts +10 -0
- package/dist/cli/graph-watch.d.ts.map +1 -0
- package/dist/cli/graph-watch.js +18 -0
- package/dist/cli/graph-watch.js.map +1 -0
- package/dist/cli/mcp-client-adapter.d.ts +14 -5
- package/dist/cli/mcp-client-adapter.d.ts.map +1 -1
- package/dist/cli/mcp-client-adapter.js +14 -3
- package/dist/cli/mcp-client-adapter.js.map +1 -1
- package/dist/cli/mcp-clients.d.ts +2 -2
- package/dist/cli/mcp-clients.d.ts.map +1 -1
- package/dist/cli/mcp-clients.js +15 -0
- package/dist/cli/mcp-clients.js.map +1 -1
- package/dist/cli/plan-repair.d.ts +26 -0
- package/dist/cli/plan-repair.d.ts.map +1 -1
- package/dist/cli/plan-repair.js +84 -0
- package/dist/cli/plan-repair.js.map +1 -1
- package/dist/commands/config/sync-mcp.d.ts +1 -0
- package/dist/commands/config/sync-mcp.d.ts.map +1 -1
- package/dist/commands/config/sync-mcp.js +2 -2
- package/dist/commands/config/sync-mcp.js.map +1 -1
- package/dist/commands/graph/check.d.ts +16 -0
- package/dist/commands/graph/check.d.ts.map +1 -0
- package/dist/commands/graph/check.js +88 -0
- package/dist/commands/graph/check.js.map +1 -0
- package/dist/commands/graph/entity.d.ts +16 -0
- package/dist/commands/graph/entity.d.ts.map +1 -0
- package/dist/commands/graph/entity.js +83 -0
- package/dist/commands/graph/entity.js.map +1 -0
- package/dist/commands/graph/health.d.ts +16 -0
- package/dist/commands/graph/health.d.ts.map +1 -0
- package/dist/commands/graph/health.js +78 -0
- package/dist/commands/graph/health.js.map +1 -0
- package/dist/commands/graph/index.d.ts +3 -0
- package/dist/commands/graph/index.d.ts.map +1 -0
- package/dist/commands/graph/index.js +33 -0
- package/dist/commands/graph/index.js.map +1 -0
- package/dist/commands/graph/overlap.d.ts +18 -0
- package/dist/commands/graph/overlap.d.ts.map +1 -0
- package/dist/commands/graph/overlap.js +88 -0
- package/dist/commands/graph/overlap.js.map +1 -0
- package/dist/commands/graph/reindex.d.ts +18 -0
- package/dist/commands/graph/reindex.d.ts.map +1 -0
- package/dist/commands/graph/reindex.js +92 -0
- package/dist/commands/graph/reindex.js.map +1 -0
- package/dist/commands/graph/search.d.ts +18 -0
- package/dist/commands/graph/search.d.ts.map +1 -0
- package/dist/commands/graph/search.js +105 -0
- package/dist/commands/graph/search.js.map +1 -0
- package/dist/commands/graph/suggest.d.ts +16 -0
- package/dist/commands/graph/suggest.d.ts.map +1 -0
- package/dist/commands/graph/suggest.js +88 -0
- package/dist/commands/graph/suggest.js.map +1 -0
- package/dist/commands/graph/trace.d.ts +22 -0
- package/dist/commands/graph/trace.d.ts.map +1 -0
- package/dist/commands/graph/trace.js +97 -0
- package/dist/commands/graph/trace.js.map +1 -0
- package/dist/commands/graph/watch.d.ts +17 -0
- package/dist/commands/graph/watch.d.ts.map +1 -0
- package/dist/commands/graph/watch.js +48 -0
- package/dist/commands/graph/watch.js.map +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/repair-plans.d.ts.map +1 -1
- package/dist/commands/repair-plans.js +74 -10
- package/dist/commands/repair-plans.js.map +1 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -1
- package/dist/graph/conflict-detector.d.ts +27 -0
- package/dist/graph/conflict-detector.d.ts.map +1 -0
- package/dist/graph/conflict-detector.js +168 -0
- package/dist/graph/conflict-detector.js.map +1 -0
- package/dist/graph/extractor.d.ts +10 -0
- package/dist/graph/extractor.d.ts.map +1 -0
- package/dist/graph/extractor.js +266 -0
- package/dist/graph/extractor.js.map +1 -0
- package/dist/graph/notifier.d.ts +16 -0
- package/dist/graph/notifier.d.ts.map +1 -0
- package/dist/graph/notifier.js +61 -0
- package/dist/graph/notifier.js.map +1 -0
- package/dist/graph/parser.d.ts +10 -0
- package/dist/graph/parser.d.ts.map +1 -0
- package/dist/graph/parser.js +54 -0
- package/dist/graph/parser.js.map +1 -0
- package/dist/graph/patterns.d.ts +16 -0
- package/dist/graph/patterns.d.ts.map +1 -0
- package/dist/graph/patterns.js +23 -0
- package/dist/graph/patterns.js.map +1 -0
- package/dist/graph/resolver.d.ts +23 -0
- package/dist/graph/resolver.d.ts.map +1 -0
- package/dist/graph/resolver.js +98 -0
- package/dist/graph/resolver.js.map +1 -0
- package/dist/graph/similarity.d.ts +38 -0
- package/dist/graph/similarity.d.ts.map +1 -0
- package/dist/graph/similarity.js +74 -0
- package/dist/graph/similarity.js.map +1 -0
- package/dist/graph/storage.js +2 -2
- package/dist/graph/watcher.d.ts +23 -0
- package/dist/graph/watcher.d.ts.map +1 -0
- package/dist/graph/watcher.js +94 -0
- package/dist/graph/watcher.js.map +1 -0
- package/dist/resources/plans-summary.d.ts.map +1 -1
- package/dist/resources/plans-summary.js +7 -5
- package/dist/resources/plans-summary.js.map +1 -1
- package/dist/retrieval/bfs.d.ts +27 -0
- package/dist/retrieval/bfs.d.ts.map +1 -0
- package/dist/retrieval/bfs.js +77 -0
- package/dist/retrieval/bfs.js.map +1 -0
- package/dist/retrieval/hybrid.d.ts +25 -0
- package/dist/retrieval/hybrid.d.ts.map +1 -0
- package/dist/retrieval/hybrid.js +84 -0
- package/dist/retrieval/hybrid.js.map +1 -0
- package/dist/retrieval/recipes.d.ts +20 -0
- package/dist/retrieval/recipes.d.ts.map +1 -0
- package/dist/retrieval/recipes.js +123 -0
- package/dist/retrieval/recipes.js.map +1 -0
- package/dist/retrieval/router.d.ts +7 -0
- package/dist/retrieval/router.d.ts.map +1 -0
- package/dist/retrieval/router.js +51 -0
- package/dist/retrieval/router.js.map +1 -0
- package/dist/retrieval/rrf.d.ts +21 -0
- package/dist/retrieval/rrf.d.ts.map +1 -0
- package/dist/retrieval/rrf.js +27 -0
- package/dist/retrieval/rrf.js.map +1 -0
- package/dist/retrieval/types.d.ts +60 -0
- package/dist/retrieval/types.d.ts.map +1 -0
- package/dist/retrieval/types.js +18 -0
- package/dist/retrieval/types.js.map +1 -0
- package/dist/rlm/sandbox.d.ts.map +1 -1
- package/dist/rlm/sandbox.js +8 -1
- package/dist/rlm/sandbox.js.map +1 -1
- package/dist/tools/configure-scoring.d.ts.map +1 -1
- package/dist/tools/configure-scoring.js +3 -0
- package/dist/tools/configure-scoring.js.map +1 -1
- package/dist/tools/graph.d.ts +32 -0
- package/dist/tools/graph.d.ts.map +1 -0
- package/dist/tools/graph.js +105 -0
- package/dist/tools/graph.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +21 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/process-doc.d.ts.map +1 -1
- package/dist/tools/process-doc.js +14 -0
- package/dist/tools/process-doc.js.map +1 -1
- package/dist/tools/process-docs.d.ts.map +1 -1
- package/dist/tools/process-docs.js +14 -0
- package/dist/tools/process-docs.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@sudosandwich/limps)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|
[](https://lobehub.com/mcp/paulbreuler-limps)
|
|
10
10
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [Quick Start](#quick-start)
|
|
16
16
|
- [Features](#features)
|
|
17
17
|
- [How I Use limps](#how-i-use-limps)
|
|
18
|
+
- [Health & Automation](#health--automation)
|
|
18
19
|
- [How You Can Use It](#how-you-can-use-it)
|
|
19
20
|
- [Why limps?](#why-limps)
|
|
20
21
|
- [Installation](#installation)
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
- [Configuration](#configuration)
|
|
26
27
|
- [Environment Variables](#environment-variables)
|
|
27
28
|
- [MCP Tools](#mcp-tools)
|
|
28
|
-
- [Skills](#skills)
|
|
29
|
+
- [Skills & Commands](#skills--commands)
|
|
29
30
|
- [Extensions](#extensions)
|
|
30
31
|
- [Obsidian Compatibility](#obsidian-compatibility)
|
|
31
32
|
- [Development](#development)
|
|
@@ -60,6 +61,10 @@ Run this in the folder where you want to keep the docs and that's it. Your AI as
|
|
|
60
61
|
- **Sandboxed document processing** via `process_doc(s)` helpers
|
|
61
62
|
- **Multi-client sync** for Cursor, Claude, Codex, and more
|
|
62
63
|
- **Extensions** for domain-specific tooling (e.g., limps-headless)
|
|
64
|
+
- **Knowledge graph** — Entity extraction, hybrid retrieval, conflict detection, and graph-based suggestions
|
|
65
|
+
- **Health automation** — Staleness detection, code drift checks, status inference, and auto-fix proposals
|
|
66
|
+
- **Advanced task scoring** — Dependency-aware prioritization with per-plan/agent weight overrides
|
|
67
|
+
- **MCP Registry** — Published to the official MCP Registry (`registry.modelcontextprotocol.io`)
|
|
63
68
|
|
|
64
69
|
### What to know before you start
|
|
65
70
|
|
|
@@ -84,6 +89,7 @@ Commands and tools I use most often:
|
|
|
84
89
|
- **Read**: `list_plans`, `list_agents`, `list_docs`, `search_docs`, `get_plan_status`
|
|
85
90
|
- **Update**: `update_doc`, `update_task_status`, `manage_tags`
|
|
86
91
|
- **Close**: `update_task_status` (e.g., `PASS`), `delete_doc` if needed
|
|
92
|
+
- **Analyze**: `graph health`, `graph search`, `graph check`, `health check`
|
|
87
93
|
|
|
88
94
|
Full lists are below in "CLI Commands" and "MCP Tools."
|
|
89
95
|
|
|
@@ -111,13 +117,13 @@ Key ideas:
|
|
|
111
117
|
|
|
112
118
|
### Supported Clients
|
|
113
119
|
|
|
114
|
-
| Client
|
|
115
|
-
|
|
116
|
-
| **Cursor**
|
|
117
|
-
| **Claude Code**
|
|
118
|
-
| **Claude Desktop** | Global config
|
|
119
|
-
| **OpenAI Codex**
|
|
120
|
-
| **ChatGPT**
|
|
120
|
+
| Client | Config Location | Command |
|
|
121
|
+
| ------------------ | -------------------------- | ------------------------------------------------ |
|
|
122
|
+
| **Cursor** | `.cursor/mcp.json` (local) | `limps config sync-mcp --client cursor` |
|
|
123
|
+
| **Claude Code** | `.mcp.json` (local) | `limps config sync-mcp --client claude-code` |
|
|
124
|
+
| **Claude Desktop** | Global config | `limps config sync-mcp --client claude --global` |
|
|
125
|
+
| **OpenAI Codex** | `~/.codex/config.toml` | `limps config sync-mcp --client codex --global` |
|
|
126
|
+
| **ChatGPT** | Manual setup | `limps config sync-mcp --client chatgpt --print` |
|
|
121
127
|
|
|
122
128
|
> **Note:** By default, `sync-mcp` writes to local/project configs. Use `--global` for user-level configs.
|
|
123
129
|
|
|
@@ -227,7 +233,13 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
227
233
|
"mcpServers": {
|
|
228
234
|
"limps": {
|
|
229
235
|
"command": "npx",
|
|
230
|
-
"args": [
|
|
236
|
+
"args": [
|
|
237
|
+
"-y",
|
|
238
|
+
"@sudosandwich/limps",
|
|
239
|
+
"serve",
|
|
240
|
+
"--config",
|
|
241
|
+
"/path/to/config.json"
|
|
242
|
+
]
|
|
231
243
|
}
|
|
232
244
|
}
|
|
233
245
|
}
|
|
@@ -245,7 +257,15 @@ On Windows, use `cmd /c` to run `npx`:
|
|
|
245
257
|
"mcpServers": {
|
|
246
258
|
"limps": {
|
|
247
259
|
"command": "cmd",
|
|
248
|
-
"args": [
|
|
260
|
+
"args": [
|
|
261
|
+
"/c",
|
|
262
|
+
"npx",
|
|
263
|
+
"-y",
|
|
264
|
+
"@sudosandwich/limps",
|
|
265
|
+
"serve",
|
|
266
|
+
"--config",
|
|
267
|
+
"C:\\path\\to\\config.json"
|
|
268
|
+
]
|
|
249
269
|
}
|
|
250
270
|
}
|
|
251
271
|
}
|
|
@@ -312,15 +332,49 @@ limps config show # Display current config
|
|
|
312
332
|
limps config sync-mcp # Add projects to MCP clients
|
|
313
333
|
```
|
|
314
334
|
|
|
335
|
+
### Health & Automation
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
limps health check # Aggregate all health signals
|
|
339
|
+
limps health staleness [plan] # Find stale plans/agents
|
|
340
|
+
limps health drift [plan] # Detect file reference drift
|
|
341
|
+
limps health inference [plan] # Suggest status updates
|
|
342
|
+
limps proposals list # List auto-fix proposals
|
|
343
|
+
limps proposals apply <id> # Apply a proposal
|
|
344
|
+
limps proposals apply-safe # Apply all safe proposals
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Knowledge Graph
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
limps graph reindex # Build/rebuild graph
|
|
351
|
+
limps graph health # Graph stats and conflicts
|
|
352
|
+
limps graph search <query> # Search entities
|
|
353
|
+
limps graph trace <entity> # Trace relationships
|
|
354
|
+
limps graph entity <id> # Entity details
|
|
355
|
+
limps graph overlap # Find overlapping features
|
|
356
|
+
limps graph check [type] # Run conflict detection
|
|
357
|
+
limps graph suggest <type> # Graph-based suggestions
|
|
358
|
+
limps graph watch # Watch and update incrementally
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Scoring & Repair
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
limps score-all <plan> # Score all agents in a plan
|
|
365
|
+
limps score-task <task-id> # Score a single task
|
|
366
|
+
limps repair-plans [--fix] # Check/fix agent frontmatter
|
|
367
|
+
```
|
|
368
|
+
|
|
315
369
|
## Configuration
|
|
316
370
|
|
|
317
371
|
Config location varies by OS:
|
|
318
372
|
|
|
319
|
-
| OS
|
|
320
|
-
|
|
321
|
-
| macOS
|
|
322
|
-
| Linux
|
|
323
|
-
| Windows | `%APPDATA%\limps\config.json`
|
|
373
|
+
| OS | Path |
|
|
374
|
+
| ------- | ------------------------------------------------- |
|
|
375
|
+
| macOS | `~/Library/Application Support/limps/config.json` |
|
|
376
|
+
| Linux | `~/.config/limps/config.json` |
|
|
377
|
+
| Windows | `%APPDATA%\limps\config.json` |
|
|
324
378
|
|
|
325
379
|
### Config Options
|
|
326
380
|
|
|
@@ -341,47 +395,108 @@ Config location varies by OS:
|
|
|
341
395
|
}
|
|
342
396
|
```
|
|
343
397
|
|
|
344
|
-
| Option
|
|
345
|
-
|
|
346
|
-
| `plansPath`
|
|
347
|
-
| `docsPaths`
|
|
348
|
-
| `fileExtensions` | File types to index (default: `.md`)
|
|
349
|
-
| `dataPath`
|
|
350
|
-
| `tools`
|
|
351
|
-
| `extensions`
|
|
352
|
-
| `scoring`
|
|
398
|
+
| Option | Description |
|
|
399
|
+
| ---------------- | ---------------------------------------------------------- |
|
|
400
|
+
| `plansPath` | Directory for structured plans (`NNNN-name/` with agents) |
|
|
401
|
+
| `docsPaths` | Additional directories to index |
|
|
402
|
+
| `fileExtensions` | File types to index (default: `.md`) |
|
|
403
|
+
| `dataPath` | SQLite database location |
|
|
404
|
+
| `tools` | Tool allowlist/denylist filtering |
|
|
405
|
+
| `extensions` | Extension packages to load |
|
|
406
|
+
| `scoring` | Task prioritization weights and biases |
|
|
407
|
+
| `graph` | Knowledge graph settings (e.g., entity extraction options) |
|
|
408
|
+
| `retrieval` | Search recipe configuration for hybrid retrieval |
|
|
353
409
|
|
|
354
410
|
## Environment Variables
|
|
355
411
|
|
|
356
|
-
| Variable
|
|
357
|
-
|
|
358
|
-
| `LIMPS_PROJECT`
|
|
359
|
-
| `LIMPS_ALLOWED_TOOLS`
|
|
360
|
-
| `LIMPS_DISABLED_TOOLS` | Comma-separated denylist; tools to hide
|
|
412
|
+
| Variable | Description | Example |
|
|
413
|
+
| ---------------------- | ---------------------------------------------------------- | ------------------------------------------------- |
|
|
414
|
+
| `LIMPS_PROJECT` | Select active project for CLI commands | `LIMPS_PROJECT=project-b limps list-plans` |
|
|
415
|
+
| `LIMPS_ALLOWED_TOOLS` | Comma-separated allowlist; only these tools are registered | `LIMPS_ALLOWED_TOOLS="list_docs,search_docs"` |
|
|
416
|
+
| `LIMPS_DISABLED_TOOLS` | Comma-separated denylist; tools to hide | `LIMPS_DISABLED_TOOLS="process_doc,process_docs"` |
|
|
361
417
|
|
|
362
418
|
**Precedence:** `config.tools` overrides env vars. If allowlist is set, denylist is ignored.
|
|
363
419
|
|
|
364
420
|
## MCP Tools
|
|
365
421
|
|
|
366
|
-
limps exposes
|
|
422
|
+
limps exposes MCP tools for AI assistants:
|
|
367
423
|
|
|
368
|
-
| Category
|
|
369
|
-
|
|
370
|
-
| **Documents**
|
|
371
|
-
| **Plans**
|
|
372
|
-
| **Tasks**
|
|
424
|
+
| Category | Tools |
|
|
425
|
+
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
426
|
+
| **Documents** | `process_doc`, `process_docs`, `create_doc`, `update_doc`, `delete_doc`, `list_docs`, `search_docs`, `manage_tags`, `open_document_in_cursor` |
|
|
427
|
+
| **Plans** | `create_plan`, `list_plans`, `list_agents`, `get_plan_status` |
|
|
428
|
+
| **Tasks** | `get_next_task`, `update_task_status`, `configure_scoring` |
|
|
429
|
+
| **Health** | `check_staleness`, `check_drift`, `infer_status`, `get_proposals`, `apply_proposal` |
|
|
430
|
+
| **Knowledge Graph** | `graph` (unified: health, search, trace, entity, overlap, reindex, check, suggest) |
|
|
373
431
|
|
|
374
|
-
|
|
432
|
+
### Knowledge Graph
|
|
375
433
|
|
|
376
|
-
|
|
434
|
+
The knowledge graph builds a structured, queryable representation of your planning documents. It extracts 6 entity types (**plan**, **agent**, **feature**, **file**, **tag**, **concept**) and their relationships (ownership, dependency, modification, tagging, conceptual links). Use it to find conflicts, trace dependencies, and get graph-based suggestions.
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
# Build the graph from plan files
|
|
438
|
+
limps graph reindex
|
|
377
439
|
|
|
378
|
-
|
|
440
|
+
# Check graph health and conflicts
|
|
441
|
+
limps graph health --json
|
|
442
|
+
|
|
443
|
+
# Search entities
|
|
444
|
+
limps graph search "auth" --json
|
|
445
|
+
|
|
446
|
+
# Trace relationships
|
|
447
|
+
limps graph trace plan:0042 --direction down
|
|
448
|
+
|
|
449
|
+
# Detect conflicts (file contention, circular deps, stale WIP)
|
|
450
|
+
limps graph check --json
|
|
451
|
+
|
|
452
|
+
# Get graph-based suggestions
|
|
453
|
+
limps graph suggest dependency-order
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
See [Knowledge Graph Architecture](docs/knowledge-graph.md) and [CLI Reference](docs/cli-reference.md) for details.
|
|
457
|
+
|
|
458
|
+
### Health & Automation
|
|
459
|
+
|
|
460
|
+
limps includes automated health checks that detect issues and suggest fixes:
|
|
461
|
+
|
|
462
|
+
- **Staleness** — Flags plans/agents not updated within configurable thresholds
|
|
463
|
+
- **Code drift** — Detects when agent frontmatter references files that no longer exist
|
|
464
|
+
- **Status inference** — Suggests status changes based on dependency completion and body content
|
|
465
|
+
- **Proposals** — Aggregates all suggestions into reviewable, apply-able fixes
|
|
379
466
|
|
|
380
467
|
```bash
|
|
381
|
-
|
|
468
|
+
limps health check --json # Run all checks
|
|
469
|
+
limps proposals apply-safe # Auto-apply safe fixes
|
|
382
470
|
```
|
|
383
471
|
|
|
384
|
-
|
|
472
|
+
## Skills & Commands
|
|
473
|
+
|
|
474
|
+
This repo ships Claude Code slash commands in [`.claude/commands/`](/.claude/commands/) and a [Vercel Skills](https://github.com/vercel-labs/skills) skill in `skills/limps-planning`.
|
|
475
|
+
|
|
476
|
+
**Claude Code commands** (available automatically when limps is your working directory):
|
|
477
|
+
|
|
478
|
+
| Command | Description |
|
|
479
|
+
| ---------------------- | ------------------------------------- |
|
|
480
|
+
| `/create-feature-plan` | Create a full TDD plan with agents |
|
|
481
|
+
| `/run-agent` | Pick up and execute the next agent |
|
|
482
|
+
| `/close-feature-agent` | Mark an agent PASS and clean up |
|
|
483
|
+
| `/update-feature-plan` | Revise an existing plan |
|
|
484
|
+
| `/audit-plan` | Audit a plan for completeness |
|
|
485
|
+
| `/list-feature-plans` | List all plans with status |
|
|
486
|
+
| `/plan-list-agents` | List agents in a plan |
|
|
487
|
+
| `/plan-check-status` | Check plan progress |
|
|
488
|
+
| `/pr-create` | Create a PR from the current branch |
|
|
489
|
+
| `/pr-check-and-fix` | Fix CI failures and update PR |
|
|
490
|
+
| `/pr-comments` | Review and respond to PR comments |
|
|
491
|
+
| `/review-branch` | General code review of current branch |
|
|
492
|
+
| `/review-mcp` | Review code for MCP/LLM safety |
|
|
493
|
+
| `/attack-cli-mcp` | Stress-test CLI + MCP for robustness |
|
|
494
|
+
|
|
495
|
+
**Vercel Skills** (for other AI IDEs):
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
npx skills add paulbreuler/limps/skills/limps-planning
|
|
499
|
+
```
|
|
385
500
|
|
|
386
501
|
## Extensions
|
|
387
502
|
|
|
@@ -439,34 +554,29 @@ limps manages planning for [runi](https://github.com/paulbreuler/runi), using a
|
|
|
439
554
|
|
|
440
555
|
## Creating a feature plan
|
|
441
556
|
|
|
442
|
-
|
|
557
|
+
The fastest way is the `/create-feature-plan` slash command (Claude Code) — it handles numbering, doc creation, and agent distillation automatically via MCP tools. See [`.claude/commands/create-feature-plan.md`](/.claude/commands/create-feature-plan.md) for the full spec.
|
|
558
|
+
|
|
559
|
+
You can also run the same steps manually with MCP tools:
|
|
443
560
|
|
|
444
|
-
1.
|
|
445
|
-
2.
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
- `create_doc` for: `{plan-name}-plan.md` (full specs), `interfaces.md`, `README.md`, `gotchas.md` (template). Use template `none` for plan/interfaces/README, `addendum` for gotchas if available.
|
|
449
|
-
3. **Assign features to agents** — Group by file ownership and dependencies; 2–4 features per agent; minimize cross-agent conflicts.
|
|
450
|
-
4. **Distill agent files** — For each agent, `create_doc` at `plans/NNNN-name/agents/NNN_agent_descriptive-name.agent.md` (template `none`). Extract from the plan: feature IDs + TL;DRs, interface contracts, files to create/modify, test IDs, TDD one-liners, brief gotchas. Target ~200–400 lines per agent.
|
|
451
|
-
5. **Validate** — Agent files self-contained; interfaces consistent; dependency graph and file ownership correct; each agent file <500 lines.
|
|
561
|
+
1. `list_plans` → determine next plan number
|
|
562
|
+
2. `create_plan` → scaffold the plan directory
|
|
563
|
+
3. `create_doc` → add plan, interfaces, README, and agent files
|
|
564
|
+
4. `update_task_status` → track progress
|
|
452
565
|
|
|
453
|
-
|
|
566
|
+
Plans follow this layout:
|
|
454
567
|
|
|
455
568
|
```
|
|
456
569
|
NNNN-descriptive-name/
|
|
457
570
|
├── README.md
|
|
458
|
-
├──
|
|
571
|
+
├── NNNN-descriptive-name-plan.md
|
|
459
572
|
├── interfaces.md
|
|
460
|
-
├── gotchas.md
|
|
461
573
|
└── agents/
|
|
462
574
|
├── 000_agent_infrastructure.agent.md
|
|
463
|
-
├──
|
|
575
|
+
├── 001_agent_feature-a.agent.md
|
|
464
576
|
└── ...
|
|
465
577
|
```
|
|
466
578
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
I chose this to keep things lexicographically ordered and easier to reference in chat. "Show me the next agent or agents we can run now in plan NNNN-plan-name", and the MCP will run the tool to process the agents applying weights and biases to choose the next best task or tasks that can run in parallel.
|
|
579
|
+
Numbered prefixes keep plans and agents lexicographically ordered. `get_next_task` uses the agent number (plus dependency and workload scores) to suggest what to work on next.
|
|
470
580
|
|
|
471
581
|
## Deep Dive
|
|
472
582
|
|
|
@@ -506,11 +616,11 @@ files:
|
|
|
506
616
|
|
|
507
617
|
`get_next_task` returns tasks scored by:
|
|
508
618
|
|
|
509
|
-
| Component
|
|
510
|
-
|
|
511
|
-
| Dependency | 40
|
|
512
|
-
| Priority
|
|
513
|
-
| Workload
|
|
619
|
+
| Component | Max Points | Description |
|
|
620
|
+
| ---------- | ---------- | ----------------------------------------------- |
|
|
621
|
+
| Dependency | 40 | All dependencies satisfied = 40, else 0 |
|
|
622
|
+
| Priority | 30 | Based on agent number (lower = higher priority) |
|
|
623
|
+
| Workload | 30 | Based on file count (fewer = higher score) |
|
|
514
624
|
|
|
515
625
|
**Biases** adjust final scores:
|
|
516
626
|
|
|
@@ -535,11 +645,11 @@ files:
|
|
|
535
645
|
|
|
536
646
|
```typescript
|
|
537
647
|
await process_doc({
|
|
538
|
-
path:
|
|
648
|
+
path: "plans/0001-feature/plan.md",
|
|
539
649
|
code: `
|
|
540
650
|
const features = extractFeatures(doc.content);
|
|
541
651
|
return features.filter(f => f.status === 'GAP');
|
|
542
|
-
|
|
652
|
+
`,
|
|
543
653
|
});
|
|
544
654
|
```
|
|
545
655
|
|
|
@@ -555,11 +665,11 @@ await process_doc({
|
|
|
555
665
|
|
|
556
666
|
```typescript
|
|
557
667
|
await process_doc({
|
|
558
|
-
path:
|
|
559
|
-
code:
|
|
560
|
-
sub_query:
|
|
668
|
+
path: "plans/0001/plan.md",
|
|
669
|
+
code: "extractFeatures(doc.content)",
|
|
670
|
+
sub_query: "Summarize each feature",
|
|
561
671
|
allow_llm: true,
|
|
562
|
-
llm_policy:
|
|
672
|
+
llm_policy: "force", // or 'auto' (skips small results)
|
|
563
673
|
});
|
|
564
674
|
```
|
|
565
675
|
|
|
@@ -570,12 +680,12 @@ await process_doc({
|
|
|
570
680
|
|
|
571
681
|
Progressive disclosure via resources:
|
|
572
682
|
|
|
573
|
-
| Resource
|
|
574
|
-
|
|
575
|
-
| `plans://index`
|
|
683
|
+
| Resource | Description |
|
|
684
|
+
| ----------------- | ---------------------------- |
|
|
685
|
+
| `plans://index` | List of all plans (minimal) |
|
|
576
686
|
| `plans://summary` | Plan summaries with key info |
|
|
577
|
-
| `plans://full`
|
|
578
|
-
| `decisions://log` | Decision log entries
|
|
687
|
+
| `plans://full` | Full plan documents |
|
|
688
|
+
| `decisions://log` | Decision log entries |
|
|
579
689
|
|
|
580
690
|
</details>
|
|
581
691
|
|
|
@@ -598,6 +708,7 @@ Start work on the next available task.
|
|
|
598
708
|
```
|
|
599
709
|
|
|
600
710
|
This integrates with limps MCP tools for seamless task management.
|
|
711
|
+
|
|
601
712
|
</details>
|
|
602
713
|
|
|
603
714
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AAatB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAgB9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAyBnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,UAAU,CAkB3E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CA8FpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,mBAAmB,EAAE,MAAM,MAAM,EACjC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,MAAM,CAuCR;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CA+C3E;AAED,wBAAgB,mBAAmB,CACjC,mBAAmB,EAAE,MAAM,MAAM,EACjC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAiGR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CAEpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAqF3E;AA+BD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA+FvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAmCxD;AAED,OAAO,EAEL,eAAe,EAEf,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAkDvC;
|
|
1
|
+
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config-cmd.js
CHANGED
|
@@ -698,11 +698,11 @@ function repairMcpConfigReferences(oldPath, newPath) {
|
|
|
698
698
|
continue;
|
|
699
699
|
let changed = false;
|
|
700
700
|
for (const server of Object.values(servers)) {
|
|
701
|
-
if (!server ||
|
|
702
|
-
typeof server !== 'object' ||
|
|
703
|
-
!Array.isArray(server.args))
|
|
701
|
+
if (!server || typeof server !== 'object')
|
|
704
702
|
continue;
|
|
705
703
|
const args = server.args;
|
|
704
|
+
if (!Array.isArray(args))
|
|
705
|
+
continue;
|
|
706
706
|
for (let i = 0; i < args.length; i++) {
|
|
707
707
|
const arg = args[i];
|
|
708
708
|
if (typeof arg !== 'string')
|