codeforge-dev 1.12.0 → 1.13.0
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.
- package/.devcontainer/CHANGELOG.md +37 -0
- package/.devcontainer/CLAUDE.md +21 -13
- package/.devcontainer/README.md +16 -8
- package/.devcontainer/config/defaults/rules/workspace-scope.md +13 -4
- package/.devcontainer/config/defaults/settings.json +5 -3
- package/.devcontainer/devcontainer.json +14 -7
- package/.devcontainer/features/claude-session-dashboard/README.md +40 -0
- package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +35 -0
- package/.devcontainer/features/claude-session-dashboard/install.sh +172 -0
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +24 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +8 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/AGENT-REDIRECTION.md +7 -12
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/REVIEW-RUBRIC.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/claude-guide.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/debug-logs.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/dependency-analyst.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/explorer.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/generalist.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/git-archaeologist.md +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/researcher.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/security-auditor.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +29 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/redirect-builtin-agents.py +17 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +8 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +34 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +8 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +29 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +205 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +8 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +17 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/references/roadmap-template.md +33 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +17 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +0 -2
- package/.devcontainer/scripts/setup-projects.sh +1 -1
- package/package.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +0 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/README.md +0 -250
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +0 -112
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +0 -46
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +0 -146
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/.claude-plugin/commands/debug.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/architect.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/bash-exec.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/doc-writer.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/migrator.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/perf-profiler.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/refactorer.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/spec-writer.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/statusline-config.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/test-writer.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/guard-readonly-bash.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/inject-cwd.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-no-regression.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-tests-pass.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → auto-code-quality}/scripts/advisory-test-runner.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/commit-reminder.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/git-state-injector.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/todo-harvester.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/scripts/skill-suggester.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/error-handling.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/rest-conventions.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/references/language-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/references/sdk-typescript-reference.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/error-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/log-locations.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/ecosystem-commands.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/license-compliance.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/compose-services.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/dockerfile-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/container-lifecycle.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/resources-and-security.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/api-doc-templates.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/docstring-formats.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/pydantic-models.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/routing-and-dependencies.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/sse-and-streaming.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/advanced-commands.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/investigation-playbooks.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/javascript-migrations.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/python-migrations.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/interpreting-results.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/tool-commands.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/safe-transformations.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/smell-catalog.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/owasp-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/secrets-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/cross-vendor-principles.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/advanced-queries.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/javascript-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/python-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/schema-and-pragmas.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/component-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/layercake.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/migration-guide.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/runes-and-reactivity.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/spa-and-routing.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/svelte-dnd-action.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/fastapi-testing.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/svelte-testing.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/scripts/spec-reminder.py +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/references/review-checklist.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-check/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/backlog-template.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/milestones-template.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/references/template.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-refine/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-review/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-update/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/criteria-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/ears-templates.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → ticket-workflow}/scripts/ticket-linker.py +0 -0
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# CodeForge Devcontainer Changelog
|
|
2
2
|
|
|
3
|
+
## [v1.13.0] - 2026-02-21
|
|
4
|
+
|
|
5
|
+
Claude Code is an idiot sandwich and ignored my instructions and workspace scope because it's a god damned idiot.
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Feature version pins: node `1.6`→`1.7.1`, github-cli `1.0`→`1.1.0`, docker-outside-of-docker `1.7`→`1.6`, rust `1.4`→`1.5.0`, claude-code `1.1`→`1.0.5`
|
|
10
|
+
- setup-projects.sh: suppress background inotifywait output
|
|
11
|
+
- agent-system: add missing `verify-tests-pass.py` and `verify-no-regression.py` (referenced by agent defs)
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
#### Plugin Architecture: Focused Plugins
|
|
16
|
+
- **`agent-system` plugin** — 17 custom agents with built-in agent redirection, CWD injection, and read-only bash enforcement
|
|
17
|
+
- **`skill-engine` plugin** — 21 coding skills with auto-suggestion hook
|
|
18
|
+
- **`spec-workflow` plugin** — 8 spec lifecycle skills with spec-reminder hook
|
|
19
|
+
- **`session-context` plugin** — session boundary hooks (git state injection, TODO harvesting, commit reminders)
|
|
20
|
+
|
|
21
|
+
#### Other
|
|
22
|
+
- **`ticket-workflow` hooks** — auto-links GitHub issue/PR references in user prompts via `ticket-linker.py`
|
|
23
|
+
- **`auto-code-quality` advisory test runner** — runs affected tests at Stop via `advisory-test-runner.py`
|
|
24
|
+
- **`/team` skill** — agent team creation and management with specialist catalog (in `skill-engine`)
|
|
25
|
+
- **`claude-session-dashboard` feature** — local analytics dashboard for Claude Code sessions (token usage, tool calls, cost estimates, activity heatmaps). Installed globally via npm with `claude-dashboard` command. Settings persist across rebuilds via symlink to `/workspaces/.claude-dashboard/`
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- Plugin architecture: `code-directive` monolith replaced by focused plugins (`agent-system`, `skill-engine`, `spec-workflow`, `session-context`)
|
|
30
|
+
- `auto-code-quality` now consolidates `auto-formatter` + `auto-linter` (disabled separately, `auto-code-quality` is the superset)
|
|
31
|
+
- **`workspace-scope.md` rule hardened** — strict enforcement with no exceptions; all file operations must target paths within the current project directory
|
|
32
|
+
|
|
33
|
+
### Removed
|
|
34
|
+
|
|
35
|
+
- `code-directive` plugin (replaced by `agent-system`, `skill-engine`, `spec-workflow`, `session-context`)
|
|
36
|
+
- `auto-formatter` and `auto-linter` disabled in settings (consolidated into `auto-code-quality`)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
3
40
|
## [v1.12.0] - 2026-02-18
|
|
4
41
|
|
|
5
42
|
### Added
|
package/.devcontainer/CLAUDE.md
CHANGED
|
@@ -59,6 +59,7 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
|
|
|
59
59
|
| `ccms` | Search Claude Code session history (project-scoped) |
|
|
60
60
|
| `cc-tools` | List all installed tools with version info |
|
|
61
61
|
| `check-setup` | Verify CodeForge setup health |
|
|
62
|
+
| `claude-dashboard` | Local session analytics dashboard (web UI on port 3000) |
|
|
62
63
|
|
|
63
64
|
## Feature Development
|
|
64
65
|
|
|
@@ -107,7 +108,7 @@ When `version` is set to `"none"`, the feature's `install.sh` exits immediately
|
|
|
107
108
|
The auto-formatter and auto-linter plugins gracefully skip missing tools at runtime.
|
|
108
109
|
|
|
109
110
|
**All local features support this pattern:**
|
|
110
|
-
ast-grep, biome, ccms, ccstatusline, claude-monitor, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
|
|
111
|
+
ast-grep, biome, ccms, ccstatusline, claude-monitor, claude-session-dashboard, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
|
|
111
112
|
|
|
112
113
|
**External features with `version: "none"` support:**
|
|
113
114
|
`ghcr.io/devcontainers/features/node`, `ghcr.io/devcontainers/features/github-cli`, `ghcr.io/devcontainers/features/docker-outside-of-docker`, `ghcr.io/devcontainers/features/go` (all official Microsoft features)
|
|
@@ -161,13 +162,15 @@ Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` a
|
|
|
161
162
|
|
|
162
163
|
### Local Marketplace (devs-marketplace)
|
|
163
164
|
- `codeforge-lsp@devs-marketplace` — LSP for Python + TypeScript/JavaScript
|
|
164
|
-
- `ticket-workflow@devs-marketplace` — EARS-based ticket workflow with GitHub integration
|
|
165
|
+
- `ticket-workflow@devs-marketplace` — EARS-based ticket workflow with GitHub integration and auto-linking hook
|
|
165
166
|
- `notify-hook@devs-marketplace` — Desktop notifications on completion
|
|
166
167
|
- `dangerous-command-blocker@devs-marketplace` — Blocks destructive bash commands
|
|
167
168
|
- `protected-files-guard@devs-marketplace` — Blocks edits to secrets/lock files
|
|
168
|
-
- `
|
|
169
|
-
- `
|
|
170
|
-
- `
|
|
169
|
+
- `agent-system@devs-marketplace` — 17 custom agents with built-in agent redirection, CWD injection, and read-only bash enforcement
|
|
170
|
+
- `skill-engine@devs-marketplace` — 21 coding skills with auto-suggestion hook
|
|
171
|
+
- `spec-workflow@devs-marketplace` — 8 spec lifecycle skills with spec-reminder hook
|
|
172
|
+
- `session-context@devs-marketplace` — Session boundary hooks (git state injection, TODO harvesting, commit reminders)
|
|
173
|
+
- `auto-code-quality@devs-marketplace` — Combined auto-format + auto-lint + advisory test runner
|
|
171
174
|
- `workspace-scope-guard@devs-marketplace` — Blocks writes and warns on reads outside the working directory
|
|
172
175
|
|
|
173
176
|
### Local Marketplace
|
|
@@ -180,25 +183,30 @@ plugins/devs-marketplace/
|
|
|
180
183
|
│ └── marketplace.json # Marketplace manifest
|
|
181
184
|
└── plugins/
|
|
182
185
|
├── codeforge-lsp/ # Combined LSP plugin
|
|
183
|
-
├── ticket-workflow/ # EARS ticket workflow
|
|
184
|
-
├──
|
|
185
|
-
├──
|
|
186
|
-
├──
|
|
186
|
+
├── ticket-workflow/ # EARS ticket workflow + auto-linking hook
|
|
187
|
+
├── agent-system/ # 17 custom agents + redirection
|
|
188
|
+
├── skill-engine/ # 21 coding skills + auto-suggestion
|
|
189
|
+
├── spec-workflow/ # 8 spec lifecycle skills
|
|
190
|
+
├── session-context/ # Session boundary hooks
|
|
191
|
+
├── auto-code-quality/ # Combined format + lint + test runner
|
|
187
192
|
├── workspace-scope-guard/ # Workspace scope enforcement
|
|
188
193
|
└── ...
|
|
189
194
|
```
|
|
190
195
|
|
|
191
196
|
## Agents & Skills
|
|
192
197
|
|
|
193
|
-
|
|
198
|
+
Agents and skills are distributed across focused plugins:
|
|
194
199
|
|
|
195
|
-
**Agents** (`plugins/devs-marketplace/plugins/
|
|
200
|
+
**Agents** (`plugins/devs-marketplace/plugins/agent-system/agents/`):
|
|
196
201
|
architect, bash-exec, claude-guide, debug-logs, dependency-analyst, doc-writer, explorer, generalist, git-archaeologist, migrator, perf-profiler, refactorer, researcher, security-auditor, spec-writer, statusline-config, test-writer
|
|
197
202
|
|
|
198
203
|
The `redirect-builtin-agents.py` hook (PreToolUse/Task) transparently swaps built-in agent types to these custom agents (e.g., Explore→explorer, Plan→architect).
|
|
199
204
|
|
|
200
|
-
**Skills** (`plugins/devs-marketplace/plugins/
|
|
201
|
-
api-design, ast-grep-patterns, claude-agent-sdk, claude-code-headless, debugging, dependency-management, docker, docker-py, documentation-patterns, fastapi, git-forensics, migration-patterns, performance-profiling, pydantic-ai, refactoring-patterns, security-checklist, skill-building,
|
|
205
|
+
**General Skills** (`plugins/devs-marketplace/plugins/skill-engine/skills/`):
|
|
206
|
+
api-design, ast-grep-patterns, claude-agent-sdk, claude-code-headless, debugging, dependency-management, docker, docker-py, documentation-patterns, fastapi, git-forensics, migration-patterns, performance-profiling, pydantic-ai, refactoring-patterns, security-checklist, skill-building, sqlite, svelte5, team, testing
|
|
207
|
+
|
|
208
|
+
**Spec Skills** (`plugins/devs-marketplace/plugins/spec-workflow/skills/`):
|
|
209
|
+
spec-build, spec-check, spec-init, spec-new, spec-refine, spec-review, spec-update, specification-writing
|
|
202
210
|
|
|
203
211
|
## VS Code Keybinding Conflicts
|
|
204
212
|
|
package/.devcontainer/README.md
CHANGED
|
@@ -189,6 +189,7 @@ claude --resume # Resume previous session
|
|
|
189
189
|
| `ccburn` | Visual token burn rate tracker with pace indicators |
|
|
190
190
|
| `ccstatusline` | Status bar display (integrated into Claude Code, not standalone CLI) |
|
|
191
191
|
| `claude-monitor` | Real-time usage tracking |
|
|
192
|
+
| `claude-dashboard` | Local session analytics dashboard (token usage, costs, timelines) |
|
|
192
193
|
|
|
193
194
|
## Configuration
|
|
194
195
|
|
|
@@ -270,6 +271,7 @@ CodeForge includes custom devcontainer features. Any feature can be disabled by
|
|
|
270
271
|
| `hadolint` | Dockerfile linter (disabled by default) |
|
|
271
272
|
| `dprint` | Pluggable formatter for Markdown/YAML/TOML (disabled by default) |
|
|
272
273
|
| `ccms` | Claude Code session history search |
|
|
274
|
+
| `claude-session-dashboard` | Local session analytics dashboard with web UI |
|
|
273
275
|
| `notify-hook` | Desktop notifications on Claude completion |
|
|
274
276
|
| `mcp-qdrant` | Qdrant vector database MCP server (optional) |
|
|
275
277
|
|
|
@@ -281,9 +283,9 @@ CodeForge includes custom devcontainer features. Any feature can be disabled by
|
|
|
281
283
|
| `protected-files-guard` | Blocks modifications to .env, lock files, .git/, and credentials |
|
|
282
284
|
| `workspace-scope-guard` | Enforces working directory scope — blocks writes and warns on reads outside the project |
|
|
283
285
|
|
|
284
|
-
### auto-code-quality
|
|
286
|
+
### auto-code-quality
|
|
285
287
|
|
|
286
|
-
|
|
288
|
+
Combined auto-formatter, auto-linter, and advisory test runner plugin at `plugins/devs-marketplace/plugins/auto-code-quality/`. Three-phase pipeline: collect edited files (PostToolUse), batch format + lint (Stop), and advisory test runner (Stop). Supports all languages from the former auto-formatter + auto-linter plugins. Replaces the separate `auto-formatter` and `auto-linter` plugins.
|
|
287
289
|
|
|
288
290
|
## Alias Management
|
|
289
291
|
|
|
@@ -301,11 +303,11 @@ All methods persist across container rebuilds via the bind-mounted `/workspaces/
|
|
|
301
303
|
|
|
302
304
|
## Agents & Skills
|
|
303
305
|
|
|
304
|
-
|
|
306
|
+
Agents and skills are distributed across focused plugins (replacing the former `code-directive` monolith).
|
|
305
307
|
|
|
306
|
-
### Custom Agents (17)
|
|
308
|
+
### Custom Agents (17) — `agent-system` plugin
|
|
307
309
|
|
|
308
|
-
Agent definitions in `plugins/devs-marketplace/plugins/
|
|
310
|
+
Agent definitions in `plugins/devs-marketplace/plugins/agent-system/agents/` provide enhanced behavior when spawned via the `Task` tool. The `redirect-builtin-agents.py` hook transparently swaps built-in agent types to these custom agents.
|
|
309
311
|
|
|
310
312
|
| Agent | Purpose |
|
|
311
313
|
|-------|---------|
|
|
@@ -327,11 +329,17 @@ Agent definitions in `plugins/devs-marketplace/plugins/code-directive/agents/` p
|
|
|
327
329
|
| `statusline-config` | ccstatusline configuration |
|
|
328
330
|
| `test-writer` | Test authoring with pass verification |
|
|
329
331
|
|
|
330
|
-
### Skills (
|
|
332
|
+
### General Skills (21) — `skill-engine` plugin
|
|
331
333
|
|
|
332
|
-
Skills in `plugins/devs-marketplace/plugins/
|
|
334
|
+
Skills in `plugins/devs-marketplace/plugins/skill-engine/skills/` provide domain-specific coding references:
|
|
333
335
|
|
|
334
|
-
`api-design` · `ast-grep-patterns` · `claude-agent-sdk` · `claude-code-headless` · `debugging` · `dependency-management` · `docker` · `docker-py` · `documentation-patterns` · `fastapi` · `git-forensics` · `migration-patterns` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `
|
|
336
|
+
`api-design` · `ast-grep-patterns` · `claude-agent-sdk` · `claude-code-headless` · `debugging` · `dependency-management` · `docker` · `docker-py` · `documentation-patterns` · `fastapi` · `git-forensics` · `migration-patterns` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `sqlite` · `svelte5` · `team` · `testing`
|
|
337
|
+
|
|
338
|
+
### Spec Skills (8) — `spec-workflow` plugin
|
|
339
|
+
|
|
340
|
+
Skills in `plugins/devs-marketplace/plugins/spec-workflow/skills/`:
|
|
341
|
+
|
|
342
|
+
`spec-build` · `spec-check` · `spec-init` · `spec-new` · `spec-refine` · `spec-review` · `spec-update` · `specification-writing`
|
|
335
343
|
|
|
336
344
|
## Specification Workflow
|
|
337
345
|
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
# Workspace Scoping Rule
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
unless the user explicitly requests cross-project work.
|
|
3
|
+
ALL file operations (reads, writes, edits, searches, globs, bash commands)
|
|
4
|
+
MUST target paths within the current project directory. No exceptions.
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
Violations:
|
|
7
|
+
- Writing, editing, or creating files outside the project directory is FORBIDDEN.
|
|
8
|
+
- Reading or searching outside the project directory is FORBIDDEN.
|
|
9
|
+
- Using paths like `/workspaces/.devcontainer/` when the project is at
|
|
10
|
+
`/workspaces/projects/ProjectName/` is a scope violation — always use
|
|
11
|
+
the project-relative path (e.g., `/workspaces/projects/ProjectName/.devcontainer/`).
|
|
12
|
+
- This rule applies even if a file exists at both locations. The project copy
|
|
13
|
+
is the ONLY valid target.
|
|
14
|
+
|
|
15
|
+
Do not suggest, reference, or modify files in sibling project directories
|
|
16
|
+
or workspace-root directories that duplicate project content.
|
|
@@ -59,9 +59,11 @@
|
|
|
59
59
|
"notify-hook@devs-marketplace": true,
|
|
60
60
|
"dangerous-command-blocker@devs-marketplace": true,
|
|
61
61
|
"protected-files-guard@devs-marketplace": true,
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
62
|
+
"agent-system@devs-marketplace": true,
|
|
63
|
+
"skill-engine@devs-marketplace": true,
|
|
64
|
+
"spec-workflow@devs-marketplace": true,
|
|
65
|
+
"session-context@devs-marketplace": true,
|
|
66
|
+
"auto-code-quality@devs-marketplace": true,
|
|
65
67
|
"workspace-scope-guard@devs-marketplace": true
|
|
66
68
|
},
|
|
67
69
|
"autoUpdatesChannel": "latest"
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
|
|
33
33
|
// Feature install order: external runtimes first (Node, uv, Rust, Bun),
|
|
34
34
|
// then Claude Code (needs Node), then custom features.
|
|
35
|
-
// npm-dependent features (agent-browser, ccusage, ccburn,
|
|
36
|
-
// must come after Node. uv-dependent features (ruff, claude-monitor) must
|
|
35
|
+
// npm-dependent features (agent-browser, ccusage, ccburn, claude-session-dashboard,
|
|
36
|
+
// biome, lsp-servers) must come after Node. uv-dependent features (ruff, claude-monitor) must
|
|
37
37
|
// come after uv. cargo-dependent features (ccms) must come after Rust.
|
|
38
38
|
// notify-hook is last (lightweight, no dependencies).
|
|
39
39
|
"overrideFeatureInstallOrder": [
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"./features/ccburn",
|
|
52
52
|
"./features/ccstatusline",
|
|
53
53
|
"./features/ccms",
|
|
54
|
+
"./features/claude-session-dashboard",
|
|
54
55
|
"./features/ast-grep",
|
|
55
56
|
"./features/tree-sitter",
|
|
56
57
|
"./features/lsp-servers",
|
|
@@ -64,22 +65,22 @@
|
|
|
64
65
|
],
|
|
65
66
|
|
|
66
67
|
"features": {
|
|
67
|
-
"ghcr.io/devcontainers/features/node:1.
|
|
68
|
+
"ghcr.io/devcontainers/features/node:1.7.1": {
|
|
68
69
|
"version": "lts",
|
|
69
70
|
"nodeGypDependencies": true
|
|
70
71
|
},
|
|
71
|
-
"ghcr.io/devcontainers/features/github-cli:1.0": {},
|
|
72
|
-
"ghcr.io/devcontainers/features/docker-outside-of-docker:1.
|
|
72
|
+
"ghcr.io/devcontainers/features/github-cli:1.1.0": {},
|
|
73
|
+
"ghcr.io/devcontainers/features/docker-outside-of-docker:1.6": {
|
|
73
74
|
"moby": false
|
|
74
75
|
},
|
|
75
76
|
"ghcr.io/devcontainers-extra/features/uv:1.0": {},
|
|
76
77
|
"ghcr.io/rails/devcontainer/features/bun:1.0.2": {},
|
|
77
|
-
"ghcr.io/devcontainers/features/rust:1.
|
|
78
|
+
"ghcr.io/devcontainers/features/rust:1.5.0": {
|
|
78
79
|
"version": "latest"
|
|
79
80
|
},
|
|
80
81
|
// Uncomment to add Go runtime (not installed by default):
|
|
81
82
|
// "ghcr.io/devcontainers/features/go:1": {},
|
|
82
|
-
"ghcr.io/anthropics/devcontainer-features/claude-code:1.
|
|
83
|
+
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0.5": {},
|
|
83
84
|
"./features/tmux": {},
|
|
84
85
|
"./features/ccusage": {
|
|
85
86
|
"version": "latest",
|
|
@@ -100,6 +101,12 @@
|
|
|
100
101
|
"username": "automatic"
|
|
101
102
|
},
|
|
102
103
|
"./features/ccms": {},
|
|
104
|
+
"./features/claude-session-dashboard": {
|
|
105
|
+
"version": "latest",
|
|
106
|
+
"port": "3000",
|
|
107
|
+
"shells": "both",
|
|
108
|
+
"username": "automatic"
|
|
109
|
+
},
|
|
103
110
|
"./features/ast-grep": {},
|
|
104
111
|
"./features/tree-sitter": {},
|
|
105
112
|
"./features/lsp-servers": {},
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Claude Session Dashboard (devcontainer feature)
|
|
2
|
+
|
|
3
|
+
Installs [claude-session-dashboard](https://github.com/dlupiak/claude-session-dashboard) — a local analytics dashboard for Claude Code sessions.
|
|
4
|
+
|
|
5
|
+
## What it provides
|
|
6
|
+
|
|
7
|
+
- `claude-dashboard` command to launch the web UI
|
|
8
|
+
- Session browsing with full-text search and filtering
|
|
9
|
+
- Token usage breakdown, cost estimates, and activity heatmaps
|
|
10
|
+
- Tool call timeline visualization
|
|
11
|
+
- Per-project aggregated analytics
|
|
12
|
+
- Settings persisted across container rebuilds via symlink to `/workspaces/.claude-dashboard/`
|
|
13
|
+
|
|
14
|
+
## Options
|
|
15
|
+
|
|
16
|
+
| Option | Default | Description |
|
|
17
|
+
|--------|---------|-------------|
|
|
18
|
+
| `version` | `latest` | npm package version (`latest`, `1.0.0`, or `none` to skip) |
|
|
19
|
+
| `port` | `3000` | Default port for the dashboard server |
|
|
20
|
+
| `shells` | `both` | Shell configs to add alias to (`bash`, `zsh`, `both`) |
|
|
21
|
+
| `username` | `automatic` | Container user to install for |
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Start the dashboard (default port 3000)
|
|
27
|
+
claude-dashboard
|
|
28
|
+
|
|
29
|
+
# Start on a custom port
|
|
30
|
+
claude-dashboard -p 8080
|
|
31
|
+
|
|
32
|
+
# Show help
|
|
33
|
+
claude-dashboard --help
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The dashboard reads session data from `~/.claude/projects/` (symlinked to `/workspaces/.claude/projects/` in this devcontainer).
|
|
37
|
+
|
|
38
|
+
## How persistence works
|
|
39
|
+
|
|
40
|
+
Dashboard settings and cache are stored at `~/.claude-dashboard/`. Since the home directory is ephemeral in devcontainers, a poststart hook symlinks `~/.claude-dashboard` → `/workspaces/.claude-dashboard/`, which is bind-mounted and survives rebuilds.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "claude-session-dashboard",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"name": "Claude Session Dashboard",
|
|
5
|
+
"description": "Local analytics dashboard for Claude Code sessions (token usage, tool calls, cost estimates)",
|
|
6
|
+
"maintainer": "AnExiledDev",
|
|
7
|
+
"documentationURL": "https://github.com/dlupiak/claude-session-dashboard",
|
|
8
|
+
"options": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Dashboard version (e.g., 'latest', '1.0.0', 'none' to skip)",
|
|
12
|
+
"default": "latest"
|
|
13
|
+
},
|
|
14
|
+
"port": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Default port for the dashboard server",
|
|
17
|
+
"default": "3000"
|
|
18
|
+
},
|
|
19
|
+
"shells": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Which shells to configure aliases in (bash, zsh, or both)",
|
|
22
|
+
"default": "both",
|
|
23
|
+
"enum": ["bash", "zsh", "both"],
|
|
24
|
+
"proposals": ["bash", "zsh", "both"]
|
|
25
|
+
},
|
|
26
|
+
"username": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "Container user to install for",
|
|
29
|
+
"default": "automatic"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"installsAfter": [
|
|
33
|
+
"ghcr.io/devcontainers/features/node:1"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# ==============================
|
|
5
|
+
# Claude Session Dashboard
|
|
6
|
+
# DevContainer Feature Installer
|
|
7
|
+
# ==============================
|
|
8
|
+
|
|
9
|
+
# === IMPORT OPTIONS ===
|
|
10
|
+
DASHBOARD_VERSION="${VERSION:-latest}"
|
|
11
|
+
PORT="${PORT:-3000}"
|
|
12
|
+
SHELLS="${SHELLS:-both}"
|
|
13
|
+
USERNAME="${USERNAME:-automatic}"
|
|
14
|
+
|
|
15
|
+
# === SKIP IF DISABLED ===
|
|
16
|
+
if [ "${DASHBOARD_VERSION}" = "none" ]; then
|
|
17
|
+
echo "[claude-session-dashboard] Skipping installation (version=none)"
|
|
18
|
+
exit 0
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "[claude-session-dashboard] Starting installation..."
|
|
22
|
+
|
|
23
|
+
# === SOURCE NVM ===
|
|
24
|
+
if [ -f /usr/local/share/nvm/nvm.sh ]; then
|
|
25
|
+
source /usr/local/share/nvm/nvm.sh
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# === VALIDATE DEPENDENCIES ===
|
|
29
|
+
if ! command -v npm &>/dev/null; then
|
|
30
|
+
echo "[claude-session-dashboard] ERROR: npm is not available"
|
|
31
|
+
echo " Ensure the node feature is installed first"
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
NODE_MAJOR="$(node --version 2>/dev/null | sed 's/v\([0-9]*\).*/\1/' || echo 0)"
|
|
36
|
+
if [ "${NODE_MAJOR}" -lt 18 ]; then
|
|
37
|
+
echo "[claude-session-dashboard] ERROR: Node.js >= 18 required (found v${NODE_MAJOR})"
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# === VALIDATE INPUT ===
|
|
42
|
+
if [[ ! "${SHELLS}" =~ ^(bash|zsh|both)$ ]]; then
|
|
43
|
+
echo "[claude-session-dashboard] ERROR: shells must be 'bash', 'zsh', or 'both'"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
if [[ ! "${DASHBOARD_VERSION}" =~ ^[a-zA-Z0-9._-]+$ ]]; then
|
|
48
|
+
echo "[claude-session-dashboard] ERROR: version contains invalid characters"
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# === DETECT USER ===
|
|
53
|
+
if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
|
|
54
|
+
USERNAME=""
|
|
55
|
+
for CURRENT_USER in vscode node codespace; do
|
|
56
|
+
if id -u "${CURRENT_USER}" >/dev/null 2>&1; then
|
|
57
|
+
USERNAME=${CURRENT_USER}
|
|
58
|
+
break
|
|
59
|
+
fi
|
|
60
|
+
done
|
|
61
|
+
[ -z "${USERNAME}" ] && USERNAME=root
|
|
62
|
+
elif [ "${USERNAME}" = "none" ] || ! id -u "${USERNAME}" >/dev/null 2>&1; then
|
|
63
|
+
USERNAME=root
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
USER_HOME=$(eval echo "~${USERNAME}")
|
|
67
|
+
if [ ! -d "${USER_HOME}" ]; then
|
|
68
|
+
echo "[claude-session-dashboard] ERROR: Home directory not found for user ${USERNAME}"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
echo "[claude-session-dashboard] Installing for user: ${USERNAME}"
|
|
73
|
+
|
|
74
|
+
# === INSTALL VIA NPM ===
|
|
75
|
+
echo "[claude-session-dashboard] Installing claude-session-dashboard@${DASHBOARD_VERSION} globally..."
|
|
76
|
+
npm install -g "claude-session-dashboard@${DASHBOARD_VERSION}"
|
|
77
|
+
|
|
78
|
+
# === PERSISTENCE SYMLINK (POSTSTART HOOK) ===
|
|
79
|
+
# Settings/cache live at ~/.claude-dashboard, which is ephemeral (/home/vscode).
|
|
80
|
+
# Create a poststart hook to symlink it to /workspaces/.claude-dashboard for persistence.
|
|
81
|
+
POSTSTART_DIR="/usr/local/devcontainer-poststart.d"
|
|
82
|
+
HOOK_SCRIPT="${POSTSTART_DIR}/claude-dashboard-symlink.sh"
|
|
83
|
+
|
|
84
|
+
mkdir -p "${POSTSTART_DIR}"
|
|
85
|
+
cat > "${HOOK_SCRIPT}" << 'HOOKEOF'
|
|
86
|
+
#!/bin/bash
|
|
87
|
+
# Symlink ~/.claude-dashboard → /workspaces/.claude-dashboard for persistence
|
|
88
|
+
DASHBOARD_DATA="/workspaces/.claude-dashboard"
|
|
89
|
+
USER_HOME="${HOME:-/home/vscode}"
|
|
90
|
+
LINK_PATH="${USER_HOME}/.claude-dashboard"
|
|
91
|
+
|
|
92
|
+
mkdir -p "${DASHBOARD_DATA}"
|
|
93
|
+
|
|
94
|
+
# Already correct symlink — nothing to do
|
|
95
|
+
if [ -L "${LINK_PATH}" ]; then
|
|
96
|
+
CURRENT_TARGET="$(readlink "${LINK_PATH}")"
|
|
97
|
+
if [ "${CURRENT_TARGET}" = "${DASHBOARD_DATA}" ]; then
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
rm "${LINK_PATH}"
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
# Real directory exists — merge contents, then replace with symlink
|
|
104
|
+
if [ -d "${LINK_PATH}" ]; then
|
|
105
|
+
cp -rn "${LINK_PATH}/." "${DASHBOARD_DATA}/" 2>/dev/null || true
|
|
106
|
+
rm -rf "${LINK_PATH}"
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
ln -s "${DASHBOARD_DATA}" "${LINK_PATH}"
|
|
110
|
+
HOOKEOF
|
|
111
|
+
chmod +x "${HOOK_SCRIPT}"
|
|
112
|
+
echo "[claude-session-dashboard] Created poststart hook for settings persistence"
|
|
113
|
+
|
|
114
|
+
# === SHELL ALIASES ===
|
|
115
|
+
ALIAS_CMD="alias claude-dashboard=\"claude-dashboard --port ${PORT}\""
|
|
116
|
+
|
|
117
|
+
configure_shell() {
|
|
118
|
+
local shell_rc="$1"
|
|
119
|
+
local shell_name="$2"
|
|
120
|
+
|
|
121
|
+
if [ ! -f "${shell_rc}" ]; then
|
|
122
|
+
echo "[claude-session-dashboard] Creating ${shell_name} config: ${shell_rc}"
|
|
123
|
+
sudo -u "${USERNAME}" touch "${shell_rc}"
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
if grep -q "alias claude-dashboard=" "${shell_rc}"; then
|
|
127
|
+
echo "[claude-session-dashboard] ${shell_name} alias already configured. Skipping..."
|
|
128
|
+
else
|
|
129
|
+
echo "[claude-session-dashboard] Adding alias to ${shell_name}"
|
|
130
|
+
echo "${ALIAS_CMD}" >> "${shell_rc}"
|
|
131
|
+
chown "${USERNAME}:${USERNAME}" "${shell_rc}" 2>/dev/null || true
|
|
132
|
+
fi
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if [ "${SHELLS}" = "bash" ] || [ "${SHELLS}" = "both" ]; then
|
|
136
|
+
configure_shell "${USER_HOME}/.bashrc" "bash"
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
if [ "${SHELLS}" = "zsh" ] || [ "${SHELLS}" = "both" ]; then
|
|
140
|
+
configure_shell "${USER_HOME}/.zshrc" "zsh"
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# === VERIFICATION ===
|
|
144
|
+
echo "[claude-session-dashboard] Verifying installation..."
|
|
145
|
+
if command -v claude-dashboard &>/dev/null; then
|
|
146
|
+
INSTALLED_VERSION="$(claude-dashboard --version 2>/dev/null || echo "unknown")"
|
|
147
|
+
echo "[claude-session-dashboard] ✓ claude-dashboard installed (${INSTALLED_VERSION})"
|
|
148
|
+
else
|
|
149
|
+
echo "[claude-session-dashboard] WARNING: claude-dashboard not found in PATH"
|
|
150
|
+
echo " The global npm install may need PATH adjustment"
|
|
151
|
+
echo " Try: npx claude-session-dashboard --version"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# === SUMMARY ===
|
|
155
|
+
echo ""
|
|
156
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
157
|
+
echo " Claude Session Dashboard Installation Complete"
|
|
158
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
159
|
+
echo ""
|
|
160
|
+
echo "Configuration:"
|
|
161
|
+
echo " • User: ${USERNAME}"
|
|
162
|
+
echo " • Version: ${DASHBOARD_VERSION}"
|
|
163
|
+
echo " • Default port: ${PORT}"
|
|
164
|
+
echo " • Shells: ${SHELLS}"
|
|
165
|
+
echo " • Settings persist to: /workspaces/.claude-dashboard/"
|
|
166
|
+
echo ""
|
|
167
|
+
echo "Usage:"
|
|
168
|
+
echo " claude-dashboard # Start on port ${PORT}"
|
|
169
|
+
echo " claude-dashboard -p 8080 # Start on custom port"
|
|
170
|
+
echo " claude-dashboard --help # Full options"
|
|
171
|
+
echo ""
|
|
172
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
@@ -89,10 +89,31 @@
|
|
|
89
89
|
"category": "development"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
|
-
"name": "
|
|
93
|
-
"description": "17 custom agents
|
|
92
|
+
"name": "agent-system",
|
|
93
|
+
"description": "17 custom agents with built-in agent redirection, CWD injection, and read-only bash enforcement",
|
|
94
94
|
"version": "1.0.0",
|
|
95
|
-
"source": "./plugins/
|
|
95
|
+
"source": "./plugins/agent-system",
|
|
96
|
+
"category": "development"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "skill-engine",
|
|
100
|
+
"description": "21 coding knowledge packs with auto-suggestion for frameworks, tools, and patterns",
|
|
101
|
+
"version": "1.0.0",
|
|
102
|
+
"source": "./plugins/skill-engine",
|
|
103
|
+
"category": "development"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "spec-workflow",
|
|
107
|
+
"description": "Specification lifecycle management: creation, refinement, building, reviewing, updating, and auditing",
|
|
108
|
+
"version": "1.0.0",
|
|
109
|
+
"source": "./plugins/spec-workflow",
|
|
110
|
+
"category": "workflow"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "session-context",
|
|
114
|
+
"description": "Session lifecycle hooks: git state injection, TODO harvesting, and commit reminders",
|
|
115
|
+
"version": "1.0.0",
|
|
116
|
+
"source": "./plugins/session-context",
|
|
96
117
|
"category": "development"
|
|
97
118
|
},
|
|
98
119
|
{
|
|
@@ -65,7 +65,7 @@ REDIRECT_MAP = {
|
|
|
65
65
|
}
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
When Claude decides to spawn an `Explore` agent, the hook rewrites it to `
|
|
68
|
+
When Claude decides to spawn an `Explore` agent, the hook rewrites it to `agent-system:explorer` — a custom agent with tailored instructions, tool restrictions, and model selection. The original prompt passes through unchanged.
|
|
69
69
|
|
|
70
70
|
### Custom Agent Definitions
|
|
71
71
|
|
|
@@ -138,7 +138,7 @@ elif "refactor" in prompt.lower():
|
|
|
138
138
|
target = "refactorer"
|
|
139
139
|
else:
|
|
140
140
|
target = "generalist"
|
|
141
|
-
updated = {**tool_input, "subagent_type": f"
|
|
141
|
+
updated = {**tool_input, "subagent_type": f"agent-system:{target}"}
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
### Block Certain Operations
|
|
@@ -197,7 +197,7 @@ This is how the auto-linter and syntax validator work — they inspect the resul
|
|
|
197
197
|
## File Layout
|
|
198
198
|
|
|
199
199
|
```
|
|
200
|
-
|
|
200
|
+
agent-system/
|
|
201
201
|
├── agents/ # Agent definitions (17 .md files)
|
|
202
202
|
│ ├── explorer.md
|
|
203
203
|
│ ├── architect.md
|
|
@@ -205,15 +205,10 @@ code-directive/
|
|
|
205
205
|
│ └── ...
|
|
206
206
|
├── hooks/
|
|
207
207
|
│ └── hooks.json # Hook registrations
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
│ └── skill-suggester.py # Suggests skills on prompt
|
|
213
|
-
└── skills/ # Skill definitions (16 directories)
|
|
214
|
-
├── fastapi/
|
|
215
|
-
├── svelte5/
|
|
216
|
-
└── ...
|
|
208
|
+
└── scripts/
|
|
209
|
+
├── redirect-builtin-agents.py # The redirection hook
|
|
210
|
+
├── inject-cwd.py # CWD injection for subagents
|
|
211
|
+
└── guard-readonly-bash.py # Read-only bash enforcement
|
|
217
212
|
```
|
|
218
213
|
|
|
219
214
|
## Writing Your Own
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent & Skill Quality Rubric
|
|
2
2
|
|
|
3
|
-
> Compiled from Anthropic's official documentation, Claude Code subagent docs, skill authoring best practices, and industry research on LLM agent design patterns. This rubric drives the quality review of all agents and skills in the `
|
|
3
|
+
> Compiled from Anthropic's official documentation, Claude Code subagent docs, skill authoring best practices, and industry research on LLM agent design patterns. This rubric drives the quality review of all agents in the `agent-system` plugin and skills in the `skill-engine` / `spec-workflow` plugins.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ description: >-
|
|
|
11
11
|
spawning a new instance, check if there is already a running or recently
|
|
12
12
|
completed claude-guide agent that you can resume using the "resume" parameter.
|
|
13
13
|
tools: Glob, Grep, Read, WebFetch, WebSearch
|
|
14
|
-
model:
|
|
14
|
+
model: haiku
|
|
15
15
|
color: cyan
|
|
16
16
|
memory:
|
|
17
17
|
scope: user
|