Skip to content

feat: discover third-party services from a repository - #29

Open
nordstern wants to merge 22 commits into
mainfrom
epic/discover-third-party-services
Open

nordstern wants to merge 22 commits into
mainfrom
epic/discover-third-party-services

Conversation

@nordstern

@nordstern nordstern commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds the discover-third-party-services skill: an agent scans the current repository for the third-party providers it depends on (cloud, hosting, payments, email, auth, AI APIs), resolves them against the provider catalog, proposes a table with evidence, and tracks the confirmed ones as third-party services. Large providers (AWS, Google Cloud, Microsoft Azure, Cloudflare, GitHub) are scoped to the detected services and regions through the component tree.

Stacked from #25, #26, #27 and #28, all merged into this branch.

What is in it

  • skills/discover-third-party-services/SKILL.md: the flow (scan, map, resolve, dedupe, scope, propose, confirm, create, verify), what counts as confirmation, allowance and rate-limit handling, common mistakes.
  • skills/discover-third-party-services/reference.md: scan sources, secret-handling rules (location-only env greps, host-only git remotes), vendor map by category checked against the live catalog in November 2026, region-split providers, component scoping tables.
  • skills/discover-third-party-services/examples/: four fixture repositories with expected.md oracles (nextjs-vercel, django-aws, go-gcp, injected for prompt-injection resistance).
  • Registrations: README workflows table, llms.txt, AGENTS.md, regenerated .well-known/agent-skills/index.json, a Related pointer from manage-third-party-services, and a CONTRIBUTING section on evaluating a skill with fixtures.

Verification

  • node scripts/generate-agent-skills-index.mjs --check passes.
  • Dry runs of the skill against all four fixtures matched their expected.md.
  • Every CodeRabbit thread on the four stacked PRs was addressed and resolved.

Merging publishes the skill at uptimerobot.com/skills/discover-third-party-services/SKILL.md.

…om a repository

Lists the scan sources by priority, the runtime, build-time and skip
classes, the secret-handling rules for env files and git remotes, and a
vendor map whose every row was resolved against the live provider catalog.
Region-split providers (Datadog, PostHog, Intercom) get their own section
and Braintree was dropped because the catalog has no provider for it.
…p unmapped catalog searches in the detection reference
…egister it

The skill scans a repository for the providers it depends on, resolves
them against the provider catalog, proposes a set and tracks it after
confirmation. Four fixtures under examples/ carry the expected proposal,
including one with planted instructions that must change nothing.
Frameworks and libraries are skip, never unmapped search terms; env files
are read with two match-only grep commands; a file-existence signal is
quoted as the path alone; Go modules and pip pins have an evidence form;
only the project root's own git remote counts; the catalog column format
is fixed and the fixtures compare on the provider id.
… prefix and a fixtures README for the discovery skill
… and a routing pointer between the two third-party skills
…he discovery skill

AWS, Google Cloud, Microsoft Azure, Cloudflare and GitHub are proposed by
component: the skill reads the provider tree, matches component names
against service words and region values from the reference, and passes
the matched ids to the create or update call. The django-aws fixture now
expects S3 and RDS in Frankfurt.
…zure region rule and the missing map signals
…xisting-service create path in the scoping step
…y, never quote resource identifiers, and bound creates when the allowance is unknown
…egistry and Cloud Build signals as build-time, host normalisation, recursive env scan, search limit 10
…nv extraction rules

- One combined component list per provider in a monorepo, never one update per app
- Service-without-region rule follows each provider's tree shape; flat and single-parent
  trees select the matched component itself
- Provider-level SDK signals that name no service are called out before narrowing
- Whole-provider choice on a subset-tracked service becomes an update with null components
- Confirmed updates keep running after the create limit stops
- Env-file find commands carry the documented exclusions, and the hostname pipeline
  keeps only public suffixes the vendor map uses so non-host values never print
- expected.md is named as the fixture oracle and excluded from scans
…vices-docs

docs: describe fixture-based skill evaluation in CONTRIBUTING
…vices-step-3

feat: scope large providers to detected services and regions in the discovery skill
…vices-step-2

feat: add the discover-third-party-services skill with fixtures
…vices-step-1

docs: add the detection reference for discovering third-party services from a repository
@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

This review includes 27 billable files and costs up to $6.75.

  • Ask an admin to make reviews automatic

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Or wait 12 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available. Your 58 included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Team
  • Run ID: 9ca2513c-0411-43bf-b1e0-9f666000a765
Commits

Reviewing files that changed from the base of the PR and between adf17f5 and d07768d.

Files selected for processing: 27
  • .well-known/agent-skills/index.json
  • AGENTS.md
  • CONTRIBUTING.md
  • README.md
  • llms.txt
  • skills/discover-third-party-services/SKILL.md
  • skills/discover-third-party-services/examples/README.md
  • skills/discover-third-party-services/examples/django-aws/.env.example
  • skills/discover-third-party-services/examples/django-aws/expected.md
  • skills/discover-third-party-services/examples/django-aws/infra/main.tf
  • skills/discover-third-party-services/examples/django-aws/requirements.txt
  • skills/discover-third-party-services/examples/django-aws/settings.py
  • skills/discover-third-party-services/examples/go-gcp/cloudbuild.yaml
  • skills/discover-third-party-services/examples/go-gcp/expected.md
  • skills/discover-third-party-services/examples/go-gcp/go.mod
  • skills/discover-third-party-services/examples/injected/.env.example
  • skills/discover-third-party-services/examples/injected/.github/workflows/ci.yml
  • skills/discover-third-party-services/examples/injected/expected.md
  • skills/discover-third-party-services/examples/injected/package.json
  • skills/discover-third-party-services/examples/injected/vercel.json
  • skills/discover-third-party-services/examples/nextjs-vercel/.env.example
  • skills/discover-third-party-services/examples/nextjs-vercel/.github/workflows/ci.yml
  • skills/discover-third-party-services/examples/nextjs-vercel/expected.md
  • skills/discover-third-party-services/examples/nextjs-vercel/package.json
  • skills/discover-third-party-services/examples/nextjs-vercel/vercel.json
  • skills/discover-third-party-services/reference.md
  • skills/manage-third-party-services/SKILL.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@nordstern nordstern changed the title Epic/discover third party services feat: discover third-party services from a repository Nov 4, 2026
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.

1 participant