@alexandrealvaro/agentic 0.15.1-beta.1 → 0.15.2-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexandrealvaro/agentic",
3
- "version": "0.15.1-beta.1",
3
+ "version": "0.15.2-beta.1",
4
4
  "description": "Bootstrap and audit AGENTS.md, ARCHITECTURE.md, ADRs, skills, and subagents for engineering production code with LLMs",
5
5
  "type": "module",
6
6
  "bin": {
@@ -26,7 +26,8 @@ const SKILL_PATH_BY_AGENT = {
26
26
  * Per task-0029, every kit skill carries a kit-specific `summary:` field
27
27
  * alongside the Anthropic-spec `description:` field. `description:` is
28
28
  * trigger-keyword-rich for the agent's skill router; `summary:` is the
29
- * ≤120-char compressed cell that lands in the managed AGENTS.md table.
29
+ * compressed cell (≤320 chars, enforced by `test/skills.test.js`) that
30
+ * lands in the managed AGENTS.md table.
30
31
  *
31
32
  * Tries each known target-tree location in order. Throws if no installed
32
33
  * copy has the field — a missing summary surfaces an incomplete install
@@ -39,12 +40,17 @@ function readSkillSummary(cwd, skill) {
39
40
  if (!existsSync(path)) continue;
40
41
  found = true;
41
42
  const body = readFileSync(path, 'utf8');
42
- const match = body.match(/^summary:\s*(.+)$/m);
43
+ // Horizontal whitespace only between `summary:` and the value. JavaScript
44
+ // `\s` matches `\n`, so `\s*` would silently consume the line break and
45
+ // capture the following frontmatter line as the summary when the field
46
+ // is present but empty. Restricting to `[ \t]*` keeps the match on one
47
+ // line and lets an empty-summary line fall through to the throw below.
48
+ const match = body.match(/^summary:[ \t]*(.+)$/m);
43
49
  if (match) return match[1].trim();
44
50
  }
45
51
  if (found) {
46
52
  throw new Error(
47
- `skill ${skill} is installed but no SKILL.md carries the required \`summary:\` frontmatter field`
53
+ `skill ${skill} is installed but no SKILL.md carries a non-empty \`summary:\` frontmatter field`
48
54
  );
49
55
  }
50
56
  throw new Error(