Skip to content

[LFXV2-1303] Add indexed-data-types reference to lfx-coordinator skill#10

Merged
niravpatel27 merged 1 commit intomainfrom
feat/LFXV2-1303-indexed-data-types-reference
Mar 19, 2026
Merged

[LFXV2-1303] Add indexed-data-types reference to lfx-coordinator skill#10
niravpatel27 merged 1 commit intomainfrom
feat/LFXV2-1303-indexed-data-types-reference

Conversation

@andrest50
Copy link
Contributor

@andrest50 andrest50 commented Mar 19, 2026

Summary

  • Add lfx-coordinator/references/indexed-data-types.md documenting all 27 queryable resource types in the LFX V2 system, grouped by domain with their NATS subjects and source files
  • Update lfx-coordinator/SKILL.md with a References table so the coordinator knows to consult this file when planning work involving indexing or the query service

Example

I prompted the lfx-coordinator after adding this skill reference:

> /lfx-coordinator I want to make an update to the UI, but I want to know if it's possible with the existing data. I want to create a section on the committee page that shows committee contributors. Do we have that data?

The short answer: no, that data doesn't exist yet.

  Here's what the committee service does have:

  - committee_member — people formally added to a committee, each with a role (Chair, Lead, Vice Chair, Secretary, Treasurer, Director, Counsel, Developer Seat, TAC/TOC Representative, LF Staff, None)
  - Invites and Applications — pending membership

  There's no "contributor" concept anywhere in the system — not as a role, not as a separate resource type, not in the query service index. The closest adjacent data that could indicate contribution activity would be meeting participants (v1_past_meeting_participant) or
   vote/survey responses, but those aren't linked back to a committee directly in a way that would power a contributors section.

  To build this, you'd first need to define what a "contributor" is. A few directions:

  1. Reuse committee_member — treat members as contributors (they already exist, this is buildable today)
  2. Meeting participation — people who attended committee-linked meetings (data exists in v1_past_meeting_participant, but the parent relationship to a committee would need to be verified)
  3. New concept — define contributors as a distinct category in the committee service (would require new backend work)

  Which of these did you have in mind, or is this something that still needs to be scoped?

Here is another chat with Claude after adding the skill reference and restarting the Claude session.

❯ /lfx I want to create a new UI feature. Tell me what data exists so I know what are the constraints for a new UI feature.                                                                                                                                                   
                                                                                                                            
⏺ Bash(if [ -f apps/lfx-one/angular.json ] || [ -f turbo.json ]; then echo "REPO_TYPE=angular"; elif [ -f go.mod ]; then echo "REPO_TYPE=go"; else echo "REPO_TYPE=unkn…)                                                                                                     
  ⎿  REPO_TYPE=unknown                                                                                                                                                                                                                                                      
     feat/LFXV2-1303-indexed-data-types-reference                                                                                                                                                                                                                             
     ?? lfx-backend-builder/lfx-backend-builder                                                                                                                                                                                                                               
     … +5 lines (ctrl+o to expand)                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                              
⏺ You're in the skills repo (not an LFX application repo directly), on branch feat/LFXV2-1303-indexed-data-types-reference. That branch name suggests you're working with indexed data types in the LFX v2 / query service area.                                              
                                                                                                                                                                                                                                                                              
  Since you want to understand what data exists before building a UI feature, this is a research task — let me route you to the right skill.                                                                                                                                  
   
⏺ Skill(lfx-research)                                                                                                                                                                                                                                                         
  ⎿  Successfully loaded skill · 6 tools allowed
                                                                                                                                                                                                                                                                              
⏺ Checking local LFX repos and JIRA ticket for context...
                                                                                                                                                                                                                                                                              
  Read 1 file (ctrl+o to expand)                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                              
⏺ claude.ai Atlassian - Get issue (MCP)(cloudId: "linuxfoundation.atlassian.net", issueIdOrKey: "LFXV2-1303", responseContentFormat: "markdown")                                                                                                                              
  ⎿  {                                                                                                                                                                                                                                                                        
       "issues": {                                                                        
         "totalCount": 1,                                                                                                                                                                                                                                                     
     … +42 lines (ctrl+o to expand)                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                              
⏺ Bash(gh api repos/linuxfoundation/lfx-v2-query-service/contents/ --jq '.[].name' 2>/dev/null | head -30)                                                                                                                                                                    
  ⎿  .github                                                                                                                                                                                                                                                                  
     .gitignore            
     .ko.yaml                                                                                                                                                                                                                                                                 
     … +19 lines (ctrl+o to expand)                                                       
                                                                                                                                                                                                                                                                              
⏺ Reading the indexed-data-types reference created in this branch, and exploring the query service design...                                                                                                                                                                  
                                                                                                                                                                                                                                                                              
  Searched for 1 pattern (ctrl+o to expand)                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                              
⏺ Bash(gh api repos/linuxfoundation/lfx-v2-query-service/contents/design --jq '.[].name' 2>/dev/null)                                                                                                                                                                         
  ⎿  query-svc.go                                                                                                                                                                                                                                                             
     types.go                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                              
  Read 1 file (ctrl+o to expand)                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                              
⏺ Bash(gh api repos/linuxfoundation/lfx-v2-query-service/contents/design/query-svc.go --jq '.content' | base64 -d 2>/dev/null | head -200)                                                                                                                                    
  ⎿  // Copyright The Linux Foundation and each contributor to LFX.                                                                                                                                                                                                           
     // SPDX-License-Identifier: MIT                                                                                                                                                                                                                                          
     … +68 lines (ctrl+o to expand)                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                              
⏺ Reading the resource type definitions and backend-builder query service reference...                                                                                                                                                                                        
                                                                                                                                                                                                                                                                              
⏺ Bash(gh api repos/linuxfoundation/lfx-v2-query-service/contents/design/types.go --jq '.content' | base64 -d 2>/dev/null)                                                                                                                                                    
  ⎿  // Copyright The Linux Foundation and each contributor to LFX.                                                                                                                                                                                                           
     // SPDX-License-Identifier: MIT                                                                                                                                                                                                                                          
     … +95 lines (ctrl+o to expand)                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
  Searched for 1 pattern, read 1 file (ctrl+o to expand)                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                            
⏺ Reading the shared types reference for completeness...
                                                                                                                                                                                                                                                                              
  Read 1 file (ctrl+o to expand)                                                          
                                                                                                                                                                                                                                                                              
⏺ Research Findings                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                              
  Here's a complete picture of what data exists and the constraints for building a new UI feature:                                                                                                                                                                            
                                                                                                                                                                                                                                                                              
  ---                                                                                                                                                                                                                                                                         
  All 27 Queryable Resource Types                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                              
  Everything is accessed via one endpoint: GET /query/resources?v=1&type=<type>                                                                                                                                                                                               
                                                                                                                                                                                                                                                                              
  ┌───────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐                     
  │    Domain     │                                                                                                           Resource Types                                                                                                            │                     
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Projects      │ project, project_settings                                                                                                                                                                                                           │
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Committees    │ committee, committee_settings, committee_member, committee_invite, committee_application                                                                                                                                            │                     
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Meetings      │ v1_meeting, v1_meeting_registrant, v1_meeting_rsvp, v1_meeting_attachment, v1_past_meeting, v1_past_meeting_participant, v1_past_meeting_attachment, v1_past_meeting_recording, v1_past_meeting_transcript, v1_past_meeting_summary │                     
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Mailing Lists │ groupsio_service, groupsio_service_settings, groupsio_mailing_list, groupsio_mailing_list_settings, groupsio_member                                                                                                                 │
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Voting        │ vote, vote_response                                                                                                                                                                                                                 │
  ├───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                     
  │ Surveys       │ survey, survey_response                                                                                                                                                                                                             │
  └───────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘                     
                           
  ---                                                                                                                                                                                                                                                                         
  How You Query Data From the UI
                                                                                                                                                                                                                                                                              
  The query service supports these filters — all combinable:
                                                                                                                                                                                                                                                                              
  ┌───────────────────────────────────────────────┬───────────────────────────────────────────────────────────────┐                                                                                                                                                           
  │                     What                      │                              How                              │                                                                                                                                                           
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By type                                       │ type=committee                                                │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By name / typeahead                           │ name=gov board                                                │                                                                                                                                                           
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By parent (e.g. all committees for a project) │ parent=project:uuid                                           │                                                                                                                                                           
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By tag (OR logic)                             │ tags=active&tags=public                                       │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By tag (AND logic)                            │ tags_all=governance&tags_all=security                         │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By exact field in data                        │ filters=status:active                                         │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By date range                                 │ date_field=updated_at&date_from=2025-01-01&date_to=2025-12-31 │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ By CEL expression                             │ cel_filter=data.slug == "tlf"                                 │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ Sort                                          │ sort=name_asc | name_desc | updated_asc | updated_desc        │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ Pagination                                    │ page_size=50&page_token=<opaque>                              │
  ├───────────────────────────────────────────────┼───────────────────────────────────────────────────────────────┤                                                                                                                                                           
  │ Count only                                    │ GET /query/resources/count                                    │
  └───────────────────────────────────────────────┴───────────────────────────────────────────────────────────────┘                                                                                                                                                           
                           
  ---                                                                                                                                                                                                                                                                         
  Response Shape           
                
  Each resource comes back as a generic envelope — the data field is the raw resource snapshot:
                                                                                                                                                                                                                                                                              
  { "type": "committee", "id": "uuid", "data": { ...any fields the backend indexed... } }
                                                                                                                                                                                                                                                                              
  The data fields are schema-free — whatever each backend service put into its IndexingConfig.data. There's no guaranteed schema per type documented in the query service itself; you need to check each service's domain model.                                              
                                                                                                                                                                                                                                                                              
  ---                                                                                                                                                                                                                                                                         
  Key Constraints for UI Feature Design
                                                                                                                                                                                                                                                                              
  1. Access control is automatic — authenticated users only see resources they have permission to view (FGA-checked). Anonymous users only see resources marked public: true.
  2. data fields are opaque — the query service doesn't know the schema. To know what fields are available on e.g. committee_member, you need to look at lfx-v2-committee-service's domain model and its IndexingConfig.                                                      
  3. Meeting data comes from v1 sync — not the meeting service directly. Fields may reflect legacy Zoom/ITX data shapes.                                                                                                                                                      
  4. CEL filter is in-process — it runs after OpenSearch, which means it doesn't help with pagination performance. Use filters= or tags= for large datasets.                                                                                                                  
  5. No cross-type joins — you can't query "all committees and their members" in one call. Each type is a separate query.                                                                                                                                                     
                                                                                                                                                                                                                                                                              
  ---                                                                                                                                                                                                                                                                         
  What To Do Next                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                              
  Would you like to:       
  - Build the feature — I can route you to /lfx-coordinator with your specific domain and field requirements                                                                                                                                                                  
  - Dig into specific field schemas — I can look at a specific service's domain model (e.g., what fields are on committee_member.data)                                                                                                                                        
  - Understand the architecture — route to /lfx-product-architect for a deeper design discussion                                                                                                                                                                              
                                                                                                                                                                                                                                                                              
  What domain or data type is your feature focused on?

Ticket

LFXV2-1303

🤖 Generated with Claude Code

…vice types

Add indexed-data-types.md reference documenting all 27 queryable resource
types in the LFX V2 system, grouped by domain with their NATS subjects and
source files. Update SKILL.md to reference the new file so the coordinator
knows where to look when planning work involving indexing or the query service.

Generated with [Claude Code](https://claude.ai/code)

Signed-off-by: Andres Tobon <andrest2455@gmail.com>
Copilot AI review requested due to automatic review settings March 19, 2026 18:30
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds coordinator-facing reference documentation so the lfx-coordinator skill can reliably identify which LFX V2 resource types are indexed/queryable and where to make indexing-related changes.

Changes:

  • Added a new reference doc enumerating queryable/indexed resource types, their NATS subjects, and source locations.
  • Updated lfx-coordinator/SKILL.md to include a References table pointing to the new doc (and existing shared-types reference).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
lfx-coordinator/SKILL.md Adds a References section linking to indexing/query-service and shared-types reference docs.
lfx-coordinator/references/indexed-data-types.md New doc listing queryable resource types by domain with NATS subjects/source files and guidance for adding fields/types.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@niravpatel27 niravpatel27 merged commit 9bdc975 into main Mar 19, 2026
5 checks passed
@niravpatel27 niravpatel27 deleted the feat/LFXV2-1303-indexed-data-types-reference branch March 19, 2026 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants