* feat: add Devin CLI support - Add 'devin' to _PLATFORM_CONFIG with skill-devin.md - Override _platform_skill_destination for devin: user scope -> ~/.config/devin/skills/graphify/SKILL.md project scope -> .devin/skills/graphify/SKILL.md - Add _DEVIN_RULES + _devin_rules_install/_uninstall: writes .windsurf/rules/graphify.md (always-on context) Devin reads .windsurf/rules/*.md the same way Windsurf IDE does - Add graphify devin install [--project] / uninstall subcommand - Create graphify/skill-devin.md with Devin YAML frontmatter (name, argument-hint, model, allowed-tools, triggers) - Add 21 tests in tests/test_devin.py covering user/project scope - Register _DEVIN_RULES in test_install_strings.py policy checks - Update README.md and pyproject.toml to list Devin CLI Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> * expand skill-devin.md to full feature parity with skill-pi.md Rebuilds skill-devin.md from ~267 lines to 1176 lines, matching the depth of other mature platform skills (pi, droid, codex). Added: - Parallel Part A + B dispatch guidance (AST alongside semantic subagents) - Full subagent extraction prompt with rationale, semantic similarity, hyperedge, and confidence_score rules - Extraction cache check (Step B0) and cache save/load flow - --mode deep, --svg, --graphml, --neo4j/--neo4j-push, --mcp, --watch - /graphify path, /graphify explain, /graphify add, /graphify query - BFS vs DFS traversal with --dfs and --budget flags - Token reduction benchmark step - --update (incremental) and --cluster-only pipelines with graph diff - Video/audio transcription (Step 2.5) with Whisper domain-hint strategy - git commit hook section - Always-on Devin rules section referencing `graphify devin install` Updated test_devin.py: corrected python_c_syntax assertion to match the interpreter-detection pattern used across all mature skills. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: vishal-gandhi <ivishalgandhi@users.noreply.github.com> Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
124 lines
3.7 KiB
TOML
124 lines
3.7 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "graphifyy"
|
|
version = "0.8.18"
|
|
description = "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph"
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
keywords = ["claude", "claude-code", "codex", "opencode", "cursor", "gemini", "aider", "kiro", "pi", "devin", "knowledge-graph", "rag", "graphrag", "obsidian", "community-detection", "tree-sitter", "leiden", "llm"]
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"networkx",
|
|
"datasketch",
|
|
"rapidfuzz",
|
|
"tree-sitter>=0.23.0",
|
|
"tree-sitter-python",
|
|
"tree-sitter-javascript",
|
|
"tree-sitter-typescript",
|
|
"tree-sitter-go",
|
|
"tree-sitter-rust",
|
|
"tree-sitter-java",
|
|
"tree-sitter-groovy",
|
|
"tree-sitter-c",
|
|
"tree-sitter-cpp",
|
|
"tree-sitter-ruby",
|
|
"tree-sitter-c-sharp",
|
|
"tree-sitter-kotlin",
|
|
"tree-sitter-scala",
|
|
"tree-sitter-php",
|
|
"tree-sitter-swift",
|
|
"tree-sitter-lua",
|
|
"tree-sitter-zig",
|
|
"tree-sitter-powershell",
|
|
"tree-sitter-elixir",
|
|
"tree-sitter-objc",
|
|
"tree-sitter-julia",
|
|
"tree-sitter-verilog",
|
|
"tree-sitter-fortran",
|
|
"tree-sitter-bash",
|
|
"tree-sitter-json",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/safishamsi/graphify"
|
|
Repository = "https://github.com/safishamsi/graphify"
|
|
Issues = "https://github.com/safishamsi/graphify/issues"
|
|
|
|
[project.optional-dependencies]
|
|
mcp = ["mcp"]
|
|
neo4j = ["neo4j"]
|
|
pdf = ["pypdf", "markdownify"]
|
|
watch = ["watchdog"]
|
|
svg = ["matplotlib"]
|
|
leiden = ["graspologic; python_version < '3.13'"]
|
|
office = ["python-docx", "openpyxl"]
|
|
google = ["openpyxl"]
|
|
video = ["faster-whisper", "yt-dlp"]
|
|
kimi = ["openai", "tiktoken"]
|
|
ollama = ["openai"]
|
|
bedrock = ["boto3"]
|
|
gemini = ["openai", "tiktoken"]
|
|
openai = ["openai", "tiktoken"]
|
|
sql = ["tree-sitter-sql"]
|
|
all = ["mcp", "neo4j", "pypdf", "markdownify", "watchdog", "graspologic; python_version < '3.13'", "python-docx", "openpyxl", "faster-whisper", "yt-dlp", "matplotlib", "openai", "tiktoken", "boto3", "tree-sitter-sql"]
|
|
|
|
[project.scripts]
|
|
graphify = "graphify.__main__:main"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"bandit>=1.9.4",
|
|
"build>=1.5.0",
|
|
"hypothesis>=6.152.7",
|
|
"nuitka>=4.1",
|
|
"patchelf>=0.17.2.4 ; sys_platform != 'win32'",
|
|
"pip-audit>=2.10.0",
|
|
"pre-commit>=4.6.0",
|
|
"pyright>=1.1.409",
|
|
"pytest>=9.0.3",
|
|
"pytest-cov>=7.1.0",
|
|
"ruff>=0.15.13",
|
|
"safety>=3.7.0",
|
|
"setuptools>=82.0.1",
|
|
"wheel>=0.47.0",
|
|
]
|
|
|
|
[tool.uv]
|
|
# Install via: uv tool install graphifyy
|
|
# Run without installing: uvx graphifyy install
|
|
package = true
|
|
|
|
[tool.setuptools]
|
|
packages = ["graphify"]
|
|
include-package-data = false
|
|
|
|
[tool.setuptools.package-data]
|
|
graphify = ["skill.md", "skill-codex.md", "skill-opencode.md", "skill-aider.md", "skill-copilot.md", "skill-claw.md", "skill-windows.md", "skill-droid.md", "skill-trae.md", "skill-kiro.md", "skill-vscode.md", "skill-pi.md", "skill-devin.md"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
norecursedirs = [
|
|
"graphify-benchmark", "graphify_eval", "graphify_test",
|
|
"worked", "llm-stack-corpus", "llm-stack-demo", "product-site",
|
|
"scripts", "ebook", ".github", "dist", "build",
|
|
]
|
|
|
|
[tool.bandit]
|
|
skips = ["B404"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py310"
|
|
|
|
[tool.ruff.lint]
|
|
# Keep the committed baseline conservative until upstream adopts a broader lint policy.
|
|
select = ["E9", "F63", "F7", "F82"]
|
|
|
|
[tool.pyright]
|
|
include = ["graphify", "tests"]
|
|
pythonVersion = "3.10"
|
|
typeCheckingMode = "basic"
|