@wemuda/launchrail 1.3.0 → 1.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"browser-testing.js","sourceRoot":"","sources":["../../src/lib/browser-testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-testing.js","sourceRoot":"","sources":["../../src/lib/browser-testing.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,gCAAgC,CAAC;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAEvF,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC;IAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU;QAC3C,CAAC,CAAC;eACS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;;;;CAIzD;QACG,CAAC,CAAC;CACL,CAAC;IACA,OAAO;;;qDAG4C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;;;;EAUzE,SAAS;CACV,CAAC;AACF,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;;;;;;;;;;;;;;;;CAgBR,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,SAAS;IAChB,OAAO,CACL,IAAI,CAAC,SAAS,CACZ;QACE,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,wBAAwB,EAAE,YAAY,CAAC;aACrD;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAmC;IACzD,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE,8BAA8B;IACpC,GAAG,EAAE,6BAA6B;IAClC,GAAG,EAAE,iCAAiC;CACvC,CAAC;AAEF,SAAS,WAAW,CAAC,EAAkB;IACrC,OAAO;;;;;;;;;;;;;OAaF,EAAE;;SAEA,kBAAkB,CAAC,EAAE,CAAC;;;;;CAK9B,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CAAC,UAAyB;IAC1C,OAAO;;;;;sBAKa,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;CAiBrD,CAAC;AACF,CAAC;AAED,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO;;;;;;4BAMmB,UAAU;;;;CAIrC,CAAC;AACF,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAA0B;IAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC;IACjD,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EACjG,EAAE,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EACnE,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAClF,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EACjG,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAC1H,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAC7G,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAC3G,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAC9G,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -18,23 +18,25 @@ export interface WorkflowPlugin {
18
18
  /** Human-readable label for init/doctor messages. */
19
19
  label: string;
20
20
  }
21
- /** Every Claude Code plugin the Launchrail workflow depends on. */
21
+ /** Every Claude Code plugin the Launchrail workflow depends on — one roster with the committed declaration. */
22
22
  export declare const WORKFLOW_PLUGINS: WorkflowPlugin[];
23
23
  /** The `claude` CLI version, or null when it is unavailable or opted out. */
24
24
  export declare function detectClaudeCli(cwd: string): string | null;
25
25
  export type PluginInstallOutcome = {
26
26
  state: "installed";
27
- alreadyInstalled: boolean;
27
+ detail: "installed" | "updated" | "up-to-date";
28
+ versions?: string;
28
29
  } | {
29
30
  state: "failed";
30
- step: "marketplace-add" | "plugin-install";
31
+ step: "marketplace-add" | "plugin-install" | "plugin-update";
31
32
  output: string;
32
33
  };
33
34
  /**
34
- * Register one plugin's marketplace and install it at user scope. Both
35
- * underlying commands are idempotent ("already on disk" / "already installed"
36
- * exit 0), so re-running init stays safe. Assumes the CLI is present —
37
- * callers detect first.
35
+ * Register one plugin's marketplace and install it at user scope — or, when
36
+ * it is already installed, update it to the marketplace's latest version, so
37
+ * re-running init always leaves the roster current. Every underlying command
38
+ * is idempotent (exit 0 on "already on disk" / "already installed" / "already
39
+ * at the latest version"). Assumes the CLI is present — callers detect first.
38
40
  */
39
41
  export declare function installPlugin(cwd: string, plugin: WorkflowPlugin): PluginInstallOutcome;
40
42
  export type InstalledPluginIds = {
@@ -1,10 +1,11 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { MARKETPLACE_REPO, PLUGIN_KEY } from "./claudeSettings.js";
3
- /** Every Claude Code plugin the Launchrail workflow depends on. */
4
- export const WORKFLOW_PLUGINS = [
5
- { marketplace: MARKETPLACE_REPO, id: PLUGIN_KEY, label: "Launchrail" },
6
- { marketplace: "mattpocock/skills", id: "mattpocock-skills@mattpocock", label: "Matt Pocock's skills" },
7
- ];
2
+ import { PLUGIN_DECLARATIONS } from "./claudeSettings.js";
3
+ /** Every Claude Code plugin the Launchrail workflow depends on — one roster with the committed declaration. */
4
+ export const WORKFLOW_PLUGINS = PLUGIN_DECLARATIONS.map((d) => ({
5
+ marketplace: d.repo,
6
+ id: d.pluginKey,
7
+ label: d.label,
8
+ }));
8
9
  const RUN_OPTS = { encoding: "utf8", timeout: 180_000 };
9
10
  function runClaude(cwd, args) {
10
11
  const res = spawnSync("claude", args, { ...RUN_OPTS, cwd });
@@ -25,10 +26,11 @@ export function detectClaudeCli(cwd) {
25
26
  return res.stdout || "unknown version";
26
27
  }
27
28
  /**
28
- * Register one plugin's marketplace and install it at user scope. Both
29
- * underlying commands are idempotent ("already on disk" / "already installed"
30
- * exit 0), so re-running init stays safe. Assumes the CLI is present —
31
- * callers detect first.
29
+ * Register one plugin's marketplace and install it at user scope — or, when
30
+ * it is already installed, update it to the marketplace's latest version, so
31
+ * re-running init always leaves the roster current. Every underlying command
32
+ * is idempotent (exit 0 on "already on disk" / "already installed" / "already
33
+ * at the latest version"). Assumes the CLI is present — callers detect first.
32
34
  */
33
35
  export function installPlugin(cwd, plugin) {
34
36
  const add = runClaude(cwd, ["plugin", "marketplace", "add", plugin.marketplace]);
@@ -39,7 +41,17 @@ export function installPlugin(cwd, plugin) {
39
41
  if (!install.ok) {
40
42
  return { state: "failed", step: "plugin-install", output: install.stderr || install.stdout };
41
43
  }
42
- return { state: "installed", alreadyInstalled: install.stdout.includes("already installed") };
44
+ if (!install.stdout.includes("already installed")) {
45
+ return { state: "installed", detail: "installed" };
46
+ }
47
+ const update = runClaude(cwd, ["plugin", "update", plugin.id]);
48
+ if (!update.ok) {
49
+ return { state: "failed", step: "plugin-update", output: update.stderr || update.stdout };
50
+ }
51
+ const moved = update.stdout.match(/updated from (\S+) to (\S+)/);
52
+ return moved
53
+ ? { state: "installed", detail: "updated", versions: `${moved[1]} → ${moved[2]}` }
54
+ : { state: "installed", detail: "up-to-date" };
43
55
  }
44
56
  /** The ids of installed plugins, via `claude plugin list --json`. */
45
57
  export function listInstalledPluginIds(cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"claudeCli.js","sourceRoot":"","sources":["../../src/lib/claudeCli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeCli.js","sourceRoot":"","sources":["../../src/lib/claudeCli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The seeded CLAUDE.md wires Claude Code into Launchrail through two @-imports:
3
+ * the shared agent contract (`@AGENTS.md`) and the managed workflow
4
+ * instructions (`@.launchrail/CLAUDE.generated.md`). When `init` adopts a
5
+ * project that already has its own CLAUDE.md, that file is seeded /
6
+ * project-owned and is never overwritten — but without those imports the
7
+ * managed instructions Launchrail writes to `.launchrail/CLAUDE.generated.md`
8
+ * are orphaned: Claude Code never loads them.
9
+ *
10
+ * So, exactly as `init` additively merges the plugin declaration into a
11
+ * project-owned `.claude/settings.json` (ADR-0003), it additively wires the two
12
+ * required imports into an existing CLAUDE.md (ADR-0012): only the missing
13
+ * import lines are added, at the top of the file, and nothing else is touched.
14
+ * The file is not tracked in the lockfile — checksum tracking would misreport
15
+ * every legitimate project edit as drift.
16
+ */
17
+ export declare const CLAUDE_MD_FILENAME = "CLAUDE.md";
18
+ /** The @-imports the workflow relies on, in canonical order (contract first). */
19
+ export declare const REQUIRED_CLAUDE_IMPORTS: readonly ["@AGENTS.md", "@.launchrail/CLAUDE.generated.md"];
20
+ /** True when `content` imports `importPath` on a line of its own (prose mentions do not count). */
21
+ export declare function importsPath(content: string, importPath: string): boolean;
22
+ /** The workflow imports that `content` is missing, in canonical order. */
23
+ export declare function missingImports(content: string): string[];
24
+ export type ClaudeImportsPlanKind = "seed" | "ok" | "merge";
25
+ export interface ClaudeImportsPlan {
26
+ kind: ClaudeImportsPlanKind;
27
+ detail: string;
28
+ /** Full file content to write; null when nothing should change. */
29
+ content: string | null;
30
+ /** The imports that will be added (empty unless kind === "merge"). */
31
+ added: string[];
32
+ }
33
+ /**
34
+ * Decide how to ensure an existing CLAUDE.md imports the workflow files,
35
+ * without touching disk.
36
+ *
37
+ * - no file yet → `seed`: init's writer creates a complete CLAUDE.md, so there
38
+ * is nothing to wire in here.
39
+ * - file present, both imports already there → `ok`: nothing to do (idempotent).
40
+ * - file present, one or both imports missing → `merge`: prepend the missing
41
+ * import lines, preserving every existing byte after them.
42
+ */
43
+ export declare function planClaudeImports(root: string): ClaudeImportsPlan;
44
+ /** Execute a plan. Returns true when CLAUDE.md was written. */
45
+ export declare function applyClaudeImports(root: string, plan: ClaudeImportsPlan): boolean;
@@ -0,0 +1,68 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ /**
4
+ * The seeded CLAUDE.md wires Claude Code into Launchrail through two @-imports:
5
+ * the shared agent contract (`@AGENTS.md`) and the managed workflow
6
+ * instructions (`@.launchrail/CLAUDE.generated.md`). When `init` adopts a
7
+ * project that already has its own CLAUDE.md, that file is seeded /
8
+ * project-owned and is never overwritten — but without those imports the
9
+ * managed instructions Launchrail writes to `.launchrail/CLAUDE.generated.md`
10
+ * are orphaned: Claude Code never loads them.
11
+ *
12
+ * So, exactly as `init` additively merges the plugin declaration into a
13
+ * project-owned `.claude/settings.json` (ADR-0003), it additively wires the two
14
+ * required imports into an existing CLAUDE.md (ADR-0012): only the missing
15
+ * import lines are added, at the top of the file, and nothing else is touched.
16
+ * The file is not tracked in the lockfile — checksum tracking would misreport
17
+ * every legitimate project edit as drift.
18
+ */
19
+ export const CLAUDE_MD_FILENAME = "CLAUDE.md";
20
+ /** The @-imports the workflow relies on, in canonical order (contract first). */
21
+ export const REQUIRED_CLAUDE_IMPORTS = ["@AGENTS.md", "@.launchrail/CLAUDE.generated.md"];
22
+ /** True when `content` imports `importPath` on a line of its own (prose mentions do not count). */
23
+ export function importsPath(content, importPath) {
24
+ return content.split("\n").some((line) => line.trim() === importPath);
25
+ }
26
+ /** The workflow imports that `content` is missing, in canonical order. */
27
+ export function missingImports(content) {
28
+ return REQUIRED_CLAUDE_IMPORTS.filter((imp) => !importsPath(content, imp));
29
+ }
30
+ /**
31
+ * Decide how to ensure an existing CLAUDE.md imports the workflow files,
32
+ * without touching disk.
33
+ *
34
+ * - no file yet → `seed`: init's writer creates a complete CLAUDE.md, so there
35
+ * is nothing to wire in here.
36
+ * - file present, both imports already there → `ok`: nothing to do (idempotent).
37
+ * - file present, one or both imports missing → `merge`: prepend the missing
38
+ * import lines, preserving every existing byte after them.
39
+ */
40
+ export function planClaudeImports(root) {
41
+ const abs = join(root, CLAUDE_MD_FILENAME);
42
+ if (!existsSync(abs)) {
43
+ return { kind: "seed", detail: "init will seed CLAUDE.md with the workflow imports", content: null, added: [] };
44
+ }
45
+ const existing = readFileSync(abs, "utf8");
46
+ const missing = missingImports(existing);
47
+ if (missing.length === 0) {
48
+ return { kind: "ok", detail: "already imports the workflow files", content: null, added: [] };
49
+ }
50
+ // Keep the import block contiguous: if the file already opens with an
51
+ // @-import, butt the new lines directly against it; otherwise separate the
52
+ // import block from the prose with a blank line.
53
+ const separator = existing.trimStart().startsWith("@") ? "\n" : "\n\n";
54
+ return {
55
+ kind: "merge",
56
+ detail: `adding ${missing.join(", ")}, keeping your content`,
57
+ content: missing.join("\n") + separator + existing,
58
+ added: missing,
59
+ };
60
+ }
61
+ /** Execute a plan. Returns true when CLAUDE.md was written. */
62
+ export function applyClaudeImports(root, plan) {
63
+ if (plan.content === null)
64
+ return false;
65
+ writeFileSync(join(root, CLAUDE_MD_FILENAME), plan.content, "utf8");
66
+ return true;
67
+ }
68
+ //# sourceMappingURL=claudeImports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeImports.js","sourceRoot":"","sources":["../../src/lib/claudeImports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,kCAAkC,CAAU,CAAC;AAEnG,mGAAmG;AACnG,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAkB;IAC7D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,CAAC;AACxE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAaD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClH,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,oCAAoC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChG,CAAC;IACD,sEAAsE;IACtE,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB;QAC5D,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,QAAQ;QAClD,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAuB;IACtE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,14 +1,26 @@
1
1
  /**
2
- * Consuming projects subscribe to the Launchrail plugin through a committed,
3
- * project-scoped declaration in .claude/settings.json (ADR-0003). The file is
4
- * project-owned and shared with unrelated Claude Code configuration, so it is
5
- * never tracked in the lockfile and never replaced: init only performs an
6
- * additive merge of the two keys below, and an explicit opt-out
7
- * (`"launchrail@launchrail": false`) is respected.
2
+ * Consuming projects subscribe to the workflow's Claude Code plugins through a
3
+ * committed, project-scoped declaration in .claude/settings.json (ADR-0003,
4
+ * extended to the full roster by ADR-0011) — that is what offers teammates the
5
+ * same skills on their first folder trust. The file is project-owned and
6
+ * shared with unrelated Claude Code configuration, so it is never tracked in
7
+ * the lockfile and never replaced: init only performs an additive merge of
8
+ * the declaration keys below, and an explicit opt-out (a pluginKey set to
9
+ * `false`) is respected.
8
10
  */
9
11
  export declare const CLAUDE_SETTINGS_PATH: string;
10
- export declare const PLUGIN_KEY = "launchrail@launchrail";
11
- export declare const MARKETPLACE_REPO = "wemuda/launchrail";
12
+ export interface PluginDeclaration {
13
+ /** Marketplace name as declared under extraKnownMarketplaces. */
14
+ marketplace: string;
15
+ /** GitHub owner/repo — the marketplace source, also fed to `claude plugin marketplace add`. */
16
+ repo: string;
17
+ /** Qualified plugin id (plugin@marketplace) — the enabledPlugins key and `claude plugin install` target. */
18
+ pluginKey: string;
19
+ /** Human-readable label for init/doctor messages. */
20
+ label: string;
21
+ }
22
+ /** Every Claude Code plugin the Launchrail workflow depends on (ADR-0011). */
23
+ export declare const PLUGIN_DECLARATIONS: PluginDeclaration[];
12
24
  export type DeclarationState = "declared" | "no-file" | "invalid-json" | "undeclared";
13
25
  export declare function declarationState(root: string): DeclarationState;
14
26
  export type SettingsPlanKind = "create" | "merge" | "skip-declared" | "skip-invalid";
@@ -1,18 +1,26 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  /**
4
- * Consuming projects subscribe to the Launchrail plugin through a committed,
5
- * project-scoped declaration in .claude/settings.json (ADR-0003). The file is
6
- * project-owned and shared with unrelated Claude Code configuration, so it is
7
- * never tracked in the lockfile and never replaced: init only performs an
8
- * additive merge of the two keys below, and an explicit opt-out
9
- * (`"launchrail@launchrail": false`) is respected.
4
+ * Consuming projects subscribe to the workflow's Claude Code plugins through a
5
+ * committed, project-scoped declaration in .claude/settings.json (ADR-0003,
6
+ * extended to the full roster by ADR-0011) — that is what offers teammates the
7
+ * same skills on their first folder trust. The file is project-owned and
8
+ * shared with unrelated Claude Code configuration, so it is never tracked in
9
+ * the lockfile and never replaced: init only performs an additive merge of
10
+ * the declaration keys below, and an explicit opt-out (a pluginKey set to
11
+ * `false`) is respected.
10
12
  */
11
13
  export const CLAUDE_SETTINGS_PATH = join(".claude", "settings.json");
12
- const MARKETPLACE_NAME = "launchrail";
13
- export const PLUGIN_KEY = "launchrail@launchrail";
14
- export const MARKETPLACE_REPO = "wemuda/launchrail";
15
- const MARKETPLACE_SOURCE = { source: "github", repo: MARKETPLACE_REPO };
14
+ /** Every Claude Code plugin the Launchrail workflow depends on (ADR-0011). */
15
+ export const PLUGIN_DECLARATIONS = [
16
+ { marketplace: "launchrail", repo: "wemuda/launchrail", pluginKey: "launchrail@launchrail", label: "Launchrail" },
17
+ {
18
+ marketplace: "mattpocock",
19
+ repo: "mattpocock/skills",
20
+ pluginKey: "mattpocock-skills@mattpocock",
21
+ label: "Matt Pocock's skills",
22
+ },
23
+ ];
16
24
  function readSettings(root) {
17
25
  const path = join(root, CLAUDE_SETTINGS_PATH);
18
26
  if (!existsSync(path))
@@ -28,8 +36,8 @@ function readSettings(root) {
28
36
  return { settings: null, state: "invalid-json" };
29
37
  }
30
38
  const settings = data;
31
- const declared = settings.extraKnownMarketplaces?.[MARKETPLACE_NAME] !== undefined &&
32
- settings.enabledPlugins?.[PLUGIN_KEY] !== undefined;
39
+ const declared = PLUGIN_DECLARATIONS.every((d) => settings.extraKnownMarketplaces?.[d.marketplace] !== undefined &&
40
+ settings.enabledPlugins?.[d.pluginKey] !== undefined);
33
41
  return { settings, state: declared ? "declared" : "undeclared" };
34
42
  }
35
43
  export function declarationState(root) {
@@ -41,22 +49,24 @@ export function planPluginDeclaration(root) {
41
49
  return { kind: "skip-invalid", detail: "unparseable JSON — not touching it", content: null };
42
50
  }
43
51
  if (state === "declared") {
44
- return { kind: "skip-declared", detail: "plugin already declared", content: null };
52
+ return { kind: "skip-declared", detail: "workflow plugins already declared", content: null };
45
53
  }
46
54
  const merged = settings ? { ...settings } : {};
47
55
  merged.extraKnownMarketplaces = { ...merged.extraKnownMarketplaces };
48
- if (merged.extraKnownMarketplaces[MARKETPLACE_NAME] === undefined) {
49
- merged.extraKnownMarketplaces[MARKETPLACE_NAME] = { source: MARKETPLACE_SOURCE };
50
- }
51
56
  merged.enabledPlugins = { ...merged.enabledPlugins };
52
- if (merged.enabledPlugins[PLUGIN_KEY] === undefined) {
53
- merged.enabledPlugins[PLUGIN_KEY] = true;
57
+ for (const d of PLUGIN_DECLARATIONS) {
58
+ if (merged.extraKnownMarketplaces[d.marketplace] === undefined) {
59
+ merged.extraKnownMarketplaces[d.marketplace] = { source: { source: "github", repo: d.repo } };
60
+ }
61
+ if (merged.enabledPlugins[d.pluginKey] === undefined) {
62
+ merged.enabledPlugins[d.pluginKey] = true;
63
+ }
54
64
  }
55
65
  return {
56
66
  kind: state === "no-file" ? "create" : "merge",
57
67
  detail: state === "no-file"
58
- ? "declares the Launchrail plugin for this project"
59
- : "adding the Launchrail plugin declaration, keeping existing settings",
68
+ ? "declares the workflow plugins for this project"
69
+ : "adding the workflow plugin declarations, keeping existing settings",
60
70
  content: JSON.stringify(merged, null, 2) + "\n",
61
71
  };
62
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claudeSettings.js","sourceRoot":"","sources":["../../src/lib/claudeSettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeSettings.js","sourceRoot":"","sources":["../../src/lib/claudeSettings.ts"],"names":[],"mappings":"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"}
@@ -19,5 +19,7 @@ export interface RepoDetection {
19
19
  hasManifest: boolean;
20
20
  /** docs/agents/ is the output location of Matt Pocock's /setup-matt-pocock-skills. */
21
21
  hasMattPocockSetup: boolean;
22
+ /** The repo already carries real work (source manifest or agent files) — default the interview to the `existing` origin. */
23
+ looksEstablished: boolean;
22
24
  }
23
25
  export declare function detectRepo(root: string): RepoDetection;
@@ -83,6 +83,11 @@ export function detectRepo(root) {
83
83
  hasClaudeMd: existsSync(join(root, "CLAUDE.md")),
84
84
  hasManifest: existsSync(join(root, MANIFEST_FILENAME)),
85
85
  hasMattPocockSetup: existsSync(join(root, "docs", "agents")),
86
+ // A package.json or pre-existing agent files mean there is already a
87
+ // project here to adopt, not a blank slate to start from.
88
+ looksEstablished: hasPackageJson ||
89
+ existsSync(join(root, "AGENTS.md")) ||
90
+ existsSync(join(root, "CLAUDE.md")),
86
91
  };
87
92
  }
88
93
  //# sourceMappingURL=detect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA4BlD,SAAS,GAAG,CAAC,IAAY,EAAE,IAAc;IACvC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,kFAAkF,CAAC;AAEhH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,KAAK,MAAM,CAAC;IAC/E,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnF,IAAI,uBAAuB,GAAkB,IAAI,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,mBAAmB,GAAkB,IAAI,CAAC;IAC9C,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAMtE,CAAC;YACF,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YACzD,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ;gBAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACzE,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,QAAQ;gBAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;YACtE,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ;gBAAE,mBAAmB,GAAG,GAAG,CAAC,cAAc,CAAC;YACrF,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC7D,gBAAgB,GAAG,kBAAkB,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED,MAAM,oBAAoB,GACxB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;SACrC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC;SACxC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE1D,IAAI,cAAc,GAA0B,IAAI,CAAC;IACjD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAAE,cAAc,GAAG,MAAM,CAAC;SACjE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAAE,cAAc,GAAG,MAAM,CAAC;SACjE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAAE,cAAc,GAAG,KAAK,CAAC;SACtG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAAE,cAAc,GAAG,KAAK,CAAC;SACxE,IAAI,mBAAmB,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK;YAAE,cAAc,GAAG,MAAM,CAAC;IAC9G,CAAC;IAED,OAAO;QACL,SAAS;QACT,YAAY;QACZ,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,WAAW;QACX,UAAU;QACV,SAAS;QACT,gBAAgB;QAChB,oBAAoB;QACpB,WAAW,EAAE,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC;QAC1C,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACtD,kBAAkB,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,qEAAqE;QACrE,0DAA0D;QAC1D,gBAAgB,EACd,cAAc;YACd,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KACtC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,13 @@
1
1
  export declare const MANIFEST_FILENAME = ".launchrail.yml";
2
2
  export declare const MODES: readonly ["spike", "standard-mvp", "high-rigor"];
3
3
  export type Mode = (typeof MODES)[number];
4
+ /**
5
+ * Whether the repository is a greenfield start or a codebase being adopted.
6
+ * `existing` sends `launch` down the alignment on-ramp — infer artifacts from
7
+ * the code and fill gaps — instead of the from-scratch vision flow (ADR-0013).
8
+ */
9
+ export declare const ORIGINS: readonly ["new", "existing"];
10
+ export type Origin = (typeof ORIGINS)[number];
4
11
  export declare const ISSUE_TRACKERS: readonly ["github", "linear", "none"];
5
12
  export type IssueTracker = (typeof ISSUE_TRACKERS)[number];
6
13
  export declare const TESTING_KEYS: readonly ["unitCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
@@ -8,6 +15,7 @@ export type TestingKey = (typeof TESTING_KEYS)[number];
8
15
  export interface Manifest {
9
16
  schemaVersion: 1;
10
17
  mode: Mode;
18
+ origin: Origin;
11
19
  issueTracker: IssueTracker;
12
20
  conventions: {
13
21
  conventionalCommits: boolean;
@@ -1,6 +1,12 @@
1
1
  import { parse, parseDocument, stringify } from "yaml";
2
2
  export const MANIFEST_FILENAME = ".launchrail.yml";
3
3
  export const MODES = ["spike", "standard-mvp", "high-rigor"];
4
+ /**
5
+ * Whether the repository is a greenfield start or a codebase being adopted.
6
+ * `existing` sends `launch` down the alignment on-ramp — infer artifacts from
7
+ * the code and fill gaps — instead of the from-scratch vision flow (ADR-0013).
8
+ */
9
+ export const ORIGINS = ["new", "existing"];
4
10
  export const ISSUE_TRACKERS = ["github", "linear", "none"];
5
11
  export const TESTING_KEYS = ["unitCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
6
12
  function isRecord(value) {
@@ -21,6 +27,17 @@ export function validateManifest(data) {
21
27
  if (typeof data.mode !== "string" || !MODES.includes(data.mode)) {
22
28
  errors.push(`mode must be one of: ${MODES.join(", ")}`);
23
29
  }
30
+ // Optional with a default so manifests written before `origin` existed stay
31
+ // valid; an explicit but unknown value is still an error.
32
+ let origin = "new";
33
+ if (data.origin !== undefined) {
34
+ if (typeof data.origin === "string" && ORIGINS.includes(data.origin)) {
35
+ origin = data.origin;
36
+ }
37
+ else {
38
+ errors.push(`origin must be one of: ${ORIGINS.join(", ")}`);
39
+ }
40
+ }
24
41
  let issueTracker = "none";
25
42
  if (data.issueTracker !== undefined) {
26
43
  if (typeof data.issueTracker === "string" && ISSUE_TRACKERS.includes(data.issueTracker)) {
@@ -77,6 +94,7 @@ export function validateManifest(data) {
77
94
  manifest: {
78
95
  schemaVersion: 1,
79
96
  mode: data.mode,
97
+ origin,
80
98
  issueTracker,
81
99
  conventions: { conventionalCommits },
82
100
  testing,
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,23 @@ export const MIGRATIONS = [
21
21
  };
22
22
  },
23
23
  },
24
+ {
25
+ id: "2026-08-upstream-plugin-declarations",
26
+ description: `declare the upstream workflow plugins (Matt Pocock's skills) in ${CLAUDE_SETTINGS_PATH} (ADR-0011)`,
27
+ plan(ctx) {
28
+ // Shares the roster-driven plan: projects initialized before the roster
29
+ // grew get the upstream declarations; anything newer is already satisfied.
30
+ const settings = planPluginDeclaration(ctx.cwd);
31
+ if (settings.content === null)
32
+ return { changes: [], apply: () => { } };
33
+ return {
34
+ changes: [`${CLAUDE_SETTINGS_PATH} — ${settings.detail}`],
35
+ apply: () => {
36
+ applyPluginDeclaration(ctx.cwd, settings);
37
+ },
38
+ };
39
+ },
40
+ },
24
41
  ];
25
42
  export function migrationIds(registry = MIGRATIONS) {
26
43
  return registry.map((migration) => migration.id);
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
package/dist/lib/seeds.js CHANGED
@@ -30,6 +30,7 @@ ${commands}
30
30
  ${commitSection}
31
31
  ## Workflow rules
32
32
 
33
+ - Ask, don't guess. On product decisions, data-model or schema changes, security-relevant behaviour, or anything genuinely ambiguous, stop and ask rather than guessing — a wrong guess on these costs more than the question.
33
34
  - Do not silently change scope; surface deviations from the spec or ADRs.
34
35
  - If implementation invalidates an artifact (vision, spec, ADR, design note), update that artifact in the same change.
35
36
  - Meaningful decisions become lightweight ADRs in \`docs/adr/\` using [docs/adr/0000-template.md](docs/adr/0000-template.md).
@@ -38,6 +39,8 @@ ${commitSection}
38
39
 
39
40
  - The change matches the relevant spec or ADR, or updates it.
40
41
  - Deterministic checks pass${manifest.testing.unitCommand ? ` (\`${manifest.testing.unitCommand}\`)` : ""}.
42
+ - Behaviour-bearing changes are proven in the running app, not only by green unit tests — capability is not the same as done.
43
+ - Report honest status: say what you verified and to what depth; never imply complete when it is not.
41
44
  - Evidence over assertion: "done" requires passing checks, not agent say-so.
42
45
  `;
43
46
  }
@@ -57,6 +60,7 @@ function claudeGeneratedMd(ctx) {
57
60
 
58
61
  - User-facing changes are verified twice: deterministic checks (\`node scripts/verify.mjs\`) and agentic smoke journeys from \`docs/testing/smoke-journeys.md\` (browser-smoke skill).
59
62
  - Start the app with \`node scripts/dev.mjs\` (\`--background\` in cloud or CI sessions); prepare an evidence bundle with \`npx @wemuda/launchrail smoke\`.
63
+ - Drive journeys agentically via the seeded Playwright MCP (\`.mcp.json\`, approve it once in Claude Code) or a Playwright script — whichever the session has; headless CI falls back to the scripts.
60
64
  - Smoke evidence lives in \`artifacts/verification/<run-id>/\` — fill in \`summary.md\`; only summary, deviations, and meta are meant to be committed.
61
65
  - When a smoke run finds a real bug: reproduce it, add a failing deterministic test, fix, prove the test passes, re-run the journey.
62
66
  `
@@ -1 +1 @@
1
- {"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;;;;;EAgBtD,QAAQ;EACR,aAAa;;;;;;;;;;6BAUc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;CAExG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;CAOL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;CAOL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;EAS3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;;;;;EAgBtD,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;CAOL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;EAS3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wemuda/launchrail",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "Launchrail — initialize, inspect, update, and validate repositories using the Launchrail development system.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,7 +17,8 @@
17
17
  "scripts": {
18
18
  "build": "tsc",
19
19
  "dev": "tsc --watch",
20
- "test": "vitest run"
20
+ "test": "vitest run",
21
+ "prepack": "node scripts/generate-readme.mjs"
21
22
  },
22
23
  "repository": {
23
24
  "type": "git",