@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.
- package/dist/bundles/catenv/index.js +17 -5
- package/dist/bundles/cli/index.js +17 -5
- package/dist/bundles/runner-images/semantic-release/Dockerfile +15 -12
- package/dist/bundles/runner-images/semantic-release/scripts/semanticRelease +10 -1
- package/dist/pipeline/src/agentSkills/types.d.ts +13 -3
- package/dist/pipeline/src/agentSkills/types.js +17 -5
- package/dist/pipeline/src/agentSkills/types.js.map +1 -1
- package/dist/pipeline/src/types/config.d.ts +5 -2
- package/dist/runner-images/semantic-release/Dockerfile +15 -12
- package/dist/runner-images/semantic-release/scripts/semanticRelease +10 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
1707
|
+
return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
|
|
1696
1708
|
}
|
|
1697
|
-
return (
|
|
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
|
|
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
|
|
7690
|
+
return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
|
|
7679
7691
|
}
|
|
7680
|
-
return (
|
|
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
|
-
#
|
|
4
|
-
#
|
|
5
|
-
FROM node:
|
|
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:
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
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@
|
|
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
|
-
|
|
19
|
-
@semantic-release/changelog@
|
|
20
|
-
@semantic-release/gitlab@
|
|
21
|
-
@semantic-release/exec@
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
31
|
+
return [...exports.DEFAULT_AGENT_SKILL_TARGETS];
|
|
20
32
|
}
|
|
21
|
-
return (
|
|
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
|
|
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
|
|
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: [...] }`:
|
|
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
|
-
#
|
|
4
|
-
#
|
|
5
|
-
FROM node:
|
|
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:
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
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@
|
|
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
|
-
|
|
19
|
-
@semantic-release/changelog@
|
|
20
|
-
@semantic-release/gitlab@
|
|
21
|
-
@semantic-release/exec@
|
|
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(
|
|
90
|
+
"message": "chore(release): \${nextRelease.version}\n\n\${nextRelease.notes}"
|
|
82
91
|
}]${PUBLISH_PLUGIN}
|
|
83
92
|
],
|
|
84
93
|
"branches": [
|