-
Notifications
You must be signed in to change notification settings - Fork 5
feat(ci): cross-platform CI with Node 20/22/24 matrix #244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
yonatangross
wants to merge
109
commits into
main
Choose a base branch
from
test/dispatcher-registry-wiring-tests
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+247,502
−108,315
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…gration, e2e) Add registeredHookNames() export to all 6 unified dispatchers (1 line each) and registeredHookMatchers() to the posttool dispatcher for matcher validation. New test files: - dispatcher-registry.test.ts: structural snapshot of all 33 hook registrations - dispatcher-functional.test.ts: behavioral tests with mocked hooks (routing, error isolation, logging) - dispatcher-integration.test.ts: real hooks + temp filesystem, mocked child_process - dispatcher-e2e.test.ts: spawned run-hook.mjs process, stdin/stdout JSON contract 77 new tests, 902 total, 0 failures. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add dedicated test suites for Tiers 1-3 of the hook improvement plan: - security-critical-hooks.test.ts: 201 tests across 6 security hooks - data-loss-risk-hooks.test.ts: 90 tests across 5 data-loss hooks - quality-gate-hooks.test.ts: 78 tests across 4 quality gate hooks Fix documentation count discrepancies in CLAUDE.md (150→152 hooks, 31→6 async) and remove dead link in README.md. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Phase 2 of hooks improvement plan: - Add HookMeta and HookOverrides types to types.ts for governance - Add toggle system to run-hook.mjs — reads .claude/hook-overrides.json to disable hooks per-project without code changes - Add validate-registry.mjs script (npm run validate) that detects ghost hooks (in hooks.json but missing from entry files) and orphans - Fix 5 ghost hooks: consolidate 4 git sub-hooks into git-validator, wire setup/unified-dispatcher into entry file - Add 33 tests for the toggle system - Update split-bundles test count (151 → 152) Co-Authored-By: Claude Opus 4.5 <[email protected]>
…ake tests, add real coverage Fix 3 bugs: get-memories.py count parsing for dict API responses, mem0-pre-compaction-sync.ts child process error logging (was stdio:ignore), mem0-webhook-handler.ts stub switch cases replaced with audit logging. Remove ~155 grep-based fake tests that only checked if keywords exist in source files. Add 6 new test files with real execution tests: - API integration (19 tests, real mem0 API CRUD/graph/batch/webhook calls) - Hook execution (23 tests, all 15 mem0 hooks via node runner) - E2E workflows (15 tests, full session lifecycle chains) - Error scenarios (19 tests, malformed input, missing env, corrupt files) - Cross-hook integration (7 tests, multi-hook session sequences) - Performance benchmarks (10 tests, latency thresholds and throughput) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Phase 3 of hooks improvement plan (8.5→9.0): - Add input-validator.ts with 3-level validation (shape, tool_input, event-specific) - Add inline validateInput() in run-hook.mjs for boundary enforcement - Add 75 input validation tests with cross-module parity checks - Total: 30 test files, 1377 tests passing Co-Authored-By: Claude Opus 4.5 <[email protected]>
… src/ Move skills/heygen-avatars/ from root to src/skills/ (now 182 skills). Add missing user-invocable frontmatter field to heygen-avatars SKILL.md. Update expected internal skill count in test-skill-md.sh (158→159). Update all stale component counts (179/181→182 skills, 34→35 agents) across README.md, CLAUDE.md, CONTRIBUTING.md, marketplace.json, manifests/ork.json, plugin.json, hooks/README.md, IMPROVEMENT-PLAN.md, and visualization.md. Fix hooks/README.md per-category counts to match actual source directories. Clarify async hooks section (6 entries dispatching 20 hooks). Align IMPROVEMENT-PLAN.md target score and annotate deferred items. Co-Authored-By: Claude Opus 4.5 <[email protected]>
1. Slim JS validator to shape-only gate (Level 1). Full validation (Levels 2-3) now handled exclusively by TS input-validator module, eliminating duplication and drift risk between the two implementations. 2. Remove dead variable entryFileNonDispatcherInternal in validate-registry.mjs. 3. Replace ineffective literal wget/curl patterns with regex-based pipe-to-shell detection (PIPE_TO_SHELL_RE). Now blocks any command piping to a shell interpreter, closing the documented security gap where download-and-execute attacks were not caught. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Bump load-context and mem0-sync version to 2.1.0 - Pin mem0ai dependency to >=1.0.0,<2.0.0 - Clarify MCP integration as optional enhancement Co-Authored-By: Claude Opus 4.5 <[email protected]>
Replace direct bash hook calls with `node run-hook.mjs` invocations to match the current TypeScript-based hook execution model. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
BREAKING CHANGE: ork-memory plugin replaced by 3 separate plugins: - ork-memory-graph (Tier 1): zero-config graph memory (remember, recall, load-context) - ork-memory-mem0 (Tier 2): opt-in cloud memory requiring MEM0_API_KEY (mem0-memory, mem0-sync) - ork-memory-fabric (Tier 3): orchestration layer (memory-fabric) Split agent-memory-inject.ts into: - graph-memory-inject.ts (always runs, graph queries only) - mem0-memory-inject.ts (gated on MEM0_API_KEY, mem0 queries + cross-agent federation) Gate mem0-pre-compaction-sync.ts with MEM0_API_KEY early return. Update skill frontmatter with plugin: field. Rewrite test-agent-memory-hooks.sh with 49 tests covering split hooks, plugin separation, bundle contents, hook registration, and API key gating. Add CHANGELOG entry for v5.4.0. Document 3-tier memory architecture in CLAUDE.md. Update hook count from 152 to 153 across all manifests. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Adds dispatcher e2e/integration tests for mem0-pre-compaction-sync standalone hook and expands data-loss-risk coverage. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Syncs generated plugin output with latest src/ changes including memory decomposition hooks, test additions, and skill updates. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Fix split-bundles.test.ts hook count (152→153) after memory decomposition - Fix decision-processor.ts type error (tool_result as any for runtime check) - Add HOME env fallback in 5 hook files for container safety - Add dangerous-command-blocker patterns: git reset --hard, git clean -fd, git push --force, DROP DATABASE, DROP SCHEMA, TRUNCATE TABLE - Fix case-insensitive pattern matching (lowercase both command and patterns) - Add marketplace.json version sync to build script (Phase 5) - Wire vitest (1,449 tests) into CI pipeline and npm test runner - Add 76 unit tests for graph-memory-inject and mem0-memory-inject hooks All 1,449 vitest tests pass. All 32 test files green. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Change HookInput.tool_result from `string` to
`string | { is_error?: boolean; content?: string }` to match
actual runtime payloads from Skill PostToolUse hooks
- Remove `as any` cast from decision-processor.ts — typeof check
now correctly narrows the union type
- Fix agent-memory-store.ts to handle union type with typeof guard
- Add hook-typescript-tests to CI summary needs list and failure check
so vitest failures now block merge
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add 21 tests for new patterns: git reset --hard, git clean -fd, git push --force/-f, DROP DATABASE, DROP SCHEMA, TRUNCATE TABLE - Include safe-command counterparts (git reset --soft, git clean -n, normal git push, SELECT/CREATE/ALTER SQL) - Update CHANGELOG.md with all v5.4.0 fixes Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Implement 3-phase token optimization to reduce hook-injected context waste by ~73% (from ~33,750t to ~9,000t per session). Phase 1 - Quick Wins: - Conditional graph memory injection (skip when <100B graph data) - Merge skill-auto-suggest + skill-injector into unified skill-resolver - Tiered skill injection (hint/summary/full based on confidence) - Skill content compression (strip frontmatter, truncate code blocks) Phase 2 - Tiered System: - Content-aware token estimation (code ~2.8 chars/token, prose ~3.5) - Session token tracker with per-hook/per-category state persistence - Update context-budget-monitor to use improved estimation Phase 3 - Budget Enforcement: - Per-category token budgets (skill:1200, memory:800, suggestions:400) - Budgeted output helper with dependency injection pattern - Hook priority queue (P0-P3) with progressive throttling - Priority throttling disabled by default, opt-in via config New files: - src/hooks/src/lib/token-tracker.ts - src/hooks/src/lib/hook-priorities.ts - src/hooks/src/prompt/skill-resolver.ts Tests: 1585 passing (40 test files) including new unit, integration, and e2e test suites for all optimization modules. Hook count: 153 → 154 (added skill-resolver alongside existing hooks) Co-Authored-By: Claude Opus 4.5 <[email protected]>
…t-memory-store Add comprehensive test coverage for 3 previously untested areas: - home-environment.test.ts (17 tests): Verifies HOME/USERPROFILE/tmp fallback paths in getLogDir, pattern-sync-pull/push, and setup-maintenance. Validates path construction via mock assertions (not just continue=true). Documents HOME vs USERPROFILE inconsistency. - test-build-marketplace-sync.sh (22 tests): Tests build script Phase 5 marketplace.json version sync with integrity check against source, version mismatch/match/downgrade, missing plugins, malformed JSON, field preservation, and empty manifests. - agent-memory-store.test.ts (57 tests): Full SubagentStop hook coverage with test.each for all 14 categories and all 13 DECISION_PATTERNS, max-5 pattern limit, 200-char truncation, appendFileSync failure resilience, tool_result union type, and \b word boundary regression. Also fix .gitignore to use **/hooks/.claude/ glob pattern so nested runtime artifacts (heartbeats, feedback, mem0-webhooks) under src/hooks/ and plugins/*/hooks/ are properly ignored. Co-Authored-By: Claude Opus 4.5 <[email protected]>
…duplicate plugins, .tmp cleanup - home-environment: 4 tests verifying HOME="" (falsy) triggers /tmp fallback across all 4 modules - agent-memory-store: 3 tests for detectPatternCategory 10240-char truncation boundary - marketplace-sync: 6 tests for duplicate plugin names (last-wins, idempotent) and .tmp file cleanup - Removed resolved P2 TODO comments, P3 TODOs remain for future sessions Co-Authored-By: Claude Opus 4.5 <[email protected]>
…e files, 36-plugin scale Source fix: - agent-memory-store: check tool_result.is_error to skip pattern extraction on failures Tests added: - agent-memory-store: 8 tests (is_error field, unlinkSync cleanup, getProjectId sanitization) - home-environment: 4 tests (large file >1MB skip, sync-config parse failure) - marketplace-sync: 5 tests (read-only permission, 36-plugin scale) All TODO comments removed — P2/P3 coverage complete across all 3 test files. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Expand CI/CD for marketplace-grade cross-platform testing: - Add reusable composite action (.github/actions/setup/action.yml) - Handles Linux (apt-get), macOS (brew), Windows (choco) - Configurable Node version, plugin build, ci-setup options - Expand ci.yml matrix: - OS: ubuntu-latest, macos-latest, windows-latest - Node: 20, 22, 24 (Windows excludes 24 to reduce matrix) - All jobs now use `shell: bash` for Windows compatibility - 11 of 14 jobs now run multi-platform (was 3) - Expand plugin-validation.yml: - syntax-validation, hook-unit-tests, integration-tests now 3-OS - Relax Node.js engine constraint: - >=22.0.0 → >=20.0.0 (both package.json files) - esbuild target: node22 → node20 - Fix HOME/USERPROFILE inconsistency (Windows support): - common.ts, setup-maintenance.ts, antipattern-warning.ts - All now use: HOME || USERPROFILE || '/tmp' - Fix Node 20 compat in dispatcher-e2e.test.ts: - import.meta.dirname → import.meta.dirname ?? dirname(fileURLToPath(...)) Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Fix Node matrix: use ['20', '22'] (remove non-existent 24) - Add npm caching for faster CI runs - Add rsync for Windows via chocolatey - Add security-audit job for dependency scanning - Build plugins once, share via artifacts (no duplicate builds) - Expand all jobs to 3 OS platforms (ubuntu, macos, windows) - Raise coverage threshold from 20% to 70% - Update plugin-validation.yml with same artifact pattern Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add comprehensive parameterized tests that validate all hooks return valid HookResult structures. Tests cover: - 30 hooks across 10 categories (pretool, posttool, permission, etc.) - Edge cases: empty project_dir, missing session_id - HookResult structure validation Uses vitest's describe.each() and test.each() for efficient parameterized testing. Contributes ~8% coverage improvement. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add comprehensive error handling tests covering: - File system errors (ENOENT, EACCES, ENOSPC, EMFILE) - JSON parse error handling - Environment variable fallbacks - Git command failures - Concurrent access (EEXIST, ENOTEMPTY) - Edge case inputs (null, undefined, empty strings) - Error recovery patterns (sequential, parallel) 32 new tests validating hooks fail gracefully without crashes. Co-Authored-By: Claude Opus 4.5 <[email protected]>
## Unit Tests for High-Risk Hooks - auto-approve-safe-bash.test.ts: 92 tests for bash permission decisions - Git read operations, package manager commands, docker, shell, GitHub CLI - Dangerous command detection, edge cases, pattern boundaries - auto-approve-project-writes.test.ts: 43 tests for file write permissions - In-project writes, excluded directories, out-of-project detection - Edge cases: path traversal, symbolic path attacks, unicode paths - security-pattern-validator.test.ts: 48 tests for security anti-patterns - Hardcoded secrets, SQL injection, eval/exec, XSS, command injection - Subprocess shell=True, insecure random, insecure HTTP - code-quality-gate.test.ts: 27 tests for code quality enforcement - Function length detection (Python, TypeScript, Go, Java, Rust) - Nesting depth, cyclomatic complexity, multiple languages - file-lock-check.test.ts: 22 tests for multi-instance coordination - Lock detection, expiration, concurrent access, path normalization ## Integration Tests - hook-chains.test.ts: Tests for hook execution chains - Permission hook chains (Bash, Write) - Multi-step workflow scenarios - Cross-tool interactions, error propagation - HookResult structure validation ## E2E Tests - session-lifecycle.test.ts: Complete session flow tests - Full feature development workflow - Bug fix workflow with git operations - Multi-file refactoring session - Security boundary tests (out-of-project, dangerous commands) - Error recovery, rapid sequential operations - Session state consistency, performance bounds Also updates hook count (154 -> 158) in manifest and test expectations. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Adds Remotion demo components and skill-specific configurations: - TriTerminalRace, ProgressiveZoom, SplitThenMerge compositions - Shared components: ClaudeResponse, CodePreview, ProgressPhases, etc. - 22 skill demo configs (assess, brainstorm, implement, verify, etc.) - VHS terminal recording tapes for demo videos - Component tests for shared components Co-Authored-By: Claude Opus 4.5 <[email protected]>
…lates New skills for orchestration and demo production: - multi-scenario-orchestration: Multi-instance Claude Code coordination with LangGraph state machines, 5 reference docs - demo-producer/template-system: Template patterns for demo videos - Update CHANGELOG for v5.4.x consolidation Co-Authored-By: Claude Opus 4.5 <[email protected]>
- test-count-components.sh: Use validate-counts.sh for dynamic counting instead of arbitrary ranges like "100-200 skills" - test-plugin-structure-compliance.sh: Compare actual vs declared counts from plugin.json, add src/plugins sync validation, folder structure checks - multi-scenario-orchestration/SKILL.md: Trim from 682 to 115 lines - manifests/ork.json: Update counts to 186 skills, 167 hooks Fixes CI failures caused by hardcoded count expectations that required manual updates every time a skill/hook was added. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Create paths.ts with centralized cross-platform path utilities - getHomeDir(): HOME || USERPROFILE || os.homedir() - getTempDir(): os.tmpdir() for platform-aware temp directories - getLogDir(), getProjectDir(), getPluginRoot(): path.join() for separators - Update common.ts to delegate to paths.ts instead of string concatenation - Update hooks to use getHomeDir() instead of hardcoded '/tmp' fallback: - pattern-sync-pull.ts - pattern-sync-push.ts - mem0-context-retrieval.ts - setup-maintenance.ts (also uses getTempDir()) - user-profile.ts - Update test files to use os.tmpdir() and path.join(): - dispatcher-e2e.test.ts - token-optimization-e2e.test.ts - lifecycle tests (session-cleanup, coordination-init, etc.) - orchestration tests - home-environment.test.ts (mock os.homedir/tmpdir) This fixes Windows CI failures caused by hardcoded Unix paths like '/tmp'. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Sync paths.ts and cross-platform path updates to plugins/ork-core - Add fire-and-forget bin scripts for async hook execution - Sync updated test files (home-environment, lifecycle, orchestration) - Update orchestkit-demos components (SkillPhaseDemo) - Regenerate dist bundles with cross-platform path handling - Sync doctor and demo-producer command references Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Issue #243: Stop hooks were running 22 sequential blocking hooks, taking 2+ minutes to complete. This blocked session exit and showed "Crystallizing..." for an unacceptable duration. Changes: - Replace 22 blocking Stop hooks with single fire-and-forget entry point - stop-fire-and-forget.mjs immediately returns, spawns detached worker - Background worker calls unified stop dispatcher asynchronously - Session exit is now instant; cleanup runs in background The fire-and-forget pattern: 1. stop-fire-and-forget.mjs is called by Claude Code 2. It writes work to temp file and spawns background-worker.mjs detached 3. Immediately returns {"continue": true, "suppressOutput": true} 4. Background worker runs unifiedStopDispatcher asynchronously 5. User sees instant session exit, cleanup completes in background Co-Authored-By: Claude Opus 4.5 <[email protected]>
Issue #243: Stop hooks quick wins from assessment: 1. Add 5-minute self-terminating timeout to background-worker - Prevents worker from hanging indefinitely if a hook gets stuck 2. Add orphan temp file cleanup (files older than 10 minutes) - Runs at worker startup to clean up crashed worker artifacts 3. Add debug logging to .claude/logs/hooks/background-worker.log - Enables troubleshooting without blocking session exit 4. Wire all 29 stop hooks into unified dispatcher (was 9) - Added: multi-instance-cleanup, cleanup-instance, task-completion-check - Added: mem0-pre-compaction-sync, context-compressor, auto-remember-continuity - Added: full-test-suite, security-scan-aggregator - Added 12 skill/* hooks: coverage-check, evidence-collector, etc. Stop bundle grew from 58KB to 79KB with full hook coverage. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Issue #243: Document the fire-and-forget pattern for Stop hooks: - Add new section explaining fire-and-forget architecture - Document all 29 stop hooks organized by category - Explain background worker features (timeout, orphan cleanup, logging) - Update directory structure with correct hook count (29) - Update bundle size (79KB) - Add bin/ scripts documentation Co-Authored-By: Claude Opus 4.5 <[email protected]>
…oks, plugin dependencies Phase 1: Adopt CC 2.1.25 features — PostToolUseFailure handler, stop_hook_active re-entry guard, permissionMode support, PreCompact hook, Notification matchers, updatedInput typing, CLAUDE_ENV_FILE helper. Phase 2: Redistribute 14 hooks from global hooks.json to agent/skill-scoped frontmatter (git-operations-engineer, release-engineer, ci-cd-engineer + 5 skills). Global registry stays at 91; total 119 (91 global + 28 scoped). Phase 3: Add ork-core dependency to all 20 domain manifests; build script validates dependency resolution at build time. Phase 4: Version bump 5.4.2 → 5.5.0 across package.json, manifests, marketplace, CLAUDE.md. Engine requirement bumped to >=2.1.25. Also fixes: - Pre-existing token-tracker test failures (missing common.js mock) - Hook count validation now counts hooks.json entries + frontmatter (not raw .ts files) - Removed incomplete hook entry from accessibility-specialist agent (120 → 119) - Lint script no longer scans 3000 runtime JSON files in .claude/ directory Co-Authored-By: Claude Opus 4.5 <[email protected]>
- QW1: Add shared test mock fixture (mock-common.ts) with two factories (mockCommonBasic/mockCommonWithActual); refactor token-tracker.test.ts - QW2: Replace hardcoded JSON paths in lint.sh with pattern-based find scan across manifests/, .claude-plugin/, plugins/ with exclusions - QW3: Create bin/count-hooks.sh as single source of truth for hook counting; refactor validate-counts.sh and test-plugin-structure-compliance.sh - QW4: Add Section 5 (Frontmatter Hook Completeness) to lint.sh validating matcher/command count parity in agent and skill frontmatter Co-Authored-By: Claude Opus 4.5 <[email protected]>
…stream Replace 3,000+ line documentation mirror (15 files) with ~95-line thin wrapper that preserves OrchestKit integration while deferring to Vercel's upstream repo for comprehensive CLI docs. - Rewrite SKILL.md v3.0.0: install, quick start, key commands table, OrchestKit safety hook/sessions/env vars, upstream links - Delete 9 references/ files and 5 scripts/ (all upstream-owned content) - Trim browser-content-capture commands ref from 290 to 25 lines - Update 7 agent directives to point to `agent-browser --help` - Update webapp-testing playwright-setup.md reference - Remove deleted scripts from test arrays - Acknowledge v0.8.x cloud providers (kernel, browserbase, browseruse) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Bump engine requirement from >=2.1.25 to >=2.1.27 across marketplace.json, CLAUDE.md, and hooks README. Document CC 2.1.27 auto PR linking (--from-pr) in create-pr, github-operations, and issue-progress-tracking skills. Closes #253 Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add workflow_dispatch environment input (default: preview) - Add concurrency group to prevent racing deploys - Fix PR comment indentation using array.join pattern - Add security headers (X-Content-Type-Options, X-Frame-Options, Referrer-Policy) Co-Authored-By: Claude Opus 4.5 <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Playgrounds PreviewDeployed to: https://orchestkit-playgrounds-mgng5nwbx-yonatan-gross.vercel.app Updated: 2026-01-31T15:28:42.334Z |
- Add marketplace-explorer.html, demo-gallery.html, setup-wizard.html - Add shared navigation (nav.css, nav.js) and data.js - Add thumbnail assets for demos - Update .gitignore for Vercel local config - Fix thumbnail manifest JSON formatting Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sync plugins with source change documenting all cloud providers: - browserbase - kernel - browseruse Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add @sanity/client dependency for CMS uploads - Add thumbnail generation script - Add batch render script - Add CDN URL updater for data.js - Add Sanity upload script Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add `validate` job to deploy-playgrounds.yml that runs before deploy: - JSON validation for all playground JSON files - data.js syntax check with node --check - Thumbnail verification (all manifest entries exist as PNG) - HTML validation (DOCTYPE, closing tags) - Data freshness check (warns if stale) - Expand workflow triggers to include manifests/** and src/agents/** - Add scripts/verify-playground-thumbnails.js - Add scripts/generate-playground-data.js (generates from manifests) - Add npm scripts: generate:playground-data, verify:playground-thumbnails Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add comprehensive 2026-updated skills for product/UX/debug agents: Product agents (6 skills): - product-strategy-frameworks: Value Prop Canvas, JTBD, Build/Buy/Partner - prioritization-frameworks: RICE, ICE, WSJF, MoSCoW scoring - business-case-analysis: ROI, NPV, IRR, TCO, payback period - market-analysis-patterns: TAM/SAM/SOM, Porter's Five Forces, SWOT - requirements-engineering: User stories, acceptance criteria, PRD - okr-kpi-patterns: OKRs, KPIs, leading/lagging indicators UX research (2 skills): - user-research-methods: Interviews, usability testing, card sorting - persona-journey-mapping: Personas, empathy maps, journey maps Debug (1 skill): - root-cause-analysis: 5 Whys, Fishbone, Fault Tree Analysis Each skill includes references/, checklists/, and assets/ sub-folders. Updates 8 agents to reference new domain-specific skills. Updates skill counts (186 → 195) across documentation. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Rebuild plugins/ with new 9 skills and sub-folders - Update expected internal skill count: 163 → 172 - All validations and tests now pass Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Fix unbound variable error (PASSED/FAILED/TOTAL -> TOTAL_PASSED/TOTAL_FAILED) - Add architecture detection for rollup native module compatibility - Skip vitest gracefully when arm64/x64 mismatch detected - Show helpful message for users to reinstall node_modules This fixes test failures on macOS systems with mixed arm64/x64 node installations. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Updated the skill types table to reflect the actual count of 172 reference skills (195 total - 23 user-invocable = 172 reference). Co-Authored-By: Claude Opus 4.5 <[email protected]>
Windows uses CRLF (\r\n) line endings while Unix uses LF (\n). This caused frontmatter parsing to fail on Windows because '---\r' !== '---' when comparing YAML delimiters. Changes: - Add normalizeLineEndings() utility to common.ts - Fix subagent-validator.ts YAML frontmatter parsing - Fix skill-resolver.ts skill content loading - Fix decision-history.ts changelog parsing Root cause identified via PR #244 review: Windows CI tests were failing because agent skill validation couldn't parse frontmatter with CRLF line endings. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Rebuild TypeScript hooks after adding CRLF line ending normalization for Windows compatibility. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Fix 2 additional Windows compatibility issues found by review: 1. antipattern-warning.ts:148 - was using empty string fallback Changed: `HOME || USERPROFILE || ''` → `getHomeDir()` 2. pattern-sync-pull.ts:145 - was using hardcoded /tmp fallback Changed: `HOME || USERPROFILE || '/tmp'` → `getHomeDir()` Both now use getHomeDir() from paths.ts which has proper fallback: HOME || USERPROFILE || os.homedir() Co-Authored-By: Claude Opus 4.5 <[email protected]>
Rebuild TypeScript hooks after fixing path consistency issues for Windows compatibility. Co-Authored-By: Claude Opus 4.5 <[email protected]>
1. Install `bc` on Windows via chocolatey (setup action)
- Required for arithmetic in feedback-lib.sh
2. Skip symlink tests on Windows
- Symlinks require admin privileges or Developer Mode on Windows
- Added platform guard at start of test-symlink-attacks.sh
3. Fix path parsing in getProjectUserId()
- Was using split('/') which doesn't work on Windows backslash paths
- Now uses path.basename() for cross-platform compatibility
These fixes address CI failures on Windows runners in PR #244.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Rebuild TypeScript hooks after: - Adding path.basename() for cross-platform path parsing - Fixing getProjectUserId() Windows compatibility Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
.github/actions/setup/action.yml) for cross-platform dependency installationChanges
CI/CD Improvements
.github/actions/setup/action.yml— DRY composite action handling apt-get/brew/chocoshell: bashNode.js Compatibility
package.jsonengines:>=22.0.0→>=20.0.0src/hooks/package.jsonengines: sameesbuild.config.mjstarget:node22→node20dispatcher-e2e.test.ts: Added Node 20 polyfill forimport.meta.dirnameWindows Support Bug Fix
common.ts:HOME || '/tmp'→HOME || USERPROFILE || '/tmp'setup-maintenance.ts: same fix (2 locations)antipattern-warning.ts: same fixTest plan
node20targetsrc/hookstests pass (40 files, 1638 tests)home-environment.test.tspasses (25 tests including new USERPROFILE consistency tests)dispatcher-e2e.test.tspasses (16 tests)🤖 Generated with Claude Code