Part of #6793. Depends on #6795 (the ContributionProfile schema this extraction must produce).
Context
With a target schema defined, AMS needs the actual extraction logic: read a repo's real signals (label taxonomy, contribution docs, agent-facing files) and produce a populated ContributionProfile.
Requirements
- Fetch and parse a target repo's label taxonomy (name + description) via the GitHub API, applying generic heuristics (not loopover-specific keyword matching) to classify labels as eligibility/exclusion/neutral where the description is explicit enough to support it.
- Fetch and parse
CONTRIBUTING.md, .github/PULL_REQUEST_TEMPLATE.md (or equivalent), and any AI-agent-facing docs (AGENTS.md, CLAUDE.md, .claude/skills/**) if present, extracting explicit eligibility statements where they exist.
- Populate the profile's confidence/provenance fields honestly — a repo with no discoverable signals at all should produce a low-confidence/empty profile, not a false-positive guess.
- Handle repos with partial signals gracefully (e.g. labels present but no docs, or docs present but generic/non-machine-parseable prose) — degrade to lower confidence rather than erroring.
Test Coverage Requirements
Unit tests against fixture data covering: a repo with loopover's own convention (should extract correctly), a repo with a different but explicit convention, and a repo with no discoverable signals at all (should produce a low-confidence/empty profile, not throw).
Deliverables
Expected Outcome
Given any target repo, AMS can produce a best-effort contribution profile from what that repo actually publishes, without any loopover-specific hardcoding.
Part of #6793. Depends on #6795 (the ContributionProfile schema this extraction must produce).
Context
With a target schema defined, AMS needs the actual extraction logic: read a repo's real signals (label taxonomy, contribution docs, agent-facing files) and produce a populated
ContributionProfile.Requirements
CONTRIBUTING.md,.github/PULL_REQUEST_TEMPLATE.md(or equivalent), and any AI-agent-facing docs (AGENTS.md,CLAUDE.md,.claude/skills/**) if present, extracting explicit eligibility statements where they exist.Test Coverage Requirements
Unit tests against fixture data covering: a repo with loopover's own convention (should extract correctly), a repo with a different but explicit convention, and a repo with no discoverable signals at all (should produce a low-confidence/empty profile, not throw).
Deliverables
ContributionProfileper AMS contribution-profile: design the ContributionProfile schema and caching shape #6795's schema for a given repo.Expected Outcome
Given any target repo, AMS can produce a best-effort contribution profile from what that repo actually publishes, without any loopover-specific hardcoding.