@catladder/cli 0.0.0-next-1c65899f → 0.0.0-next-ace3dbf2

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.
@@ -1676,25 +1676,37 @@ exports.getShippedSkills = getShippedSkills;
1676
1676
  "use strict";
1677
1677
 
1678
1678
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1679
- exports.getAgentSkillTargets = exports.AGENT_SKILL_TARGET_DIRS = void 0;
1679
+ exports.getAgentSkillTargets = exports.DEFAULT_AGENT_SKILL_TARGETS = exports.AGENT_SKILL_TARGET_DIRS = void 0;
1680
1680
  /**
1681
1681
  * where agent skills get materialized, per agent ecosystem:
1682
- * - claude-code: the Claude Code project skills directory
1682
+ * - claude-code: the Claude Code project skills directory (the default)
1683
1683
  * - agents: the cross-agent universal skills directory
1684
- * (https://agents.md convention, picked up by Cursor, Codex, ...)
1684
+ * (https://agents.md convention). Opt-in — as of now no widely-used
1685
+ * agent reads `.agents/skills/`; a repo that wants cross-agent
1686
+ * discovery can also just symlink `.agents/skills` → `.claude/skills`
1687
+ * once itself instead of enabling this target.
1685
1688
  */
1686
1689
  exports.AGENT_SKILL_TARGET_DIRS = {
1687
1690
  "claude-code": ".claude/skills",
1688
1691
  agents: ".agents/skills",
1689
1692
  };
1693
+ /**
1694
+ * the target(s) written when `agentSkills` does not name any explicitly.
1695
+ * Claude Code is the only agent that consumes these skills today, so we
1696
+ * default to it alone rather than duplicating every skill into
1697
+ * `.agents/skills/` (extra committed files + diff noise on every run).
1698
+ */
1699
+ exports.DEFAULT_AGENT_SKILL_TARGETS = [
1700
+ "claude-code",
1701
+ ];
1690
1702
  const getAgentSkillTargets = (agentSkills) => {
1691
1703
  var _a;
1692
1704
  if (agentSkills === false)
1693
1705
  return [];
1694
1706
  if (agentSkills === true || agentSkills === undefined) {
1695
- return Object.keys(exports.AGENT_SKILL_TARGET_DIRS);
1707
+ return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
1696
1708
  }
1697
- return ((_a = agentSkills.targets) !== null && _a !== void 0 ? _a : Object.keys(exports.AGENT_SKILL_TARGET_DIRS));
1709
+ return (_a = agentSkills.targets) !== null && _a !== void 0 ? _a : [...exports.DEFAULT_AGENT_SKILL_TARGETS];
1698
1710
  };
1699
1711
  exports.getAgentSkillTargets = getAgentSkillTargets;
1700
1712
  //# sourceMappingURL=types.js.map
@@ -7659,25 +7659,37 @@ exports.getShippedSkills = getShippedSkills;
7659
7659
  "use strict";
7660
7660
 
7661
7661
  Object.defineProperty(exports, "__esModule", ({ value: true }));
7662
- exports.getAgentSkillTargets = exports.AGENT_SKILL_TARGET_DIRS = void 0;
7662
+ exports.getAgentSkillTargets = exports.DEFAULT_AGENT_SKILL_TARGETS = exports.AGENT_SKILL_TARGET_DIRS = void 0;
7663
7663
  /**
7664
7664
  * where agent skills get materialized, per agent ecosystem:
7665
- * - claude-code: the Claude Code project skills directory
7665
+ * - claude-code: the Claude Code project skills directory (the default)
7666
7666
  * - agents: the cross-agent universal skills directory
7667
- * (https://agents.md convention, picked up by Cursor, Codex, ...)
7667
+ * (https://agents.md convention). Opt-in — as of now no widely-used
7668
+ * agent reads `.agents/skills/`; a repo that wants cross-agent
7669
+ * discovery can also just symlink `.agents/skills` → `.claude/skills`
7670
+ * once itself instead of enabling this target.
7668
7671
  */
7669
7672
  exports.AGENT_SKILL_TARGET_DIRS = {
7670
7673
  "claude-code": ".claude/skills",
7671
7674
  agents: ".agents/skills",
7672
7675
  };
7676
+ /**
7677
+ * the target(s) written when `agentSkills` does not name any explicitly.
7678
+ * Claude Code is the only agent that consumes these skills today, so we
7679
+ * default to it alone rather than duplicating every skill into
7680
+ * `.agents/skills/` (extra committed files + diff noise on every run).
7681
+ */
7682
+ exports.DEFAULT_AGENT_SKILL_TARGETS = [
7683
+ "claude-code",
7684
+ ];
7673
7685
  const getAgentSkillTargets = (agentSkills) => {
7674
7686
  var _a;
7675
7687
  if (agentSkills === false)
7676
7688
  return [];
7677
7689
  if (agentSkills === true || agentSkills === undefined) {
7678
- return Object.keys(exports.AGENT_SKILL_TARGET_DIRS);
7690
+ return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
7679
7691
  }
7680
- return ((_a = agentSkills.targets) !== null && _a !== void 0 ? _a : Object.keys(exports.AGENT_SKILL_TARGET_DIRS));
7692
+ return (_a = agentSkills.targets) !== null && _a !== void 0 ? _a : [...exports.DEFAULT_AGENT_SKILL_TARGETS];
7681
7693
  };
7682
7694
  exports.getAgentSkillTargets = getAgentSkillTargets;
7683
7695
  //# sourceMappingURL=types.js.map
@@ -1,24 +1,27 @@
1
1
  # job images are addressed by a content hash of this directory — the
2
2
  # build must be reproducible, so every dependency is pinned exactly.
3
- # (@semantic-release/changelog@7 went ESM-only and broke overnight under
4
- # the CJS semantic-release@19 while the hash claimed "unchanged".)
5
- FROM node:22-alpine
3
+ # node:24 satisfies the newer plugins' engine requirements
4
+ # (@semantic-release/git and @semantic-release/changelog need node >=24.15).
5
+ FROM node:24-alpine
6
6
 
7
7
  RUN apk add --no-cache bash git git-lfs
8
8
 
9
9
  # add semantic release
10
- # NOTE: keep every plugin pinned to a major that is compatible with
11
- # semantic-release@19 (they declare `semantic-release` as a peer dependency).
12
- # Unpinned plugins drift to their latest major on image rebuild, which now
13
- # requires semantic-release>=20 and fails with "plugins configuration is invalid".
10
+ # NOTE: pin every dependency exactly. These are the semantic-release@25 line
11
+ # (all ESM — v25 loads plugins via dynamic import, so changelog@7/git@11 are
12
+ # fine). Every plugin declares `semantic-release` as a peer dependency, so a
13
+ # plugin major that outpaces the semantic-release major fails the release job
14
+ # with "plugins configuration is invalid" — bump them together. Upstream
15
+ # @semantic-release/git replaces the old panter fork; see
16
+ # scripts/semanticRelease for why the commit message is hardcoded.
14
17
  RUN yarn global add \
15
- semantic-release@19.0.5 \
18
+ semantic-release@25.0.8 \
16
19
  @semantic-release/commit-analyzer@13.0.1 \
17
20
  @semantic-release/release-notes-generator@14.1.1 \
18
- https://github.com/panter/git.git#b4037626cc583d3e9f7995ea0604b23730d0a22e \
19
- @semantic-release/changelog@6.0.3 \
20
- @semantic-release/gitlab@9.5.1 \
21
- @semantic-release/exec@6.0.3
21
+ @semantic-release/git@11.0.0 \
22
+ @semantic-release/changelog@7.0.0 \
23
+ @semantic-release/gitlab@13.3.3 \
24
+ @semantic-release/exec@7.1.0
22
25
 
23
26
  RUN mkdir -p /scripts
24
27
  COPY ./scripts/* /scripts/
@@ -77,8 +77,17 @@ if [ ! -e .releaserc ]; then
77
77
  ],
78
78
  "@semantic-release/release-notes-generator",
79
79
  "@semantic-release/changelog",
80
+ # message prefix hardcoded to "release" on purpose. Ideally this would be
81
+ # "chore(\${branch.type})", but upstream @semantic-release/git passes the
82
+ # branch *name* (not the object) into the template, so \${branch.type} is
83
+ # never available (see https://github.com/semantic-release/git/pull/213,
84
+ # open/ignored since 2020 — the README documents branch.type but the code
85
+ # never wired it up; the old panter fork existed only to patch this). On the
86
+ # default branch branch.type is always "release", and the pipeline
87
+ # loop-prevention rule keys on the literal "chore(release)" prefix, so keep
88
+ # this literal. Don't "fix" it back to \${branch.type}.
80
89
  ["@semantic-release/git", {
81
- "message": "chore(\${branch.type}): \${nextRelease.version}\n\n\${nextRelease.notes}"
90
+ "message": "chore(release): \${nextRelease.version}\n\n\${nextRelease.notes}"
82
91
  }]${PUBLISH_PLUGIN}
83
92
  ],
84
93
  "branches": [
@@ -1,21 +1,31 @@
1
1
  /**
2
2
  * where agent skills get materialized, per agent ecosystem:
3
- * - claude-code: the Claude Code project skills directory
3
+ * - claude-code: the Claude Code project skills directory (the default)
4
4
  * - agents: the cross-agent universal skills directory
5
- * (https://agents.md convention, picked up by Cursor, Codex, ...)
5
+ * (https://agents.md convention). Opt-in — as of now no widely-used
6
+ * agent reads `.agents/skills/`; a repo that wants cross-agent
7
+ * discovery can also just symlink `.agents/skills` → `.claude/skills`
8
+ * once itself instead of enabling this target.
6
9
  */
7
10
  export declare const AGENT_SKILL_TARGET_DIRS: {
8
11
  readonly "claude-code": ".claude/skills";
9
12
  readonly agents: ".agents/skills";
10
13
  };
11
14
  export type AgentSkillTargetName = keyof typeof AGENT_SKILL_TARGET_DIRS;
15
+ /**
16
+ * the target(s) written when `agentSkills` does not name any explicitly.
17
+ * Claude Code is the only agent that consumes these skills today, so we
18
+ * default to it alone rather than duplicating every skill into
19
+ * `.agents/skills/` (extra committed files + diff noise on every run).
20
+ */
21
+ export declare const DEFAULT_AGENT_SKILL_TARGETS: AgentSkillTargetName[];
12
22
  /**
13
23
  * agent skills materialization, see {@link Config.agentSkills}
14
24
  */
15
25
  export type AgentSkillsConfig = boolean | {
16
26
  /**
17
27
  * which agent skill directories to write to.
18
- * Defaults to all known targets.
28
+ * Defaults to {@link DEFAULT_AGENT_SKILL_TARGETS} (`claude-code`).
19
29
  */
20
30
  targets?: AgentSkillTargetName[];
21
31
  };
@@ -1,24 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAgentSkillTargets = exports.AGENT_SKILL_TARGET_DIRS = void 0;
3
+ exports.getAgentSkillTargets = exports.DEFAULT_AGENT_SKILL_TARGETS = exports.AGENT_SKILL_TARGET_DIRS = void 0;
4
4
  /**
5
5
  * where agent skills get materialized, per agent ecosystem:
6
- * - claude-code: the Claude Code project skills directory
6
+ * - claude-code: the Claude Code project skills directory (the default)
7
7
  * - agents: the cross-agent universal skills directory
8
- * (https://agents.md convention, picked up by Cursor, Codex, ...)
8
+ * (https://agents.md convention). Opt-in — as of now no widely-used
9
+ * agent reads `.agents/skills/`; a repo that wants cross-agent
10
+ * discovery can also just symlink `.agents/skills` → `.claude/skills`
11
+ * once itself instead of enabling this target.
9
12
  */
10
13
  exports.AGENT_SKILL_TARGET_DIRS = {
11
14
  "claude-code": ".claude/skills",
12
15
  agents: ".agents/skills",
13
16
  };
17
+ /**
18
+ * the target(s) written when `agentSkills` does not name any explicitly.
19
+ * Claude Code is the only agent that consumes these skills today, so we
20
+ * default to it alone rather than duplicating every skill into
21
+ * `.agents/skills/` (extra committed files + diff noise on every run).
22
+ */
23
+ exports.DEFAULT_AGENT_SKILL_TARGETS = [
24
+ "claude-code",
25
+ ];
14
26
  const getAgentSkillTargets = (agentSkills) => {
15
27
  var _a;
16
28
  if (agentSkills === false)
17
29
  return [];
18
30
  if (agentSkills === true || agentSkills === undefined) {
19
- return Object.keys(exports.AGENT_SKILL_TARGET_DIRS);
31
+ return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
20
32
  }
21
- return ((_a = agentSkills.targets) !== null && _a !== void 0 ? _a : Object.keys(exports.AGENT_SKILL_TARGET_DIRS));
33
+ return (_a = agentSkills.targets) !== null && _a !== void 0 ? _a : [...exports.DEFAULT_AGENT_SKILL_TARGETS];
22
34
  };
23
35
  exports.getAgentSkillTargets = getAgentSkillTargets;
24
36
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../pipeline/src/agentSkills/types.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG;IACrC,aAAa,EAAE,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB;CAChB,CAAC;AAiBJ,MAAM,oBAAoB,GAAG,CAClC,WAA0C,EAClB,EAAE;;IAC1B,IAAI,WAAW,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,+BAAuB,CAA2B,CAAC;IACxE,CAAC;IACD,OAAO,CACL,MAAA,WAAW,CAAC,OAAO,mCAClB,MAAM,CAAC,IAAI,CAAC,+BAAuB,CAA4B,CACjE,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../pipeline/src/agentSkills/types.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACU,QAAA,uBAAuB,GAAG;IACrC,aAAa,EAAE,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB;CAChB,CAAC;AAIX;;;;;GAKG;AACU,QAAA,2BAA2B,GAA2B;IACjE,aAAa;CACd,CAAC;AAeK,MAAM,oBAAoB,GAAG,CAClC,WAA0C,EAClB,EAAE;;IAC1B,IAAI,WAAW,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,mCAA2B,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAA,WAAW,CAAC,OAAO,mCAAI,CAAC,GAAG,mCAA2B,CAAC,CAAC;AACjE,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B"}
@@ -260,9 +260,12 @@ export type Config<C extends ConfigProps = never> = {
260
260
  * `.claude/skills/`) — that namespace is owned by catladder and must
261
261
  * not be edited manually.
262
262
  *
263
- * - `true` (default): write to all known agent skill directories
263
+ * - `true` / omitted (default): write to `.claude/skills/` only
264
+ * (Claude Code is the only agent that consumes these today)
264
265
  * - `false`: opt out (previously generated skills are removed)
265
- * - `{ targets: [...] }`: only write to the given targets
266
+ * - `{ targets: [...] }`: write to the given targets, e.g.
267
+ * `["claude-code", "agents"]` to also populate the cross-agent
268
+ * `.agents/skills/` directory
266
269
  */
267
270
  agentSkills?: AgentSkillsConfig;
268
271
  /**
@@ -1,24 +1,27 @@
1
1
  # job images are addressed by a content hash of this directory — the
2
2
  # build must be reproducible, so every dependency is pinned exactly.
3
- # (@semantic-release/changelog@7 went ESM-only and broke overnight under
4
- # the CJS semantic-release@19 while the hash claimed "unchanged".)
5
- FROM node:22-alpine
3
+ # node:24 satisfies the newer plugins' engine requirements
4
+ # (@semantic-release/git and @semantic-release/changelog need node >=24.15).
5
+ FROM node:24-alpine
6
6
 
7
7
  RUN apk add --no-cache bash git git-lfs
8
8
 
9
9
  # add semantic release
10
- # NOTE: keep every plugin pinned to a major that is compatible with
11
- # semantic-release@19 (they declare `semantic-release` as a peer dependency).
12
- # Unpinned plugins drift to their latest major on image rebuild, which now
13
- # requires semantic-release>=20 and fails with "plugins configuration is invalid".
10
+ # NOTE: pin every dependency exactly. These are the semantic-release@25 line
11
+ # (all ESM — v25 loads plugins via dynamic import, so changelog@7/git@11 are
12
+ # fine). Every plugin declares `semantic-release` as a peer dependency, so a
13
+ # plugin major that outpaces the semantic-release major fails the release job
14
+ # with "plugins configuration is invalid" — bump them together. Upstream
15
+ # @semantic-release/git replaces the old panter fork; see
16
+ # scripts/semanticRelease for why the commit message is hardcoded.
14
17
  RUN yarn global add \
15
- semantic-release@19.0.5 \
18
+ semantic-release@25.0.8 \
16
19
  @semantic-release/commit-analyzer@13.0.1 \
17
20
  @semantic-release/release-notes-generator@14.1.1 \
18
- https://github.com/panter/git.git#b4037626cc583d3e9f7995ea0604b23730d0a22e \
19
- @semantic-release/changelog@6.0.3 \
20
- @semantic-release/gitlab@9.5.1 \
21
- @semantic-release/exec@6.0.3
21
+ @semantic-release/git@11.0.0 \
22
+ @semantic-release/changelog@7.0.0 \
23
+ @semantic-release/gitlab@13.3.3 \
24
+ @semantic-release/exec@7.1.0
22
25
 
23
26
  RUN mkdir -p /scripts
24
27
  COPY ./scripts/* /scripts/
@@ -77,8 +77,17 @@ if [ ! -e .releaserc ]; then
77
77
  ],
78
78
  "@semantic-release/release-notes-generator",
79
79
  "@semantic-release/changelog",
80
+ # message prefix hardcoded to "release" on purpose. Ideally this would be
81
+ # "chore(\${branch.type})", but upstream @semantic-release/git passes the
82
+ # branch *name* (not the object) into the template, so \${branch.type} is
83
+ # never available (see https://github.com/semantic-release/git/pull/213,
84
+ # open/ignored since 2020 — the README documents branch.type but the code
85
+ # never wired it up; the old panter fork existed only to patch this). On the
86
+ # default branch branch.type is always "release", and the pipeline
87
+ # loop-prevention rule keys on the literal "chore(release)" prefix, so keep
88
+ # this literal. Don't "fix" it back to \${branch.type}.
80
89
  ["@semantic-release/git", {
81
- "message": "chore(\${branch.type}): \${nextRelease.version}\n\n\${nextRelease.notes}"
90
+ "message": "chore(release): \${nextRelease.version}\n\n\${nextRelease.notes}"
82
91
  }]${PUBLISH_PLUGIN}
83
92
  ],
84
93
  "branches": [