Skip to content

Commit 0e8e0cb

Browse files
authored
Merge pull request #78 from AnExiledDev/refactor/cq-skill
container: /cq + /verify-tests skills, auto-mode off, Hermes CDP
2 parents 59b1f5c + 4d59873 commit 0e8e0cb

38 files changed

Lines changed: 836 additions & 1900 deletions

container/.devcontainer/AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ Declared in `settings.json` under `enabledPlugins`, auto-activated on start:
4848

4949
### Active
5050

51-
- **agent-system** — 4 custom agents (architect, claude-guide, explorer, generalist) + built-in agent redirection
51+
- **agent-system** — 4 custom agents (architect, claude-guide, explorer, generalist) + built-in agent redirection + `/verify-tests` skill
5252
- **skill-engine** — 2 coding knowledge packs (`/team`, `/agent-browser`) + auto-suggestion
53-
- **auto-code-quality**Auto-format + auto-lint + advisory test runner
53+
- **auto-code-quality**File tracking, syntax validation, `/cq` quality gate (format + lint + test on demand)
5454
- **session-context** — Git state injection, TODO harvesting, commit reminders
5555
- **workspace-scope-guard** — Blocks writes outside working directory
5656
- **dangerous-command-blocker** — Blocks destructive bash commands

container/.devcontainer/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
- **Profile aliases**`cc`, `claude`, `cc7`, `ccw`, `ccw7`, `cc-orc`, and `cc-orc7` now use the opus-4-7 200k settings profile. Added `cc5`, `cc6`, `cc61`, `cc71` plus matching `ccw*` and `cc-orc*` variants.
2727
- **Settings-based context bounds** — Claude launchers now pass `--settings` profile files instead of inline context env vars or `--model`, so model, context, and thinking controls stay in settings JSON.
2828
- **Router features disabled by default**`claude-code-router` and `oh-my-claude` are both present but configured with `version: "none"` in `devcontainer.json`; CCR autostart is also false.
29+
- **Auto mode disabled by default**`disableAutoMode: "disable"` added to the base settings profile, removing the `auto` permission mode from the Shift+Tab cycle and rejecting `--permission-mode auto` at startup. Users who want auto mode back can override via `~/.claude/settings.json`.
2930

3031
### oh-my-claude
3132

@@ -53,6 +54,7 @@
5354
### Agent System
5455

5556
- **All agents and skills set to `effort: max`** — active agents (claude-guide, explorer, generalist), all 14 archived agents in `agent-system/agents/_archived/`, both active skill-engine skills (`team`, `agent-browser`), all 22 archived skills across `skill-engine` and `agent-system`, and all 10 skills in currently disabled plugins (`git-workflow`, `prompt-snippets`, `spec-workflow`, `ticket-workflow`) now declare `effort: max`. This ensures any plugin re-enable in the future yields max-effort runs without further edits.
57+
- **Replaced automatic test hooks with `/verify-tests` skill** — removed `TaskCompleted` hook (`task-completed-check.py`), implementer Stop hook (`verify-no-regression.py`), refactorer PostToolUse hook (`verify-no-regression.py`), and test-writer Stop hook (`verify-tests-pass.py`). Test verification is now on-demand via `/verify-tests`, which detects the project's test framework and runs the suite with structured reporting.
5658

5759
### Plugin Cleanup
5860

@@ -63,6 +65,12 @@
6365
- **Disabled prompt-snippets plugin**`/ps` command no longer available.
6466
- **Stripped skill-suggester** — auto-suggestion now only covers `team` and `agent-browser` (was 25+ skills).
6567

68+
### Code Quality
69+
70+
- **Replaced auto-format/lint/test Stop hooks with `/cq` skill** — the three Stop hooks (`format-on-stop.py`, `lint-file.py`, `advisory-test-runner.py`) that ran automatically on every stop are replaced by a single `/cq` skill that Claude invokes explicitly. Eliminates race conditions with background agents, stops firing during orchestration pauses, and lets Claude act on lint/test results instead of ignoring passive context.
71+
- **New quality gate Stop hook** — lightweight `quality-gate.py` (~1ms) checks whether files were edited and no background tasks are running, then blocks the stop with a prompt to run `/cq`. Deletes temp files on block to prevent loops.
72+
- **New task tracker hooks**`task-tracker.py` handles `TaskCreated`/`TaskCompleted` events to maintain an active-task count. The quality gate skips blocking while tasks are running, preventing format/lint conflicts with background agents.
73+
6674
### CI
6775

6876
- **Canary pre-release publishing** — every push to `staging` that touches `container/` now auto-publishes a canary build to npm. Install with `npm i @coredirective/cf-container@canary` to try unreleased changes. Versions use the format `{version}-staging.{sha7}`.

container/.devcontainer/README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,21 @@ claude --resume # Resume previous session
218218
| `codex` | OpenAI Codex CLI terminal coding agent |
219219
| `hermes` | Nous Research Hermes Agent CLI (run `hermes setup` on first use) |
220220

221+
### Windows Host Chrome CDP
222+
223+
For Hermes, Vercel agent-browser, Codex, or Claude Code to control Chrome running on a Windows host, run this from an Administrator PowerShell at the repository root:
224+
225+
```powershell
226+
.\.devcontainer\scripts\start-hermes-chrome.ps1
227+
```
228+
229+
The devcontainer uses `HERMES_CDP_ENDPOINT=http://192.168.65.254:9223` for Docker Desktop. Verify the current host IPv4 from inside the container:
230+
231+
```bash
232+
CDP_HOST=$(getent ahostsv4 host.docker.internal | awk 'NR==1 {print $1}')
233+
curl http://$CDP_HOST:9223/json/version
234+
```
235+
221236
### Code Intelligence
222237
| Tool | Description |
223238
|------|-------------|
@@ -335,7 +350,7 @@ CodeForge includes custom devcontainer features. Any feature can be disabled by
335350

336351
### auto-code-quality
337352

338-
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.
353+
Code quality plugin at `plugins/devs-marketplace/plugins/auto-code-quality/`. Tracks edited files (PostToolUse), validates data file syntax instantly, tracks background tasks (TaskCreated/Completed), and gates stops with a lightweight check — if files were edited and no tasks are running, prompts Claude to run the `/cq` skill for formatting, linting (with auto-fix), and affected test execution. Supports Python, JS/TS, Go, Shell, Rust, Markdown, YAML, TOML, and Dockerfiles.
339354

340355
## Alias Management
341356

container/.devcontainer/defaults/codeforge/config/settings-opus-45-200k.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/defaults/codeforge/config/settings-opus-46-1m-400k.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/defaults/codeforge/config/settings-opus-46-200k.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/defaults/codeforge/config/settings-opus-47-1m-400k.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/defaults/codeforge/config/settings.base.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/defaults/codeforge/config/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"autoCompact": true,
44
"alwaysThinkingEnabled": true,
55
"skipDangerousModePermissionPrompt": true,
6+
"disableAutoMode": "disable",
67
"env": {
78
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
89
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",

container/.devcontainer/devcontainer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"CLAUDE_CONFIG_DIR": "/home/vscode/.claude",
2929
"GH_CONFIG_DIR": "/workspaces/.gh",
3030
"TMPDIR": "/workspaces/.tmp",
31+
"HERMES_CDP_ENDPOINT": "http://host.docker.internal:9223",
3132
"TERM": "${localEnv:TERM:xterm-256color}",
3233
"COLORTERM": "truecolor",
3334
"CLAUDECODE": null

0 commit comments

Comments
 (0)