@lousy-agents/cli 5.12.1 → 5.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,14 +11,14 @@
11
11
  "@fastify/cors": "11.2.0",
12
12
  "@fastify/sensible": "6.0.4",
13
13
  "fastify": "5.8.5",
14
- "kysely": "0.28.16",
14
+ "kysely": "0.28.17",
15
15
  "pino": "10.3.1",
16
16
  "postgres": "3.4.9",
17
17
  "zod": "4.4.2"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@biomejs/biome": "2.4.14",
21
- "@lousy-agents/mcp": "5.12.0",
21
+ "@lousy-agents/mcp": "5.12.2",
22
22
  "@modelcontextprotocol/server-sequential-thinking": "2025.12.18",
23
23
  "@testcontainers/postgresql": "11.14.0",
24
24
  "@types/node": "24.12.2",
@@ -956,15 +956,15 @@
956
956
  }
957
957
  },
958
958
  "node_modules/@lousy-agents/mcp": {
959
- "version": "5.12.0",
960
- "resolved": "https://registry.npmjs.org/@lousy-agents/mcp/-/mcp-5.12.0.tgz",
961
- "integrity": "sha512-ZppKeagS1TTuS3TJ9iKzeI9OBXmIjmjuVVfsdK3qL9LhcHlHaH0lLkyc53jrIdk2wtaLkIUXq8GKwJxwI2tL/A==",
959
+ "version": "5.12.2",
960
+ "resolved": "https://registry.npmjs.org/@lousy-agents/mcp/-/mcp-5.12.2.tgz",
961
+ "integrity": "sha512-b4Ox1tB/gH/MFaXT+jS92mx2qtQKw1DK7oycLMSGbrKyBA4xXMK9ayvfMTdvx/zcFQc4URmuM5pSKa2Ng2PwCQ==",
962
962
  "dev": true,
963
963
  "license": "BSD-2-Clause-Patent",
964
964
  "dependencies": {
965
965
  "@modelcontextprotocol/sdk": "1.29.0",
966
- "yaml": "2.8.3",
967
- "zod": "4.3.6"
966
+ "yaml": "2.8.4",
967
+ "zod": "4.4.2"
968
968
  },
969
969
  "bin": {
970
970
  "lousy-agents-mcp": "dist/mcp-server.js"
@@ -3658,9 +3658,9 @@
3658
3658
  "license": "BSD-2-Clause"
3659
3659
  },
3660
3660
  "node_modules/kysely": {
3661
- "version": "0.28.16",
3662
- "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.16.tgz",
3663
- "integrity": "sha512-3i5pmOiZvMDj00qhrIVbH0AnioVTx22DMP7Vn5At4yJO46iy+FM8Y/g61ltenLVSo3fiO8h8Q3QOFgf/gQ72ww==",
3661
+ "version": "0.28.17",
3662
+ "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.17.tgz",
3663
+ "integrity": "sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q==",
3664
3664
  "license": "MIT",
3665
3665
  "engines": {
3666
3666
  "node": ">=20.0.0"
@@ -5904,9 +5904,9 @@
5904
5904
  }
5905
5905
  },
5906
5906
  "node_modules/yaml": {
5907
- "version": "2.8.3",
5908
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
5909
- "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
5907
+ "version": "2.8.4",
5908
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz",
5909
+ "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==",
5910
5910
  "dev": true,
5911
5911
  "license": "ISC",
5912
5912
  "bin": {
@@ -19,7 +19,7 @@
19
19
  "@fastify/cors": "11.2.0",
20
20
  "@fastify/sensible": "6.0.4",
21
21
  "fastify": "5.8.5",
22
- "kysely": "0.28.16",
22
+ "kysely": "0.28.17",
23
23
  "pino": "10.3.1",
24
24
  "postgres": "3.4.9",
25
25
  "zod": "4.4.2"
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "devDependencies": {
31
31
  "@biomejs/biome": "2.4.14",
32
- "@lousy-agents/mcp": "5.12.0",
32
+ "@lousy-agents/mcp": "5.12.2",
33
33
  "@modelcontextprotocol/server-sequential-thinking": "2025.12.18",
34
34
  "@testcontainers/postgresql": "11.14.0",
35
35
  "@types/node": "24.12.2",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "devDependencies": {
22
22
  "@biomejs/biome": "2.4.14",
23
- "@lousy-agents/mcp": "5.12.0",
23
+ "@lousy-agents/mcp": "5.12.2",
24
24
  "@modelcontextprotocol/server-sequential-thinking": "2025.12.18",
25
25
  "@types/node": "24.12.2",
26
26
  "@upstash/context7-mcp": "2.2.3",
package/dist/index.js CHANGED
@@ -567,7 +567,7 @@ module.exports = webpackEmptyAsyncContext;
567
567
 
568
568
 
569
569
  },
570
- 5951(__unused_rspack_module, __unused_rspack___webpack_exports__, __webpack_require__) {
570
+ 1792(__unused_rspack_module, __unused_rspack___webpack_exports__, __webpack_require__) {
571
571
  // NAMESPACE OBJECT: ../../node_modules/micromark/lib/constructs.js
572
572
  var constructs_namespaceObject = {};
573
573
  __webpack_require__.r(constructs_namespaceObject);
@@ -18404,6 +18404,56 @@ const MAX_NPMRC_BYTES = 64 * 1024;
18404
18404
 
18405
18405
  // EXTERNAL MODULE: ../../node_modules/yaml/dist/index.js
18406
18406
  var dist = __webpack_require__(3519);
18407
+ ;// CONCATENATED MODULE: ../core/src/lib/frontmatter.ts
18408
+ /**
18409
+ * Shared YAML frontmatter parser for markdown files.
18410
+ * Extracts YAML data between leading `---` delimiters.
18411
+ */
18412
+ /**
18413
+ * Parses YAML frontmatter from markdown content.
18414
+ *
18415
+ * Returns `null` when the content has no opening `---`, no closing `---`,
18416
+ * or contains invalid YAML.
18417
+ */ function parseFrontmatter(content) {
18418
+ const lines = content.split("\n");
18419
+ if (lines[0]?.trim() !== "---") {
18420
+ return null;
18421
+ }
18422
+ let endIndex = -1;
18423
+ for(let i = 1; i < lines.length; i++){
18424
+ if (lines[i]?.trim() === "---") {
18425
+ endIndex = i;
18426
+ break;
18427
+ }
18428
+ }
18429
+ if (endIndex === -1) {
18430
+ return null;
18431
+ }
18432
+ const yamlContent = lines.slice(1, endIndex).join("\n");
18433
+ let data;
18434
+ try {
18435
+ const parsed = (0,dist/* .parse */.qg)(yamlContent, {
18436
+ maxAliasCount: 0
18437
+ });
18438
+ data = parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
18439
+ } catch {
18440
+ return null;
18441
+ }
18442
+ const fieldLines = new Map();
18443
+ for(let i = 1; i < endIndex; i++){
18444
+ // Match YAML top-level field names: non-whitespace start, any chars except colon, then colon followed by whitespace or end-of-line
18445
+ const match = lines[i]?.match(/^([^\s:][^:]*?):(?:\s|$)/);
18446
+ if (match?.[1]) {
18447
+ fieldLines.set(match[1], i + 1);
18448
+ }
18449
+ }
18450
+ return {
18451
+ data: data ?? {},
18452
+ fieldLines,
18453
+ frontmatterStartLine: 1
18454
+ };
18455
+ }
18456
+
18407
18457
  ;// CONCATENATED MODULE: ../core/src/gateways/skill-lint-gateway.ts
18408
18458
  /**
18409
18459
  * Gateway for skill lint file system operations.
@@ -18417,7 +18467,8 @@ var dist = __webpack_require__(3519);
18417
18467
  * Skill directory locations to search for SKILL.md files.
18418
18468
  */ const SKILL_DIRECTORIES = [
18419
18469
  (0,external_node_path_.join)(".github", "skills"),
18420
- (0,external_node_path_.join)(".claude", "skills")
18470
+ (0,external_node_path_.join)(".claude", "skills"),
18471
+ (0,external_node_path_.join)(".agents", "skills")
18421
18472
  ];
18422
18473
  /**
18423
18474
  * File system implementation of the skill lint gateway.
@@ -18487,41 +18538,7 @@ var dist = __webpack_require__(3519);
18487
18538
  return readFileNoFollow(filePath, MAX_SKILL_FILE_BYTES);
18488
18539
  }
18489
18540
  parseFrontmatter(content) {
18490
- const lines = content.split("\n");
18491
- if (lines[0]?.trim() !== "---") {
18492
- return null;
18493
- }
18494
- let endIndex = -1;
18495
- for(let i = 1; i < lines.length; i++){
18496
- if (lines[i]?.trim() === "---") {
18497
- endIndex = i;
18498
- break;
18499
- }
18500
- }
18501
- if (endIndex === -1) {
18502
- return null;
18503
- }
18504
- const yamlContent = lines.slice(1, endIndex).join("\n");
18505
- let data;
18506
- try {
18507
- const parsed = (0,dist/* .parse */.qg)(yamlContent);
18508
- data = parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
18509
- } catch {
18510
- return null;
18511
- }
18512
- const fieldLines = new Map();
18513
- for(let i = 1; i < endIndex; i++){
18514
- // Match YAML top-level field names: non-whitespace start, any chars except colon, then colon+space
18515
- const match = lines[i]?.match(/^([^\s:][^:]*?):\s/);
18516
- if (match?.[1]) {
18517
- fieldLines.set(match[1], i + 1);
18518
- }
18519
- }
18520
- return {
18521
- data: data ?? {},
18522
- fieldLines,
18523
- frontmatterStartLine: 1
18524
- };
18541
+ return parseFrontmatter(content);
18525
18542
  }
18526
18543
  }
18527
18544
  /**
@@ -21659,40 +21676,7 @@ const initCommand = defineCommand({
21659
21676
  return readFileNoFollow(filePath, MAX_AGENT_FILE_BYTES);
21660
21677
  }
21661
21678
  parseFrontmatter(content) {
21662
- const lines = content.split("\n");
21663
- if (lines[0]?.trim() !== "---") {
21664
- return null;
21665
- }
21666
- let endIndex = -1;
21667
- for(let i = 1; i < lines.length; i++){
21668
- if (lines[i]?.trim() === "---") {
21669
- endIndex = i;
21670
- break;
21671
- }
21672
- }
21673
- if (endIndex === -1) {
21674
- return null;
21675
- }
21676
- const yamlContent = lines.slice(1, endIndex).join("\n");
21677
- let data;
21678
- try {
21679
- const parsed = (0,dist/* .parse */.qg)(yamlContent);
21680
- data = parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
21681
- } catch {
21682
- return null;
21683
- }
21684
- const fieldLines = new Map();
21685
- for(let i = 1; i < endIndex; i++){
21686
- const match = lines[i]?.match(/^([^\s:][^:]*?):\s/);
21687
- if (match?.[1]) {
21688
- fieldLines.set(match[1], i + 1);
21689
- }
21690
- }
21691
- return {
21692
- data: data ?? {},
21693
- fieldLines,
21694
- frontmatterStartLine: 1
21695
- };
21679
+ return parseFrontmatter(content);
21696
21680
  }
21697
21681
  }
21698
21682
  /**
@@ -51694,4 +51678,4 @@ if (installedChunkData !== 0) { // 0 means "already installed".'
51694
51678
  // module factories are used so entry inlining is disabled
51695
51679
  // startup
51696
51680
  // Load entry module and return exports
51697
- var __webpack_exports__ = __webpack_require__(5951);
51681
+ var __webpack_exports__ = __webpack_require__(1792);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lousy-agents/cli",
3
- "version": "5.12.1",
3
+ "version": "5.13.0",
4
4
  "description": "CLI scaffolding tool that sets up projects with structure, instructions, and feedback loops for AI coding assistants",
5
5
  "type": "module",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "devDependencies": {
24
24
  "@biomejs/biome": "2.4.14",
25
25
  "@eslint/eslintrc": "3.3.5",
26
- "@lousy-agents/mcp": "5.12.0",
26
+ "@lousy-agents/mcp": "5.12.2",
27
27
  "@modelcontextprotocol/server-sequential-thinking": "2025.12.18",
28
28
  "@testing-library/jest-dom": "6.9.1",
29
29
  "@testing-library/react": "16.3.2",