{"owner":"pcottle","repo":"learnGitBranching","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nLearnGitBranching is an interactive git visualization tool for teaching git concepts through a game-like interface. It's a 100% client-side JavaScript application that simulates git operations and renders them visually using Raphael.js for SVG graphics.\n\n## Build & Development Commands\n\n### Setup\n```bash\nyarn install\n```\n\n### Building\n```bash\nyarn gulp fastBuild    # Fast build without tests/linting\nyarn gulp build        # Full production build with tests & lint\nyarn gulp watching     # Watch mode - rebuilds on file changes\n```\n\n### Testing & Linting\n```bash\nyarn test              # Run Jasmine test suite\nyarn test:coverage     # Run tests with nyc coverage\ngulp jshint            # Run JSHint linter\ngulp lintStrings       # Validate internationalization strings\n```\n\n### Development Server\n```bash\nyarn dev               # Start Vite dev server\n# After building, open index.html directly in browser\n```\n\n### Single Test Execution\n```bash\n# Run specific test file\nnpx gulp-jasmine __tests__/git.spec.js\n```\n\n## Architecture Overview\n\n### Core Components\n\n**GitEngine** (`src/js/git/index.js`)\n- The heart of the application - simulates all git operations\n- Manages the commit graph, branches, tags, refs, and HEAD\n- Processes commands and updates the visualization\n- Supports both git and Mercurial (hg) modes via `mode` property\n- Uses EventBaton pattern for command dispatching\n\n**Visualization System** (`src/js/visuals/`)\n- `visualization.js`: Main visualization controller\n- `tree.js`: Renders the commit tree using Raphael.js\n- `visNode.js`, `visBranch.js`, `visTag.js`, `visEdge.js`: Individual visual components\n- `animation/`: Animation system using promise chains (Q library)\n\n**Command Processing** (`src/js/commands/index.js`, `src/js/git/commands.js`)\n- Commands are defined with regex patterns, options, and execute functions\n- Supports both git and Mercurial command sets\n- Command delegation system allows commands to internally invoke other commands\n- All git commands are simulated - they manipulate in-memory data structures\n\n**Levels System** (`src/levels/`)\n- Each level is a JavaScript module exporting level configuration\n- Organized into sequences: intro, rampup, move, mixed, advanced, remote, remoteAdvanced\n- Level definition includes: name, goal description, starting tree state, solution validation\n- See `src/levels/index.js` for all level sequences\n\n### Flux Architecture\n\nThe app uses a Flux-like architecture:\n\n**Dispatcher** (`src/js/dispatcher/AppDispatcher.js`)\n- Central event bus using Facebook's Flux Dispatcher\n- Handles VIEW_ACTION and URI_ACTION payload sources\n\n**Stores** (`src/js/stores/`)\n- `CommandLineStore.js`: Manages command line state\n- `LevelStore.js`: Tracks current level and progress\n- `LocaleStore.js`: Handles internationalization\n- `GlobalStateStore.js`: Global application state\n\n**Actions** (`src/js/actions/`)\n- Action creators for CommandLine, Level, Locale, and GlobalState\n\n### UI Components\n\n**Backbone Views** (`src/js/views/`)\n- Legacy Backbone.js views for modals, dialogs, builders\n- `gitDemonstrationView.js`: Shows animated git command demonstrations\n\n**React Components** (`src/js/react_views/`)\n- Modern React components for command line, toolbar, helper bars\n- Command history view with syntax highlighting\n\n### Key Patterns\n\n**EventBaton** (`src/js/util/eventBaton.js`)\n- Pattern for transferring event handling responsibility\n- Used extensively for command processing and level events\n\n**TreeCompare** (`src/js/graph/treeCompare.js`)\n- Compares two commit trees for level completion validation\n- Handles branch positions, commit structure, tags\n\n**Animation Chains**\n- All visual updates go through animation queue\n- Uses Q promises to chain animations\n- Can be disabled for testing (headless mode)\n\n## Project Structure\n\n```\nsrc/\n├── js/\n│   ├── app/           # Application bootstrapping\n│   ├── git/           # Git engine and commands\n│   ├── mercurial/     # Mercurial (hg) support\n│   ├── commands/      # Command parsing and execution\n│   ├── level/         # Level loading and validation\n│   ├── visuals/       # Visualization and animation\n│   ├── views/         # Backbone views\n│   ├── react_views/   # React components\n│   ├── stores/        # Flux stores\n│   ├── actions/       # Flux actions\n│   ├── models/        # Backbone models and collections\n│   ├── intl/          # Internationalization\n│   ├── graph/         # Tree comparison logic\n│   └── util/          # Utilities\n├── levels/            # Level definitions organized by category\n├── style/             # CSS files\n└── template.index.html # HTML template\n\n__tests__/             # Jasmine test specs\n```\n\n## Build Process\n\nThe gulp build process:\n1. Browserify bundles all JS files (including JSX with Babel transform)\n2. CSS files concatenated and minified (production)\n3. Files are hashed for cache busting\n4. `template.index.html` is processed with hashed filenames to generate `index.html`\n5. Tests run with Jasmine, linting with JSHint\n\nProduction builds minify JS with Terser and HTML with html-minifier.\n\n## Key Technologies\n\n- **Backbone.js**: MVC framework (legacy parts)\n- **React 17**: UI components (modern parts)\n- **Flux**: Unidirectional data flow\n- **Raphael.js**: SVG graphics for visualization\n- **Q**: Promises for animation chains\n- **jQuery/jQuery UI**: DOM manipulation and dialogs\n- **Browserify + Babel**: Module bundling and JSX transform\n- **Gulp**: Build automation\n- **Jasmine**: Testing framework\n\n## Testing Conventions\n\n- Tests in `__tests__/` directory\n- Headless git engine for testing (`src/js/git/headless.js`)\n- Use `create.js` helper to set up test git trees\n- Mock commands with `mock.js` utility\n- Tests cover git operations, remote operations, levels, tree comparison\n\n## Remote Repository Simulation\n\nRemote operations (push/pull/fetch) are simulated by creating a separate GitEngine instance for the \"origin\" repository. The `o/` prefix denotes remote tracking branches.\n\n## Internationalization\n\nString translations in `src/js/intl/strings.js`. Use `intl.str()` and `intl.getDialog()` to access localized strings. Locale validation via `checkStrings.js`.\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nLearnGitBranching is an interactive git visualization tool for teaching git concepts through a game-like interface. It's a 100% client-side JavaScript application that simulates git operations and renders them visually using Raphael.js for SVG graphics.\n\n## Build & Development Commands\n\n### Setup\n```bash\nyarn install\n```\n\n### Building\n```bash\nyarn gulp fastBuild    # Fast build without tests/linting\nyarn gulp build        # Full production build with tests & lint\nyarn gulp watching     # Watch mode - rebuilds on file changes\n```\n\n### Testing & Linting\n```bash\nyarn test              # Run Jasmine test suite\nyarn test:coverage     # Run tests with nyc coverage\ngulp jshint            # Run JSHint linter\ngulp lintStrings       # Validate internationalization strings\n```\n\n### Development Server\n```bash\nyarn dev               # Start Vite dev server\n# After building, open index.html directly in browser\n```\n\n### Single Test Execution\n```bash\n# Run specific test file\nnpx gulp-jasmine __tests__/git.spec.js\n```\n\n## Architecture Overview\n\n### Core Components\n\n**GitEngine** (`src/js/git/index.js`)\n- The heart of the application - simulates all git operations\n- Manages the commit graph, branches, tags, refs, and HEAD\n- Processes commands and updates the visualization\n- Supports both git and Mercurial (hg) modes via `mode` property\n- Uses EventBaton pattern for command dispatching\n\n**Visualization System** (`src/js/visuals/`)\n- `visualization.js`: Main visualization controller\n- `tree.js`: Renders the commit tree using Raphael.js\n- `visNode.js`, `visBranch.js`, `visTag.js`, `visEdge.js`: Individual visual components\n- `animation/`: Animation system using promise chains (Q library)\n\n**Command Processing** (`src/js/commands/index.js`, `src/js/git/commands.js`)\n- Commands are defined with regex patterns, options, and execute functions\n- Supports both git and Mercurial command sets\n- Command delegation system allows commands to internally invoke other commands\n- All git commands are simulated - they manipulate in-memory data structures\n\n**Levels System** (`src/levels/`)\n- Each level is a JavaScript module exporting level configuration\n- Organized into sequences: intro, rampup, move, mixed, advanced, remote, remoteAdvanced\n- Level definition includes: name, goal description, starting tree state, solution validation\n- See `src/levels/index.js` for all level sequences\n\n### Flux Architecture\n\nThe app uses a Flux-like architecture:\n\n**Dispatcher** (`src/js/dispatcher/AppDispatcher.js`)\n- Central event bus using Facebook's Flux Dispatcher\n- Handles VIEW_ACTION and URI_ACTION payload sources\n\n**Stores** (`src/js/stores/`)\n- `CommandLineStore.js`: Manages command line state\n- `LevelStore.js`: Tracks current level and progress\n- `LocaleStore.js`: Handles internationalization\n- `GlobalStateStore.js`: Global application state\n\n**Actions** (`src/js/actions/`)\n- Action creators for CommandLine, Level, Locale, and GlobalState\n\n### UI Components\n\n**Backbone Views** (`src/js/views/`)\n- Legacy Backbone.js views for modals, dialogs, builders\n- `gitDemonstrationView.js`: Shows animated git command demonstrations\n\n**React Components** (`src/js/react_views/`)\n- Modern React components for command line, toolbar, helper bars\n- Command history view with syntax highlighting\n\n### Key Patterns\n\n**EventBaton** (`src/js/util/eventBaton.js`)\n- Pattern for transferring event handling responsibility\n- Used extensively for command processing and level events\n\n**TreeCompare** (`src/js/graph/treeCompare.js`)\n- Compares two commit trees for level completion validation\n- Handles branch positions, commit structure, tags\n\n**Animation Chains**\n- All visual updates go through animation queue\n- Uses Q promises to chain animations\n- Can be disabled for testing (headless mode)\n\n## Project Structure\n\n```\nsrc/\n├── js/\n│   ├── app/           # Application bootstrapping\n│   ├── git/           # Git engine and commands\n│   ├── mercurial/     # Mercurial (hg) support\n│   ├── commands/      # Command parsing and execution\n│   ├── level/         # Level loading and validation\n│   ├── visuals/       # Visualization and animation\n│   ├── views/         # Backbone views\n│   ├── react_views/   # React components\n│   ├── stores/        # Flux stores\n│   ├── actions/       # Flux actions\n│   ├── models/        # Backbone models and collections\n│   ├── intl/          # Internationalization\n│   ├── graph/         # Tree comparison logic\n│   └── util/          # Utilities\n├── levels/            # Level definitions organized by category\n├── style/             # CSS files\n└── template.index.html # HTML template\n\n__tests__/             # Jasmine test specs\n```\n\n## Build Process\n\nThe gulp build process:\n1. Browserify bundles all JS files (including JSX with Babel transform)\n2. CSS files concatenated and minified (production)\n3. Files are hashed for cache busting\n4. `template.index.html` is processed with hashed filenames to generate `index.html`\n5. Tests run with Jasmine, linting with JSHint\n\nProduction builds minify JS with Terser and HTML with html-minifier.\n\n## Key Technologies\n\n- **Backbone.js**: MVC framework (legacy parts)\n- **React 17**: UI components (modern parts)\n- **Flux**: Unidirectional data flow\n- **Raphael.js**: SVG graphics for visualization\n- **Q**: Promises for animation chains\n- **jQuery/jQuery UI**: DOM manipulation and dialogs\n- **Browserify + Babel**: Module bundling and JSX transform\n- **Gulp**: Build automation\n- **Jasmine**: Testing framework\n\n## Testing Conventions\n\n- Tests in `__tests__/` directory\n- Headless git engine for testing (`src/js/git/headless.js`)\n- Use `create.js` helper to set up test git trees\n- Mock commands with `mock.js` utility\n- Tests cover git operations, remote operations, levels, tree comparison\n\n## Remote Repository Simulation\n\nRemote operations (push/pull/fetch) are simulated by creating a separate GitEngine instance for the \"origin\" repository. The `o/` prefix denotes remote tracking branches.\n\n## Internationalization\n\nString translations in `src/js/intl/strings.js`. Use `intl.str()` and `intl.getDialog()` to access localized strings. Locale validation via `checkStrings.js`.\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nLearnGitBranching is an interactive git visualization tool for teaching git concepts through a game-like interface. It's a 100% client-side JavaScript application that simulates git operations and renders them visually using Raphael.js for SVG graphics.\n\n## Build & Development Commands\n\n### Setup\n```bash\nyarn install\n```\n\n### Building\n```bash\nyarn gulp fastBuild    # Fast build without tests/linting\nyarn gulp build        # Full production build with tests & lint\nyarn gulp watching     # Watch mode - rebuilds on file changes\n```\n\n### Testing & Linting\n```bash\nyarn test              # Run Jasmine test suite\nyarn test:coverage     # Run tests with nyc coverage\ngulp jshint            # Run JSHint linter\ngulp lintStrings       # Validate internationalization strings\n```\n\n### Development Server\n```bash\nyarn dev               # Start Vite dev server\n# After building, open index.html directly in browser\n```\n\n### Single Test Execution\n```bash\n# Run specific test file\nnpx gulp-jasmine __tests__/git.spec.js\n```\n\n## Architecture Overview\n\n### Core Components\n\n**GitEngine** (`src/js/git/index.js`)\n- The heart of the application - simulates all git operations\n- Manages the commit graph, branches, tags, refs, and HEAD\n- Processes commands and updates the visualization\n- Supports both git and Mercurial (hg) modes via `mode` property\n- Uses EventBaton pattern for command dispatching\n\n**Visualization System** (`src/js/visuals/`)\n- `visualization.js`: Main visualization controller\n- `tree.js`: Renders the commit tree using Raphael.js\n- `visNode.js`, `visBranch.js`, `visTag.js`, `visEdge.js`: Individual visual components\n- `animation/`: Animation system using promise chains (Q library)\n\n**Command Processing** (`src/js/commands/index.js`, `src/js/git/commands.js`)\n- Commands are defined with regex patterns, options, and execute functions\n- Supports both git and Mercurial command sets\n- Command delegation system allows commands to internally invoke other commands\n- All git commands are simulated - they manipulate in-memory data structures\n\n**Levels System** (`src/levels/`)\n- Each level is a JavaScript module exporting level configuration\n- Organized into sequences: intro, rampup, move, mixed, advanced, remote, remoteAdvanced\n- Level definition includes: name, goal description, starting tree state, solution validation\n- See `src/levels/index.js` for all level sequences\n\n### Flux Architecture\n\nThe app uses a Flux-like architecture:\n\n**Dispatcher** (`src/js/dispatcher/AppDispatcher.js`)\n- Central event bus using Facebook's Flux Dispatcher\n- Handles VIEW_ACTION and URI_ACTION payload sources\n\n**Stores** (`src/js/stores/`)\n- `CommandLineStore.js`: Manages command line state\n- `LevelStore.js`: Tracks current level and progress\n- `LocaleStore.js`: Handles internationalization\n- `GlobalStateStore.js`: Global application state\n\n**Actions** (`src/js/actions/`)\n- Action creators for CommandLine, Level, Locale, and GlobalState\n\n### UI Components\n\n**Backbone Views** (`src/js/views/`)\n- Legacy Backbone.js views for modals, dialogs, builders\n- `gitDemonstrationView.js`: Shows animated git command demonstrations\n\n**React Components** (`src/js/react_views/`)\n- Modern React components for command line, toolbar, helper bars\n- Command history view with syntax highlighting\n\n### Key Patterns\n\n**EventBaton** (`src/js/util/eventBaton.js`)\n- Pattern for transferring event handling responsibility\n- Used extensively for command processing and level events\n\n**TreeCompare** (`src/js/graph/treeCompare.js`)\n- Compares two commit trees for level completion validation\n- Handles branch positions, commit structure, tags\n\n**Animation Chains**\n- All visual updates go through animation queue\n- Uses Q promises to chain animations\n- Can be disabled for testing (headless mode)\n\n## Project Structure\n\n```\nsrc/\n├── js/\n│   ├── app/           # Application bootstrapping\n│   ├── git/           # Git engine and commands\n│   ├── mercurial/     # Mercurial (hg) support\n│   ├── commands/      # Command parsing and execution\n│   ├── level/         # Level loading and validation\n│   ├── visuals/       # Visualization and animation\n│   ├── views/         # Backbone views\n│   ├── react_views/   # React components\n│   ├── stores/        # Flux stores\n│   ├── actions/       # Flux actions\n│   ├── models/        # Backbone models and collections\n│   ├── intl/          # Internationalization\n│   ├── graph/         # Tree comparison logic\n│   └── util/          # Utilities\n├── levels/            # Level definitions organized by category\n├── style/             # CSS files\n└── template.index.html # HTML template\n\n__tests__/             # Jasmine test specs\n```\n\n## Build Process\n\nThe gulp build process:\n1. Browserify bundles all JS files (including JSX with Babel transform)\n2. CSS files concatenated and minified (production)\n3. Files are hashed for cache busting\n4. `template.index.html` is processed with hashed filenames to generate `index.html`\n5. Tests run with Jasmine, linting with JSHint\n\nProduction builds minify JS with Terser and HTML with html-minifier.\n\n## Key Technologies\n\n- **Backbone.js**: MVC framework (legacy parts)\n- **React 17**: UI components (modern parts)\n- **Flux**: Unidirectional data flow\n- **Raphael.js**: SVG graphics for visualization\n- **Q**: Promises for animation chains\n- **jQuery/jQuery UI**: DOM manipulation and dialogs\n- **Browserify + Babel**: Module bundling and JSX transform\n- **Gulp**: Build automation\n- **Jasmine**: Testing framework\n\n## Testing Conventions\n\n- Tests in `__tests__/` directory\n- Headless git engine for testing (`src/js/git/headless.js`)\n- Use `create.js` helper to set up test git trees\n- Mock commands with `mock.js` utility\n- Tests cover git operations, remote operations, levels, tree comparison\n\n## Remote Repository Simulation\n\nRemote operations (push/pull/fetch) are simulated by creating a separate GitEngine instance for the \"origin\" repository. The `o/` prefix denotes remote tracking branches.\n\n## Internationalization\n\nString translations in `src/js/intl/strings.js`. Use `intl.str()` and `intl.getDialog()` to access localized strings. Locale validation via `checkStrings.js`.\n","category":"root","tokens":1575}]}