Skip to content

Releases: sampleXbro/agentsmesh

v0.6.0

25 Apr 20:02
a06d100

Choose a tag to compare

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 configure commands_to_skills / agents_to_skills for plugin target IDs in agentsmesh.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 shorthand foo-ide: true for both scopes.
    • Global mode: plugin descriptors that define global or globalSupport layouts, globalCapabilities, and globalDetectionPaths are fully resolved by the engine — generate --global, import --global, lint --global, and matrix --global all work with plugin targets.
    • Scoped settings emission: emitScopedSettings hooks on plugin descriptors are now called during generation (previously only checked on builtins).
    • Hook post-processing: postProcessHookOutputs hooks on plugin descriptors are now called during the hook generation pass.
    • Per-feature lint hooks: lint.commands, lint.mcp, lint.permissions, lint.hooks, and lint.ignore on 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.
  • Plugin support in all CLI commandsdiff, check, matrix, and import --from <plugin-id> now bootstrap and resolve plugin targets. Previously only generate and lint supported plugins.
  • Richer target scaffoldagentsmesh target scaffold now generates descriptors with global layout, globalCapabilities, globalDetectionPaths, supportsConversion, per-feature lint hook stubs, and rewriteGeneratedPath for global path rewriting.
  • Comprehensive plugin test fixture (tests/fixtures/plugins/rich-plugin/) — covers 100% of TargetDescriptor fields 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 exportimport { generate, importFrom, loadCanonical, registerTargetDescriptor } from 'agentsmesh' now resolves to a proper .d.ts under strict TypeScript. The root exports."." is a conditional block with types, import, and default, pointing at a new public barrel (src/public/index.ts). Closes TS7016: Could not find a declaration file for module 'agentsmesh' that appeared for any downstream TS consumer.
  • Typed error taxonomy exported from the public APIAgentsMeshError base class plus 8 concrete subclasses (ConfigNotFoundError, ConfigValidationError, TargetNotFoundError, ImportError, GenerationError, RemoteFetchError, LockAcquisitionError, FileSystemError), each carrying a stable code field (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 on err instanceof ConfigNotFoundError or err.code === 'AM_CONFIG_INVALID' without parsing error message strings. Error throw sites in src/config/core/loader.ts and src/utils/filesystem/fs.ts now emit typed errors; stack-trace context and cause chains 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 from agentsmesh and agentsmesh/canonical. Programmatic consumers can finally type the result of loadCanonical() without reaching into internal modules.
  • Process-level lock for concurrent generateagentsmesh generate acquires an atomic mkdir-based lock at .agentsmesh/.generate.lock before 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, plus windows-latest × Node 22 and macos-latest × Node 22. Previously only ubuntu-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 smoke job:
    • publint — package.json metadata sanity (exports ordering, files, module type).
    • @arethetypeswrong/cli with the esm-only profile — verifies every public entrypoint resolves to types under node16 (from ESM) and bundler module resolution.
    • tests/consumer-smoke/ — packs the tarball, installs it into a throwaway strict-mode TS project, and runs tsc --noEmit against every public symbol (runtime functions, canonical types, target-descriptor types, and error classes). Catches TS7016 and 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 smoke job installs the packed tarball with npm install -g and verifies agentsmesh --version, agentsmesh --help, amsh --version, and agentsmesh init --yes all succeed in a clean temp project. Catches broken shebangs, missing files from the files array, 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 canonical add-agent-target skill as the authoritative workflow document.
  • Boot-time guard against ambiguous shared-artifact ownershipBUILTIN_TARGETS initialization now runs assertSharedArtifactOwnersUnique() (src/targets/catalog/shared-artifact-owner.ts) and throws if two descriptors claim the same or overlapping sharedArtifacts: { '<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 by tests/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 locktests/integration/generate-process-lock.integration.test.ts now proves two parallel node dist/cli.js generate invocations against the same project serialize via the existing process lock, both exit 0, produce deterministic output, and release .agentsmesh/.generate.lock after the run. Complements the existing unit tests that exercise acquireProcessLock directly.
  • End-to-end Copilot dual-mirror coveragetests/unit/targets/copilot/global-layout.test.ts adds two engine-level assertions that prove Copilot's mirrorGlobalPath emits 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 from agentsmesh and agentsmesh/engine:
    • loadConfig(projectRoot) and loadConfigFromDirectory(configDir) — load + validate agentsmesh.yaml (merging agentsmesh.local.yaml) and return { config: ValidatedConfig, configDir }. Throws ConfigNotFoundError / ConfigValidationError with stable code fields.
    • lint(opts) — runs target linters, returns { diagnostics, hasErrors }. Pure: no I/O, no logging.
    • diff(ctx) — runs generate internally, returns { results, diffs, summary }. Plus computeDiff(results) and formatDiffSummary(summary) helpers for callers that already have generate results.
    • check(opts) — pure lock-vs-current drift detection backed by the new shared src/core/check/lock-sync.ts module. Returns a structured LockSyncReport (inSync, hasLock, modified, added, removed, extendsModified, lockedViolations). The agentsmesh check CLI 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, loadConfig happy/missing/invalid-schema paths, loadCanonical, generate with exact-paths assertion, targetFilter narrowing, registerTargetDescriptor plugin wiring through generate, importFrom end-t...
Read more

v0.5.0

23 Apr 10:23
8bbf5fe

Choose a tag to compare

Minor Changes

  • ec5e3a6: Breaking (descriptor authors): Built-in targets now declare global mode under globalSupport (capabilities, detection paths, layout, optional scopeExtras) instead of separate global, globalCapabilities, and globalDetectionPaths fields. Command/workflow and Gemini settings generation are modeled with capability flavors on the canonical generators; Copilot/Cursor root mirrors use layout.outputFamilies for rewrite cache keys.

    CLI / docs: pnpm matrix:generate refreshes README and website support-matrix blocks from the catalog; pnpm matrix:verify fails on drift (also runs in CI). Init detection uses collectDetectionPaths from the catalog.

  • ec5e3a6: Add public library entry points (./engine, ./canonical, ./targets) for programmatic use, introduce the parametrized target contract matrix under tests/contract/, and document coverage exclusions in tasks/coverage-gaps.md.

v0.3.1

12 Apr 13:39
e1c83c7

Choose a tag to compare

Changelog

Next version

0.3.1 - 2026-04-12

Changed

  • Refresh direct and transitive dependencies to patched releases, including guarded pnpm overrides for vulnerable vite, picomatch, and brace-expansion ranges pulled in through the toolchain.

Fixed

  • Remove the brittle npm install -g npm@latest step 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 watch command 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 .kiroignore import/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 --yes now adds the same example canonical files as a normal init, but only for categories left empty by import. The starter target set also stays conflict-free by default, leaving codex-cli opt-in when projects want Codex output alongside other AGENTS.md targets.

Fixed

  • Fix website deployment SEO handling by deriving canonical URLs, sitemap/robots output, and optional CNAME generation 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 the codex-cli/Kiro overlap.

0.2.10

Patch Changes

  • Align agentsmesh init default targets with 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: prompt with a prompt field 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.json when cline_mcp_settings.json is absent; refresh default .gitignore patterns 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 from AGENTS.md without 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. Includes init, generate, import, diff, lint, watch, check, merge, matrix, and install CLI 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 — Scaffold agentsmesh.yaml, .agentsmesh/rules/_root.md, and agentsmesh.local.yaml; auto-detect existing AI tool configs in the project
  • generate — Sync canonical .agentsmesh/ to target tool configs; supports --targets, --dry-run, --force, --refresh-cache, --no-cache
  • import --from <target> — Import existing tool configs into canonical form; supports all 9 targets
  • diff --targets — Show unified diff of what the next generate would change
  • lint --targets — Validate canonical files and target-specific constraints with per-feature diagnostics
  • watch --targets — Watch .agentsmesh/ and regenerate on change with 300 ms debounce; self-generated lock file writes do not retrigger the pipeline
  • check — Verify generated files match the lock file; designed for CI drift detection
  • merge — Resolve .agentsmesh/.lock conflicts after a git merge
  • matrix --targets --verbose — Show the feature-target compatibility table
  • install — 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 extends
  • agentsmesh.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 for check and merge

Extends

  • Local extends (local:path or 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
  • check integrates with CI to catch generated file drift
  • merge recovers from three-way lock file conflicts after git merge

v0.3.0

12 Apr 11:57
b68c4dd

Choose a tag to compare

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 .kiroignore import/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 --yes now adds the same example canonical files as a normal init, but only for categories left empty by import. The starter target set also stays conflict-free by default, leaving codex-cli opt-in when projects want Codex output alongside other AGENTS.md targets.

Fixed

  • Fix website deployment SEO handling by deriving canonical URLs, sitemap/robots output, and optional CNAME generation 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 the codex-cli/Kiro overlap.

0.2.10

Patch Changes

  • Align agentsmesh init default targets with 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: prompt with a prompt field 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.json when cline_mcp_settings.json is absent; refresh default .gitignore patterns 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 from AGENTS.md without 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. Includes init, generate, import, diff, lint, watch, check, merge, matrix, and install CLI 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 — Scaffold agentsmesh.yaml, .agentsmesh/rules/_root.md, and agentsmesh.local.yaml; auto-detect existing AI tool configs in the project
  • generate — Sync canonical .agentsmesh/ to target tool configs; supports --targets, --dry-run, --force, --refresh-cache, --no-cache
  • import --from <target> — Import existing tool configs into canonical form; supports all 9 targets
  • diff --targets — Show unified diff of what the next generate would change
  • lint --targets — Validate canonical files and target-specific constraints with per-feature diagnostics
  • watch --targets — Watch .agentsmesh/ and regenerate on change with 300 ms debounce; self-generated lock file writes do not retrigger the pipeline
  • check — Verify generated files match the lock file; designed for CI drift detection
  • merge — Resolve .agentsmesh/.lock conflicts after a git merge
  • matrix --targets --verbose — Show the feature-target compatibility table
  • install — 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 extends
  • agentsmesh.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 for check and merge

Extends

  • Local extends (local:path or 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
  • check integrates with CI to catch generated file drift
  • merge recovers from three-way lock file conflicts after git merge

v0.2.10

31 Mar 10:17
28e1589

Choose a tag to compare

Patch Changes

  • Align agentsmesh init default targets with 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

29 Mar 14:52
b70c651

Choose a tag to compare

Patch Changes

  • Add Roo Code as a supported target (.roo/ rules, commands, skills, MCP, and .rooignore).

v0.2.8

29 Mar 10:47
f7abfd5

Choose a tag to compare

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

28 Mar 17:18
6359881

Choose a tag to compare

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.

v0.2.5

28 Mar 07:50
948c413

Choose a tag to compare

Patch Changes

  • f7a4afd: Expand the project README, add ROADMAP.md, and fix the sample Claude Code PostToolUse hook to use type: prompt with a prompt field instead of an invalid command-style hook after reads.

v0.2.4

27 Mar 22:36
2ba6d0f

Choose a tag to compare

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.json when cline_mcp_settings.json is absent; refresh default .gitignore patterns for AgentsMesh cache and lock temp files.