claude-launchpad 0.12.0 → 0.12.1
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/cli.js +113 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/memory/server.js +1 -1
- package/dist/commands/memory/server.js.map +1 -1
- package/dist/{tui-YMBDAVTI.js → tui-IWUB7ZR4.js} +84 -18
- package/dist/tui-IWUB7ZR4.js.map +1 -0
- package/package.json +1 -1
- package/dist/tui-YMBDAVTI.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -535,58 +535,117 @@ DerivedData/
|
|
|
535
535
|
|
|
536
536
|
// src/commands/init/generators/skill-enhance.ts
|
|
537
537
|
function generateEnhanceSkill() {
|
|
538
|
-
return
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
-
|
|
589
|
-
|
|
538
|
+
return [
|
|
539
|
+
"---",
|
|
540
|
+
"name: lp-enhance",
|
|
541
|
+
"description: |",
|
|
542
|
+
" AI-improve your CLAUDE.md based on codebase analysis. Fills in architecture, conventions, guardrails, and suggests hooks and MCP servers.",
|
|
543
|
+
' TRIGGER when: user runs /lp-enhance, asks to "improve CLAUDE.md", "fill in architecture", or after major refactors.',
|
|
544
|
+
" DO NOT TRIGGER when: user is editing CLAUDE.md manually, doing normal coding, or running doctor/eval.",
|
|
545
|
+
"allowed-tools: Read, Glob, Grep, Edit, Write",
|
|
546
|
+
"argument-hint: (no arguments needed)",
|
|
547
|
+
"---",
|
|
548
|
+
"",
|
|
549
|
+
"# lp-enhance - AI-powered CLAUDE.md improver",
|
|
550
|
+
"",
|
|
551
|
+
"Read CLAUDE.md and the project's codebase, then update CLAUDE.md to fill in missing or incomplete sections.",
|
|
552
|
+
"",
|
|
553
|
+
"## Phase 1: Research",
|
|
554
|
+
"",
|
|
555
|
+
"1. Read CLAUDE.md (if it exists)",
|
|
556
|
+
"2. Read .claude/settings.json (hooks, permissions, MCP)",
|
|
557
|
+
"3. Read .claude/rules/*.md (existing rules)",
|
|
558
|
+
"4. Scan src/ directory structure (top-level dirs, key files)",
|
|
559
|
+
"5. Read package.json / go.mod / pyproject.toml for stack detection",
|
|
560
|
+
"6. Check for monorepo indicators (workspaces, nx.json, lerna.json)",
|
|
561
|
+
"",
|
|
562
|
+
"**Done when:** you have a mental model of the stack, architecture, and existing config.",
|
|
563
|
+
"",
|
|
564
|
+
"## Phase 2: Plan",
|
|
565
|
+
"",
|
|
566
|
+
"Count current CLAUDE.md actionable lines. Budget is 200 lines max. Plan which sections to add or improve:",
|
|
567
|
+
"",
|
|
568
|
+
"1. **## Stack** - detect language, framework, package manager",
|
|
569
|
+
"2. **## Architecture** - 3-5 bullets describing codebase shape",
|
|
570
|
+
"3. **## Conventions** - max 8 key patterns. Overflow to .claude/rules/conventions.md",
|
|
571
|
+
"4. **## Off-Limits** - max 8 guardrails specific to this project",
|
|
572
|
+
"5. **## Memory** - ONLY if agentic-memory is configured in settings.json. Max 6 bullets.",
|
|
573
|
+
"6. **## Key Decisions** - only decisions that affect how Claude works in this codebase",
|
|
574
|
+
"",
|
|
575
|
+
"If any section would exceed 8 bullets, plan a .claude/rules/ file for the overflow.",
|
|
576
|
+
"",
|
|
577
|
+
"**Done when:** you know exactly what to add/change and the line count stays under 200.",
|
|
578
|
+
"",
|
|
579
|
+
"## Phase 3: Execute",
|
|
580
|
+
"",
|
|
581
|
+
"Edit CLAUDE.md with the planned changes. Then:",
|
|
582
|
+
"",
|
|
583
|
+
"1. Create or update .claude/rules/ files for overflow content",
|
|
584
|
+
"2. Generate path-scoped rules if the project has distinct areas (see below)",
|
|
585
|
+
"3. Verify line count is under 200",
|
|
586
|
+
"",
|
|
587
|
+
"**Rules:**",
|
|
588
|
+
"- Don't remove existing content, only add or improve",
|
|
589
|
+
"- Be specific to THIS project, not generic advice",
|
|
590
|
+
"- Use bullet points, not paragraphs",
|
|
591
|
+
"",
|
|
592
|
+
"## Phase 4: Verify",
|
|
593
|
+
"",
|
|
594
|
+
"1. Run `claude-launchpad doctor` to check the score improved",
|
|
595
|
+
"2. Print suggested hooks (exact JSON) for .claude/settings.json but don't modify it",
|
|
596
|
+
"3. Print suggested MCP servers if external services detected (Postgres, Redis, Stripe, etc.)",
|
|
597
|
+
"",
|
|
598
|
+
"**Done when:** doctor score is equal or higher, suggestions printed.",
|
|
599
|
+
"",
|
|
600
|
+
"## Path-scoped rules generation",
|
|
601
|
+
"",
|
|
602
|
+
"Scan the project structure and generate focused .claude/rules/ files with paths: frontmatter. These load ONLY when Claude works on matching files, saving context tokens.",
|
|
603
|
+
"",
|
|
604
|
+
"**How to detect areas:**",
|
|
605
|
+
"1. List top-level directories under src/ (or equivalent). Each distinct area (api, components, lib, tests) is a candidate.",
|
|
606
|
+
"2. Check for monorepo indicators: workspaces in package.json, pnpm-workspace.yaml, nx.json, lerna.json. Each workspace is a candidate.",
|
|
607
|
+
"3. Check for docs/, tests/, scripts/ as separate scopes.",
|
|
608
|
+
"",
|
|
609
|
+
"**For each detected area, create a rules file with this format:**",
|
|
610
|
+
"",
|
|
611
|
+
"---",
|
|
612
|
+
'paths: ["src/api/**"]',
|
|
613
|
+
"---",
|
|
614
|
+
"# API Rules",
|
|
615
|
+
"- Validate all request input with zod schemas",
|
|
616
|
+
"- Return typed error responses, never throw raw errors",
|
|
617
|
+
"- Keep route handlers under 30 lines",
|
|
618
|
+
"",
|
|
619
|
+
"**Stack-specific patterns to include:**",
|
|
620
|
+
`- Next.js app/: "Use Server Components by default, add 'use client' only when needed"`,
|
|
621
|
+
'- API routes / src/api/: "Validate input at boundaries, typed error responses"',
|
|
622
|
+
'- React components: "Colocate components near usage, props interface above component"',
|
|
623
|
+
'- Tests: "One assertion per test when possible, descriptive test names"',
|
|
624
|
+
'- Database / prisma/ / drizzle/: "Never write raw SQL, use the ORM, migrations required"',
|
|
625
|
+
'- Docs: "No em dashes, max 3 sentences per paragraph, code examples required"',
|
|
626
|
+
"",
|
|
627
|
+
"**When NOT to generate:**",
|
|
628
|
+
"- Small projects with < 5 source files (one conventions.md is enough)",
|
|
629
|
+
"- Projects where all code is in one flat directory",
|
|
630
|
+
"- If path-scoped rules already exist, don't overwrite them",
|
|
631
|
+
"",
|
|
632
|
+
"**Monorepo handling:**",
|
|
633
|
+
"- Each package gets its own rules file: .claude/rules/packages-<name>.md",
|
|
634
|
+
"- Suggest claudeMdExcludes in settings.json to skip irrelevant package CLAUDE.md files",
|
|
635
|
+
"",
|
|
636
|
+
"## Hook review",
|
|
637
|
+
"",
|
|
638
|
+
"Review .claude/settings.json hooks:",
|
|
639
|
+
"- If you see project-specific patterns that deserve hooks, suggest them",
|
|
640
|
+
"- If no PostCompact hook exists, suggest one that re-injects TASKS.md",
|
|
641
|
+
"- If no SessionStart hook exists, suggest one that injects TASKS.md",
|
|
642
|
+
"- DO NOT modify settings.json directly. Print exact JSON to add.",
|
|
643
|
+
"",
|
|
644
|
+
"## Other advanced configuration",
|
|
645
|
+
"",
|
|
646
|
+
"- If the project uses external APIs, suggest sandbox.network.allowedDomains",
|
|
647
|
+
"- If you detect a monorepo, suggest claudeMdExcludes in settings.json"
|
|
648
|
+
].join("\n");
|
|
590
649
|
}
|
|
591
650
|
|
|
592
651
|
// src/commands/init/generators/backlog.ts
|
|
@@ -2587,7 +2646,7 @@ function createMemoryCommand() {
|
|
|
2587
2646
|
}
|
|
2588
2647
|
const { requireMemoryDeps } = await import("./require-deps-NKRCPVAO.js");
|
|
2589
2648
|
await requireMemoryDeps();
|
|
2590
|
-
const { startTui } = await import("./tui-
|
|
2649
|
+
const { startTui } = await import("./tui-IWUB7ZR4.js");
|
|
2591
2650
|
await startTui();
|
|
2592
2651
|
return;
|
|
2593
2652
|
}
|
|
@@ -2655,7 +2714,7 @@ function createMemoryCommand() {
|
|
|
2655
2714
|
}
|
|
2656
2715
|
|
|
2657
2716
|
// src/cli.ts
|
|
2658
|
-
var program = new Command5().name("claude-launchpad").description("CLI toolkit that makes Claude Code setups measurably good").version("0.12.
|
|
2717
|
+
var program = new Command5().name("claude-launchpad").description("CLI toolkit that makes Claude Code setups measurably good").version("0.12.1", "-v, --version").action(async () => {
|
|
2659
2718
|
const hasConfig = await fileExists(join11(process.cwd(), "CLAUDE.md")) || await fileExists(join11(process.cwd(), ".claude", "settings.json"));
|
|
2660
2719
|
if (hasConfig) {
|
|
2661
2720
|
await program.commands.find((c) => c.name() === "doctor")?.parseAsync([], { from: "user" });
|