Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Graphify knowledge-graph outputs are generated. Keep them out of textual
# diffs and mark them as generated so they don't skew language stats or bloat
# PR reviews. They are regenerable, so on a merge conflict just rebuild:
# graphify update .
graphify-out/graph.json -diff linguist-generated=true
graphify-out/graph.html -diff linguist-generated=true
graphify-out/GRAPH_REPORT.md linguist-generated=true
graphify-out/manifest.json -diff linguist-generated=true
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,12 @@ electron/src/generated/
*storybook.log
storybook-static
documentation.json

# Graphify — the knowledge graph outputs (graph.json/html, GRAPH_REPORT.md,
# manifest.json) ARE committed; ignore only the per-machine internals.
graphify-out/cache/
graphify-out/.graphify_*

# Local Claude Code settings. `graphify claude install` writes machine-specific
# absolute paths and per-tool hooks here, so keep it out of the shared repo.
.claude/settings.json
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ storybook-static/
coverage/
data/
electron/src/generated/
graphify-out/
11 changes: 11 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,14 @@ The app is split into three Electron processes:
- Default branch: `main`. Active development on `develop`. Branch from `develop` using `feat/`, `fix/`, or `chore/` prefixes.
- Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) (enforced by commitlint).
- Pre-push hook runs `sonar:check`; requires a running local SonarQube instance (`docker-compose up -d`).

## graphify

This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.

Rules:

- For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
- If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
- After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
21 changes: 21 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,27 @@ The main branch is `main`, and active development happens on the `develop` branc
npm run dev # Build and run Angular + Electron in dev mode
```

### Knowledge graph (Graphify) — optional

The repo ships a queryable knowledge graph of the codebase in `graphify-out/`
(`graph.json`, an interactive `graph.html`, and `GRAPH_REPORT.md`). AI coding
assistants pick it up automatically (see the `## graphify` section in
`CLAUDE.md`), and you can open `graph.html` in any browser to explore the
architecture — **no setup required to just read it.**

To **regenerate or update** the graph you need the Graphify CLI once per
machine (it is a global tool, not an npm dependency, so it is not installed by
`npm install`):

```bash
uv tool install graphifyy # or: pipx install graphifyy
graphify update . # refresh the graph after code changes (AST-only, no API cost)
```

Optional, per-developer: `graphify claude install` wires auto-hooks into your
**local** `.claude/settings.json` (git-ignored — it contains machine-specific
paths, so don't commit it).

## Development Workflow

### Creating a Branch
Expand Down
7 changes: 6 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ import angular from "angular-eslint";

export default defineConfig([
{
ignores: ["vitest.config.ts", "prisma.config.ts", ".storybook/**/*"],
ignores: [
"vitest.config.ts",
"prisma.config.ts",
".storybook/**/*",
"graphify-out/**/*",
],
},
{
files: ["src/**/*.ts"],
Expand Down
Loading
Loading