codebeacon 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. codebeacon-0.1.3/.github/CODEOWNERS +1 -0
  2. codebeacon-0.1.3/.github/dependabot.yml +12 -0
  3. codebeacon-0.1.3/.github/workflows/release.yml +49 -0
  4. {codebeacon-0.1.2 → codebeacon-0.1.3}/PKG-INFO +124 -42
  5. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.de.md +120 -35
  6. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.es.md +120 -35
  7. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.fr.md +120 -35
  8. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.ja.md +123 -41
  9. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.ko.md +123 -41
  10. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.md +123 -41
  11. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.pt-BR.md +120 -35
  12. {codebeacon-0.1.2 → codebeacon-0.1.3}/README.zh-CN.md +123 -41
  13. codebeacon-0.1.3/codebeacon/__init__.py +1 -0
  14. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/cli.py +115 -85
  15. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/config.py +0 -2
  16. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/discover/detector.py +30 -16
  17. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/export/mcp.py +3 -1
  18. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/routes.py +1 -1
  19. {codebeacon-0.1.2 → codebeacon-0.1.3/codebeacon}/skill/SKILL.md +26 -25
  20. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon.yaml.example +0 -1
  21. {codebeacon-0.1.2 → codebeacon-0.1.3}/pyproject.toml +1 -1
  22. codebeacon-0.1.2/codebeacon/__init__.py +0 -1
  23. {codebeacon-0.1.2 → codebeacon-0.1.3}/.cursorrules +0 -0
  24. {codebeacon-0.1.2 → codebeacon-0.1.3}/.github/workflows/ci.yml +0 -0
  25. {codebeacon-0.1.2 → codebeacon-0.1.3}/.gitignore +0 -0
  26. {codebeacon-0.1.2 → codebeacon-0.1.3}/AGENTS.md +0 -0
  27. {codebeacon-0.1.2 → codebeacon-0.1.3}/CLAUDE.md +0 -0
  28. {codebeacon-0.1.2 → codebeacon-0.1.3}/LICENSE +0 -0
  29. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/__main__.py +0 -0
  30. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/cache.py +0 -0
  31. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/common/__init__.py +0 -0
  32. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/common/filters.py +0 -0
  33. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/common/symbols.py +0 -0
  34. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/common/types.py +0 -0
  35. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/contextmap/__init__.py +0 -0
  36. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/contextmap/generator.py +0 -0
  37. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/discover/__init__.py +0 -0
  38. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/discover/scanner.py +0 -0
  39. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/export/__init__.py +0 -0
  40. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/export/obsidian.py +0 -0
  41. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/__init__.py +0 -0
  42. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/base.py +0 -0
  43. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/components.py +0 -0
  44. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/dependencies.py +0 -0
  45. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/entities.py +0 -0
  46. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/README.md +0 -0
  47. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/actix.scm +0 -0
  48. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/angular.scm +0 -0
  49. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/aspnet.scm +0 -0
  50. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/django.scm +0 -0
  51. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/express.scm +0 -0
  52. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/fastapi.scm +0 -0
  53. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/flask.scm +0 -0
  54. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/gin.scm +0 -0
  55. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/ktor.scm +0 -0
  56. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/laravel.scm +0 -0
  57. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/nestjs.scm +0 -0
  58. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/rails.scm +0 -0
  59. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/react.scm +0 -0
  60. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/spring_boot.scm +0 -0
  61. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/svelte.scm +0 -0
  62. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/vapor.scm +0 -0
  63. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/queries/vue.scm +0 -0
  64. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/semantic.py +0 -0
  65. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/extract/services.py +0 -0
  66. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/graph/__init__.py +0 -0
  67. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/graph/analyze.py +0 -0
  68. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/graph/build.py +0 -0
  69. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/graph/cluster.py +0 -0
  70. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/graph/enrich.py +0 -0
  71. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/wave.py +0 -0
  72. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/wiki/__init__.py +0 -0
  73. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/wiki/generator.py +0 -0
  74. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/wiki/index.py +0 -0
  75. {codebeacon-0.1.2 → codebeacon-0.1.3}/codebeacon/wiki/templates.py +0 -0
  76. {codebeacon-0.1.2 → codebeacon-0.1.3}/docs/TRANSLATION_STATUS.md +0 -0
  77. {codebeacon-0.1.2 → codebeacon-0.1.3}/public-plan.md +0 -0
  78. {codebeacon-0.1.2/codebeacon → codebeacon-0.1.3}/skill/SKILL.md +0 -0
  79. {codebeacon-0.1.2 → codebeacon-0.1.3}/skill/install.py +0 -0
  80. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/__init__.py +0 -0
  81. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/conftest.py +0 -0
  82. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/actix/main.rs +0 -0
  83. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/angular/app.component.ts +0 -0
  84. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/aspnet/UserController.cs +0 -0
  85. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/django/views.py +0 -0
  86. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/express/userRouter.js +0 -0
  87. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/fastapi/main.py +0 -0
  88. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/flask/app.py +0 -0
  89. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/gin/main.go +0 -0
  90. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/ktor/UserRoutes.kt +0 -0
  91. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/laravel/UserController.php +0 -0
  92. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/nestjs/user.controller.ts +0 -0
  93. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/rails/users_controller.rb +0 -0
  94. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/react/UserPage.tsx +0 -0
  95. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/spring_boot/UserController.java +0 -0
  96. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/sveltekit/+page.svelte +0 -0
  97. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/vapor/routes.swift +0 -0
  98. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/fixtures/vue/UserList.vue +0 -0
  99. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_discover.py +0 -0
  100. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_entities.py +0 -0
  101. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_filters.py +0 -0
  102. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_graph.py +0 -0
  103. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_resolve.py +0 -0
  104. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_routes.py +0 -0
  105. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_services.py +0 -0
  106. {codebeacon-0.1.2 → codebeacon-0.1.3}/tests/test_wiki.py +0 -0
@@ -0,0 +1 @@
1
+ * @Wandererer
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ open-pull-requests-limit: 10
8
+
9
+ - package-ecosystem: "github-actions"
10
+ directory: "/"
11
+ schedule:
12
+ interval: "weekly"
@@ -0,0 +1,49 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ name: Build distribution
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: "3.12"
18
+
19
+ - name: Install build
20
+ run: pip install build
21
+
22
+ - name: Build package
23
+ run: python -m build
24
+
25
+ - name: Upload dist artifacts
26
+ uses: actions/upload-artifact@v4
27
+ with:
28
+ name: dist
29
+ path: dist/
30
+
31
+ publish:
32
+ name: Publish to PyPI
33
+ needs: build
34
+ runs-on: ubuntu-latest
35
+ environment:
36
+ name: pypi
37
+ url: https://pypi.org/project/codebeacon/
38
+ permissions:
39
+ id-token: write # Trusted Publishing (OIDC) — 비밀번호 불필요
40
+
41
+ steps:
42
+ - name: Download dist artifacts
43
+ uses: actions/download-artifact@v4
44
+ with:
45
+ name: dist
46
+ path: dist/
47
+
48
+ - name: Publish to PyPI
49
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codebeacon
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Source code AST analysis tool for AI context generation — unified multi-framework knowledge graph
5
5
  Project-URL: Homepage, https://github.com/codebeacon/codebeacon
6
6
  Project-URL: Repository, https://github.com/codebeacon/codebeacon
@@ -42,14 +42,14 @@ Requires-Dist: pytest>=7.0; extra == 'dev'
42
42
  Description-Content-Type: text/markdown
43
43
 
44
44
  <p align="center">
45
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English"></a>
46
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ko.md"><img src="https://img.shields.io/badge/lang-한국어-red" alt="Korean"></a>
47
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ja.md"><img src="https://img.shields.io/badge/lang-日本語-green" alt="Japanese"></a>
48
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.zh-CN.md"><img src="https://img.shields.io/badge/lang-简体中文-orange" alt="Chinese"></a>
49
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.es.md"><img src="https://img.shields.io/badge/lang-Español-yellow" alt="Spanish"></a>
50
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.fr.md"><img src="https://img.shields.io/badge/lang-Français-blueviolet" alt="French"></a>
51
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.de.md"><img src="https://img.shields.io/badge/lang-Deutsch-lightgrey" alt="German"></a>
52
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.pt-BR.md"><img src="https://img.shields.io/badge/lang-Português_(BR)-brightgreen" alt="Portuguese (Brazil)"></a>
45
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English"></a>
46
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.ko.md"><img src="https://img.shields.io/badge/lang-한국어-red" alt="Korean"></a>
47
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.ja.md"><img src="https://img.shields.io/badge/lang-日本語-green" alt="Japanese"></a>
48
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.zh-CN.md"><img src="https://img.shields.io/badge/lang-简体中文-orange" alt="Chinese"></a>
49
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.es.md"><img src="https://img.shields.io/badge/lang-Español-yellow" alt="Spanish"></a>
50
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.fr.md"><img src="https://img.shields.io/badge/lang-Français-blueviolet" alt="French"></a>
51
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.de.md"><img src="https://img.shields.io/badge/lang-Deutsch-lightgrey" alt="German"></a>
52
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.pt-BR.md"><img src="https://img.shields.io/badge/lang-Português_(BR)-brightgreen" alt="Portuguese (Brazil)"></a>
53
53
  </p>
54
54
 
55
55
  <h1 align="center">codebeacon</h1>
@@ -62,8 +62,8 @@ Description-Content-Type: text/markdown
62
62
  <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/v/codebeacon" alt="PyPI"></a>
63
63
  <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/pyversions/codebeacon" alt="Python"></a>
64
64
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
65
- <a href="https://github.com/codebeacon/codebeacon/stargazers"><img src="https://img.shields.io/github/stars/codebeacon/codebeacon" alt="GitHub Stars"></a>
66
- <a href="https://github.com/codebeacon/codebeacon/commits/main"><img src="https://img.shields.io/github/last-commit/codebeacon/codebeacon" alt="Last Commit"></a>
65
+ <a href="https://github.com/Wandererer/codebeacon/stargazers"><img src="https://img.shields.io/github/stars/Wandererer/codebeacon" alt="GitHub Stars"></a>
66
+ <a href="https://github.com/Wandererer/codebeacon/commits/main"><img src="https://img.shields.io/github/last-commit/Wandererer/codebeacon" alt="Last Commit"></a>
67
67
  </p>
68
68
 
69
69
  ---
@@ -81,8 +81,8 @@ Existing tools solve this partially. Route analyzers map your controllers but mi
81
81
  ## Key Features
82
82
 
83
83
  - **Unified pipeline** — route/controller analysis + knowledge graph in one tool, no manual stitching
84
- - **17 frameworks, 9 languages** — Spring Boot, NestJS, Django, FastAPI, Rails, Express, React, Vue, Angular, Svelte, Gin, Laravel, Actix-Web, ASP.NET Core, Vapor, Ktor, and more
85
- - **Tree-sitter based** — structural AST parsing, not regex; all 17 language grammars included out of the box
84
+ - **24 frameworks, 9 languages** — Spring Boot, NestJS, Django, FastAPI, Flask, Rails, Express, Fastify, Koa, React, Next.js, Vue, Nuxt, Angular, SvelteKit, Gin, Echo, Fiber, Laravel, Actix-Web, Axum, ASP.NET Core, Vapor, Ktor
85
+ - **Tree-sitter based** — structural AST parsing, not regex; all language grammars included out of the box
86
86
  - **Two-pass DI resolution** — Pass 1 extracts local AST nodes; Pass 2 builds a global symbol table and resolves Interface → Implementation mappings that single-pass tools miss
87
87
  - **Wave merge architecture** — files processed in parallel chunks, results merged globally; handles large monorepos without memory blowouts
88
88
  - **Multiple output formats** — JSON knowledge graph, Markdown wiki, Obsidian vault, AI context maps, MCP server
@@ -117,11 +117,11 @@ codebeacon sync # subsequent runs via config
117
117
  |----------|-----------|
118
118
  | Java / Kotlin | Spring Boot, Ktor |
119
119
  | Python | Django, FastAPI, Flask |
120
- | JavaScript / TypeScript | Express, NestJS, React, Vue, Angular, Svelte |
121
- | Go | Gin |
120
+ | JavaScript / TypeScript | Express, Fastify, Koa, NestJS, React, Next.js, Vue, Nuxt, Angular, SvelteKit |
121
+ | Go | Gin, Echo, Fiber |
122
122
  | Ruby | Rails |
123
123
  | PHP | Laravel |
124
- | Rust | Actix-Web |
124
+ | Rust | Actix-Web, Axum |
125
125
  | C# | ASP.NET Core |
126
126
  | Swift | Vapor |
127
127
 
@@ -150,37 +150,106 @@ codebeacon runs a two-pass extraction pipeline:
150
150
 
151
151
  ## Output Structure
152
152
 
153
- After a scan, everything lands in `.codebeacon/`:
153
+ After a scan, context map files are updated at the project root (existing user content is preserved) and the knowledge graph lands in `.codebeacon/`:
154
154
 
155
155
  ```
156
- .codebeacon/
157
- beacon.json full knowledge graph (node-link JSON, queryable)
158
- REPORT.md god nodes, surprising connections, hub files
159
- CLAUDE.md AI context map (also written to project root)
160
- .cursorrules ← Cursor IDE context
161
- AGENTS.md OpenAI Agents / Codex context
162
- wiki/
163
- index.md ← global index (~200 tokens)
164
- overview.md platform stats + cross-project connections
165
- routes.md all routes table
166
- cross-project/
167
- connections.md ← cross-service edges
168
- <project>/
169
- index.md
170
- routes.md
171
- controllers/<Name>.md
172
- services/<Name>.md
173
- entities/<Name>.md
174
- components/<Name>.md
175
- obsidian/ ← Obsidian vault (one note per graph node)
156
+ project-root/
157
+ CLAUDE.md AI context map (codebeacon block merged; user content kept)
158
+ .cursorrules Cursor IDE context (same merge strategy)
159
+ AGENTS.md OpenAI Agents / Codex context (same merge strategy)
160
+ .codebeacon/
161
+ beacon.json full knowledge graph (node-link JSON, queryable)
162
+ REPORT.md ← god nodes, surprising connections, hub files
163
+ wiki/
164
+ index.md global index (~200 tokens)
165
+ overview.md platform stats + cross-project connections
166
+ routes.md ← all routes table
167
+ cross-project/
168
+ connections.md ← cross-service edges
169
+ <project>/
170
+ index.md
171
+ routes.md
172
+ controllers/<Name>.md
173
+ services/<Name>.md
174
+ entities/<Name>.md
175
+ components/<Name>.md
176
+ obsidian/ ← Obsidian vault (one note per graph node)
176
177
  ```
177
178
 
178
179
  ---
179
180
 
181
+ ## AI Integration
182
+
183
+ ### Claude Code Skill (`/codebeacon`)
184
+
185
+ Install codebeacon as a Claude Code slash command:
186
+
187
+ ```bash
188
+ pip install codebeacon
189
+ codebeacon install
190
+ ```
191
+
192
+ This copies `SKILL.md` to `~/.claude/skills/codebeacon/` and registers the `/codebeacon` trigger in `~/.claude/CLAUDE.md`. Restart your Claude Code session, then type `/codebeacon` to scan the current directory.
193
+
194
+ ```
195
+ /codebeacon # scan current directory
196
+ /codebeacon /path/to/project # scan a specific path
197
+ /codebeacon sync # re-scan from codebeacon.yaml
198
+ ```
199
+
200
+ ### MCP Server
201
+
202
+ Run codebeacon as a persistent MCP server so any MCP-compatible client can query your knowledge graph directly.
203
+
204
+ **Step 1 — scan your project:**
205
+ ```bash
206
+ codebeacon scan .
207
+ ```
208
+
209
+ **Step 2 — add to your MCP client config:**
210
+
211
+ **Claude Code** (`.claude.json` in project root or `~/.claude.json` globally):
212
+ ```json
213
+ {
214
+ "mcpServers": {
215
+ "codebeacon": {
216
+ "command": "codebeacon",
217
+ "args": ["serve"]
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ **Cursor** (`~/.cursor/mcp.json`):
224
+ ```json
225
+ {
226
+ "mcpServers": {
227
+ "codebeacon": {
228
+ "command": "codebeacon",
229
+ "args": ["serve", "--dir", "/path/to/.codebeacon"]
230
+ }
231
+ }
232
+ }
233
+ ```
234
+
235
+ **Available MCP tools** once connected:
236
+
237
+ | Tool | Description |
238
+ |------|-------------|
239
+ | `beacon_wiki_index` | Global project overview (routes, services, entities count) |
240
+ | `beacon_wiki_article` | Read a specific wiki article by path |
241
+ | `beacon_query` | Search nodes by label substring |
242
+ | `beacon_path` | Shortest dependency path between two nodes |
243
+ | `beacon_blast_radius` | Upstream callers + downstream affected nodes |
244
+ | `beacon_routes` | List all HTTP routes, filterable by project |
245
+ | `beacon_services` | List all services/classes, filterable by project |
246
+
247
+ ---
248
+
180
249
  ## Installation Options
181
250
 
182
251
  ```bash
183
- pip install codebeacon # all 17 language grammars included
252
+ pip install codebeacon # all language grammars included
184
253
  pip install codebeacon[cluster] # + Leiden community detection (graspologic)
185
254
  pip install --upgrade codebeacon # upgrade to latest version with all dependencies
186
255
  ```
@@ -197,7 +266,7 @@ codebeacon scan <path> [options]
197
266
  codebeacon scan . # current directory
198
267
  codebeacon scan /workspace # workspace root (multi-project)
199
268
  codebeacon scan . --update # incremental: only re-extract changed files
200
- codebeacon scan . --wiki-only # regenerate wiki without re-extracting
269
+ codebeacon scan . --wiki-only # skip re-extraction, regenerate wiki/obsidian/context map from existing beacon.json
201
270
  codebeacon scan . --obsidian-dir <path> # write Obsidian vault to custom location
202
271
  codebeacon scan . --semantic # enable LLM semantic extraction
203
272
  codebeacon scan . --list-only # detect frameworks only, don't extract
@@ -238,7 +307,6 @@ output:
238
307
  dir: .codebeacon
239
308
  wiki: true
240
309
  obsidian: true
241
- graph_html: true
242
310
  context_map:
243
311
  targets: [CLAUDE.md, .cursorrules, AGENTS.md]
244
312
 
@@ -251,6 +319,18 @@ semantic:
251
319
  enabled: false # override with --semantic flag
252
320
  ```
253
321
 
322
+ ### .codebeaconignore
323
+
324
+ Place a `.codebeaconignore` file at your project root to exclude directories or files from scanning. Syntax is the same as `.gitignore` — one pattern per line, `#` for comments.
325
+
326
+ ```
327
+ # .codebeaconignore
328
+ generated/
329
+ build/
330
+ *.generated.ts
331
+ fixtures/
332
+ ```
333
+
254
334
  ---
255
335
 
256
336
  ## How It Compares
@@ -287,14 +367,16 @@ All processing is local. Your source code never leaves your machine.
287
367
 
288
368
  - Tree-sitter AST parsing runs entirely in-process
289
369
  - No telemetry, no analytics, no network calls during normal operation
290
- - The `--semantic` flag (disabled by default) sends code excerpts to your configured LLM API — only enable it explicitly
370
+ - The `--semantic` flag (disabled by default) activates two extraction modes:
371
+ 1. **Structured comment parsing** (no LLM required) — infers cross-references from Javadoc (`@see`, `{@link}`), Python docstrings (`:class:`, `:func:`), and JSDoc (`@see`, `@param` types)
372
+ 2. **LLM inference** (optional) — when `ANTHROPIC_API_KEY` is set, sends code excerpts to the Claude API for deeper relationship inference; only enable it explicitly
291
373
 
292
374
  ---
293
375
 
294
376
  ## Contributing
295
377
 
296
378
  ```bash
297
- git clone https://github.com/codebeacon/codebeacon
379
+ git clone https://github.com/Wandererer/codebeacon
298
380
  cd codebeacon
299
381
  pip install -e ".[dev,cluster]"
300
382
  pytest
@@ -1,14 +1,14 @@
1
1
  <!-- translation-of: README.md | based-on-commit: initial -->
2
2
 
3
3
  <p align="center">
4
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English"></a>
5
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ko.md"><img src="https://img.shields.io/badge/lang-한국어-red" alt="Korean"></a>
6
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ja.md"><img src="https://img.shields.io/badge/lang-日本語-green" alt="Japanese"></a>
7
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.zh-CN.md"><img src="https://img.shields.io/badge/lang-简体中文-orange" alt="Chinese"></a>
8
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.es.md"><img src="https://img.shields.io/badge/lang-Español-yellow" alt="Spanish"></a>
9
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.fr.md"><img src="https://img.shields.io/badge/lang-Français-blueviolet" alt="French"></a>
10
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.de.md"><img src="https://img.shields.io/badge/lang-Deutsch-lightgrey" alt="German"></a>
11
- <a href="https://github.com/codebeacon/codebeacon/blob/main/README.pt-BR.md"><img src="https://img.shields.io/badge/lang-Português_(BR)-brightgreen" alt="Portuguese (Brazil)"></a>
4
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English"></a>
5
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.ko.md"><img src="https://img.shields.io/badge/lang-한국어-red" alt="Korean"></a>
6
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.ja.md"><img src="https://img.shields.io/badge/lang-日本語-green" alt="Japanese"></a>
7
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.zh-CN.md"><img src="https://img.shields.io/badge/lang-简体中文-orange" alt="Chinese"></a>
8
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.es.md"><img src="https://img.shields.io/badge/lang-Español-yellow" alt="Spanish"></a>
9
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.fr.md"><img src="https://img.shields.io/badge/lang-Français-blueviolet" alt="French"></a>
10
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.de.md"><img src="https://img.shields.io/badge/lang-Deutsch-lightgrey" alt="German"></a>
11
+ <a href="https://github.com/Wandererer/codebeacon/blob/main/README.pt-BR.md"><img src="https://img.shields.io/badge/lang-Português_(BR)-brightgreen" alt="Portuguese (Brazil)"></a>
12
12
  </p>
13
13
 
14
14
  <h1 align="center">codebeacon</h1>
@@ -21,8 +21,8 @@
21
21
  <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/v/codebeacon" alt="PyPI"></a>
22
22
  <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/pyversions/codebeacon" alt="Python"></a>
23
23
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
24
- <a href="https://github.com/codebeacon/codebeacon/stargazers"><img src="https://img.shields.io/github/stars/codebeacon/codebeacon" alt="GitHub Stars"></a>
25
- <a href="https://github.com/codebeacon/codebeacon/commits/main"><img src="https://img.shields.io/github/last-commit/codebeacon/codebeacon" alt="Last Commit"></a>
24
+ <a href="https://github.com/Wandererer/codebeacon/stargazers"><img src="https://img.shields.io/github/stars/Wandererer/codebeacon" alt="GitHub Stars"></a>
25
+ <a href="https://github.com/Wandererer/codebeacon/commits/main"><img src="https://img.shields.io/github/last-commit/Wandererer/codebeacon" alt="Last Commit"></a>
26
26
  </p>
27
27
 
28
28
  ---
@@ -40,8 +40,8 @@ Bestehende Tools lösen dieses Problem nur teilweise. Route-Analyzer erfassen Ih
40
40
  ## Hauptfunktionen
41
41
 
42
42
  - **Einheitliche Pipeline** — Routes-/Controller-Analyse + Knowledge Graph in einem Tool, kein manuelles Zusammenführen
43
- - **17 Frameworks, 9 Sprachen** — Spring Boot, NestJS, Django, FastAPI, Rails, Express, React, Vue, Angular, Svelte, Gin, Laravel, Actix-Web, ASP.NET Core, Vapor, Ktor und mehr
44
- - **Auf tree-sitter basierend** — strukturelles AST-Parsing, keine Regex; 17 Sprachgrammatiken standardmäßig enthalten
43
+ - **24 Frameworks, 9 Sprachen** — Spring Boot, NestJS, Django, FastAPI, Flask, Rails, Express, Fastify, Koa, React, Next.js, Vue, Nuxt, Angular, SvelteKit, Gin, Echo, Fiber, Laravel, Actix-Web, Axum, ASP.NET Core, Vapor, Ktor
44
+ - **Auf tree-sitter basierend** — strukturelles AST-Parsing, keine Regex; Sprachgrammatiken standardmäßig enthalten
45
45
  - **2-Pass DI-Auflösung** — Pass 1 extrahiert lokale AST-Knoten; Pass 2 baut eine globale Symboltabelle auf und löst Interface → Implementation-Mappings auf
46
46
  - **Wave-Merge-Architektur** — Dateien werden in parallelen Chunks verarbeitet und global zusammengeführt; auch große Monorepos ohne Speicherprobleme
47
47
  - **Mehrere Ausgabeformate** — JSON-Knowledge-Graph, Markdown-Wiki, Obsidian Vault, KI-Kontextkarten, MCP-Server
@@ -76,11 +76,11 @@ codebeacon sync # Folgeläufe über Konfiguration
76
76
  |---------|-----------|
77
77
  | Java / Kotlin | Spring Boot, Ktor |
78
78
  | Python | Django, FastAPI, Flask |
79
- | JavaScript / TypeScript | Express, NestJS, React, Vue, Angular, Svelte |
80
- | Go | Gin |
79
+ | JavaScript / TypeScript | Express, Fastify, Koa, NestJS, React, Next.js, Vue, Nuxt, Angular, SvelteKit |
80
+ | Go | Gin, Echo, Fiber |
81
81
  | Ruby | Rails |
82
82
  | PHP | Laravel |
83
- | Rust | Actix-Web |
83
+ | Rust | Actix-Web, Axum |
84
84
  | C# | ASP.NET Core |
85
85
  | Swift | Vapor |
86
86
 
@@ -107,33 +107,114 @@ codebeacon führt eine 2-Pass-Extraktionspipeline aus:
107
107
 
108
108
  ## Ausgabestruktur
109
109
 
110
- Nach dem Scan landet alles in `.codebeacon/`:
110
+ Nach dem Scan werden Kontextkarten-Dateien im Projektstammverzeichnis aktualisiert (vorhandener Nutzerinhalt bleibt erhalten) und der Knowledge Graph in `.codebeacon/`:
111
111
 
112
112
  ```
113
- .codebeacon/
114
- beacon.json vollständiger Knowledge Graph (Node-Link-JSON, abfragbar)
115
- REPORT.md God-Nodes, überraschende Verbindungen, Hub-Dateien
116
- CLAUDE.md KI-Kontextkarte (auch im Projektstamm)
117
- .cursorrules ← Cursor-IDE-Kontext
118
- AGENTS.md OpenAI-Agents-/Codex-Kontext
119
- wiki/
120
- index.md
121
- overview.md
122
- routes.md
123
- <project>/
124
- controllers/<Name>.md
125
- services/<Name>.md
126
- entities/<Name>.md
127
- components/<Name>.md
128
- obsidian/ ← Obsidian Vault (eine Notiz pro Graph-Knoten)
113
+ project-root/
114
+ CLAUDE.md KI-Kontextkarte (codebeacon-Block eingemergt; Nutzerinhalt erhalten)
115
+ .cursorrules Cursor-IDE-Kontext (gleiche Merge-Strategie)
116
+ AGENTS.md OpenAI-Agents-/Codex-Kontext (gleiche Merge-Strategie)
117
+ .codebeacon/
118
+ beacon.json vollständiger Knowledge Graph (Node-Link-JSON, abfragbar)
119
+ REPORT.md ← God-Nodes, überraschende Verbindungen, Hub-Dateien
120
+ wiki/
121
+ index.md
122
+ overview.md
123
+ routes.md
124
+ <project>/
125
+ controllers/<Name>.md
126
+ services/<Name>.md
127
+ entities/<Name>.md
128
+ components/<Name>.md
129
+ obsidian/ ← Obsidian Vault (eine Notiz pro Graph-Knoten)
130
+ ```
131
+
132
+ ### .codebeaconignore
133
+
134
+ Platziere eine `.codebeaconignore`-Datei im Projektstammverzeichnis, um Verzeichnisse oder Dateien vom Scan auszuschließen. Gleiche Syntax wie `.gitignore` — ein Muster pro Zeile, `#` für Kommentare.
135
+
136
+ ```
137
+ # .codebeaconignore
138
+ generated/
139
+ build/
140
+ *.generated.ts
141
+ fixtures/
129
142
  ```
130
143
 
131
144
  ---
132
145
 
146
+ ## KI-Integration
147
+
148
+ ### Claude Code Skill (`/codebeacon`)
149
+
150
+ Installiere codebeacon als Claude Code Slash-Befehl:
151
+
152
+ ```bash
153
+ pip install codebeacon
154
+ codebeacon install
155
+ ```
156
+
157
+ Dies kopiert `SKILL.md` nach `~/.claude/skills/codebeacon/` und registriert den `/codebeacon`-Trigger in `~/.claude/CLAUDE.md`. Starte deine Claude Code-Sitzung neu und tippe `/codebeacon`, um das aktuelle Verzeichnis zu scannen.
158
+
159
+ ```
160
+ /codebeacon # aktuelles Verzeichnis scannen
161
+ /codebeacon /path/to/project # bestimmten Pfad scannen
162
+ /codebeacon sync # erneut aus codebeacon.yaml scannen
163
+ ```
164
+
165
+ ### MCP-Server
166
+
167
+ Führe codebeacon als persistenten MCP-Server aus, damit jeder MCP-kompatible Client den Wissensgraphen direkt abfragen kann.
168
+
169
+ **Schritt 1 — Projekt scannen:**
170
+ ```bash
171
+ codebeacon scan .
172
+ ```
173
+
174
+ **Schritt 2 — zur MCP-Client-Konfiguration hinzufügen:**
175
+
176
+ **Claude Code** (`.claude.json` im Projektstamm oder global `~/.claude.json`):
177
+ ```json
178
+ {
179
+ "mcpServers": {
180
+ "codebeacon": {
181
+ "command": "codebeacon",
182
+ "args": ["serve"]
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ **Cursor** (`~/.cursor/mcp.json`):
189
+ ```json
190
+ {
191
+ "mcpServers": {
192
+ "codebeacon": {
193
+ "command": "codebeacon",
194
+ "args": ["serve", "--dir", "/path/to/.codebeacon"]
195
+ }
196
+ }
197
+ }
198
+ ```
199
+
200
+ **Verfügbare MCP-Tools nach Verbindung:**
201
+
202
+ | Tool | Beschreibung |
203
+ |------|--------------|
204
+ | `beacon_wiki_index` | Globale Projektübersicht (Routen, Services, Entitäten) |
205
+ | `beacon_wiki_article` | Wiki-Artikel anhand eines Pfads lesen |
206
+ | `beacon_query` | Knoten per Teilstring-Suche finden |
207
+ | `beacon_path` | Kürzester Abhängigkeitspfad zwischen zwei Knoten |
208
+ | `beacon_blast_radius` | Upstream-Aufrufer und downstream betroffene Knoten |
209
+ | `beacon_routes` | Alle HTTP-Routen auflisten (nach Projekt filterbar) |
210
+ | `beacon_services` | Alle Services/Klassen auflisten (nach Projekt filterbar) |
211
+
212
+ ---
213
+
133
214
  ## Installationsoptionen
134
215
 
135
216
  ```bash
136
- pip install codebeacon # 17 Sprachgrammatiken inklusive
217
+ pip install codebeacon # Sprachgrammatiken inklusive
137
218
  pip install codebeacon[cluster] # + Leiden-Community-Erkennung (graspologic)
138
219
  pip install --upgrade codebeacon # auf die neueste Version mit allen Abhängigkeiten aktualisieren
139
220
  ```
@@ -147,7 +228,7 @@ Java, Kotlin, Python, JavaScript, TypeScript, Go, Ruby, PHP, C#, Rust, Swift, HT
147
228
  ```bash
148
229
  codebeacon scan . # aktuelles Verzeichnis
149
230
  codebeacon scan . --update # inkrementell: nur geänderte Dateien
150
- codebeacon scan . --wiki-only # Wiki ohne Neuextraktion regenerieren
231
+ codebeacon scan . --wiki-only # Extraktion überspringen, Wiki/Obsidian/Kontext aus vorhandenem beacon.json regenerieren
151
232
  codebeacon scan . --semantic # LLM-semantische Extraktion
152
233
  codebeacon scan . --list-only # nur Frameworks erkennen
153
234
 
@@ -193,12 +274,16 @@ codebeacon install # Claude-Code-Skill installieren
193
274
 
194
275
  Alle Verarbeitung erfolgt lokal. Ihr Quellcode verlässt niemals Ihren Rechner. Keine Telemetrie, keine Netzwerkaufrufe im normalen Betrieb.
195
276
 
277
+ - Das Flag `--semantic` (standardmäßig deaktiviert) aktiviert zwei Extraktionsmodi:
278
+ 1. **Strukturierte Kommentaranalyse** (kein LLM erforderlich) — leitet Kreuzreferenzen aus Javadoc (`@see`, `{@link}`), Python-Docstrings (`:class:`, `:func:`) und JSDoc (`@see`, `@param`-Typen) ab
279
+ 2. **LLM-Inferenz** (optional) — bei gesetztem `ANTHROPIC_API_KEY` werden Code-Ausschnitte an die Claude-API gesendet; nur bei expliziter Aktivierung verwenden
280
+
196
281
  ---
197
282
 
198
283
  ## Mitwirken
199
284
 
200
285
  ```bash
201
- git clone https://github.com/codebeacon/codebeacon
286
+ git clone https://github.com/Wandererer/codebeacon
202
287
  cd codebeacon
203
288
  pip install -e ".[dev,cluster]"
204
289
  pytest