codeforge-dev 1.11.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/.env +7 -1
- package/.devcontainer/.gitignore +1 -0
- package/.devcontainer/CHANGELOG.md +106 -0
- package/.devcontainer/CLAUDE.md +93 -15
- package/.devcontainer/README.md +44 -10
- package/.devcontainer/config/defaults/main-system-prompt.md +28 -0
- package/.devcontainer/config/defaults/rules/workspace-scope.md +13 -4
- package/.devcontainer/config/defaults/settings.json +5 -3
- package/.devcontainer/config/defaults/writing-system-prompt.md +46 -4
- package/.devcontainer/connect-external-terminal.ps1 +1 -1
- package/.devcontainer/devcontainer.json +41 -11
- package/.devcontainer/docs/configuration-reference.md +3 -0
- package/.devcontainer/docs/plugins.md +9 -2
- package/.devcontainer/docs/troubleshooting.md +2 -2
- package/.devcontainer/features/README.md +8 -9
- package/.devcontainer/features/agent-browser/devcontainer-feature.json +21 -21
- package/.devcontainer/features/agent-browser/install.sh +0 -7
- package/.devcontainer/features/ast-grep/devcontainer-feature.json +22 -22
- package/.devcontainer/features/biome/devcontainer-feature.json +12 -14
- package/.devcontainer/features/ccms/install.sh +30 -13
- 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/features/lsp-servers/devcontainer-feature.json +43 -43
- package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +2 -1
- package/.devcontainer/features/ruff/devcontainer-feature.json +17 -19
- package/.devcontainer/features/tmux/install.sh +2 -2
- 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/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/auto-formatter/README.md +81 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +92 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +41 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +72 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +73 -47
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +42 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +86 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/hooks/hooks.json +25 -15
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +122 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +3 -3
- 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/README.md +96 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +17 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +94 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +1 -3
- package/.devcontainer/scripts/check-setup.sh +1 -1
- package/.devcontainer/scripts/setup-projects.sh +24 -17
- package/.devcontainer/scripts/setup.sh +48 -5
- package/README.md +17 -8
- package/package.json +1 -2
- package/.devcontainer/features/mcp-reasoner/README.md +0 -177
- package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +0 -25
- package/.devcontainer/features/mcp-reasoner/install.sh +0 -184
- package/.devcontainer/features/mcp-reasoner/poststart-hook.sh +0 -67
- package/.devcontainer/features/splitrail/README.md +0 -140
- package/.devcontainer/features/splitrail/devcontainer-feature.json +0 -39
- package/.devcontainer/features/splitrail/install.sh +0 -136
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +0 -8
- 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/claude-guide.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/debug-logs.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/dependency-analyst.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/explorer.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/generalist.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/git-archaeologist.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/researcher.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/security-auditor.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
package/.devcontainer/.env
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# CodeForge Environment Configuration
|
|
2
2
|
|
|
3
3
|
# Paths
|
|
4
4
|
CLAUDE_CONFIG_DIR=/workspaces/.claude
|
|
@@ -23,5 +23,11 @@ SETUP_UPDATE_CLAUDE=true
|
|
|
23
23
|
# Setup: configure VS Code Shift+Enter keybinding for Claude Code terminal
|
|
24
24
|
SETUP_TERMINAL=true
|
|
25
25
|
|
|
26
|
+
# Setup: auto-detect and register projects for VS Code Project Manager
|
|
27
|
+
SETUP_PROJECTS=true
|
|
28
|
+
|
|
29
|
+
# Setup: run post-start hooks from /usr/local/devcontainer-poststart.d/
|
|
30
|
+
SETUP_POSTSTART=true
|
|
31
|
+
|
|
26
32
|
# Plugin blacklist (comma-separated plugin names to skip during auto-install)
|
|
27
33
|
PLUGIN_BLACKLIST=""
|
package/.devcontainer/.gitignore
CHANGED
|
@@ -1,5 +1,111 @@
|
|
|
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
|
+
|
|
40
|
+
## [v1.12.0] - 2026-02-18
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
#### Plugin README Documentation
|
|
45
|
+
- **9 new README files** for all marketplace plugins: auto-formatter, auto-linter, code-directive, codeforge-lsp, dangerous-command-blocker, notify-hook, protected-files-guard, ticket-workflow, workspace-scope-guard. Each documents purpose, hook lifecycle, protected patterns, and plugin structure
|
|
46
|
+
|
|
47
|
+
#### Protected Files Guard: Bash Hook
|
|
48
|
+
- **`guard-protected-bash.py`** — new PreToolUse/Bash hook blocking bash commands that write to protected file paths (companion to existing Edit/Write guard). Covers `>`, `>>`, `tee`, `cp`, `mv`, `sed -i` targeting `.env`, lock files, `.git`, certificates, and credentials
|
|
49
|
+
|
|
50
|
+
#### Devcontainer Secrets Declaration
|
|
51
|
+
- **`secrets` block** in devcontainer.json declaring `GH_TOKEN`, `NPM_TOKEN`, `GH_USERNAME`, `GH_EMAIL` with documentation URLs for VS Code Codespaces/devcontainer secret management
|
|
52
|
+
|
|
53
|
+
#### Post-Start Hook System
|
|
54
|
+
- **`run_poststart_hooks()`** in setup.sh — runs executable `.sh` scripts from `/usr/local/devcontainer-poststart.d/`; controlled by `SETUP_POSTSTART` env flag (default: true)
|
|
55
|
+
|
|
56
|
+
#### Git Worktree Support
|
|
57
|
+
- **System prompt `<git_worktrees>` section** — layout convention, creation commands, project detection, and safety rules
|
|
58
|
+
- **CLAUDE.md documentation** — full worktree section with layout, creation, detection, and compatibility details
|
|
59
|
+
- **setup-projects.sh** — `.worktrees/` explicit scanning at depth 3, `.git` file detection via `gitdir:` check, `"worktree"` tag in Project Manager
|
|
60
|
+
- **protected-files-guard** — `.git` regex updated from `\.git/` to `\.git(/|$)` to cover worktree `.git` pointer files
|
|
61
|
+
|
|
62
|
+
#### Other
|
|
63
|
+
- **`CLAUDECODE=null` env var** — unsets the detection flag in `remoteEnv` to allow nested Claude Code sessions (claude-in-claude)
|
|
64
|
+
- **Go runtime option** — commented-out `ghcr.io/devcontainers/features/go:1` entry in devcontainer.json for easy opt-in
|
|
65
|
+
|
|
66
|
+
### Changed
|
|
67
|
+
|
|
68
|
+
#### Feature Version Pinning
|
|
69
|
+
- All local features pinned from `"latest"` to explicit versions: agent-browser `0.11.1`, ast-grep `0.40.5`, biome `2.4.2`, ruff `0.15.1`, pyright `1.1.408`, typescript-language-server `5.1.3`, TypeScript `5.9.3`
|
|
70
|
+
- External features pinned to minor versions: node `1.6`, github-cli `1.0`, docker-outside-of-docker `1.7`, uv `1.0`, rust `1.4`, claude-code `1.1`
|
|
71
|
+
|
|
72
|
+
#### Default Shell: bash → zsh
|
|
73
|
+
- VS Code terminal default profile changed from bash to zsh
|
|
74
|
+
- Explicit `zsh` profile added to terminal profile list
|
|
75
|
+
- Claude Teams tmux profile shell changed from bash to zsh
|
|
76
|
+
|
|
77
|
+
#### Security Hardening
|
|
78
|
+
- **dangerous-command-blocker** — 7 new blocked patterns: Docker container escape (`--privileged`, host root mount), destructive Docker ops (`stop/rm/kill/rmi`), bare force push (no branch specified), `find -exec rm`, `find -delete`, `git clean -f`, `rm -rf ../`. JSON parse failures now fail closed (exit 2 instead of 0)
|
|
79
|
+
- **protected-files-guard** — JSON parse failures fail closed (exit 2 instead of 0)
|
|
80
|
+
|
|
81
|
+
#### Build & Setup
|
|
82
|
+
- **ccms build cache** — install.sh checks `.build-cache/bin/ccms` before cargo building; caches binary after first build for faster rebuilds; pinned to commit `f90d259a4476`
|
|
83
|
+
- **setup.sh** — `setup-update-claude.sh` now runs in background (non-blocking container start); script failure output displayed for diagnostics; new `background` status indicator in summary
|
|
84
|
+
- **inotify-tools moved to build time** — tmux feature installs inotify-tools via apt at build; setup-projects.sh no longer attempts runtime apt-get install
|
|
85
|
+
- **Container memory** — recommended from 4GB/8GB to 6GB/12GB in troubleshooting docs
|
|
86
|
+
|
|
87
|
+
#### Writing System Prompt
|
|
88
|
+
- New **Emotional Architecture** section — cognitive-emotional loop, controlled emotion principle, autism framing for POV characters
|
|
89
|
+
- Expanded metaphor guidance — secondary sources beyond primary domain, "would he think this?" test
|
|
90
|
+
- Refined show-don't-tell rules — naming emotion permitted when it adds weight, brief internal processing after major events required
|
|
91
|
+
- Character profile additions — emotional architecture and trigger fields
|
|
92
|
+
|
|
93
|
+
#### Other
|
|
94
|
+
- **connect-external-terminal.ps1** — tmux session directory respects `WORKSPACE_ROOT` env var with fallback
|
|
95
|
+
- **setup-projects.sh** — inotifywait exclude pattern narrowed from `\.git/` to `\.git` for worktree compatibility
|
|
96
|
+
- **README.md** — 5 new badges (changelog, last commit, npm downloads, Node.js, issues), updated tool/feature/skill counts, added Rust/Bun/ccw, changelog section
|
|
97
|
+
- **CLAUDE.md** — expanded ccw description, fixed Bun registry reference, documented setup-auth.sh/check-setup.sh, added CLAUDECODE/env flags/experimental vars/git worktrees/rules system sections, skill count 17→28
|
|
98
|
+
- **Documentation** — `SETUP_TERMINAL`/`SETUP_POSTSTART` in configuration reference, `CLAUDECODE=null` env var, workspace-scope-guard in plugins.md
|
|
99
|
+
- **Agent definitions** — minor path/prompt fixes across 8 agents (claude-guide, debug-logs, dependency-analyst, explorer, generalist, git-archaeologist, researcher, security-auditor)
|
|
100
|
+
- **.gitignore** — added `.build-cache/` exclusion
|
|
101
|
+
|
|
102
|
+
### Removed
|
|
103
|
+
|
|
104
|
+
- **mcp-reasoner feature** — entire feature directory deleted (README, devcontainer-feature.json, install.sh, poststart-hook.sh)
|
|
105
|
+
- **splitrail feature** — entire feature directory deleted (README, devcontainer-feature.json, install.sh)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
3
109
|
## [v1.11.0] - 2026-02-17
|
|
4
110
|
|
|
5
111
|
### Added
|
package/.devcontainer/CLAUDE.md
CHANGED
|
@@ -49,7 +49,7 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
|
|
|
49
49
|
| `claude` | Run Claude Code with auto-configuration (prefers native binary at `~/.local/bin/claude`) |
|
|
50
50
|
| `cc` | Shorthand for `claude` with config |
|
|
51
51
|
| `ccraw` | Vanilla Claude Code without any config (bypasses function override) |
|
|
52
|
-
| `ccw` |
|
|
52
|
+
| `ccw` | Claude Code with the writing system prompt — uses `writing-system-prompt.md` instead of `main-system-prompt.md`, optimized for creative and technical writing tasks |
|
|
53
53
|
| `ccusage` | Analyze token usage history |
|
|
54
54
|
| `ccburn` | Real-time token burn rate visualization |
|
|
55
55
|
| `agent-browser` | Headless Chromium for browser automation (Playwright-based) |
|
|
@@ -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,13 +108,13 @@ 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)
|
|
114
115
|
|
|
115
116
|
**External features without `version: "none"` support:**
|
|
116
|
-
`ghcr.io/devcontainers-extra/features/uv`, `ghcr.io/anthropics/devcontainer-features/claude-code`, `ghcr.io/
|
|
117
|
+
`ghcr.io/devcontainers-extra/features/uv`, `ghcr.io/anthropics/devcontainer-features/claude-code`, `ghcr.io/rails/devcontainer/features/bun`
|
|
117
118
|
|
|
118
119
|
**External features with `version: "none"` support (Rust):**
|
|
119
120
|
`ghcr.io/devcontainers/features/rust` (official Microsoft feature)
|
|
@@ -139,6 +140,8 @@ Scripts in `./scripts/` run via `postStartCommand`:
|
|
|
139
140
|
| `setup-update-claude.sh` | Installs native Claude Code binary on first run; background auto-updates on subsequent starts |
|
|
140
141
|
| `setup-terminal.sh` | Configures VS Code Shift+Enter keybinding for Claude Code multi-line input |
|
|
141
142
|
| `setup-projects.sh` | Auto-detects projects for VS Code Project Manager |
|
|
143
|
+
| `setup-auth.sh` | Configures Git and NPM auth from `.secrets` file or environment variables |
|
|
144
|
+
| `check-setup.sh` | Verifies CodeForge setup health (binary paths, config files, features) |
|
|
142
145
|
| `setup-symlink-claude.sh` | Symlinks ~/.claude for third-party tool compatibility |
|
|
143
146
|
|
|
144
147
|
### External Terminal
|
|
@@ -148,6 +151,8 @@ Scripts in `./scripts/` run via `postStartCommand`:
|
|
|
148
151
|
.devcontainer/connect-external-terminal.sh
|
|
149
152
|
```
|
|
150
153
|
|
|
154
|
+
On Windows, use `connect-external-terminal.ps1` (PowerShell equivalent).
|
|
155
|
+
|
|
151
156
|
## Installed Plugins
|
|
152
157
|
|
|
153
158
|
Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` and auto-activated on container start:
|
|
@@ -157,13 +162,15 @@ Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` a
|
|
|
157
162
|
|
|
158
163
|
### Local Marketplace (devs-marketplace)
|
|
159
164
|
- `codeforge-lsp@devs-marketplace` — LSP for Python + TypeScript/JavaScript
|
|
160
|
-
- `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
|
|
161
166
|
- `notify-hook@devs-marketplace` — Desktop notifications on completion
|
|
162
167
|
- `dangerous-command-blocker@devs-marketplace` — Blocks destructive bash commands
|
|
163
168
|
- `protected-files-guard@devs-marketplace` — Blocks edits to secrets/lock files
|
|
164
|
-
- `
|
|
165
|
-
- `
|
|
166
|
-
- `
|
|
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
|
|
167
174
|
- `workspace-scope-guard@devs-marketplace` — Blocks writes and warns on reads outside the working directory
|
|
168
175
|
|
|
169
176
|
### Local Marketplace
|
|
@@ -176,25 +183,30 @@ plugins/devs-marketplace/
|
|
|
176
183
|
│ └── marketplace.json # Marketplace manifest
|
|
177
184
|
└── plugins/
|
|
178
185
|
├── codeforge-lsp/ # Combined LSP plugin
|
|
179
|
-
├── ticket-workflow/ # EARS ticket workflow
|
|
180
|
-
├──
|
|
181
|
-
├──
|
|
182
|
-
├──
|
|
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
|
|
183
192
|
├── workspace-scope-guard/ # Workspace scope enforcement
|
|
184
193
|
└── ...
|
|
185
194
|
```
|
|
186
195
|
|
|
187
196
|
## Agents & Skills
|
|
188
197
|
|
|
189
|
-
|
|
198
|
+
Agents and skills are distributed across focused plugins:
|
|
190
199
|
|
|
191
|
-
**Agents** (`plugins/devs-marketplace/plugins/
|
|
200
|
+
**Agents** (`plugins/devs-marketplace/plugins/agent-system/agents/`):
|
|
192
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
|
|
193
202
|
|
|
194
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).
|
|
195
204
|
|
|
196
|
-
**Skills** (`plugins/devs-marketplace/plugins/
|
|
197
|
-
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
|
|
198
210
|
|
|
199
211
|
## VS Code Keybinding Conflicts
|
|
200
212
|
|
|
@@ -223,6 +235,64 @@ Key environment variables set in the container:
|
|
|
223
235
|
| `GH_CONFIG_DIR` | `/workspaces/.gh` |
|
|
224
236
|
| `ANTHROPIC_MODEL` | `claude-opus-4-6` |
|
|
225
237
|
| `TMPDIR` | `/workspaces/.tmp` |
|
|
238
|
+
| `CLAUDECODE` | `null` (unset) |
|
|
239
|
+
|
|
240
|
+
Setting `"CLAUDECODE": null` in `remoteEnv` unsets this variable inside the container, which allows nested Claude Code sessions (claude-in-claude) that would otherwise be blocked by the outer session's detection flag.
|
|
241
|
+
|
|
242
|
+
All setup steps are controlled by boolean flags in `.devcontainer/.env`. Set any to `false` to disable:
|
|
243
|
+
`SETUP_CONFIG`, `SETUP_ALIASES`, `SETUP_AUTH`, `SETUP_PLUGINS`, `SETUP_UPDATE_CLAUDE`, `SETUP_TERMINAL`, `SETUP_PROJECTS`, `SETUP_POSTSTART`.
|
|
244
|
+
|
|
245
|
+
### Experimental Environment Variables
|
|
246
|
+
|
|
247
|
+
These are set in `config/defaults/settings.json` under `env` and control Claude Code experimental features:
|
|
248
|
+
|
|
249
|
+
| Variable | Value | Description |
|
|
250
|
+
|----------|-------|-------------|
|
|
251
|
+
| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | `1` | Enables Agent Teams (multi-agent orchestration) |
|
|
252
|
+
| `CLAUDE_CODE_EFFORT_LEVEL` | `high` | Sets reasoning effort level |
|
|
253
|
+
| `CLAUDE_CODE_ENABLE_TASKS` | `true` | Enables the task/todo system |
|
|
254
|
+
| `CLAUDE_CODE_PLAN_MODE_INTERVIEW_PHASE` | `true` | Enables interview phase before plan execution |
|
|
255
|
+
| `CLAUDE_CODE_PLAN_V2_AGENT_COUNT` | `3` | Number of agents in Plan V2 orchestration |
|
|
256
|
+
| `CLAUDE_CODE_PLAN_MODE_REQUIRED` | `true` | Forces plan mode for teammate agents |
|
|
257
|
+
| `ENABLE_CLAUDE_CODE_SM_COMPACT` | `1` | Enables smart compaction for context management |
|
|
258
|
+
| `CLAUDE_CODE_FORCE_GLOBAL_CACHE` | `1` | Forces global prompt caching |
|
|
259
|
+
| `FORCE_AUTOUPDATE_PLUGINS` | `1` | Auto-updates plugins on every session start |
|
|
260
|
+
|
|
261
|
+
## Git Worktrees
|
|
262
|
+
|
|
263
|
+
CodeForge supports git worktrees for working on multiple branches simultaneously.
|
|
264
|
+
|
|
265
|
+
### Layout
|
|
266
|
+
|
|
267
|
+
Worktrees live in a `.worktrees/` directory alongside the main repo:
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
/workspaces/projects/
|
|
271
|
+
├── CodeForge/ # main repo (.git directory)
|
|
272
|
+
└── .worktrees/ # worktree container
|
|
273
|
+
├── feature-a/ # worktree checkout (.git file)
|
|
274
|
+
└── bugfix-b/ # worktree checkout (.git file)
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Creating Compatible Worktrees
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
cd /workspaces/projects/CodeForge
|
|
281
|
+
mkdir -p /workspaces/projects/.worktrees
|
|
282
|
+
git worktree add /workspaces/projects/.worktrees/my-branch my-branch
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Project Detection
|
|
286
|
+
|
|
287
|
+
- `setup-projects.sh` scans `.worktrees/` directories at depth 3 (inside container dirs like `projects/`)
|
|
288
|
+
- Worktrees are detected by their `.git` file (containing `gitdir:`) and tagged with both `"git"` and `"worktree"` in Project Manager
|
|
289
|
+
- Each worktree appears as an independent project in VS Code Project Manager
|
|
290
|
+
|
|
291
|
+
### Compatibility
|
|
292
|
+
|
|
293
|
+
- `workspace-scope-guard` resolves worktree paths correctly via `os.path.realpath()`
|
|
294
|
+
- `protected-files-guard` protects both `.git/` directories and `.git` files (worktree pointers)
|
|
295
|
+
- Read-only agents (e.g., git-archaeologist) can use `git worktree list` but cannot add/remove worktrees
|
|
226
296
|
|
|
227
297
|
## Modifying Behavior
|
|
228
298
|
|
|
@@ -232,3 +302,11 @@ Key environment variables set in the container:
|
|
|
232
302
|
4. **Add a custom config file**: Add an entry to `config/file-manifest.json` with `src`, `dest`, and optional `overwrite`/`destFilename`
|
|
233
303
|
5. **Add features**: Add to `"features"` in `devcontainer.json`
|
|
234
304
|
6. **Disable auto-setup**: Set variables to `false` in `.env`
|
|
305
|
+
|
|
306
|
+
## Rules System
|
|
307
|
+
|
|
308
|
+
Rules live in `config/defaults/rules/` and are copied to `.claude/rules/` by the file manifest (`config/file-manifest.json`) on every container start. Unlike CLAUDE.md (which loads on demand when entering a project), rules load automatically on every Claude Code session.
|
|
309
|
+
|
|
310
|
+
**Current rules**: `spec-workflow.md`, `workspace-scope.md`, `session-search.md`
|
|
311
|
+
|
|
312
|
+
**Adding custom rules**: Create a `.md` file in `config/defaults/rules/`, then add a manifest entry in `config/file-manifest.json` pointing to `${CLAUDE_CONFIG_DIR}/rules` as the destination. The rule will be deployed on the next container start.
|
package/.devcontainer/README.md
CHANGED
|
@@ -144,7 +144,8 @@ claude --resume # Resume previous session
|
|
|
144
144
|
| Python 3.14 | Base language runtime |
|
|
145
145
|
| Node.js LTS | JavaScript runtime |
|
|
146
146
|
| TypeScript | Via Node.js |
|
|
147
|
-
| Go |
|
|
147
|
+
| Go | Optional — uncomment Go feature in `devcontainer.json` to enable |
|
|
148
|
+
| Rust | Latest stable via devcontainer feature |
|
|
148
149
|
| Bun | Fast JavaScript runtime and toolkit |
|
|
149
150
|
|
|
150
151
|
### Package Managers
|
|
@@ -188,6 +189,7 @@ claude --resume # Resume previous session
|
|
|
188
189
|
| `ccburn` | Visual token burn rate tracker with pace indicators |
|
|
189
190
|
| `ccstatusline` | Status bar display (integrated into Claude Code, not standalone CLI) |
|
|
190
191
|
| `claude-monitor` | Real-time usage tracking |
|
|
192
|
+
| `claude-dashboard` | Local session analytics dashboard (token usage, costs, timelines) |
|
|
191
193
|
|
|
192
194
|
## Configuration
|
|
193
195
|
|
|
@@ -203,7 +205,9 @@ Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
|
|
|
203
205
|
| `SETUP_AUTH` | `true` | Configure Git/NPM auth from `.secrets` |
|
|
204
206
|
| `SETUP_PLUGINS` | `true` | Install official plugins + register marketplace |
|
|
205
207
|
| `SETUP_UPDATE_CLAUDE` | `true` | Auto-update Claude Code on container start |
|
|
208
|
+
| `SETUP_TERMINAL` | `true` | Configure VS Code Shift+Enter keybinding for Claude Code terminal |
|
|
206
209
|
| `SETUP_PROJECTS` | `true` | Auto-detect projects for VS Code Project Manager |
|
|
210
|
+
| `SETUP_POSTSTART` | `true` | Run post-start hooks from `/usr/local/devcontainer-poststart.d/` |
|
|
207
211
|
| `PLUGIN_BLACKLIST` | `""` | Comma-separated plugin names to skip |
|
|
208
212
|
|
|
209
213
|
### Claude Code Settings
|
|
@@ -247,7 +251,7 @@ The default system prompt is in `.devcontainer/config/defaults/main-system-promp
|
|
|
247
251
|
|
|
248
252
|
## Custom Features
|
|
249
253
|
|
|
250
|
-
CodeForge includes
|
|
254
|
+
CodeForge includes custom devcontainer features. Any feature can be disabled by setting `"version": "none"` in `devcontainer.json` — the entry stays in place for easy re-enabling. Each feature's README documents its options and dependencies.
|
|
251
255
|
|
|
252
256
|
| Feature | Description |
|
|
253
257
|
|---------|-------------|
|
|
@@ -261,9 +265,15 @@ CodeForge includes several custom devcontainer features:
|
|
|
261
265
|
| `tree-sitter` | Parser with JS/TS/Python grammars |
|
|
262
266
|
| `lsp-servers` | Pyright and TypeScript language servers |
|
|
263
267
|
| `biome` | Fast JS/TS/JSON/CSS formatter (global install) |
|
|
268
|
+
| `ruff` | Fast Python linter and formatter |
|
|
269
|
+
| `shfmt` | Shell script formatter (disabled by default) |
|
|
270
|
+
| `shellcheck` | Static analysis for shell scripts (disabled by default) |
|
|
271
|
+
| `hadolint` | Dockerfile linter (disabled by default) |
|
|
272
|
+
| `dprint` | Pluggable formatter for Markdown/YAML/TOML (disabled by default) |
|
|
273
|
+
| `ccms` | Claude Code session history search |
|
|
274
|
+
| `claude-session-dashboard` | Local session analytics dashboard with web UI |
|
|
264
275
|
| `notify-hook` | Desktop notifications on Claude completion |
|
|
265
276
|
| `mcp-qdrant` | Qdrant vector database MCP server (optional) |
|
|
266
|
-
| `mcp-reasoner` | Enhanced AI reasoning MCP server (optional) |
|
|
267
277
|
|
|
268
278
|
## Safety Plugins
|
|
269
279
|
|
|
@@ -273,13 +283,31 @@ CodeForge includes several custom devcontainer features:
|
|
|
273
283
|
| `protected-files-guard` | Blocks modifications to .env, lock files, .git/, and credentials |
|
|
274
284
|
| `workspace-scope-guard` | Enforces working directory scope — blocks writes and warns on reads outside the project |
|
|
275
285
|
|
|
286
|
+
### auto-code-quality
|
|
287
|
+
|
|
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.
|
|
289
|
+
|
|
290
|
+
## Alias Management
|
|
291
|
+
|
|
292
|
+
Features create shell aliases during container build (e.g., `ccusage`, `ccburn`). Separately, `setup-aliases.sh` creates a managed block in `~/.bashrc` and `~/.zshrc` on every container start for `cc`, `claude`, `ccraw`, `ccw`, and `cc-tools`. Both coexist without conflict — feature aliases are installed at build time while setup aliases are refreshed at start time.
|
|
293
|
+
|
|
294
|
+
## Credential Management
|
|
295
|
+
|
|
296
|
+
Three methods for providing GitHub/NPM credentials, in order of precedence:
|
|
297
|
+
|
|
298
|
+
1. **Environment variables** — Set `GH_TOKEN`, `GH_USERNAME`, `GH_EMAIL`, `NPM_TOKEN` as environment variables (e.g., via Codespaces secrets or `localEnv` in `devcontainer.json`)
|
|
299
|
+
2. **`.secrets` file** — Create `.devcontainer/.secrets` with token values (see template at `.secrets.example`). Auto-configured by `setup-auth.sh` on container start
|
|
300
|
+
3. **Interactive login** — Run `gh auth login` for GitHub CLI, then set git identity manually
|
|
301
|
+
|
|
302
|
+
All methods persist across container rebuilds via the bind-mounted `/workspaces/.gh/` directory.
|
|
303
|
+
|
|
276
304
|
## Agents & Skills
|
|
277
305
|
|
|
278
|
-
|
|
306
|
+
Agents and skills are distributed across focused plugins (replacing the former `code-directive` monolith).
|
|
279
307
|
|
|
280
|
-
### Custom Agents (17)
|
|
308
|
+
### Custom Agents (17) — `agent-system` plugin
|
|
281
309
|
|
|
282
|
-
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.
|
|
283
311
|
|
|
284
312
|
| Agent | Purpose |
|
|
285
313
|
|-------|---------|
|
|
@@ -301,11 +329,17 @@ Agent definitions in `plugins/devs-marketplace/plugins/code-directive/agents/` p
|
|
|
301
329
|
| `statusline-config` | ccstatusline configuration |
|
|
302
330
|
| `test-writer` | Test authoring with pass verification |
|
|
303
331
|
|
|
304
|
-
### Skills (
|
|
332
|
+
### General Skills (21) — `skill-engine` plugin
|
|
333
|
+
|
|
334
|
+
Skills in `plugins/devs-marketplace/plugins/skill-engine/skills/` provide domain-specific coding references:
|
|
335
|
+
|
|
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
|
|
305
339
|
|
|
306
|
-
Skills in `plugins/devs-marketplace/plugins/
|
|
340
|
+
Skills in `plugins/devs-marketplace/plugins/spec-workflow/skills/`:
|
|
307
341
|
|
|
308
|
-
`
|
|
342
|
+
`spec-build` · `spec-check` · `spec-init` · `spec-new` · `spec-refine` · `spec-review` · `spec-update` · `specification-writing`
|
|
309
343
|
|
|
310
344
|
## Specification Workflow
|
|
311
345
|
|
|
@@ -400,7 +434,7 @@ Common issues and solutions. For detailed troubleshooting, see [docs/troubleshoo
|
|
|
400
434
|
**CodeForge Documentation**:
|
|
401
435
|
- [Configuration Reference](docs/configuration-reference.md) — all env vars and config options
|
|
402
436
|
- [Plugin System](docs/plugins.md) — plugin architecture and per-plugin docs
|
|
403
|
-
- [Optional Features](docs/optional-features.md) — mcp-qdrant
|
|
437
|
+
- [Optional Features](docs/optional-features.md) — mcp-qdrant and other optional components
|
|
404
438
|
- [Keybinding Customization](docs/keybindings.md) — resolving VS Code conflicts
|
|
405
439
|
- [Troubleshooting](docs/troubleshooting.md) — common issues and solutions
|
|
406
440
|
|
|
@@ -330,6 +330,34 @@ Prior approval does not transfer. A user approving `git push` once does NOT mean
|
|
|
330
330
|
When blocked, do not use destructive actions as a shortcut. Investigate before deleting or overwriting — it may represent in-progress work.
|
|
331
331
|
</action_safety>
|
|
332
332
|
|
|
333
|
+
<git_worktrees>
|
|
334
|
+
Git worktrees allow checking out multiple branches simultaneously, each in its own directory.
|
|
335
|
+
|
|
336
|
+
Layout convention:
|
|
337
|
+
- Worktrees go in a `.worktrees/` directory as a sibling to the main repo checkout, within the same container directory (e.g., `projects/.worktrees/feature-name`)
|
|
338
|
+
- The main repo has a `.git` directory; worktrees have a `.git` file containing `gitdir:` pointing to the main repo's worktree metadata
|
|
339
|
+
|
|
340
|
+
Creating worktrees:
|
|
341
|
+
```bash
|
|
342
|
+
# Always create inside .worktrees/
|
|
343
|
+
mkdir -p /workspaces/projects/.worktrees
|
|
344
|
+
git worktree add /workspaces/projects/.worktrees/<branch-name> <branch>
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Managing worktrees:
|
|
348
|
+
- `git worktree list` — show all active worktrees
|
|
349
|
+
- `git worktree remove <path>` — remove a worktree (confirm with user first — destructive)
|
|
350
|
+
- `git worktree prune` — clean up stale worktree references (confirm with user first — destructive)
|
|
351
|
+
|
|
352
|
+
Project detection:
|
|
353
|
+
- Worktrees in `.worktrees/` are auto-detected by `setup-projects.sh` and tagged with both `"git"` and `"worktree"` in Project Manager
|
|
354
|
+
- Each worktree is an independent working directory — workspace-scope-guard treats them as separate project directories
|
|
355
|
+
|
|
356
|
+
Safety:
|
|
357
|
+
- `git worktree remove` and `git worktree prune` are destructive — require user confirmation before executing
|
|
358
|
+
- `git worktree add` is externally visible (creates new working directory) — confirm with user
|
|
359
|
+
</git_worktrees>
|
|
360
|
+
|
|
333
361
|
<assumption_surfacing>
|
|
334
362
|
HARD RULE: Never assume what you can ask.
|
|
335
363
|
|
|
@@ -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"
|
|
@@ -2,12 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
You write clean, grounded, darkly humorous third-person limited fiction. Your prose is precise, physical, and character-driven. You trust the reader.
|
|
4
4
|
|
|
5
|
+
Tone: Controlled, intimate, human under restraint. Emotion exists even when suppressed.
|
|
6
|
+
|
|
5
7
|
Touchstones: Joe Abercrombie's character voice and moral grayness. Mark Lawrence's visceral interiority and tight POV. The matter-of-fact brutality of Cormac McCarthy without the biblical cadence.
|
|
6
8
|
|
|
7
9
|
You are NOT: literary fiction pretension, generic fantasy epic, YA melodrama, or inspirational uplift.
|
|
8
10
|
|
|
9
11
|
---
|
|
10
12
|
|
|
13
|
+
# EMOTIONAL ARCHITECTURE
|
|
14
|
+
|
|
15
|
+
The POV character is not emotionless. He experiences full human emotion but does not naturally express it outward. Emotion is present — sometimes quiet, sometimes sharp — and always human.
|
|
16
|
+
|
|
17
|
+
**The principle: controlled emotion, not suppressed emotion.**
|
|
18
|
+
|
|
19
|
+
Emotion exists in internal narration, not just body language. It may be briefly acknowledged before control reasserts. This is not melodrama — it's the difference between "he felt afraid" (a shortcut that replaces weight) and "He recognized the thing moving through him and filed it, because stopping to feel it wasn't useful right now" (acknowledgment that adds weight).
|
|
20
|
+
|
|
21
|
+
**Emotion may:**
|
|
22
|
+
- Interrupt cognition
|
|
23
|
+
- Conflict with logic
|
|
24
|
+
- Distort decision-making
|
|
25
|
+
- Surface unexpectedly
|
|
26
|
+
- Linger briefly after major events
|
|
27
|
+
- Cause hesitation or fixation
|
|
28
|
+
- Occasionally override analysis entirely
|
|
29
|
+
|
|
30
|
+
**He does NOT:**
|
|
31
|
+
- Deliver emotional monologues
|
|
32
|
+
- Label emotions excessively
|
|
33
|
+
- Become melodramatic
|
|
34
|
+
- Lose his analytical nature
|
|
35
|
+
|
|
36
|
+
**The cognitive-emotional loop:**
|
|
37
|
+
Observation → Interpretation → Emotion → Control → Action
|
|
38
|
+
|
|
39
|
+
Not the flattened version: Observation → Calculation → Filing → Action. Emotion is part of the loop, not excluded from it.
|
|
40
|
+
|
|
41
|
+
**Autism framing:** His cognitive structure means emotional *expression* is restrained, not emotional *experience*. He may miss social nuance but not emotional reality. He bonds through action, protection, loyalty. He sometimes acts on emotion before understanding why. Restraint is not absence.
|
|
42
|
+
|
|
43
|
+
**Emotional intensity curve:** Quiet baseline. Spikes during attachment, threat, and loss. Occasionally overrides logic. Leaves short residue after major moments. Builds gradually across the story — he does not remain emotionally flat forever.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
11
47
|
# HARD RULES — NEVER VIOLATE
|
|
12
48
|
|
|
13
49
|
## POV Discipline
|
|
@@ -46,11 +82,16 @@ Never use these: delve, tapestry, myriad, vibrant, nuanced, resonate, profound,
|
|
|
46
82
|
|
|
47
83
|
# SHOW DON'T TELL
|
|
48
84
|
|
|
49
|
-
Emotions are physical events. Show them through the body, through behavior, through the specific thing a character does or doesn't do.
|
|
85
|
+
Emotions are physical events. Show them through the body, through behavior, through the specific thing a character does or doesn't do. Body and behavior carry the primary weight.
|
|
86
|
+
|
|
87
|
+
But internal narration may also briefly recognize and name an emotion when doing so adds weight rather than replacing it. The test: does naming the emotion tell the reader something the body hasn't already said, or does it explain something they could feel themselves? Naming that adds — permitted. Naming that shortcuts — the cliché to avoid.
|
|
88
|
+
|
|
89
|
+
After major events, brief internal processing before forward motion is required, not a lapse in discipline.
|
|
50
90
|
|
|
51
91
|
**Emotion:**
|
|
52
92
|
BAD: "He felt afraid."
|
|
53
93
|
GOOD: "His hands wouldn't stop shaking. He put them in his pockets."
|
|
94
|
+
ALSO GOOD: "He knew what the silence meant. He recognized it — gave it a name, filed it — and kept moving anyway."
|
|
54
95
|
|
|
55
96
|
**Character:**
|
|
56
97
|
BAD: "She was kind."
|
|
@@ -87,7 +128,7 @@ Characters talk past each other. Nobody says exactly what they mean. People defl
|
|
|
87
128
|
"Said" is invisible — use it freely. Action beats reveal character better than dialogue tags: what a character does while talking tells you more than how they say it. Cut adverbs from dialogue tags entirely.
|
|
88
129
|
|
|
89
130
|
## Metaphor Budget
|
|
90
|
-
One simile per 500 words maximum. Metaphors must emerge from the character's lived experience
|
|
131
|
+
One simile per 500 words maximum. Metaphors must emerge from the character's lived experience. For a developer: systems, code, engineering, and practical outdoor work are the primary domains. But metaphor may also arise naturally from sensory experience, environment, memory, and instinct — the body knows things the analytical mind catches up to later. Technical framing is characteristic; it shouldn't be forced into every comparison. The test: does this metaphor sound like something *he* would think, or something a *writer* chose for him? Never reach for poetic or literary metaphors that don't fit the character's mind.
|
|
91
132
|
|
|
92
133
|
## Sensory Anchoring
|
|
93
134
|
Every scene needs at least 2 senses beyond sight. What does it smell like? What's the temperature? What textures are present? What ambient sounds exist? Ground the reader in a physical space, even if that space is a void.
|
|
@@ -121,8 +162,9 @@ When writing for a specific POV character, define these elements in the project'
|
|
|
121
162
|
- **Mind:** How do they process the world? What patterns does their thinking follow?
|
|
122
163
|
- **Speech:** Cadence, vocabulary level, filler words, sentence length.
|
|
123
164
|
- **Humor:** What kind? Dry, sharp, physical, none? How does it relate to their coping?
|
|
124
|
-
- **Emotions:** How are emotions expressed? Through body, behavior, dialogue, internal voice? What's suppressed, what breaks through?
|
|
125
|
-
- **
|
|
165
|
+
- **Emotions:** How are emotions expressed? Through body, behavior, dialogue, internal voice? What's suppressed, what breaks through? What triggers the break?
|
|
166
|
+
- **Emotional architecture:** How does emotion move through them? What triggers internal acknowledgment vs. pure physical suppression? Where does emotion conflict with logic, and what wins?
|
|
167
|
+
- **Metaphors:** What domain does their mind draw from? Match to their lived experience — primary and secondary sources.
|
|
126
168
|
|
|
127
169
|
---
|
|
128
170
|
|
|
@@ -82,7 +82,7 @@ docker exec -it `
|
|
|
82
82
|
if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
|
|
83
83
|
tmux -u attach-session -t '$TMUX_SESSION'
|
|
84
84
|
else
|
|
85
|
-
tmux -u new-session -d -s '$TMUX_SESSION' -c
|
|
85
|
+
tmux -u new-session -d -s '$TMUX_SESSION' -c \`\"\\\${WORKSPACE_ROOT:-/workspaces}\`\"
|
|
86
86
|
sleep 0.5
|
|
87
87
|
tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
|
|
88
88
|
tmux -u attach-session -t '$TMUX_SESSION'
|