Skip to content

Comments

Add duplicate resource detector agentic workflow#762

Open
aaronpowell wants to merge 1 commit intostagedfrom
overlapping-items-workflow
Open

Add duplicate resource detector agentic workflow#762
aaronpowell wants to merge 1 commit intostagedfrom
overlapping-items-workflow

Conversation

@aaronpowell
Copy link
Contributor

Summary

Adds a new GitHub Agentic Workflow that scans the repository weekly for potential duplicate resources.

What it does

  1. Runs weekly on a fuzzy schedule (also supports manual workflow_dispatch)
  2. Scans all resource types — agents, prompts, instructions, and skills — comparing names, descriptions, and content for similarity
  3. Checks previous issues labeled duplicate-review to find pairs already reviewed/accepted and excludes them from the report
  4. Creates a GitHub issue titled "🔍 Duplicate Resource Review" with a task list of grouped duplicates, tagged with duplicate-review for easy backlog discovery
  5. Automatically closes older reports when a new one is filed
  6. Calls noop if no duplicates are found

Duplicate detection signals

Resources are flagged when they share two or more of:

  • Similar file names or name fields
  • Similar description fields
  • Overlapping scope (same language/framework + same activity)
  • Cross-type overlap (e.g., an agent and a prompt doing the same thing)

Files

  • .github/workflows/duplicate-resource-detector.md — agentic workflow definition
  • .github/workflows/duplicate-resource-detector.lock.yml — compiled GitHub Actions workflow (generated by gh aw compile)

Copilot AI review requested due to automatic review settings February 19, 2026 04:54
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Materialized files or symlinks detected in plugin directories

Plugin directories on the staged branch should only contain:

  • .github/plugin/plugin.json (metadata)
  • README.md

Agent, command, and skill files are copied in automatically when publishing to main.

Issues found:

  • plugins/awesome-copilot/agents/ contains 1 file(s): meta-agentic-project-scaffold.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/awesome-copilot/commands/ contains 4 file(s): suggest-awesome-github-copilot-agents.md, suggest-awesome-github-copilot-instructions.md, suggest-awesome-github-copilot-prompts.md, suggest-awesome-github-copilot-skills.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/azure-cloud-development/agents/ contains 7 file(s): azure-logic-apps-expert.md, azure-principal-architect.md, azure-saas-architect.md, azure-verified-modules-bicep.md, azure-verified-modules-terraform.md, terraform-azure-implement.md, terraform-azure-planning.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/azure-cloud-development/commands/ contains 2 file(s): az-cost-optimize.md, azure-resource-health-diagnose.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/cast-imaging/agents/ contains 3 file(s): cast-imaging-impact-analysis.md, cast-imaging-software-discovery.md, cast-imaging-structural-quality-advisor.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/clojure-interactive-programming/agents/ contains 1 file(s): clojure-interactive-programming.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/clojure-interactive-programming/commands/ contains 1 file(s): remember-interactive-programming.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/context-engineering/agents/ contains 1 file(s): context-architect.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/context-engineering/commands/ contains 3 file(s): context-map.md, refactor-plan.md, what-context-needed.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/copilot-sdk/skills/ contains 1 file(s): copilot-sdk. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/csharp-dotnet-development/agents/ contains 1 file(s): expert-dotnet-software-engineer.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/csharp-dotnet-development/commands/ contains 8 file(s): aspnet-minimal-api-openapi.md, csharp-async.md, csharp-mstest.md, csharp-nunit.md, csharp-tunit.md, csharp-xunit.md, dotnet-best-practices.md, dotnet-upgrade.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/csharp-mcp-development/agents/ contains 1 file(s): csharp-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/csharp-mcp-development/commands/ contains 1 file(s): csharp-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/database-data-management/agents/ contains 2 file(s): ms-sql-dba.md, postgresql-dba.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/database-data-management/commands/ contains 4 file(s): postgresql-code-review.md, postgresql-optimization.md, sql-code-review.md, sql-optimization.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/dataverse-sdk-for-python/commands/ contains 4 file(s): dataverse-python-advanced-patterns.md, dataverse-python-production-code.md, dataverse-python-quickstart.md, dataverse-python-usecase-builder.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/devops-oncall/agents/ contains 1 file(s): azure-principal-architect.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/devops-oncall/commands/ contains 2 file(s): azure-resource-health-diagnose.md, multi-stage-dockerfile.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/edge-ai-tasks/agents/ contains 2 file(s): task-planner.md, task-researcher.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/frontend-web-dev/agents/ contains 2 file(s): electron-angular-native.md, expert-react-frontend-engineer.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/frontend-web-dev/commands/ contains 2 file(s): playwright-explore-website.md, playwright-generate-test.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/gem-team/agents/ contains 8 file(s): gem-browser-tester.md, gem-devops.md, gem-documentation-writer.md, gem-implementer.md, gem-orchestrator.md, gem-planner.md, gem-researcher.md, gem-reviewer.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/go-mcp-development/agents/ contains 1 file(s): go-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/go-mcp-development/commands/ contains 1 file(s): go-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/java-development/commands/ contains 4 file(s): create-spring-boot-java-project.md, java-docs.md, java-junit.md, java-springboot.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/java-mcp-development/agents/ contains 1 file(s): java-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/java-mcp-development/commands/ contains 1 file(s): java-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/kotlin-mcp-development/agents/ contains 1 file(s): kotlin-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/kotlin-mcp-development/commands/ contains 1 file(s): kotlin-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/mcp-m365-copilot/agents/ contains 1 file(s): mcp-m365-agent-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/mcp-m365-copilot/commands/ contains 3 file(s): mcp-create-adaptive-cards.md, mcp-create-declarative-agent.md, mcp-deploy-manage-agents.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-csharp-dotnet/agents/ contains 1 file(s): openapi-to-application.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-csharp-dotnet/commands/ contains 1 file(s): openapi-to-application-code.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-go/agents/ contains 1 file(s): openapi-to-application.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-go/commands/ contains 1 file(s): openapi-to-application-code.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-java-spring-boot/agents/ contains 1 file(s): openapi-to-application.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-java-spring-boot/commands/ contains 1 file(s): openapi-to-application-code.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-nodejs-nestjs/agents/ contains 1 file(s): openapi-to-application.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-nodejs-nestjs/commands/ contains 1 file(s): openapi-to-application-code.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-python-fastapi/agents/ contains 1 file(s): openapi-to-application.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/openapi-to-application-python-fastapi/commands/ contains 1 file(s): openapi-to-application-code.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/ospo-sponsorship/skills/ contains 1 file(s): sponsor-finder. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/partners/agents/ contains 20 file(s): amplitude-experiment-implementation.md, apify-integration-expert.md, arm-migration.md, comet-opik.md, diffblue-cover.md, droid.md, dynatrace-expert.md, elasticsearch-observability.md, jfrog-sec.md, launchdarkly-flag-cleanup.md, lingodotdev-i18n.md, monday-bug-fixer.md, mongodb-performance-advisor.md, neo4j-docker-client-generator.md, neon-migration-specialist.md, neon-optimization-analyzer.md, octopus-deploy-release-notes-mcp.md, pagerduty-incident-responder.md, stackhawk-security-onboarding.md, terraform.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/php-mcp-development/agents/ contains 1 file(s): php-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/php-mcp-development/commands/ contains 1 file(s): php-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/polyglot-test-agent/agents/ contains 8 file(s): polyglot-test-builder.md, polyglot-test-fixer.md, polyglot-test-generator.md, polyglot-test-implementer.md, polyglot-test-linter.md, polyglot-test-planner.md, polyglot-test-researcher.md, polyglot-test-tester.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/polyglot-test-agent/skills/ contains 1 file(s): polyglot-test-agent. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-apps-code-apps/agents/ contains 1 file(s): power-platform-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-apps-code-apps/commands/ contains 1 file(s): power-apps-code-app-scaffold.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-bi-development/agents/ contains 4 file(s): power-bi-data-modeling-expert.md, power-bi-dax-expert.md, power-bi-performance-expert.md, power-bi-visualization-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-bi-development/commands/ contains 4 file(s): power-bi-dax-optimization.md, power-bi-model-design-review.md, power-bi-performance-troubleshooting.md, power-bi-report-design-consultation.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-platform-mcp-connector-development/agents/ contains 1 file(s): power-platform-mcp-integration-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/power-platform-mcp-connector-development/commands/ contains 2 file(s): mcp-copilot-studio-server-generator.md, power-platform-mcp-connector-suite.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/project-planning/agents/ contains 7 file(s): implementation-plan.md, plan.md, planner.md, prd.md, research-technical-spike.md, task-planner.md, task-researcher.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/project-planning/commands/ contains 8 file(s): breakdown-epic-arch.md, breakdown-epic-pm.md, breakdown-feature-implementation.md, breakdown-feature-prd.md, create-github-issues-feature-from-implementation-plan.md, create-implementation-plan.md, create-technical-spike.md, update-implementation-plan.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/python-mcp-development/agents/ contains 1 file(s): python-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/python-mcp-development/commands/ contains 1 file(s): python-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/ruby-mcp-development/agents/ contains 1 file(s): ruby-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/ruby-mcp-development/commands/ contains 1 file(s): ruby-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/rug-agentic-workflow/agents/ contains 3 file(s): qa-subagent.md, rug-orchestrator.md, swe-subagent.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/rust-mcp-development/agents/ contains 1 file(s): rust-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/rust-mcp-development/commands/ contains 1 file(s): rust-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/security-best-practices/commands/ contains 1 file(s): ai-prompt-engineering-safety-review.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/software-engineering-team/agents/ contains 7 file(s): se-gitops-ci-specialist.md, se-product-manager-advisor.md, se-responsible-ai-code.md, se-security-reviewer.md, se-system-architecture-reviewer.md, se-technical-writer.md, se-ux-ui-designer.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/structured-autonomy/commands/ contains 3 file(s): structured-autonomy-generate.md, structured-autonomy-implement.md, structured-autonomy-plan.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/swift-mcp-development/agents/ contains 1 file(s): swift-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/swift-mcp-development/commands/ contains 1 file(s): swift-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/technical-spike/agents/ contains 1 file(s): research-technical-spike.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/technical-spike/commands/ contains 1 file(s): create-technical-spike.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/testing-automation/agents/ contains 4 file(s): playwright-tester.md, tdd-green.md, tdd-red.md, tdd-refactor.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/testing-automation/commands/ contains 5 file(s): ai-prompt-engineering-safety-review.md, csharp-nunit.md, java-junit.md, playwright-explore-website.md, playwright-generate-test.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/typescript-mcp-development/agents/ contains 1 file(s): typescript-mcp-expert.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/typescript-mcp-development/commands/ contains 1 file(s): typescript-mcp-server-generator.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.
  • plugins/typespec-m365-copilot/commands/ contains 3 file(s): typespec-api-operations.md, typespec-create-agent.md, typespec-create-api-plugin.md. Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. Agent, command, and skill files are materialized automatically during publish to main.

How to fix

It looks like your branch may be based on main (which contains materialized files). Here are two options:

Option 1: Rebase onto staged (recommended if you have few commits)

git fetch origin staged
git rebase --onto origin/staged origin/main overlapping-items-workflow
git push --force-with-lease

Option 2: Remove the extra files manually

# Remove materialized files from plugin directories
find plugins/ -mindepth 2 -maxdepth 2 -type d \( -name agents -o -name commands -o -name skills \) -exec rm -rf {} +
# Remove any symlinks
find plugins/ -type l -delete
git add -A && git commit -m "fix: remove materialized plugin files"
git push

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

This PR adds a new GitHub Agentic Workflow that performs weekly automated scans to identify potential duplicate resources across agents, prompts, instructions, and skills, creating GitHub issues with grouped findings while excluding previously-reviewed pairs.

Changes:

  • New agentic workflow with weekly scheduling and manual trigger support
  • Automated duplicate detection using name, description, and content similarity
  • Integration with existing duplicate-review issues to avoid re-flagging accepted pairs

issues: read
tools:
github:
toolsets: [repos, issues]
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

The field name toolsets is ambiguous in the GitHub tools context. Based on GitHub API conventions, this should likely be scopes or endpoints to clearly indicate which GitHub API capabilities are being requested.

Suggested change
toolsets: [repos, issues]
scopes: [repos, issues]

Copilot uses AI. Check for mistakes.
Weekly scheduled workflow that scans agents, prompts, instructions, and
skills for potential duplicates based on name, description, and content
similarity. Reports findings as a GitHub issue with task list checkboxes
for review. Checks previous duplicate-review issues to exclude known
accepted pairs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@aaronpowell aaronpowell force-pushed the overlapping-items-workflow branch from 5878e21 to 3436da9 Compare February 19, 2026 04:55
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