This file contains instructions and context for Claude Code AI agents working on the SwiftDown project.
SwiftDown is an enhanced fork of qeude/SwiftDown - a markdown editor component for SwiftUI applications with comprehensive wikilink support.
- Original:
qeude/SwiftDown(upstream) - Enhanced Fork:
DonaldoDes/SwiftDown(this repository) - Main Branch:
develop - Package URL:
https://github.com/DonaldoDes/SwiftDown.git
Sources/SwiftDown/
├── SwiftDownEditor.swift # Main SwiftUI component with wikilink API
├── SwiftDown.swift # Core text view with platform-specific handling
├── MarkdownEngine.swift # AST processing with wikilink integration
├── WikilinkProcessor.swift # Wikilink detection and processing
├── Theme.swift # Theming system with WikilinkStyle
├── MarkdownNode.swift # AST nodes including .wikilink type
└── [other markdown components]
- Location:
Tests/SwiftDownTests/ - Coverage: 73+ tests passing including comprehensive wikilink functionality
- Key Test Files:
SwiftDownEditorWikilinkTests.swiftWikilinkProcessorTests.swiftWikilinkStyleTests.swiftWikilinkAST IntegrationTests.swift
All core wikilink functionality is implemented and tested:
- SwiftDownEditor API with callbacks
- AST-based wikilink detection
- Theme integration
- Platform-specific interactions (iOS/macOS)
- Programmatic wikilink extraction/validation
// Basic usage
SwiftDownEditor(text: $text)
.onWikilinkTapped { title in /* navigation */ }
.wikilinkValidator { title in /* validation */ }
.wikilinkStyle(WikilinkStyle.defaultLight)
.theme(Theme.BuiltIn.defaultLight.theme())
// Data extraction
let wikilinks = editor.getWikilinks()
let validation = editor.validateWikilinks()- TDD Methodology: Write failing tests first (Red-Green-Refactor)
- Coverage: Maintain >95% test coverage (100% for core logic)
- Test Command:
swift test
- Red Phase: All tests fail initially (feature not implemented)
- Green Phase: Minimal implementation makes tests pass
- Refactor Phase: Code quality improved while maintaining green tests
- Coverage Gate: Minimum coverage thresholds met
- Performance Gate: No regressions in benchmark tests
- SRP Compliance: Maximum 300 lines per file, 50 lines per method, 10 methods per class
- Architecture: Clear separation of concerns, no circular dependencies
- Protocol-oriented design: Interfaces for testability and extensibility
- Platform Support: iOS and macOS
- Dependencies: Built on Down (CommonMark parser)
- ✅ TDD Compliance: Tests written before implementation
- ✅ Code Coverage: Unit tests with >95% coverage (100% for core logic)
- ✅ Integration Tests: Component interaction verification
- ✅ SRP Compliance: Single responsibility per class/file
- ✅ Architecture Review: Clear separation of concerns verified
- ✅ API Documentation: DocC-compatible documentation with examples
- ✅ Accessibility Verification: VoiceOver and keyboard navigation tested
features/Wikilink/
├── SwiftDown-Wikilink-Specifications.md # Technical specs
└── SwiftDown-Wikilink-Backlog.md # Product backlog
swift test # Run all testsswift build # Build the project- Implementation: All wikilink APIs are already complete
- Testing: Comprehensive test suite exists
- Documentation: See README.md for integration examples
- Check existing Epic status in
features/Wikilink/SwiftDown-Wikilink-Backlog.md - Follow TDD methodology
- Update tests and documentation
- Maintain code quality standards
- README.md: Complete integration guide with copy-paste examples
- SwiftDown-Wikilink-Specifications.md: Technical implementation details
- This file (CLAUDE.md): Project context and guidelines
- Backlog: Epic status and future development priorities
- Epic 0: ✅ COMPLETED - Core API implementation
- Epic 1: ✅ COMPLETED - Core wikilink implementation (MVP)
- Epic 2+: 📋 BACKLOG - Enhanced features
- One Epic at a time: Complete current epic before starting next
- One User Story at a time: Implement ONE user story at a time
- User validation required: Request approval before proceeding to next story/epic
- TDD compliance: All code must follow Red-Green-Refactor cycle
- Implement user story (tests + code + docs)
- Request user validation
- Wait for approval
- Mark complete and move to next story
Theme.BuiltIn.defaultLight.theme()
Theme.BuiltIn.defaultDark.theme()WikilinkStyle.defaultLight // Blue text, no underline
WikilinkStyle.defaultDark // Light blue text, no underline- Build Errors: Ensure all dependencies are resolved with
swift package resolve - Test Failures: Run
swift testto identify failing tests - Wikilink API: All APIs are implemented - check README.md for usage
swift package resolve # Resolve dependencies
swift test --verbose # Verbose test output
swift build --verbose # Verbose build output- Current version tracked in
Package.swift - Follow semantic versioning (MAJOR.MINOR.PATCH)
- Update README.md package URLs when releasing
- Main branch:
develop - Commits: Use conventional commit format
- Pull Requests: Target
developbranch
- ✅ Use existing wikilink APIs (they're fully implemented)
- ✅ Follow TDD methodology for new features
- ✅ Check Epic status before starting work
- ✅ Update documentation when making changes
- ✅ Run tests before committing
- ❌ Assume wikilink APIs need implementation (they're done)
- ❌ Skip writing tests (TDD required)
- ❌ Work on multiple Epics simultaneously
- ❌ Break existing functionality
- ❌ Ignore code quality standards
- Package URL:
https://github.com/DonaldoDes/SwiftDown.git - Test Command:
swift test - Build Command:
swift build - Main Documentation:
README.md - Technical Specs:
features/Wikilink/SwiftDown-Wikilink-Specifications.md
Last Updated: December 2024
Epic 0 Status: ✅ COMPLETED - Core API implementation
Epic 1 Status: ✅ COMPLETED - Core wikilink implementation (MVP)
Next: Epic 2+ enhanced features available in backlog