xtrm-tools 2.4.1 → 2.4.3
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 +15 -6
- package/cli/dist/index.cjs +738 -239
- package/cli/dist/index.cjs.map +1 -1
- package/cli/package.json +1 -1
- package/config/hooks.json +10 -0
- package/config/pi/extensions/core/adapter.ts +2 -14
- package/config/pi/extensions/core/guard-rules.ts +70 -0
- package/config/pi/extensions/core/session-state.ts +59 -0
- package/config/pi/extensions/main-guard.ts +10 -14
- package/config/pi/extensions/plan-mode/README.md +65 -0
- package/config/pi/extensions/plan-mode/index.ts +340 -0
- package/config/pi/extensions/plan-mode/utils.ts +168 -0
- package/config/pi/extensions/service-skills.ts +51 -7
- package/config/pi/extensions/session-flow.ts +117 -0
- package/hooks/beads-claim-sync.mjs +140 -14
- package/hooks/beads-compact-restore.mjs +41 -9
- package/hooks/beads-compact-save.mjs +36 -5
- package/hooks/beads-gate-messages.mjs +27 -1
- package/hooks/beads-memory-gate.mjs +24 -16
- package/hooks/beads-stop-gate.mjs +58 -8
- package/hooks/guard-rules.mjs +117 -0
- package/hooks/hooks.json +28 -18
- package/hooks/main-guard.mjs +22 -22
- package/hooks/quality-check.cjs +1286 -0
- package/hooks/quality-check.py +345 -0
- package/hooks/session-state.mjs +138 -0
- package/package.json +2 -1
- package/project-skills/quality-gates/.claude/settings.json +1 -24
- package/skills/creating-service-skills/SKILL.md +433 -0
- package/skills/creating-service-skills/references/script_quality_standards.md +425 -0
- package/skills/creating-service-skills/references/service_skill_system_guide.md +278 -0
- package/skills/creating-service-skills/scripts/bootstrap.py +326 -0
- package/skills/creating-service-skills/scripts/deep_dive.py +304 -0
- package/skills/creating-service-skills/scripts/scaffolder.py +482 -0
- package/skills/scoping-service-skills/SKILL.md +231 -0
- package/skills/scoping-service-skills/scripts/scope.py +74 -0
- package/skills/sync-docs/SKILL.md +235 -0
- package/skills/sync-docs/evals/evals.json +89 -0
- package/skills/sync-docs/references/doc-structure.md +104 -0
- package/skills/sync-docs/references/schema.md +103 -0
- package/skills/sync-docs/scripts/context_gatherer.py +246 -0
- package/skills/sync-docs/scripts/doc_structure_analyzer.py +495 -0
- package/skills/sync-docs/scripts/validate_doc.py +365 -0
- package/skills/sync-docs-workspace/iteration-1/benchmark.json +293 -0
- package/skills/sync-docs-workspace/iteration-1/benchmark.md +13 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
- package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-2/benchmark.json +297 -0
- package/skills/sync-docs-workspace/iteration-2/benchmark.md +13 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
- package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
- package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
- package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/benchmark.json +298 -0
- package/skills/sync-docs-workspace/iteration-3/benchmark.md +13 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
- package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
- package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
- package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
- package/skills/updating-service-skills/SKILL.md +136 -0
- package/skills/updating-service-skills/scripts/drift_detector.py +222 -0
- package/skills/using-quality-gates/SKILL.md +254 -0
- package/skills/using-service-skills/SKILL.md +108 -0
- package/skills/using-service-skills/scripts/cataloger.py +74 -0
- package/skills/using-service-skills/scripts/skill_activator.py +152 -0
- package/skills/using-service-skills/scripts/test_skill_activator.py +58 -0
- package/skills/using-xtrm/SKILL.md +34 -38
|
@@ -24,9 +24,9 @@ within this stack. Read it at session start and refer back when uncertain about
|
|
|
24
24
|
|---|---|
|
|
25
25
|
| **Skills** | Domain expertise loaded on demand |
|
|
26
26
|
| **Hooks** | Automated lifecycle enforcement (gates, suggestions, reminders) |
|
|
27
|
-
| **Project
|
|
27
|
+
| **Project Data (`xtrm init`)** | Per-repo bootstrap data (`.beads/`, `service-registry.json`, GitNexus index) |
|
|
28
28
|
| **MCP Servers** | Semantic tools: Serena (code), gitnexus (graph), context7 (docs), deepwiki |
|
|
29
|
-
| **CLI** | `xtrm install / status / reset / help` — sync and
|
|
29
|
+
| **CLI** | `xtrm install / status / finish / reset / help` — sync and closure tooling |
|
|
30
30
|
| **beads (bd)** | Git-backed issue tracker with session gate enforcement |
|
|
31
31
|
|
|
32
32
|
---
|
|
@@ -70,36 +70,33 @@ proceeding. Don't ask about things you can reasonably infer.
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
## Beads
|
|
73
|
+
## Beads + Session Flow — Session Protocol
|
|
74
74
|
|
|
75
|
-
This environment enforces a **beads session gate
|
|
76
|
-
|
|
75
|
+
This environment enforces a **beads session gate** plus **session-flow lifecycle gate**.
|
|
76
|
+
You cannot edit files without a claim, and you cannot safely end a closure-in-progress session.
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
# 1.
|
|
80
|
-
bd list --status=open
|
|
81
|
-
bd
|
|
82
|
-
|
|
83
|
-
bd kv set "claimed:<session_id>" "<id>"
|
|
79
|
+
# 1. Claim before editing
|
|
80
|
+
bd list --status=open
|
|
81
|
+
bd update <id> --claim
|
|
82
|
+
# hook auto-sets session claim + auto-creates worktree + writes .xtrm-session-state.json
|
|
84
83
|
|
|
85
|
-
# 2. Work
|
|
84
|
+
# 2. Work in the claimed branch/worktree
|
|
86
85
|
|
|
87
|
-
# 3. Close when
|
|
86
|
+
# 3. Close issue when implementation is done
|
|
88
87
|
bd close <id>
|
|
89
88
|
|
|
90
|
-
# 4. Session close protocol
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
gh pr create --fill
|
|
94
|
-
gh pr merge --squash
|
|
95
|
-
git checkout main && git reset --hard origin/main
|
|
89
|
+
# 4. Session close protocol (single command)
|
|
90
|
+
xtrm finish
|
|
91
|
+
# blocking: commit/push/pr-create/auto-merge poll/worktree cleanup
|
|
96
92
|
```
|
|
97
93
|
|
|
98
94
|
**Key rules:**
|
|
99
95
|
- One active claim per session
|
|
100
96
|
- Always work on a **feature branch**, never directly on `main`/`master`
|
|
101
|
-
- `main-guard.mjs` blocks
|
|
102
|
-
- `beads-stop-gate.mjs` blocks
|
|
97
|
+
- `main-guard.mjs` blocks edits on protected branches
|
|
98
|
+
- `beads-stop-gate.mjs` blocks stop for closure phases: `waiting-merge`, `conflicting`, `pending-cleanup`
|
|
99
|
+
- If blocked on stop: resolve state then re-run `xtrm finish`
|
|
103
100
|
|
|
104
101
|
---
|
|
105
102
|
|
|
@@ -161,12 +158,9 @@ You do not invoke these manually — they fire via PostToolUse hooks. If a gate
|
|
|
161
158
|
lint/type error before continuing. Do not suppress errors with `// eslint-disable` or `# type: ignore`
|
|
162
159
|
unless there is a genuine reason.
|
|
163
160
|
|
|
164
|
-
> **
|
|
165
|
-
>
|
|
166
|
-
>
|
|
167
|
-
> ```
|
|
168
|
-
> After install, verify `.claude/settings.json` includes PostToolUse hooks, and that the project
|
|
169
|
-
> has `eslint.config.*` (TS) or `pyproject.toml` / `ruff.toml` (Python) configured.
|
|
161
|
+
> **Global-first behavior**: quality-gates hooks are global; no per-project install is needed.
|
|
162
|
+
> Run `xtrm init` once per repository to bootstrap project data, then ensure the repo has
|
|
163
|
+
> `eslint.config.*` (TS) or `pyproject.toml` / `ruff.toml` (Python) configured so checks can run.
|
|
170
164
|
|
|
171
165
|
---
|
|
172
166
|
|
|
@@ -205,8 +199,9 @@ unless there is a genuine reason.
|
|
|
205
199
|
**Integrations:**
|
|
206
200
|
`obsidian-cli`, `hook-development`, `claude-api`
|
|
207
201
|
|
|
208
|
-
**
|
|
209
|
-
`quality-gates
|
|
202
|
+
**Global-first note:**
|
|
203
|
+
`quality-gates` and `service-skills` workflows are globally available after `xtrm install all`.
|
|
204
|
+
Use `xtrm init` to provision per-project data (beads + service-registry + GitNexus index).
|
|
210
205
|
|
|
211
206
|
---
|
|
212
207
|
|
|
@@ -216,14 +211,15 @@ These hooks run automatically — you cannot disable them mid-session:
|
|
|
216
211
|
|
|
217
212
|
| Hook | Trigger | Effect |
|
|
218
213
|
|---|---|---|
|
|
219
|
-
| `main-guard.mjs` | PreToolUse (Edit/Write/Serena) | Blocks edits on
|
|
214
|
+
| `main-guard.mjs` | PreToolUse (Edit/Write/Serena/Bash) | Blocks edits and unsafe Bash on protected branches |
|
|
220
215
|
| `beads-edit-gate.mjs` | PreToolUse (Edit/Write/Serena) | Blocks edits without active claim |
|
|
221
216
|
| `beads-commit-gate.mjs` | PreToolUse (Bash: git commit) | Blocks commit with unclosed claim |
|
|
222
|
-
| `beads-
|
|
223
|
-
| `
|
|
224
|
-
| `
|
|
225
|
-
| `
|
|
226
|
-
| `
|
|
217
|
+
| `beads-claim-sync.mjs` | PostToolUse (Bash claim command) | Syncs claim + creates worktree + writes session state |
|
|
218
|
+
| `beads-stop-gate.mjs` | Stop | Blocks stop for unresolved session-flow phases |
|
|
219
|
+
| `beads-memory-gate.mjs` | Stop | Prompts for persistent insights after closure |
|
|
220
|
+
| `beads-compact-save/restore.mjs` | PreCompact / SessionStart | Preserves claim + session state across compact |
|
|
221
|
+
| `serena-workflow-reminder.py` | SessionStart | Reminds semantic editing workflow |
|
|
222
|
+
| `quality-check.(cjs|py)` | PostToolUse (Edit/Write) | Runs lint + type checks automatically |
|
|
227
223
|
|
|
228
224
|
---
|
|
229
225
|
|
|
@@ -241,9 +237,9 @@ These hooks run automatically — you cannot disable them mid-session:
|
|
|
241
237
|
|
|
242
238
|
## Checklist Before Finishing Any Task
|
|
243
239
|
|
|
244
|
-
1. `gitnexus_detect_changes(
|
|
240
|
+
1. `gitnexus_detect_changes(...)` — confirms only expected files/flows changed
|
|
245
241
|
2. All d=1 dependents updated (if any signal from impact analysis)
|
|
246
|
-
3. Tests pass
|
|
242
|
+
3. Tests pass (targeted + relevant integration)
|
|
247
243
|
4. Beads issue closed: `bd close <id>`
|
|
248
|
-
5.
|
|
249
|
-
6.
|
|
244
|
+
5. Run `xtrm finish` for blocking closure lifecycle
|
|
245
|
+
6. Verify session state reached `cleanup-done` (or intentional re-entry state)
|