* fix: ContextScout falls back to global core/ when local core/ missing Users who install OAC globally have core standards at ~/.config/opencode/context/core/ but no local core/ directory. ContextScout now does a one-time check on startup: if local core/navigation.md doesn't exist, it checks the global path from paths.json. This resolves the ENOENT errors when agents try to read core/standards/ files that only exist globally. - paths.json: enabled global path (~/.config/opencode/context) - contextscout.md: added global_fallback rule with 2-glob cap - Fallback is ONLY for core/ files, never project-intelligence * docs: add context resolution explanation to README Explains how ContextScout resolves context files: local-first, global fallback only for core/ files, project-intelligence always local. Includes flow diagram, key rules, and common setup table. * fix: resolve installer failures and add comprehensive validation ## Summary Fixes critical installer failures where ContextScout and other components couldn't find their configuration files after installation. Adds comprehensive validation system to prevent future issues. ## Problems Fixed ### 1. Missing Critical Files (13 dead registry references) Files were referenced in registry but didn't exist on disk: - workflows-delegation (split into 3 files) - design-iteration (split into 8 files) - animation-patterns (split into 6 files) - adding-agent (split into 2 files) - adding-skill (split into 3 files) - navigation-design (split into 2 files) - external-libraries (split into 3 files) - claude-code-docs/* (directory removed) ### 2. Missing Infrastructure Files ContextScout failed after installation because 2 critical files weren't in registry: - paths.json - Context root configuration - navigation.md - Root navigation for discovery ### 3. Profile Inconsistencies Profiles referenced components that don't exist: - context:adding-skill → context:adding-skill-basics - context:animation-patterns → animation-basics/components/advanced - context:design-assets (removed - doesn't exist) - context:to-be-consumed/* (removed - directory doesn't exist) - skill:context-manager → subagent:context-manager ## Changes Made ### Registry (registry.json) - Removed 13 dead references - Added 27 new split-file entries - Added 2 critical infrastructure entries - Fixed all 5 profile configurations - Updated ContextScout dependencies - Updated agent-metadata.json dependencies ### New Validation Scripts - scripts/registry/check-dependencies.ts - Comprehensive dependency checker - scripts/tests/test-installer-files.sh - Installer simulation test - scripts/registry/fix-registry.py - Automated registry fixer - scripts/hooks/pre-commit - Git pre-commit hook ### Documentation - docs/maintenance/REGISTRY_FIXES_SUMMARY.md - docs/maintenance/CONTEXTSCOUT_FIX.md - docs/maintenance/REGISTRY_VALIDATION.md ## Validation Results Before: - 13 missing files in registry - 78 orphaned files on disk - 3 missing dependencies - Installer would fail After: - 244 total paths, 0 missing - 262 dependency checks, 0 failures - 0 orphaned dependencies - All profiles consistent - Installer works correctly ## Testing ```bash # Registry validation bun run scripts/registry/validate-registry.ts # ✓ All 244 paths valid # Dependency checking bun run scripts/registry/check-dependencies.ts # ✓ All 262 checks passed # Installer test ./scripts/tests/test-installer-files.sh --local --profile=essential # ✓ All files accessible ``` ## Usage ### Run validation before commits: ```bash bun run scripts/registry/check-dependencies.ts ``` ### Install pre-commit hook: ```bash cp scripts/hooks/pre-commit .git/hooks/pre-commit chmod +x .git/hooks/pre-commit ``` ### Test installer: ```bash ./scripts/tests/test-installer-files.sh --local --profile=essential ``` ## Impact This fix ensures: - ✓ Installer downloads all required files - ✓ ContextScout works immediately after install - ✓ No broken dependencies - ✓ No missing profile components - ✓ Future issues caught by validation ## Breaking Changes None - all changes are additive or fix broken references. ## Related - Fixes: ContextScout failing after installation - Prevents: Missing file errors during install - Adds: Comprehensive validation system * fix: resolve shellcheck warnings in test scripts - Remove unused REPO_URL variable from test-installer-files.sh - Add shellcheck disable comments for cleanup functions used via trap - Fixes CI failures in ShellCheck Analysis workflow * fix: resolve shellcheck errors across all scripts Fixed arithmetic expansion issues and code quality warnings: - Changed ((var++)) to POSIX-compliant 1 syntax - Fixed unquoted variables and grep pipe issues (SC2002, SC2143) - Added shellcheck disable comments for intentional patterns - Fixed variable initialization and return statement placement Scripts fixed: - scripts/tests/*.sh (5 files) - scripts/registry/*.sh (4 files) - scripts/validation/*.sh (2 files) - scripts/*.sh (2 files) - evals/framework/scripts/*.sh (2 files) All scripts now pass shellcheck --severity=warning * chore: trigger CI shellcheck validation |
||
|---|---|---|
| .. | ||
| auto-detect-components.sh | ||
| check-dependencies.ts | ||
| fix-registry.py | ||
| README.md | ||
| register-component.sh | ||
| validate-component.sh | ||
| validate-profile-coverage.sh | ||
| validate-registry.sh | ||
| validate-registry.ts | ||
Registry Validation Scripts
This directory contains scripts to validate the registry.json file.
Available Scripts
TypeScript Version (Recommended) ⚡
Fast, modern, and easy to debug
# Run validation
npm run validate:registry
# Run with verbose output
npm run validate:registry:verbose
# Run with fix suggestions
npm run validate:registry:fix
# Or run directly with bun
bun run scripts/registry/validate-registry.ts
bun run scripts/registry/validate-registry.ts -v
bun run scripts/registry/validate-registry.ts -f
Requirements:
- Bun runtime
Features:
- ✅ Fast execution (< 1 second)
- ✅ Easy to debug
- ✅ Type-safe
- ✅ Validates all registry paths
- ✅ Validates component dependencies
- ✅ Colored output
- ✅ Verbose mode
- ✅ Fix suggestions
Bash Version (Legacy)
Original bash script - still maintained for CI compatibility
# Run validation
./scripts/registry/validate-registry.sh
# Run with verbose output
./scripts/registry/validate-registry.sh -v
# Run with fix suggestions
./scripts/registry/validate-registry.sh -f
Requirements:
- bash
- jq
Note: The bash version may hang in some CI environments. The TypeScript version is recommended for local development.
What Gets Validated
Both scripts validate:
- Registry JSON Format - Ensures
registry.jsonis valid JSON - Component Paths - Verifies all file paths in the registry exist
- Component Dependencies - Validates that all dependencies reference existing components
Exit Codes
0- All paths valid, all dependencies valid1- Missing files or missing dependencies found2- Registry parse error or missing script dependencies
CI Integration
The GitHub Actions workflow (.github/workflows/validate-registry.yml) currently uses the bash version for compatibility with the base branch workflow file. Once this PR is merged, future PRs can use the TypeScript version.
Development
To modify the TypeScript validator:
- Edit
scripts/registry/validate-registry.ts - Test locally:
npm run validate:registry - Commit changes
The TypeScript version is the source of truth for new features.