claude-launchpad 0.9.2-dev.2 → 0.10.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
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
**Score your Claude Code setup. Fix what's broken. Prove it works.**
|
|
9
9
|
|
|
10
|
-
CLAUDE.md is advisory
|
|
10
|
+
CLAUDE.md is advisory, so Claude follows your rules about 80% of the time. Hooks are deterministic: 100% compliance. Most developers have zero hooks and too many instructions. This tool scores your setup, fixes the gaps, and proves Claude follows your config.
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npx claude-launchpad
|
|
@@ -25,7 +25,7 @@ Claude Launchpad has 4 CLI commands (`init`, `doctor`, `eval`, `memory`) plus 1
|
|
|
25
25
|
claude-launchpad init
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
Detects your stack
|
|
28
|
+
Detects your stack and generates `CLAUDE.md` with your commands and conventions. Creates `TASKS.md` for tracking, `BACKLOG.md` for parking features, sets up hooks that auto-format and block dangerous operations, and adds `.claudeignore` for noise files.
|
|
29
29
|
|
|
30
30
|
Then use `/lp-enhance` inside Claude Code to have Claude read your actual codebase and fill in the architecture and guardrails — not boilerplate, real project-specific content.
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ Then use `/lp-enhance` inside Claude Code to have Claude read your actual codeba
|
|
|
35
35
|
claude-launchpad
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Scores your config out of 100 and tells you what's wrong. Run `doctor --fix` for automatic repairs, `/lp-enhance` for AI-powered rewrites, and `eval` to prove behavior.
|
|
39
39
|
|
|
40
40
|
## Command Model
|
|
41
41
|
|
|
@@ -66,8 +66,8 @@ The core of the tool. Runs 7 core analyzers against your `.claude/` directory an
|
|
|
66
66
|
|
|
67
67
|
| Analyzer | What it catches |
|
|
68
68
|
|---|---|
|
|
69
|
-
| **Instruction Budget** | Too many instructions in CLAUDE.md — Claude starts ignoring rules past ~
|
|
70
|
-
| **CLAUDE.md Quality** | Missing sections
|
|
69
|
+
| **Instruction Budget** | Too many instructions in CLAUDE.md — Claude starts ignoring rules past ~200 |
|
|
70
|
+
| **CLAUDE.md Quality** | Missing essential sections, vague instructions ("write good code"), hardcoded secrets |
|
|
71
71
|
| **Settings** | No hooks configured, dangerous tool access without safety nets |
|
|
72
72
|
| **Hooks** | Missing auto-format on save, no .env file protection, no security gates, no PostCompact hook |
|
|
73
73
|
| **Rules** | Dead rule files, stale references, empty configs |
|
|
@@ -94,7 +94,7 @@ Output looks like this:
|
|
|
94
94
|
|
|
95
95
|
| Flag | What it does |
|
|
96
96
|
|---|---|
|
|
97
|
-
| `--fix` | Auto-fixes issues: adds hooks, CLAUDE.md sections, rules, .claudeignore |
|
|
97
|
+
| `--fix` | Auto-fixes issues: adds hooks, CLAUDE.md sections, BACKLOG.md, rules, .claudeignore |
|
|
98
98
|
| `--fix --dry-run` | Preview what --fix would change without applying |
|
|
99
99
|
| `--watch` | Re-runs every second, updates when you save a config file |
|
|
100
100
|
| `--json` | Pure JSON output, no colors, no banner — for scripts and CI |
|
|
@@ -112,6 +112,7 @@ Detects your project and generates Claude Code config that fits. No templates, n
|
|
|
112
112
|
|
|
113
113
|
✓ Generated CLAUDE.md
|
|
114
114
|
✓ Generated TASKS.md
|
|
115
|
+
✓ Generated BACKLOG.md
|
|
115
116
|
✓ Generated .claude/settings.json (schema, permissions, hooks)
|
|
116
117
|
✓ Generated .claude/.gitignore
|
|
117
118
|
✓ Generated .claudeignore
|
|
@@ -121,10 +122,20 @@ Detects your project and generates Claude Code config that fits. No templates, n
|
|
|
121
122
|
**Works with:** TypeScript, JavaScript, Python, Go, Ruby, Rust, Dart, PHP, Java, Kotlin, Swift, Elixir, C# — and detects frameworks (Next.js, FastAPI, Django, Rails, Laravel, Express, SvelteKit, Angular, NestJS, and 15+ more).
|
|
122
123
|
|
|
123
124
|
**What init writes:**
|
|
124
|
-
- Always writes: `CLAUDE.md`, `TASKS.md`, `.claude/settings.json`
|
|
125
|
+
- Always writes: `CLAUDE.md`, `TASKS.md`, `BACKLOG.md`, `.claude/settings.json`
|
|
125
126
|
- Creates when missing: `.claude/.gitignore`, `.claudeignore`, `.claude/rules/conventions.md`
|
|
126
127
|
- Offers `/lp-enhance` install (project/global/skip) only when no project/global/legacy install already exists
|
|
127
128
|
|
|
129
|
+
**The three-file system:**
|
|
130
|
+
|
|
131
|
+
| File | Purpose |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `CLAUDE.md` | What Claude needs to know — stack, commands, conventions, guardrails |
|
|
134
|
+
| `TASKS.md` | What we're doing now — sprint tracking, session continuity |
|
|
135
|
+
| `BACKLOG.md` | What we're doing later — parked features with P0/P1/P2 priority tiers |
|
|
136
|
+
|
|
137
|
+
Without BACKLOG.md, deferred features get lost in conversation history or bloat TASKS.md. Init generates it, doctor checks for it, `--fix` creates it if missing.
|
|
138
|
+
|
|
128
139
|
## Enhance
|
|
129
140
|
|
|
130
141
|
Init detects your stack but can't understand your architecture. The `/lp-enhance` skill runs inside your Claude Code session to read your actual code and fill in the details.
|
|
@@ -135,7 +146,7 @@ Init detects your stack but can't understand your architecture. The `/lp-enhance
|
|
|
135
146
|
|
|
136
147
|
Installed as a skill during `init` (you pick global or project scope). Claude reads your codebase and updates CLAUDE.md with real content - actual architecture, actual conventions, actual guardrails, and memory management instructions. Not boilerplate. It also suggests project-specific hooks (including PostCompact for session continuity) and MCP servers based on what it finds.
|
|
137
148
|
|
|
138
|
-
Stays under the
|
|
149
|
+
Stays under the 200-instruction budget. Overflows detailed content to `.claude/rules/` files. If the skill is missing, `doctor --fix` will create it.
|
|
139
150
|
|
|
140
151
|
## Memory
|
|
141
152
|
|
|
@@ -245,7 +256,7 @@ Score below threshold = exit code 1 = PR blocked.
|
|
|
245
256
|
|
|
246
257
|
**Enhance** is a `/lp-enhance` skill installed during `init`. It runs inside your active Claude Code session - no separate process, no overhead. Claude already has your codebase context, so it produces better results than an external command.
|
|
247
258
|
|
|
248
|
-
**Eval** creates a temp directory, copies your full `.claude/` config (settings.json, rules, hooks, permissions) and `.claudeignore` into it, writes seed files from the scenario YAML, initializes a git repo, runs Claude via the Agent SDK (or falls back to CLI), then checks the output with grep/file assertions. Your code is never copied
|
|
259
|
+
**Eval** creates a temp directory, copies your full `.claude/` config (settings.json, rules, hooks, permissions) and `.claudeignore` into it, writes seed files from the scenario YAML, initializes a git repo, runs Claude via the Agent SDK (or falls back to CLI), then checks the output with grep/file assertions. Your code is never copied, only your Claude Code configuration. Sandbox is cleaned up after (or preserved with `--debug`).
|
|
249
260
|
|
|
250
261
|
## Why This Exists
|
|
251
262
|
|
|
@@ -258,8 +269,10 @@ New to Claude Code? Here's what the terms mean:
|
|
|
258
269
|
| Term | What it is |
|
|
259
270
|
|---|---|
|
|
260
271
|
| **CLAUDE.md** | A markdown file in your project root that tells Claude how to work on your code. Think of it as instructions for your AI pair programmer. [Official docs](https://docs.anthropic.com/en/docs/claude-code/memory#claudemd) |
|
|
272
|
+
| **TASKS.md** | Sprint tracker and session log. Claude reads this at session start to pick up where you left off. |
|
|
273
|
+
| **BACKLOG.md** | Where deferred features live. Priority tiers (P0/P1/P2) keep future ideas organized without cluttering TASKS.md. |
|
|
261
274
|
| **Hooks** | Shell commands that run automatically when Claude does something. For example: auto-format a file after Claude edits it, or block Claude from reading your `.env` file. They live in `.claude/settings.json`. |
|
|
262
|
-
| **Instruction budget** | CLAUDE.md has a soft limit of ~
|
|
275
|
+
| **Instruction budget** | CLAUDE.md has a soft limit of ~200 actionable lines. Past that, Claude starts ignoring rules at the bottom. Doctor counts your lines and warns you. |
|
|
263
276
|
| **Rules** | Extra markdown files in `.claude/rules/` that Claude reads alongside CLAUDE.md. Use them to offload detailed conventions so CLAUDE.md stays under budget. |
|
|
264
277
|
| **Compaction** | When a Claude Code conversation gets too long, it compresses older messages to free up space. This can lose context — a PostCompact hook re-injects critical files (like TASKS.md) after compaction. |
|
|
265
278
|
| **MCP Servers** | External tools Claude can connect to (databases, APIs, docs). Configured in `.claude/settings.json`. Most projects don't need them. |
|
package/dist/cli.js
CHANGED
|
@@ -2664,7 +2664,7 @@ function createMemoryCommand() {
|
|
|
2664
2664
|
log.info("Skipped.");
|
|
2665
2665
|
return;
|
|
2666
2666
|
}
|
|
2667
|
-
const { runInstall } = await import("./install-
|
|
2667
|
+
const { runInstall } = await import("./install-PSSMUGLO.js");
|
|
2668
2668
|
await runInstall({});
|
|
2669
2669
|
} else {
|
|
2670
2670
|
const { requireMemoryDeps } = await import("./require-deps-NKRCPVAO.js");
|
|
@@ -2698,7 +2698,7 @@ function createMemoryCommand() {
|
|
|
2698
2698
|
}
|
|
2699
2699
|
|
|
2700
2700
|
// src/cli.ts
|
|
2701
|
-
var program = new Command5().name("claude-launchpad").description("CLI toolkit that makes Claude Code setups measurably good").version("0.
|
|
2701
|
+
var program = new Command5().name("claude-launchpad").description("CLI toolkit that makes Claude Code setups measurably good").version("0.10.0", "-v, --version").action(async () => {
|
|
2702
2702
|
const hasConfig = await fileExists(join11(process.cwd(), "CLAUDE.md")) || await fileExists(join11(process.cwd(), ".claude", "settings.json"));
|
|
2703
2703
|
if (hasConfig) {
|
|
2704
2704
|
await program.commands.find((c) => c.name() === "doctor")?.parseAsync([], { from: "user" });
|