Add graphify skill, Graph Researcher agent, and graphify instructions.#1518
Open
TechPreacher wants to merge 2 commits intomicrosoft:mainfrom
Open
Add graphify skill, Graph Researcher agent, and graphify instructions.#1518TechPreacher wants to merge 2 commits intomicrosoft:mainfrom
TechPreacher wants to merge 2 commits intomicrosoft:mainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an experimental “Graph Research” workflow to the experimental collection, including a graphify skill (wrapping the upstream graphifyy package), a Graph Researcher agent that queries the graph via MCP tools, and supporting instructions/docs/collection + plugin metadata updates.
Changes:
- Introduces the
graphifyskill with a Python subprocess wrapper, uv/pyproject config, and pytest + fuzz harness tests. - Adds the
Graph Researcheragent andgraphify-out/**instructions for evidence-tagged reporting conventions. - Updates
experimentalandhve-core-allcollection manifests/docs and regenerates plugin README metadata; adds a new docs section underdocs/agents/graphify/.
Reviewed changes
Copilot reviewed 33 out of 36 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| plugins/hve-core-all/README.md | Generated plugin index updated to include graph-researcher agent, graphify skill, and graphify instructions |
| plugins/experimental/README.md | Generated plugin index updated for the experimental collection additions |
| docs/agents/graphify/category.json | Adds a new Docusaurus sidebar category for Graph Research docs |
| docs/agents/graphify/README.md | New documentation page describing the Graph Research workflow and setup |
| docs/agents/README.md | Adds “Graph Research” section to the agents catalog |
| collections/hve-core-all.collection.yml | Adds new experimental agent/instruction/skill to the all-up collection manifest |
| collections/hve-core-all.collection.md | Documents the new agent/instruction/skill in the all-up collection description |
| collections/experimental.collection.yml | Adds new agent/instruction/skill entries to the experimental manifest |
| collections/experimental.collection.md | Documents the new agent/instruction/skill in the experimental collection description |
| CLAUDE.md | Adds repo guidance for Claude Code sessions (project structure, commands, conventions) |
| .vscode/settings.json | Updates Copilot Chat skill discovery locations (currently has issues) |
| .markdownlint-cli2.jsonc | Ignores .venv/ folders for markdownlint scanning |
| .github/skills/experimental/graphify/uv.lock | Adds locked Python dependency resolution for the new skill |
| .github/skills/experimental/graphify/tests/test_graphify_wrapper.py | Adds pytest coverage for the CLI wrapper behavior |
| .github/skills/experimental/graphify/tests/fuzz_harness.py | Adds a fuzz harness for wrapper validation (currently has issues) |
| .github/skills/experimental/graphify/scripts/graphify_wrapper.py | Implements a thin subprocess wrapper around the graphify CLI |
| .github/skills/experimental/graphify/pyproject.toml | Defines Python project config, dependency groups, ruff/pytest config |
| .github/skills/experimental/graphify/SKILL.md | Skill documentation for building graphs + MCP server registration + operational notes |
| .github/instructions/experimental/graphify.instructions.md | Adds instructions governing graphify-out/** output handling and evidence reporting |
| .github/agents/experimental/graph-researcher.agent.md | Adds agent behavior for MCP tool selection and audit-tagged reporting |
| .cspell.json | Adds allowlist entries for graphify-related terminology |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1518 +/- ##
==========================================
- Coverage 87.44% 84.81% -2.63%
==========================================
Files 68 52 -16
Lines 10335 7093 -3242
==========================================
- Hits 9037 6016 -3021
+ Misses 1298 1077 -221
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This introduces a new agent and supporting skill for structural codebase analysis using knowledge graphs. The `Graph Researcher` agent answers complex structural questions by querying a `graphify`-built knowledge graph, while the `Graphify` skill provides the capability to build and manage these graphs. Key changes include: - Added `Graph Researcher` agent definition and `Graphify` instruction file. - Introduced `graphify` Python skill, including its wrapper, dependencies (`graphifyy`), and fuzz tests. - Updated `experimental` and `hve-core-all` collections to include the new agent and skill. - Added `graphify` and `graphifyy` to the spell check dictionary. - Expanded `chat.agentSkillsLocations` in `.vscode/settings.json`. - Updated `CLAUDE.md` with detailed Python skill conventions for testing and packaging. feat(graphify): document Graph Research agent and workflow feat(graphify): Add fuzz corpus seeds for mode argument parsing Introduces a comprehensive set of seed inputs for the Atheris fuzz harness in `tests/fuzz_harness.py`. These seeds cover various scenarios for the `mode` argument passed to `graphify_wrapper.build_graph`, enhancing the robustness and coverage of its mode parsing logic. The corpus includes seeds for: - Empty and standard inputs - Valid modes (`fast`, `standard`, `deep`) - Unknown modes (expected to raise `ValueError`) - Edge cases like null bytes, unicode characters, and long inputs to test truncation and decoding error paths. feat(graphify): Add code coverage reporting for tests Integrates `pytest-cov` and configures `coverage.py` for the `graphify` experimental skill. This enables measurement and reporting of code coverage during test runs, specifically targeting the Python scripts within the `scripts` directory. The configuration will also show missing lines in the coverage report, aiding in identifying areas needing more test coverage. feat(graphify): Improve table formatting in Graph Research README feat(graphify): Upgrade Python to 3.11 and refine skill development configuration This commit updates the `graphify` experimental skill to require Python 3.11, aligning its dependencies and `ruff` target version. The fuzz harness for the skill is also updated to prevent unintentional execution by only running when explicitly enabled. Furthermore, `.vscode/settings.json` is cleaned up to standardize skill directory exclusions, removing outdated and redundant paths.
07ee4b4 to
15ffabb
Compare
This commit regenerates `uv.lock` to fully align the `graphify` skill's dependencies with the Python 3.11 requirement. It removes Python 3.10-specific package versions, conditional dependencies, and packages that are now part of the Python 3.11 standard library (e.g., `exceptiongroup`, `tomli`, and associated `typing-extensions`).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Description
Adds an experimental
graphifyskill, aGraph Researcheragent, and agraphifyinstructions file under theexperimentalcollection. The skill wraps the upstream MIT-licensedgraphifyyPyPI package (pinned0.5.4) to build knowledge graphs over a codebase and expose them via MCP. The agent answers structural questions ("what depends on X", "what connects A and B") by querying the resulting graph throughmcp_graphify_*tools, with audit-tag (EXTRACTED/INFERRED/AMBIGUOUS) reporting and confidence-score handling. Includespyproject.toml, Atheris fuzz harness,pytesttests, Docusaurus docs page, cspell allowlist entries, collection manifest updates, and regenerated plugin outputs forexperimentalandhve-core-all.Related Issue(s)
N/A.
Type of Change
Code & Documentation:
AI Artifacts:
.github/instructions/*.instructions.md).github/agents/*.agent.md).github/skills/*/SKILL.md)Other:
.ps1,.sh,.py) - Python wrapper + tests for the skillSample Prompts (for AI Artifact Contributions)
User Request:
"Use the Graph Researcher to tell me which modules are implicitly affected if I change
auth_middleware.py."Execution Flow:
graphify-out/graph.jsonexists andmcp_graphify_*tools are registered. If missing, surfaces the exact remediation from the skill.mcp_graphify_get_neighborsrather than the broaderquery_graph.EXTRACTEDedges are stated as fact;INFERREDare hedged with confidence;AMBIGUOUSare surfaced as open questions.Output Artifacts:
The skill generates (under target repo's
graphify-out/):The agent itself returns chat output, not files.
Success Indicators:
npm run validate:skillspasses for.github/skills/experimental/graphify/.Testing
npm run validate:skills- skill structure,pyproject.toml, fuzz harness layout.npm run test:py- runstest_graphify_wrapper.py.npm run lint:frontmatter- schema-validates new agent, instructions, skill frontmatter.npm run lint:md+npm run spell-check- markdown + cspell over new docs.npm run plugin:generate+npm run plugin:validate- verify regeneratedplugins/experimental/andplugins/hve-core-all/outputs match collection manifests.npm run lint:md-links- link integrity across new docs.Checklist
Required Checks
docs/agents/graphify/README.md,docs/agents/README.md)*.agent.md,*.instructions.md,SKILL.md,<collection>/<skill>/)experimentalcollection entries)tests/test_graphify_wrapper.py,tests/fuzz_harness.py)AI Artifact Contributions
/prompt-analyzeto review contributionprompt-builderreviewRequired Automated Checks
npm run lint:mdnpm run spell-checknpm run lint:frontmatternpm run validate:skillsnpm run lint:md-linksnpm run lint:psnpm run plugin:generatenpm run docs:testSecurity Considerations
graphifyy==0.5.4reviewed; upstream is MIT-licensed (Safi Shamsi). Skill orchestrates upstream CLI/MCP server only - no vendored source.--mode fast(AST-only, no LLM) for sensitive trees.ANTHROPIC_API_KEYconsumed via env only; never written to artifacts.graphify-out/(incl.cache/of hashed file snapshots) documented as gitignored build output.Additional Notes
experimentalcollection - opt-in for users.plugins/experimental/andplugins/hve-core-all/are generated; do not edit by hand. Regenerate vianpm run plugin:generateafter any artifact or collection manifest change.graphifyyPyPI package name uses doubley; CLI binary is single-ygraphify. Pin matters - upstream iterates fast.