Skip to content

Commit 2c26e3e

Browse files
committed
v1.14.0: Nuclear scope enforcement, plugin overhaul, ccstatusline config externalization
Major security hardening, plugin architecture changes, and developer experience improvements: - Nuclear workspace scope enforcement: blacklist system, two-layer bash detection, fail-closed error handling, CWD context injection - Agent system: quality gate hooks (TaskCompleted, TeammateIdle), debug skill, permissionMode on all agents - Skill engine: 6 new matchers, team skill v0.2.0, all skills rewritten with USE WHEN guidance - Ticket workflow: migrated from slash commands to skill-based approach - Hook output schema: all hooks migrated to hookSpecificOutput wrapper - ccstatusline config externalized to .devcontainer/config/defaults/ via file-manifest deployment - Remote install docs added to all 11 plugin READMEs and features README - Astro/Starlight documentation site, GitHub Actions, logos - Development rules added to CLAUDE.md (changelog + docs update requirements) - Removed auto-formatter and auto-linter plugins (consolidated into auto-code-quality)
1 parent f5e181c commit 2c26e3e

File tree

194 files changed

+20407
-2418
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+20407
-2418
lines changed

.devcontainer/CHANGELOG.md

Lines changed: 119 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,125 @@
11
# CodeForge Devcontainer Changelog
22

3-
## [v1.13.0] - 2026-02-21
3+
## [v1.14.0] - 2026-02-24
4+
5+
### Added
6+
7+
#### Nuclear Workspace Scope Enforcement
8+
- **Blacklist system**`/workspaces/.devcontainer/` permanently blocked for ALL operations (read, write, bash). Checked before allowlist, scope check, and cwd bypass. Cannot be overridden, even from workspace root
9+
- **Bash enforcement** — two-layer detection in `guard-workspace-scope.py`:
10+
- Layer 1: 20+ regex patterns extract write targets (`>`, `tee`, `cp`, `mv`, `touch`, `mkdir`, `rm`, `ln`, `rsync`, `chmod`, `chown`, `dd`, `wget -O`, `curl -o`, `tar -C`, `unzip -d`, `gcc -o`, `sqlite3`). System command exemption only when ALL targets resolve to system paths
11+
- Layer 2: regex scans entire command for any `/workspaces/` path string — catches inline scripts, variable assignments, quoted paths. No exemptions, always runs
12+
- **CWD context injector** (`inject-workspace-cwd.py`) — fires on SessionStart, UserPromptSubmit, PreToolUse, SubagentStart to reinforce working directory scope
13+
- **Fail-closed error handling** — JSON parse errors, exceptions, and unknown tools now exit 2 (block) instead of exit 0 (allow)
14+
15+
#### Agent System Enhancements
16+
- **`task-completed-check.py`** — quality gate hook (TaskCompleted) runs test suite before allowing task completion
17+
- **`teammate-idle-check.py`** — quality gate hook (TeammateIdle) prevents teammates from going idle with incomplete tasks
18+
- **`skills/debug/SKILL.md`** — structured log investigation skill replacing the old `/debug` slash command
19+
- **`permissionMode`** declared on all 17 agent definitions (plan for read-only, default for write-capable)
20+
- **Agent-system README** — full plugin documentation with hook lifecycle, agent table, quality gates
21+
22+
#### Skill Engine Enhancements
23+
- **6 new skill matchers** in `skill-suggester.py`: `spec-check`, `spec-init`, `spec-new`, `spec-refine`, `spec-update`, `team`
24+
- **Team skill expanded** (v0.2.0) — quality gate hooks, plan approval workflow, keyboard shortcuts, use case examples, best practices, limitations
25+
- **Skill-engine README** — full plugin documentation
26+
27+
#### New Features
28+
- **chromaterm** — terminal output colorizer via ChromaTerm2 YAML rules
29+
- **kitty-terminfo** — xterm-kitty terminfo for Kitty terminal compatibility
30+
31+
#### Documentation Site
32+
- **Astro/Starlight docs** (`docs/`) — full documentation portal with getting-started guides, plugin reference (12 pages), feature docs, customization, and API reference
33+
- **GitHub Actions**`deploy-docs.yml` (docs deployment), `publish-features.yml` (GHCR feature publishing), `release.yml` (release workflow)
34+
- **Logos** — CodeForgeLogo.png, CodeForgeLogoTr.png, github-avatar.png
35+
36+
#### Plugin Installation Documentation
37+
- **Remote install instructions** added to all 11 plugin READMEs — "From GitHub" section with clone + enabledPlugins setup from `https://github.com/AnExiledDev/CodeForge`
38+
- **GHCR feature paths** — features README updated with `ghcr.io/anexileddev/codeforge/<feature-name>:<version>` and devcontainer.json usage examples
39+
- **READMEs added** to session-context, skill-engine, spec-workflow plugins
40+
- **Install sections added** to workspace-scope-guard, codeforge-lsp, dangerous-command-blocker, protected-files-guard, notify-hook, ticket-workflow
41+
42+
#### Other
43+
- **Marketplace metadata**`marketplace.json` restructured with `metadata` object, `pluginRoot`, and `keywords` arrays for all plugins
44+
- **Port forwarding** for Claude Dashboard (port 7847) in devcontainer.json
45+
- **ChromaTerm wrapper** in setup-aliases.sh — `cc`/`claude`/`ccw` aliases pipe through `ct` when available
46+
- **`package.json` scripts** — added `prepublishOnly`, `docs:dev`, `docs:build`, `docs:preview`
47+
48+
#### ccstatusline Config Externalization
49+
- **Widget config extracted** from inline `jq -n` generation in `install.sh` into `config/defaults/ccstatusline-settings.json` — editable JSON file, single source of truth
50+
- **File-manifest deployment** — two new entries deploy the config to `~/.config/ccstatusline/settings.json` (if-changed) and `/usr/local/share/ccstatusline/settings.template.json` (always)
51+
- **`${HOME}` variable expansion** added to `setup-config.sh` — enables manifest entries targeting user home directory paths
52+
53+
#### Development Rules
54+
- **CLAUDE.md** (project root) — added changelog and documentation update rules: all changes must have a changelog entry and update relevant docs
55+
56+
### Changed
57+
58+
#### ccstatusline Feature
59+
- `install.sh` simplified — removed ~90 lines of inline JSON config generation, validation, and template creation. Config deployment now handled by file-manifest system
60+
61+
#### Workspace Scope Guard
62+
- Reads (Read, Glob, Grep) now **hard-blocked** outside scope — upgraded from warning (exit 0) to block (exit 2)
63+
- Allowlist trimmed to `/workspaces/.claude/` and `/tmp/` only — removed `/workspaces/.devcontainer/`, `/workspaces/.tmp/`, `/home/vscode/`
64+
- Hook timeout increased from 5s to 10s
65+
- Matcher expanded to include Bash tool
66+
67+
#### Hook Output Schema Migration
68+
- All hooks migrated to `hookSpecificOutput` wrapper with explicit `hookEventName`
69+
- `commit-reminder.py` — upgraded from advisory to blocking (`decision: block`)
70+
- `spec-reminder.py` — upgraded from advisory to blocking (`decision: block`)
71+
- `advisory-test-runner.py` — test failures now block with `decision: block`; passes/timeouts use `systemMessage`
72+
- `ticket-linker.py` — output wrapped in `hookSpecificOutput`
73+
- `git-state-injector.py`, `todo-harvester.py` — output wrapped in `hookSpecificOutput`
74+
75+
#### Ticket Workflow
76+
- Migrated from slash commands to skill-based approach — 4 slash commands and system-prompt.md replaced by skills directory
477

5-
Claude Code is an idiot sandwich and ignored my instructions and workspace scope because it's a god damned idiot.
78+
#### Skill Definitions
79+
- All 21+ SKILL.md files rewritten with USE WHEN / DO NOT USE guidance, action-oriented descriptions, bumped to v0.2.0
80+
- `skill-suggester.py` keyword maps overhauled with natural phrases and concrete identifiers
81+
- Skill suggestion output changed to mandatory directive format
82+
- SubagentStart hook removed — suggestions now fire on UserPromptSubmit only
83+
84+
#### Error Output
85+
- `block-dangerous.py` — errors now written to stderr (was JSON on stdout)
86+
- `guard-protected.py`, `guard-protected-bash.py` — errors now written to stderr
87+
88+
#### Features
89+
- `ccstatusline` — compact 3-line layout (was 8-line), `rawValue: true` on token widgets
90+
- `claude-session-dashboard` — default port 3000 → 7847, `--host 0.0.0.0` for external access
91+
- `ccms` — build cache moved from `.devcontainer/.build-cache/` to `${TMPDIR:-/tmp}/ccms-build-cache`
92+
93+
#### Configuration
94+
- `CLAUDE.md` (devcontainer) — condensed from ~308 to ~90 lines, removed redundant sections
95+
- `spec-workflow.md` rule — condensed, defers to system prompt `<specification_management>` section
96+
- `main-system-prompt.md` — expanded Agent Teams guidance: file ownership, task sizing, quality gate hooks, plan approval
97+
- Plugin `plugin.json` files — `version` field removed across all plugins
98+
99+
### Fixed
100+
- Stale references to deleted features (mcp-reasoner, splitrail, claude-code) removed from docs
101+
- Documentation counts updated (features: 21, agents: 17, skills: 34)
102+
- Version mismatch in README.md corrected
103+
- Auto-formatter/auto-linter references consolidated to auto-code-quality throughout
104+
- Code-directive plugin references updated to agent-system, skill-engine, spec-workflow
105+
- Personal project paths removed from .gitignore and .npmignore
106+
- setup.js stale feature references fixed (Reasoner MCP, Go → Rust)
107+
- `.secrets` added to .npmignore for npm publish safety
108+
- Duplicate "### Fixed" header in v1.5.3 changelog entry
109+
- NVM sourcing added to biome install script
110+
- Cleanup trap added to shellcheck install script
111+
112+
### Removed
113+
- **`auto-formatter` plugin** — deleted entirely (consolidated into auto-code-quality)
114+
- **`auto-linter` plugin** — deleted entirely (consolidated into auto-code-quality)
115+
- **`/debug` slash command** from agent-system (replaced by debug skill)
116+
- **4 ticket-workflow slash commands** (`ticket:new`, `ticket:work`, `ticket:review-commit`, `ticket:create-pr`) and `system-prompt.md` (replaced by skills)
117+
- **Optional features docs** for mcp-reasoner and splitrail (features no longer exist)
118+
- **SubagentStart hook** from skill-engine (suggestion now UserPromptSubmit only)
119+
120+
---
121+
122+
## [v1.13.0] - 2026-02-21
6123

7124
### Fixed
8125

@@ -488,8 +605,6 @@ Claude Code is an idiot sandwich and ignored my instructions and workspace scope
488605
- **ccstatusline powerline glyphs**: Powerline separators/caps were empty strings, rendering as underscores. Now uses proper Nerd Font glyphs (U+E0B0, U+E0B4, U+E0B6)
489606
- **Unicode rendering in external terminals**: tmux rendered ALL Unicode as underscores because `docker exec` doesn't propagate locale vars. External terminal scripts now pass `LANG`/`LC_ALL=en_US.UTF-8` and use `tmux -u` to force UTF-8 mode. Locale exports also added to `.bashrc`/`.zshrc` as permanent fallback
490607

491-
### Fixed
492-
493608
- **cc/claude aliases**: Converted from shell functions to simple aliases — functions were not reliably invoked across shell contexts (tmux, docker exec, external terminals), causing Claude to launch without config
494609
- **CLAUDE_CONFIG_DIR export**: Now exported in `.bashrc`/`.zshrc` directly, so credentials are found in all shells (not just VS Code terminals where `remoteEnv` applies)
495610

0 commit comments

Comments
 (0)