Releases: joe-re/cmaform
Releases · joe-re/cmaform
Release list
v0.4.0
Changelog
All notable changes to cmaform will be documented in this file.
The format is based on Keep a Changelog,
and this project follows Semantic Versioning.
Unreleased
0.4.0 - 2026-06-16
Added
- Deployment resource (
deployments/<localName>/manifest.yaml): manage
scheduled (cron) and on-demand managed-agent deployments declaratively.
A deployment binds an agent + environment + initial events + an optional
5-field POSIX cronscheduleinto one unit, supportscreate/update/
archive, and is wired intoplan/apply/pull/sync/list/
initand thedeployment/deploytarget aliases.agent/environment/vault_ids[]accept name-based references
(resolved via state → remote → local apply set, with forward-dependency
support) in addition to raw ids.- Omitting the agent
versiontracks the latest at create time (version
drift is ignored in the diff); pinning a version detects and re-pins it. - Write-only resource credentials (e.g. a GitHub
authorization_token) are
sent on create/update but stripped before diffing; computed schedule fields
(last_run_at/upcoming_runs_at) are ignored. The imperative
pause/unpause/runtransitions are out of scope.
Changed
- Updated
@anthropic-ai/sdkto^0.104.1(adds thebeta.deployments.*
endpoints).
0.3.0 - 2026-06-08
Changed
cmaform plan/cmaform applynow require an existing
cmaform.state.json(created byinitorpull). When the state file
is missing they fail with exit code 2 and point atcmaform init,
instead of silently proceeding against an empty state.- Updated
@anthropic-ai/sdkto^0.102.0.
0.2.1 - 2026-06-01
Changed
- Updated README and package metadata to use Anthropic's official
Claude Managed Agentsterminology.
Fixed
- Fixed resolution of
latestsub-agent versions so referenced agents use the
current remote version when planning and applying changes.
0.2.0 - 2026-05-27
Added
cmaform fmtsubcommand: rewritemultiagent.agents[].id/
skills[].skill_idin local YAML files to the name form using
cmaform.state.jsonfor the id → name lookup. One-shot migration
helper for repositories that previously hand-copied raw IDs.--by-idflag forcmaform pull/cmaform sync: keep raw IDs in
multiagent.agents[]/skills[]when writing agent YAML, instead
of rewriting to the name form. Escape hatch for users who want the
pre-name-resolution output exactly.- Plan diff now annotates known IDs with a
# = <localName>comment
in the rendered YAML, so readers can tell at a glance which
sub-agent or skill an opaque ID refers to. - Pin assertion: when a
multiagent.agents[]/skills[]entry writes
bothname:andid:(orskill_id:), cmaform resolves the name
and verifies it matches the pinned ID. Mismatches abortplan/
applywith a clear error. Useful as a safety net during migration
from id-based to name-based references. - Project-local release procedure skill for preparing, verifying, and
publishing cmaform releases.
Changed
- CI now runs format, lint, typecheck, test, build, and CLI help checks with
pnpm 11 frompackageManager. - Development workflow now uses
oxfmt,oxlint,lefthook, and broader
unit coverage for lib-level planning, warning, normalization, and diff logic.
0.1.0 - 2026-05-25
Initial public release.
Added
- Terraform-style CLI (
cmaform) for managing Claude Managed Agents
declaratively from a local directory of YAML files. - Subcommands:
pull,plan,apply,sync,init,list. - Five managed resource types:
- agents (
agents/<name>.yaml) — full CRUD with field-level diff and
update detection. - skills (
skills/<localName>/) — directory upload (SKILL.md+
auxiliary files) with SHA-256 content hashing;applycreates a new
version on change. Hard delete only. - memory stores (
memory_stores/<localName>/manifest.yaml) — create,
update (metadata patch semantics), archive. - environments (
environments/<localName>/manifest.yaml) — create,
update, archive for cloud-type environments with package + networking
configuration. - vaults (
vaults/<localName>/manifest.yaml) — create and archive of
the vault resource only. Updates and credential management are out of
scope for this release; configure credentials on the Anthropic Console
after creating a vault with cmaform.
- agents (
- Name-based references in agent YAML (
multiagent.agents[].name,
skills[].name) with topological sort and pending-id sentinels so a fresh
workspace can be bootstrapped with onecmaform apply. - Plan output in Terraform style:
[+] create,[~] update,[-] delete
headers with ANSI color (green / yellow / red, with dim secondary lines
and bold-yellowWARN:/NOTE:labels). - Plan normalization: empty arrays vs
undefined,default_config
inheritance fortools[].configs[],latestversion pairing for
multiagent.agents[].versionandskills[].version, and deterministic
key ordering in YAML diff serialization. createactions are rendered as+ field: valuediffs (symmetric with
update). Long-text fields likesystemanddescriptionare collapsed to
the first three lines plus an... (N lines hidden)marker; pass
--verbose/-vfor the full content.- Dangling-reference warnings when a
deleteorskill_deletetarget is
still referenced by another local agent. Apply switches to a dedicated
"Proceed with these dangling deletes?" confirmation message. - Target filtering on
plan/applyaccepting resource-kind aliases
(agents,skills,memory_stores,environments,vaults, and their
singular / short forms) as well as individual resource names. initcommand (Terraform-style reconcile-only) andsynccommand
(rewrite local YAML from remote) for state recovery and discovery.- TypeScript source (Node.js 22+, ESM, strict mode), bundled to a single
dist/cli.jswith tsup. MIT-licensed.
Security
- Secrets never reach disk or terminal:
ANTHROPIC_API_KEYis forwarded to
the SDK and a singlefetchcall only. Future credential secret material
is masked in plan output before display. dist/cli.js.mapis intentionally not shipped in the npm tarball.pnpm auditclean against@anthropic-ai/sdk0.98.0 andyaml2.x.
v0.3.0
Changed
cmaform plan/cmaform applynow require an existing
cmaform.state.json(created byinitorpull). When the state file
is missing they fail with exit code 2 and point atcmaform init,
instead of silently proceeding against an empty state.- Updated
@anthropic-ai/sdkto^0.102.0.
v0.2.1
Changed
- Updated README and package metadata to use Anthropic's official
Claude Managed Agentsterminology.
Fixed
- Fixed resolution of
latestsub-agent versions so referenced agents use the current remote version when planning and applying changes.
v0.2.0
Changelog
All notable changes to cmaform will be documented in this file.
The format is based on Keep a Changelog,
and this project follows Semantic Versioning.
Unreleased
0.2.0 - 2026-05-27
Added
cmaform fmtsubcommand: rewritemultiagent.agents[].id/
skills[].skill_idin local YAML files to the name form using
cmaform.state.jsonfor the id → name lookup. One-shot migration
helper for repositories that previously hand-copied raw IDs.--by-idflag forcmaform pull/cmaform sync: keep raw IDs in
multiagent.agents[]/skills[]when writing agent YAML, instead
of rewriting to the name form. Escape hatch for users who want the
pre-name-resolution output exactly.- Plan diff now annotates known IDs with a
# = <localName>comment
in the rendered YAML, so readers can tell at a glance which
sub-agent or skill an opaque ID refers to. - Pin assertion: when a
multiagent.agents[]/skills[]entry writes
bothname:andid:(orskill_id:), cmaform resolves the name
and verifies it matches the pinned ID. Mismatches abortplan/
applywith a clear error. Useful as a safety net during migration
from id-based to name-based references. - Project-local release procedure skill for preparing, verifying, and
publishing cmaform releases.
Changed
- CI now runs format, lint, typecheck, test, build, and CLI help checks with
pnpm 11 frompackageManager. - Development workflow now uses
oxfmt,oxlint,lefthook, and broader
unit coverage for lib-level planning, warning, normalization, and diff logic.
0.1.0 - 2026-05-25
Initial public release.
Added
- Terraform-style CLI (
cmaform) for managing Anthropic Managed Agents
declaratively from a local directory of YAML files. - Subcommands:
pull,plan,apply,sync,init,list. - Five managed resource types:
- agents (
agents/<name>.yaml) — full CRUD with field-level diff and
update detection. - skills (
skills/<localName>/) — directory upload (SKILL.md+
auxiliary files) with SHA-256 content hashing;applycreates a new
version on change. Hard delete only. - memory stores (
memory_stores/<localName>/manifest.yaml) — create,
update (metadata patch semantics), archive. - environments (
environments/<localName>/manifest.yaml) — create,
update, archive for cloud-type environments with package + networking
configuration. - vaults (
vaults/<localName>/manifest.yaml) — create and archive of
the vault resource only. Updates and credential management are out of
scope for this release; configure credentials on the Anthropic Console
after creating a vault with cmaform.
- agents (
- Name-based references in agent YAML (
multiagent.agents[].name,
skills[].name) with topological sort and pending-id sentinels so a fresh
workspace can be bootstrapped with onecmaform apply. - Plan output in Terraform style:
[+] create,[~] update,[-] delete
headers with ANSI color (green / yellow / red, with dim secondary lines
and bold-yellowWARN:/NOTE:labels). - Plan normalization: empty arrays vs
undefined,default_config
inheritance fortools[].configs[],latestversion pairing for
multiagent.agents[].versionandskills[].version, and deterministic
key ordering in YAML diff serialization. createactions are rendered as+ field: valuediffs (symmetric with
update). Long-text fields likesystemanddescriptionare collapsed to
the first three lines plus an... (N lines hidden)marker; pass
--verbose/-vfor the full content.- Dangling-reference warnings when a
deleteorskill_deletetarget is
still referenced by another local agent. Apply switches to a dedicated
"Proceed with these dangling deletes?" confirmation message. - Target filtering on
plan/applyaccepting resource-kind aliases
(agents,skills,memory_stores,environments,vaults, and their
singular / short forms) as well as individual resource names. initcommand (Terraform-style reconcile-only) andsynccommand
(rewrite local YAML from remote) for state recovery and discovery.- TypeScript source (Node.js 22+, ESM, strict mode), bundled to a single
dist/cli.jswith tsup. MIT-licensed.
Security
- Secrets never reach disk or terminal:
ANTHROPIC_API_KEYis forwarded to
the SDK and a singlefetchcall only. Future credential secret material
is masked in plan output before display. dist/cli.js.mapis intentionally not shipped in the npm tarball.pnpm auditclean against@anthropic-ai/sdk0.98.0 andyaml2.x.