ワンクリックで
graphify
Build, refresh, query, explain, or trace Graphify repo and Vault knowledge.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Build, refresh, query, explain, or trace Graphify repo and Vault knowledge.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
SDD-mode PR-boundary review policy for Pi. The root launches visible reviewer lanes, publishes triage, ends the turn for acknowledgement, then fixes in a separate follow-up. Review is independent of CI.
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
Create a pull request with review, REQ backlinks, push, and CI handoff.
Verify a deployed UI in a browser for interaction, mobile layout, and visuals.
Workflow for /sdd clean — rescuing a rotted spec. Mode-aware behaviors (interactive/auto/unleashed), safety nets, what gets cleaned (incl. per-AC @impl AND @test anchor backfill at parity, gated by enforce_tdd), JUDGMENT auto-resolution rules. Invoked when /sdd clean runs. Requires the spec-driven-development skill for REQ format and Status semantics, and the spec-enforce skill family for the detection mechanics.
| name | graphify |
| description | Build, refresh, query, explain, or trace Graphify repo and Vault knowledge. |
Use this skill for Graphify build, refresh, query, explain, path, and repo/Vault/global graph work.
Hard rules:
graphify label, do not pass --backend, and do not use Gemini/OpenAI/Anthropic/DeepSeek/Kimi/Ollama extraction from this skill.graphify_build tool. Its semanticBackend parameter defaults to DeepSeek (an external provider requiring DEEPSEEK_API_KEY, which is NOT set in this container), so it fails with backend 'deepseek' requires DEEPSEEK_API_KEY. Use the local scripts/flows in this skill instead (build-graphify-ast.sh, safe-graphify-update.sh, graphify cluster-only).Raw/Graphs/. After a local graphify cluster-only . from /home/user/Vault, copy graphify-out/graph.html to Raw/Graphs/vault-graph.html so the seeded Raw/Graphs/Vault Graph.md index link resolves through the SilverBullet .fs/ route. graphify-out/ is excluded from R2 bisync and the .fs/ route, so without the copy the link 404s.file_type + source_file (document/code) or file_type: "concept" with source_file: null; edges carry relation + confidence + confidence_score, identical to repo and global graphs. Never write the legacy type/path/mentions shape - graphify global add label-merges any node lacking source_file, collapsing document identity.graphify-out/.graphify_labels.json; then Graphify regenerates report/html locally from the graph's existing community assignments.subagent tool calls only for uncached Full-mode semantic extraction chunks. Do not run headless semantic extraction for uncached docs/images.Repo graph: <repo>/graphify-out/graph.json
Vault graph: /home/user/Vault/graphify-out/graph.json
Global graph: /home/user/.graphify/global-graph.json
There is normally no /home/user/workspace/graphify-out/graph.json.
Use the first-party native Pi tools for every graphify query - repo, Vault, and cross-repo/global alike:
graphify_query({ question, mode: "bfs" })graphify_query({ question, mode: "dfs" }) or graphify_pathgraphify_explain({ concept })The native tool resolves the graph automatically: the active repo's graph when you are in a cloned repo, otherwise the merged global graph (/home/user/.graphify/global-graph.json, which holds the Vault plus every globally-added repo). You do not pass a graph path - this includes Vault/session/cross-repo memory questions, which resolve to the global graph.
After answering from a graphify_query / graphify_path / graphify_explain result, persist the Q&A back into the graph with graphify save-result so the next update extracts it as a node. For the CLI --graph fallback, the save-result feedback loop (--type query / path_query / explain), and the /graphify path and /graphify explain flows, see references/query.md.
Clone-time prompts must never authorize an automatic graph update. When a cloned repo has no graph, ask the user which graph action they want before running any build:
subagent semantic extraction after detection shows the actual uncached file/subagent counts.graphify-out.When a cloned repo has a stale/unknown existing graph, ask before any update and offer only:
If the user already chose clone-time AST-only, treat that as the graph refresh choice after detection and do not ask the same mode question again. If the user chose clone-time Full semantic, treat it as intent only: after detection, show the actual uncached file/subagent counts and get confirmation before dispatching semantic subagents. Only re-prompt for a different mode if the chosen option is unavailable (for example, Full semantic was chosen but detection finds zero docs/papers/images).
From the repo root:
/root/.local/share/uv/tools/graphifyy/bin/python - <<'PY'
import json
from pathlib import Path
from graphify.detect import detect
Path('.graphify_detect.json').write_text(json.dumps(detect(Path('.').resolve()), indent=2), encoding='utf-8')
PY
/root/.local/share/uv/tools/graphifyy/bin/python - <<'PY'
import json
from pathlib import Path
result = json.loads(Path('.graphify_detect.json').read_text())
print(f"Corpus: {result.get('total_files', 0)} files · ~{result.get('total_words', 0)} words")
for key in ['code', 'document', 'paper', 'image', 'video']:
count = len(result.get('files', {}).get(key, []))
if count:
print(f" {key}: {count}")
PY
If the user asks to ignore a file class (for example images), exclude that class from semantic extraction and/or pass matching --exclude flags to Graphify code-refresh commands. Do not alter code detection.
After detection, present these choices and wait for the user to choose one, unless the current clone-time triage already captured an explicit Full repo AST-only or no-graph choice. If clone-time triage captured Full repo semantic, present only a post-detection cost/count confirmation before any semantic subagents run:
subagent tool calls produce semantic chunks for docs/papers/images, then Graphify consumes local semantic fragments and rebuilds locally.graphify-out.If there are zero docs/papers/images, hide only the semantic option; still offer Architecture graph, Full repo AST-only, and the no-graph option. For repos with more than ~200 files, recommend Architecture graph unless the user explicitly wants exhaustive coverage.
If the user chooses the no-graph option, do not build, update, label, delete, or regenerate any Graphify outputs. Acknowledge and stop.
Use this when the user chooses Architecture graph:
bash /home/user/.pi/agent/scripts/build-graphify-architecture.sh .
The script uses Graphify’s own detect, extract, build, cluster, and report modules after applying generic architecture filters. It does not rewrite Graphify output. It deliberately defers user-facing graph.html and callflow.html until labels exist.
Then label communities using the Local main-session community labels section below. Do not push or present HTML outputs until label apply regenerates them from .graphify_labels.json.
Use this only when the user chooses Full repo AST-only and graphify-out/graph.json is missing:
bash /home/user/.pi/agent/scripts/build-graphify-ast.sh .
The script uses Graphify’s own detect, extract, build, cluster, and report modules only. It does not rewrite Graphify output. It deliberately defers user-facing graph.html and callflow.html until labels exist.
Then label communities using the Local main-session community labels section below. Do not push or present HTML outputs until label apply regenerates them from .graphify_labels.json.
Use this when the user chooses Full repo AST-only, graphify-out/graph.json exists, and source code changed:
bash /home/user/.pi/agent/scripts/safe-graphify-update.sh .
The safety wrapper only sets GRAPHIFY_MAX_WORKERS, applies ulimit -v, and runs upstream graphify update. Any graph.html produced by upstream update is provisional.
Then label communities using the Local main-session community labels section below. Do not push or present HTML outputs until label apply regenerates them from .graphify_labels.json.
Use this when the user chooses Full repo semantic. Pi subagent tool calls produce semantic chunks for the uncached docs/papers/images, then Graphify consumes the local semantic fragments and rebuilds locally. Do not pass a model override when dispatching those subagents - they use the running session model. The full four-step flow (create semantic file list, dispatch subagents, merge chunks into the Graphify cache + local fragment, then rebuild from an AST baseline with build-graphify-ast.sh) lives in references/build.md. Load it only after the post-detection cost/count confirmation passes.
Then label communities using the Local main-session community labels flow below.
This is the only allowed label path in Pi interactive Graphify - never run graphify label. The Pi main session agent prepares a worklist (local-graphify-labels.sh prepare .), inspects each community's nodes/sources, writes unique 2–6 word names to graphify-out/.graphify_labels.json, then applies them (local-graphify-labels.sh apply .), which regenerates GRAPH_REPORT.md + the final labeled graph.html + callflow.html without reclustering. Every completed build/update must finish by running label apply. See references/labels.md for the worklist/naming rules, the apply-script guarantees, and the callflow-html fallback.
After build/refresh, verify:
graphify-out/graph.json existsgraphify-out/GRAPH_REPORT.md existsgraphify-out/graph.html existsgraphify-out/callflow.html existsgraphify-out/.graphify_labels.json exists and has complete, unique, non-placeholder, non-numbered labels for all communitiesMerge into the global graph:
flock -w 5 /tmp/graphify-global.lock graphify global add graphify-out/graph.json --as "$(basename "$PWD")"
Commit only durable outputs when the user can push:
graphify-out/graph.jsongraphify-out/GRAPH_REPORT.mdgraphify-out/graph.htmlgraphify-out/.graphify_labels.jsongraphify-out/callflow.htmlgraphify-out/wiki/Do not commit caches, manifests, chunks, or .graphify_* intermediates other than .graphify_labels.json unless explicitly asked.
Ensure .gitattributes contains:
graphify-out/graph.json merge=graphify