Migration Note: This project was renamed from
awesome-slashtoagentsysin v5.0.0. All npm packages, CLI commands, and GitHub references now use the new name. Previous versions are archived under the old name.
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.
- Hardcoded developer paths in web-ctl skills (#333) - replaced 76 occurrences of
/Users/avifen/.agentsys/plugins/web-ctl/scripts/web-ctl.jswith~/.agentsys/...across.kiro/skills/web-auth/SKILL.md(16 sites) and.kiro/skills/web-browse/SKILL.md(60 sites). The original absolute path only existed on the maintainer's machine, so every CLI example silently failed for any other user. The portable form matches the install path documented inmeta/skills/maintain-cross-platform/SKILL.mdand works for both shell copy-paste and agent execution (Bash tool'sbash -cperforms tilde expansion). preparelifecycle hook auto-installed git hooks on everynpm install(#334) - moved hook installation from npm'spreparescript to an explicitsetup-hooksscript so consumers no longer get hooks injected as a side effect ofnpm install. Documented opt-in flow inCONTRIBUTING.md. Also removed the no-op pre-commit placeholder (it just wrote a comment file - lib/ sync is handled by agent-core CI now), so only the actually-active pre-push hook (preflight +/enhancereminder + release-tag validation) is installed.npm versionlifecycle dropped downstream version stamps (#339) - replacedgit add -A(which would sweep unrelated working-tree changes into the version commit) with an explicit allowlist covering every filestamp-version.jswrites plus npm's own lockfile:package.json,package-lock.json,.claude-plugin/plugin.json,.claude-plugin/marketplace.json,site/content.json. Preserves the original intent (no working-tree sweep) while keeping all version manifests consistent afternpm version.
js-yamldependency range tightened from^4.1.1to~4.1.1(#335) - blocks unintended4.xminor bumps while still allowing4.1.xpatch updates so runtime security fixes flow in automatically. Lockfile root entry synced to match.
- tasks.json atomic optimistic locking (#331) - Concurrent
/next-taskand/shipruns could silently lose claims or leave stale registry entries due to unguarded read-modify-write ontasks.json. Fix uses_version+ per-write_writerIdoptimistic locking (mirrors existingflow.jsonpattern): write atomically via rename, re-read and verify both fields match before declaring success, retry up to 5× with jitter on mismatch. - tasks.json schema unification -
worktree-managerwrote{ version, tasks[] }whileworkflow-state.jsread{ active }, causing claim exclusion indiscover-tasksto always return an empty set. Unified schema is{ active, tasks[], _version, _writerId }with on-read normalization of both legacy formats — no migration needed. - Silent corruption risk -
readTasks()now throws on corrupted JSON instead of returning a safe default, preventingupdateTasksfrom silently overwriting potentially recoverable data. - Agent prompt raw file writes -
worktree-managerPhase 6 and Cleanup Reference replaced inlinefs.writeFileSyncwithworkflowState.claimTask()/workflowState.releaseTask()library calls that are atomic and retry-safe.
updateTasks(mutatorFn)- optimistic-lock loop fortasks.jsonmutations (mirrorsupdateFlow)claimTask(entry, projectPath)- atomic upsert intotasks[]registry for worktree-managerreleaseTask(taskId, projectPath)- atomic removal fromtasks[]registry for ship/abort; idempotent
- next-task v1.1.1 - SubagentStop hook now only fires during active /next-task workflows, not on every subagent stop (#325). Cross-platform guard script replaces unconditional prompt injection that wasted 136K+ tokens per unrelated agent.
- Bump next-task marketplace version to 1.1.1
- Codex CLI plugin manifest (
.codex-plugin/plugin.json) for native Codex discovery
- Flaky stale items test - use >= 99 threshold for date boundary tolerance
exportsfield inlib/package.jsonfor@agentsys/libmodule resolution- Inline pipeline steps in each command panel on website
- Dynamic How It Works tab system for all 20 commands on website
- Code-point safe
truncate()to prevent surrogate pair corruption across all truncation sites - agnix stats updated to current counts (385 rules, 102 auto-fix, 36 categories)
- Site: command tab wrapping, skills grouping, How It Works rendering
- Bumped repo-intel marketplace version to 0.2.0
- Synced agnix rule count 342 -> 385
- prepare-delivery plugin - pre-ship quality gates (deslop, simplify, agnix, enhance, review loop, validation, docs sync)
- gate-and-ship plugin - orchestrator that chains /prepare-delivery then /ship
- /prepare-delivery and /gate-and-ship commands in marketplace, README, and AGENTS.md
- 9 missing agent sections in docs/reference/AGENTS.md (prepare-delivery, consult, debate, web-ctl, ship, skillers, onboard, can-i-help)
- Cursor and Kiro platform entries in site/content.json
- Moved orchestrate-review, validate-delivery skills from next-task to prepare-delivery in STATIC_SKILLS
- Updated plugin count from 17 to 19 across marketplace.json, tests, and docs
- Comprehensive documentation sync: all command tables, agent counts, skill counts, platform lists updated across 22 files
- next-task marketplace entry: agent count 14 -> 8 (delivery agents moved to prepare-delivery), version 1.0.0 -> 1.1.0
- repo-intel consolidation - Merged
git-mapandrepo-mapplugins into a singlerepo-intelplugin backed by agent-analyzer. One artifact, one command (/repo-intel), 24 query types.repo-maprepo deleted,git-maprenamed torepo-intel. - ast-grep removed -
lib/repo-map/migrated from ast-grep to agent-analyzer binary. Removed runner.js (1,364 lines), queries/ (355 lines), usage-analyzer.js (407 lines), concurrency.js. Net -2,717 lines. - Plugin count: 19 -> 18 (two merged into one)
- Benchmarks section in README and website - real data showing Sonnet + agentsys outperforms raw Opus at 40% lower cost, with 73-83% savings when switching models within agentsys
- map-validator agent ported from repo-map to repo-intel
onboard,can-i-help,stale-docsquery types added to/repo-intelcommand
- agnix CI - Fixed release workflow (draft-then-publish) and pinned to v0.16.5 with working binaries
- 7 broken test suites from ast-grep migration - deleted 5 obsolete test files, rewrote 2
- All PR review comments addressed across 6 repos
- glide-mq plugin - New skill-only plugin with 3 skills for message queue development and migration:
glide-mq- Greenfield queue development with glide-mq (ordering, rate limiting, flows, broadcast)glide-mq-migrate-bullmq- Migrate from BullMQ to glide-mqglide-mq-migrate-bee- Migrate from Bee-Queue to glide-mq
- Skills updated for glide-mq v0.12.0: runtime per-group rate limiting (
job.rateLimitGroup()), ordering path unification,GroupRateLimitError - Plugin count: 18 -> 19, skill count: 36 -> 39
- Project base branch (
--base=BRANCH) -/next-tasknow supports configuring a project-level base branch for batch workflows. All downstream operations (worktrees, diffs, PRs) use the configured branch instead of main. - Free-text preference caching - When users select "Other" for any policy decision and type a custom response, it gets cached and offered as an option next time. Auto-removed after 3 skips.
- Gate 0 hook - SubagentStop hook blocks Phase 2 unless policy decisions are persisted to preference cache.
- Multi-tool transcript support -
/skillers compactnow reads from Claude Code, Codex CLI, and OpenCode (was Claude Code only).
- ship target branch validation -
/shipnow readsbaseBranchfrom flow state and validates non-default targets with user confirmation. - Quality sweep - Removed 95 lines of prose slop and duplication across ship and skillers.
- Pre-push hooks - Fixed for repos without
npm testscript (falls back to JS syntax check). - Cached source null check -
getPolicyQuestionsno longer crashes when preference file has freeText but no source.
/releasecommand - Discovery-first release workflow that detects how a repo releases before executing. Supports 12+ ecosystems (npm, cargo, python, go, maven, gradle, ruby, nuget, dart, hex, packagist, swift) and 7 release tool configurations (semantic-release, release-it, goreleaser, changesets, cargo-release, lerna, standard-version)./skillerscommand - Transcript-based workflow pattern learning. Analyzes Claude Code conversation history, clusters recurring patterns into weighted themes, and suggests skills/hooks/agents to automate repetitive work.- release-agent (sonnet) - Discovers release method via tool configs, CI workflows, scripts, and manifests before performing the release.
- skillers-compactor (sonnet) - Extracts observations from conversation transcripts and clusters them into knowledge themes.
- skillers-recommender (opus) - Analyzes accumulated knowledge and classifies patterns as hook/skill/agent recommendations.
- Agnix CI validation - All plugins now run agnix lint in CI pipelines.
- agent-knowledge submodule - Research guides available as a git submodule.
- Website additions - How It Works content for consult, debate, web-ctl tabs.
- Accurate ecosystem counts - Stats now show 15 plugins, 35 agents, 32 skills, 3,751 tests, 14 commands. Previously showed inflated/stale counts.
- Pinned action SHAs - Updated to latest stable versions for security.
- CodeQL regex - Fixed inefficient regular expression flagged by code scanning.
- Go test fixture - Added go.mod so CodeQL can analyze Go fixtures.
- Website CSS - Reduced commands section bottom padding, removed inline how-it-works paragraphs.
- Website numbers updated - Stats now show 14 plugins, 43 agents, 30 skills, 3,750 tests, 13 commands. Previously showed stale counts from earlier versions.
- Kiro install TDZ bug - Fixed
steeringMappingsForCleanupused before initialization in v5.3.6 published code. Variable ordering corrected.
- Kiro commands install to ~/.kiro/prompts/ - Commands now install as prompts (invoked with
@namein kiro-cli) instead of steering files. Legacy~/.kiro/steering/auto-cleaned on install. - Cursor installs globally to ~/.cursor/ - Previously project-scoped. Now global like all other platforms.
- Kiro installs globally to ~/.kiro/ - Consistent with all other platforms.
- Agent resources updated - Reference
file://.kiro/prompts/**/*.md.
- Kiro installs globally to ~/.kiro/ - Previously installed to
cwd/.kiro/(project-scoped) which only worked in the agentsys directory. Now installs to~/.kiro/like other platforms (OpenCode →~/.config/opencode/, Codex →~/.codex/). Detection checks both global and project paths.
- Restored file:// prefix in Kiro agent resources - kiro-cli requires
file://orskill://scheme prefix on resources. The 5.3.2 removal caused all 34 agents to fail validation.
- Invalid file:// URI in Kiro agent resources - Attempted to remove
file://prefix (reverted in 5.3.3). - Kiro detection too strict - Now detects
.kiro/existence alone, catching fresh workspaces. - Silent tool stripping -
task,web,fetch,notebook,lsptools added to Kiro agent mapping. - Kiro session continuity -
supportsContinueset totrue(Kiro ACP reportsloadSession: true).
- Code block Task() transform for Kiro - Phase 9 reviewer Task() calls inside fenced JavaScript code blocks were not being transformed. Fixed with multiline-anchored fence regex that correctly handles backtick template literals inside code blocks.
-
Kiro platform support (#276, #278) - agentsys now installs to Kiro as a 5th platform alongside Claude Code, OpenCode, Codex CLI, and Cursor. Use
agentsys --tool kirooragentsys install <plugin> --tool kiroto install. Commands become steering files in.kiro/steering/(withinclusion: manualfrontmatter), skills are copied to.kiro/skills/(standard SKILL.md format), and agents are converted to JSON in.kiro/agents/. All content is project-scoped under.kiro/. Platform detection uses.kiro/directory presence. -
Kiro subagent transforms (#279, #280) - Task() calls transform to
Delegate to the \agent` subagent` with prompt context. AskUserQuestion transforms to markdown numbered-list prompts. Plugin namespace prefixes are stripped. -
Kiro parallel agent adaptation - Workflows spawning 4+ parallel reviewer agents (next-task Phase 9, audit-project Phase 2) are automatically adapted for Kiro's experimental 4-agent limit.
installForKiro()generates two combined reviewer agents (reviewer-quality-security,reviewer-perf-test).transformCommandForKiro()detects consecutive reviewer delegations and rewrites as try-4-then-fallback-to-2 pattern. -
Subagent comparison documentation - CROSS_PLATFORM.md now has a platform comparison table for subagent capabilities (spawning, parallelism, teams, ACP) across all 5 platforms.
transformAgentForKiro()refactored - Now reusesdiscovery.parseFrontmatter()instead of custom parsing. Supports YAML array syntax for tools field.
- Copy-paste bug in
installForCursor()- Skill transform was callingtransformSkillForKiroinstead oftransformSkillForCursor.
- Installer marketplace source parsing — Added compatibility for both legacy string
sourcevalues and structured source objects ({ source: "url", url: "..." }) so installs no longer crash withplugin.source.startsWith is not a function. - Plugin fetch resilience and failure behavior — Normalized
.gitrepository URLs, added GitHub ref fallback order (vX.Y.Z,X.Y.Z,main,master), and fail-fast behavior when any plugin fetch fails. - Cross-platform install ordering — Fixed install sequence so local install directory reset no longer wipes the fetched plugin cache before OpenCode/Codex installation.
-
Cursor platform support (#261) — agentsys now installs to Cursor as a 4th platform alongside Claude Code, OpenCode, and Codex CLI. Use
agentsys --tool cursororagentsys install <plugin> --tool cursorto install. Skills are copied to.cursor/skills/(same SKILL.md format - no transform needed), commands to.cursor/commands/(light transform), and rules to.cursor/rules/*.mdc(MDC frontmatter). All content is project-scoped. Cursor v2.4+ natively supports the Agent Skills standard. -
/web-ctlplugin — New plugin for browser automation and web testing. Headless browser control via Playwright with persistent encrypted sessions, human-in-the-loop auth handoff (including CAPTCHA detection and checkpoint mode), anti-bot measures (webdriver spoofing, random delays), WSL detection with Windows Chrome fallback, and prompt injection defense via[PAGE_CONTENT: ...]delimiters. Includesweb-sessionagent,web-authandweb-browseskills, and the/web-ctlcommand. Available at agent-sh/web-ctl. -
Plugin extraction to standalone repos (#250) — All 13 plugins extracted from
plugins/into standalone repos under theagent-shorg (agent-sh/next-task,agent-sh/ship,agent-sh/deslop,agent-sh/audit-project,agent-sh/enhance,agent-sh/perf,agent-sh/drift-detect,agent-sh/sync-docs,agent-sh/repo-map,agent-sh/learn,agent-sh/consult,agent-sh/debate,agent-sh/agnix). Theplugins/directory has been removed from this repo. agentsys is now a marketplace + installer. -
External plugin fetching in installer —
bin/cli.jsnow fetches plugins from their standalone GitHub repos at install time rather than bundling them. The installer resolves the correct version for each platform using the marketplace manifest. -
Graduation script (
scripts/graduate-plugin.js) — Automates extraction of a plugin from the monorepo to a new standalone repo: creates repo, copies files, sets up agent-core sync, updates marketplace manifest. -
Marketplace
requiresfield —.claude-plugin/marketplace.jsonnow supports arequiresfield per plugin entry to declare the minimum agentsys installer version required. The installer validates this at install time and warns on incompatibility. -
/next-taskGitHub Projects source — Addedgh-projectsas a supported task source. When selected, the workflow prompts for a project number and owner, then fetches issues from a GitHub Projects v2 board viagh project item-list. Includes PR-linked issue exclusion (same as GitHub Issues), input validation for project number and owner, and caching of project preferences. Fixes #247.
-
Installer crash with new marketplace schema - Fixed
plugin.source.startsWith is not a functionerror when installing plugins. The marketplace.jsonsourcefield changed from a string to an object in #266 but the installer was not updated to handle the new format. AddedresolveSourceUrl()helper that handles both legacy string and new{ source: "url", url: "..." }formats. Also fixed.gitsuffix in source URLs causing 404 errors when fetching tarballs from the GitHub API. Added fallback tomainbranch when version tags don't exist yet. Fixed Windows tar extraction failure by converting backslash paths to forward slashes for MSYS2 compatibility. -
CLAUDE.md merge conflict markers - Resolved broken merge conflict markers (HEAD/ancestor markers without closer) that were committed to main.
-
Windows jscpd output bug (#270) - Fixed
runDuplicateDetectioncreating a mangled filename on Windows when--output NULwas passed to jscpd viaexecFileSync(no shell). Replaced platform-specific null device with a temp directory viaos.tmpdir()that is cleaned up in afinallyblock. Added 5 regression tests for temp directory lifecycle. -
task-discoverer: Exclude issues that already have an open PR from discovery results (GitHub source only). Detection uses branch name suffix, PR body closing keywords (
closes/fixes/resolves #N), and PR title(#N)convention. Fixes #236. -
/debate240s timeout enforcement — All tool invocations in the debate workflow now enforce a hard 240-second timeout. Round 1 proposer timeouts abort the debate; round 1 challenger timeouts proceed with an uncontested position; round 2+ timeouts synthesize from completed rounds. Added "all rounds timeout" error path ([ERROR] Debate failed: all tool invocations timed out.). Timeout handling is consistent across the Claude Code command, OpenCode adapter, Codex adapter, and thedebate-orchestratoragent. Restored missing "Round 2+: Challenger Follow-up" template in the OpenCode adapter SKILL.md. Fixes issue #233. -
/next-taskreview loop exit conditions — The Phase 9 review loop now continues iterating until all issues are resolved or a stall is detected (MAX_STALLS reduced from 2 to 1: two consecutive identical-hash iterations = stall). Theorchestrate-reviewskill now usescompletePhase()instead ofupdateFlow()to properly advance workflow state. Addedpre-review-gatesanddocs-updateto thePHASESarray andRESULT_FIELD_MAPinworkflow-state.js, ensuring these phases can be tracked and resumed correctly. Fixes issue #235. -
/debatecommand inline orchestration — The/debatecommand now manages the full debate workflow directly (parse → resolve → execute → verdict), following the/consultpattern. Thedebate-orchestratoragent is now the programmatic entry point for other agents/workflows that need to spawn a debate viaTask(). Fixes issue #231. -
/debateExternal Tool Quick Reference — Added a "External Tool Quick Reference" section to all copies of the debate skill (plugins/debate/skills/debate/SKILL.md, OpenCode and Codex adapters) with safe command patterns, effort-to-model mapping tables, and output parsing expressions. The section includes a canonical-source pointer toplugins/consult/skills/consult/SKILL.mdso the debate orchestrator doesn't duplicate provider logic. Added pointer notes indebate-orchestratoragents. Fixes issue #232. -
/consultand/debatemodel defaults update — Gemini high/max effort now usesgemini-3.1-pro-preview; Gemini low/medium usesgemini-3-flash-preview. Codex usesgpt-5.3-codexfor all effort tiers. Updated across all platforms: Claude Code plugin, OpenCode adapter, and Codex adapter for both consult and debate skills and commands. Fixes issue #234. -
/consultmodel name updates — Updated stale model names in the consult skill: Codex models are nowo4-mini(low/medium) ando3(high/max); Gemini models includegemini-3-flash-preview,gemini-3-pro-preview, andgemini-3.1-pro-preview. Synced to OpenCode adapter consult skill. Fixes issue #232. -
/next-taskPhase 12 ship invocation — Phase 12 now invokesship:shipviaawait Skill({ name: "ship:ship", args: ... })instead ofTask({ subagent_type: "ship:ship", ... }).ship:shipis a skill, not an agent; the previousTask()call silently failed, leaving the workflow stuck after delivery validation with no PR created. The Codex adapter is updated in parity and regression tests are added. Fixes issue #230.
/debateplugin — New plugin for structured multi-round AI dialectic. Pick two tools (e.g.codex vs gemini), set 1–5 rounds, and get a proposer/challenger debate with a synthesized verdict. Supports natural language input, effort levels (--effort=low|high|max), and context injection (--context=diffor--context=file=PATH). Available on Claude Code, OpenCode, and Codex CLI./consultmulti-instance support — Run N parallel consultations with the same tool using--count=N(or natural language: "ask 3 gemini about this"). Responses are numbered and a brief synthesis highlights agreements and differences./consultnatural language parsing — Free-form queries are now parsed automatically without requiring explicit flags. "with codex about my auth approach", "ask gemini thoroughly about this design", or "3 claude opinions on error handling" all work out of the box.
- Agent model optimization —
exploration-agentandlearn-agentswitched from opus to sonnet, reducing cost and latency for exploration and research passes with no quality regression.
- Debate
--context=filepath validation — Added path containment checks to prevent directory traversal when passing file paths as context. - Debate prompt hardening — Context passthrough, canonical output redaction, and relaxed disagreement rules applied consistently across all debate rounds.
- Consult model/flag issues — Hardened model flag handling and non-interactive invocation across all four supported tools (Claude, Gemini, Codex, OpenCode).
- Consult: Codex command corrected to
codex exec- Codex CLI usescodex execfor non-interactive mode (not-qflag). Non-interactive resume usescodex exec resume SESSION_ID "prompt" --json. All four tools (Claude, Gemini, Codex, OpenCode) now have correct native session resume support.
- Consult: Codex and OpenCode marked as continuable - Both tools support session resume but were incorrectly marked as non-continuable. OpenCode supports
--session SESSION_IDand--continueflags in non-interactive mode.
- OpenCode legacy cleanup - Installer now removes legacy agent files (
review.md,ship.md,workflow.md) left over from pre-rename installs - OpenCode install validator - Now checks only the agents/commands/skills produced by discovery, preventing false positives from legacy files
- Windows compatibility -
bump-version.jsusesnpm.cmdon win32 (fixesexecFileSyncPATHEXT resolution) - Windows test fixes - Scaffold test tolerates
EBUSYon temp directory cleanup; script-failure-hooks test skips bash-dependent tests on Windows - Jest module resolution - Added
moduleNameMapperfor@agentsys/libto resolve to locallib/directory
- Workflow ship references - Updated all
/shipreferences toship:ship(plugin-namespaced command) across next-task command, agents, hooks, and Codex/OpenCode adapters
- Skills $ARGUMENTS parsing - Added
$ARGUMENTSparsing to 13 skills that declaredargument-hintbut never consumed the arguments (CC-SK-012) - agnix config - Migrated
.agnix.tomldisabled_rulesfrom deprecated slug format to proper rule IDs (XP-003, AS-014) - Memory file language - Strengthened imperative language in AGENTS.md/CLAUDE.md (PE-003, CC-MEM-006)
- Added missing frontmatter descriptions to 3 command reference files (
audit-project-agents,ship-ci-review-loop,ship-deployment) that caused Codex adapter skills to install with empty descriptions - Added build-time validation in
gen-adapters.jsto error on empty Codex skill descriptions - Added install-time guard in
bin/cli.jsto skip skills with missing descriptions
- Removed unused
@agentsys/libpublish job from release workflow - Cleaned up all references to lib as a standalone npm package (docs, scripts, tests, configs)
- Static adapter generation system (
scripts/gen-adapters.js) - generates OpenCode and Codex adapters from plugin source at build time - Shared
lib/adapter-transforms.jsmodule - extracted transform logic frombin/cli.jsandscripts/dev-install.js gen-adaptersandgen-adapters --checkdev-cli commands with npm script aliases- CI validation step for adapter freshness
- Preflight integration for adapter freshness checks
/consultcommand - Cross-tool AI consultation: query Gemini CLI, Codex CLI, Claude Code, OpenCode, or Copilot CLI from your current session (#198)- Choose tool, model, and thinking effort (
--effort=low|medium|high|max) - Context packaging (
--context=diff|file|none) and session continuity (--continue) - Three invocation paths:
/consultcommand,Skill('consult'),Task({ subagent_type: 'consult:consult-agent' }) - Provider detection, structured JSON output, and per-provider effort mapping
- Choose tool, model, and thinking effort (
- Plugin scaffolding system (
scripts/scaffold.js) - Scaffold new plugins, agents, skills, and commands from templates (#184)npx agentsys-dev new plugin <name>- full plugin directory with plugin.json, default command, and shared libnpx agentsys-dev new agent <name> --plugin=<plugin>- agent .md with YAML frontmatter templatenpx agentsys-dev new skill <name> --plugin=<plugin>- skill directory with SKILL.mdnpx agentsys-dev new command <name> --plugin=<plugin>- command .md with frontmatter- Name validation, collision detection, path traversal protection, YAML injection prevention
- npm script aliases:
new:plugin,new:agent,new:skill,new:command - 56 scaffold tests + 11 dev-cli integration tests
- Shared agent template system - Build-time template expansion (
expand-templatescommand) with 3 shared snippets, replacing duplicated sections across 6 enhance agents with TEMPLATE markers and CI freshness validation (#187) - Auto-generate documentation -
gen-docscommand reads plugin metadata, agent frontmatter, and skill frontmatter to auto-generate documentation sections between GEN:START/GEN:END markersnpx agentsys-dev gen-docswrites generated sections to README.md, CLAUDE.md, AGENTS.md, docs/reference/AGENTS.md, site/content.jsonnpx agentsys-dev gen-docs --checkvalidates docs are fresh (for CI, exits 1 if stale)- Enhanced
lib/discoverywith YAML array parsing and frontmatter indiscoverAgents()/discoverSkills() - Integrated into preflight as
gap:docs-freshnesscheck for new-agent, new-skill, new-command, and release checklists - 34 tests for the generation system, 7 new discovery tests
- Preflight command - Unified change-aware checklist enforcement (
npm run preflight,preflight --all,preflight --release,preflight --json)- Detects changed files and runs only relevant checklist validators
- Includes 7 existing validators + 7 new gap checks (CHANGELOG, labels, codex triggers, lib exports, lib sync, test existence, staged files)
- Pre-push hook now delegates to preflight for validation
- Unified Dev CLI (
agentsys-dev) - Single discoverable entry point for all dev scriptsagentsys-dev validateruns all 7 validators sequentiallyagentsys-dev validate <sub>runs individual validators (plugins, cross-platform, consistency, etc.)agentsys-dev statusshows project health (version, plugin/agent/skill counts, git branch)agentsys-dev bump <version>,sync-lib,setup-hooks,detect,verify,testagentsys-dev --helplists all commands with descriptions- All existing
npm runcommands still work (now delegate through dev-cli) - All direct
node scripts/foo.jsinvocations still work (require.main guards) - No external CLI framework dependencies - hand-rolled parsing matching bin/cli.js style
- Script failure enforcement hooks - Three-layer system preventing agents from silently falling back to manual work when project scripts fail (#189)
- Claude Code PostToolUse hook for context injection on project script execution
- OpenCode plugin failure detection enhancement in tool.execute.after
- New critical rule #13 in CLAUDE.md/AGENTS.md requiring failure reporting before manual fallback
- Adapter transform refactoring - Refactored
bin/cli.jsandscripts/dev-install.jsto use shared adapter transforms (eliminates duplication) - CHANGELOG Archival - Moved v1.x-v3.x entries to
changelogs/directory, reducing CHANGELOG.md from ~92KB to ~10KB (#186) - Version Management - Single version source of truth via
package.jsonwith automated stamping (#183)- Created
scripts/stamp-version.jsto stamp all downstream files from package.json - Refactored
scripts/bump-version.jsto delegate tonpm version - Added npm
versionlifecycle hook for automatic stamping - Fixed
validate-counts.jsplugin.json path resolution bug - Added
package-lock.jsonandsite/content.jsonto version validation - Fixed stale versions in
site/content.jsonandpackage-lock.json - Single command updates all 15+ version locations:
npx agentsys-dev bump X.Y.Z
- Created
- Plugin Discovery - Convention-based filesystem scanning replaces 14+ hardcoded registration lists (#182)
- New
lib/discovery/module auto-discovers plugins, commands, agents, and skills bin/cli.js,scripts/dev-install.js,scripts/bump-version.jsuse discovery calls- Adding a new plugin no longer requires updating registration points
- Fixed stale lists in
dev-install.jsandbump-version.js(missing learn, agnix) - Added
codex-descriptionfrontmatter for Codex trigger phrases scripts/sync-lib.shreads from generatedplugins.txtmanifest- Deprecated
adapters/opencode/install.shandadapters/codex/install.sh
- New
- README /agnix Documentation - Expanded agnix section to be on par with other major commands
- Added "The problem it solves" section explaining why agent config linting matters
- Added "What it validates" table with 5 categories (Structure, Security, Consistency, Best Practices, Cross-Platform)
- Added details about 100 validation rules and their sources
- Added CI/CD integration example with GitHub Code Scanning SARIF workflow
- Added installation instructions (Cargo, Homebrew)
- Added "Why use agnix" value proposition section
- Prominent link to agnix CLI project
- Updated Commands table with more descriptive entry
- Updated skill count to 26 across all references
- consult plugin security hardening (#208) - Shell injection prevention, path traversal protection, and API key redaction
- Question text passed via temp files instead of shell interpolation (prevents
$()and backtick expansion) - File context validation blocks UNC paths, resolves canonical paths, prevents symlink escapes
- Output sanitization redacts 12 credential patterns (API keys, tokens, env vars, auth headers)
- Fixed 3 pre-existing test regressions in consult-command.test.js
- Question text passed via temp files instead of shell interpolation (prevents
- New /agnix Plugin - Lint agent configurations before they break your workflow
- Validates Skills, Hooks, MCP, Memory, Plugins across Claude Code, Cursor, GitHub Copilot, and Codex CLI
- 100 validation rules from official specs, research papers, real-world testing
- Auto-fix support with
--fixflag - SARIF output for GitHub Code Scanning integration
- Target-specific validation (
--target claude-code|cursor|codex) - Requires agnix CLI (
cargo install agnix-cli)
- Plugin Count - Now 11 plugins, 40 agents, 26 skills
- CLAUDE.md Rule #11 - Added rule about using
[]not<>for argument hints
- Prompt Injection - Sanitize user arguments in agnix command (validate target, strip newlines from path)
- Argument Parsing - Support both
--target=valueand--target valueforms - enhance-hooks/SKILL.md - Fixed path example escaping
- New /learn Plugin - Research any topic online and create comprehensive learning guides
- Gathers 10-40 online sources based on depth level (brief/medium/deep)
- Uses progressive query architecture (funnel approach: broad → specific → deep)
- Implements source quality scoring (authority, recency, depth, examples, uniqueness)
- Just-in-time retrieval to avoid context rot
- Creates topic-specific guides in
agent-knowledge/directory - Maintains CLAUDE.md/AGENTS.md as master RAG indexes
- Self-evaluation step for output quality assessment
- Integrates with enhance:enhance-docs and enhance:enhance-prompts
- Opus model for high-quality research synthesis
- Agent Frontmatter Format - Converted all 29 agents to YAML array format for tools field (Claude Code spec compliance)
- Argument Hints - Aligned all argument-hint fields to official
[placeholder]format - Plugin Count - Now 10 plugins total (added learn)
- Semver Sorting - Fixed version comparison so "1.10.0" correctly > "1.9.9"
- CodeQL Security - Escape backslashes in glob pattern matching
- Path Traversal - Use
path.relative()instead ofstartsWith()for Windows compatibility
- New /learn Plugin - Research any topic online and create comprehensive learning guides
- Gathers 10-40 online sources based on depth level (brief/medium/deep)
- Uses progressive query architecture (funnel approach: broad → specific → deep)
- Implements source quality scoring (authority, recency, depth, examples, uniqueness)
- Just-in-time retrieval to avoid context rot
- Creates topic-specific guides in
agent-knowledge/directory - Maintains CLAUDE.md/AGENTS.md as master RAG indexes
- Self-evaluation step for output quality assessment
- Integrates with enhance:enhance-docs and enhance:enhance-prompts
- Opus model for high-quality research synthesis
- Agent Frontmatter Format - Converted all 29 agents to YAML array format for tools field (Claude Code spec compliance)
- Argument Hints - Aligned all argument-hint fields to official
[placeholder]format - Plugin Count - Now 10 plugins total (added learn)
- Semver Sorting - Fixed version comparison so "1.10.0" correctly > "1.9.9"
- CodeQL Security - Escape backslashes in glob pattern matching
- Path Traversal - Use
path.relative()instead ofstartsWith()for Windows compatibility
- v3.x Changelog (v3.0.0 - v3.9.0)
- v2.x Changelog (v2.0.0 - v2.10.1)
- v1.x Changelog (v1.0.0 - v1.1.0)