Skip to content

Commit bbb5662

Browse files
committed
release: v5.6.4 - glidemq plugin + fix all validators
- Add glidemq plugin (3 skills) to README, STATIC_SKILLS, site content - Fix generate-docs: sync meta.version from package.json, export static counts - Fix validate-repo-consistency: check pluginDirs.length not just dir exists - Fix validate-counts: handle empty plugins/ directory (extracted to standalone repos) - Fix gen-adapters test: handle empty plugins/ directory - Fix generate-docs tests: use static fallbacks matching function behavior - 19 plugins, 38 agents, 39 skills. All validators pass. 3583 tests pass.
1 parent 031d7e9 commit bbb5662

10 files changed

Lines changed: 29 additions & 18 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "agentsys",
33
"description": "18 specialized plugins for AI workflow automation - task orchestration, PR workflow, slop detection, code review, drift detection, enhancement analysis, documentation sync, repo mapping, git intelligence, perf investigations, topic research, agent config linting, cross-tool AI consultation, structured AI debate, workflow pattern learning, codebase onboarding, and contributor guidance",
4-
"version": "5.6.3",
4+
"version": "5.6.4",
55
"owner": {
66
"name": "Avi Fenesh",
77
"url": "https://github.com/avifenesh"

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "agentsys",
3-
"version": "5.6.3",
3+
"version": "5.6.4",
44
"description": "Professional-grade slash commands for Claude Code with cross-platform support",
55
"keywords": [
66
"workflow",

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ All notable changes to this project will be documented in this file.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10-
## [5.6.3] - 2026-03-20
10+
## [5.6.4] - 2026-03-20
1111

1212
### Added
1313

__tests__/gen-adapters.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ describe('adapter-transforms', () => {
4141
// and prefixes remain (the transform is a no-op for unknown prefixes).
4242
const fs = require('fs');
4343
const pluginsDir = path.join(REPO_ROOT, 'plugins');
44-
if (fs.existsSync(pluginsDir)) {
44+
const hasPlugins = fs.existsSync(pluginsDir) && fs.readdirSync(pluginsDir).some(f => fs.statSync(path.join(pluginsDir, f)).isDirectory());
45+
if (hasPlugins) {
4546
expect(result).toContain('`exploration-agent`');
4647
expect(result).toContain('planning-agent');
4748
expect(result).not.toContain('next-task:');

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "agentsys",
3-
"version": "5.6.3",
3+
"version": "5.6.4",
44
"description": "A modular runtime and orchestration system for AI agents - works with Claude Code, OpenCode, and Codex CLI",
55
"main": "lib/platform/detect-platform.js",
66
"type": "commonjs",

scripts/generate-docs.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,15 @@ function updateSiteContent(plugins, agents, skills) {
399399

400400
const content = JSON.parse(fs.readFileSync(contentPath, 'utf8'));
401401

402+
// Sync meta.version from package.json
403+
const pkgPath = path.join(ROOT_DIR, 'package.json');
404+
if (fs.existsSync(pkgPath)) {
405+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
406+
if (content.meta && pkg.version) {
407+
content.meta.version = pkg.version;
408+
}
409+
}
410+
402411
// Use static counts as fallback (cross-repo plugins not discoverable locally)
403412
const effectivePlugins = plugins.length > 0 ? plugins.length : STATIC_PLUGIN_COUNT;
404413
const effectiveAgents = agents.length > 0 ? agents.length + ROLE_BASED_AGENT_COUNT : STATIC_AGENT_COUNT;

scripts/validate-counts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ function formatCountMismatch(file, metric, expected, actual) {
241241
*/
242242
function runValidation() {
243243
// When plugins/ doesn't exist, counts are not meaningful — return ok
244-
if (!fs.existsSync(path.join(REPO_ROOT, 'plugins'))) {
244+
if (!fs.existsSync(path.join(REPO_ROOT, 'plugins')) || fs.readdirSync(path.join(REPO_ROOT, 'plugins')).filter(f => fs.statSync(path.join(REPO_ROOT, 'plugins', f)).isDirectory()).length === 0) {
245245
return {
246246
status: 'ok',
247247
message: 'plugins/ not present (extracted to standalone repos)',

scripts/validate-repo-consistency.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,16 @@ function validateVersions() {
122122
}
123123

124124
function validateMappings() {
125-
const pluginsExist = fs.existsSync(PLUGINS_DIR);
125+
const pluginDirs = listPluginDirs();
126+
const pluginsPopulated = pluginDirs.length > 0;
126127

127128
// Use discovery module instead of parsing hardcoded arrays from source
128129
const discoveredPlugins = normalizeList(discovery.discoverPlugins(ROOT_DIR));
129130
const commandMappings = discovery.getCommandMappings(ROOT_DIR);
130131
const skillMappings = discovery.getCodexSkillMappings(ROOT_DIR);
131132

132-
// Only require plugins when plugins/ directory exists
133-
if (pluginsExist) {
133+
// Only require plugins when plugins/ directory has actual plugin subdirectories
134+
if (pluginsPopulated) {
134135
if (discoveredPlugins.length === 0) {
135136
errors.push('discovery found no plugins');
136137
}
@@ -144,24 +145,24 @@ function validateMappings() {
144145
}
145146
}
146147

147-
const pluginDirs = normalizeList(listPluginDirs());
148+
const normalizedPluginDirs = normalizeList(pluginDirs);
148149
const marketplace = readJson(path.join(ROOT_DIR, '.claude-plugin', 'marketplace.json'), 'marketplace.json');
149150
const marketplacePlugins = normalizeList((marketplace?.plugins || []).map(p => p.name));
150151

151152
// Compare discovered plugins vs filesystem only when plugins/ exists
152-
if (pluginsExist) {
153-
compareLists('Discovered plugins vs plugins/', pluginDirs, discoveredPlugins);
153+
if (pluginsPopulated) {
154+
compareLists('Discovered plugins vs plugins/', normalizedPluginDirs, discoveredPlugins);
154155

155156
if (marketplacePlugins.length > 0) {
156-
compareLists('Marketplace plugins vs plugins/', pluginDirs, marketplacePlugins);
157+
compareLists('Marketplace plugins vs plugins/', normalizedPluginDirs, marketplacePlugins);
157158
}
158159
if (marketplacePlugins.length > 0) {
159160
compareLists('Marketplace plugins vs discovered plugins', marketplacePlugins, discoveredPlugins);
160161
}
161162
}
162163

163164
// Validate command mappings - source files exist (only when plugins/ exists)
164-
if (pluginsExist) {
165+
if (pluginsPopulated) {
165166
const seenTargets = new Set();
166167
for (const [target, plugin, source] of commandMappings) {
167168
if (seenTargets.has(target)) {
@@ -206,7 +207,7 @@ function validateMappings() {
206207
}
207208

208209
function validateAgentCounts() {
209-
if (!fs.existsSync(PLUGINS_DIR)) return;
210+
if (listPluginDirs().length === 0) return;
210211
const fileBasedCount = listPluginsWithAgents()
211212
.map(plugin => {
212213
const agentsDir = path.join(PLUGINS_DIR, plugin, 'agents');

site/content.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"url": "https://agent-sh.github.io/agentsys",
66
"repo": "https://github.com/agent-sh/agentsys",
77
"npm": "https://www.npmjs.com/package/agentsys",
8-
"version": "5.6.2",
8+
"version": "5.6.4",
99
"author": "Avi Fenesh",
1010
"author_url": "https://github.com/avifenesh"
1111
},

0 commit comments

Comments
 (0)