executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
package-extensionsBuild and diagnose GraphRAG lower-level package extensions: custom caches, storage and table providers, input readers, chunkers, vector stores and filters, LLM completion/embedding providers, tokenizers, metrics/retry/rate-limit/template factories, graph helpers, and indexing workflow factories.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when the task mentions custom providers, factory registration, extension points, offline mocks, graph helper validation, vector-store filters, timestamp/date fields, chunkers, or low-level package diagnostics.
For user-facing YAML/config selection, route to ../configuration-data/. For indexing orchestration or running pipelines, route to ../indexing/. For query APIs and result-table requirements, route to ../querying/.
GraphRAG package extensions usually follow the same pattern:
register_* function.create_* helper so GraphRAG instantiates it.The shared factory base supports scope="transient" and scope="singleton". create() removes init args whose value is None, so use a sentinel or explicit default if an initializer must distinguish "unset" from None. Singleton instances are cached by strategy plus init args; avoid singleton scope for mutable per-run state unless the init args fully identify the state.
graphrag_cache.Cache, register with register_cache(type, initializer, scope="transient"), create with create_cache(CacheConfig(...), storage=...).graphrag_storage.Storage, register with register_storage(type, initializer), create with create_storage(StorageConfig(...)).graphrag_storage.tables.TableProvider, register with register_table_provider(type, initializer), create with create_table_provider(TableProviderConfig(...), storage=...).graphrag_input.InputReader, register with register_input_reader(type, initializer), create with create_input_reader(InputConfig(...), storage).graphrag_chunking.Chunker, register with register_chunker(type, initializer), create with create_chunker(ChunkingConfig(...), encode=..., decode=...).graphrag_vectors.VectorStore, register with register_vector_store(type, initializer), create with create_vector_store(VectorStoreConfig(...), IndexSchema(...)).register_completion or register_embedding; model config model_extra fields are passed through to initializers.register_* and create_* helpers.PipelineFactory.register(name, workflow) and methods with PipelineFactory.register_pipeline(name, [workflow_names...]).compute_degree, connected_components, largest_connected_component, and stable_lcc for offline graph checks.create_*; duplicate keys overwrite the previous initializer in the process.--help, factory registration, and one deterministic operation.../configuration-data/.scripts/register_mock_extensions.py demonstrates offline custom storage, cache, input reader, vector store, and direct factory patterns.scripts/validate_graph_helpers.py checks degree, connected components, stable LCC normalization/order, timestamp explosion, and filter expressions on deterministic in-memory data.Both scripts are examples for future agents to copy or adapt inside their own workspace. They do not require external services.
references/factory-extension-recipes.md for concrete registration recipes and design notes.references/package-optional-dependencies.md for guarded dependency and service guidance.references/troubleshooting.md for factory, config, service, vector filter, and graph-helper failures.