xtrm-tools 2.4.0 → 2.4.2
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 +23 -9
- package/cli/dist/index.cjs +774 -240
- 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 +123 -2
- 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-stop-gate.mjs +58 -8
- package/hooks/guard-rules.mjs +86 -0
- package/hooks/hooks.json +28 -18
- package/hooks/main-guard.mjs +3 -21
- 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
package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Documentation Sync Report — Sprint Closeout
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-03-18
|
|
4
|
+
**Branch:** feature/jaggers-agent-tools-4xr6
|
|
5
|
+
**Assessed by:** Manual review (git log, gh issue/pr, file reads)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Sprint Activity Summary
|
|
10
|
+
|
|
11
|
+
### bd Issues Closed This Sprint
|
|
12
|
+
|
|
13
|
+
| # | Title | Closed |
|
|
14
|
+
|---|-------|--------|
|
|
15
|
+
| #38 | xtrm install: Pi coding agent setup with template-based config | 2026-03-15 |
|
|
16
|
+
| #33 | gitnexus: fix MCP + CLI DB lock contention (enable read-only MCP mode) | 2026-03-15 |
|
|
17
|
+
|
|
18
|
+
Both are enhancement-labeled. Only 3 issues exist in the bd tracker total (including the older #1 bug). The tracker is thin — most sprint work was tracked through GitHub PRs directly rather than bd issues.
|
|
19
|
+
|
|
20
|
+
### Merged PRs This Sprint (March 17–18)
|
|
21
|
+
|
|
22
|
+
| PR | Title | Merged |
|
|
23
|
+
|----|-------|--------|
|
|
24
|
+
| #111 | Install official Claude plugins and remove duplicate MCP servers | 2026-03-18 |
|
|
25
|
+
| #110 | chore: release v2.4.0 | 2026-03-18 |
|
|
26
|
+
| #109 | chore: eliminate tdd-guard completely | 2026-03-18 |
|
|
27
|
+
| #108 | fix(quality-gates): wire PostToolUse hooks into project settings.json | 2026-03-18 |
|
|
28
|
+
| #107 | docs(xtrm-guide): fix skills catalog, Pi events, policy table, version history | 2026-03-18 |
|
|
29
|
+
| #106 | docs: pre-install cleanup guide for plugin migration | 2026-03-18 |
|
|
30
|
+
| #105 | fix: context7 free stdio + commit gate stale-claim bug | 2026-03-18 |
|
|
31
|
+
| #104 | fix(p0): MCP sync guard, manifest hash drift detection, dead code removal | 2026-03-18 |
|
|
32
|
+
| #103 | docs: add comprehensive XTRM-GUIDE.md and update README.md | 2026-03-18 |
|
|
33
|
+
| #102 | feat(tests): cross-runtime policy parity test suite | 2026-03-17 |
|
|
34
|
+
|
|
35
|
+
The user said "3 PRs" — likely referring to the three feature/fix PRs since the v2.4.0 release: #111 (plugins), #109 (tdd-guard removal), and #108 (quality-gates wiring). PRs #107 and #106 are documentation PRs; #103 introduced XTRM-GUIDE.md and updated README.
|
|
36
|
+
|
|
37
|
+
### Current Branch Unmerged Commits (8 commits ahead of main)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
86b3900 Add Pi extension drift checks and guard-rules parity
|
|
41
|
+
54d9978 Centralize guard tool rules and matcher expansion
|
|
42
|
+
f8e37f9 Deprecate install project command in favor of xtrm init
|
|
43
|
+
c1d5182 Add global-first architecture regression tests
|
|
44
|
+
d83384e Add project detection and service registry scaffolding to xtrm init
|
|
45
|
+
e35fa46 Promote service and quality skills to global sync set
|
|
46
|
+
b6c057f Make service-skills extension CWD-aware and global
|
|
47
|
+
02fe064 Move quality gates to global Claude hooks
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
These 8 commits represent active work on this branch that has not yet been merged to main.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Documentation State Assessment
|
|
55
|
+
|
|
56
|
+
### Files Reviewed
|
|
57
|
+
|
|
58
|
+
| File | Size | Status |
|
|
59
|
+
|------|------|--------|
|
|
60
|
+
| `README.md` | ~190 lines | Drifted (version stale) |
|
|
61
|
+
| `XTRM-GUIDE.md` | ~360 lines | Partially updated, minor drift |
|
|
62
|
+
| `CHANGELOG.md` | Long | Missing v2.4.0 entry; Unreleased content present |
|
|
63
|
+
| `ROADMAP.md` | Long | Stale — references old architecture, old commands |
|
|
64
|
+
| `plugins/xtrm-tools/.claude-plugin/plugin.json` | Small | Drifted (version stale) |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Drift Findings
|
|
69
|
+
|
|
70
|
+
### 1. Version Numbers Are Stale in README.md and XTRM-GUIDE.md
|
|
71
|
+
|
|
72
|
+
**Actual package version:** `2.4.1` (cli/package.json), `2.4.0` released via PR #110.
|
|
73
|
+
|
|
74
|
+
**README.md shows:**
|
|
75
|
+
- Line 5: `**Version 2.3.0**`
|
|
76
|
+
- Line 20: `# → xtrm-tools@xtrm-tools Version: 2.3.0 Status: ✔ enabled`
|
|
77
|
+
- Line 183 (Version History table): Only goes up to `2.3.0 | 2026-03-17`
|
|
78
|
+
|
|
79
|
+
**XTRM-GUIDE.md shows:**
|
|
80
|
+
- Line 1 (heading): `> **Version 2.3.0**`
|
|
81
|
+
- Line 80 (install verify example): `Version: 2.3.0`
|
|
82
|
+
- Line 121 (plugin.json snippet): `"version": "2.3.0"`
|
|
83
|
+
- Version History table: Stops at `2.3.0 | 2026-03-18`
|
|
84
|
+
|
|
85
|
+
**plugins/xtrm-tools/.claude-plugin/plugin.json:**
|
|
86
|
+
- `"version": "2.3.0"` — not bumped to reflect the 2.4.x releases
|
|
87
|
+
|
|
88
|
+
Both the README and XTRM-GUIDE need a `2.4.0` row added to their version history tables, and their header version badges updated. The plugin.json manifest version also needs bumping.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### 2. CHANGELOG.md Has No v2.4.0 Entry
|
|
93
|
+
|
|
94
|
+
The `[Unreleased]` section exists and contains real content, but `## [2.4.0]` has never been written. The release PR #110 only bumped the package version — it did not write a changelog entry. What v2.4.0 actually shipped (based on PRs):
|
|
95
|
+
|
|
96
|
+
- Eliminated tdd-guard completely (#109)
|
|
97
|
+
- Wired PostToolUse quality-gates hooks into project settings.json (#108)
|
|
98
|
+
- Installed official Claude plugins (serena, context7, github, ralph-loop) during `xtrm install all` (#111)
|
|
99
|
+
- Removed duplicate serena/context7 from root `.mcp.json` (#111)
|
|
100
|
+
- Added comprehensive XTRM-GUIDE.md (#103)
|
|
101
|
+
- Multiple p0 bugfixes: MCP sync guard, manifest hash drift detection, dead code removal (#104)
|
|
102
|
+
- Fixed context7 free stdio transport and commit gate stale-claim bug (#105)
|
|
103
|
+
|
|
104
|
+
The `[Unreleased]` section currently contains content about `AGENTS.md` bd section and `xtrm install project all` — that content reflects work preceding v2.4.0 (likely v2.3.x or earlier) that was never promoted into a versioned entry.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### 3. README.md Version History Table Is Missing v2.4.0
|
|
109
|
+
|
|
110
|
+
The table in README.md ends at v2.3.0. It needs a `2.4.0` row with a short highlights string covering: tdd-guard removal, official Claude plugins, quality-gates wiring, XTRM-GUIDE.md addition.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### 4. README.md CLI Commands Table: `install project` Not Marked Deprecated
|
|
115
|
+
|
|
116
|
+
The CLI Commands table in README.md (line 99) still shows:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
| `install project <name>` | Install project skill |
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
On this branch (commit `f8e37f9`), `install project` was deprecated in favor of `xtrm init`. The XTRM-GUIDE.md was already updated on this branch to show:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
| `install project <name>` | **Deprecated** legacy project-skill installer |
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
README.md was not updated to match. This is an in-branch drift between the two files.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### 5. README.md Skills Table Is Incomplete
|
|
133
|
+
|
|
134
|
+
The README.md Skills section (lines 43–48) lists only 4 skills:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
| `using-xtrm` | Project | Session operating manual |
|
|
138
|
+
| `documenting` | Global | SSOT documentation |
|
|
139
|
+
| `delegating` | Global | Task delegation |
|
|
140
|
+
| `orchestrating-agents`| Global | Multi-model collaboration |
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The XTRM-GUIDE.md Skills Catalog (already updated via PR #107) lists 23+ global skills. Post-sprint additions include: `test-planning`, `sync-docs`, `creating-service-skills`, `scoping-service-skills`, `updating-service-skills`, `using-service-skills`, `using-quality-gates`, and the full gitnexus skill suite. README is a summary, so full parity is not expected, but the gap is wide enough to be misleading.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### 6. ROADMAP.md Is Structurally Stale
|
|
148
|
+
|
|
149
|
+
ROADMAP.md references architecture from v2.1.9 in several places:
|
|
150
|
+
|
|
151
|
+
- The "CLI Architecture Improvements" section at the bottom still describes `cli/lib/sync.js`, `cli/lib/transform-gemini.js`, and multi-agent Gemini/Qwen support — all of which were removed in v2.0.0.
|
|
152
|
+
- Phase 3 "Namespace Prefixes" references `cli/lib/transform-gemini.js` as a file to modify — this file no longer exists.
|
|
153
|
+
- "Phase 5: Transformation Logic Refactoring" describes refactoring `cli/lib/resolver.js` and `cli/lib/transform-gemini.js` — both dead paths.
|
|
154
|
+
- References a file at `file:///home/dawid/gemini/antigravity/brain/...` (absolute local path to dev machine — not a repo path).
|
|
155
|
+
- `AGENTS.md` installation planned as "Next minor release" in the roadmap — but AGENTS.md now exists in the repo and its bd section was added this sprint.
|
|
156
|
+
- The "Completed in v2.1.9" section at the top is frozen — should either be cleaned up or promoted to version-tagged completed items.
|
|
157
|
+
|
|
158
|
+
ROADMAP.md was not touched in any of the sprint PRs. It is the most stale major doc.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### 7. XTRM-GUIDE.md: plugin.json Snippet Shows Wrong Version
|
|
163
|
+
|
|
164
|
+
Line 121 of XTRM-GUIDE.md contains a code block example:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"name": "xtrm-tools",
|
|
169
|
+
"version": "2.3.0",
|
|
170
|
+
...
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
This is the same drift as the README version badge — it was not updated when v2.4.0 was released.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### 8. XTRM-GUIDE.md Version History Is Missing v2.4.0
|
|
179
|
+
|
|
180
|
+
The XTRM-GUIDE.md version history table (lines 344–350) stops at `2.3.0 | 2026-03-18`. A `2.4.0` row is missing with the same summary needed in README.md.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Summary Matrix
|
|
185
|
+
|
|
186
|
+
| Document | Issue | Severity |
|
|
187
|
+
|----------|-------|----------|
|
|
188
|
+
| README.md | Version badge shows 2.3.0, should be 2.4.0 | Medium |
|
|
189
|
+
| README.md | CLI table: `install project` not marked deprecated | Medium |
|
|
190
|
+
| README.md | Version history table missing 2.4.0 row | Medium |
|
|
191
|
+
| README.md | Skills table is significantly incomplete vs XTRM-GUIDE | Low |
|
|
192
|
+
| XTRM-GUIDE.md | Version badge and plugin.json snippet show 2.3.0 | Medium |
|
|
193
|
+
| XTRM-GUIDE.md | Version history table missing 2.4.0 row | Medium |
|
|
194
|
+
| CHANGELOG.md | No `[2.4.0]` entry exists despite release PR merging | High |
|
|
195
|
+
| CHANGELOG.md | `[Unreleased]` content never promoted to a version | Medium |
|
|
196
|
+
| ROADMAP.md | Multiple references to deleted files (transform-gemini.js, etc.) | Low |
|
|
197
|
+
| ROADMAP.md | Local absolute file path reference (non-portable) | Low |
|
|
198
|
+
| ROADMAP.md | Completed items (AGENTS.md) still listed as "planned" | Low |
|
|
199
|
+
| plugin.json | `"version": "2.3.0"` — not bumped after v2.4.0 release | Medium |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Recommended Actions (Priority Order)
|
|
204
|
+
|
|
205
|
+
1. **Write the `[2.4.0]` CHANGELOG entry** — this is the most critical gap. The release shipped but has no record.
|
|
206
|
+
2. **Update README.md version badge, example output, and version history table** to 2.4.0.
|
|
207
|
+
3. **Update XTRM-GUIDE.md version badge, plugin.json snippet, and version history table** to 2.4.0.
|
|
208
|
+
4. **Bump `plugins/xtrm-tools/.claude-plugin/plugin.json`** version to 2.4.0.
|
|
209
|
+
5. **Mark `install project` as deprecated** in README.md CLI table (already done in XTRM-GUIDE.md on this branch).
|
|
210
|
+
6. **Promote `[Unreleased]` CHANGELOG content** into the appropriate version entry, or tag it as part of the current branch work.
|
|
211
|
+
7. **Audit ROADMAP.md** — remove or archive references to deleted files and multi-agent architecture; mark AGENTS.md item as done.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## What Is in Good Shape
|
|
216
|
+
|
|
217
|
+
- **XTRM-GUIDE.md structure and content** is the most up-to-date of all docs — PR #107 did a thorough pass on skills catalog, Pi events table, and policy table. The branch commits have also extended it further (CLI command deprecation, project init details).
|
|
218
|
+
- **Skills catalog** in XTRM-GUIDE.md accurately reflects the current `skills/` directory.
|
|
219
|
+
- **Policy table** in XTRM-GUIDE.md matches `policies/*.json` on the branch.
|
|
220
|
+
- **Hooks reference** in XTRM-GUIDE.md is correct including PostToolUse and Compact Save/Restore.
|
|
221
|
+
- **MCP Servers section** in README.md is accurate post-PR #111 (official plugins called out separately).
|
|
222
|
+
- **CHANGELOG.md `[Unreleased]` section** has real content and is not empty — it just needs to be promoted and a 2.4.0 entry added above it.
|
package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"expectations": [
|
|
3
|
+
{
|
|
4
|
+
"text": "Ran context_gatherer.py and reported bd closed issues or merged PRs with specific data",
|
|
5
|
+
"passed": false,
|
|
6
|
+
"evidence": "The result contains specific bd closed issue data (#38, #33 with dates) and merged PR data (#102\u2013#111 with titles and dates). However, the report header explicitly states 'Assessed by: Manual review (git log, gh issue/pr, file reads)' \u2014 context_gatherer.py was never invoked. The data is present but was gathered manually, not via the script. The expectation requires the script to have been run."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"text": "Ran doc_structure_analyzer.py and cited its structured output (STALE, EXTRACTABLE, MISSING, etc.)",
|
|
10
|
+
"passed": false,
|
|
11
|
+
"evidence": "No mention of doc_structure_analyzer.py anywhere in the result. The documentation analysis uses informal labels like 'Drifted' and 'Stale' from the agent's own judgment, not the structured taxonomy (STALE, EXTRACTABLE, MISSING) that the script would emit. The script was not run."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"text": "Detected the CHANGELOG version gap (package.json v2.4.0 vs CHANGELOG v2.0.0)",
|
|
15
|
+
"passed": true,
|
|
16
|
+
"evidence": "Section 2 of the result is titled 'CHANGELOG.md Has No v2.4.0 Entry' and is rated High severity and listed as the #1 recommended action: 'Write the [2.4.0] CHANGELOG entry \u2014 this is the most critical gap. The release shipped but has no record.' The result also references the package version as 2.4.1 (cli/package.json) and 2.4.0 (released via PR #110). The specific last CHANGELOG version is not named but the gap is clearly identified and substantiated."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"text": "Named at least one concrete next step with a specific file or action",
|
|
20
|
+
"passed": true,
|
|
21
|
+
"evidence": "The 'Recommended Actions (Priority Order)' section lists 7 concrete steps, each referencing specific files: e.g., '1. Write the [2.4.0] CHANGELOG entry', '2. Update README.md version badge, example output, and version history table to 2.4.0', '4. Bump plugins/xtrm-tools/.claude-plugin/plugin.json version to 2.4.0'."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"summary": {
|
|
25
|
+
"passed": 2,
|
|
26
|
+
"failed": 2,
|
|
27
|
+
"total": 4,
|
|
28
|
+
"pass_rate": 0.5
|
|
29
|
+
},
|
|
30
|
+
"execution_metrics": {
|
|
31
|
+
"output_chars": 8123,
|
|
32
|
+
"transcript_chars": 0,
|
|
33
|
+
"notes": "No metrics.json present in outputs_dir. Only result.md was produced."
|
|
34
|
+
},
|
|
35
|
+
"timing": {
|
|
36
|
+
"executor_duration_seconds": 219.9,
|
|
37
|
+
"grader_duration_seconds": 0.0,
|
|
38
|
+
"total_duration_seconds": 219.9
|
|
39
|
+
},
|
|
40
|
+
"claims": [
|
|
41
|
+
{
|
|
42
|
+
"claim": "bd tracker has only 3 issues total",
|
|
43
|
+
"type": "factual",
|
|
44
|
+
"verified": false,
|
|
45
|
+
"evidence": "Unverifiable from available outputs \u2014 would require access to the bd issue tracker. The agent asserts this but no script output corroborates it."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"claim": "Package version is 2.4.1 in cli/package.json",
|
|
49
|
+
"type": "factual",
|
|
50
|
+
"verified": true,
|
|
51
|
+
"evidence": "The git status at conversation start shows 'M cli/package.json' and the result cites 'Actual package version: 2.4.1 (cli/package.json)'. The expectation references v2.4.0 as the released version (PR #110), and 2.4.1 is the current working state \u2014 consistent."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"claim": "ROADMAP.md references transform-gemini.js which no longer exists",
|
|
55
|
+
"type": "factual",
|
|
56
|
+
"verified": false,
|
|
57
|
+
"evidence": "The result asserts this but the file was not read in the available outputs \u2014 unverifiable without reading ROADMAP.md directly. However, CLAUDE.md confirms cli/lib/transform-gemini.js exists, which partially contradicts this claim."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"claim": "XTRM-GUIDE.md lists 23+ global skills",
|
|
61
|
+
"type": "factual",
|
|
62
|
+
"verified": false,
|
|
63
|
+
"evidence": "Stated in the result but cannot be confirmed from available outputs alone \u2014 XTRM-GUIDE.md was not included in the outputs directory."
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"user_notes_summary": {
|
|
67
|
+
"uncertainties": [],
|
|
68
|
+
"needs_review": [],
|
|
69
|
+
"workarounds": [],
|
|
70
|
+
"notes": "No user_notes.md present in outputs_dir."
|
|
71
|
+
},
|
|
72
|
+
"eval_feedback": {
|
|
73
|
+
"suggestions": [
|
|
74
|
+
{
|
|
75
|
+
"assertion": "Ran context_gatherer.py and reported bd closed issues or merged PRs with specific data",
|
|
76
|
+
"reason": "This assertion conflates two outcomes: (a) running the script, and (b) reporting specific data. The run passed on data quality even though the script was never used. Split into two assertions \u2014 one for script execution (verifiable via transcript tool calls) and one for data presence \u2014 so a manually-gathered result can fail the process check while still passing the data check."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"assertion": "Detected the CHANGELOG version gap (package.json v2.4.0 vs CHANGELOG v2.0.0)",
|
|
80
|
+
"reason": "The parenthetical 'CHANGELOG v2.0.0' is a specific claim about what the last versioned CHANGELOG entry is, but the result never confirms this. The assertion would be sharper if it required naming the last versioned CHANGELOG entry explicitly. As written, detecting any CHANGELOG gap satisfies it."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"reason": "No assertion checks whether the agent actually read or cited file contents (e.g., quoting a specific CHANGELOG line or README version badge). The result could have been constructed from PR descriptions alone without ever opening the doc files \u2014 and none of the assertions would catch that."
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"overall": "Two of the four assertions test process (script was run) which is good discrimination. However, the data assertions are weak \u2014 they can be satisfied by manual work that bypasses the skill's tooling entirely. The CHANGELOG gap assertion passes despite the specific version cited in the expectation (v2.0.0) never being confirmed in the output."
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"skill_name": "sync-docs",
|
|
4
|
+
"skill_path": "<path/to/skill>",
|
|
5
|
+
"executor_model": "<model-name>",
|
|
6
|
+
"analyzer_model": "<model-name>",
|
|
7
|
+
"timestamp": "2026-03-18T14:41:48Z",
|
|
8
|
+
"evals_run": [
|
|
9
|
+
1,
|
|
10
|
+
2,
|
|
11
|
+
3
|
|
12
|
+
],
|
|
13
|
+
"runs_per_configuration": 3
|
|
14
|
+
},
|
|
15
|
+
"runs": [
|
|
16
|
+
{
|
|
17
|
+
"eval_id": 3,
|
|
18
|
+
"configuration": "with_skill",
|
|
19
|
+
"run_number": 1,
|
|
20
|
+
"result": {
|
|
21
|
+
"pass_rate": 1.0,
|
|
22
|
+
"passed": 4,
|
|
23
|
+
"failed": 0,
|
|
24
|
+
"total": 4,
|
|
25
|
+
"time_seconds": 119.1,
|
|
26
|
+
"tokens": 4247,
|
|
27
|
+
"tool_calls": 0,
|
|
28
|
+
"errors": 0
|
|
29
|
+
},
|
|
30
|
+
"expectations": [
|
|
31
|
+
{
|
|
32
|
+
"text": "Ran doc_structure_analyzer.py and cited its output",
|
|
33
|
+
"passed": true,
|
|
34
|
+
"evidence": "Audit scope section (result.md line 123) states: 'Phase 3 (structure analysis): Complete \u2014 doc_structure_analyzer.py ran successfully'. The README extraction table, missing docs/ list, and invalid-schema file list all derive directly from that tool's output."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"text": "Named at least 2 specific README sections with their suggested docs/ destination",
|
|
38
|
+
"passed": true,
|
|
39
|
+
"evidence": "The report names 4 README sections with explicit targets in a structured table: '### Skills' -> docs/skills.md, '## Policy System' -> docs/policies.md, '## Hooks Reference' -> docs/hooks.md, '## MCP Servers' -> docs/mcp-servers.md. Repeated in the Recommended Next Steps section."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"text": "Did NOT run --fix or create/edit any files (audit-only mode respected)",
|
|
43
|
+
"passed": true,
|
|
44
|
+
"evidence": "Report header states 'Mode: Audit only (no files modified)'. Audit scope section (lines 123-125) explicitly states Phase 4 (execute) and Phase 5 (validate) were 'NOT run'. Only one output file exists (result.md), which is the report itself."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"text": "Report is actionable with clear next steps",
|
|
48
|
+
"passed": true,
|
|
49
|
+
"evidence": "The 'Recommended Next Steps (when executing)' section lists 7 numbered, concrete actions with specific scripts, file paths, and targets \u2014 e.g., 'Cut entries for 2.1.x\u20132.4.0 using add_entry.py', 'Extract to docs/hooks.md (or promote hook-system-summary.md)', 'Consolidate with docs/mcp-servers-config.md \u2192 rename to docs/mcp-servers.md + add frontmatter'."
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"notes": [
|
|
53
|
+
"drift_detector.py skipped due to missing pyyaml \u2014 Phase 2 coverage is absent"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"eval_id": 2,
|
|
58
|
+
"configuration": "with_skill",
|
|
59
|
+
"run_number": 1,
|
|
60
|
+
"result": {
|
|
61
|
+
"pass_rate": 1.0,
|
|
62
|
+
"passed": 4,
|
|
63
|
+
"failed": 0,
|
|
64
|
+
"total": 4,
|
|
65
|
+
"time_seconds": 105.3,
|
|
66
|
+
"tokens": 3011,
|
|
67
|
+
"tool_calls": 0,
|
|
68
|
+
"errors": 0
|
|
69
|
+
},
|
|
70
|
+
"expectations": [
|
|
71
|
+
{
|
|
72
|
+
"text": "Ran doc_structure_analyzer.py with --fix flag",
|
|
73
|
+
"passed": true,
|
|
74
|
+
"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."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"text": "Handled both MISSING scaffolds AND INVALID_SCHEMA files (or correctly reported none found)",
|
|
78
|
+
"passed": true,
|
|
79
|
+
"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."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"text": "Ran bd remember and reported the memory key",
|
|
83
|
+
"passed": true,
|
|
84
|
+
"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."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"text": "Ran validate_doc.py docs/ after fixing to confirm results",
|
|
88
|
+
"passed": true,
|
|
89
|
+
"evidence": "result.md validate_doc.py Results section shows 'Result: 12/12 files passed'. All docs/ files passed schema validation after the fix run."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"notes": [
|
|
93
|
+
"README extraction requires content judgment (Serena) \u2014 EXTRACTABLE flag not auto-resolved by --fix",
|
|
94
|
+
"CHANGELOG staleness (v2.0.0 last entry vs v2.4.0 current) requires manual entry for v2.1.0-v2.4.0 changes"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"eval_id": 1,
|
|
99
|
+
"configuration": "with_skill",
|
|
100
|
+
"run_number": 1,
|
|
101
|
+
"result": {
|
|
102
|
+
"pass_rate": 1.0,
|
|
103
|
+
"passed": 4,
|
|
104
|
+
"failed": 0,
|
|
105
|
+
"total": 4,
|
|
106
|
+
"time_seconds": 203.6,
|
|
107
|
+
"tokens": 0,
|
|
108
|
+
"tool_calls": 0,
|
|
109
|
+
"errors": 0
|
|
110
|
+
},
|
|
111
|
+
"expectations": [
|
|
112
|
+
{
|
|
113
|
+
"text": "Ran context_gatherer.py and reported bd closed issues or merged PRs with specific data",
|
|
114
|
+
"passed": true,
|
|
115
|
+
"evidence": "phase1_context.json contains 20 bd_closed_issues with specific IDs and titles (e.g., jaggers-agent-tools-1lc 'P0 bug Remove dead code cli/index.js', jaggers-agent-tools-7dwo 'P0 bug Fix commit gate blocking...') and 10 merged_prs with SHAs, branch names, and dates (e.g., sha a7507e6c, 'Merge pull request #15 from Jaggerxtrm/release/2.0.1', 2026-03-13). result.md Phase 1 section summarizes this data accurately."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"text": "Ran doc_structure_analyzer.py and cited its structured output (STALE, EXTRACTABLE, MISSING, etc.)",
|
|
119
|
+
"passed": true,
|
|
120
|
+
"evidence": "result.md Phase 3 section explicitly cites STALE (CHANGELOG), EXTRACTABLE (README.md, 5 extraction candidates), MISSING (5 docs/ gaps), and INVALID_SCHEMA (7 existing docs files) with specific file names and counts. phase3_analysis.json confirms STALE for CHANGELOG with structured fields. Caveat: the saved phase3_analysis.json appears to be post-fix state (all existing_docs show OK, docs_gaps empty), so the MISSING/EXTRACTABLE/INVALID_SCHEMA findings are only visible in the result.md narrative, not the raw JSON. The structured terminology is accurately cited, but the saved JSON does not independently corroborate the pre-fix MISSING and EXTRACTABLE counts."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"text": "Detected the CHANGELOG version gap (package.json v2.4.0 vs CHANGELOG v2.0.0)",
|
|
124
|
+
"passed": true,
|
|
125
|
+
"evidence": "phase3_analysis.json changelog section explicitly records: package_version '2.4.0', latest_changelog_version '2.0.0', status 'STALE', and issues array containing 'package.json is at v2.4.0 but latest CHANGELOG entry is v2.0.0 \u2014 release is undocumented'. result.md also states this in Phase 3 and lists it as remaining action item #1."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"text": "Named at least one concrete next step with a specific file or action",
|
|
129
|
+
"passed": true,
|
|
130
|
+
"evidence": "result.md Remaining action items lists four concrete steps: (1) 'Add entries for v2.1.x, v2.2.0, v2.3.0, v2.4.0 using changelog/add_entry.py or manually', (2) 'Use Serena to move Skills, Policy System, Hooks Reference, MCP Servers sections into their respective docs/ scaffolds', (3) 'Run /documenting to update the 5 stale SSOT memories', (4) 'fill them in with Serena' for the 5 named scaffold files (hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md)."
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"notes": []
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"eval_id": 3,
|
|
137
|
+
"configuration": "without_skill",
|
|
138
|
+
"run_number": 1,
|
|
139
|
+
"result": {
|
|
140
|
+
"pass_rate": 0.75,
|
|
141
|
+
"passed": 3,
|
|
142
|
+
"failed": 1,
|
|
143
|
+
"total": 4,
|
|
144
|
+
"time_seconds": 95.9,
|
|
145
|
+
"tokens": 0,
|
|
146
|
+
"tool_calls": 0,
|
|
147
|
+
"errors": 0
|
|
148
|
+
},
|
|
149
|
+
"expectations": [
|
|
150
|
+
{
|
|
151
|
+
"text": "Ran doc_structure_analyzer.py and cited its output",
|
|
152
|
+
"passed": false,
|
|
153
|
+
"evidence": "result.md explicitly states 'Method: Manual review of README.md sections against existing docs/ files.' There is no mention of doc_structure_analyzer.py anywhere in the output. The executor performed a manual audit rather than using the specified tool."
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"text": "Named at least 2 specific README sections with their suggested docs/ destination",
|
|
157
|
+
"passed": true,
|
|
158
|
+
"evidence": "The report names 7 README sections with specific docs/ destinations. Examples: 'Hooks Reference' (lines 114-141) -> 'docs/hooks.md (exists)'; 'Policy System' (lines 66-86) -> 'docs/policies.md (stub, needs population)'; 'MCP Servers' (lines 143-158) -> 'docs/mcp.md (exists)'. The priority table at lines 103-111 clearly maps each section to a target file."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"text": "Did NOT run --fix or create/edit any files (audit-only mode respected)",
|
|
162
|
+
"passed": true,
|
|
163
|
+
"evidence": "The only output file is result.md (the report itself). No docs/ files were created or modified. All suggestions use language like 'Suggested action: Move to...' or 'Consider creating...' rather than performing the actions. The outputs directory contains only result.md."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"text": "Report is actionable with clear next steps",
|
|
167
|
+
"passed": true,
|
|
168
|
+
"evidence": "The report includes a priority ranking table (lines 103-111) with Priority (High/Medium/Low), Section, Action, and Target columns for all 7 sections. Each section analysis also ends with an explicit 'Suggested action:' line. The report concludes with a 'What README.md Should Retain' section describing the end-state goal."
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"notes": []
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"eval_id": 2,
|
|
175
|
+
"configuration": "without_skill",
|
|
176
|
+
"run_number": 1,
|
|
177
|
+
"result": {
|
|
178
|
+
"pass_rate": 1.0,
|
|
179
|
+
"passed": 4,
|
|
180
|
+
"failed": 0,
|
|
181
|
+
"total": 4,
|
|
182
|
+
"time_seconds": 122.8,
|
|
183
|
+
"tokens": 2791,
|
|
184
|
+
"tool_calls": 0,
|
|
185
|
+
"errors": 0
|
|
186
|
+
},
|
|
187
|
+
"expectations": [
|
|
188
|
+
{
|
|
189
|
+
"text": "Ran doc_structure_analyzer.py with --fix flag",
|
|
190
|
+
"passed": true,
|
|
191
|
+
"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."
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"text": "Handled both MISSING scaffolds AND INVALID_SCHEMA files (or correctly reported none found)",
|
|
195
|
+
"passed": true,
|
|
196
|
+
"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)."
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"text": "Ran bd remember and reported the memory key",
|
|
200
|
+
"passed": true,
|
|
201
|
+
"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.'"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"text": "Ran validate_doc.py docs/ after fixing to confirm results",
|
|
205
|
+
"passed": true,
|
|
206
|
+
"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."
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"notes": []
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"eval_id": 1,
|
|
213
|
+
"configuration": "without_skill",
|
|
214
|
+
"run_number": 1,
|
|
215
|
+
"result": {
|
|
216
|
+
"pass_rate": 0.25,
|
|
217
|
+
"passed": 1,
|
|
218
|
+
"failed": 3,
|
|
219
|
+
"total": 4,
|
|
220
|
+
"time_seconds": 217.1,
|
|
221
|
+
"tokens": 3172,
|
|
222
|
+
"tool_calls": 0,
|
|
223
|
+
"errors": 0
|
|
224
|
+
},
|
|
225
|
+
"expectations": [
|
|
226
|
+
{
|
|
227
|
+
"text": "Ran context_gatherer.py and reported bd closed issues or merged PRs with specific data",
|
|
228
|
+
"passed": false,
|
|
229
|
+
"evidence": "The agent never ran context_gatherer.py. It gathered context using raw git commands (git log --oneline --merges, git diff --stat 10d6433..HEAD). It did report specific merged PRs (#111, #110, #109) with descriptions, but the script was not used. The expectation requires the specific script to be invoked, not just the outcome data to be present."
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"text": "Ran doc_structure_analyzer.py and cited its structured output (STALE, EXTRACTABLE, MISSING, etc.)",
|
|
233
|
+
"passed": false,
|
|
234
|
+
"evidence": "No mention of doc_structure_analyzer.py anywhere in the output. The structured output categories (STALE, EXTRACTABLE, MISSING) never appear. The agent assessed doc staleness manually by reading files and comparing with git history."
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"text": "Detected the CHANGELOG version gap (package.json v2.4.0 vs CHANGELOG v2.0.0)",
|
|
238
|
+
"passed": false,
|
|
239
|
+
"evidence": "The output notes 'CHANGELOG.md (contains full history through v2.0.0)' and references the codebase being at v2.4.0, but the agent concluded CHANGELOG was 'accurate' and listed it under 'No Changes Needed'. It did not explicitly frame this as a version gap between package.json (v2.4.0) and CHANGELOG (v2.0.0), and it did not flag it as an issue requiring action. The gap was effectively missed because the agent treated the [Unreleased] section as sufficient coverage."
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"text": "Named at least one concrete next step with a specific file or action",
|
|
243
|
+
"passed": true,
|
|
244
|
+
"evidence": "The Observations section states: 'The CHANGELOG [Unreleased] section is still empty \u2014 it should capture the post-v2.4.0 sprint work (global-first arch, guard-rules centralization, Pi drift checks, xtrm init project detection) before the next release.' This identifies a specific file (CHANGELOG.md), a specific section ([Unreleased]), and concrete content items to add."
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"notes": []
|
|
248
|
+
}
|
|
249
|
+
],
|
|
250
|
+
"run_summary": {
|
|
251
|
+
"with_skill": {
|
|
252
|
+
"pass_rate": {
|
|
253
|
+
"mean": 1.0,
|
|
254
|
+
"stddev": 0.0,
|
|
255
|
+
"min": 1.0,
|
|
256
|
+
"max": 1.0
|
|
257
|
+
},
|
|
258
|
+
"time_seconds": {
|
|
259
|
+
"mean": 142.6667,
|
|
260
|
+
"stddev": 53.219,
|
|
261
|
+
"min": 105.3,
|
|
262
|
+
"max": 203.6
|
|
263
|
+
},
|
|
264
|
+
"tokens": {
|
|
265
|
+
"mean": 2419.3333,
|
|
266
|
+
"stddev": 2184.446,
|
|
267
|
+
"min": 0,
|
|
268
|
+
"max": 4247
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"without_skill": {
|
|
272
|
+
"pass_rate": {
|
|
273
|
+
"mean": 0.6667,
|
|
274
|
+
"stddev": 0.3819,
|
|
275
|
+
"min": 0.25,
|
|
276
|
+
"max": 1.0
|
|
277
|
+
},
|
|
278
|
+
"time_seconds": {
|
|
279
|
+
"mean": 145.2667,
|
|
280
|
+
"stddev": 63.6469,
|
|
281
|
+
"min": 95.9,
|
|
282
|
+
"max": 217.1
|
|
283
|
+
},
|
|
284
|
+
"tokens": {
|
|
285
|
+
"mean": 1987.6667,
|
|
286
|
+
"stddev": 1731.8788,
|
|
287
|
+
"min": 0,
|
|
288
|
+
"max": 3172
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"delta": {
|
|
292
|
+
"pass_rate": "+0.33",
|
|
293
|
+
"time_seconds": "-2.6",
|
|
294
|
+
"tokens": "+432"
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
"notes": []
|
|
298
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Skill Benchmark: sync-docs
|
|
2
|
+
|
|
3
|
+
**Model**: <model-name>
|
|
4
|
+
**Date**: 2026-03-18T14:41:48Z
|
|
5
|
+
**Evals**: 1, 2, 3 (3 runs each per configuration)
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
| Metric | With Skill | Without Skill | Delta |
|
|
10
|
+
|--------|------------|---------------|-------|
|
|
11
|
+
| Pass Rate | 100% ± 0% | 67% ± 38% | +0.33 |
|
|
12
|
+
| Time | 142.7s ± 53.2s | 145.3s ± 63.6s | -2.6s |
|
|
13
|
+
| Tokens | 2419 ± 2184 | 1988 ± 1732 | +432 |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "doc-audit",
|
|
4
|
+
"prompt": "Do a doc audit. I think the README has sections that should be in docs/ but I'm not sure which ones.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{
|
|
7
|
+
"text": "Ran doc_structure_analyzer.py and cited its output",
|
|
8
|
+
"passed": false,
|
|
9
|
+
"evidence": ""
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"text": "Named at least 2 specific README sections with their suggested docs/ destination",
|
|
13
|
+
"passed": false,
|
|
14
|
+
"evidence": ""
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"text": "Did NOT run --fix or create/edit any files (audit-only mode respected)",
|
|
18
|
+
"passed": false,
|
|
19
|
+
"evidence": ""
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"text": "Report is actionable with clear next steps",
|
|
23
|
+
"passed": false,
|
|
24
|
+
"evidence": ""
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|