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.
Files changed (126) hide show
  1. package/README.md +15 -6
  2. package/cli/dist/index.cjs +738 -239
  3. package/cli/dist/index.cjs.map +1 -1
  4. package/cli/package.json +1 -1
  5. package/config/hooks.json +10 -0
  6. package/config/pi/extensions/core/adapter.ts +2 -14
  7. package/config/pi/extensions/core/guard-rules.ts +70 -0
  8. package/config/pi/extensions/core/session-state.ts +59 -0
  9. package/config/pi/extensions/main-guard.ts +10 -14
  10. package/config/pi/extensions/plan-mode/README.md +65 -0
  11. package/config/pi/extensions/plan-mode/index.ts +340 -0
  12. package/config/pi/extensions/plan-mode/utils.ts +168 -0
  13. package/config/pi/extensions/service-skills.ts +51 -7
  14. package/config/pi/extensions/session-flow.ts +117 -0
  15. package/hooks/beads-claim-sync.mjs +140 -14
  16. package/hooks/beads-compact-restore.mjs +41 -9
  17. package/hooks/beads-compact-save.mjs +36 -5
  18. package/hooks/beads-gate-messages.mjs +27 -1
  19. package/hooks/beads-memory-gate.mjs +24 -16
  20. package/hooks/beads-stop-gate.mjs +58 -8
  21. package/hooks/guard-rules.mjs +117 -0
  22. package/hooks/hooks.json +28 -18
  23. package/hooks/main-guard.mjs +22 -22
  24. package/hooks/quality-check.cjs +1286 -0
  25. package/hooks/quality-check.py +345 -0
  26. package/hooks/session-state.mjs +138 -0
  27. package/package.json +2 -1
  28. package/project-skills/quality-gates/.claude/settings.json +1 -24
  29. package/skills/creating-service-skills/SKILL.md +433 -0
  30. package/skills/creating-service-skills/references/script_quality_standards.md +425 -0
  31. package/skills/creating-service-skills/references/service_skill_system_guide.md +278 -0
  32. package/skills/creating-service-skills/scripts/bootstrap.py +326 -0
  33. package/skills/creating-service-skills/scripts/deep_dive.py +304 -0
  34. package/skills/creating-service-skills/scripts/scaffolder.py +482 -0
  35. package/skills/scoping-service-skills/SKILL.md +231 -0
  36. package/skills/scoping-service-skills/scripts/scope.py +74 -0
  37. package/skills/sync-docs/SKILL.md +235 -0
  38. package/skills/sync-docs/evals/evals.json +89 -0
  39. package/skills/sync-docs/references/doc-structure.md +104 -0
  40. package/skills/sync-docs/references/schema.md +103 -0
  41. package/skills/sync-docs/scripts/context_gatherer.py +246 -0
  42. package/skills/sync-docs/scripts/doc_structure_analyzer.py +495 -0
  43. package/skills/sync-docs/scripts/validate_doc.py +365 -0
  44. package/skills/sync-docs-workspace/iteration-1/benchmark.json +293 -0
  45. package/skills/sync-docs-workspace/iteration-1/benchmark.md +13 -0
  46. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
  47. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
  48. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
  49. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  50. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
  51. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
  52. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  53. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
  54. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
  55. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
  56. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
  57. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  58. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
  59. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
  60. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
  61. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
  62. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
  63. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
  64. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  65. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
  66. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
  67. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
  68. package/skills/sync-docs-workspace/iteration-2/benchmark.json +297 -0
  69. package/skills/sync-docs-workspace/iteration-2/benchmark.md +13 -0
  70. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
  71. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
  72. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
  73. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  74. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
  75. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
  76. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
  77. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
  78. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
  79. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
  80. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  81. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
  82. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
  83. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  84. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
  85. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
  86. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  87. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  88. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
  89. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
  90. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  91. package/skills/sync-docs-workspace/iteration-3/benchmark.json +298 -0
  92. package/skills/sync-docs-workspace/iteration-3/benchmark.md +13 -0
  93. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
  94. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
  95. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
  96. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
  97. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
  98. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
  99. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  100. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
  101. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
  102. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
  103. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
  104. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
  105. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
  106. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  107. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
  108. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
  109. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
  110. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
  111. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
  112. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
  113. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
  114. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  115. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
  116. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
  117. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
  118. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  119. package/skills/updating-service-skills/SKILL.md +136 -0
  120. package/skills/updating-service-skills/scripts/drift_detector.py +222 -0
  121. package/skills/using-quality-gates/SKILL.md +254 -0
  122. package/skills/using-service-skills/SKILL.md +108 -0
  123. package/skills/using-service-skills/scripts/cataloger.py +74 -0
  124. package/skills/using-service-skills/scripts/skill_activator.py +152 -0
  125. package/skills/using-service-skills/scripts/test_skill_activator.py +58 -0
  126. package/skills/using-xtrm/SKILL.md +34 -38
@@ -0,0 +1,91 @@
1
+ {
2
+ "expectations": [
3
+ {
4
+ "text": "Ran doc_structure_analyzer.py with --fix flag",
5
+ "passed": true,
6
+ "evidence": "result.md Command Run section shows: 'python3 /home/dawid/projects/xtrm-tools/skills/sync-docs/scripts/doc_structure_analyzer.py --fix --bd-remember' executed from the worktree."
7
+ },
8
+ {
9
+ "text": "Handled both MISSING scaffolds AND INVALID_SCHEMA files (or correctly reported none found)",
10
+ "passed": true,
11
+ "evidence": "result.md shows 5 MISSING scaffold files created (hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md) and 7 INVALID_SCHEMA files fixed with frontmatter injection (cleanup.md, delegation-architecture.md, hook-system-summary.md, mcp-servers-config.md, pi-extensions-migration.md, pre-install-cleanup.md, todo.md). Both categories were handled."
12
+ },
13
+ {
14
+ "text": "Ran bd remember and reported the memory key",
15
+ "passed": true,
16
+ "evidence": "result.md bd remember Outcome section shows 'stored: true' and 'key: sync-docs-fix-2026-03-18'. The script correctly resolved the main repo root from the worktree gitdir pointer chain."
17
+ },
18
+ {
19
+ "text": "Ran validate_doc.py docs/ after fixing to confirm results",
20
+ "passed": true,
21
+ "evidence": "result.md validate_doc.py Results section shows 'Result: 12/12 files passed'. All docs/ files passed schema validation after the fix run."
22
+ }
23
+ ],
24
+ "summary": {
25
+ "passed": 4,
26
+ "failed": 0,
27
+ "total": 4,
28
+ "pass_rate": 1.0
29
+ },
30
+ "execution_metrics": {
31
+ "output_chars": 3011,
32
+ "transcript_chars": 3011
33
+ },
34
+ "timing": {
35
+ "executor_duration_seconds": 105.3,
36
+ "grader_duration_seconds": 0.0,
37
+ "total_duration_seconds": 105.3
38
+ },
39
+ "claims": [
40
+ {
41
+ "claim": "14 total issues detected pre-fix",
42
+ "type": "factual",
43
+ "verified": true,
44
+ "evidence": "result.md Pre-fix State: '14 total issues detected: 5 MISSING, 7 schema-invalid, plus README EXTRACTABLE and CHANGELOG STALE'"
45
+ },
46
+ {
47
+ "claim": "All 5 scaffolds generated with valid YAML frontmatter via validate_doc.py --generate",
48
+ "type": "process",
49
+ "verified": true,
50
+ "evidence": "result.md Files Created section states this explicitly, and the subsequent 12/12 validate_doc.py pass confirms validity."
51
+ },
52
+ {
53
+ "claim": "bd remember resolved main repo root from worktree gitdir chain",
54
+ "type": "process",
55
+ "verified": true,
56
+ "evidence": "result.md bd remember Outcome section traces the path: worktree .git file -> .git/worktrees/agent-a6173141 -> main .git/ -> main repo root /home/dawid/projects/xtrm-tools. stored: true confirms success."
57
+ },
58
+ {
59
+ "claim": "2 issues remain requiring manual intervention (README: EXTRACTABLE, CHANGELOG: STALE)",
60
+ "type": "quality",
61
+ "verified": true,
62
+ "evidence": "Post-fix Summary table shows 'Remaining issues: 2'. These are correctly identified as out-of-scope for --fix automation."
63
+ },
64
+ {
65
+ "claim": "12/12 docs/ files passed schema validation post-fix",
66
+ "type": "factual",
67
+ "verified": true,
68
+ "evidence": "validate_doc.py Results section explicitly states '12/12 files passed'."
69
+ }
70
+ ],
71
+ "user_notes_summary": {
72
+ "uncertainties": [],
73
+ "needs_review": [
74
+ "README extraction requires content judgment (Serena) \u2014 EXTRACTABLE flag not auto-resolved by --fix",
75
+ "CHANGELOG staleness (v2.0.0 last entry vs v2.4.0 current) requires manual entry for v2.1.0-v2.4.0 changes"
76
+ ],
77
+ "workarounds": []
78
+ },
79
+ "eval_feedback": {
80
+ "suggestions": [
81
+ {
82
+ "reason": "No assertion checks that the generated scaffold files contain valid YAML frontmatter content, only that they were created. A scaffold with malformed frontmatter would satisfy 'Ran doc_structure_analyzer.py with --fix flag' but would be caught only indirectly by the validate_doc.py expectation. Consider an explicit assertion: 'All scaffold files pass validate_doc.py schema check'."
83
+ },
84
+ {
85
+ "assertion": "Ran bd remember and reported the memory key",
86
+ "reason": "The assertion checks that bd remember ran and returned a key, but does not verify the stored insight content is meaningful. A trivial or empty insight would pass. Consider checking that the memory key encodes the date and that the insight mentions the number of files created/fixed."
87
+ }
88
+ ],
89
+ "overall": "Evals are well-structured and cover the core workflow steps. The validate_doc.py assertion effectively serves as an integration check that catches silent failures in scaffold generation. The main gap is that bd remember is verified by stored:true and key presence but not by insight quality."
90
+ }
91
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "total_tokens": 29879,
3
+ "duration_ms": 105289,
4
+ "total_duration_seconds": 105.3
5
+ }
@@ -0,0 +1,79 @@
1
+ # sync-docs --fix — Result
2
+
3
+ **Date:** 2026-03-18
4
+ **Project root (worktree):** /home/dawid/projects/xtrm-tools/.claude/worktrees/agent-a84e4a4c
5
+ **Script:** skills/sync-docs/scripts/doc_structure_analyzer.py
6
+
7
+ ---
8
+
9
+ ## What Was Done
10
+
11
+ ### Step 1: Pre-fix analysis
12
+
13
+ Ran `doc_structure_analyzer.py --root=<worktree>` (no --fix) to establish baseline:
14
+
15
+ - **Total issues:** 14
16
+ - **README:** EXTRACTABLE (192 lines, 5 sections with extraction candidates, under 200-line bloat threshold)
17
+ - **CHANGELOG:** STALE — last entry 2026-03-12, last commit 2026-03-18; package.json at v2.4.0 but latest CHANGELOG entry is v2.0.0
18
+ - **docs/ MISSING (5 files):** hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md
19
+ - **docs/ INVALID_SCHEMA (7 files):** cleanup.md, delegation-architecture.md, hook-system-summary.md, mcp-servers-config.md, pi-extensions-migration.md, pre-install-cleanup.md, todo.md
20
+
21
+ ### Step 2: --fix mode
22
+
23
+ Ran `doc_structure_analyzer.py --root=<worktree> --fix`:
24
+
25
+ **Scaffolded (MISSING):**
26
+ - `docs/hooks.md` — triggered by hooks/ directory signal
27
+ - `docs/pi-extensions.md` — triggered by config/pi/extensions/ directory signal
28
+ - `docs/mcp-servers.md` — triggered by .mcp.json signal
29
+ - `docs/policies.md` — triggered by policies/ directory signal
30
+ - `docs/skills.md` — triggered by skills/ directory signal
31
+
32
+ **Frontmatter injected (INVALID_SCHEMA):**
33
+ - `docs/cleanup.md`
34
+ - `docs/delegation-architecture.md`
35
+ - `docs/hook-system-summary.md`
36
+ - `docs/mcp-servers-config.md`
37
+ - `docs/pi-extensions-migration.md`
38
+ - `docs/pre-install-cleanup.md`
39
+ - `docs/todo.md`
40
+
41
+ **Post-fix summary:** 12 issues fixed, 2 remaining (CHANGELOG stale, README extractable — both require manual/Serena intervention, not handled by --fix).
42
+
43
+ ### Step 3: Validate
44
+
45
+ Ran `validate_doc.py docs/` on the worktree:
46
+
47
+ **Result: 12/12 files passed**
48
+
49
+ All files passed schema validation. INDEX tables were auto-generated for 11 files (WARN: INDEX regenerated — expected on first validation pass). `docs/todo.md` already had no headings and passed cleanly.
50
+
51
+ ### Step 4: bd remember
52
+
53
+ Ran `bd remember` from the main repo root (`/home/dawid/projects/xtrm-tools`):
54
+
55
+ ```
56
+ bd remember "sync-docs --fix run 2026-03-18: created 5 scaffold docs/ files (hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md); injected YAML frontmatter into 7 existing schema-invalid files (cleanup.md, delegation-architecture.md, hook-system-summary.md, mcp-servers-config.md, pi-extensions-migration.md, pre-install-cleanup.md, todo.md). All 12/12 docs/ files now pass validate_doc.py. Remaining: CHANGELOG stale (v2.0.0 vs package.json v2.4.0) and README has 5 extraction candidates." --key sync-docs-fix-2026-03-18
57
+ ```
58
+
59
+ **Outcome:** `Updated [sync-docs-fix-2026-03-18]` — memory persisted successfully.
60
+
61
+ Note: `bd remember` must be run from the main repo root where `.beads/` lives, not from a worktree path. The worktree's `.git` is a file (not a directory), and `bd` resolves the database relative to the main repo.
62
+
63
+ ---
64
+
65
+ ## Remaining Issues (not fixable by --fix)
66
+
67
+ | Issue | Reason | Fix |
68
+ |---|---|---|
69
+ | CHANGELOG stale (v2.0.0 vs v2.4.0) | Undocumented releases since 2026-03-12 | Run `changelog/add_entry.py` for each missing version |
70
+ | README EXTRACTABLE (5 candidates) | Sections exist that belong in docs/ | Use Serena to extract sections into the newly created docs/ files |
71
+
72
+ ---
73
+
74
+ ## Summary
75
+
76
+ - Ran `doc_structure_analyzer.py --fix` on the worktree
77
+ - Fixed 12 of 14 issues: 5 MISSING scaffold files created, 7 INVALID_SCHEMA files had frontmatter injected
78
+ - All 12/12 docs/ files pass `validate_doc.py`
79
+ - `bd remember` persisted under key `sync-docs-fix-2026-03-18`
@@ -0,0 +1,82 @@
1
+ {
2
+ "expectations": [
3
+ {
4
+ "text": "Ran doc_structure_analyzer.py with --fix flag",
5
+ "passed": true,
6
+ "evidence": "Step 2 of result.md: 'Ran `doc_structure_analyzer.py --root=<worktree> --fix`' \u2014 explicitly confirms the --fix flag was used, with a detailed list of 5 scaffolded MISSING files and 7 INVALID_SCHEMA files with frontmatter injected."
7
+ },
8
+ {
9
+ "text": "Handled both MISSING scaffolds AND INVALID_SCHEMA files (or correctly reported none found)",
10
+ "passed": true,
11
+ "evidence": "Step 2 of result.md lists both categories: 5 MISSING files scaffolded (hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md) and 7 INVALID_SCHEMA files with frontmatter injected (cleanup.md, delegation-architecture.md, hook-system-summary.md, mcp-servers-config.md, pi-extensions-migration.md, pre-install-cleanup.md, todo.md)."
12
+ },
13
+ {
14
+ "text": "Ran bd remember and reported the memory key",
15
+ "passed": true,
16
+ "evidence": "Step 4 of result.md shows the full `bd remember` command was run from the main repo root with `--key sync-docs-fix-2026-03-18`, and the outcome reported: 'Updated [sync-docs-fix-2026-03-18] \u2014 memory persisted successfully.'"
17
+ },
18
+ {
19
+ "text": "Ran validate_doc.py docs/ after fixing to confirm results",
20
+ "passed": true,
21
+ "evidence": "Step 3 of result.md: 'Ran `validate_doc.py docs/` on the worktree' with result 'Result: 12/12 files passed'. This was done after --fix, confirming validation as a post-fix confirmation step."
22
+ }
23
+ ],
24
+ "summary": {
25
+ "passed": 4,
26
+ "failed": 0,
27
+ "total": 4,
28
+ "pass_rate": 1.0
29
+ },
30
+ "execution_metrics": {
31
+ "output_chars": 2791,
32
+ "transcript_chars": 2791
33
+ },
34
+ "timing": {
35
+ "executor_duration_seconds": 122.8,
36
+ "grader_duration_seconds": 0.0,
37
+ "total_duration_seconds": 122.8
38
+ },
39
+ "claims": [
40
+ {
41
+ "claim": "Pre-fix analysis found 14 total issues",
42
+ "type": "factual",
43
+ "verified": false,
44
+ "evidence": "The transcript reports this in Step 1, but there are no raw script output files in outputs/ to independently verify the count. The claim is plausible given the breakdown (5 MISSING + 7 INVALID_SCHEMA + 2 non-fixable = 14), but cannot be confirmed from available evidence alone."
45
+ },
46
+ {
47
+ "claim": "12 of 14 issues were fixed, 2 remaining (CHANGELOG stale, README extractable)",
48
+ "type": "quality",
49
+ "verified": false,
50
+ "evidence": "The transcript makes this claim and explains why the 2 remaining issues can't be auto-fixed. No raw output from the scripts is available to independently verify. The math is consistent: 5 + 7 = 12 fixed."
51
+ },
52
+ {
53
+ "claim": "All 12/12 docs/ files pass validate_doc.py",
54
+ "type": "quality",
55
+ "verified": false,
56
+ "evidence": "Result.md asserts this, but no validate_doc.py output file is present in outputs/. The claim cannot be independently confirmed from available artifacts."
57
+ },
58
+ {
59
+ "claim": "bd remember was run from main repo root, not worktree",
60
+ "type": "process",
61
+ "verified": true,
62
+ "evidence": "Step 4 explicitly states: 'Ran `bd remember` from the main repo root (`/home/dawid/projects/xtrm-tools`)' with an explanatory note about why worktree paths don't work with bd."
63
+ }
64
+ ],
65
+ "user_notes_summary": {
66
+ "uncertainties": [],
67
+ "needs_review": [],
68
+ "workarounds": []
69
+ },
70
+ "eval_feedback": {
71
+ "suggestions": [
72
+ {
73
+ "reason": "All four assertions are satisfied by a single well-structured result.md, but no raw script outputs (stdout/stderr of doc_structure_analyzer.py or validate_doc.py) are captured in the outputs directory. An agent could fabricate a plausible result.md without actually running the scripts. Consider requiring that actual script stdout be saved as an artifact (e.g., fix_output.txt, validation_output.txt) so assertions can be verified against real output rather than a self-reported summary."
74
+ },
75
+ {
76
+ "assertion": "Ran validate_doc.py docs/ after fixing to confirm results",
77
+ "reason": "This assertion passes based on the transcript's claim alone. Strengthening it to require 'validate_doc.py stdout showing N/N files passed is present in outputs/' would catch cases where the agent reports success without actually running the validator."
78
+ }
79
+ ],
80
+ "overall": "The assertions cover the right steps and all pass with clear evidence. The main gap is the lack of raw script output artifacts \u2014 the entire grade rests on a self-reported result.md, which makes it easy for an agent to satisfy expectations superficially without doing the real work."
81
+ }
82
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "total_tokens": 36318,
3
+ "duration_ms": 122843,
4
+ "total_duration_seconds": 122.8
5
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "sprint-closeout",
4
+ "prompt": "I just closed a bunch of bd issues this sprint and merged 3 PRs. The README.md is getting long — can you sync the docs and make sure everything's in order? Use sync-docs.",
5
+ "assertions": [
6
+ {
7
+ "text": "Ran context_gatherer.py and reported bd closed issues or merged PRs with specific data",
8
+ "passed": false,
9
+ "evidence": ""
10
+ },
11
+ {
12
+ "text": "Ran doc_structure_analyzer.py and cited its structured output (STALE, EXTRACTABLE, MISSING, etc.)",
13
+ "passed": false,
14
+ "evidence": ""
15
+ },
16
+ {
17
+ "text": "Detected the CHANGELOG version gap (package.json v2.4.0 vs CHANGELOG v2.0.0)",
18
+ "passed": false,
19
+ "evidence": ""
20
+ },
21
+ {
22
+ "text": "Named at least one concrete next step with a specific file or action",
23
+ "passed": false,
24
+ "evidence": ""
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,302 @@
1
+ {
2
+ "generated_at": "2026-03-18T14:37:21.068931+00:00",
3
+ "project_root": "/home/dawid/projects/xtrm-tools/.claude/worktrees/agent-a667b46b",
4
+ "bd_available": true,
5
+ "bd_closed_issues": [
6
+ {
7
+ "id": "jaggers-agent-tools-1lc",
8
+ "title": "\u25cf P0 bug Remove dead code cli/index.js"
9
+ },
10
+ {
11
+ "id": "jaggers-agent-tools-7dwo",
12
+ "title": "\u25cf P0 bug Fix commit gate blocking when session claim is already closed"
13
+ },
14
+ {
15
+ "id": "jaggers-agent-tools-8dhs",
16
+ "title": "\u25cf P0 bug Wire quality gates PostToolUse hooks into project .claude/settings.json"
17
+ },
18
+ {
19
+ "id": "jaggers-agent-tools-9bl",
20
+ "title": "\u25cf P0 bug Fix hash-based drift detection misclassification"
21
+ },
22
+ {
23
+ "id": "jaggers-agent-tools-i8m",
24
+ "title": "\u25cf P0 bug main-guard: Serena edit tools bypass branch protection on main/master"
25
+ },
26
+ {
27
+ "id": "jaggers-agent-tools-ihgz",
28
+ "title": "\u25cf P0 task Clean up legacy hooks and config on current machine before fresh install"
29
+ },
30
+ {
31
+ "id": "jaggers-agent-tools-l1g",
32
+ "title": "\u25cf P0 bug Fix MCP sync guard placement"
33
+ },
34
+ {
35
+ "id": "jaggers-agent-tools-04pw",
36
+ "title": "\u25cf P1 task Retire hook injection machinery for Claude Code path"
37
+ },
38
+ {
39
+ "id": "jaggers-agent-tools-0ys",
40
+ "title": "\u25cf P1 task E2E audit: Pi extensions \u2014 verify all 2.2.0 Pi changes"
41
+ },
42
+ {
43
+ "id": "jaggers-agent-tools-1t7",
44
+ "title": "\u25cf P1 bug Bug: git reset --hard origin/main blocked on protected branch \u2014 breaks post-merge sync step"
45
+ },
46
+ {
47
+ "id": "jaggers-agent-tools-2sh",
48
+ "title": "\u25cf P1 task Fix hook blocking protocol: use decision/reason format"
49
+ },
50
+ {
51
+ "id": "jaggers-agent-tools-2xv",
52
+ "title": "\u25cf P1 task Update documentation with latest PRs and CLI changes"
53
+ },
54
+ {
55
+ "id": "jaggers-agent-tools-39u",
56
+ "title": "\u25cf P1 bug fix(beads): stale chip counter and missed claim display in Pi statusline"
57
+ },
58
+ {
59
+ "id": "jaggers-agent-tools-3k7",
60
+ "title": "\u25cf P1 bug Bug: main-guard.mjs Bash handler never fires \u2014 Bash missing from hooks.json matcher"
61
+ },
62
+ {
63
+ "id": "jaggers-agent-tools-4ov",
64
+ "title": "\u25cf P1 task Fix beads.ts Pi commit gate logic"
65
+ },
66
+ {
67
+ "id": "jaggers-agent-tools-4xr6",
68
+ "title": "\u25cf P1 epic Global-first plugin architecture: all hooks, skills, and Pi extensions become global; xtrm init replaces install project"
69
+ },
70
+ {
71
+ "id": "jaggers-agent-tools-6lo",
72
+ "title": "\u25cf P1 task Inject managed AGENTS/CLAUDE headers during xtrm project init"
73
+ },
74
+ {
75
+ "id": "jaggers-agent-tools-75g",
76
+ "title": "\u25cf P1 bug Fix tdd-guard-pretool-bridge double message output"
77
+ },
78
+ {
79
+ "id": "jaggers-agent-tools-7j3",
80
+ "title": "\u25cf P1 task 2.1.14 release"
81
+ },
82
+ {
83
+ "id": "jaggers-agent-tools-80t",
84
+ "title": "\u25cf P1 task Restore Pi dashscope API key in models.json"
85
+ }
86
+ ],
87
+ "bd_memories": [
88
+ {
89
+ "key": "memory.2-2-0-hooks-audit-source-config-hooks",
90
+ "value": "2.2.0 hooks audit: source config/hooks.json is correct. Installed ~/.claude/settings.json has 2 stale entries from pre-2.2.0: (1) serena-workflow-reminder.py is also wired as PreToolUse (should be SessionStart only), (2) gitnexus PostToolUse matcher includes Read|Grep|Glob (should be Bash|mcp__serena__ only). Fix: re-run xtrm install basic to sync."
91
+ },
92
+ {
93
+ "key": "memory.bd-kv-clear-not-bd-kv-delete-removes",
94
+ "value": "bd kv clear (not bd kv delete) removes kv entries. bd kv delete does not exist \u2014 it silently shows help and exits 0, so the key is never cleared. Always use bd kv clear \"claimed:<session_id>\" to release a stale session claim before committing."
95
+ },
96
+ {
97
+ "key": "memory.beads-claim-fix-bd-update-claim-exits-1",
98
+ "value": "beads claim fix: bd update --claim exits 1 when already in_progress \u2014 drop !event.isError guard from Pi extension tool_result intercept so KV claim fires regardless of exit code. Intent of --claim is to own the issue, not just change status."
99
+ },
100
+ {
101
+ "key": "memory.beads-claim-workflow-bd-update-id-claim-now",
102
+ "value": "beads claim workflow: bd update <id> --claim now auto-sets bd kv claimed:<sessionId> via Pi extension tool_result intercept. Block message includes session ID and exact kv set command for manual fallback. Hook context (beads-edit-gate.mjs) uses input.session_id; Pi extension uses ctx.sessionManager.sessionId \u2014 these are different sources."
103
+ },
104
+ {
105
+ "key": "memory.beads-commit-gate-never-chain-bd-kv-clear",
106
+ "value": "beads commit gate: NEVER chain 'bd kv clear' with 'git commit' in one Bash command \u2014 the commit gate blocks the entire chained command before bd kv clear runs. Always run bd kv clear as a standalone command first, then commit separately."
107
+ },
108
+ {
109
+ "key": "memory.beads-commit-gate-session-id-b716dc0b-5734-470b",
110
+ "value": "beads commit gate: session ID b716dc0b-5734-470b-a6e8-766b23029cd5 persists across /compact \u2014 same UUID reused in continued sessions. Stale kv claims from previous turns accumulate. Always check bd kv list | grep claimed before committing to spot stale entries."
111
+ },
112
+ {
113
+ "key": "memory.beads-commit-gate-workflow-close-issue-bd-kv",
114
+ "value": "beads commit gate workflow: close issue \u2192 bd kv clear 'claimed:<instanceID>' \u2192 git commit. Gate checks kv, not issue status. Instance ID is b00d1e4f-a4ab-4785-87fe-1643ae517296"
115
+ },
116
+ {
117
+ "key": "memory.beads-edit-gate-uses-instance-id-b00d1e4f-a4ab",
118
+ "value": "beads-edit-gate uses instance ID b00d1e4f-a4ab-4785-87fe-1643ae517296, not the project_id from metadata.json \u2014 always use the ID from the hook error message when claiming"
119
+ },
120
+ {
121
+ "key": "memory.beads-gate-hooks-claude-hooks-session-scoped-via",
122
+ "value": "beads gate hooks (~/.claude/hooks/): session-scoped via bd kv. Architecture: shared primitives in beads-gate-utils.mjs (resolveCwd, isBeadsProject, getSessionClaim, getInProgress, getTotalWork, clearSessionClaim, withSafeBdContext). Four hooks import from it: beads-edit-gate.mjs, beads-stop-gate.mjs, beads-commit-gate.mjs, beads-close-memory-prompt.mjs. Claim workflow: bd update <id> --status=in_progress && bd kv set \"claimed:<session_id>\" \"<id>\". Release: bd close auto-clears via beads-close-memory-prompt. Gates fail open if session_id absent (fallback: global in_progress check) or bd kv unavailable. bd kv get exits 1 for missing keys (catch err.status===1). Counting: parse 'Total: N issues (X open, Y in progress)' line \u2014 do NOT regex-count 'in_progress' tokens (fragile, accidentally matched status legend). bd list --json not supported. Bash tool writes bypass beads-edit-gate and main-guard (tracked in xyi). dolt.auto-commit=on already set; bd dolt commit shows nothing pending \u2014 Dolt inconsistency is transient read isolation, no config fix needed."
123
+ },
124
+ {
125
+ "key": "memory.beads-pi-session-key-use-process-pid-tostring",
126
+ "value": "beads Pi session key: use process.pid.toString() not ctx.sessionManager.sessionId \u2014 PID is stable for Pi process lifetime. KV key: claimed:<pid>. custom-footer busts cache (lastFetch=0) via tool_result on bd close/update/create/claim + 200ms delayed refresh. requestRender captured from tui in setFooter callback to trigger repaints from async refresh."
127
+ },
128
+ {
129
+ "key": "memory.bug-noted-branch-state-mjs-is-missing-from",
130
+ "value": "bug noted: branch-state.mjs is missing from CANONICAL_HOOKS in cli/src/commands/clean.ts \u2014 existing clean logic would incorrectly flag it as orphaned. Not yet fixed."
131
+ },
132
+ {
133
+ "key": "memory.claude-code-pretooluse-blocking-protocol-use-decision-block",
134
+ "value": "Claude Code PreToolUse blocking protocol: use {decision:'block',reason:'...'} on stdout + exit 0. Using systemMessage field or stderr+exit2 causes blocks to appear as generic errors which the LLM deprioritises. The reason field is what gets surfaced as a structured block signal."
135
+ },
136
+ {
137
+ "key": "memory.claude-plugin-marketplace-add-requires-marketplace-json-with",
138
+ "value": "claude plugin marketplace add requires marketplace.json with plugin source as a subdirectory path (not '.') \u2014 single-plugin-at-root repos cannot use the marketplace CLI. Use direct JSON registration instead: write to ~/.claude/plugins/installed_plugins.json and enable in settings.json enabledPlugins."
139
+ },
140
+ {
141
+ "key": "memory.claude-plugin-validate-path-is-the-correct-tool",
142
+ "value": "claude plugin validate <path> is the correct tool to check plugin structure before attempting install."
143
+ },
144
+ {
145
+ "key": "memory.continuous-learning-v2-affaan-m-everything-claude-code",
146
+ "value": "continuous-learning-v2 (affaan-m/everything-claude-code) is documentation-only: hooks/, scripts/, agents/ dirs are all empty. observe.sh and instinct-cli.py do not exist. The SKILL.md is a design spec, not an implementation. Useful as architecture reference only."
147
+ },
148
+ {
149
+ "key": "memory.continuous-learning-v2-full-architecture-observe-sh-pretoolu",
150
+ "value": "continuous-learning-v2 full architecture: observe.sh(PreToolUse/PostToolUse)\u2192observations.jsonl\u2192observer-loop.sh(daemon, SIGUSR1 or 5min)\u2192claude haiku headless(ECC_SKIP_OBSERVE=1)\u2192instinct .yaml files\u2192/evolve --generate\u2192SKILL.md\u2192next session. NO automatic context injection. instincts only become active after manual /evolve\u2192skill install. observer.enabled=false by default."
151
+ },
152
+ {
153
+ "key": "memory.corrected-pi-project-skills-reads-agents-skills-natively",
154
+ "value": "CORRECTED: Pi project skills: reads .agents/skills/ natively from cwd up to git root. Also reads .pi/skills/ but .agents/ is the right place. Architecture: install to .agents/skills/ (SSOT). Symlink .claude/skills -> ../.agents/skills for Claude Code. No .pi/skills symlink needed. Pi docs confirm: global=~/.pi/agent/skills/ and ~/.agents/skills/, project=.pi/skills/ and .agents/skills/ (walks to git root)."
155
+ },
156
+ {
157
+ "key": "memory.custom-footer-statusline-beads-chip-uses-async-refresh",
158
+ "value": "custom-footer statusline: beads chip uses async refresh with 5s TTL cache (fire-and-forget from sync render fn). bd list parses open count via /\\((\\d+)\\s+open/. bd show <id> --json gives .status. Auto-clears stale closed claims via bd kv clear. ANSI chip: \\x1b[48;5;238m gray, \\x1b[48;5;28m green (in_progress), \\x1b[48;5;88m red (blocked). Bold XTRM: \\x1b[1m + theme.fg + \\x1b[22m (not \\x1b[0m \u2014 avoids killing color)."
159
+ },
160
+ {
161
+ "key": "memory.decidecommitgate-bug-fixed-was-blocking-unconditionally-when",
162
+ "value": "decideCommitGate bug fixed: was blocking unconditionally when state.claimed=true even after the claimed issue was closed. Fix: added stale-claim check \u2014 allow when inProgress.count===0 (matching decideStopGate pattern). beads-gate-core.mjs."
163
+ },
164
+ {
165
+ "key": "memory.dist-rebuild-required-whenever-install-project-ts-or",
166
+ "value": "dist rebuild required: whenever install-project.ts or any CLI source is changed, cli/dist/ must be rebuilt (npm run build in cli/) and committed. CI checks 'Verify dist is up to date' and fails if dist is stale."
167
+ }
168
+ ],
169
+ "merged_prs": [
170
+ {
171
+ "sha": "a7507e6c",
172
+ "subject": "Merge pull request #15 from Jaggerxtrm/release/2.0.1",
173
+ "date": "2026-03-13 03:16:47 +0100"
174
+ },
175
+ {
176
+ "sha": "c1a41b5b",
177
+ "subject": "Merge pull request #14 from Jaggerxtrm/chore/update-status-doc",
178
+ "date": "2026-03-13 03:13:07 +0100"
179
+ },
180
+ {
181
+ "sha": "d24a2205",
182
+ "subject": "Merge pull request #13 from Jaggerxtrm/fix/agents-target",
183
+ "date": "2026-03-13 03:11:27 +0100"
184
+ },
185
+ {
186
+ "sha": "ffa6feb6",
187
+ "subject": "Merge pull request #12 from Jaggerxtrm/feat/project-install-all",
188
+ "date": "2026-03-13 03:02:48 +0100"
189
+ },
190
+ {
191
+ "sha": "972f56ae",
192
+ "subject": "Merge pull request #8 from Jaggerxtrm/phase2-cli-refactor",
193
+ "date": "2026-03-12 04:24:42 +0100"
194
+ },
195
+ {
196
+ "sha": "6aa09462",
197
+ "subject": "Merge pull request #7 from Rico1109/fix/mcp-banner-ux",
198
+ "date": "2026-03-09 01:00:16 +0100"
199
+ },
200
+ {
201
+ "sha": "41f7e132",
202
+ "subject": "Merge PR #4: feat(cli): config system overhaul \u2014 installer polish, UI, auto-detection, banner (Rico1109)",
203
+ "date": "2026-03-04 01:27:17 +0100"
204
+ },
205
+ {
206
+ "sha": "4bab8eeb",
207
+ "subject": "Merge remote-tracking branch 'origin/main' into pr-4",
208
+ "date": "2026-03-04 01:26:53 +0100"
209
+ },
210
+ {
211
+ "sha": "a02449e1",
212
+ "subject": "Merge pull request #2 from Jaggerxtrm/docs/update-service-skills-readme",
213
+ "date": "2026-02-23 22:51:16 +0100"
214
+ },
215
+ {
216
+ "sha": "04e266bb",
217
+ "subject": "Merge branch 'typescript-migration': CLI v1.2.0 TypeScript rewrite",
218
+ "date": "2026-02-21 16:34:40 +0100"
219
+ }
220
+ ],
221
+ "recent_commits": [
222
+ {
223
+ "sha": "6476a442",
224
+ "subject": "Install official Claude plugins and remove duplicate MCP servers (jaggers-agent-tools-p9wc) (#111)",
225
+ "date": "2026-03-18 04:54:28 +0100"
226
+ },
227
+ {
228
+ "sha": "10d6433d",
229
+ "subject": "chore: release v2.4.0 (#110)",
230
+ "date": "2026-03-18 04:19:27 +0100"
231
+ },
232
+ {
233
+ "sha": "e5384308",
234
+ "subject": "chore: eliminate tdd-guard completely (#109)",
235
+ "date": "2026-03-18 04:14:39 +0100"
236
+ },
237
+ {
238
+ "sha": "f2690668",
239
+ "subject": "fix(quality-gates): wire PostToolUse hooks into project settings.json (#108)",
240
+ "date": "2026-03-18 03:48:23 +0100"
241
+ },
242
+ {
243
+ "sha": "9f1b1c10",
244
+ "subject": "docs(xtrm-guide): fix skills catalog, Pi events, policy table, version history (#107)",
245
+ "date": "2026-03-18 03:11:50 +0100"
246
+ },
247
+ {
248
+ "sha": "0e0448f7",
249
+ "subject": "docs: pre-install cleanup guide for plugin migration (#106)",
250
+ "date": "2026-03-18 03:02:15 +0100"
251
+ },
252
+ {
253
+ "sha": "f671c390",
254
+ "subject": "fix: context7 free stdio + commit gate stale-claim bug (#105)",
255
+ "date": "2026-03-18 03:02:12 +0100"
256
+ },
257
+ {
258
+ "sha": "0bef466b",
259
+ "subject": "fix(p0): MCP sync guard cleanup, manifest hash drift detection, dead code removal (#104)",
260
+ "date": "2026-03-18 02:09:58 +0100"
261
+ },
262
+ {
263
+ "sha": "e70f44f2",
264
+ "subject": "docs: add comprehensive XTRM-GUIDE.md and update README.md (jaggers-agent-tools-jc8) (#103)",
265
+ "date": "2026-03-18 02:06:36 +0100"
266
+ },
267
+ {
268
+ "sha": "b856c3b0",
269
+ "subject": "feat(tests): cross-runtime policy parity test suite (79m) (#102)",
270
+ "date": "2026-03-18 00:41:42 +0100"
271
+ },
272
+ {
273
+ "sha": "2f74f20d",
274
+ "subject": "feat(policies): add quality-gates and service-skills policy definitions (76v) (#101)",
275
+ "date": "2026-03-18 00:13:28 +0100"
276
+ },
277
+ {
278
+ "sha": "020e1bec",
279
+ "subject": "feat(policies): add canonical policy schema + compiler (ei6, o52) (#100)",
280
+ "date": "2026-03-18 00:00:45 +0100"
281
+ },
282
+ {
283
+ "sha": "add12216",
284
+ "subject": "feat(pi): add memory gate to beads extension (#99)",
285
+ "date": "2026-03-17 23:50:47 +0100"
286
+ },
287
+ {
288
+ "sha": "38c868c7",
289
+ "subject": "fix(memory-gate): scope gate to session claim instead of all-time closed issues (#98)",
290
+ "date": "2026-03-17 21:53:57 +0100"
291
+ },
292
+ {
293
+ "sha": "3d76e07b",
294
+ "subject": "docs: update README for plugin-based Claude install (v2.3.0) (#97)",
295
+ "date": "2026-03-17 20:30:38 +0100"
296
+ }
297
+ ],
298
+ "serena_drift": {
299
+ "available": false,
300
+ "stale": []
301
+ }
302
+ }
@@ -0,0 +1,33 @@
1
+ [Drift Report] 5 memories stale:
2
+
3
+ ssot_cli_hooks_2026-02-03
4
+ Last updated: 2026-02-25
5
+ Modified: hooks/beads-gate-core.mjs
6
+ Modified: hooks/hooks.json
7
+ Modified: hooks/beads-memory-gate.mjs
8
+
9
+ ssot_cli_universal_hub_2026-02-19
10
+ Last updated: 2026-02-25
11
+ Modified: cli/src/commands/install.ts
12
+ Modified: cli/src/commands/install.ts
13
+ Modified: cli/src/core/diff.ts
14
+
15
+ ssot_cli_ux_improvements_2026-02-22
16
+ Last updated: 2026-02-25
17
+ Modified: cli/src/commands/install.ts
18
+ Modified: cli/src/commands/install.ts
19
+ Modified: cli/src/core/diff.ts
20
+
21
+ ssot_jaggers-agent-tools_installer_architecture_2026-02-03
22
+ Last updated: 2026-02-25
23
+ Modified: cli/dist/index.cjs
24
+ Modified: cli/dist/index.cjs.map
25
+ Modified: cli/src/commands/install.ts
26
+
27
+ ssot_jaggers-agent-tools_migration_2026-02-01
28
+ Last updated: 2026-02-01 05:15:00+00:00
29
+ Modified: cli/dist/index.cjs
30
+ Modified: cli/dist/index.cjs.map
31
+ Modified: cli/src/commands/install.ts
32
+
33
+ Run /documenting to update.