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|
|
|
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
|
|
241
|
-
xtrm install project
|
|
242
|
-
xtrm install project
|
|
243
|
-
xtrm install project
|
|
244
|
-
xtrm install project
|
|
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
|
|
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
package/package.json
CHANGED
|
@@ -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);
|