xtrm-tools 2.1.9 → 2.1.10

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/README.md CHANGED
@@ -174,7 +174,7 @@ Task intake and service routing for Docker service projects.
174
174
  ### Skill-Associated Hooks
175
175
 
176
176
  **skill-suggestion.py**
177
- - Skills: `prompt-improving`, `delegating`
177
+ - Skills: `prompt-improving`, `delegating`, `using-quality-gates`
178
178
  - Trigger: UserPromptSubmit
179
179
  - Purpose: Proactive skill suggestions based on prompt analysis
180
180
  - Config: `settings.json` → `skillSuggestions.enabled: true`
@@ -196,11 +196,20 @@ Task intake and service routing for Docker service projects.
196
196
  - Purpose: Enriches tool calls with knowledge graph context via `gitnexus augment`
197
197
  - Config: Auto-wired in `settings.json`
198
198
 
199
+ **gitnexus-impact-reminder.py**
200
+ - Trigger: UserPromptSubmit
201
+ - Purpose: Reminds to run impact analysis before editing code symbols
202
+ - Config: Auto-wired in `settings.json`
203
+
199
204
  ### Standalone Hooks
200
205
 
201
206
  **main-guard.mjs**
202
- - Trigger: PreToolUse (Write|Edit|MultiEdit|mcp__serena__rename_symbol|mcp__serena__replace_symbol_body|mcp__serena__insert_after_symbol|mcp__serena__insert_before_symbol)
203
- - Purpose: Blocks direct edits on protected branches with structured deny output
207
+ - Trigger: PreToolUse (Write|Edit|MultiEdit|Serena edit tools)
208
+ - Purpose: Blocks direct edits on protected branches (main/master) with structured deny output
209
+
210
+ **main-guard-post-push.mjs**
211
+ - Trigger: PostToolUse (Bash: git push)
212
+ - Purpose: After pushing feature branch, reminds to open PR, merge, and sync local
204
213
 
205
214
  **type-safety-enforcement.py**
206
215
  - Trigger: PreToolUse (Bash|Edit|Write)
@@ -211,10 +220,13 @@ Task intake and service routing for Docker service projects.
211
220
  - Purpose: Shared hook input/output helper
212
221
 
213
222
  **beads gate hooks** (installed with `xtrm install all`, or included when beads+dolt is available):
214
- - `beads-edit-gate.mjs` (PreToolUse)
215
- - `beads-commit-gate.mjs` (PreToolUse)
216
- - `beads-stop-gate.mjs` (Stop)
217
- - `beads-close-memory-prompt.mjs` (PostToolUse)
223
+ - `beads-edit-gate.mjs` (PreToolUse) — Blocks writes without active issue claim
224
+ - `beads-commit-gate.mjs` (PreToolUse) — Blocks commits with unresolved session claim
225
+ - `beads-stop-gate.mjs` (Stop) — Blocks session stop while claim remains open
226
+ - `beads-close-memory-prompt.mjs` (PostToolUse) — Prompts memory handoff after `bd close`
227
+
228
+ ### PostToolUse Hooks
229
+ - `main-guard-post-push.mjs` — After feature-branch push, reminds PR/merge/sync steps
218
230
 
219
231
  ## Project Skills
220
232
 
@@ -224,10 +236,9 @@ Task intake and service routing for Docker service projects.
224
236
 
225
237
  | Skill | Description | Hook Type |
226
238
  |-------|-------------|-----------|
239
+ | `quality-gates` | Unified PostToolUse code quality hooks — runs linting, type checking, and formatting on every edit | PostToolUse |
227
240
  | `service-skills-set` | Docker service expertise — gives Claude persistent knowledge about your services | SessionStart, PreToolUse, PostToolUse |
228
241
  | `tdd-guard` | Enforce Test-Driven Development — blocks implementation until failing tests exist | SessionStart, PreToolUse, UserPromptSubmit |
229
- | `ts-quality-gate` | TypeScript/ESLint/Prettier quality gate — runs on every edit, auto-fixes issues | PostToolUse |
230
- | `py-quality-gate` | Python ruff/mypy quality gate — linting, formatting, and type checking | PostToolUse |
231
242
 
232
243
  ### Installing Project Skills
233
244
 
@@ -237,12 +248,11 @@ xtrm install project list
237
248
 
238
249
  # Install a specific skill into your current project
239
250
  cd my-project
240
- xtrm install project service-skills-set # Docker service expertise
241
- xtrm install project tdd-guard # TDD enforcement
242
- xtrm install project ts-quality-gate # TypeScript quality
243
- xtrm install project py-quality-gate # Python quality
244
- xtrm install project all # Install every available project skill
245
- xtrm install project '*' # Same as above; quote to avoid shell expansion
251
+ xtrm install project quality-gates # Unified quality gates (Python + TypeScript)
252
+ xtrm install project service-skills-set # Docker service expertise
253
+ xtrm install project tdd-guard # TDD enforcement
254
+ xtrm install project all # Install every available project skill
255
+ xtrm install project '*' # Same as above; quote to avoid shell expansion
246
256
  ```
247
257
 
248
258
  **Note:** Project skills install Claude hooks and skills into your project's `.claude/` directory. Some skills require additional manual setup (e.g., installing npm packages or Python dependencies). Always read the documentation at `.claude/docs/<skill>-readme.md` after installation.
@@ -628,10 +638,16 @@ Once registered, skills activate automatically when Claude:
628
638
  ## Documentation
629
639
 
630
640
  ### Core Documentation
641
+ - [README.md](README.md) - Main documentation and quick start
631
642
  - [CHANGELOG.md](CHANGELOG.md) - Version history and breaking changes
632
643
  - [ROADMAP.md](ROADMAP.md) - Future enhancements and planned features
633
- - [AGENTS.md](AGENTS.md) - GitNexus quick reference for this project
644
+ - [AGENTS.md](AGENTS.md) - GitNexus + bd (beads) quick reference
634
645
  - [CLAUDE.md](CLAUDE.md) - Claude Code development guide
646
+ - [hooks.md](hooks.md) - Global hooks module reference
647
+ - [skills.md](skills.md) - Global skills catalog
648
+ - [project-skills.md](project-skills.md) - Project-local skills reference
649
+ - [mcp.md](mcp.md) - MCP servers configuration
650
+ - [testing.md](testing.md) - Production live testing checklist
635
651
 
636
652
  ### Skill Documentation
637
653
  - [skills/prompt-improving/README.md](skills/prompt-improving/README.md) - Prompt improvement skill
@@ -653,6 +669,10 @@ Once registered, skills activate automatically when Claude:
653
669
 
654
670
  | Version | Date | Highlights |
655
671
  | ------- | ---------- | -------------------------------------------------- |
672
+ | 2.1.9 | 2026-03-15 | Main-guard post-push hook, quality-gates unified, gitnexus impact enforcement |
673
+ | 2.1.8 | 2026-03-13 | Beads gate hooks hardening, service skills trinity updates |
674
+ | 2.1.7 | 2026-03-12 | GitNexus impact analysis hook, onboarding improvements |
675
+ | 2.1.0 | 2026-03-12 | Project skills engine, Claude Code-only focus, CLI rebrand |
656
676
  | 1.7.0 | 2026-02-25 | GitNexus integration, unified 3-phase sync, MCP CLI sync, env management |
657
677
  | 1.6.0 | 2026-02-24 | Documenting skill hardening (drift detection, INDEX blocks) |
658
678
  | 1.5.0 | 2026-02-23 | Service Skills Set (Trinity), git hooks, auto-activation |
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xtrm-cli",
3
- "version": "2.1.9",
3
+ "version": "2.1.10",
4
4
  "description": "Claude Code tools installer (skills, hooks, MCP servers)",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xtrm-tools",
3
- "version": "2.1.9",
3
+ "version": "2.1.10",
4
4
  "description": "Claude Code tools installer (skills, hooks, MCP servers)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -71,10 +71,17 @@ if (!isCodeFile(filePath)) {
71
71
  process.exit(0);
72
72
  }
73
73
 
74
+ const hookEnv = { ...process.env, VALIDATION_CLIENT: 'sdk' };
75
+ delete hookEnv.MODEL_TYPE;
76
+ delete hookEnv.TDD_GUARD_ANTHROPIC_API_KEY;
77
+ delete hookEnv.ANTHROPIC_API_KEY;
78
+ delete hookEnv.ANTHROPIC_BASE_URL;
79
+
74
80
  const result = spawnSync('tdd-guard', {
75
81
  input: payloadText,
76
82
  encoding: 'utf8',
77
83
  stdio: ['pipe', 'pipe', 'pipe'],
84
+ env: hookEnv,
78
85
  });
79
86
 
80
87
  if (result.stdout) process.stdout.write(result.stdout);
@@ -83,4 +90,14 @@ if (result.error) {
83
90
  process.exit(0);
84
91
  }
85
92
 
93
+ const combinedOutput = `${result.stdout || ''}\n${result.stderr || ''}`;
94
+ if (
95
+ combinedOutput.includes('Error during validation:') &&
96
+ combinedOutput.includes('API Error:') &&
97
+ combinedOutput.includes('not valid JSON')
98
+ ) {
99
+ // Validation backend/parsing failure: do not hard-block edits.
100
+ process.exit(0);
101
+ }
102
+
86
103
  process.exit(result.status ?? 0);