Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: synthable/copilot-instructions-cli
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: synthable/copilot-instructions-cli
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/ums-cli
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 12 commits
  • 167 files changed
  • 2 contributors

Commits on Sep 12, 2025

  1. feat: add UMS evaluation agents and processes

    Add Claude Code agents and documentation for UMS v1.0 module and persona evaluation:
    - Add ums-module-evaluator agent for validating module compliance and quality
    - Add ums-persona-evaluator agent for assessing persona composition
    - Add formal evaluation processes documentation for both workflows
    - Enable structured validation against UMS v1.0 schema requirements
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    synthable and claude committed Sep 12, 2025
    Configuration menu
    Copy the full SHA
    01d52b1 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2025

  1. feat: Complete UMS CLI separation - migrate to pure functions (#70)

    * feat: add comprehensive test coverage for Phase 1 utilities
    
    - Add constants validation tests with 42 test cases covering all UMS v1.0 constants
    - Add error formatting utility tests with 42 test cases for CLI error handling
    - Add UMS error utility tests with 52 test cases for library error types
    - All tests pass with comprehensive edge case coverage
    - Improves test coverage for utility functions and type validation
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: add comprehensive conflict resolution tests for UMS v1.0
    
    - Add extensive test suite for modules.config.yml conflict resolution
    - Test all three conflict strategies: error, replace, and warn
    - Test nested conflict resolution across multiple config levels
    - Test performance with large numbers of conflicts
    - Test edge cases: empty configs, malformed strategies, circular replacements
    - Document current implementation gap where error strategy converts to warnings
    - 23 comprehensive test cases with 100% coverage of conflict resolution scenarios
    - All tests pass with proper mocking of file system operations
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: implement Phase 1 of UMS CLI separation - extract file I/O operations
    
    - Add CLI file operations utilities (file-operations.ts) with comprehensive error handling
    - Add CLI configuration loader (config-loader.ts) for modules.config.yml management
    - Update UMS library to support content-based parsing alongside file-based loading
    - Add parseModule() and parsePersona() functions for content-only operations
    - Make filePath optional in UMSModule interface for backward compatibility
    - Update build command to use new CLI file operations with utf-8 encoding
    - Add comprehensive test coverage for all new utilities (100% coverage)
    - Maintain full backward compatibility with existing UMS library API
    
    This completes Phase 1 of the CLI/library separation plan, moving all file I/O
    operations to CLI helpers while preserving UMS library parsing capabilities.
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: complete Phase 2 UMS CLI separation with comprehensive test fixes
    
    This commit implements Phase 2 of the UMS CLI separation migration, moving
    module discovery and configuration management from UMS library to CLI layer,
    and fixes all tests to work with the new architecture.
    
    **Phase 2 Architecture Changes:**
    - Create CLI-based module discovery utilities with conflict resolution
    - Refactor ModuleRegistry to accept pre-loaded modules via constructor
    - Update BuildEngine to require ModuleRegistry through dependency injection
    - Remove file system dependencies from UMS library core
    - Move configuration management entirely to CLI layer
    
    **New CLI Components:**
    - `module-discovery.ts`: Utilities for discovering standard and local modules
    - `module-discovery.test.ts`: Comprehensive tests for discovery logic
    - Updated CLI commands to handle module discovery and registry creation
    
    **UMS Library Changes:**
    - ModuleRegistry constructor now accepts `(modules, warnings)` parameters
    - BuildEngine constructor now requires `registry` parameter
    - Removed file discovery logic from library core
    - Updated tests to work with dependency injection pattern
    
    **Test Infrastructure Updates:**
    - Fixed build command tests for new ModuleRegistry/BuildEngine constructors
    - Fixed search command tests to use direct module resolution
    - Updated all mocks to match new architecture patterns
    - Removed deprecated `loadModule` references from tests
    - Fixed module-discovery test to handle multiple module instances correctly
    
    **Lint Fixes:**
    - Removed unnecessary `async` keywords from `loadModulesFromRegistry` functions
    - Fixed `@typescript-eslint/require-await` errors in list.ts and search.ts
    
    **Test Results:**
    - CLI Package: 171 tests passing (8 test files)
    - UMS Library: 96 tests passing (4 test files)
    - Total: 267 tests passing with no errors
    
    **Benefits:**
    - Clear separation of concerns: CLI handles I/O, UMS lib handles logic
    - Improved testability through dependency injection
    - Centralized conflict resolution in CLI layer
    - All tests pass with new architecture
    - No lint errors remaining
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: complete Phase 3 UMS CLI separation - convert BuildEngine to pure functions
    
    - Create pure function modules for complete separation of concerns:
      * resolver.ts: Module resolution and conflict handling
      * renderer.ts: Markdown rendering per UMS v1.0 spec
      * report-generator.ts: Build report generation with SHA-256 hashing
    
    - Deprecate BuildEngine and ModuleRegistry classes in favor of functional composition
    - Update CLI build command to use pure function pipeline:
      parsePersona → resolvePersonaModules → renderMarkdown → generateBuildReport
    - Add comprehensive test coverage for all new pure functions (121 tests passing)
    - Maintain backward compatibility during transition period
    - Export new functions from UMS library index for public API
    
    Phase 3 achieves complete architectural separation between CLI orchestration
    and UMS library logic through dependency injection and pure functions.
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: finalize UMS CLI separation with comprehensive test migration
    
    Complete the migration from BuildEngine class-based architecture to pure
    function-based UMS v1.0 implementation. This finalizes the separation of
    concerns between CLI I/O operations and UMS library business logic.
    
    Key changes:
    - Update all CLI commands to use pure functions from UMS library
    - Remove BuildEngine class and related test files from ums-lib
    - Migrate tests to use pure function mocking patterns
    - Add test setup files for both CLI and UMS packages
    - Update package dependencies and exports in ums-lib
    - Ensure clean architectural boundaries between packages
    
    This completes the UMS CLI separation project, establishing a clean
    separation where the CLI handles all I/O operations and the UMS library
    provides pure data transformation functions for parsing, validation,
    resolution, rendering, and reporting.
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: improve JSDoc for parseModule function
    
    Add comprehensive JSDoc documentation with parameter descriptions,
    return type, and exception handling information.
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: improve JSDoc for parsePersona function
    
    Add comprehensive JSDoc documentation with YAML structure example,
    parameter descriptions, return type, and exception handling.
    
    🤖 Generated with [Claude Code](https://claude.ai/code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: clarify filePath comment in UMSModule type
    
    Improve comment to clearly specify when filePath is present vs absent,
    making the optional behavior more explicit for API consumers.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * refactor: make standard modules path configurable
    
    Add default parameter to discoverStandardModules function to improve
    testability and flexibility while maintaining backward compatibility.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * fix: replace map() misuse with proper iteration in renderer
    
    Replace incorrect use of map() with side effects with a proper for-of loop
    to prevent potential array length mismatches and improve code clarity.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * refactor: improve separator logic in renderer for maintainability
    
    Replace complex conditional separator logic with cleaner join() approach
    that builds module blocks first then joins with separators, improving
    code readability and maintainability.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude <noreply@anthropic.com>
    synthable and claude authored Sep 23, 2025
    Configuration menu
    Copy the full SHA
    6077bf8 View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2025

  1. feat: implement UMS conflict-aware registry with CLI inspection tools

    feat: implement UMS conflict-aware registry with CLI inspection tools
    
      - Add ModuleRegistry with configurable conflict resolution strategies (error/warn/replace)
      - Implement comprehensive conflict inspection CLI commands
      - Add tree-shaking support and performance optimizations
      - Enhance error handling with UMS-specific formatting
      - Complete Phase 4 Priority 1 with documentation and integration testing
      - Fix PR review issues from Copilot and Gemini code analysis
    
      Resolves module conflicts intelligently while maintaining backward compatibility.
      Provides powerful CLI tools for analyzing and debugging module conflicts.
    synthable authored Sep 27, 2025
    Configuration menu
    Copy the full SHA
    c0faf31 View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2025

  1. docs: remove references to unimplemented 'implement' field

    Remove documentation for the synergistic pairs pattern using the
    'implement' field, which is not currently implemented in the type
    system or build process.
    
    Changes:
    - Remove implement field from module frontmatter documentation
    - Remove Synergistic Pairs Pattern section from CLAUDE.md
    - Remove synergistic pairs references from copilot-instructions.md
    - Remove composition reference from AGENTS.md
    
    Refs: Architecture review finding - incomplete feature documentation
    synthable committed Oct 11, 2025
    Configuration menu
    Copy the full SHA
    79a3311 View commit details
    Browse the repository at this point in the history

Commits on Oct 14, 2025

  1. feat: Implement UMS v2.0 with TypeScript support (#78)

    feat: implement UMS v2.0 with native TypeScript support
    
    Complete migration from UMS v1.0 (YAML-based) to v2.0 (TypeScript-based)
    architecture with enhanced type safety and modern development workflow.
    
    BREAKING CHANGES:
    - v1.0 YAML format (.module.yml, .persona.yml) no longer supported
    - Build command stdin input removed (requires filesystem for TypeScript imports)
    - Parser API changed: parseModule/parsePersona now expect JS objects, not YAML strings
    - Validate command now stub (v2.0 relies on TypeScript compile-time checking)
    
    Core Library Updates (ums-lib):
    - New v2.0 type system with flexible Module and Persona interfaces
    - TypeScript module loading via dynamic imports
    - Simplified validation without rigid schema constraints
    - Updated parsers supporting both v1.0 and v2.0 formats
    - Enhanced markdown rendering with v2.0 metadata support
    - Build reports with proper schemaVersion handling
    
    CLI Updates (copilot-instructions-cli):
    - TSX-based loader for .module.ts and .persona.ts files
    - Enhanced error diagnostics with location tracking
    - Progress tracking with statistics, ETA, and CI support
    - Dual-format discovery (v1.0 YAML + v2.0 TypeScript)
    - MCP command stubs for future server support
    
    Migration Path:
    - v2.0 is a major version with intentional breaking changes
    - TypeScript format provides enhanced type safety and DX
    - No current production users affected
    - Documentation updated to reflect v2.0-first approach
    
    Test Coverage:
    - 363 total tests passing (201 CLI + 162 library)
    - 100% pass rate across all packages
    - All linting and type checking passes
    - Build succeeds for all workspace packages
    
    This squashes 10 commits:
    1. feat(types): add UMS v2.0 type system with backwards compatibility
    2. docs(ums-lib): update README for UMS v2.0
    3. feat(cli): add TypeScript UMS file loading with tsx
    4. feat(lib,cli): complete UMS v2.0 migration - remove v1.0 compatibility
    5. style: apply prettier formatting and fix linting issues
    6. fix: address PR review comments from GitHub Copilot
    7. fix: use persona.schemaVersion instead of hardcoding '1.0'
    8. fix(ums-lib): update all v1.0 references to v2.0
    9. fix(cli,ums-lib): remove all v1.0 YAML support
    10. docs(v2.0): remove v1.0 documentation
    
    Closes #78
    synthable authored Oct 14, 2025
    Configuration menu
    Copy the full SHA
    1c7fec8 View commit details
    Browse the repository at this point in the history
  2. docs: add architecture documentation and ADRs (#85)

    Adds comprehensive architecture documentation for the UMS library and CLI, including Architecture Decision Records (ADRs) and detailed component documentation.
    
    ## Architecture Documentation Added
    
    ### UMS Library Architecture
    - **Overview**: Core philosophy, architectural goals, and high-level design
    - **Component Model**: Five core components (Parsing, Validation, Resolution, Rendering, Registry)
    - **Data Flow**: Pure data transformation pipeline from raw content to Markdown
    - **API Specification**: Public API organized by functional domain
    - **Error Handling**: Custom error hierarchy with UMSError base class
    
    ### CLI Architecture
    - **Overview**: Imperative shell wrapping functional core, key features
    - **Command Model**: Detailed flow for build, list, search, validate, inspect commands
    - **Dependency Architecture**: Relationship between CLI and ums-lib
    - **Core Utilities**: Module discovery, file operations, error handling
    
    ### Architecture Decision Records
    - **ADR 0001**: Standard Library Loading Strategy (hybrid bundled + external approach)
    - **ADR 0002**: Dynamic TypeScript Loading with tsx (zero compilation step)
    - **ADR 0003**: Example Snippet Field Naming (exampleSnippet vs example)
    
    ## Documentation Fixes
    
    All 21 PR review comments addressed:
    - Fixed docs/README.md structure, removed broken links
    - Updated all UMS v1.0 → v2.0 references (13 instances across 8 files)
    - Updated deprecated type names: UMSModule→Module, UMSPersona→Persona (16 instances)
    - Updated file extensions: .yml → .ts (5 instances across 3 files)
    - Updated YAML → TypeScript references in parsing documentation
    - Standardized ADR format across all 3 ADRs
    
    ## Files Added
    - docs/architecture/adr/0001-standard-library-loading.md
    - docs/architecture/adr/0002-dynamic-typescript-loading.md
    - docs/architecture/adr/0003-example-snippet-field-naming.md
    - docs/architecture/copilot-instructions-cli/* (4 files + index)
    - docs/architecture/ums-lib/* (5 files + index)
    - docs/research/typescript_module_execution_patterns.md
    
    ## Files Modified
    - docs/README.md
    synthable authored Oct 14, 2025
    Configuration menu
    Copy the full SHA
    f42e384 View commit details
    Browse the repository at this point in the history
  3. docs: add formal proposal process and contribution guidelines (#83)

    Introduces a formal proposal process and comprehensive contribution guidelines to improve project governance and community participation.
    
    ## New Documentation
    
    ### Contribution Guidelines (CONTRIBUTING.md)
    - Code of conduct and community standards
    - Development environment setup
    - Ways to contribute (bug reports, features, docs, code, modules)
    - Development workflow (branch strategy, commit messages, pre-commit checks)
    - Pull request process and review guidelines
    - Technical proposals process
    - Coding standards and style guide
    - Testing guidelines (80% coverage requirement)
    - Package-specific guidelines (ums-lib, ums-sdk, CLI, MCP)
    
    ### Proposal Process (docs/proposal-process.md)
    - Formal process for significant technical changes
    - When proposals are required vs recommended
    - Proposal lifecycle (draft → review → decision)
    - Review criteria and acceptance requirements
    - Post-acceptance implementation tracking
    
    ### Quick Start Guide (docs/proposal-quick-start.md)
    - 5-minute quick start for creating proposals
    - Step-by-step walkthrough
    - Common pitfalls and best practices
    
    ### GitHub Issue Templates
    - `.github/ISSUE_TEMPLATE/proposal.md` - For new proposal submissions
    - `.github/ISSUE_TEMPLATE/proposal-feedback.md` - For feedback on existing proposals
    
    ### Proposal Template (docs/spec/proposals/TEMPLATE.md)
    - Structured template for technical proposals
    - Sections: Problem, Solution, Examples, Migration, Alternatives
    - Clear guidance on what to include in each section
    
    ## Documentation Fixes
    - Updated docs/README.md to include proposal process links
    - Removed broken link to non-existent `docs/processes/` directory
    - Integrated with existing architecture documentation structure from PR #85
    
    ## Review Comments Addressed
    All applicable review comments addressed:
    - Verified CONTRIBUTING.md link to module authoring guide is valid
    - Fixed docs/README.md structure during conflict resolution
    - Removed broken processes directory link
    
    ## Files Added
    - CONTRIBUTING.md
    - docs/proposal-process.md
    - docs/proposal-quick-start.md
    - docs/spec/proposals/TEMPLATE.md
    - .github/ISSUE_TEMPLATE/proposal.md
    - .github/ISSUE_TEMPLATE/proposal-feedback.md
    
    ## Files Modified
    - docs/README.md (added proposal process links, removed broken link)
    synthable authored Oct 14, 2025
    Configuration menu
    Copy the full SHA
    92cf6dc View commit details
    Browse the repository at this point in the history
  4. feat: add Claude Code toolkit for UMS v2.0 development (#84)

    Introduces a comprehensive toolkit of specialized AI agents and custom commands for UMS v2.0 development in Claude Code.
    
    ## New Toolkit Components
    
    ### 🤖 Specialized Agents (5)
    High-autonomy agents with deep UMS v2.0 expertise:
    - **build-developer**: Develops and maintains the UMS v2.0 build system
    - **library-curator**: Curates and maintains the UMS v2.0 standard library
    - **module-generator**: Generates UMS v2.0 compliant module files
    - **module-validator**: Validates module files for spec compliance
    - **persona-validator**: Validates persona files for spec compliance
    
    ### 📝 Custom Commands (6)
    Interactive slash commands for common workflows:
    - `/ums:create` - Interactive module/persona creation workflow
    - `/ums:validate-module` - Validate module files
    - `/ums:validate-persona` - Validate persona files
    - `/ums:audit` - Comprehensive quality audit
    - `/ums:curate` - Standard library curation workflow
    - `/ums:build` - Build and maintenance workflow
    
    ### 📚 Documentation
    - `.claude/AGENTS.md` - Complete agent reference guide
    - `.claude/COMMANDS.md` - Complete command reference guide
    
    ## Review Comments Addressed
    
    **Medium Priority:**
    - Fixed markdown code fence syntax in agent documentation
    - Corrected mismatched and orphaned four-backtick sequences
    - Ensured proper escaping of triple backticks in examples
    
    ## Files Added
    - .claude/AGENTS.md
    - .claude/COMMANDS.md
    - .claude/agents/build-developer.md
    - .claude/agents/library-curator.md
    - .claude/agents/module-generator.md
    - .claude/agents/module-validator.md
    - .claude/agents/persona-validator.md
    - .claude/commands/ums:audit.md
    - .claude/commands/ums:build.md
    - .claude/commands/ums:create.md
    - .claude/commands/ums:curate.md
    - .claude/commands/ums:validate-module.md
    - .claude/commands/ums:validate-persona.md
    synthable authored Oct 14, 2025
    Configuration menu
    Copy the full SHA
    0902665 View commit details
    Browse the repository at this point in the history
  5. feat: implement UMS SDK v1.0 with Node.js file operations and orchest…

    …ration
    
    This PR introduces the **UMS SDK v1.0**, a new Node.js-specific package that provides file system operations, TypeScript module loading, and high-level orchestration for the Unified Module System v2.0.
    
    ## Architecture
    
    The SDK implements a three-tier architecture:
    - CLI/UI Layer (ums-cli, ums-mcp)
    - UMS SDK (this PR) - File I/O, TypeScript loading, discovery, orchestration
    - UMS Library (ums-lib) - Pure domain logic, validation, rendering
    
    ## Key Features
    
    - **File System Operations**: ModuleLoader, PersonaLoader, ConfigManager
    - **Module Discovery**: Automatic discovery and standard library management
    - **Build Orchestration**: Complete end-to-end build workflow
    - **Configuration System**: Global conflictStrategy with runtime override
    
    ## Implementation
    
    5 commits implementing:
    1. Initial SDK package scaffolding with core components
    2. Comprehensive test scaffolding (197 test placeholders)
    3. Refactor to delegate parsing to ums-lib with module ID extraction
    4. Remove per-path onConflict config option (simplification)
    5. Add global conflictStrategy to config file
    
    ## Documentation
    
    - Complete SDK specification (ums_sdk_v1_spec.md)
    - Comprehensive README with API examples
    - Test scaffolding ready for implementation
    
    ## Testing
    
    - All existing tests pass (348 tests)
    - SDK test scaffolding in place (197 placeholders)
    - Type-safe with full TypeScript support
    
    This is a new package with no breaking changes to existing packages.
    synthable authored Oct 14, 2025
    Configuration menu
    Copy the full SHA
    ec53ee4 View commit details
    Browse the repository at this point in the history
  6. refactor: rename copilot-instructions-cli to ums-cli

    - Rename package from copilot-instructions-cli to ums-cli
    - Update all workspace scripts, TypeScript configs, and ESLint patterns
    - Update documentation and architecture diagrams to reflect new name
    - Add 'ums' binary alias while preserving 'copilot-instructions' for backwards compatibility
    - Fix ums-lib version mismatch in ums-sdk (^2.0.0 → ^1.0.0)
    - Enhance npm keywords for better discoverability
    - Preserve git history with git mv for all renames
    
    Package remains discoverable via 'copilot instructions' search on npm due to optimized keywords and preserved binary command name.
    synthable committed Oct 14, 2025
    Configuration menu
    Copy the full SHA
    1d73b1e View commit details
    Browse the repository at this point in the history

Commits on Oct 16, 2025

  1. docs: address PR #89 review comments

    - Fix GEMINI.md to reference TypeScript files (.module.ts, .persona.ts) instead of YAML
    - Update architecture docs to reference UMS v2.0 instead of v1.0
    - Remove unsupported stdin example from CLI README
    - Clarify SDK package is part of Instructions Composer monorepo
    
    Addresses comments from @gemini-code-assist and @Copilot on PR #89.
    synthable committed Oct 16, 2025
    Configuration menu
    Copy the full SHA
    deaa27f View commit details
    Browse the repository at this point in the history

Commits on Oct 17, 2025

  1. feat: add ums-mcp placeholder package and improve CLI documentation

    Add ums-mcp package scaffolding:
    - Add package.json with basic metadata and scripts
    - Add tsconfig.json with strict TypeScript configuration
    - Add placeholder server.ts implementation
    - Add test placeholder
    - Update root tsconfig.json to include ums-mcp in project references
    
    Improve CLI documentation:
    - Add migration status banner
    - Add build requirements and limitations sections
    - Document inspect registry command
    - Document MCP development helpers command group
    - Add comprehensive configuration section with modules.config.yml example
    - Update features list to be specific (TypeScript-first, config-driven, etc.)
    - Update project structure to show required modules.config.yml
    
    This enables the monorepo to pass lint checks and provides clearer documentation for CLI users.
    synthable committed Oct 17, 2025
    Configuration menu
    Copy the full SHA
    60f4efb View commit details
    Browse the repository at this point in the history
Loading