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
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Doc Audit — xtrm-tools
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-03-18
|
|
4
|
+
**Mode:** Audit only (no files modified)
|
|
5
|
+
**Tool:** sync-docs skill, Phases 1–3
|
|
6
|
+
**Worktree:** `/home/dawid/projects/xtrm-tools/.claude/worktrees/agent-a4b9e492`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
| Category | Count |
|
|
13
|
+
|---|---|
|
|
14
|
+
| README extraction candidates | 5 sections |
|
|
15
|
+
| CHANGELOG version gap | v2.4.0 vs v2.0.0 (4 undocumented releases) |
|
|
16
|
+
| docs/ files missing (expected) | 5 |
|
|
17
|
+
| docs/ files with invalid schema | 7 |
|
|
18
|
+
| Total issues | 14 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## README.md — Status: EXTRACTABLE
|
|
23
|
+
|
|
24
|
+
Line count: **192** (threshold: 200 — just under the BLOATED threshold, but 5 sections are prime extraction candidates).
|
|
25
|
+
|
|
26
|
+
The README currently duplicates what should live in dedicated docs/ files. These sections should be extracted:
|
|
27
|
+
|
|
28
|
+
| README Section | Suggested Target | Reason |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| `### Skills` (lines ~44–49) | `docs/skills.md` | Skills catalog with 23+ skills in `skills/` |
|
|
31
|
+
| `## Policy System` + `### Policy Files` (lines ~67–86) | `docs/policies.md` | `policies/` directory exists with 7 policy files |
|
|
32
|
+
| `## Hooks Reference` (lines ~114–141) | `docs/hooks.md` | `hooks/` directory exists with 14+ hook scripts |
|
|
33
|
+
| `## MCP Servers` (lines ~143–158) | `docs/mcp-servers.md` | `.mcp.json` present; existing `docs/mcp-servers-config.md` covers this topic already |
|
|
34
|
+
|
|
35
|
+
**Notable:** `docs/mcp-servers-config.md` already exists (364 lines) but lacks frontmatter. The README's `## MCP Servers` section and this file are redundant — consolidation is warranted.
|
|
36
|
+
|
|
37
|
+
The `## Version History` table in README (lines ~179–186) is also a truncated duplicate of CHANGELOG. It should either be removed or replaced with a link.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## CHANGELOG.md — Status: STALE
|
|
42
|
+
|
|
43
|
+
- `package.json` version: **2.4.0**
|
|
44
|
+
- Latest CHANGELOG entry: **[2.0.0] - 2026-03-12**
|
|
45
|
+
- Gap: **4 undocumented versions** (2.1.x through 2.4.0)
|
|
46
|
+
|
|
47
|
+
The `[Unreleased]` section exists but the releases have not been cut. Given the volume of recent closed issues (plugin architecture, Pi extension parity, service skills, gitnexus integration), multiple CHANGELOG entries are owed.
|
|
48
|
+
|
|
49
|
+
README itself lists versions 2.2.0 and 2.3.0 with dates and highlights — those entries are not in CHANGELOG.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## docs/ — Missing Files
|
|
54
|
+
|
|
55
|
+
These docs/ files are expected based on project subsystems but do not exist:
|
|
56
|
+
|
|
57
|
+
| Missing File | Signal | Priority |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| `docs/hooks.md` | `hooks/` dir with 14 scripts + `hooks.json` | HIGH — hooks are a core subsystem |
|
|
60
|
+
| `docs/pi-extensions.md` | `config/pi/extensions/` exists | HIGH — Pi extension system is active |
|
|
61
|
+
| `docs/mcp-servers.md` | `.mcp.json` present | MEDIUM — content partially covered by `docs/mcp-servers-config.md` |
|
|
62
|
+
| `docs/policies.md` | `policies/` dir with 7 `.json` files | HIGH — policy compiler is a key feature |
|
|
63
|
+
| `docs/skills.md` | `skills/` dir with 23 entries | MEDIUM — skills list exists in README already |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## docs/ — Invalid Schema (7 files)
|
|
68
|
+
|
|
69
|
+
All 7 existing non-plan docs/ files lack YAML frontmatter. They are functional but not schema-compliant:
|
|
70
|
+
|
|
71
|
+
| File | Lines | Notes |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `docs/cleanup.md` | 438 | Large operational notes — likely internal/transient |
|
|
74
|
+
| `docs/delegation-architecture.md` | 185 | Architecture content — may belong in `.serena/memories/` |
|
|
75
|
+
| `docs/hook-system-summary.md` | 176 | Overlaps with missing `docs/hooks.md` |
|
|
76
|
+
| `docs/mcp-servers-config.md` | 364 | Overlaps with missing `docs/mcp-servers.md` + README section |
|
|
77
|
+
| `docs/pi-extensions-migration.md` | 56 | Migration notes — likely transient |
|
|
78
|
+
| `docs/pre-install-cleanup.md` | 107 | Operational notes — likely internal/transient |
|
|
79
|
+
| `docs/todo.md` | 4 | Stub — should be removed or absorbed into bd issues |
|
|
80
|
+
|
|
81
|
+
All need `validate_doc.py` run to add frontmatter, or need to be evaluated for deletion/migration.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Structural Observations
|
|
86
|
+
|
|
87
|
+
### Overlap Between Existing and Missing Files
|
|
88
|
+
|
|
89
|
+
Three cases where a docs/ file partially covers a missing counterpart:
|
|
90
|
+
|
|
91
|
+
1. `docs/hook-system-summary.md` (existing, no schema) covers the same ground as the missing `docs/hooks.md`. Likely the right fix is to promote `hook-system-summary.md` → `hooks.md` with frontmatter added.
|
|
92
|
+
|
|
93
|
+
2. `docs/mcp-servers-config.md` (existing, no schema) overlaps with missing `docs/mcp-servers.md` and the README `## MCP Servers` section. Rename + add frontmatter rather than create from scratch.
|
|
94
|
+
|
|
95
|
+
3. `docs/pi-extensions-migration.md` (existing, 56 lines) is a migration notes doc, not the full extension catalog. The missing `docs/pi-extensions.md` is still warranted.
|
|
96
|
+
|
|
97
|
+
### docs/plans/ is Well-Populated
|
|
98
|
+
|
|
99
|
+
`docs/plans/` has 13 files including active and completed work plans. This is healthy. Plans in `docs/plans/complete/` may be archivable.
|
|
100
|
+
|
|
101
|
+
### docs/reference/ Subdirectory
|
|
102
|
+
|
|
103
|
+
`docs/reference/` exists with subdirectories (`claude-documentation/`, `gemini-documentation/`, `plans/`). This sub-tree was not analyzed in depth — it may contain content that belongs at the top-level `docs/` or in `.serena/memories/`.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Recommended Next Steps (when executing)
|
|
108
|
+
|
|
109
|
+
1. **CHANGELOG**: Cut entries for 2.1.x–2.4.0 using `add_entry.py`. Source: `[Unreleased]` section + closed bd issues.
|
|
110
|
+
2. **README `## Hooks Reference`**: Extract to `docs/hooks.md` (or promote `hook-system-summary.md`). Replace README section with one-line link.
|
|
111
|
+
3. **README `## Policy System`**: Extract to `docs/policies.md`. Replace with summary + link.
|
|
112
|
+
4. **README `## MCP Servers`**: Consolidate with `docs/mcp-servers-config.md` → rename to `docs/mcp-servers.md` + add frontmatter. Remove redundant README section.
|
|
113
|
+
5. **README `### Skills`**: Extract to `docs/skills.md`. Replace with link.
|
|
114
|
+
6. **Add frontmatter** to all 7 invalid-schema docs/ files, or delete stubs (`todo.md`, `pre-install-cleanup.md`).
|
|
115
|
+
7. **README `## Version History` table**: Remove or replace with link to CHANGELOG — this is a maintenance liability.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Audit Scope
|
|
120
|
+
|
|
121
|
+
- Phase 1 (context): bd closed issues gathered (30-day window, 20+ issues found)
|
|
122
|
+
- Phase 2 (drift detection): Skipped — `drift_detector.py` requires `pyyaml` (not installed)
|
|
123
|
+
- Phase 3 (structure analysis): Complete — `doc_structure_analyzer.py` ran successfully
|
|
124
|
+
- Phase 4 (execute): **NOT run** — audit-only task, no files modified
|
|
125
|
+
- Phase 5 (validate): **NOT run** — no changes to validate
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"expectations": [
|
|
3
|
+
{
|
|
4
|
+
"text": "Ran doc_structure_analyzer.py and cited its output",
|
|
5
|
+
"passed": true,
|
|
6
|
+
"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."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"text": "Named at least 2 specific README sections with their suggested docs/ destination",
|
|
10
|
+
"passed": true,
|
|
11
|
+
"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."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"text": "Did NOT run --fix or create/edit any files (audit-only mode respected)",
|
|
15
|
+
"passed": true,
|
|
16
|
+
"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."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"text": "Report is actionable with clear next steps",
|
|
20
|
+
"passed": true,
|
|
21
|
+
"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'."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"summary": {
|
|
25
|
+
"passed": 4,
|
|
26
|
+
"failed": 0,
|
|
27
|
+
"total": 4,
|
|
28
|
+
"pass_rate": 1.0
|
|
29
|
+
},
|
|
30
|
+
"execution_metrics": {
|
|
31
|
+
"tool_calls": 0,
|
|
32
|
+
"total_tool_calls": 0,
|
|
33
|
+
"total_steps": 0,
|
|
34
|
+
"errors_encountered": 0,
|
|
35
|
+
"output_chars": 4247,
|
|
36
|
+
"transcript_chars": 0
|
|
37
|
+
},
|
|
38
|
+
"timing": {
|
|
39
|
+
"executor_duration_seconds": 119.1,
|
|
40
|
+
"grader_duration_seconds": 0.0,
|
|
41
|
+
"total_duration_seconds": 119.1
|
|
42
|
+
},
|
|
43
|
+
"claims": [
|
|
44
|
+
{
|
|
45
|
+
"claim": "Phase 2 (drift_detector.py) was skipped due to missing pyyaml dependency",
|
|
46
|
+
"type": "process",
|
|
47
|
+
"verified": true,
|
|
48
|
+
"evidence": "Audit scope section states: 'Phase 2 (drift detection): Skipped \u2014 drift_detector.py requires pyyaml (not installed)'. This is a legitimate constraint, not a shortcut."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"claim": "README is 192 lines with 5 extraction candidate sections",
|
|
52
|
+
"type": "factual",
|
|
53
|
+
"verified": false,
|
|
54
|
+
"evidence": "The report asserts this but there is no transcript or raw tool output to cross-check the line count or section count independently. The claim is internally consistent (the table lists 4 sections, with Version History as a 5th candidate mentioned separately), but cannot be verified from available outputs alone."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"claim": "package.json version is 2.4.0 and latest CHANGELOG entry is 2.0.0",
|
|
58
|
+
"type": "factual",
|
|
59
|
+
"verified": false,
|
|
60
|
+
"evidence": "Stated in the CHANGELOG section but no raw file excerpts are included in the output to confirm. Cannot be verified from outputs alone."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"claim": "7 existing docs/ files lack YAML frontmatter",
|
|
64
|
+
"type": "factual",
|
|
65
|
+
"verified": false,
|
|
66
|
+
"evidence": "The report lists 7 files by name and line count, but there is no attached tool output or file excerpts confirming the schema check result. Plausible but unverifiable from outputs."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"claim": "30-day closed issue window returned 20+ issues",
|
|
70
|
+
"type": "factual",
|
|
71
|
+
"verified": false,
|
|
72
|
+
"evidence": "Stated in audit scope but no issue list or raw bd output is included in the outputs directory."
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"user_notes_summary": {
|
|
76
|
+
"uncertainties": [],
|
|
77
|
+
"needs_review": [],
|
|
78
|
+
"workarounds": [
|
|
79
|
+
"drift_detector.py skipped due to missing pyyaml \u2014 Phase 2 coverage is absent"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"eval_feedback": {
|
|
83
|
+
"suggestions": [
|
|
84
|
+
{
|
|
85
|
+
"assertion": "Ran doc_structure_analyzer.py and cited its output",
|
|
86
|
+
"reason": "The assertion passes on self-reporting alone \u2014 the report says the tool ran but no raw tool output or intermediate artifact is present in outputs/ to confirm. A stronger assertion would require either a separate structured artifact from doc_structure_analyzer.py (e.g., a JSON dump) or a transcript showing the Bash invocation and its stdout. As written, the assertion is satisfied even if the executor fabricated the results without running the script."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"reason": "No assertion checks the CHANGELOG gap finding, which is one of the two most substantive findings in the report. If the skill is supposed to detect version drift, that outcome should be independently verifiable \u2014 e.g., 'Report identifies a specific version gap between package.json and CHANGELOG'."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"reason": "No assertion checks for completeness of the invalid-schema docs/ list. The report claims 7 files lack frontmatter, but none of the evals verify this count or that any specific file was flagged. A weak form: 'Report lists at least 3 docs/ files with schema issues and names each'."
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"overall": "All 4 assertions pass and the report is genuinely high quality \u2014 specific, structured, and actionable. The main eval gap is that the primary process assertion (doc_structure_analyzer.py ran) is verifiable only through self-reporting, which means a fabricated run would also pass. Adding a requirement for a raw artifact from the script would make the eval discriminating."
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Doc Audit: README.md vs docs/
|
|
2
|
+
|
|
3
|
+
Audit date: 2026-03-18
|
|
4
|
+
Method: Manual review of README.md sections against existing docs/ files.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
|
|
10
|
+
README.md is 193 lines and covers seven distinct topic areas beyond a short intro and quick-start. Several of these areas already have dedicated docs/ files with substantially more depth. The README content in those sections is either redundant with docs/ or represents a thin version of content that belongs in docs/.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Section-by-Section Analysis
|
|
15
|
+
|
|
16
|
+
### 1. "Hooks Reference" (lines 114-141)
|
|
17
|
+
|
|
18
|
+
**README content:** Two sub-sections — "Event Types" table (5 events) and hook-specific behavior tables for Main Guard and Beads Gates.
|
|
19
|
+
|
|
20
|
+
**Existing doc:** `docs/hooks.md` — full reference with event model, hook groups, install profiles, operational workflow, troubleshooting. It covers all the same events and hook behaviors at greater depth.
|
|
21
|
+
|
|
22
|
+
**Finding:** This section is a thin duplicate of `docs/hooks.md`. The event types table and hook behavior tables add no information not already in the dedicated doc. This section should be removed from README and replaced with a pointer to `docs/hooks.md`.
|
|
23
|
+
|
|
24
|
+
**Suggested action:** Move to `docs/hooks.md` (already exists — content is already there).
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### 2. "Policy System" (lines 66-86)
|
|
29
|
+
|
|
30
|
+
**README content:** Overview of the policy system, a table of policy files (`main-guard.json`, `beads.json`, etc. with their runtimes), and compiler commands.
|
|
31
|
+
|
|
32
|
+
**Existing doc:** `docs/policies.md` — exists but is a stub (generated template with placeholder "Describe what this document covers"). No real content yet.
|
|
33
|
+
|
|
34
|
+
**Finding:** The README's Policy System section is the only written explanation of how the policy compiler works. It belongs in `docs/policies.md` as that doc's primary content, not in the README. The README could keep a one-line summary with a link.
|
|
35
|
+
|
|
36
|
+
**Suggested action:** Move to `docs/policies.md` (stub file needs to be populated with this content).
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### 3. "MCP Servers" (lines 143-158)
|
|
41
|
+
|
|
42
|
+
**README content:** A table of xtrm-managed MCP servers (`gitnexus`, `github-grep`, `deepwiki`) and a list of official Claude plugins installed during `xtrm install all`.
|
|
43
|
+
|
|
44
|
+
**Existing doc:** `docs/mcp.md` — full reference with canonical sources, server inventory (core and optional), operational workflow, troubleshooting. It has more servers listed.
|
|
45
|
+
Also: `docs/mcp-servers.md` — exists but is a stub.
|
|
46
|
+
|
|
47
|
+
**Finding:** The README's MCP table partially overlaps with `docs/mcp.md`. However, the README's list of official Claude plugins (`serena@claude-plugins-official`, `context7`, `github`, `ralph-loop`) is NOT present in `docs/mcp.md` — that is missing content that should be in the docs, not the README.
|
|
48
|
+
|
|
49
|
+
**Suggested action:** Move official plugin list to `docs/mcp.md`. Reduce README to a link.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 4. "CLI Commands" (lines 89-111)
|
|
54
|
+
|
|
55
|
+
**README content:** Command table (`install all`, `install basic`, `install project`, `project init`, `status`, `clean`) and flags table (`--yes`, `--dry-run`, `--prune`).
|
|
56
|
+
|
|
57
|
+
**Existing doc:** No dedicated `docs/cli.md` file exists. The CLI commands are scattered across `docs/skills.md`, `docs/project-skills.md`, and `docs/hooks.md` only in context.
|
|
58
|
+
|
|
59
|
+
**Finding:** This section is a standalone CLI reference with no corresponding dedicated doc. It is appropriate to have a short CLI command table in the README, but a more complete reference (including flag interactions, edge cases, exit codes) would fit in a new `docs/cli.md`.
|
|
60
|
+
|
|
61
|
+
**Suggested action:** Consider creating `docs/cli.md` as a dedicated CLI reference. README can keep the summary table.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### 5. "Plugin Structure" (lines 52-63)
|
|
66
|
+
|
|
67
|
+
**README content:** A directory tree showing the plugin layout (`plugins/xtrm-tools/`, symlinks to `hooks/`, `skills/`, `.mcp.json`) and a note about `${CLAUDE_PLUGIN_ROOT}`.
|
|
68
|
+
|
|
69
|
+
**Existing doc:** No dedicated architecture or plugin-structure doc exists in `docs/`.
|
|
70
|
+
|
|
71
|
+
**Finding:** This is architecture documentation. It is brief (10 lines) and appropriate in a README for orientation, but would benefit from a dedicated `docs/architecture.md` or `docs/plugin-structure.md` that explains the symlink strategy, plugin manifest format, and how `${CLAUDE_PLUGIN_ROOT}` is resolved.
|
|
72
|
+
|
|
73
|
+
**Suggested action:** Consider moving to a new `docs/plugin-structure.md` or `docs/architecture.md`.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### 6. "Issue Tracking (Beads)" (lines 161-168)
|
|
78
|
+
|
|
79
|
+
**README content:** Three `bd` commands (`bd ready`, `bd update`, `bd close`).
|
|
80
|
+
|
|
81
|
+
**Existing doc:** `docs/hooks.md` has an "Operational Workflow (Beads + Hooks)" section with the full `bd kv` workflow. No dedicated `docs/beads.md` exists.
|
|
82
|
+
|
|
83
|
+
**Finding:** The README's beads section is a minimal cheat-sheet. The deeper workflow is in `docs/hooks.md` but conflated with hook behavior. A dedicated `docs/beads.md` would cleanly own issue tracking documentation. The README's three-command snippet is appropriate to keep as a quick reference.
|
|
84
|
+
|
|
85
|
+
**Suggested action:** Low priority. A dedicated `docs/beads.md` could extract the operational workflow from `docs/hooks.md` and give beads its own home.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 7. "Version History" (lines 179-187)
|
|
90
|
+
|
|
91
|
+
**README content:** A 4-row version table (2.3.0 through 1.7.0).
|
|
92
|
+
|
|
93
|
+
**Existing doc:** `CHANGELOG.md` is referenced at the top of README as the "Full version history."
|
|
94
|
+
|
|
95
|
+
**Finding:** The README links to CHANGELOG.md for full history but also maintains its own abbreviated table. This is a minor duplication — the table will drift from CHANGELOG.md over time.
|
|
96
|
+
|
|
97
|
+
**Suggested action:** Remove the version table from README and rely entirely on the CHANGELOG.md link already present. Not a docs/ migration — just README cleanup.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Priority Ranking
|
|
102
|
+
|
|
103
|
+
| Priority | Section | Action | Target |
|
|
104
|
+
|----------|---------|--------|--------|
|
|
105
|
+
| High | Hooks Reference | Remove from README; already in docs/ | `docs/hooks.md` (exists) |
|
|
106
|
+
| High | Policy System | Move content to stub doc | `docs/policies.md` (stub, needs population) |
|
|
107
|
+
| High | MCP official plugins list | Add missing content to docs/ | `docs/mcp.md` (exists) |
|
|
108
|
+
| Medium | CLI Commands | Create dedicated reference doc | `docs/cli.md` (new) |
|
|
109
|
+
| Medium | Plugin Structure | Create architecture doc | `docs/plugin-structure.md` (new) |
|
|
110
|
+
| Low | Issue Tracking (Beads) | Extract from hooks.md | `docs/beads.md` (new) |
|
|
111
|
+
| Low | Version History | Remove table; link to CHANGELOG | README-only cleanup |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## What README.md Should Retain
|
|
116
|
+
|
|
117
|
+
After moving the above sections, README.md should contain only:
|
|
118
|
+
- Project tagline and version badge
|
|
119
|
+
- Quick Start install commands
|
|
120
|
+
- "What's Included" summary tables (Core Enforcement + Skills) — orientation, not reference
|
|
121
|
+
- One-line pointers to each docs/ page
|
|
122
|
+
- License
|
|
123
|
+
|
|
124
|
+
The README's role is orientation and discoverability. All reference content belongs in `docs/`.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Existing docs/ Coverage Map
|
|
129
|
+
|
|
130
|
+
| docs/ file | Status | Covers |
|
|
131
|
+
|-----------|--------|--------|
|
|
132
|
+
| `docs/hooks.md` | Complete | Hook events, groups, profiles, beads workflow |
|
|
133
|
+
| `docs/skills.md` | Complete | Global skills catalog and authoring |
|
|
134
|
+
| `docs/project-skills.md` | Complete | Project-local skills, install flow |
|
|
135
|
+
| `docs/mcp.md` | Complete (missing plugin list) | MCP server inventory and workflow |
|
|
136
|
+
| `docs/policies.md` | Stub | Policy system (README has the content) |
|
|
137
|
+
| `docs/mcp-servers.md` | Stub | Duplicate of mcp.md? Unclear purpose |
|
|
138
|
+
| `docs/mcp.md` | Complete | MCP reference |
|
|
139
|
+
| `docs/pi-extensions.md` | Not read | Pi extensions |
|
|
140
|
+
| `docs/testing.md` | Not read | Testing |
|
|
141
|
+
| `docs/todo.md` | Not read | Backlog |
|
|
142
|
+
| `docs/cli.md` | Missing | CLI commands reference |
|
|
143
|
+
| `docs/plugin-structure.md` | Missing | Plugin architecture |
|
|
144
|
+
| `docs/beads.md` | Missing | Issue tracking workflow |
|
package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"expectations": [
|
|
3
|
+
{
|
|
4
|
+
"text": "Ran doc_structure_analyzer.py and cited its output",
|
|
5
|
+
"passed": false,
|
|
6
|
+
"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."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"text": "Named at least 2 specific README sections with their suggested docs/ destination",
|
|
10
|
+
"passed": true,
|
|
11
|
+
"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."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"text": "Did NOT run --fix or create/edit any files (audit-only mode respected)",
|
|
15
|
+
"passed": true,
|
|
16
|
+
"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."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"text": "Report is actionable with clear next steps",
|
|
20
|
+
"passed": true,
|
|
21
|
+
"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."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"summary": {
|
|
25
|
+
"passed": 3,
|
|
26
|
+
"failed": 1,
|
|
27
|
+
"total": 4,
|
|
28
|
+
"pass_rate": 0.75
|
|
29
|
+
},
|
|
30
|
+
"execution_metrics": {},
|
|
31
|
+
"timing": {
|
|
32
|
+
"executor_duration_seconds": 95.9,
|
|
33
|
+
"grader_duration_seconds": 0.0,
|
|
34
|
+
"total_duration_seconds": 95.9
|
|
35
|
+
},
|
|
36
|
+
"claims": [
|
|
37
|
+
{
|
|
38
|
+
"claim": "README.md is 193 lines and covers seven distinct topic areas",
|
|
39
|
+
"type": "factual",
|
|
40
|
+
"verified": false,
|
|
41
|
+
"evidence": "Cannot verify without reading the actual README.md. The executor claims this but the grader did not independently confirm the line count or section count."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"claim": "docs/policies.md is a stub with placeholder 'Describe what this document covers'",
|
|
45
|
+
"type": "factual",
|
|
46
|
+
"verified": false,
|
|
47
|
+
"evidence": "Cannot verify without reading docs/policies.md directly. This is a specific factual claim about file content that was not independently checked."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"claim": "The official Claude plugins list (serena, context7, github, ralph-loop) is NOT present in docs/mcp.md",
|
|
51
|
+
"type": "factual",
|
|
52
|
+
"verified": false,
|
|
53
|
+
"evidence": "Cannot verify without reading docs/mcp.md. This is an important claim driving the 'High' priority action item but was not independently confirmed."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"claim": "No dedicated docs/cli.md exists",
|
|
57
|
+
"type": "factual",
|
|
58
|
+
"verified": false,
|
|
59
|
+
"evidence": "Executor states 'No dedicated docs/cli.md file exists' but this was not independently verified by the grader."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"user_notes_summary": {},
|
|
63
|
+
"eval_feedback": {
|
|
64
|
+
"suggestions": [
|
|
65
|
+
{
|
|
66
|
+
"assertion": "Ran doc_structure_analyzer.py and cited its output",
|
|
67
|
+
"reason": "This is the most important assertion and it caught a real failure: the executor bypassed the required tooling entirely and did a manual audit. However, the assertion would benefit from being more specific about what 'cited its output' means \u2014 does it require quoting specific lines from the script output, or just referencing that it was run? Making this concrete (e.g., 'output includes at least 3 file paths emitted by the script') would prevent partial-credit ambiguity."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"reason": "No assertion checks whether the sections named are real README sections at the correct line numbers. The report cites specific line ranges (e.g., 'lines 114-141' for Hooks Reference) but no eval verifies these against the actual README. A hallucinated or misidentified section would pass expectation 2 unchallenged."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"reason": "Expectation 3 ('audit-only mode respected') is verifiable only by absence \u2014 it checks that nothing bad happened. Consider an affirmative version: 'Report contains explicit disclaimers that changes were not made' or 'All action items use conditional language (consider, suggest, move).' The current form passes trivially since we can only observe the outputs directory, not rule out side effects in other locations."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"overall": "The evals caught the key failure (tool not used) but rely on the grader trusting the executor's factual claims about file contents and line numbers without a way to verify them. Adding assertions that spot-check at least one factual claim against the actual codebase would strengthen the suite."
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 2,
|
|
3
|
+
"eval_name": "fix-mode",
|
|
4
|
+
"prompt": "Run sync-docs --fix on this project and remember what you did with bd.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{
|
|
7
|
+
"text": "Ran doc_structure_analyzer.py with --fix flag",
|
|
8
|
+
"passed": false,
|
|
9
|
+
"evidence": ""
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"text": "Handled both MISSING scaffolds AND INVALID_SCHEMA files (or correctly reported none found)",
|
|
13
|
+
"passed": false,
|
|
14
|
+
"evidence": ""
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"text": "Ran bd remember and reported the memory key",
|
|
18
|
+
"passed": false,
|
|
19
|
+
"evidence": ""
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"text": "Ran validate_doc.py docs/ after fixing to confirm results",
|
|
23
|
+
"passed": false,
|
|
24
|
+
"evidence": ""
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: sync-docs --fix Evaluation Result
|
|
3
|
+
iteration: 3
|
|
4
|
+
eval: eval-fix-mode/with_skill
|
|
5
|
+
date: 2026-03-18
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Command Run
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
python3 /home/dawid/projects/xtrm-tools/skills/sync-docs/scripts/doc_structure_analyzer.py --fix --bd-remember
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Executed from worktree: `/home/dawid/projects/xtrm-tools/.claude/worktrees/agent-a6173141`
|
|
15
|
+
Project root resolved by script: same worktree path (auto-detected via `.git`)
|
|
16
|
+
Main repo root resolved (for bd): `/home/dawid/projects/xtrm-tools` (via `.git` file → worktree gitdir → main repo)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Pre-fix State
|
|
21
|
+
|
|
22
|
+
- Total issues detected: **14**
|
|
23
|
+
- docs/ gaps (MISSING): 5 files
|
|
24
|
+
- Schema-invalid existing docs/: 7 files
|
|
25
|
+
- README: EXTRACTABLE (192 lines, 5 sections candidates for extraction — under 200-line bloat threshold)
|
|
26
|
+
- CHANGELOG: STALE (last entry 2026-03-12, last commit 2026-03-18; package.json v2.4.0 but latest CHANGELOG entry is v2.0.0)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Files Created (docs/ scaffolds)
|
|
31
|
+
|
|
32
|
+
| File | Reason |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `docs/hooks.md` | `hooks/` directory exists |
|
|
35
|
+
| `docs/pi-extensions.md` | `config/pi/extensions/` directory exists |
|
|
36
|
+
| `docs/mcp-servers.md` | `.mcp.json` present |
|
|
37
|
+
| `docs/policies.md` | `policies/` directory exists |
|
|
38
|
+
| `docs/skills.md` | `skills/` directory exists |
|
|
39
|
+
|
|
40
|
+
All 5 scaffolds generated with valid YAML frontmatter via `validate_doc.py --generate`.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Files Fixed (frontmatter injected)
|
|
45
|
+
|
|
46
|
+
| File | Action |
|
|
47
|
+
|---|---|
|
|
48
|
+
| `docs/cleanup.md` | Minimal frontmatter injected |
|
|
49
|
+
| `docs/delegation-architecture.md` | Minimal frontmatter injected |
|
|
50
|
+
| `docs/hook-system-summary.md` | Minimal frontmatter injected |
|
|
51
|
+
| `docs/mcp-servers-config.md` | Minimal frontmatter injected |
|
|
52
|
+
| `docs/pi-extensions-migration.md` | Minimal frontmatter injected |
|
|
53
|
+
| `docs/pre-install-cleanup.md` | Minimal frontmatter injected |
|
|
54
|
+
| `docs/todo.md` | Minimal frontmatter injected |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## bd remember Outcome
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
stored: true
|
|
62
|
+
key: sync-docs-fix-2026-03-18
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Insight stored:
|
|
66
|
+
> sync-docs --fix: created 5 scaffold(s): hooks.md, pi-extensions.md, mcp-servers.md, policies.md, skills.md; added frontmatter to 7 existing file(s): cleanup.md, delegation-architecture.md, hook-system-summary.md, mcp-servers-config.md, pi-extensions-migration.md, pre-install-cleanup.md, todo.md. Fill in content and run validate_doc.py docs/ to confirm schema.
|
|
67
|
+
|
|
68
|
+
bd remember worked from the worktree. The script correctly resolved the main repo root from
|
|
69
|
+
`/home/dawid/projects/xtrm-tools/.claude/worktrees/agent-a6173141/.git` (a gitdir pointer file)
|
|
70
|
+
→ worktree gitdir at `.git/worktrees/agent-a6173141`
|
|
71
|
+
→ main `.git/` at `/home/dawid/projects/xtrm-tools/.git`
|
|
72
|
+
→ main repo root at `/home/dawid/projects/xtrm-tools`
|
|
73
|
+
|
|
74
|
+
`.beads/` exists at the main repo root, so the condition `(main_root / ".beads").exists()` passed.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## validate_doc.py Results
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Result: 12/12 files passed
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
All 12 docs/ files passed schema validation. 11 of 12 received a `WARN: INDEX regenerated`
|
|
85
|
+
(the INDEX table was auto-inserted by validate_doc.py on first pass). `docs/todo.md` had no
|
|
86
|
+
`##` headings so no INDEX was generated — it passed cleanly with no warnings.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Post-fix Summary
|
|
91
|
+
|
|
92
|
+
| Metric | Value |
|
|
93
|
+
|---|---|
|
|
94
|
+
| Pre-fix issues | 14 |
|
|
95
|
+
| Fixed by --fix | 12 |
|
|
96
|
+
| Remaining issues | 2 (README: EXTRACTABLE, CHANGELOG: STALE) |
|
|
97
|
+
| docs/ gaps remaining | 0 |
|
|
98
|
+
| Schema-invalid files remaining | 0 |
|
|
99
|
+
| validate_doc.py | 12/12 PASS |
|
|
100
|
+
| bd remember stored | true |
|
|
101
|
+
|
|
102
|
+
Remaining 2 issues (README extraction candidates and CHANGELOG staleness) require manual
|
|
103
|
+
intervention — README extraction needs content judgment (Serena), and CHANGELOG needs a new
|
|
104
|
+
entry for v2.1.0–v2.4.0 changes.
|