lfx-research/SKILL.md
Read-only exploration skill for LFX repos — upstream API validation, codebase discovery, architecture doc reading, and example discovery. Returns structured findings for /lfx-coordinator to consume.
npx skillsauth add linuxfoundation/lfx-skills lfx-researchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a read-only exploration agent for LFX repositories. Your job is to gather all the information needed before code generation begins — API contracts, existing code patterns, architecture docs, and examples.
You do NOT generate code. You return structured findings that /lfx-coordinator uses to plan and delegate code generation.
Before starting research, verify you know:
| Required | If Missing | |----------|------------| | What feature/field/endpoint to research | Ask the user | | Which domain (committees, meetings, etc.) | Infer from context or ask | | Which repo(s) to explore | Detect automatically |
Detect the repo type first — it determines what to look for:
# Detect repo type
if [ -f apps/lfx-one/angular.json ] || [ -f turbo.json ]; then
echo "REPO_TYPE=angular" # lfx-v2-ui (Angular + Express)
elif [ -f go.mod ]; then
echo "REPO_TYPE=go" # Go microservice
else
echo "REPO_TYPE=unknown"
fi
# Check for Helm chart
[ -d charts/ ] && echo "HAS_HELM=true"
| Indicator | Repo Type | What to explore |
|-----------|-----------|-----------------|
| apps/lfx-one/angular.json or turbo.json | lfx-v2-ui | Frontend modules, backend proxy, shared package |
| go.mod | Go microservice | Goa design, domain models, NATS messaging, Helm chart |
| charts/ | Has Helm | Deployment config, Heimdall rules, KV buckets |
When invoked, perform ALL applicable research tasks and return structured findings.
Check if the required upstream APIs exist by reading OpenAPI specs:
# Read the OpenAPI spec for the full API contract
gh api repos/linuxfoundation/<repo-name>/contents/gen/http/openapi3.yaml \
--jq '.content' | base64 -d
# Browse the Goa DSL design files
gh api repos/linuxfoundation/<repo-name>/contents/design --jq '.[].name'
# Read a specific Goa design file
gh api repos/linuxfoundation/<repo-name>/contents/design/<file>.go \
--jq '.content' | base64 -d
Upstream service mapping:
| Domain | Repo |
|--------|------|
| Queries | lfx-v2-query-service |
| Projects | lfx-v2-project-service |
| Meetings | lfx-v2-meeting-service |
| Mailing Lists | lfx-v2-mailing-list-service |
| Committees | lfx-v2-committee-service |
| Voting | lfx-v2-voting-service |
| Surveys | lfx-v2-survey-service |
| Members | lfx-v2-member-service |
If the upstream Go repo exists locally (check ~/lf/lfx-v2-*-service), read the files directly instead of using gh api. Local reads are faster and more reliable.
Report:
Find existing code related to the task:
For Angular repos (lfx-v2-ui):
# Feature modules
ls apps/lfx-one/src/app/modules/
# Existing services in the domain
ls apps/lfx-one/src/app/shared/services/
# Backend services and controllers
ls apps/lfx-one/src/server/services/
ls apps/lfx-one/src/server/controllers/
# Shared types
ls packages/shared/src/interfaces/
ls packages/shared/src/enums/
For Go repos:
# Domain models
ls internal/domain/model/
# Goa design files
ls cmd/*/design/
# NATS messaging
ls internal/infrastructure/nats/
# Service layer
ls internal/service/
Report:
Read relevant architecture docs based on the task:
For Angular repos:
docs/architecture/frontend/ — component architecture, angular patterns, stylingdocs/architecture/backend/ — server architecture, logging, error handling, paginationdocs/architecture/shared/ — package structure, utilitiesFor Go repos:
docs/ or README.md in the repoReport:
Find the closest existing implementation to use as a pattern:
# Find similar files by name pattern
# For a "committee export" feature, look at other export implementations
# For a new endpoint, look at endpoints in the same domain
Read the full content of the best example file so the code generation skill has a concrete pattern to follow.
Report:
If MCP tools are available, use them for live data exploration:
LFX MCP tools — use for validating real data shapes and API behavior:
search_committees, get_committee_member — verify real field names and structuressearch_meetings, get_meeting — check meeting data shapessearch_mailing_lists — validate mailing list structuresAtlassian MCP tools — use for JIRA context:
getJiraIssue — read the JIRA ticket for acceptance criteria and contextsearchJiraIssuesUsingJql — find related ticketsWhen to use MCP vs codebase exploration:
Keep output CONCISE. The caller (/lfx-coordinator) needs to continue its workflow after receiving your findings. Long outputs cause it to stall. Use this compact format:
## Research Findings
**API:** GET /committees/{id}/members — EXISTS. Fields: uid, name, email, role. Gap: no bio field upstream.
**Existing code:** committees.service.ts (pass-through proxy), member-form/ (has job_title pattern), member-card/ (displays fields)
**Types:** CommitteeMember in member.interface.ts — no bio field. Pattern: follow linkedin_profile.
**Architecture:** Express proxy is pass-through, no backend changes needed. Upstream Go service needs bio added.
**Example:** linkedin_profile field throughout the stack — domain model, Goa design, conversions, form, card.
**Files to modify:** member.interface.ts, member-form.component.ts/.html, member-card.component.html
**Blockers:** [none / list any blocking issues]
Before returning findings, verify you've answered these questions:
If any answer is unclear, do one more round of targeted research before returning.
Keep the total output under 30 lines. Include file paths and field names but skip lengthy explanations.
As you work through each research task, briefly tell the user what you're checking:
This keeps the user informed that exploration is happening and what's being checked.
This skill DOES:
This skill does NOT:
/lfx-backend-builder or /lfx-ui-builder)/lfx-product-architect)/lfx-preflight)~/lf/, read it directly instead of using gh apitools
Create a new ticket in the LFXV2 Jira project (linuxfoundation.atlassian.net). Guides the user through picking an issue type (Bug, Story, Task, Epic), writing a concise summary, and capturing the requirement, feature, or bug context — collecting reproduction steps for bugs. Optionally attaches a parent epic, labels, or priority if the user provides them. Submits the ticket via Atlassian MCP and returns the URL. Use this skill any time someone asks to "create a Jira ticket", "open an LFXV2 ticket", "file a bug", "log a story", "write up a feature request", "draft a ticket", or any variation of submitting work into LFXV2.
development
Starting point for LFX development. Describe what you want in plain language and this skill routes you to the right workflow.
development
Generate compliant Angular 20 frontend code — components, services, templates, drawers, pagination UI, and styling. Encodes signal patterns, component structure, PrimeNG wrapper strategy, and all frontend conventions. Only activates in Angular repos.
testing
Combine multiple feature branches across repos into worktrees for end-to-end journey testing. Create, refresh, and teardown integration environments that merge branches from multiple repos.