Releases: sampleXbro/agentsmesh
v0.6.0
Changelog
0.6.0 - 2026-04-25
Added
- Full plugin parity with built-in targets — plugin targets now have access to the same runtime capabilities as built-in targets:
- Conversion support: plugins can declare
supportsConversion: { commands: true, agents: true }and users can configurecommands_to_skills/agents_to_skillsfor plugin target IDs inagentsmesh.yaml. The conversion schema now accepts arbitrary target IDs alongside hardcoded builtins. Conversion values support per-scope control:foo-ide: { project: true, global: false }or the shorthandfoo-ide: truefor both scopes. - Global mode: plugin descriptors that define
globalorglobalSupportlayouts,globalCapabilities, andglobalDetectionPathsare fully resolved by the engine —generate --global,import --global,lint --global, andmatrix --globalall work with plugin targets. - Scoped settings emission:
emitScopedSettingshooks on plugin descriptors are now called during generation (previously only checked on builtins). - Hook post-processing:
postProcessHookOutputshooks on plugin descriptors are now called during the hook generation pass. - Per-feature lint hooks:
lint.commands,lint.mcp,lint.permissions,lint.hooks, andlint.ignoreon plugin descriptors receive{ scope }context for project vs global differentiation. - Unified generator resolution: a single code path (
resolveTargetFeatureGenerator) resolves generators for both builtins and plugins, removing duplicate resolution logic from the engine.
- Conversion support: plugins can declare
- Plugin support in all CLI commands —
diff,check,matrix, andimport --from <plugin-id>now bootstrap and resolve plugin targets. Previously onlygenerateandlintsupported plugins. - Richer target scaffold —
agentsmesh target scaffoldnow generates descriptors with global layout,globalCapabilities,globalDetectionPaths,supportsConversion, per-feature lint hook stubs, andrewriteGeneratedPathfor global path rewriting. - Comprehensive plugin test fixture (
tests/fixtures/plugins/rich-plugin/) — covers 100% ofTargetDescriptorfields including all 8 feature generators, per-feature lint hooks, project and global layouts with output families, shared artifacts, scope extras, scoped settings, hook post-processing, and conversion support. - Typed root barrel export —
import { generate, importFrom, loadCanonical, registerTargetDescriptor } from 'agentsmesh'now resolves to a proper.d.tsunder strict TypeScript. The rootexports."."is a conditional block withtypes,import, anddefault, pointing at a new public barrel (src/public/index.ts). ClosesTS7016: Could not find a declaration file for module 'agentsmesh'that appeared for any downstream TS consumer. - Typed error taxonomy exported from the public API —
AgentsMeshErrorbase class plus 8 concrete subclasses (ConfigNotFoundError,ConfigValidationError,TargetNotFoundError,ImportError,GenerationError,RemoteFetchError,LockAcquisitionError,FileSystemError), each carrying a stablecodefield (AM_CONFIG_NOT_FOUND,AM_CONFIG_INVALID,AM_TARGET_NOT_FOUND,AM_IMPORT_FAILED,AM_GENERATION_FAILED,AM_REMOTE_FETCH_FAILED,AM_LOCK_ACQUISITION_FAILED,AM_FILESYSTEM). Programmatic consumers can branch onerr instanceof ConfigNotFoundErrororerr.code === 'AM_CONFIG_INVALID'without parsing error message strings. Error throw sites insrc/config/core/loader.tsandsrc/utils/filesystem/fs.tsnow emit typed errors; stack-trace context andcausechains preserved. - Canonical domain types in the public barrel — 14 types (
CanonicalFiles,CanonicalRule,CanonicalCommand,CanonicalAgent,CanonicalSkill,SkillSupportingFile,Permissions,IgnorePatterns,McpServer,StdioMcpServer,UrlMcpServer,McpConfig,Hooks,HookEntry) are now exported fromagentsmeshandagentsmesh/canonical. Programmatic consumers can finally type the result ofloadCanonical()without reaching into internal modules. - Process-level lock for concurrent
generate—agentsmesh generateacquires an atomic mkdir-based lock at.agentsmesh/.generate.lockbefore writing. Concurrent generates serialize cleanly; stale locks (dead PID on the same host, or age > 60 seconds) are evicted automatically;SIGINT/SIGTERM/normal exit release the lock idempotently. Dry-run and check-only modes skip the lock. Watch mode's lock-file ignore list was extended so self-triggered generate passes do not retrigger the watcher. - Cross-platform CI matrix — quality gates now run on
ubuntu-latest× Node 20/22/24, pluswindows-latest× Node 22 andmacos-latest× Node 22. Previously onlyubuntu-latest× Node 22. E2E tests run on Linux and macOS; Windows runs lint/typecheck/unit/build. - Packaging guards in CI — three new gates run on every push in a dedicated
smokejob:publint— package.json metadata sanity (exports ordering,files, module type).@arethetypeswrong/cliwith theesm-onlyprofile — verifies every public entrypoint resolves to types undernode16 (from ESM)andbundlermodule resolution.tests/consumer-smoke/— packs the tarball, installs it into a throwaway strict-mode TS project, and runstsc --noEmitagainst every public symbol (runtime functions, canonical types, target-descriptor types, and error classes). CatchesTS7016and type-resolution regressions that packaging-metadata checks miss.- Also runnable locally via
pnpm publint,pnpm attw,pnpm consumer-smoke.
- Post-pack smoke test in CI — the
smokejob installs the packed tarball withnpm install -gand verifiesagentsmesh --version,agentsmesh --help,amsh --version, andagentsmesh init --yesall succeed in a clean temp project. Catches broken shebangs, missing files from thefilesarray, and bin misconfiguration before publish. docs/add-new-target-playbook.md— self-contained guide for adding a new target (built-in or external plugin, project and global mode) designed to be handed to an AI coding agent. Covers research checklist, scaffold workflow, descriptor filling, realistic fixtures, strict-assertion test patterns, registration file wiring, matrix/docs updates, and a verification one-liner. Referenced by the canonicaladd-agent-targetskill as the authoritative workflow document.- Boot-time guard against ambiguous shared-artifact ownership —
BUILTIN_TARGETSinitialization now runsassertSharedArtifactOwnersUnique()(src/targets/catalog/shared-artifact-owner.ts) and throws if two descriptors claim the same or overlappingsharedArtifacts: { '<prefix>': 'owner' }entry. Previously the rewriter would silently pick the first match by iteration order, so a misconfigured plugin or future builtin could quietly route global skill writes to the wrong target. The error names both target IDs and both prefixes and suggests changing one role to'consumer'or namespacing the prefix. Covered bytests/unit/targets/catalog/shared-artifact-owner.test.ts(9 cases including identical-prefix conflicts, prefix-overlap conflicts, owner-vs-consumer non-conflicts, and the live builtin set). - Cross-process race coverage for the generate lock —
tests/integration/generate-process-lock.integration.test.tsnow proves two parallelnode dist/cli.js generateinvocations against the same project serialize via the existing process lock, both exit0, produce deterministic output, and release.agentsmesh/.generate.lockafter the run. Complements the existing unit tests that exerciseacquireProcessLockdirectly. - End-to-end Copilot dual-mirror coverage —
tests/unit/targets/copilot/global-layout.test.tsadds two engine-level assertions that prove Copilot'smirrorGlobalPathemits the exact set.copilot/skills/<name>/,.agents/skills/<name>/, and.claude/skills/<name>/in global mode when codex-cli is not active, and skips the.agents/skills/mirror when codex-cli is generated alongside (so codex-cli's'owner'claim wins). - Programmatic API: complete
lint,diff,check, and config-loader surface — every CLI capability is now callable as a typed function. New exports fromagentsmeshandagentsmesh/engine:loadConfig(projectRoot)andloadConfigFromDirectory(configDir)— load + validateagentsmesh.yaml(mergingagentsmesh.local.yaml) and return{ config: ValidatedConfig, configDir }. ThrowsConfigNotFoundError/ConfigValidationErrorwith stablecodefields.lint(opts)— runs target linters, returns{ diagnostics, hasErrors }. Pure: no I/O, no logging.diff(ctx)— runs generate internally, returns{ results, diffs, summary }. PluscomputeDiff(results)andformatDiffSummary(summary)helpers for callers that already have generate results.check(opts)— pure lock-vs-current drift detection backed by the new sharedsrc/core/check/lock-sync.tsmodule. Returns a structuredLockSyncReport(inSync,hasLock,modified,added,removed,extendsModified,lockedViolations). Theagentsmesh checkCLI command was refactored to use the same helper so CLI and Programmatic API can never drift.- New types:
ValidatedConfig,TargetLayoutScope,LintOptions,LintResult,LintDiagnostic,ComputeDiffResult,DiffEntry,DiffSummary,CheckLockSyncOptions,LockSyncReport.
- Programmatic API runtime coverage — new
tests/integration/programmatic-api.integration.test.ts(21 strict assertions) exercises every public function and every error class against real fixture state: shape inventory,loadConfighappy/missing/invalid-schema paths,loadCanonical,generatewith exact-paths assertion,targetFilternarrowing,registerTargetDescriptorplugin wiring throughgenerate,importFromend-t...
v0.5.0
Minor Changes
-
ec5e3a6: Breaking (descriptor authors): Built-in targets now declare global mode under
globalSupport(capabilities, detection paths, layout, optionalscopeExtras) instead of separateglobal,globalCapabilities, andglobalDetectionPathsfields. Command/workflow and Gemini settings generation are modeled with capability flavors on the canonical generators; Copilot/Cursor root mirrors uselayout.outputFamiliesfor rewrite cache keys.CLI / docs:
pnpm matrix:generaterefreshes README and website support-matrix blocks from the catalog;pnpm matrix:verifyfails on drift (also runs in CI). Init detection usescollectDetectionPathsfrom the catalog. -
ec5e3a6: Add public library entry points (
./engine,./canonical,./targets) for programmatic use, introduce the parametrized target contract matrix undertests/contract/, and document coverage exclusions intasks/coverage-gaps.md.
v0.3.1
Changelog
Next version
0.3.1 - 2026-04-12
Changed
- Refresh direct and transitive dependencies to patched releases, including guarded
pnpmoverrides for vulnerablevite,picomatch, andbrace-expansionranges pulled in through the toolchain.
Fixed
- Remove the brittle
npm install -g npm@lateststep from the npm trusted-publishing workflow and run the publish job on Node 24 so release automation uses a bundled npm that already satisfies trusted-publishing requirements. - Harden
watchcommand unit-test wait budgets after the Vitest upgrade so the full suite stays stable under slower CI and coverage runs.
0.3.0 - 2026-04-12
Added
- Add Kiro as a supported target with native project-level
AGENTS.md,.kiro/steering/*.md,.kiro/skills/*/SKILL.md,.kiro/hooks/*.kiro.hook,.kiro/settings/mcp.json, and.kiroignoreimport/generate support.
Changed
- Replace the appended AgentsMesh Generation Contract root paragraph with an installed-repo guide:
agentsmesh.yaml/agentsmesh.local.yaml, what lives under.agentsmesh,init/import/install/generate, and maintenance commands (diff,lint,check,watch,matrix,merge). Prior shipped contract wordings remain import-compatible legacy forms so root instruction upgrades do not duplicate sections. agentsmesh init --yesnow adds the same example canonical files as a normalinit, but only for categories left empty by import. The starter target set also stays conflict-free by default, leavingcodex-cliopt-in when projects want Codex output alongside otherAGENTS.mdtargets.
Fixed
- Fix website deployment SEO handling by deriving canonical URLs, sitemap/robots output, and optional
CNAMEgeneration from one deploy URL source of truth. Internal docs links now stay base-agnostic across GitHub Pages project paths and root custom domains. - When multiple targets generate
AGENTS.md, AgentsMesh now prefers the richer Codex output when it is a strict superset instead of failing the whole generate pass on thecodex-cli/Kiro overlap.
0.2.10
Patch Changes
- Align
agentsmesh initdefaulttargetswith the shared target catalog (TARGET_IDS) so new configs include every supported tool without a duplicate list. Shorten the AgentsMesh sourcing note appended to generated root instructions.
0.2.9
Patch Changes
- Add Roo Code as a supported target (
.roo/rules, commands, skills, MCP, and.rooignore).
0.2.8
Patch Changes
- Add Antigravity as a supported target, emit Continue root rules as
.continue/rules/general.md(while still importing legacy_root.md), register built-in targets through target descriptors, and align Continue e2e contracts with the new rule filename.
0.2.6
Patch Changes
- d011602: Add a Starlight documentation site published to GitHub Pages; shorten the npm README and link to the hosted docs for full guides and CLI reference.
0.2.5
Patch Changes
- f7a4afd: Expand the project README, and fix the sample Claude Code PostToolUse hook to use
type: promptwith apromptfield instead of an invalid command-style hook after reads.
0.2.4
Patch Changes
- 98bf8cb: Preserve nested canonical import paths and placeholder metadata; keep nested command picks and Cline workflow exclusions when installing packs; import Cline MCP settings from legacy
.cline/mcp_settings.jsonwhencline_mcp_settings.jsonis absent; refresh default.gitignorepatterns for AgentsMesh cache and lock temp files.
0.2.3
Patch Changes
- 8ae253b: Improve Codex CLI rule generation by projecting additional rules to
.codex/instructions/and linking them fromAGENTS.mdwithout duplicating the root instructions file.
0.2.2
Patch Changes
- d42b374: Support installing standalone skill repos (bare GitHub/GitLab URLs), use SKILL.md frontmatter name for skill identity, filter repo boilerplate from installed skills, and fix pack skill reference paths in generated output.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
0.2.1
Changed
- npm publish now triggers after GitHub release is created, decoupling version tagging from package publishing
0.2.0
Minor Changes
- bda10c7: Initial public release of AgentsMesh v0.2.0.
One canonical.agentsmesh/source synced to Claude Code, Cursor, GitHub Copilot, Continue, Junie, Gemini CLI, Cline, Codex CLI, and Windsurf. Includesinit,generate,import,diff,lint,watch,check,merge,matrix, andinstallCLI commands with full support for rules, commands, agents, skills, MCP servers, hooks, ignore patterns, permissions, local/remote extends, link rebasing, and lock-file-based collaboration.
[0.1.0] - 2026-03-25
Added
CLI commands
init— Scaffoldagentsmesh.yaml,.agentsmesh/rules/_root.md, andagentsmesh.local.yaml; auto-detect existing AI tool configs in the projectgenerate— Sync canonical.agentsmesh/to target tool configs; supports--targets,--dry-run,--force,--refresh-cache,--no-cacheimport --from <target>— Import existing tool configs into canonical form; supports all 9 targetsdiff --targets— Show unified diff of what the nextgeneratewould changelint --targets— Validate canonical files and target-specific constraints with per-feature diagnosticswatch --targets— Watch.agentsmesh/and regenerate on change with 300 ms debounce; self-generated lock file writes do not retrigger the pipelinecheck— Verify generated files match the lock file; designed for CI drift detectionmerge— Resolve.agentsmesh/.lockconflicts after a git mergematrix --targets --verbose— Show the feature-target compatibility tableinstall— Install skills, rules, commands, or agents from a local path or remote GitHub/GitLab/git source; supports--as,--sync,--dry-run,--force,--path,--target,--name,--extends
Supported targets
Claude Code, Cursor, GitHub Copilot, Continue, Junie, Gemini CLI, Cline, Codex CLI, Windsurf
Canonical features
rules, commands, agents, skills, mcp, hooks, ignore, permissions
Config
agentsmesh.yaml— project config with targets, features, and extendsagentsmesh.local.yaml— local-only overrides for targets, features, and personal extends (gitignored).agentsmesh/— canonical source directory (source of truth).agentsmesh/.lock— generated-state lock file forcheckandmerge
Extends
- Local extends (
local:pathor relative path) — merge shared configs from a relative directory - Remote extends (
github:org/repo@tag,gitlab:group/repo@tag,git+ssh://...) — fetch and cache in~/.agentsmesh/cache/
Link rebasing
Internal .agentsmesh/ file references are rewritten to target-relative paths on generate and restored to canonical form on import, so supporting files and cross-skill links remain correct across all targets
Collaboration
- Lock file tracks checksums for all canonical features and extends
checkintegrates with CI to catch generated file driftmergerecovers from three-way lock file conflicts aftergit merge
v0.3.0
Changelog
Next version
0.3.0 - 2026-04-12
Added
- Add Kiro as a supported target with native project-level
AGENTS.md,.kiro/steering/*.md,.kiro/skills/*/SKILL.md,.kiro/hooks/*.kiro.hook,.kiro/settings/mcp.json, and.kiroignoreimport/generate support.
Changed
- Replace the appended AgentsMesh Generation Contract root paragraph with an installed-repo guide:
agentsmesh.yaml/agentsmesh.local.yaml, what lives under.agentsmesh,init/import/install/generate, and maintenance commands (diff,lint,check,watch,matrix,merge). Prior shipped contract wordings remain import-compatible legacy forms so root instruction upgrades do not duplicate sections. agentsmesh init --yesnow adds the same example canonical files as a normalinit, but only for categories left empty by import. The starter target set also stays conflict-free by default, leavingcodex-cliopt-in when projects want Codex output alongside otherAGENTS.mdtargets.
Fixed
- Fix website deployment SEO handling by deriving canonical URLs, sitemap/robots output, and optional
CNAMEgeneration from one deploy URL source of truth. Internal docs links now stay base-agnostic across GitHub Pages project paths and root custom domains. - When multiple targets generate
AGENTS.md, AgentsMesh now prefers the richer Codex output when it is a strict superset instead of failing the whole generate pass on thecodex-cli/Kiro overlap.
0.2.10
Patch Changes
- Align
agentsmesh initdefaulttargetswith the shared target catalog (TARGET_IDS) so new configs include every supported tool without a duplicate list. Shorten the AgentsMesh sourcing note appended to generated root instructions.
0.2.9
Patch Changes
- Add Roo Code as a supported target (
.roo/rules, commands, skills, MCP, and.rooignore).
0.2.8
Patch Changes
- Add Antigravity as a supported target, emit Continue root rules as
.continue/rules/general.md(while still importing legacy_root.md), register built-in targets through target descriptors, and align Continue e2e contracts with the new rule filename.
0.2.6
Patch Changes
- d011602: Add a Starlight documentation site published to GitHub Pages; shorten the npm README and link to the hosted docs for full guides and CLI reference.
0.2.5
Patch Changes
- f7a4afd: Expand the project README, and fix the sample Claude Code PostToolUse hook to use
type: promptwith apromptfield instead of an invalid command-style hook after reads.
0.2.4
Patch Changes
- 98bf8cb: Preserve nested canonical import paths and placeholder metadata; keep nested command picks and Cline workflow exclusions when installing packs; import Cline MCP settings from legacy
.cline/mcp_settings.jsonwhencline_mcp_settings.jsonis absent; refresh default.gitignorepatterns for AgentsMesh cache and lock temp files.
0.2.3
Patch Changes
- 8ae253b: Improve Codex CLI rule generation by projecting additional rules to
.codex/instructions/and linking them fromAGENTS.mdwithout duplicating the root instructions file.
0.2.2
Patch Changes
- d42b374: Support installing standalone skill repos (bare GitHub/GitLab URLs), use SKILL.md frontmatter name for skill identity, filter repo boilerplate from installed skills, and fix pack skill reference paths in generated output.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
0.2.1
Changed
- npm publish now triggers after GitHub release is created, decoupling version tagging from package publishing
0.2.0
Minor Changes
- bda10c7: Initial public release of AgentsMesh v0.2.0.
One canonical.agentsmesh/source synced to Claude Code, Cursor, GitHub Copilot, Continue, Junie, Gemini CLI, Cline, Codex CLI, and Windsurf. Includesinit,generate,import,diff,lint,watch,check,merge,matrix, andinstallCLI commands with full support for rules, commands, agents, skills, MCP servers, hooks, ignore patterns, permissions, local/remote extends, link rebasing, and lock-file-based collaboration.
[0.1.0] - 2026-03-25
Added
CLI commands
init— Scaffoldagentsmesh.yaml,.agentsmesh/rules/_root.md, andagentsmesh.local.yaml; auto-detect existing AI tool configs in the projectgenerate— Sync canonical.agentsmesh/to target tool configs; supports--targets,--dry-run,--force,--refresh-cache,--no-cacheimport --from <target>— Import existing tool configs into canonical form; supports all 9 targetsdiff --targets— Show unified diff of what the nextgeneratewould changelint --targets— Validate canonical files and target-specific constraints with per-feature diagnosticswatch --targets— Watch.agentsmesh/and regenerate on change with 300 ms debounce; self-generated lock file writes do not retrigger the pipelinecheck— Verify generated files match the lock file; designed for CI drift detectionmerge— Resolve.agentsmesh/.lockconflicts after a git mergematrix --targets --verbose— Show the feature-target compatibility tableinstall— Install skills, rules, commands, or agents from a local path or remote GitHub/GitLab/git source; supports--as,--sync,--dry-run,--force,--path,--target,--name,--extends
Supported targets
Claude Code, Cursor, GitHub Copilot, Continue, Junie, Gemini CLI, Cline, Codex CLI, Windsurf
Canonical features
rules, commands, agents, skills, mcp, hooks, ignore, permissions
Config
agentsmesh.yaml— project config with targets, features, and extendsagentsmesh.local.yaml— local-only overrides for targets, features, and personal extends (gitignored).agentsmesh/— canonical source directory (source of truth).agentsmesh/.lock— generated-state lock file forcheckandmerge
Extends
- Local extends (
local:pathor relative path) — merge shared configs from a relative directory - Remote extends (
github:org/repo@tag,gitlab:group/repo@tag,git+ssh://...) — fetch and cache in~/.agentsmesh/cache/
Link rebasing
Internal .agentsmesh/ file references are rewritten to target-relative paths on generate and restored to canonical form on import, so supporting files and cross-skill links remain correct across all targets
Collaboration
- Lock file tracks checksums for all canonical features and extends
checkintegrates with CI to catch generated file driftmergerecovers from three-way lock file conflicts aftergit merge
v0.2.10
Patch Changes
- Align
agentsmesh initdefaulttargetswith the shared target catalog (TARGET_IDS) so new configs include every supported tool without a duplicate list. Shorten the AgentsMesh sourcing note appended to generated root instructions.
v0.2.9
Patch Changes
- Add Roo Code as a supported target (
.roo/rules, commands, skills, MCP, and.rooignore).
v0.2.8
Patch Changes
- Add Antigravity as a supported target, emit Continue root rules as
.continue/rules/general.md(while still importing legacy_root.md), register built-in targets through target descriptors, and align Continue e2e contracts with the new rule filename.
v0.2.6
v0.2.5
v0.2.4
Patch Changes
- 98bf8cb: Preserve nested canonical import paths and placeholder metadata; keep nested command picks and Cline workflow exclusions when installing packs; import Cline MCP settings from legacy
.cline/mcp_settings.jsonwhencline_mcp_settings.jsonis absent; refresh default.gitignorepatterns for AgentsMesh cache and lock temp files.