* build: update Go 1.25, CI workflows, and build tooling - Upgrade to Go 1.25 - Add benchmark targets to Makefile - Implement parallel gosec execution - Lock tool versions for reproducibility - Add shellcheck directives to scripts - Update CI workflows with improved caching * refactor: migrate from golangci-lint to revive - Replace golangci-lint with revive for linting - Configure comprehensive revive rules - Fix all EditorConfig violations - Add yamllint and yamlfmt support - Remove deprecated .golangci.yml * refactor: rename utils to shared and deduplicate code - Rename utils package to shared - Add shared constants package - Deduplicate constants across packages - Address CodeRabbit review feedback * fix: resolve SonarQube issues and add safety guards - Fix all 73 SonarQube OPEN issues - Add nil guards for resourceMonitor, backpressure, metricsCollector - Implement io.Closer for headerFileReader - Propagate errors from processing helpers - Add metrics and templates packages - Improve error handling across codebase * test: improve test infrastructure and coverage - Add benchmarks for cli, fileproc, metrics - Improve test coverage for cli, fileproc, config - Refactor tests with helper functions - Add shared test constants - Fix test function naming conventions - Reduce cognitive complexity in benchmark tests * docs: update documentation and configuration examples - Update CLAUDE.md with current project state - Refresh README with new features - Add usage and configuration examples - Add SonarQube project configuration - Consolidate config.example.yaml * fix: resolve shellcheck warnings in scripts - Use ./*.go instead of *.go to prevent dash-prefixed filenames from being interpreted as options (SC2035) - Remove unreachable return statement after exit (SC2317) - Remove obsolete gibidiutils/ directory reference * chore(deps): upgrade go dependencies * chore(lint): megalinter fixes * fix: improve test coverage and fix file descriptor leaks - Add defer r.Close() to fix pipe file descriptor leaks in benchmark tests - Refactor TestProcessorConfigureFileTypes with helper functions and assertions - Refactor TestProcessorLogFinalStats with output capture and keyword verification - Use shared constants instead of literal strings (TestFilePNG, FormatMarkdown, etc.) - Reduce cognitive complexity by extracting helper functions * fix: align test comments with function names Remove underscores from test comments to match actual function names: - benchmark/benchmark_test.go (2 fixes) - fileproc/filetypes_config_test.go (4 fixes) - fileproc/filetypes_registry_test.go (6 fixes) - fileproc/processor_test.go (6 fixes) - fileproc/resource_monitor_types_test.go (4 fixes) - fileproc/writer_test.go (3 fixes) * fix: various test improvements and bug fixes - Remove duplicate maxCacheSize check in filetypes_registry_test.go - Shorten long comment in processor_test.go to stay under 120 chars - Remove flaky time.Sleep in collector_test.go, use >= 0 assertion - Close pipe reader in benchmark_test.go to fix file descriptor leak - Use ContinueOnError in flags_test.go to match ResetFlags behavior - Add nil check for p.ui in processor_workers.go before UpdateProgress - Fix resource_monitor_validation_test.go by setting hardMemoryLimitBytes directly * chore(yaml): add missing document start markers Add --- document start to YAML files to satisfy yamllint: - .github/workflows/codeql.yml - .github/workflows/build-test-publish.yml - .github/workflows/security.yml - .github/actions/setup/action.yml * fix: guard nil resourceMonitor and fix test deadlock - Guard resourceMonitor before CreateFileProcessingContext call - Add ui.UpdateProgress on emergency stop and path error returns - Fix potential deadlock in TestProcessFile using wg.Go with defer close
2.8 KiB
CLAUDE.md
Go CLI aggregating code files into LLM-optimized output. Supports markdown/JSON/YAML with concurrent processing.
Architecture
Core: main.go, cli/, fileproc/, config/, utils/, testutil/, cmd/
Advanced: metrics/, templates/, benchmark/
Modules: Collection, processing, writers, registry (~63ns cache), resource limits, metrics, templating
Patterns: Producer-consumer, thread-safe registry, streaming, modular (50-200 lines)
Commands
make lint-fix && make lint && make test
./gibidify -source <dir> -format markdown --verbose
./gibidify -source <dir> -format json --log-level debug --verbose
Config
~/.config/gibidify/config.yaml
Size limit 5MB, ignore dirs, custom types, 100MB memory limit
Linting Standards (MANDATORY)
Linter: revive (comprehensive rule set migrated from golangci-lint)
Command: revive -config revive.toml ./...
Complexity: cognitive-complexity ≤15, cyclomatic ≤15, max-control-nesting ≤5
Security: unhandled errors, secure coding patterns, credential detection
Performance: optimize-operands-order, string-format, range optimizations
Format: line-length ≤120 chars, EditorConfig (LF, tabs), gofmt/goimports
Testing: error handling best practices, 0 tolerance policy
CRITICAL: All rules non-negotiable. make lint-fix && make lint must show 0 issues.
Testing
Coverage: 77.9% overall (utils 90.0%, cli 83.8%, config 77.0%, testutil 73.7%, fileproc 74.5%, metrics 96.0%, templates 87.3%) Patterns: Table-driven tests, shared testutil helpers, mock objects, error assertions Race detection, benchmarks, comprehensive integration tests
Development Patterns
Logging: Use utils.Logger() for all logging (replaces logrus). Default WARN level, set via --log-level flag
Error Handling: Use utils.WrapError family for structured errors with context
Streaming: Use utils.StreamContent/StreamLines for consistent file processing
Context: Use utils.CheckContextCancellation for standardized cancellation
Testing: Use testutil.* helpers for directory setup, error assertions
Validation: Centralized in config/validation.go with structured error collection
Standards
EditorConfig (LF, tabs), semantic commits, testing required, error wrapping
revive.toml Restrictions
AGENTS DO NOT HAVE PERMISSION to modify revive.toml configuration unless user explicitly requests it.
The linting configuration is carefully tuned and should not be altered during normal development.
Status
Health: 9/10 - Production-ready with systematic deduplication complete
Done: Deduplication, errors, benchmarks, config, optimization, testing (77.9%), modularization, linting (0 issues), metrics system, templating
Workflow
make lint-fixfirst-
80% coverage
- Follow patterns
- Update docs