+120
-113
CLAUDE.md
+120
-113
CLAUDE.md
···-You are a distinguished developer helping build Coves, a forum like atProto social media platform (think reddit / lemmy).-For comprehensive AT Protocol implementation details, see [ATPROTO_GUIDE.md](./ATPROTO_GUIDE.md).-For a detailed project structure with file-level details and implementation status, see [PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md).-- Always check Context7 for best practices before implementing external integrations and packages-For detailed XRPC patterns and Lexicon examples, see [ATPROTO_GUIDE.md](./ATPROTO_GUIDE.md#xrpc).-Key note: we are pre-production, we do not need migration strategies, feel free to tear down and rebuild, however ensure to erase any unneeded data structures or code.
···+Project: Coves Builder You are a distinguished developer actively building Coves, a forum-like atProto social media platform. Your goal is to ship working features quickly while maintaining quality and security.+- [ ] Identify which atProto patterns apply (check ATPROTO_GUIDE.md or context7 https://context7.com/bluesky-social/atproto)+- [ ] Check if Indigo (also in context7) packages already solve this: https://context7.com/bluesky-social/indigo+- [ ] - Follow the two-database pattern: Repository (CAR files)(PostgreSQL for metadata) and AppView (PostgreSQL)
+39
-2
cmd/validate-lexicon/main.go
+39
-2
cmd/validate-lexicon/main.go
······validationErrors = append(validationErrors, fmt.Sprintf("Failed to parse JSON in %s: %v", path, err))···
······validationErrors = append(validationErrors, fmt.Sprintf("Failed to parse JSON in %s: %v", path, err))···
+5
tests/lexicon-test-data/actor/block-invalid-did.json
+5
tests/lexicon-test-data/actor/block-invalid-did.json
+6
tests/lexicon-test-data/actor/block-valid.json
+6
tests/lexicon-test-data/actor/block-valid.json
+6
tests/lexicon-test-data/actor/membership-invalid-reputation.json
+6
tests/lexicon-test-data/actor/membership-invalid-reputation.json
+6
tests/lexicon-test-data/actor/membership-valid.json
+6
tests/lexicon-test-data/actor/membership-valid.json
+7
tests/lexicon-test-data/actor/preferences-invalid-enum.json
+7
tests/lexicon-test-data/actor/preferences-invalid-enum.json
+40
tests/lexicon-test-data/actor/preferences-valid.json
+40
tests/lexicon-test-data/actor/preferences-valid.json
···
···
+6
tests/lexicon-test-data/actor/profile-invalid-handle-format.json
+6
tests/lexicon-test-data/actor/profile-invalid-handle-format.json
+6
tests/lexicon-test-data/actor/saved-invalid-type.json
+6
tests/lexicon-test-data/actor/saved-invalid-type.json
+7
tests/lexicon-test-data/actor/saved-valid.json
+7
tests/lexicon-test-data/actor/saved-valid.json
+6
tests/lexicon-test-data/actor/subscription-invalid-visibility.json
+6
tests/lexicon-test-data/actor/subscription-invalid-visibility.json
+6
tests/lexicon-test-data/actor/subscription-valid.json
+6
tests/lexicon-test-data/actor/subscription-valid.json
+9
tests/lexicon-test-data/community/moderator-invalid-permissions.json
+9
tests/lexicon-test-data/community/moderator-invalid-permissions.json
···
···
+9
tests/lexicon-test-data/community/moderator-valid.json
+9
tests/lexicon-test-data/community/moderator-valid.json
···
···
+9
tests/lexicon-test-data/community/profile-invalid-moderation-type.json
+9
tests/lexicon-test-data/community/profile-invalid-moderation-type.json
+8
tests/lexicon-test-data/community/rules-invalid-sortition.json
+8
tests/lexicon-test-data/community/rules-invalid-sortition.json
+44
tests/lexicon-test-data/community/rules-valid.json
+44
tests/lexicon-test-data/community/rules-valid.json
···
···+"description": "Treat all members with respect. No harassment, hate speech, or personal attacks.",
+7
tests/lexicon-test-data/community/wiki-invalid-slug.json
+7
tests/lexicon-test-data/community/wiki-invalid-slug.json
···
···+"slug": "this-slug-is-way-too-long-and-exceeds-the-maximum-allowed-length-of-128-characters-which-should-trigger-a-validation-error-when-we-run-the-test",
+13
tests/lexicon-test-data/community/wiki-valid.json
+13
tests/lexicon-test-data/community/wiki-valid.json
···
···+"content": "# Welcome to the Programming Community\n\nThis guide will help you get started with our community.\n\n## Rules\nPlease read our community rules before posting.\n\n## Resources\n- [FAQ](/wiki/faq)\n- [Posting Guidelines](/wiki/posting-guidelines)\n- [Code of Conduct](/wiki/code-of-conduct)",
+5
tests/lexicon-test-data/interaction/comment-invalid-content.json
+5
tests/lexicon-test-data/interaction/comment-invalid-content.json
+10
tests/lexicon-test-data/interaction/comment-valid-sticker.json
+10
tests/lexicon-test-data/interaction/comment-valid-sticker.json
···
···
+23
tests/lexicon-test-data/interaction/comment-valid-text.json
+23
tests/lexicon-test-data/interaction/comment-valid-text.json
···
···+"text": "Great post! I especially liked the part about @alice.example.com's contribution to the project.",
+6
tests/lexicon-test-data/interaction/tag-invalid-empty.json
+6
tests/lexicon-test-data/interaction/tag-invalid-empty.json
+6
tests/lexicon-test-data/interaction/tag-valid-custom.json
+6
tests/lexicon-test-data/interaction/tag-valid-custom.json
+6
tests/lexicon-test-data/interaction/tag-valid-known.json
+6
tests/lexicon-test-data/interaction/tag-valid-known.json
+9
tests/lexicon-test-data/moderation/rule-proposal-invalid-status.json
+9
tests/lexicon-test-data/moderation/rule-proposal-invalid-status.json
···
···
+9
tests/lexicon-test-data/moderation/rule-proposal-invalid-threshold.json
+9
tests/lexicon-test-data/moderation/rule-proposal-invalid-threshold.json
···
···
+8
tests/lexicon-test-data/moderation/rule-proposal-invalid-type.json
+8
tests/lexicon-test-data/moderation/rule-proposal-invalid-type.json
+13
tests/lexicon-test-data/moderation/rule-proposal-valid.json
+13
tests/lexicon-test-data/moderation/rule-proposal-valid.json
···
···+"description": "All AI-generated code or content must be clearly marked as such. This helps maintain transparency and allows community members to make informed decisions about the content they consume.",+"ruleDescription": "All posts containing AI-generated code or content must include a clear disclosure statement"
+7
tests/lexicon-test-data/moderation/tribunal-vote-invalid-decision.json
+7
tests/lexicon-test-data/moderation/tribunal-vote-invalid-decision.json
···
···
+13
tests/lexicon-test-data/moderation/tribunal-vote-valid.json
+13
tests/lexicon-test-data/moderation/tribunal-vote-valid.json
···
···+"reasoning": "The moderator's action was justified based on clear violation of Rule 2 (No Spam). The user posted the same promotional content across multiple communities within a short timeframe.",
+6
tests/lexicon-test-data/moderation/vote-invalid-option.json
+6
tests/lexicon-test-data/moderation/vote-invalid-option.json
+6
tests/lexicon-test-data/moderation/vote-valid-approve.json
+6
tests/lexicon-test-data/moderation/vote-valid-approve.json
+10
tests/lexicon-test-data/post/post-invalid-missing-community.json
+10
tests/lexicon-test-data/post/post-invalid-missing-community.json