claude-config-dashboard 1.7.0__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 (36) hide show
  1. claude_config_dashboard-1.7.0/.claude-plugin/marketplace.json +18 -0
  2. claude_config_dashboard-1.7.0/.claude-plugin/plugin.json +16 -0
  3. claude_config_dashboard-1.7.0/.github/workflows/ci.yml +47 -0
  4. claude_config_dashboard-1.7.0/.github/workflows/release.yml +39 -0
  5. claude_config_dashboard-1.7.0/.gitignore +18 -0
  6. claude_config_dashboard-1.7.0/CHANGELOG.md +101 -0
  7. claude_config_dashboard-1.7.0/LICENSE +21 -0
  8. claude_config_dashboard-1.7.0/PKG-INFO +81 -0
  9. claude_config_dashboard-1.7.0/README.md +58 -0
  10. claude_config_dashboard-1.7.0/claude_config_dashboard/__init__.py +3 -0
  11. claude_config_dashboard-1.7.0/claude_config_dashboard/__main__.py +4 -0
  12. claude_config_dashboard-1.7.0/claude_config_dashboard/character.png +0 -0
  13. claude_config_dashboard-1.7.0/claude_config_dashboard/collectors.py +377 -0
  14. claude_config_dashboard-1.7.0/claude_config_dashboard/enrich.py +109 -0
  15. claude_config_dashboard-1.7.0/claude_config_dashboard/paths.py +11 -0
  16. claude_config_dashboard-1.7.0/claude_config_dashboard/render.py +549 -0
  17. claude_config_dashboard-1.7.0/claude_config_dashboard/security.py +31 -0
  18. claude_config_dashboard-1.7.0/claude_config_dashboard/server.py +157 -0
  19. claude_config_dashboard-1.7.0/claude_config_dashboard/templates/app.js +165 -0
  20. claude_config_dashboard-1.7.0/claude_config_dashboard/templates/dashboard.html +74 -0
  21. claude_config_dashboard-1.7.0/claude_config_dashboard/templates/styles.css +150 -0
  22. claude_config_dashboard-1.7.0/claude_config_dashboard/usage.py +166 -0
  23. claude_config_dashboard-1.7.0/commands/show.md +38 -0
  24. claude_config_dashboard-1.7.0/dashboard.py +20 -0
  25. claude_config_dashboard-1.7.0/docs/DESIGN.md +312 -0
  26. claude_config_dashboard-1.7.0/docs/superpowers/plans/2026-04-11-usage-tracking.md +492 -0
  27. claude_config_dashboard-1.7.0/docs/superpowers/specs/2026-04-11-usage-tracking-design.md +134 -0
  28. claude_config_dashboard-1.7.0/package.json +12 -0
  29. claude_config_dashboard-1.7.0/pyproject.toml +61 -0
  30. claude_config_dashboard-1.7.0/tests/conftest.py +183 -0
  31. claude_config_dashboard-1.7.0/tests/test_collectors.py +167 -0
  32. claude_config_dashboard-1.7.0/tests/test_html.py +88 -0
  33. claude_config_dashboard-1.7.0/tests/test_project_diff.py +99 -0
  34. claude_config_dashboard-1.7.0/tests/test_resilience.py +56 -0
  35. claude_config_dashboard-1.7.0/tests/test_server.py +145 -0
  36. claude_config_dashboard-1.7.0/tests/test_usage.py +113 -0
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "claude-config-dashboard",
3
+ "owner": {
4
+ "name": "AshtonYoon",
5
+ "email": ""
6
+ },
7
+ "metadata": {
8
+ "description": "Local web dashboard for ~/.claude config visualization",
9
+ "version": "1.7.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "claude-config-dashboard",
14
+ "source": "./",
15
+ "description": "Local web dashboard for ~/.claude config visualization — shows plugins, agents, skills, commands, hooks, and MCP servers"
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "claude-config-dashboard",
3
+ "description": "Local web dashboard for ~/.claude config visualization — shows plugins, agents, skills, commands, hooks, and MCP servers",
4
+ "version": "1.7.0",
5
+ "author": {
6
+ "name": "AshtonYoon",
7
+ "url": "https://github.com/AshtonYoon"
8
+ },
9
+ "commands": [
10
+ "./commands/show.md"
11
+ ],
12
+ "homepage": "https://github.com/AshtonYoon/claude-config-dashboard",
13
+ "repository": "https://github.com/AshtonYoon/claude-config-dashboard",
14
+ "license": "MIT",
15
+ "keywords": ["dashboard", "config", "visualization", "plugins", "agents"]
16
+ }
@@ -0,0 +1,47 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ os: [ubuntu-latest, macos-latest]
14
+ python-version: ["3.9", "3.11", "3.13"]
15
+ runs-on: ${{ matrix.os }}
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+
23
+ - name: Install dev dependencies
24
+ run: python -m pip install ruff pytest pytest-cov
25
+
26
+ - name: Lint
27
+ run: ruff check claude_config_dashboard/ tests/ dashboard.py
28
+
29
+ - name: Format check
30
+ run: ruff format --check claude_config_dashboard/ tests/ dashboard.py
31
+
32
+ - name: Tests with coverage
33
+ run: pytest --cov --cov-fail-under=80
34
+
35
+ version-sync:
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+
40
+ - name: Check version fields match
41
+ run: |
42
+ pkg=$(python3 -c "import json; print(json.load(open('package.json'))['version'])")
43
+ plugin=$(python3 -c "import json; print(json.load(open('.claude-plugin/plugin.json'))['version'])")
44
+ market=$(python3 -c "import json; print(json.load(open('.claude-plugin/marketplace.json'))['metadata']['version'])")
45
+ init=$(python3 -c "import claude_config_dashboard as m; print(m.__version__)")
46
+ echo "package.json=$pkg plugin.json=$plugin marketplace.json=$market __init__.py=$init"
47
+ test "$pkg" = "$plugin" -a "$pkg" = "$market" -a "$pkg" = "$init"
@@ -0,0 +1,39 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - uses: actions/setup-python@v5
14
+ with:
15
+ python-version: "3.12"
16
+
17
+ - name: Build sdist and wheel
18
+ run: |
19
+ python -m pip install build
20
+ python -m build
21
+
22
+ - uses: actions/upload-artifact@v4
23
+ with:
24
+ name: dist
25
+ path: dist/
26
+
27
+ publish:
28
+ needs: build
29
+ runs-on: ubuntu-latest
30
+ environment: pypi
31
+ permissions:
32
+ id-token: write # PyPI Trusted Publishing (OIDC) — no API token secrets
33
+ steps:
34
+ - uses: actions/download-artifact@v4
35
+ with:
36
+ name: dist
37
+ path: dist/
38
+
39
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,18 @@
1
+ .worktrees/
2
+ .claude/
3
+ .playwright-mcp/
4
+ .serena/
5
+
6
+ # Python
7
+ __pycache__/
8
+ *.pyc
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+ .coverage
12
+ dist/
13
+ build/
14
+ *.egg-info/
15
+
16
+ # Runtime hook output
17
+ logs/
18
+ .venv/
@@ -0,0 +1,101 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.7.0] - 2026-07-18
9
+
10
+ ### Added
11
+ - PyPI packaging: install with `uvx claude-config-dashboard` or
12
+ `pip install claude-config-dashboard`; releases publish via GitHub
13
+ Actions Trusted Publishing on version tags.
14
+ - Test suite (67 tests, 93% coverage) with an isolated synthetic `~/.claude`
15
+ fixture; coverage gate at 80%.
16
+ - GitHub Actions CI: ruff lint/format and pytest on ubuntu/macos ×
17
+ Python 3.9/3.11/3.13, plus a version-sync check across the four manifests.
18
+
19
+ ### Changed
20
+ - `dashboard.py` (1,523 lines) split into the `claude_config_dashboard`
21
+ package (collectors / usage / enrich / render / security / server), with
22
+ HTML, CSS, and JS extracted to `string.Template` files. The root
23
+ `dashboard.py` remains as a thin launcher for the plugin command.
24
+ - Silent `except: pass` blocks replaced with narrowed exceptions and
25
+ `logging`; new `--verbose` flag surfaces skipped/unreadable config files.
26
+
27
+ ### Fixed
28
+ - Skills named `SKILL.md` (the documented casing) were invisible on
29
+ case-sensitive filesystems (Linux); lookup now checks `SKILL.md` first.
30
+
31
+ ## [1.6.1] - 2026-07-18
32
+
33
+ ### Security
34
+ - `/open` and `/stop` are now POST-only and require a per-run CSRF token
35
+ (`X-Dashboard-Token`) embedded in the served HTML. Previously any web page
36
+ open in the browser could trigger `GET /open?path=...` and open arbitrary
37
+ local files with the OS default app.
38
+ - `/open` now only accepts paths that the dashboard actually renders as
39
+ clickable links (allowlist), instead of any existing path.
40
+ - `Host` header validation (`localhost` / `127.0.0.1` only) to defeat
41
+ DNS-rebinding attacks.
42
+
43
+ ### Added
44
+ - `LICENSE` file (MIT — previously only declared in manifests).
45
+ - This changelog.
46
+
47
+ ### Fixed
48
+ - Module docstring documented a `--project` flag and endpoints that no longer
49
+ exist.
50
+
51
+ ## [1.6.0] - 2026-04-15
52
+
53
+ ### Added
54
+ - Project-only config view: diffs the current project's `.claude` against
55
+ `~/.claude` and shows MCP servers, skills, commands, hooks, and rules that
56
+ exist only in the project.
57
+
58
+ ## [1.5.0] - 2026-04-15
59
+
60
+ ### Changed
61
+ - Generalized the plugin skills dashboard to work with any installed plugin.
62
+
63
+ ## [1.4.0] - 2026-04-07
64
+
65
+ ### Added
66
+ - Anthropic-inspired design system (parchment canvas, terracotta accent,
67
+ serif/sans/mono typography) and a floating character mascot.
68
+
69
+ ### Fixed
70
+ - Double browser open on dashboard launch.
71
+
72
+ ## [1.3.0] - 2026-04-07
73
+
74
+ ### Fixed
75
+ - Usage stats were computed against the wrong config dir when a project
76
+ `.claude` was present (`CLAUDE_DIR` reset before computing usage stats).
77
+
78
+ ### Added
79
+ - Update instructions and marketplace cache workaround in README.
80
+
81
+ ## [1.2.0] - 2026-04-07
82
+
83
+ ### Added
84
+ - Apple-inspired design system.
85
+ - Simplified config-dir toggle and a Stop server button.
86
+
87
+ ## [1.1.0] - 2026-04-07
88
+
89
+ ### Added
90
+ - Usage analytics from session transcripts (skills, agents, MCP servers),
91
+ project scope filter, and a Cleanup tab flagging items unused for 30+ days.
92
+ - Scans the current project's `.claude` when present, falling back to
93
+ `~/.claude`.
94
+
95
+ ## [1.0.0] - 2026-04-07
96
+
97
+ ### Added
98
+ - Initial release: local web dashboard for installed Claude Code config —
99
+ plugins, agents, skills, commands, hooks, MCP servers, and rules — served
100
+ from the Python standard library only. Packaged as a Claude Code plugin
101
+ with a `/claude-config-dashboard:show` command.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AshtonYoon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-config-dashboard
3
+ Version: 1.7.0
4
+ Summary: Local web dashboard for your installed Claude Code configuration — plugins, agents, skills, commands, hooks, MCP servers, and rules, with usage analytics.
5
+ Project-URL: Homepage, https://github.com/AshtonYoon/claude-config-dashboard
6
+ Project-URL: Repository, https://github.com/AshtonYoon/claude-config-dashboard
7
+ Project-URL: Changelog, https://github.com/AshtonYoon/claude-config-dashboard/blob/main/CHANGELOG.md
8
+ Author: AshtonYoon
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: claude,claude-code,config,dashboard,mcp
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Web Environment
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Topic :: Utilities
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown
23
+
24
+ # claude-config-dashboard
25
+
26
+ A Claude Code plugin that provides a local web dashboard for visualizing third-party elements installed in `~/.claude`, plus a project-only comparison view for items found only in the current project's `.claude`.
27
+
28
+ <img width="1755" height="899" alt="image" src="https://github.com/user-attachments/assets/f0332b7b-ad5f-4c2c-b73b-4054d6da2a24" />
29
+
30
+
31
+
32
+
33
+
34
+ ## Install
35
+
36
+ ```
37
+ /plugin marketplace add AshtonYoon/claude-config-dashboard
38
+ /plugin install claude-config-dashboard
39
+ /reload-plugins
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ```
45
+ /claude-config-dashboard:show
46
+ ```
47
+
48
+ The dashboard opens at **http://localhost:9876**.
49
+
50
+ ## Features
51
+
52
+ | Tab | Contents |
53
+ |-----|----------|
54
+ | Plugins | Installed plugins with version, GitHub link, install date |
55
+ | Agents | Agents grouped by category — click name to open file |
56
+ | Skills | Custom and plugin-provided skills |
57
+ | Commands | Slash commands with descriptions — click to open file |
58
+ | Hooks | Hook scripts by trigger type — click to open script |
59
+ | MCP Servers | Configured MCP servers from settings.json and ~/.claude.json |
60
+ | Rules | Rule files by category — click to open file |
61
+ | Project-only config | MCP servers, skills, commands, hooks, and rules that exist only in the current project's `.claude` |
62
+
63
+ Clicking any file name opens it in the OS default app (editor, Finder, etc.).
64
+
65
+ ## Update
66
+
67
+ ```
68
+ /plugin update claude-config-dashboard
69
+ /reload-plugins
70
+ ```
71
+
72
+ > **If `/plugin update` shows a "browse plugins" prompt instead of updating directly**, the local marketplace cache is stale. Run this once to refresh it:
73
+ > ```bash
74
+ > cd ~/.claude/plugins/marketplaces/claude-config-dashboard && git pull
75
+ > ```
76
+ > Then retry `/plugin update claude-config-dashboard`.
77
+
78
+ ## Requirements
79
+
80
+ - Python 3.x (standard library only, no pip install needed)
81
+ - macOS (uses `open` to launch default apps; Linux uses `xdg-open`)
@@ -0,0 +1,58 @@
1
+ # claude-config-dashboard
2
+
3
+ A Claude Code plugin that provides a local web dashboard for visualizing third-party elements installed in `~/.claude`, plus a project-only comparison view for items found only in the current project's `.claude`.
4
+
5
+ <img width="1755" height="899" alt="image" src="https://github.com/user-attachments/assets/f0332b7b-ad5f-4c2c-b73b-4054d6da2a24" />
6
+
7
+
8
+
9
+
10
+
11
+ ## Install
12
+
13
+ ```
14
+ /plugin marketplace add AshtonYoon/claude-config-dashboard
15
+ /plugin install claude-config-dashboard
16
+ /reload-plugins
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```
22
+ /claude-config-dashboard:show
23
+ ```
24
+
25
+ The dashboard opens at **http://localhost:9876**.
26
+
27
+ ## Features
28
+
29
+ | Tab | Contents |
30
+ |-----|----------|
31
+ | Plugins | Installed plugins with version, GitHub link, install date |
32
+ | Agents | Agents grouped by category — click name to open file |
33
+ | Skills | Custom and plugin-provided skills |
34
+ | Commands | Slash commands with descriptions — click to open file |
35
+ | Hooks | Hook scripts by trigger type — click to open script |
36
+ | MCP Servers | Configured MCP servers from settings.json and ~/.claude.json |
37
+ | Rules | Rule files by category — click to open file |
38
+ | Project-only config | MCP servers, skills, commands, hooks, and rules that exist only in the current project's `.claude` |
39
+
40
+ Clicking any file name opens it in the OS default app (editor, Finder, etc.).
41
+
42
+ ## Update
43
+
44
+ ```
45
+ /plugin update claude-config-dashboard
46
+ /reload-plugins
47
+ ```
48
+
49
+ > **If `/plugin update` shows a "browse plugins" prompt instead of updating directly**, the local marketplace cache is stale. Run this once to refresh it:
50
+ > ```bash
51
+ > cd ~/.claude/plugins/marketplaces/claude-config-dashboard && git pull
52
+ > ```
53
+ > Then retry `/plugin update claude-config-dashboard`.
54
+
55
+ ## Requirements
56
+
57
+ - Python 3.x (standard library only, no pip install needed)
58
+ - macOS (uses `open` to launch default apps; Linux uses `xdg-open`)
@@ -0,0 +1,3 @@
1
+ """Local web dashboard for installed Claude Code configuration."""
2
+
3
+ __version__ = "1.7.0"
@@ -0,0 +1,4 @@
1
+ from .server import main
2
+
3
+ if __name__ == "__main__":
4
+ main()