Skip to content

Conversation

@yonatangross
Copy link
Owner

Summary

  • Add reusable composite action (.github/actions/setup/action.yml) for cross-platform dependency installation
  • Expand CI matrix to 3 OS (ubuntu, macos, windows) × 3 Node versions (20, 22, 24)
  • Fix HOME/USERPROFILE inconsistency for Windows support
  • Relax Node.js engine from >=22 to >=20

Changes

CI/CD Improvements

  • New: .github/actions/setup/action.yml — DRY composite action handling apt-get/brew/choco
  • ci.yml: 11 of 14 jobs now run multi-platform (was 3), all steps have shell: bash
  • plugin-validation.yml: syntax, hook-unit, integration tests now run on 3 OS

Node.js Compatibility

  • package.json engines: >=22.0.0>=20.0.0
  • src/hooks/package.json engines: same
  • esbuild.config.mjs target: node22node20
  • dispatcher-e2e.test.ts: Added Node 20 polyfill for import.meta.dirname

Windows Support Bug Fix

  • common.ts: HOME || '/tmp'HOME || USERPROFILE || '/tmp'
  • setup-maintenance.ts: same fix (2 locations)
  • antipattern-warning.ts: same fix

Test plan

  • TypeScript build passes with node20 target
  • TypeScript typecheck passes
  • YAML files validate correctly
  • src/hooks tests pass (40 files, 1638 tests)
  • home-environment.test.ts passes (25 tests including new USERPROFILE consistency tests)
  • dispatcher-e2e.test.ts passes (16 tests)
  • CI runs on all 3 platforms (verified by this PR)

🤖 Generated with Claude Code

yonatangross and others added 30 commits January 27, 2026 21:37
…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]>
- 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]>
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]>
- 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]>
- 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]>
yonatangross and others added 14 commits January 30, 2026 15:21
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]>
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]>
@vercel
Copy link

vercel bot commented Jan 31, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
orchestkit-playgrounds Error Error Jan 31, 2026 3:28pm

Request Review

@github-actions
Copy link

github-actions bot commented Jan 31, 2026

Playgrounds Preview

Deployed to: https://orchestkit-playgrounds-mgng5nwbx-yonatan-gross.vercel.app


Updated: 2026-01-31T15:28:42.334Z

yonatangross and others added 14 commits January 31, 2026 14:42
- 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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant