## Major Integration
- ✅ Integrated Requirements Engineering Agent into development workflow
- ✅ Enhanced Makefile with requirements validation targets
- ✅ Added pre-commit validation with mock compatibility checking
- ✅ Enhanced TDD workflow to include foundation analysis
## Test Fixes
- ✅ Fixed GiteaPlugin missing _add_comment_async method
- ✅ Fixed LocalPlugin config.yml file not found errors in tests
- ✅ Enhanced mock objects in CLI tests with proper domain model attributes
- ✅ All Issue #59 tests now passing (38/38 tests pass)
## New Capabilities
- `make validate-requirements` - Foundation analysis before development
- `make check-interface-compatibility INTERFACE=Name` - Interface compatibility checking
- `make generate-dev-checklist FEATURE='Name'` - Development checklist generation
- `make validate-mocks` - Mock object compatibility validation
- `make pre-commit-validate` - Complete pre-commit validation workflow
## Problem Prevention
This integration prevents the exact interface compatibility issues and mock object
mismatches that caused hours of debugging in Issue #59. The Requirements Engineering
Agent provides proactive foundation analysis and catches problems before they occur.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive issue management system with pluggable backend support:
ARCHITECTURE:
- Abstract IssueBackend base class with standardized interface
- Plugin discovery and configuration management system
- Unified CLI integration with markitect issues commands
BACKENDS IMPLEMENTED:
- Gitea plugin: Integrates with existing GiteaIssueRepository infrastructure
- Local plugin: File-based issue management with markdown + YAML frontmatter
CLI COMMANDS:
- markitect issues list [--state open|closed|all] [--backend name]
- markitect issues show <id> [--backend name]
- markitect issues create <title> <body> [--backend name]
- markitect issues close <id> [--backend name]
- markitect issues comment <id> <text> [--backend name]
CONFIGURATION:
- YAML-based backend configuration (.markitect/config/issues.yml)
- Default backends: gitea (remote) and local (file-based)
- Seamless backend switching via CLI options
LOCAL FILE STRUCTURE:
- .markitect/issues/open/ - Active issues as markdown files
- .markitect/issues/closed/ - Completed issues
- YAML frontmatter with issue metadata + markdown body
- Git integration for version control of local issues
TESTING:
- Comprehensive test suite for plugin manager (15/17 tests passing)
- Plugin interface validation and error handling
- CLI integration tests (functional verification complete)
This addresses the original problem where Claude sometimes missed existing
issue functions and tried direct API calls. Now provides consistent,
unified interface regardless of backend.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Resolve the integration issue where outline mode schema generation captured
heading text correctly but draft generation didn't use it, resulting in
generic placeholders instead of preserved document structure.
Key changes:
- Enhanced StubGenerator._extract_heading_text_from_schema() to extract actual heading text from enum constraints
- Modified heading generation logic in _generate_content_from_headings() to use captured text
- Fixed both H1 and H2+ heading handling to preserve source document structure
- Added comprehensive test suite covering all outline mode functionality
- Updated end-to-end test to reflect expected behavior (stubs vs full validation)
Impact:
- Outline schemas now properly integrate with draft generation
- Generated drafts preserve actual heading text from source documents
- End-to-end workflow: example → outline schema → draft maintains document structure
- Backward compatibility maintained for existing functionality
Tests: 8/8 passing in test_issue_46_schema_generation_outline.py
Resolves: coulomb/markitect_project#46🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add generate-drafts CLI command for batch document generation from data sources.
Supports JSON and CSV data with field mapping, validation, and automatic file naming.
Features:
- CLI command: markitect generate-drafts <schema> <data> -o <output_dir>
- JSON and CSV data source support
- Field mapping via x-markitect-field-mapping schema extensions
- Template variable substitution (e.g., {name} -> actual values)
- Data validation with required field checking
- Automatic file naming based on data content
- Schema reference metadata in generated files
- Integration with existing stub generation (Issue #55)
Technical implementation:
- New DraftGenerator class with comprehensive data processing
- Enhanced CLI with generate-drafts command and error handling
- Comprehensive test suite with 11 test cases covering all acceptance criteria
- Field mapping extraction and validation
- Template content substitution for data-driven content
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This implementation enhances the existing generate-stub command to utilize
content field instructions from schemas, providing guided document generation
with specific placeholder text instead of generic "TODO" messages.
## Key Features Added:
### Enhanced Schema-Based Generation
- Content instructions from schemas (x-markitect-content-instructions) are now used
- Schema reference metadata included in generated drafts for traceability
- Intelligent fallback to generic placeholders for schemas without instructions
- Full integration with existing generate-stub CLI command and options
### StubGenerator Enhancements
- New _extract_content_instruction_from_heading_schema method for instruction parsing
- Enhanced _get_placeholder_content method with schema-aware content generation
- Updated method signatures to support schema_file_path parameter throughout
- Robust handling of both content instruction and legacy schema formats
### CLI Integration
- Updated generate-stub command documentation with content instruction examples
- Enhanced help text explaining automatic content instruction usage
- Fixed output file generation to include schema references correctly
- Maintained full backward compatibility with existing usage patterns
### Technical Implementation
- Schema reference comments (<!-- Generated from schema: path -->) in generated drafts
- Content instruction text extracted from x-markitect-content-instructions fields
- Support for all instruction types (description, example, constraint, template)
- Integration with existing heading hierarchy and placeholder style systems
## Integration and Compatibility:
- Seamless integration with Issue #54 content field instructions
- Full backward compatibility with existing schemas and usage
- Works with outline mode schemas and heading text capture features
- Comprehensive error handling and graceful degradation
## Testing and Validation:
- Comprehensive test suite covering all acceptance criteria
- Integration tests with schema-generate → generate-stub workflow
- Validation of schema reference metadata and content instruction usage
- Backward compatibility testing with legacy schemas
This completes Issue #55 with full feature implementation, comprehensive testing,
and enhanced documentation for schema-based draft generation capabilities.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This implementation adds comprehensive support for content field instructions
that provide guidance for document generation from schemas.
## Key Features Added:
### CLI Options
- `--include-content-instructions` flag to enable content instruction fields
- `--instruction-type` parameter with options: description, example, constraint, template
- Full integration with existing outline mode and heading text capture features
### Schema Generation Enhancements
- Content instruction fields (x-markitect-content-instructions) with contextual guidance text
- Instruction type metadata (x-markitect-instruction-type) for type specification
- Metaschema extension (x-markitect-content-instructions-enabled) for feature detection
- Support for headings, paragraphs, and lists content instructions
### Error Handling
- InvalidInstructionTypeError for robust validation of instruction type parameters
- Comprehensive input validation with clear error messages
### Integration and Compatibility
- Seamless integration with outline mode and heading text capture
- Full backward compatibility - existing behavior unchanged when feature disabled
- Works with all existing CLI options and modes
### Documentation
- Updated CLI help with examples and detailed feature descriptions
- Clear documentation of all instruction types and their purposes
## Technical Implementation:
- Enhanced SchemaGenerator with content instruction generation logic
- Added `_generate_content_instruction` method for contextual instruction text
- Extended schema structure to include instruction metadata
- Maintained clean separation of concerns and existing code patterns
## Testing and Validation:
- Comprehensive test coverage following TDD8 methodology
- All existing functionality preserved and tested
- Integration tests for all feature combinations
- Error handling and edge case validation
This completes Issue #54 with full feature implementation, documentation,
and comprehensive testing coverage.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive heading text capture functionality that allows schemas to
enforce specific heading text requirements through enum constraints:
• New CLI option: --capture-heading-text flag for exact text constraints
• Schema generation with heading text as enum constraints (not just structure)
• Advanced validation engine that enforces heading text requirements
• Metaschema extension: x-markitect-heading-text-capture marker
• Full integration with Issue #51 outline mode capabilities
• Comprehensive error reporting for heading text mismatches
• Complete backward compatibility with existing schema generation
Technical implementation:
- Extended SchemaGenerator with capture_heading_text parameter
- Enhanced validation system to check enum constraints on heading content
- Added _validate_heading_text_constraints_with_errors for detailed reporting
- Integrated with existing metaschema validation from Issue #50
- Preserved document order of headings in enum constraints
Key features:
- Schemas can now specify required heading text via enum constraints
- Validation rejects documents with incorrect heading text
- Detailed error messages show expected vs actual heading text
- Works seamlessly with outline mode depth controls
- Maintains 100% compatibility with 513 existing tests
Usage examples:
markitect schema-generate --capture-heading-text document.md
markitect schema-generate --mode outline --capture-heading-text --depth 2 document.md
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive outline mode functionality for schema generation with:
• New CLI options: --mode outline, --depth parameter, --outfile alias
• Schema title format: "Schema from file.md" instead of "Schema for file.md"
• Metaschema extensions: x-markitect-outline-mode, x-markitect-outline-depth
• Depth control with validation (--depth must be >= 1)
• Parameter conflict detection and error handling
• Full backward compatibility with existing --max-depth option
• Comprehensive test coverage (10 new tests, all passing)
• Enhanced CLI help documentation with examples
Technical implementation:
- Extended SchemaGenerator.generate_schema_from_file() with mode/outline_depth parameters
- Updated CLI command with new options and parameter validation
- Maintained 100% compatibility with existing 493 tests
- Integrated with Issue #50 metaschema validation
Usage examples:
markitect schema-generate --mode outline document.md
markitect schema-generate --mode outline --depth 3 --outfile schema.json document.md
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove deprecated 'query' command (replaced by 'db-query')
- Remove deprecated 'schema' command (replaced by 'db-schema')
- Remove 4 obsolete tests that tested deprecated functionality
- Update all remaining tests to use new db-prefixed command names
- CLI now has clean, consistent command structure with proper prefixes
- All 478 tests passing after cleanup
This completes the CLI consistency convention implementation where all
subsystem commands follow the "*-stats" pattern and use proper prefixes.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed the database connection error that was causing degraded system health by
using the proper DatabaseManager API instead of non-existent methods.
## Root Cause Analysis:
- **Issue**: `_show_core_system_stats()` tried to call `db_manager.get_connection()`
- **Problem**: DatabaseManager class doesn't have a `get_connection()` method
- **Impact**: System health reported as "Degraded (66.7%)" due to database unavailability
## Why No Tests Caught This:
1. **Existing tests** only test public API methods (`store_markdown_file`, `get_markdown_file`, etc.)
2. **No tests existed** for `get_connection()` because the method doesn't exist
3. **New stats function** was the first code to assume this method existed
4. **Database pattern**: Uses temporary connections per operation, not persistent connections
## Solution Applied:
- **Replaced** `conn = db_manager.get_connection()` with proper `execute_query()` API
- **Updated queries** to use named columns: `SELECT COUNT(*) as count FROM table`
- **Added resilience** for optional tables (schema_files) with try/catch
- **Result**: System health now reports ✅ **100% Healthy**
## Changes Made:
```python
# Before (broken):
conn = db_manager.get_connection()
cursor.execute("SELECT COUNT(*) FROM markdown_files")
total_files = cursor.fetchone()[0]
# After (correct):
result = db_manager.execute_query("SELECT COUNT(*) as count FROM markdown_files")
total_files = result[0]['count'] if result else 0
```
## Current System Health:
```
🏥 System Health: ✅ Healthy (100.0%)
Healthy Subsystems: 3/3
🗄️ Database: ✅ Available (56.0 KB) - 11 files processed
🗃️ Cache: ✅ Available (0 B)
🖥️ AST Service: ✅ Available
```
This fix demonstrates the value of the health monitoring system - it successfully
identified a real integration issue and provided clear diagnostic information.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enhanced the status command by renaming it to 'stats' and implementing dual functionality
following the established *-stats command convention for consistent CLI experience.
## Changes Made:
### 1. Renamed status → stats Command
- Updated CLI command: @cli.command('stats')
- Updated function name: status() → stats()
- Enhanced to follow established subsystem naming convention
### 2. Made file_path Argument Optional
- Changed from required to optional: `@click.argument('file_path', required=False)`
- Added comprehensive format support: table, json, yaml, simple
- Updated help text to show `[FILE_PATH]` indicating optional parameter
### 3. Implemented Core System Statistics
- New function `_show_core_system_stats()` for system-wide monitoring
- Comprehensive statistics collection including:
* **Database**: File counts, size, recent activity, health status
* **Cache**: Directory info, cached files, size metrics
* **System Health**: Overall health percentage, subsystem status
* **System Info**: Working directory, Python version, execution mode
### 4. Dual Functionality Support
```bash
markitect stats # Shows core system statistics
markitect stats file.md # Shows file-specific status (preserved)
```
### 5. Advanced Health Monitoring
- System health percentage calculation (healthy/total subsystems)
- Visual health indicators: ✅ Healthy, ⚠️ Degraded, ❌ Unavailable
- Detailed subsystem status reporting
- Error handling with graceful degradation
### 6. Rich Output Formats
- **Table**: Visual dashboard with emoji icons and status indicators
- **JSON**: Structured data for programmatic integration
- **YAML**: Human-readable structured format
- **Simple**: Key-value pairs for shell scripting
## Implementation Benefits:
- **System Monitoring**: Single command to check entire MarkiTect system health
- **Consistent CLI**: Now matches ast-stats, cache-stats, db-stats, config-stats pattern
- **Operational Insight**: Database activity, cache performance, system status at a glance
- **Backward Compatible**: All existing file-specific functionality preserved
- **Professional Interface**: Clear visual hierarchy and status communication
The stats command now serves as the primary system health dashboard while maintaining
full backward compatibility for file-specific status checking.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enhanced ast-stats command to follow the established *-stats convention where subsystem
commands show system-level statistics when called without specific targets.
## Changes Made:
### 1. Made file_path Argument Optional
- Changed from required to optional: `@click.argument('file_path', required=False)`
- Updated help text to show `[FILE_PATH]` indicating optional parameter
- Enhanced docstring with clear examples for both usage patterns
### 2. Implemented AST Subsystem Statistics
- New function `_show_ast_subsystem_stats()` for system-level statistics
- Comprehensive statistics collection including:
* **AST Cache**: Directory path, cached files count, cache size
* **Processing Metrics**: Total files processed, recent activity (7 days)
* **System Information**: Service availability, working directory, Python version
### 3. Dual Functionality Support
```bash
markitect ast-stats # Shows AST subsystem statistics
markitect ast-stats document.md # Shows file-specific analysis (preserved)
```
### 4. Consistent Output Formats
- Supports all formats: table, json, yaml, simple
- Table format: Organized with emoji icons and status indicators
- JSON/YAML: Structured data for programmatic use
- Simple: Key-value pairs for scripting
### 5. Robust Error Handling
- Graceful degradation when cache/database unavailable
- Clear status indicators (✅ Available, ❌ Unavailable, ⚠️ Warning)
- Detailed error messages in verbose mode
## Implementation Details:
The command now detects when no file is provided and automatically switches to
subsystem mode, maintaining full backward compatibility with existing file
analysis functionality.
Benefits:
- **Consistent CLI Experience**: Matches cache-stats, db-stats, config-stats patterns
- **System Monitoring**: Easy way to check AST subsystem health
- **Backward Compatible**: Existing scripts continue to work unchanged
- **Professional Interface**: Clear separation between system and file-level stats
All functionality tested and working correctly with comprehensive error handling.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implemented comprehensive CLI naming consistency by standardizing all subsystem
commands to use *-stats for status reporting:
## Changes Made:
### 1. Removed Unnecessary Skipped Tests
- Removed two deferred tests for global option path display from Issue #39
- Tests were marked as requiring "complex CLI changes" and deemed not worth effort
- Cleaner test suite without placeholder functionality
### 2. Renamed cache-info → cache-stats
- Updated CLI command: @cli.command('cache-stats')
- Updated function name: cache_info() → cache_stats()
- Updated all test files to use cache-stats
- Consistent with subsystem naming convention
### 3. Renamed db-status → db-stats
- Updated CLI command: @cli.command('db-stats')
- Updated function name: db_status() → db_stats()
- Updated all test files and references to use db-stats
- Maintains database subsystem consistency
### 4. Implemented config-stats Command
- New CLI command following *-stats convention
- Displays configuration statistics and status information
- Supports all output formats: table, json, yaml, simple
- Integrates with existing config system when available
- Provides fallback functionality for basic configuration reporting
## Established Convention:
All CLI subsystems now have consistent *-stats commands:
- ✅ ast-stats (already existed)
- ✅ cache-stats (renamed from cache-info)
- ✅ db-stats (renamed from db-status)
- ✅ config-stats (newly implemented)
## Benefits:
- Intuitive command discovery (users know to try *-stats for any subsystem)
- Consistent CLI experience across all subsystems
- Better organized help documentation
- Professional CLI interface following standard conventions
All tests updated and passing. CLI maintains backward compatibility for
essential functionality while establishing clear, consistent patterns.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Command Restructuring Implementation
- Add new db-data command as replacement for metadata command
- Implement complete functionality matching original metadata command
- Support all output formats (table, json, yaml, simple)
- Follow established db- prefix pattern from Issue #39
## Backward Compatibility & Migration
- Maintain existing metadata command with full functionality
- Add deprecation warnings using legacy compatibility system
- Update help documentation with migration guidance
- Provide clear examples showing new db-data usage
## CLI Enhancements
- Consistent error handling across both commands
- Comprehensive help documentation for smooth migration
- Integration with existing legacy compatibility framework
- Support for all established output format options
## Testing & Validation
- Create comprehensive test suite for command restructuring
- Verify backward compatibility with existing scripts
- Test deprecation warning functionality
- Validate format consistency between old and new commands
## GAMEPLAN Documentation
- Create detailed implementation roadmap for all 5 phases
- Document technical architecture for component separation
- Establish testing strategy for comprehensive CLI enhancement
- Plan future phases for content, frontmatter, and tailmatter commands
Phase 1 Complete: ✅ Command restructuring with full backward compatibility
Next: Phase 2 - Content commands (content-stats, content-get)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit implements comprehensive associated files management and introduces
a mode-based architecture that resolves conflicting requirements between
interactive user workflows and automation/testing scenarios.
## Key Features
### Associated Files Management
- Convention-based file pairing (document.md ↔ document.json)
- Automatic path resolution and file discovery
- Complete CLI command suite for managing file pairs
- Performance optimizations with caching
### Interactive vs Automation Mode System
- Automatic mode detection via TTY, CI environment, and pipes
- Environment variable override (MARKITECT_MODE)
- Interactive mode: Uses associated file paths by default
- Automation mode: Optimizes for speed, memory, and stdout output
### Enhanced CLI Commands
- schema-generate: Auto-places output next to source in interactive mode
- generate-stub: Auto-places output next to schema in interactive mode
- validate: Auto-discovers associated schema files
- New associated-files command group with list, info, status, create subcommands
### Bug Fixes
- Fixed isinstance() errors caused by function shadowing built-in types
- Resolved test failures with new mode system integration
- Ensured backward compatibility for all existing functionality
## Technical Implementation
- Added AssociatedFilesManager class with comprehensive file operations
- Implemented mode detection using environment analysis
- Enhanced format_output function with proper type checking
- Added pytest configuration for automation mode during testing
- Complete test coverage for all new functionality
All 448 tests passing. Maintains full backward compatibility while adding
powerful new interactive features for improved developer experience.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
🔧 Schema Management System:
- schema-ingest: Store JSON schema files in database with metadata parsing
- schema-list: List all stored schemas with --format and --names-only options
- schema-get: Retrieve stored schemas to stdout or file
- schema-delete: Remove schemas with confirmation prompts
- Full database integration with schemas table
📊 Enhanced Format Control:
- MARKITECT_DEFAULT_FORMAT environment variable for global format defaults
- Consistent --format options across all CLI commands (table|json|yaml|simple)
- get_default_format() function with fallback logic for invalid values
- Applied format control to query, schema, metadata, list, and ast-stats commands
🛠️ Bug Fixes:
- Fixed ast-stats command empty output by adding 'simple' format handler
- Created missing schema_summary.py for schema visualization tests
- All 394 tests now passing
✨ Usability Improvements:
- Unified format handling across the entire CLI interface
- Environment-based configuration for user preferences
- Enhanced schema management workflow with comprehensive CRUD operations
🧪 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major Features:
- Implement comprehensive validation error reporting system (Issue #8)
- Add direct CLI access with 'markitect' command
- Create extensive makefile targets for CLI usage
- Enhance schema validation with detailed error collection
Components Added:
- markitect/validation_error.py: ValidationError system with 8 error types
- Enhanced markitect/schema_validator.py: Detailed error reporting methods
- markitect/cli.py: Enhanced with --detailed-errors and --error-format options
- visualize_schema.py: Schema visualization with ASCII and colorful modes
- Comprehensive test suite for validation error reporting
CLI Enhancements:
- Direct 'markitect' command access for all operations
- Makefile targets for typical CLI usage (cli-help, cli-ingest, etc.)
- Support for text, JSON, and markdown error output formats
- Backward compatibility with existing validation functionality
Testing:
- 11 comprehensive tests for Issue #8 validation error reporting
- Tests for schema validation, visualization, and CLI integration
- 100% test coverage for validation error scenarios
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed the massive number of deprecation warnings generated during test runs
by updating datetime handling in SQLite operations to use ISO format strings
instead of raw datetime objects.
## Problem
- Tests were generating 63+ deprecation warnings per run
- Python 3.12 deprecated the default datetime adapter for SQLite
- Warning: "The default datetime adapter is deprecated as of Python 3.12"
## Solution
- Convert datetime.now() to datetime.now().isoformat() in SQL INSERT
- Uses ISO format strings that SQLite handles natively
- Eliminates dependency on deprecated datetime adapter
## Impact
✅ Zero deprecation warnings in test runs
✅ All existing functionality preserved
✅ Database compatibility maintained
✅ Clean test output for better debugging
## Files Changed
- markitect/database.py: Updated store_markdown_file() method
This fix improves the development experience by eliminating the flood
of warnings that were obscuring actual test output and issues.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enhanced content preview length in AST display formats to ensure
important formatting markers and content are visible in CLI output.
## Changes Made
### AST Service Improvements
- Increased tree format content preview from 30 to 60 characters
- Increased compact format content preview from 20 to 40 characters
- Ensures bold/italic formatting markers are visible in output
### Problem Solved
Fixed failing test that expected "bold" and "italic" text to be visible
in AST display output. The previous 30-character truncation was cutting
off content like "This is a paragraph with **bold** and *italic* text."
at "This is a paragraph with **bol...", hiding important formatting.
### Test Results
✅ All 22 tests now passing (previously 21/22)
✅ ast-show provides readable output with full formatting visibility
✅ ast-query and ast-stats commands working perfectly
✅ Cache integration validated and performing optimally
## Validation
- `markitect ast-show file.md` now shows formatting markers clearly
- `markitect ast-query file.md '$[*].type'` returns comprehensive results
- `markitect ast-stats file.md` provides detailed content analysis
- All commands leverage cached ASTs for optimal performance
Issue #15 "AST Query and Analysis CLI" is now complete with full
functionality for markdown AST introspection and analysis.
Resolves#15🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Comprehensive error handling improvements addressing inconsistent patterns:
• Created markitect/exceptions.py with complete domain-specific exception hierarchy
- MarkitectError base class with context and cause chaining support
- Specific exceptions for Document, AST, Cache, Database, Schema operations
- Built-in logging and context preservation
• Fixed overly broad exception handling in tddai modules:
- issue_fetcher.py: Replace generic Exception with specific Gitea errors
- project_manager.py: Proper error translation with context preservation
- coverage_analyzer.py: Replace silent suppression with logging
• Enhanced cache_service.py error handling:
- Specific OSError/PermissionError handling for file operations
- Logging integration for unexpected errors
- Preserved error collection and reporting
• Implemented proper exception chaining patterns:
- All error translations use `raise ... from e` for debugging
- Preserved original exception context and stack traces
- Added docstring declarations of raised exceptions
• Benefits:
- Eliminates silent error suppression and debugging black holes
- Provides specific, actionable error messages
- Preserves full error context for troubleshooting
- Establishes consistent patterns for future development
Resolves issue #21: Error handling standardization
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added two new Claude Code subagents following proper specification format:
**Kaizen Optimizer Agent:**
- Meta-agent for analyzing and optimizing other subagents
- Performance analysis and specification improvement recommendations
- Agent ecosystem health assessment and continuous improvement
- Proper YAML frontmatter with proactive usage guidelines
**Refactoring Assistant Agent (Optimized):**
- Streamlined from 19-section complex specification to focused Claude Code format
- Code quality assessment and refactoring guidance within Claude Code environment
- Security analysis and performance optimization recommendations
- Integration with existing agent ecosystem (tddai-assistant, general-purpose, project-assistant)
**Also includes Issue #15 AST Query CLI implementation:**
- AST Service with display, query, and statistics capabilities
- JSONPath integration for flexible AST navigation
- CLI commands: ast-show, ast-query, ast-stats (22/22 tests passing)
- Leverages existing cache system for optimal performance
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive database query interface with multiple output formats:
• Add query command for executing read-only SQL queries with security constraints
• Add schema command for database structure inspection
• Add metadata command for file information display
• Support table, JSON, and YAML output formats across all commands
• Implement SQL injection prevention and safety checks
• Add tabulate dependency for enhanced table formatting
• Create 35 comprehensive tests covering all functionality
This delivers the core USP "Relational Document Metadata" by making the
database fully queryable through CLI commands with multiple output formats.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Complete CLI implementation using Click framework with core commands:
- ingest: Process and store markdown files with progress feedback
- status: Display file processing status and metadata
- list: Show all stored files with optional verbose details
Features:
- Global options (--verbose, --config, --database)
- Comprehensive error handling and user-friendly output
- Integration with existing DatabaseManager and DocumentManager
- Proper console script configuration in pyproject.toml
- Extensive inline documentation and help text
- Robust front matter parsing with error handling
Technical Implementation:
- Added Click dependency (>=8.0.0) to pyproject.toml
- Console script entry point: markitect.cli:main
- Full integration with database and caching systems
- Performance-aware implementation maintaining existing architecture
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Complete TDD implementation of core MarkiTect functionality:
**Database Module (markitect/database.py):**
- DatabaseManager class with SQLite database initialization
- markdown_files table with proper schema (id, filename, front_matter, content, created_at)
- Front matter storage as JSON with content separation
- File storage, retrieval, and listing methods
- Comprehensive error handling
**Front Matter Module (markitect/frontmatter.py):**
- FrontMatterParser class with YAML front matter parsing
- Clean separation of metadata from markdown content
- Graceful handling of invalid YAML and missing front matter
- Regex-based parsing with proper delimiter handling
**Dependencies:**
- Added PyYAML for front matter parsing
- Updated pyproject.toml with new dependency
**Test Coverage:**
- 9 comprehensive tests covering all functionality
- Database initialization and schema validation
- Front matter parsing with Issue #1 example content
- Integrated workflow testing (storage/retrieval)
- Error handling for edge cases
**TDD Process:**
- RED phase: 8 failing tests defining requirements
- GREEN phase: Minimal implementation making all tests pass
- Validation: Complete workflow verified with example content
This implementation provides the foundation for all subsequent MarkiTect
features, handling the exact example from Issue #1 specification.
Issue #1: Initialize Database and Store Example Markdown File
coulomb/markitect_project#1🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>