18 results

on your machine

skills

Knossos

Inspect dependencies, change impact and architecture rules from a local graph.

Knossos (Κνωσός) is a Bronze Age palace on Crete, associated with the Labyrinth in Greek mythology.
On this pageWhat it does

What it does ​

Dependency analysis from source alone must be repeated in each session and can produce incomplete results. Knossos scans the repository into a local graph of components and their relationships, with file and line references for each. Relationships that static analysis cannot establish conclusively include confidence and origin labels.

In Claude Code, /knossos opens the graph in a live pane beside your session. Hooks also add short context notes after relevant file reads, edits and commits: dependent files, applicable rules and related tests.

Claude Code with the Knossos pane, architecture tabs, component search, change impact and a session diff
Open /knossos to inspect architecture, find a component and review session changes.

Context notes for Claude Code ​

Four types of single-line note are added at specific points in a session. Each note appears once for the relevant event and does not block tool calls.

NoteTrigger
Readafter a Read of a file with many dependents or an applicable policy
editafter an edit of a file with many dependents that did not receive a Read note
turn endafter a turn that edited files, once it is scanned: the boundary violations it introduced and the tests that reach its changes
commitafter a commit, summarising remaining effects of the session's changes

A Read note for a file with many dependents and an applicable boundary policy:

text
knossos: src/Query/ResultEnvelope.php (core) has 47 dependent files. Policy: core may not depend on php-worker, tests.

And after a commit:

text
knossos: this session's changes carry 1 changed file no test reaches (src/Kernel.php); 1 dependency cycle new since the session began (Router → Kernel). Check them before you push.

Before an edit, knossos_context can retrieve a file's boundary, applicable rules, dependents, related tests, latest commits and session change status in one tool call.

Each session starts with a short brief: whether the graph still matches the files, the project's rules and recorded notes. A routing skill specifies when to use the graph and when to search source text with grep.

The pane ​

/knossos opens the project's architecture on eight tabs: Overview, Hubs, Boundaries, Cycles, Issues, Changes, Branch and Churn. It opens on Overview.

Overview tab with session changes, boundary and language composition, dependency concentration and cross-boundary flows
Overview: scan changes, session changes and dependency distribution.

Hubs lists the most depended-on components. On a wide pane the marked one's neighbourhood stands beside the list, so you can inspect its dependencies without leaving the tab.

Hubs tab with ResultEnvelope selected and its dependencies beside the component list
Hubs: components with the most dependents and the selected component’s dependency neighbourhood.

Cycles draws each dependency cycle as a row of boxes, from its first member back to the start.

Cycles tab with a 13-component dependency cycle and the complete cycle list
Cycles: dependencies between cycle members, including the return to the first member.

After a turn that edited files, one line above the prompt reports the change impact:

text
knossos · 2 files → 37 dependents · 4 tests · as of 12s ago · reaching core, http +1

Changes holds the rest: every file changed since the session began, its dependents, the tests that reach it, and its diff.

Changes tab with hooks/lib/paths.ts, two dependent files, no related tests and the session diff
Changes: modified files, dependent files, related tests and session diffs.

Branch compares the checkout with its merge base, so you see what a branch added before you open a pull request.

Branch tab with new cross-boundary dependencies, hub growth, dead-code candidates and churn hotspots relative to the merge base with main
Branch: changes relative to the merge base, including boundary crossings and dead-code candidates.

Every component and file has a detail view with dependency impact displayed as rings. Use the finder to locate a component by name.

Component finder with ResultEnv entered and 20 matches, with ResultEnvelope selected
Press f, enter part of a component name and press Enter to open the detail view.

A live watcher, one per project and shared by your sessions, rescans as files change, so the pane and the notes follow edits made by anyone. The pane does not block edits or initiate turns. If a prerequisite is missing, pane output is omitted.

Quick start ​

Knossos is not yet published to Packagist or any container registry, so install it from a checkout. You need PHP 8.3 or newer, Node 22 or newer, Python 3.11 or newer, Composer 2 and Git. Cargo 1.82 or newer is optional and adds Rust scanning.

Run the installer from the project you want to scan first:

bash
git clone https://github.com/AraneaDev/knossos.git /absolute/path/to/knossos
cd /absolute/path/to/your-project
/absolute/path/to/knossos/tools/install

It creates the data directory ~/.knossos with a roots file that allows this project, scans it, and registers the MCP server with Claude Code at user scope. Then install the plugin, which carries the pane, the notes, the brief and the skill:

bash
ln -s /absolute/path/to/knossos/bin/knossos ~/.local/bin/knossos
knossos install-agent-plugin                                        # preview
knossos install-agent-plugin --data-dir="$HOME/.knossos" --execute

Start a new session and type /knossos.

Marketplace installation is not supported. A marketplace clone lacks vendor/, which is required to run the bundled knossos command.

MCP, CLI and CI integration ​

MCP clients. The graph is available through 33 MCP tools: impact analysis, call sites, flows between components, cycles, hubs, dead-code candidates, change review, test impact, snapshots and trends. Codex and any client that takes the common mcpServers stdio entry can use them. The pane and the notes are Claude Code hooks and do not run elsewhere.

The CLI. Every tool except server_info is also a command, with --json for scripts:

bash
knossos impact-analysis <project-id> 'App\Billing\Invoice'
knossos review-diff <project-id> --base-ref=main --policies=architecture-policies.json
knossos watch /absolute/path/to/project

CI. Boundary policies say which part of the codebase may depend on which, and quality budgets cap regressions such as new cycles or boundary violations against a reviewed baseline:

bash
knossos quality-gate <project-id> <baseline-snapshot> --budgets=knossos-budgets.json --sarif --json

Exit code 0 means every evaluated gate passed, 1 that a gate failed, and 2 that the result could not be evaluated, and --sarif outputs findings in SARIF format for CI integration.

Languages ​

LanguageExtractionFramework enrichment
PHP 8.3+Declarations, inheritance, calls, construction, types, injectionLaravel, Symfony
TypeScript/JavaScriptCompiler symbol resolution, imports, calls, types, project references, Vue/Svelte/Astro componentsNext.js, React, Vue, stores, endpoints
Python 3.11+Standard-library AST in an isolated interpreter; manifests, packages, calls, routesFastAPI, Django, Flask, Celery
Rust 1.82+syn parsing; Cargo manifests, cross-file impls, routes. Never invokes cargo or rustcaxum, actix, Rocket

Multi-language repositories produce one graph for impact analysis across language boundaries. Each relationship has a confidence level: certain, probable or possible. A path's confidence is limited by the lowest-confidence relationship along that path.

Scan isolation and access limits ​

Scanning never installs dependencies, executes project code or boots a framework. Workers run supervised and resource-capped, and their output is untrusted until it passes validation.

The server reads only the roots you allowed. Knossos never widens that list during normal operation: only the installer and knossos allow-root --execute write it.

A failed scan is never activated. The last complete scan stays the graph you query, and the database is derived from the source, so it can always be rebuilt.