ワンクリックで
core-research-tool
Research the Community Core codebase to understand implementations, architecture, and feature behavior
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Research the Community Core codebase to understand implementations, architecture, and feature behavior
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | core-research-tool |
| description | Research the Community Core codebase to understand implementations, architecture, and feature behavior |
Perform deep research on the Core codebase to develop SME-level understanding.
Ask the user what they want to research. Classify the goal and plan your approach:
| Research type | Focus areas | Depth target |
|---|---|---|
| Implementation lookup | Steps 2-4, then 6 | Find the code, understand its contract and behavior |
| Architecture question | Steps 2-3, then 5 | Map module boundaries, dependencies, and extension points |
| Feature trace | Steps 2-4 in sequence | Follow data/control flow end-to-end, understand each layer |
| Historical context | Steps 2-3, then 7 | Understand why code exists and how it evolved |
Before diving into code, understand WHAT you're researching:
Search for documentation. Look for README files, package-info.java, or Javadoc in the relevant module.
Identify the core abstractions. What are the key interfaces and classes? What problem do they solve?
Understand the domain vocabulary. Key terms in Core:
engine/api/)Read the interfaces before implementations. Interfaces define contracts; implementations are details.
Start broad, then narrow. Iterate until you find the right code.
Semantic search first:
code_search: "Find where table update notifications are propagated"
Exact symbol search when you know names:
grep_search: Query="TableUpdateListener" SearchPath="{repo_root}"
grep_search: Query="implements UpdateGraph" SearchPath="{repo_root}"
If search returns nothing useful:
If search returns too much:
For each significant class/method, understand:
*Test.java files.*Configuration.java or properties.Key file types to examine:
*Configuration.java — configuration schemas and defaults*Service.java, *Handler.java — core business logic*Test.java — expected behavior and edge cases*.gradle — module dependenciesWhen to go deeper:
When to stop:
For architecture questions, build a mental model:
*.gradle for dependencies.Common architectural patterns:
Configuration flow:
props/*.prop files or environment → Configuration/ utilities → Runtime component
gRPC service flow:
proto/proto-backplane-grpc/*.proto → generated Java → server/src/.../server/**/*ServiceGrpcImpl.java → java-client/ or py/client/
Table update flow:
Source data change → UpdateGraph cycle → TableUpdateListener.onUpdate → Downstream table update → Barrage → UI refresh
For feature traces, follow data/control through all layers:
server/), UI action (web/), or Python/Groovy API (py/)*ServiceGrpcImpl.java in server/src/main/java/io/deephaven/server/*/engine/table/ or extensions/ColumnSource, RowSet in engine/api/Example trace (client executes a table operation via gRPC):
User calls table.where("Price > 100") in py/client/pydeephaven
→ Client sends gRPC request to server
→ server/src/.../table/ops/TableServiceGrpcImpl receives request
→ engine/table/impl/QueryTable.where() creates WhereListener
→ WhereFilter evaluates condition against ColumnSource data
→ Result table registered with UpdateGraph for live updates
→ Barrage streams result back to client
Iterate until you can explain:
For historical context or debugging:
// turbo
git log --oneline -n 20 -- {path}
// turbo
git blame {file} | head -50
// turbo
git log -S "{symbol}" --oneline -n 10
Useful patterns:
git log --grep="fix" -- {file} — find bug fixesgit log --grep="{feature}" --oneline — feature historygit show {commit} — understand a specific changeWhat to look for:
Before reporting, verify your mental model:
Report comprehensively:
@path:line format. Prioritize by importance.Quality bar: Could someone unfamiliar with the codebase read your synthesis and understand the feature/architecture well enough to modify it?
| Research goal | Start here |
|---|---|
| Table operations | engine/table/src/main/java/io/deephaven/engine/table/impl/ |
| Table API/interfaces | engine/api/src/main/java/io/deephaven/engine/table/ |
| Live updates | engine/updategraph/src/main/java/io/deephaven/engine/updategraph/ |
| Row/column data | engine/chunk/, engine/rowset/, engine/vector/ |
| Server/gRPC | server/src/main/java/io/deephaven/server/ |
| gRPC definitions | proto/proto-backplane-grpc/ |
| Web UI | web/client-ui/, web/client-api/ |
| Python integration | py/server/, Integrations/ |
| Data connectors | extensions/ (parquet, kafka, iceberg, arrow, etc.) |
| Authentication | authentication/, authorization/ |
| Configuration | Configuration/, props/ |
{module-name}/build.gradle (e.g., server/build.gradle){parent}/{sub-module}/build.gradle
engine/ — core table engine modulesextensions/ — data format and connector modulesserver/ — gRPC server modulesweb/ — web client modulespy/ — Python integration modulesengine/api/src/main/java/io/deephaven/engine/table/Table, TableDefinition, ColumnSource, RowSet, TableUpdateListener, TableUpdateengine/table/src/main/java/io/deephaven/engine/table/impl/QueryTable, BaseTable, WhereListener, SelectColumn, ColumnSource implementationsselect/, sources/, join/, by/, sort/engine/updategraph/src/main/java/io/deephaven/engine/updategraph/UpdateGraph, NotificationQueue, LogicalClock, UpdateSourceRegistrarengine/chunk/src/main/java/io/deephaven/chunk/Chunk, WritableChunk, ChunkType — efficient bulk data transferengine/rowset/src/main/java/io/deephaven/engine/rowset/RowSet, WritableRowSet, RowSetFactory, RowSequenceserver/src/main/java/io/deephaven/server/*ServiceGrpcImpl (TableServiceGrpcImpl, SessionServiceGrpcImpl, etc.)session/, table/, arrow/, barrage/proto/proto-backplane-grpc/src/main/proto/deephaven_core/proto/.proto files define all client-server communicationextensions/parquet/table/src/main/java/io/deephaven/parquet/table/ParquetTools, ParquetTableWriterextensions/kafka/src/main/java/io/deephaven/kafka/KafkaTools, KafkaStreamPublisher (in ingest/ subpackage)extensions/iceberg/src/main/java/io/deephaven/iceberg/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/BarrageMessageWriter, BarrageOptions, BarrageSubscriptionOptionsextensions/arrow/src/main/java/io/deephaven/extensions/arrow/web/client-api/src/main/java/io/deephaven/web/client/api/JsTable, JsSession, WorkerConnectiondeephaven/web-client-ui repositoryjava-client/session/src/main/java/io/deephaven/client/Session, TableHandle, FlightSessionpy/client/pydeephaven/py/server/deephaven/table.py, dtypes.py, time.py, plot/Configuration/src/main/java/io/deephaven/configuration/authentication/src/main/java/io/deephaven/auth/authentication/example-providers/authorization/src/main/java/io/deephaven/auth/Plot/src/main/java/io/deephaven/plot/Figure, Axes, SeriesIntegrations/src/main/java/io/deephaven/integrations/python/, groovy/ModelFarm/src/main/java/io/deephaven/modelfarm/Configuration flow:
props/*.prop or environment → Configuration/ → Runtime component
gRPC service flow:
proto/proto-backplane-grpc/*.proto → generated Java → server/src/.../server/**/*ServiceGrpcImpl.java → java-client/ or py/client/
Table update flow:
Source change → UpdateGraph.requestRefresh → Notification cycle → TableUpdateListener.onUpdate → Downstream tables → Barrage → Client