@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.
Files changed (191) hide show
  1. package/README.md +184 -73
  2. package/dist/cli/config-cmd.d.ts.map +1 -1
  3. package/dist/cli/config-cmd.js +3 -3
  4. package/dist/cli/config-cmd.js.map +1 -1
  5. package/dist/cli/graph-check.d.ts +15 -0
  6. package/dist/cli/graph-check.d.ts.map +1 -0
  7. package/dist/cli/graph-check.js +36 -0
  8. package/dist/cli/graph-check.js.map +1 -0
  9. package/dist/cli/graph-db.d.ts +4 -0
  10. package/dist/cli/graph-db.d.ts.map +1 -0
  11. package/dist/cli/graph-db.js +14 -0
  12. package/dist/cli/graph-db.js.map +1 -0
  13. package/dist/cli/graph-entity.d.ts +11 -0
  14. package/dist/cli/graph-entity.d.ts.map +1 -0
  15. package/dist/cli/graph-entity.js +18 -0
  16. package/dist/cli/graph-entity.js.map +1 -0
  17. package/dist/cli/graph-health.d.ts +19 -0
  18. package/dist/cli/graph-health.d.ts.map +1 -0
  19. package/dist/cli/graph-health.js +59 -0
  20. package/dist/cli/graph-health.js.map +1 -0
  21. package/dist/cli/graph-overlap.d.ts +12 -0
  22. package/dist/cli/graph-overlap.d.ts.map +1 -0
  23. package/dist/cli/graph-overlap.js +21 -0
  24. package/dist/cli/graph-overlap.js.map +1 -0
  25. package/dist/cli/graph-reindex.d.ts +14 -0
  26. package/dist/cli/graph-reindex.d.ts.map +1 -0
  27. package/dist/cli/graph-reindex.js +49 -0
  28. package/dist/cli/graph-reindex.js.map +1 -0
  29. package/dist/cli/graph-search.d.ts +15 -0
  30. package/dist/cli/graph-search.d.ts.map +1 -0
  31. package/dist/cli/graph-search.js +37 -0
  32. package/dist/cli/graph-search.js.map +1 -0
  33. package/dist/cli/graph-suggest.d.ts +12 -0
  34. package/dist/cli/graph-suggest.d.ts.map +1 -0
  35. package/dist/cli/graph-suggest.js +35 -0
  36. package/dist/cli/graph-suggest.js.map +1 -0
  37. package/dist/cli/graph-trace.d.ts +17 -0
  38. package/dist/cli/graph-trace.d.ts.map +1 -0
  39. package/dist/cli/graph-trace.js +30 -0
  40. package/dist/cli/graph-trace.js.map +1 -0
  41. package/dist/cli/graph-watch.d.ts +10 -0
  42. package/dist/cli/graph-watch.d.ts.map +1 -0
  43. package/dist/cli/graph-watch.js +18 -0
  44. package/dist/cli/graph-watch.js.map +1 -0
  45. package/dist/cli/mcp-client-adapter.d.ts +14 -5
  46. package/dist/cli/mcp-client-adapter.d.ts.map +1 -1
  47. package/dist/cli/mcp-client-adapter.js +14 -3
  48. package/dist/cli/mcp-client-adapter.js.map +1 -1
  49. package/dist/cli/mcp-clients.d.ts +2 -2
  50. package/dist/cli/mcp-clients.d.ts.map +1 -1
  51. package/dist/cli/mcp-clients.js +15 -0
  52. package/dist/cli/mcp-clients.js.map +1 -1
  53. package/dist/cli/plan-repair.d.ts +26 -0
  54. package/dist/cli/plan-repair.d.ts.map +1 -1
  55. package/dist/cli/plan-repair.js +84 -0
  56. package/dist/cli/plan-repair.js.map +1 -1
  57. package/dist/commands/config/sync-mcp.d.ts +1 -0
  58. package/dist/commands/config/sync-mcp.d.ts.map +1 -1
  59. package/dist/commands/config/sync-mcp.js +2 -2
  60. package/dist/commands/config/sync-mcp.js.map +1 -1
  61. package/dist/commands/graph/check.d.ts +16 -0
  62. package/dist/commands/graph/check.d.ts.map +1 -0
  63. package/dist/commands/graph/check.js +88 -0
  64. package/dist/commands/graph/check.js.map +1 -0
  65. package/dist/commands/graph/entity.d.ts +16 -0
  66. package/dist/commands/graph/entity.d.ts.map +1 -0
  67. package/dist/commands/graph/entity.js +83 -0
  68. package/dist/commands/graph/entity.js.map +1 -0
  69. package/dist/commands/graph/health.d.ts +16 -0
  70. package/dist/commands/graph/health.d.ts.map +1 -0
  71. package/dist/commands/graph/health.js +78 -0
  72. package/dist/commands/graph/health.js.map +1 -0
  73. package/dist/commands/graph/index.d.ts +3 -0
  74. package/dist/commands/graph/index.d.ts.map +1 -0
  75. package/dist/commands/graph/index.js +33 -0
  76. package/dist/commands/graph/index.js.map +1 -0
  77. package/dist/commands/graph/overlap.d.ts +18 -0
  78. package/dist/commands/graph/overlap.d.ts.map +1 -0
  79. package/dist/commands/graph/overlap.js +88 -0
  80. package/dist/commands/graph/overlap.js.map +1 -0
  81. package/dist/commands/graph/reindex.d.ts +18 -0
  82. package/dist/commands/graph/reindex.d.ts.map +1 -0
  83. package/dist/commands/graph/reindex.js +92 -0
  84. package/dist/commands/graph/reindex.js.map +1 -0
  85. package/dist/commands/graph/search.d.ts +18 -0
  86. package/dist/commands/graph/search.d.ts.map +1 -0
  87. package/dist/commands/graph/search.js +105 -0
  88. package/dist/commands/graph/search.js.map +1 -0
  89. package/dist/commands/graph/suggest.d.ts +16 -0
  90. package/dist/commands/graph/suggest.d.ts.map +1 -0
  91. package/dist/commands/graph/suggest.js +88 -0
  92. package/dist/commands/graph/suggest.js.map +1 -0
  93. package/dist/commands/graph/trace.d.ts +22 -0
  94. package/dist/commands/graph/trace.d.ts.map +1 -0
  95. package/dist/commands/graph/trace.js +97 -0
  96. package/dist/commands/graph/trace.js.map +1 -0
  97. package/dist/commands/graph/watch.d.ts +17 -0
  98. package/dist/commands/graph/watch.d.ts.map +1 -0
  99. package/dist/commands/graph/watch.js +48 -0
  100. package/dist/commands/graph/watch.js.map +1 -0
  101. package/dist/commands/index.d.ts.map +1 -1
  102. package/dist/commands/index.js +1 -1
  103. package/dist/commands/index.js.map +1 -1
  104. package/dist/commands/repair-plans.d.ts.map +1 -1
  105. package/dist/commands/repair-plans.js +74 -10
  106. package/dist/commands/repair-plans.js.map +1 -1
  107. package/dist/config.d.ts +23 -0
  108. package/dist/config.d.ts.map +1 -1
  109. package/dist/config.js +49 -0
  110. package/dist/config.js.map +1 -1
  111. package/dist/graph/conflict-detector.d.ts +27 -0
  112. package/dist/graph/conflict-detector.d.ts.map +1 -0
  113. package/dist/graph/conflict-detector.js +168 -0
  114. package/dist/graph/conflict-detector.js.map +1 -0
  115. package/dist/graph/extractor.d.ts +10 -0
  116. package/dist/graph/extractor.d.ts.map +1 -0
  117. package/dist/graph/extractor.js +266 -0
  118. package/dist/graph/extractor.js.map +1 -0
  119. package/dist/graph/notifier.d.ts +16 -0
  120. package/dist/graph/notifier.d.ts.map +1 -0
  121. package/dist/graph/notifier.js +61 -0
  122. package/dist/graph/notifier.js.map +1 -0
  123. package/dist/graph/parser.d.ts +10 -0
  124. package/dist/graph/parser.d.ts.map +1 -0
  125. package/dist/graph/parser.js +54 -0
  126. package/dist/graph/parser.js.map +1 -0
  127. package/dist/graph/patterns.d.ts +16 -0
  128. package/dist/graph/patterns.d.ts.map +1 -0
  129. package/dist/graph/patterns.js +23 -0
  130. package/dist/graph/patterns.js.map +1 -0
  131. package/dist/graph/resolver.d.ts +23 -0
  132. package/dist/graph/resolver.d.ts.map +1 -0
  133. package/dist/graph/resolver.js +98 -0
  134. package/dist/graph/resolver.js.map +1 -0
  135. package/dist/graph/similarity.d.ts +38 -0
  136. package/dist/graph/similarity.d.ts.map +1 -0
  137. package/dist/graph/similarity.js +74 -0
  138. package/dist/graph/similarity.js.map +1 -0
  139. package/dist/graph/storage.js +2 -2
  140. package/dist/graph/watcher.d.ts +23 -0
  141. package/dist/graph/watcher.d.ts.map +1 -0
  142. package/dist/graph/watcher.js +94 -0
  143. package/dist/graph/watcher.js.map +1 -0
  144. package/dist/resources/plans-summary.d.ts.map +1 -1
  145. package/dist/resources/plans-summary.js +7 -5
  146. package/dist/resources/plans-summary.js.map +1 -1
  147. package/dist/retrieval/bfs.d.ts +27 -0
  148. package/dist/retrieval/bfs.d.ts.map +1 -0
  149. package/dist/retrieval/bfs.js +77 -0
  150. package/dist/retrieval/bfs.js.map +1 -0
  151. package/dist/retrieval/hybrid.d.ts +25 -0
  152. package/dist/retrieval/hybrid.d.ts.map +1 -0
  153. package/dist/retrieval/hybrid.js +84 -0
  154. package/dist/retrieval/hybrid.js.map +1 -0
  155. package/dist/retrieval/recipes.d.ts +20 -0
  156. package/dist/retrieval/recipes.d.ts.map +1 -0
  157. package/dist/retrieval/recipes.js +123 -0
  158. package/dist/retrieval/recipes.js.map +1 -0
  159. package/dist/retrieval/router.d.ts +7 -0
  160. package/dist/retrieval/router.d.ts.map +1 -0
  161. package/dist/retrieval/router.js +51 -0
  162. package/dist/retrieval/router.js.map +1 -0
  163. package/dist/retrieval/rrf.d.ts +21 -0
  164. package/dist/retrieval/rrf.d.ts.map +1 -0
  165. package/dist/retrieval/rrf.js +27 -0
  166. package/dist/retrieval/rrf.js.map +1 -0
  167. package/dist/retrieval/types.d.ts +60 -0
  168. package/dist/retrieval/types.d.ts.map +1 -0
  169. package/dist/retrieval/types.js +18 -0
  170. package/dist/retrieval/types.js.map +1 -0
  171. package/dist/rlm/sandbox.d.ts.map +1 -1
  172. package/dist/rlm/sandbox.js +8 -1
  173. package/dist/rlm/sandbox.js.map +1 -1
  174. package/dist/tools/configure-scoring.d.ts.map +1 -1
  175. package/dist/tools/configure-scoring.js +3 -0
  176. package/dist/tools/configure-scoring.js.map +1 -1
  177. package/dist/tools/graph.d.ts +32 -0
  178. package/dist/tools/graph.d.ts.map +1 -0
  179. package/dist/tools/graph.js +105 -0
  180. package/dist/tools/graph.js.map +1 -0
  181. package/dist/tools/index.d.ts +1 -1
  182. package/dist/tools/index.d.ts.map +1 -1
  183. package/dist/tools/index.js +21 -0
  184. package/dist/tools/index.js.map +1 -1
  185. package/dist/tools/process-doc.d.ts.map +1 -1
  186. package/dist/tools/process-doc.js +14 -0
  187. package/dist/tools/process-doc.js.map +1 -1
  188. package/dist/tools/process-docs.d.ts.map +1 -1
  189. package/dist/tools/process-docs.js +14 -0
  190. package/dist/tools/process-docs.js.map +1 -1
  191. package/package.json +2 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@sudosandwich/limps)](https://www.npmjs.com/package/@sudosandwich/limps)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- ![Tests](https://img.shields.io/badge/Tests-899%20passing-brightgreen)
7
+ ![Tests](https://img.shields.io/badge/Tests-1167%20passing-brightgreen)
8
8
  ![Coverage](https://img.shields.io/badge/Coverage-%3E70%25-brightgreen)
9
9
  [![MCP Badge](https://lobehub.com/badge/mcp/paulbreuler-limps)](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 | Config Location | Command |
115
- |--------|----------------|---------|
116
- | **Cursor** | `.cursor/mcp.json` (local) | `limps config sync-mcp --client cursor` |
117
- | **Claude Code** | `.mcp.json` (local) | `limps config sync-mcp --client claude-code` |
118
- | **Claude Desktop** | Global config | `limps config sync-mcp --client claude --global` |
119
- | **OpenAI Codex** | `~/.codex/config.toml` | `limps config sync-mcp --client codex --global` |
120
- | **ChatGPT** | Manual setup | `limps config sync-mcp --client chatgpt --print` |
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": ["-y", "@sudosandwich/limps", "serve", "--config", "/path/to/config.json"]
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": ["/c", "npx", "-y", "@sudosandwich/limps", "serve", "--config", "C:\\path\\to\\config.json"]
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 | Path |
320
- |----|------|
321
- | macOS | `~/Library/Application Support/limps/config.json` |
322
- | Linux | `~/.config/limps/config.json` |
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 | Description |
345
- |--------|-------------|
346
- | `plansPath` | Directory for structured plans (`NNNN-name/` with agents) |
347
- | `docsPaths` | Additional directories to index |
348
- | `fileExtensions` | File types to index (default: `.md`) |
349
- | `dataPath` | SQLite database location |
350
- | `tools` | Tool allowlist/denylist filtering |
351
- | `extensions` | Extension packages to load |
352
- | `scoring` | Task prioritization weights and biases |
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 | Description | Example |
357
- |---|---|---|
358
- | `LIMPS_PROJECT` | Select active project for CLI commands | `LIMPS_PROJECT=project-b limps list-plans` |
359
- | `LIMPS_ALLOWED_TOOLS` | Comma-separated allowlist; only these tools are registered | `LIMPS_ALLOWED_TOOLS="list_docs,search_docs"` |
360
- | `LIMPS_DISABLED_TOOLS` | Comma-separated denylist; tools to hide | `LIMPS_DISABLED_TOOLS="process_doc,process_docs"` |
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 15 MCP tools for AI assistants:
422
+ limps exposes MCP tools for AI assistants:
367
423
 
368
- | Category | Tools |
369
- |----------|-------|
370
- | **Documents** | `process_doc`, `process_docs`, `create_doc`, `update_doc`, `delete_doc`, `list_docs`, `search_docs`, `manage_tags`, `open_document_in_cursor` |
371
- | **Plans** | `create_plan`, `list_plans`, `list_agents`, `get_plan_status` |
372
- | **Tasks** | `get_next_task`, `update_task_status` |
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
- ## Skills
432
+ ### Knowledge Graph
375
433
 
376
- This repo includes a limps planning skill for AI IDEs in `skills/limps-planning`.
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
- Install from GitHub:
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
- npx skills add paulbreuler/limps/skills/limps-planning
468
+ limps health check --json # Run all checks
469
+ limps proposals apply-safe # Auto-apply safe fixes
382
470
  ```
383
471
 
384
- The skill focuses on selecting the right limps tools for common planning workflows.
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
- This flow is used by the **create-feature-plan** command you can find in [claude/commands](/.claude/commands/) along with other useful commands and skills. These can be followed manually with MCP tools. The docs path is whatever folder limps is pointed at (any directory, not necessarily a repo).
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. **Gather context** — Project name and scope, work type (`refactor` | `overhaul` | `features`), tech stack, prototype/reference docs, known gotchas.
445
- 2. **Create planning docs** Use MCP:
446
- - `list_docs` on `plans/` to get the next plan number (max existing + 1).
447
- - `create_plan` with name `NNNN-descriptive-name` and a short description.
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
- Resulting layout:
566
+ Plans follow this layout:
454
567
 
455
568
  ```
456
569
  NNNN-descriptive-name/
457
570
  ├── README.md
458
- ├── {plan-name}-plan.md
571
+ ├── NNNN-descriptive-name-plan.md
459
572
  ├── interfaces.md
460
- ├── gotchas.md
461
573
  └── agents/
462
574
  ├── 000_agent_infrastructure.agent.md
463
- ├── 001_agent_....agent.md
575
+ ├── 001_agent_feature-a.agent.md
464
576
  └── ...
465
577
  ```
466
578
 
467
- ### Why the prefixes?
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 | Max Points | Description |
510
- |-----------|------------|-------------|
511
- | Dependency | 40 | All dependencies satisfied = 40, else 0 |
512
- | Priority | 30 | Based on agent number (lower = higher priority) |
513
- | Workload | 30 | Based on file count (fewer = higher score) |
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: 'plans/0001-feature/plan.md',
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: 'plans/0001/plan.md',
559
- code: 'extractFeatures(doc.content)',
560
- sub_query: 'Summarize each feature',
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: 'force' // or 'auto' (skips small results)
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 | Description |
574
- |----------|-------------|
575
- | `plans://index` | List of all plans (minimal) |
683
+ | Resource | Description |
684
+ | ----------------- | ---------------------------- |
685
+ | `plans://index` | List of all plans (minimal) |
576
686
  | `plans://summary` | Plan summaries with key info |
577
- | `plans://full` | Full plan documents |
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":"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"}
1
+ {"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
@@ -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')