v0.34.0 — Namespace refactor + Documentation
What's New
Namespace refactor — every plugin owns its prefix
All tasks are now namespaced by plugin. No more guessing which plugin provides what.
./gradlew srcx # Source intelligence (15 tasks)
./gradlew opsx # Workflow + execution (11+ tasks)
./gradlew wrkx # Workspace management (4 tasks)
./gradlew claude # Claude Code CLI (12 tasks)
./gradlew copilot # GitHub Copilot CLI (8 tasks)
./gradlew codex # OpenAI Codex CLI (16 tasks)
./gradlew opencode # OpenCode CLI (20 tasks)| Old name | New name | Plugin |
|---|---|---|
| `opsx-find` | `srcx-find` | srcx |
| `opsx-context` | `srcx-context` | srcx |
| `opsx-rename` | `srcx-rename` | srcx |
| `opsx-clone` | `wrkx-clone` | wrkx |
| `opsx-pull` | `wrkx-pull` | wrkx |
| `opsx-propose` | `opsx-propose` | opsx (unchanged) |
| `opsx-exec` | `opsx-exec` | opsx (unchanged) |
One-line install
curl -fsSL https://raw.githubusercontent.com/ClankerGuru/openspec-gradle/main/install.sh | bashInstalls per-plugin init scripts to `~/.gradle/init.d/`:
| File | Plugin | Purpose |
|---|---|---|
| `00-wrkx.init.gradle.kts` | WrkxPlugin | Workspace management, composite builds |
| `01-srcx.init.gradle.kts` | SrcxPlugin | Source discovery, analysis, refactoring |
| `02-opsx.init.gradle.kts` | OpsxPlugin | Workflow, exec, agent sync, linting |
| `03-claude.init.gradle.kts` | ClaudePlugin | Claude Code CLI wrapper |
Multiple workspaces
The workspace plugin now defaults to the project root — no hardcoded paths. Put `workspace.json` in any directory and it just works:
~/dev/work/workspace.json
~/dev/personal/workspace.json
~/dev/oss/workspace.json
Module renames
| Old | New | Artifact |
|---|---|---|
| `plugin/code-intel` | `plugin/srcx` | `plugin-srcx` |
| `plugin/openspec` | `plugin/opsx` | `plugin-opsx` |
| `plugin/monolith` | `plugin/wrkx` | `plugin-wrkx` |
| `GradlePlugin` | `SrcxPlugin` | `zone.clanker.srcx` |
| `OpenSpecPlugin` | `OpsxPlugin` | `zone.clanker.opsx` |
| `MonolithPlugin` | `WrkxPlugin` | `zone.clanker.wrkx` |
| `monolith.json` | `workspace.json` | — |
Gradle properties renamed
| Old | New |
|---|---|
| `zone.clanker.openspec.agents` | `zone.clanker.opsx.agents` |
| `zone.clanker.openspec.verifyCommand` | `zone.clanker.opsx.verifyCommand` |
| `zone.clanker.openspec.monolithFile` | `zone.clanker.wrkx.configFile` |
| `zone.clanker.openspec.monolithDir` | `zone.clanker.wrkx.repoDir` |
No backward compat — old property names no longer work.
Documentation
- README.md for all 18 modules
- Root README with architecture diagram, module map, configuration reference
- Full `opsx-exec` flag documentation with examples
- Plugin catalog tasks showing all available commands
Per-proposal exec dashboard
Agent execution logs are now grouped by proposal:
.opsx/exec/
dashboard.md ← top-level dashboard
fix-version-metadata/
dashboard.md ← per-proposal dashboard
fvm-1.md ← agent log
exec-rewrite/
dashboard.md
er-2.md
Security fixes
- MoveTask: validate package name format + canonical path check
- RemoveTask: fix path traversal bypass with separator-aware prefix check
- SourceDiscovery: Windows path separator compatibility
Version metadata
- `VersionInfo.PLUGIN_VERSION` now returns real version (was "0.0.0")
- Generated skill files contain ``
- CLI_VERSION constants on all adapter plugins
Quick start
# Install
curl -fsSL https://raw.githubusercontent.com/ClankerGuru/openspec-gradle/main/install.sh | bash
# Use in any Gradle project
./gradlew srcx-context # project metadata
./gradlew srcx-find -Pquery=MyClass
./gradlew opsx-sync # generate agent files
./gradlew claude-run -Pprompt="Fix the auth bug"Breaking changes
- Task prefix: `opsx-find` → `srcx-find`, `opsx-clone` → `wrkx-clone`
- Properties: `zone.clanker.openspec.` → `zone.clanker.opsx.` / `zone.clanker.wrkx.*`
- Config file: `monolith.json` → `workspace.json`
- Classes: `GradlePlugin` → `SrcxPlugin`, `MonolithPlugin` → `WrkxPlugin`, `OpenSpecPlugin` → `OpsxPlugin`
- Init script: single `openspec.init.gradle.kts` → split `00-wrkx`, `01-srcx`, `02-opsx`, `03-claude`
Run `install.sh` to update your init scripts.