@codemarc/blt 1.4.7 → 1.4.8

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
@@ -9,6 +9,8 @@
9
9
  - **Image**: WebP conversion, sharpening, color manipulation, and enhancement
10
10
  - **PDF**: Combine PDFs (binder), create folios with page numbers and table of contents
11
11
  - **Version**: Update and manage `version.json`, format version strings, generate version SQL
12
+ - **Init**: Clone repo script for BLT repositories
13
+ - **WAI**: AI config templates (Claude + Codex: AGENTS.md, skills, rules, commands, settings, MCP, PLAN, IMPLEMENT) — bltwai.com
12
14
  - **Build**: Build schema from DDL files, build data from instance directory
13
15
  - **Deploy**: Deploy schema/data from SQL files, run a single SQL file
14
16
  - **Bucket**: Supabase storage — list buckets, list/upload/download files, get URLs
@@ -57,6 +59,8 @@ blt deploy schema
57
59
  | `blt image` | Convert, sharpen, enhance, recolor |
58
60
  | `blt pdf` | Binder (combine), folio (TOC + pages)|
59
61
  | `blt version` | Update, string, sql |
62
+ | `blt init` | Clone script for BLT repos |
63
+ | `blt wai` | Claude Code config (claude, agents, skills, rules, commands, settings, mcp) |
60
64
  | `blt build` | Schema (DDL), data (instance) |
61
65
  | `blt deploy` | Schema, data, sql file |
62
66
  | `blt workflow`| list, show, delete, reload, deploy |
@@ -319,6 +323,94 @@ blt deploy sql ./migrations/001_init.sql
319
323
 
320
324
  ---
321
325
 
326
+ ## Init Commands
327
+
328
+ ### `blt init [options]`
329
+
330
+ Create a shell script to clone or pull all BLT repositories.
331
+
332
+ ```bash
333
+ blt init
334
+ blt init -w -c
335
+ ./getblt.sh
336
+ ```
337
+
338
+ **Options:**
339
+
340
+ - `-o, --output <path>` — Output path for the script (default: ./getblt.sh)
341
+ - `-s, --ssh` — Use SSH URLs instead of HTTPS
342
+ - `-w, --workspace` — Also generate blt.code-workspace with folder entries
343
+ - `-c, --connections` — Add sqltools.connections from .env (requires -w)
344
+
345
+ ---
346
+
347
+ ## WAI Commands (bltwai.com)
348
+
349
+ AI and agent configuration templates. Templates are pulled from the tools repo; uses built-in fallback if offline.
350
+
351
+ ### `blt wai claude`
352
+
353
+ Create `CLAUDE.md` — primary project memory loaded every session.
354
+
355
+ ### `blt wai agents`
356
+
357
+ Create `AGENTS.md` — open standard for AI agent config.
358
+
359
+ ### `blt wai claude-local`
360
+
361
+ Create `CLAUDE.local.md` — local-only instructions (add to `.gitignore`).
362
+
363
+ ### `blt wai skill <name>`
364
+
365
+ Create `.claude/skills/<name>/SKILL.md` — reusable workflow.
366
+
367
+ ### `blt wai rule <name>`
368
+
369
+ Create `.claude/rules/<name>.md` — scoped instructions.
370
+
371
+ ### `blt wai command <name>`
372
+
373
+ Create `.claude/commands/<name>.md` — legacy slash command.
374
+
375
+ ### `blt wai settings`
376
+
377
+ Create `.claude/settings.json` — project settings.
378
+
379
+ ### `blt wai settings-local`
380
+
381
+ Create `.claude/settings.local.json` — local overrides (add to .gitignore).
382
+
383
+ ### `blt wai mcp`
384
+
385
+ Create `.mcp.json` — MCP server config (Jira, Slack, etc.).
386
+
387
+ ### Codex equivalents (OpenAI Codex CLI)
388
+
389
+ - `blt wai agents-override` — AGENTS.override.md (local overrides, add to .gitignore)
390
+ - `blt wai plan` — PLAN.md (multi-step strategy)
391
+ - `blt wai implement` — IMPLEMENT.md (runbook)
392
+ - `blt wai codex` — CODEX.md (legacy)
393
+
394
+ ```bash
395
+ blt wai claude
396
+ blt wai agents
397
+ blt wai claude-local
398
+ blt wai skill my-skill
399
+ blt wai rule typescript
400
+ blt wai command review
401
+ blt wai settings
402
+ blt wai mcp
403
+ blt wai agents-override
404
+ blt wai plan
405
+ blt wai implement
406
+ ```
407
+
408
+ **Options (all types):** `--overwrite`, `--branch <ref>`, `--output <path>`, `--claude-dir`
409
+
410
+ **Shared standard:** AGENTS.md works across Claude Code, Codex, and Cursor. Codex uses AGENTS.override.md for local overrides (similar to CLAUDE.local.md).
411
+
412
+ ---
413
+
322
414
  ## Workflow Commands (GitHub Actions)
323
415
 
324
416
  Manage deploy GitHub Actions workflows in the `bltcore-com/deploy` repository. **Requires:** [GitHub CLI (`gh`)](https://cli.github.com/) installed and authenticated.
package/dist/blt CHANGED
@@ -10,6 +10,7 @@ import versionCommand from "./commands/version";
10
10
  import showCommand from "./commands/show";
11
11
  import cleanupCommand from "./commands/cleanup";
12
12
  import workflowCommand from "./commands/workflow";
13
+ import waiCommand from "./commands/wai";
13
14
  import { join, dirname } from "node:path";
14
15
  import { readFileSync } from "node:fs";
15
16
  import { fileURLToPath } from "node:url";
@@ -33,6 +34,7 @@ bucketCommand(program);
33
34
  showCommand(program);
34
35
  cleanupCommand(program);
35
36
  workflowCommand(program);
37
+ waiCommand(program);
36
38
  // If no command is provided, show help
37
39
  const args = process.argv.slice(2);
38
40
  if (args.length === 0) {
package/dist/blt.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blt.d.ts","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AAqBA,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
1
+ {"version":3,"file":"blt.d.ts","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AAsBA,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
package/dist/blt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3B,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,UAAU,CAAC,OAAO,CAAC,CAAC;AAEtB,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Claude Code–aligned config template registry.
3
+ * Templates are fetched from the bltcore-com/tools repo at runtime.
4
+ */
5
+ export interface ConfigTypeDef {
6
+ filename: string;
7
+ sourceFile: string;
8
+ needsName: boolean;
9
+ description: string;
10
+ }
11
+ export declare const CONFIG_TYPES: Record<string, ConfigTypeDef>;
12
+ export declare function getTemplateUrl(type: string, branch: string, name?: string): string;
13
+ export declare function getOutputPath(type: string, cwd: string, options: {
14
+ output?: string;
15
+ claudeDir?: boolean;
16
+ }, name?: string): string;
17
+ export declare function fetchTemplate(url: string): Promise<string>;
18
+ //# sourceMappingURL=config-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../../src/commands/init/config-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CA+BtD,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAMR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EACjD,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAsBR;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Claude Code–aligned config template registry.
3
+ * Templates are fetched from the bltcore-com/tools repo at runtime.
4
+ */
5
+ const TOOLS_REPO = "bltcore-com/tools";
6
+ const TEMPLATE_BASE = "cli/.trailz";
7
+ export const CONFIG_TYPES = {
8
+ claude: {
9
+ filename: "CLAUDE.md",
10
+ sourceFile: "CLAUDE.md",
11
+ needsName: false,
12
+ description: "Primary project memory (loaded every session)",
13
+ },
14
+ agents: {
15
+ filename: "AGENTS.md",
16
+ sourceFile: "AGENTS.md",
17
+ needsName: false,
18
+ description: "Open standard for AI agent config",
19
+ },
20
+ "claude-local": {
21
+ filename: "CLAUDE.local.md",
22
+ sourceFile: "CLAUDE.local.md",
23
+ needsName: false,
24
+ description: "Local-only instructions (add to .gitignore)",
25
+ },
26
+ skill: {
27
+ filename: "SKILL.md",
28
+ sourceFile: "SKILL.md",
29
+ needsName: true,
30
+ description: "Reusable workflow in .claude/skills/<name>/SKILL.md",
31
+ },
32
+ rule: {
33
+ filename: "<name>.md",
34
+ sourceFile: "rule-template.md",
35
+ needsName: true,
36
+ description: "Scoped instructions in .claude/rules/<name>.md",
37
+ },
38
+ };
39
+ export function getTemplateUrl(type, branch, name) {
40
+ const def = CONFIG_TYPES[type];
41
+ if (!def)
42
+ throw new Error(`Unknown config type: ${type}`);
43
+ const sourceFile = def.sourceFile;
44
+ return `https://raw.githubusercontent.com/${TOOLS_REPO}/${branch}/${TEMPLATE_BASE}/${sourceFile}`;
45
+ }
46
+ export function getOutputPath(type, cwd, options, name) {
47
+ if (options.output) {
48
+ return options.output.startsWith("/")
49
+ ? options.output
50
+ : `${cwd}/${options.output}`.replace(/\/+/g, "/");
51
+ }
52
+ const def = CONFIG_TYPES[type];
53
+ if (!def)
54
+ throw new Error(`Unknown config type: ${type}`);
55
+ // skill and rule always live under .claude/
56
+ if (def.needsName && name) {
57
+ if (type === "skill") {
58
+ return `${cwd}/.claude/skills/${name}/SKILL.md`.replace(/\/+/g, "/");
59
+ }
60
+ if (type === "rule") {
61
+ return `${cwd}/.claude/rules/${name}.md`.replace(/\/+/g, "/");
62
+ }
63
+ }
64
+ const base = options.claudeDir ? ".claude" : ".";
65
+ return `${cwd}/${base}/${def.filename}`.replace(/\/+/g, "/");
66
+ }
67
+ export async function fetchTemplate(url) {
68
+ const res = await fetch(url);
69
+ if (!res.ok) {
70
+ throw new Error(`Failed to fetch template (${res.status}): ${url}\n${await res.text().catch(() => "")}`);
71
+ }
72
+ return res.text();
73
+ }
74
+ //# sourceMappingURL=config-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../../src/commands/init/config-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from "@caporal/core";
2
+ export interface InitConfigOptions {
3
+ overwrite: boolean;
4
+ branch: string;
5
+ output?: string;
6
+ claudeDir: boolean;
7
+ }
8
+ export declare function initConfig(type: string, name: string | undefined, options: InitConfigOptions, logger: Logger): Promise<void>;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/init/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA2D5C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -0,0 +1,92 @@
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { CONFIG_TYPES, fetchTemplate, getOutputPath, getTemplateUrl, } from "./config-templates";
4
+ const DEFAULT_BRANCH = "main";
5
+ /** Fallback templates when GitHub fetch fails (e.g. before push, offline) */
6
+ const FALLBACK_TEMPLATES = {
7
+ "CLAUDE.md": `# Project Memory (CLAUDE.md)
8
+
9
+ Primary project context loaded at the start of every session.
10
+
11
+ ## About This Project
12
+
13
+ ## Build & Run
14
+
15
+ ## Architecture
16
+
17
+ ## Coding Standards
18
+ `,
19
+ "AGENTS.md": `# AGENTS.md
20
+
21
+ Open standard for AI agent configuration.
22
+
23
+ ## Project Context
24
+
25
+ ## Conventions
26
+
27
+ ## Key Commands
28
+ `,
29
+ "CLAUDE.local.md": `# CLAUDE.local.md
30
+
31
+ Local-only instructions. Add to .gitignore. Do not commit.
32
+ `,
33
+ "SKILL.md": `---
34
+ name: Skill Name
35
+ description: What this skill does
36
+ ---
37
+
38
+ # Skill
39
+
40
+ Reusable multi-step workflow. Add steps and notes below.
41
+ `,
42
+ "rule-template.md": `# Rule
43
+
44
+ Scoped instructions for specific file types or paths.
45
+
46
+ ## Applies To
47
+
48
+ ## Instructions
49
+ `,
50
+ };
51
+ export async function initConfig(type, name, options, logger) {
52
+ const def = CONFIG_TYPES[type];
53
+ if (!def) {
54
+ logger.error(`Unknown config type: '${type}'. Valid: ${Object.keys(CONFIG_TYPES).join(", ")}`);
55
+ process.exit(1);
56
+ }
57
+ if (def.needsName && !name?.trim()) {
58
+ logger.error(`Type '${type}' requires a name. Example: blt init config ${type} my-name`);
59
+ process.exit(1);
60
+ }
61
+ const cwd = process.cwd();
62
+ const targetPath = getOutputPath(type, cwd, options, name);
63
+ if (existsSync(targetPath) && !options.overwrite) {
64
+ logger.warn(`File already exists: ${targetPath}`);
65
+ logger.warn("Use --overwrite to replace it.");
66
+ return;
67
+ }
68
+ const branch = options.branch || DEFAULT_BRANCH;
69
+ const sourceFile = def.sourceFile;
70
+ let content;
71
+ try {
72
+ const url = getTemplateUrl(type, branch, name);
73
+ content = await fetchTemplate(url);
74
+ }
75
+ catch (err) {
76
+ const fallback = FALLBACK_TEMPLATES[sourceFile];
77
+ if (fallback) {
78
+ logger.warn("Could not fetch from GitHub, using built-in template. Push templates to the tools repo for the latest versions.");
79
+ content = fallback;
80
+ }
81
+ else {
82
+ const msg = err instanceof Error ? err.message : String(err);
83
+ logger.error(`Failed to fetch template: ${msg}`);
84
+ process.exit(1);
85
+ }
86
+ }
87
+ const dir = dirname(targetPath);
88
+ mkdirSync(dir, { recursive: true });
89
+ await Bun.write(targetPath, content);
90
+ logger.info(`Created: ${targetPath}`);
91
+ }
92
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/init/config.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ Available operations:
15
15
  Run 'blt pdf <operation> --help' for more information on a specific command.
16
16
  `;
17
17
  program
18
- .command("pdf", "PDF manipulation")
18
+ .command("pdf", "pdf manipulation")
19
19
  .help(pdfHelpText)
20
20
  .action(() => {
21
21
  console.log(pdfHelpText);
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Claude Code–aligned config template registry for blt wai.
3
+ * Templates are fetched from the bltcore-com/tools repo at runtime.
4
+ */
5
+ export interface ConfigTypeDef {
6
+ filename: string;
7
+ sourceFile: string;
8
+ needsName: boolean;
9
+ description: string;
10
+ }
11
+ export declare const WAI_TYPES: Record<string, ConfigTypeDef>;
12
+ export declare function getTemplateUrl(type: string, branch: string, name?: string): string;
13
+ export declare function getOutputPath(type: string, cwd: string, options: {
14
+ output?: string;
15
+ claudeDir?: boolean;
16
+ }, name?: string): string;
17
+ export declare function fetchTemplate(url: string): Promise<string>;
18
+ //# sourceMappingURL=config-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAgFnD,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAMR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EACjD,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAqCR;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Claude Code–aligned config template registry for blt wai.
3
+ * Templates are fetched from the bltcore-com/tools repo at runtime.
4
+ */
5
+ const TOOLS_REPO = "bltcore-com/tools";
6
+ const TEMPLATE_BASE = "cli/.trailz";
7
+ export const WAI_TYPES = {
8
+ claude: {
9
+ filename: "CLAUDE.md",
10
+ sourceFile: "CLAUDE.md",
11
+ needsName: false,
12
+ description: "Primary project memory (loaded every session)",
13
+ },
14
+ agents: {
15
+ filename: "AGENTS.md",
16
+ sourceFile: "AGENTS.md",
17
+ needsName: false,
18
+ description: "Open standard for AI agent config",
19
+ },
20
+ "claude-local": {
21
+ filename: "CLAUDE.local.md",
22
+ sourceFile: "CLAUDE.local.md",
23
+ needsName: false,
24
+ description: "Local-only instructions (add to .gitignore)",
25
+ },
26
+ skill: {
27
+ filename: "SKILL.md",
28
+ sourceFile: "SKILL.md",
29
+ needsName: true,
30
+ description: "Reusable workflow in .claude/skills/<name>/SKILL.md",
31
+ },
32
+ rule: {
33
+ filename: "<name>.md",
34
+ sourceFile: "rule-template.md",
35
+ needsName: true,
36
+ description: "Scoped instructions in .claude/rules/<name>.md",
37
+ },
38
+ command: {
39
+ filename: "<name>.md",
40
+ sourceFile: "command-template.md",
41
+ needsName: true,
42
+ description: "Legacy slash command in .claude/commands/<name>.md",
43
+ },
44
+ settings: {
45
+ filename: "settings.json",
46
+ sourceFile: "settings.json",
47
+ needsName: false,
48
+ description: "Project settings in .claude/settings.json",
49
+ },
50
+ "settings-local": {
51
+ filename: "settings.local.json",
52
+ sourceFile: "settings.local.json",
53
+ needsName: false,
54
+ description: "Local project overrides in .claude/settings.local.json (add to .gitignore)",
55
+ },
56
+ mcp: {
57
+ filename: ".mcp.json",
58
+ sourceFile: "mcp.json",
59
+ needsName: false,
60
+ description: "MCP server config in project root",
61
+ },
62
+ // Codex equivalents (OpenAI Codex CLI)
63
+ "agents-override": {
64
+ filename: "AGENTS.override.md",
65
+ sourceFile: "AGENTS.override.md",
66
+ needsName: false,
67
+ description: "Codex local overrides (like CLAUDE.local.md; add to .gitignore)",
68
+ },
69
+ plan: {
70
+ filename: "PLAN.md",
71
+ sourceFile: "PLAN.md",
72
+ needsName: false,
73
+ description: "Codex multi-step implementation strategy",
74
+ },
75
+ implement: {
76
+ filename: "IMPLEMENT.md",
77
+ sourceFile: "IMPLEMENT.md",
78
+ needsName: false,
79
+ description: "Codex runbook referencing PLAN.md",
80
+ },
81
+ codex: {
82
+ filename: "CODEX.md",
83
+ sourceFile: "CODEX.md",
84
+ needsName: false,
85
+ description: "Legacy Codex repo instructions (superseded by AGENTS.md in 0.27+)",
86
+ },
87
+ };
88
+ export function getTemplateUrl(type, branch, name) {
89
+ const def = WAI_TYPES[type];
90
+ if (!def)
91
+ throw new Error(`Unknown type: ${type}`);
92
+ const sourceFile = def.sourceFile;
93
+ return `https://raw.githubusercontent.com/${TOOLS_REPO}/${branch}/${TEMPLATE_BASE}/${sourceFile}`;
94
+ }
95
+ export function getOutputPath(type, cwd, options, name) {
96
+ if (options.output) {
97
+ return options.output.startsWith("/")
98
+ ? options.output
99
+ : `${cwd}/${options.output}`.replace(/\/+/g, "/");
100
+ }
101
+ const def = WAI_TYPES[type];
102
+ if (!def)
103
+ throw new Error(`Unknown type: ${type}`);
104
+ if (def.needsName && name) {
105
+ if (type === "skill") {
106
+ return `${cwd}/.claude/skills/${name}/SKILL.md`.replace(/\/+/g, "/");
107
+ }
108
+ if (type === "rule") {
109
+ return `${cwd}/.claude/rules/${name}.md`.replace(/\/+/g, "/");
110
+ }
111
+ if (type === "command") {
112
+ return `${cwd}/.claude/commands/${name}.md`.replace(/\/+/g, "/");
113
+ }
114
+ }
115
+ // settings, settings-local, mcp always go to .claude/ or project root
116
+ if (type === "settings" || type === "settings-local") {
117
+ return `${cwd}/.claude/${def.filename}`.replace(/\/+/g, "/");
118
+ }
119
+ if (type === "mcp") {
120
+ return `${cwd}/.mcp.json`.replace(/\/+/g, "/");
121
+ }
122
+ // Codex files go to project root
123
+ if (type === "agents-override" || type === "plan" || type === "implement" || type === "codex") {
124
+ return `${cwd}/${def.filename}`.replace(/\/+/g, "/");
125
+ }
126
+ const base = options.claudeDir ? ".claude" : ".";
127
+ return `${cwd}/${base}/${def.filename}`.replace(/\/+/g, "/");
128
+ }
129
+ export async function fetchTemplate(url) {
130
+ const res = await fetch(url);
131
+ if (!res.ok) {
132
+ throw new Error(`Failed to fetch template (${res.status}): ${url}\n${await res.text().catch(() => "")}`);
133
+ }
134
+ return res.text();
135
+ }
136
+ //# sourceMappingURL=config-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from "@caporal/core";
2
+ export interface WaiConfigOptions {
3
+ overwrite: boolean;
4
+ branch: string;
5
+ output?: string;
6
+ claudeDir: boolean;
7
+ }
8
+ export declare function runWaiConfig(type: string, name: string | undefined, options: WaiConfigOptions, logger: Logger): Promise<void>;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/wai/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA+G5C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -0,0 +1,144 @@
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { fetchTemplate, getOutputPath, getTemplateUrl, WAI_TYPES, } from "./config-templates";
4
+ const DEFAULT_BRANCH = "main";
5
+ /** Fallback templates when GitHub fetch fails (e.g. before push, offline) */
6
+ const FALLBACK_TEMPLATES = {
7
+ "CLAUDE.md": `# Project Memory (CLAUDE.md)
8
+
9
+ Primary project context loaded at the start of every session.
10
+
11
+ ## About This Project
12
+
13
+ ## Build & Run
14
+
15
+ ## Architecture
16
+
17
+ ## Coding Standards
18
+ `,
19
+ "AGENTS.md": `# AGENTS.md
20
+
21
+ Open standard for AI agent configuration.
22
+
23
+ ## Project Context
24
+
25
+ ## Conventions
26
+
27
+ ## Key Commands
28
+ `,
29
+ "CLAUDE.local.md": `# CLAUDE.local.md
30
+
31
+ Local-only instructions. Add to .gitignore. Do not commit.
32
+ `,
33
+ "SKILL.md": `---
34
+ name: Skill Name
35
+ description: What this skill does
36
+ ---
37
+
38
+ # Skill
39
+
40
+ Reusable multi-step workflow. Add steps and notes below.
41
+ `,
42
+ "rule-template.md": `# Rule
43
+
44
+ Scoped instructions for specific file types or paths.
45
+
46
+ ## Applies To
47
+
48
+ ## Instructions
49
+ `,
50
+ "command-template.md": `# Slash Command
51
+
52
+ Legacy slash command. Define the workflow and instructions.
53
+
54
+ ## Usage
55
+
56
+ ## Steps
57
+ `,
58
+ "settings.json": `{
59
+ "$schema": "https://claude.com/schemas/settings.json"
60
+ }
61
+ `,
62
+ "settings.local.json": `{
63
+ "$schema": "https://claude.com/schemas/settings.json"
64
+ }
65
+ `,
66
+ "mcp.json": `{
67
+ "mcpServers": {}
68
+ }
69
+ `,
70
+ // Codex equivalents
71
+ "AGENTS.override.md": `# AGENTS.override.md
72
+
73
+ Codex local overrides. Add to .gitignore. Do not commit.
74
+ Personal or local instructions that override project-wide AGENTS.md.
75
+ `,
76
+ "PLAN.md": `# PLAN.md
77
+
78
+ Codex multi-step implementation strategy.
79
+ Draft and iterate on implementation approaches before writing code.
80
+
81
+ ## Goal
82
+
83
+ ## Steps
84
+
85
+ ## Notes
86
+ `,
87
+ "IMPLEMENT.md": `# IMPLEMENT.md
88
+
89
+ Codex runbook. Execution instructions referencing PLAN.md.
90
+
91
+ ## References
92
+
93
+ - See PLAN.md for the implementation strategy.
94
+
95
+ ## Runbook
96
+ `,
97
+ "CODEX.md": `# CODEX.md
98
+
99
+ Legacy Codex repository instructions.
100
+ In Codex 0.27+, AGENTS.md is preferred.
101
+ `,
102
+ };
103
+ export async function runWaiConfig(type, name, options, logger) {
104
+ const def = WAI_TYPES[type];
105
+ if (!def) {
106
+ logger.error(`Unknown type: '${type}'. Valid: ${Object.keys(WAI_TYPES).join(", ")}`);
107
+ process.exit(1);
108
+ }
109
+ if (def.needsName && !name?.trim()) {
110
+ logger.error(`Type '${type}' requires a name. Example: blt wai ${type} my-name`);
111
+ process.exit(1);
112
+ }
113
+ const cwd = process.cwd();
114
+ const targetPath = getOutputPath(type, cwd, options, name);
115
+ if (existsSync(targetPath) && !options.overwrite) {
116
+ logger.warn(`File already exists: ${targetPath}`);
117
+ logger.warn("Use --overwrite to replace it.");
118
+ return;
119
+ }
120
+ const branch = options.branch || DEFAULT_BRANCH;
121
+ const sourceFile = def.sourceFile;
122
+ let content;
123
+ try {
124
+ const url = getTemplateUrl(type, branch, name);
125
+ content = await fetchTemplate(url);
126
+ }
127
+ catch (err) {
128
+ const fallback = FALLBACK_TEMPLATES[sourceFile];
129
+ if (fallback) {
130
+ logger.warn("Could not fetch from GitHub, using built-in template. Push templates to the tools repo for the latest versions.");
131
+ content = fallback;
132
+ }
133
+ else {
134
+ const msg = err instanceof Error ? err.message : String(err);
135
+ logger.error(`Failed to fetch template: ${msg}`);
136
+ process.exit(1);
137
+ }
138
+ }
139
+ const dir = dirname(targetPath);
140
+ mkdirSync(dir, { recursive: true });
141
+ await Bun.write(targetPath, content);
142
+ logger.info(`Created: ${targetPath}`);
143
+ }
144
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/wai/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Program } from "@caporal/core";
2
+ /**
3
+ * Register wai command with the CLI program.
4
+ * WAI = BLT WAI (bltwai.com) — AI/agent config templates.
5
+ */
6
+ export default function waiCommand(program: Program): void;
7
+ //# sourceMappingURL=wai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wai.d.ts","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,eAAe,CAAC;AAGpE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,EAAE,OAAO,QA+PlD"}
@@ -0,0 +1,208 @@
1
+ import { runWaiConfig } from "./wai/config";
2
+ /**
3
+ * Register wai command with the CLI program.
4
+ * WAI = BLT WAI (bltwai.com) — AI/agent config templates.
5
+ */
6
+ export default function waiCommand(program) {
7
+ const waiHelpText = `
8
+ bltwai.com is our main domain name and stands for
9
+ Beyond Limited Thinking with Artificial Intelligence
10
+
11
+ blt wai — AI and agent configuration templates
12
+
13
+ Usage:
14
+ blt wai <type> [name] [options]
15
+
16
+ Types:
17
+ claude CLAUDE.md — primary project memory (loaded every session)
18
+ agents AGENTS.md — open standard for AI agent config
19
+ claude-local CLAUDE.local.md — local-only (add to .gitignore)
20
+ skill <name> .claude/skills/<name>/SKILL.md — reusable workflow
21
+ rule <name> .claude/rules/<name>.md — scoped instructions
22
+ command <name> .claude/commands/<name>.md — legacy slash command
23
+ settings .claude/settings.json — project settings
24
+ settings-local .claude/settings.local.json — local overrides (add to .gitignore)
25
+ mcp .mcp.json — MCP server config
26
+ agents-override AGENTS.override.md — Codex local overrides (add to .gitignore)
27
+ plan PLAN.md — Codex multi-step strategy
28
+ implement IMPLEMENT.md — Codex runbook
29
+ codex CODEX.md — Legacy Codex instructions
30
+
31
+ Examples:
32
+ blt wai claude
33
+ blt wai agents
34
+ blt wai claude-local
35
+ blt wai skill my-skill
36
+ blt wai rule typescript
37
+ blt wai command review
38
+ blt wai settings
39
+ blt wai mcp
40
+ blt wai agents-override
41
+ blt wai plan
42
+ blt wai implement
43
+
44
+ Templates are fetched from the tools repo. Uses built-in fallback when offline.
45
+ `;
46
+ program
47
+ .command("wai", "ai and agent configuration")
48
+ .help(waiHelpText)
49
+ .action(() => {
50
+ console.log(waiHelpText);
51
+ });
52
+ program
53
+ .command("wai claude", "Create CLAUDE.md — project memory")
54
+ .hide()
55
+ .help("Create CLAUDE.md — primary project memory for Claude Code.\n\n" +
56
+ "Loaded at the start of every session. Use for coding standards, build commands,\n" +
57
+ "architectural decisions, and domain context. Place in project root, or use\n" +
58
+ "--claude-dir to write to .claude/CLAUDE.md instead.")
59
+ .option("--overwrite", "Replace existing file", { default: false })
60
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
61
+ .option("--output <path>", "Override output path", {})
62
+ .option("--claude-dir", "Write to .claude/ subdirectory", { default: false })
63
+ .action(waiAction("claude"));
64
+ program
65
+ .command("wai agents", "Create AGENTS.md — open standard config")
66
+ .hide()
67
+ .help("Create AGENTS.md — emerging open standard for AI agent configuration.\n\n" +
68
+ "Shared across Claude Code, Codex, and Cursor. Use when you want a single file\n" +
69
+ "that works with multiple AI assistants, avoiding duplicated rules. Complements\n" +
70
+ "or replaces CLAUDE.md for cross-tool projects.")
71
+ .option("--overwrite", "Replace existing file", { default: false })
72
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
73
+ .option("--output <path>", "Override output path", {})
74
+ .option("--claude-dir", "Write to .claude/ subdirectory", { default: false })
75
+ .action(waiAction("agents"));
76
+ program
77
+ .command("wai claude-local", "Create CLAUDE.local.md — local only")
78
+ .hide()
79
+ .help("Create CLAUDE.local.md — local-only instructions for Claude Code.\n\n" +
80
+ "Personal preferences, local paths, or instructions you don't want to share.\n" +
81
+ "Add to .gitignore so it is never committed. Claude loads this after CLAUDE.md.")
82
+ .option("--overwrite", "Replace existing file", { default: false })
83
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
84
+ .option("--output <path>", "Override output path", {})
85
+ .option("--claude-dir", "Write to .claude/ subdirectory", { default: false })
86
+ .action(waiAction("claude-local"));
87
+ program
88
+ .command("wai skill", "Create .claude/skills/<name>/SKILL.md")
89
+ .hide()
90
+ .help("Create a Skill — reusable multi-step workflow for Claude Code.\n\n" +
91
+ "Skills use YAML frontmatter (name, description) plus markdown instructions.\n" +
92
+ "Claude can invoke them automatically or via slash command. Use for common\n" +
93
+ "tasks like code review, refactoring patterns, or deployment checklists.")
94
+ .argument("<name>", "Skill name")
95
+ .option("--overwrite", "Replace existing file", { default: false })
96
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
97
+ .option("--output <path>", "Override output path", {})
98
+ .action(waiAction("skill"));
99
+ program
100
+ .command("wai rule", "Create .claude/rules/<name>.md")
101
+ .hide()
102
+ .help("Create a Rule — scoped instructions for file types or paths.\n\n" +
103
+ "Rules let you attach specific guidance to certain files or directories (e.g.\n" +
104
+ "typescript.md for .ts files). Keeps the main CLAUDE.md concise. Claude loads\n" +
105
+ "rules when working in matching paths.")
106
+ .argument("<name>", "Rule name")
107
+ .option("--overwrite", "Replace existing file", { default: false })
108
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
109
+ .option("--output <path>", "Override output path", {})
110
+ .action(waiAction("rule"));
111
+ program
112
+ .command("wai command", "Create .claude/commands/<name>.md — legacy slash command")
113
+ .hide()
114
+ .help("Create a legacy slash command in .claude/commands/.\n\n" +
115
+ "Pre-SKILL.md format. Similar to skills but stored in .claude/commands/.\n" +
116
+ "Still recognized by Claude Code. Use for simple slash-triggered workflows\n" +
117
+ "or when migrating from older setups.")
118
+ .argument("<name>", "Command name")
119
+ .option("--overwrite", "Replace existing file", { default: false })
120
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
121
+ .option("--output <path>", "Override output path", {})
122
+ .action(waiAction("command"));
123
+ program
124
+ .command("wai settings", "Create .claude/settings.json")
125
+ .hide()
126
+ .help("Create .claude/settings.json — Claude Code project settings.\n\n" +
127
+ "Shared project configuration (model preferences, approval policy, etc.).\n" +
128
+ "Commit this file to version control so the whole team gets the same setup.")
129
+ .option("--overwrite", "Replace existing file", { default: false })
130
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
131
+ .option("--output <path>", "Override output path", {})
132
+ .action(waiAction("settings"));
133
+ program
134
+ .command("wai settings-local", "Create .claude/settings.local.json")
135
+ .hide()
136
+ .help("Create .claude/settings.local.json — personal Claude Code overrides.\n\n" +
137
+ "Personal project settings that override the shared settings.json. Add to\n" +
138
+ ".gitignore so it is never committed. Use for local paths or preferences.")
139
+ .option("--overwrite", "Replace existing file", { default: false })
140
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
141
+ .option("--output <path>", "Override output path", {})
142
+ .action(waiAction("settings-local"));
143
+ program
144
+ .command("wai mcp", "Create .mcp.json — MCP server config")
145
+ .hide()
146
+ .help("Create .mcp.json — Model Context Protocol server configuration.\n\n" +
147
+ "Connects Claude to external data sources (Jira, Slack, Google Drive, etc.).\n" +
148
+ "Placed in project root. Define mcpServers with endpoints and credentials.")
149
+ .option("--overwrite", "Replace existing file", { default: false })
150
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
151
+ .option("--output <path>", "Override output path", {})
152
+ .action(waiAction("mcp"));
153
+ program
154
+ .command("wai agents-override", "Create AGENTS.override.md — Codex local overrides")
155
+ .hide()
156
+ .help("Create AGENTS.override.md — Codex local overrides (OpenAI Codex CLI).\n\n" +
157
+ "Codex equivalent of CLAUDE.local.md. Personal or local instructions that\n" +
158
+ "override project-wide AGENTS.md without changing the shared file. Add to\n" +
159
+ ".gitignore. Codex merges overrides when walking from repo root.")
160
+ .option("--overwrite", "Replace existing file", { default: false })
161
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
162
+ .option("--output <path>", "Override output path", {})
163
+ .action(waiAction("agents-override"));
164
+ program
165
+ .command("wai plan", "Create PLAN.md — Codex multi-step strategy")
166
+ .hide()
167
+ .help("Create PLAN.md — Codex multi-step implementation strategy.\n\n" +
168
+ "Codex uses this to draft and iterate on implementation approaches before\n" +
169
+ "writing code. Use for complex or long-horizon tasks. Reference from IMPLEMENT.md\n" +
170
+ "to keep the agent on track during execution.")
171
+ .option("--overwrite", "Replace existing file", { default: false })
172
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
173
+ .option("--output <path>", "Override output path", {})
174
+ .action(waiAction("plan"));
175
+ program
176
+ .command("wai implement", "Create IMPLEMENT.md — Codex runbook")
177
+ .hide()
178
+ .help("Create IMPLEMENT.md — Codex runbook for execution.\n\n" +
179
+ "Acts as a runbook with specific execution instructions. References PLAN.md\n" +
180
+ "so Codex stays aligned with the strategy while working. Use with PLAN.md\n" +
181
+ "for structured multi-step implementation.")
182
+ .option("--overwrite", "Replace existing file", { default: false })
183
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
184
+ .option("--output <path>", "Override output path", {})
185
+ .action(waiAction("implement"));
186
+ program
187
+ .command("wai codex", "Create CODEX.md — legacy Codex instructions")
188
+ .hide()
189
+ .help("Create CODEX.md — legacy OpenAI Codex repository instructions.\n\n" +
190
+ "Historically used for repo-specific guidance. In Codex 0.27+, AGENTS.md is\n" +
191
+ "preferred. Use only when maintaining projects on older Codex versions.")
192
+ .option("--overwrite", "Replace existing file", { default: false })
193
+ .option("--branch <branch>", "GitHub branch for templates", { default: "main" })
194
+ .option("--output <path>", "Override output path", {})
195
+ .action(waiAction("codex"));
196
+ function waiAction(type) {
197
+ return async ({ args, options, logger, }) => {
198
+ const name = args.name;
199
+ await runWaiConfig(type, name, {
200
+ overwrite: options.overwrite,
201
+ branch: options.branch,
202
+ output: options.output,
203
+ claudeDir: options.claudeDir ?? false,
204
+ }, logger);
205
+ };
206
+ }
207
+ }
208
+ //# sourceMappingURL=wai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wai.js","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemarc/blt",
3
- "version": "1.4.7",
3
+ "version": "1.4.8",
4
4
  "description": "blt cli",
5
5
  "type": "module",
6
6
  "main": "dist/blt",