@bompus/house-rules 0.0.0-stage → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CODE_OF_CONDUCT.md +83 -0
  2. package/CONTRIBUTING.md +54 -0
  3. package/LICENSE +21 -0
  4. package/README.md +378 -2
  5. package/THIRD_PARTY_NOTICES.md +188 -0
  6. package/compose.mjs +125 -0
  7. package/composition.mjs +361 -0
  8. package/config-view.mjs +209 -0
  9. package/config.mjs +381 -0
  10. package/docs/assets/banner-dark.png +0 -0
  11. package/docs/assets/banner-light.png +0 -0
  12. package/docs/assets/overview.png +0 -0
  13. package/docs/configuration.md +269 -0
  14. package/docs/skill-names.md +50 -0
  15. package/examples/person/house-rules.json +15 -0
  16. package/examples/person/rules/10-tooling.md +8 -0
  17. package/examples/person/rules/20-reporting.md +9 -0
  18. package/examples/project/AGENTS.md +18 -0
  19. package/package.json +42 -4
  20. package/rule-references.mjs +91 -0
  21. package/rules/core.md +340 -0
  22. package/rules/modifiers/backlog-outline.md +25 -0
  23. package/rules/modifiers/backlog-visual.md +16 -0
  24. package/rules/modifiers/coded-offers.md +70 -0
  25. package/rules/modifiers/cross-session-relay.md +23 -0
  26. package/rules/modifiers/effort-estimates.md +41 -0
  27. package/rules/modifiers/land-when-done.md +12 -0
  28. package/rules/modifiers/low-quota-handoff.md +20 -0
  29. package/rules/modifiers/model-default-questions.md +33 -0
  30. package/rules/modifiers/multi-agent.md +38 -0
  31. package/rules/modifiers/no-attribution.md +16 -0
  32. package/rules/modifiers/periodic-updates.md +25 -0
  33. package/rules/modifiers/plan-files.md +82 -0
  34. package/rules/modifiers/question-cards.md +48 -0
  35. package/rules/modifiers/release-batching.md +15 -0
  36. package/rules/modifiers/scratch-on-disk.md +15 -0
  37. package/rules/modifiers/shared-host-load.md +19 -0
  38. package/rules/modifiers/solo-operator.md +13 -0
  39. package/rules/modifiers/squash-landing.md +22 -0
  40. package/rules/modifiers/upstream-contributions.md +45 -0
  41. package/rules/modifiers/web-image-formats.md +35 -0
  42. package/rules/references/backlog-view.md +154 -0
  43. package/rules/references/github-actions.md +45 -0
  44. package/rules/references/landing.md +39 -0
  45. package/rules/references/multi-agent.md +51 -0
  46. package/rules/references/release-batching.md +66 -0
  47. package/rules/references/squash-landing.md +50 -0
  48. package/rules/references/thread-visuals.md +45 -0
  49. package/setup.mjs +445 -0
  50. package/skills/hr-agent-guidance-audit/LICENSE +21 -0
  51. package/skills/hr-agent-guidance-audit/SKILL.md +91 -0
  52. package/skills/hr-agent-guidance-audit/agents/openai.yaml +2 -0
  53. package/skills/hr-agent-guidance-audit/references/prune-workflow.md +72 -0
  54. package/skills/hr-agent-guidance-audit/references/records-and-lessons.md +60 -0
  55. package/skills/hr-agent-guidance-audit/references/retirement-verdicts.md +49 -0
  56. package/skills/hr-agent-guidance-refresh/LICENSE +21 -0
  57. package/skills/hr-agent-guidance-refresh/SKILL.md +36 -0
  58. package/skills/hr-agent-guidance-refresh/agents/openai.yaml +2 -0
  59. package/skills/hr-agent-guidance-refresh/references/verification.md +47 -0
  60. package/skills/hr-api-exposure-check/SKILL.md +159 -0
  61. package/skills/hr-api-exposure-check/agents/openai.yaml +3 -0
  62. package/skills/hr-audit-choices/SKILL.md +67 -0
  63. package/skills/hr-audit-choices/agents/openai.yaml +2 -0
  64. package/skills/hr-benchmarking/NOTICE.md +36 -0
  65. package/skills/hr-benchmarking/SKILL.md +279 -0
  66. package/skills/hr-benchmarking/agents/openai.yaml +2 -0
  67. package/skills/hr-benchmarking/references/javascript.md +130 -0
  68. package/skills/hr-benchmarking/references/tools.md +165 -0
  69. package/skills/hr-benchmarking/scripts/process-attribution.ps1 +20 -0
  70. package/skills/hr-benchmarking/scripts/process-attribution.py +107 -0
  71. package/skills/hr-better-accessibility/LICENSE +22 -0
  72. package/skills/hr-better-accessibility/NOTICE.md +46 -0
  73. package/skills/hr-better-accessibility/SKILL.md +119 -0
  74. package/skills/hr-better-accessibility/agents/openai.yaml +3 -0
  75. package/skills/hr-better-accessibility/focus-and-keyboard.md +130 -0
  76. package/skills/hr-better-accessibility/forms.md +82 -0
  77. package/skills/hr-better-accessibility/hit-areas.md +98 -0
  78. package/skills/hr-better-accessibility/motion-and-zoom.md +81 -0
  79. package/skills/hr-better-accessibility/screen-readers.md +102 -0
  80. package/skills/hr-better-accessibility/semantics-and-aria.md +84 -0
  81. package/skills/hr-better-colors/LICENSE +21 -0
  82. package/skills/hr-better-colors/NOTICE.md +37 -0
  83. package/skills/hr-better-colors/SKILL.md +114 -0
  84. package/skills/hr-better-colors/agents/openai.yaml +3 -0
  85. package/skills/hr-better-colors/color-formats.md +90 -0
  86. package/skills/hr-better-colors/color-usage.md +140 -0
  87. package/skills/hr-better-colors/contrast.md +80 -0
  88. package/skills/hr-better-colors/palette-generation.md +104 -0
  89. package/skills/hr-better-colors/palette-structure.md +76 -0
  90. package/skills/hr-better-colors/token-naming.md +97 -0
  91. package/skills/hr-better-layout/LICENSE +22 -0
  92. package/skills/hr-better-layout/NOTICE.md +48 -0
  93. package/skills/hr-better-layout/SKILL.md +92 -0
  94. package/skills/hr-better-layout/agents/openai.yaml +3 -0
  95. package/skills/hr-better-layout/grouping-and-alignment.md +144 -0
  96. package/skills/hr-better-layout/spacing-and-adaptivity.md +215 -0
  97. package/skills/hr-better-typography/LICENSE +22 -0
  98. package/skills/hr-better-typography/NOTICE.md +46 -0
  99. package/skills/hr-better-typography/SKILL.md +172 -0
  100. package/skills/hr-better-typography/agents/openai.yaml +3 -0
  101. package/skills/hr-better-typography/choosing-fonts.md +69 -0
  102. package/skills/hr-better-typography/css-cheat-sheet.md +65 -0
  103. package/skills/hr-better-typography/details-and-accessibility.md +119 -0
  104. package/skills/hr-better-typography/spacing-and-sizing.md +131 -0
  105. package/skills/hr-better-typography/variable-fonts-and-opentype.md +105 -0
  106. package/skills/hr-better-typography/wrapping-and-punctuation.md +57 -0
  107. package/skills/hr-better-writing/LICENSE +22 -0
  108. package/skills/hr-better-writing/NOTICE.md +46 -0
  109. package/skills/hr-better-writing/SKILL.md +122 -0
  110. package/skills/hr-better-writing/agents/openai.yaml +3 -0
  111. package/skills/hr-code-review/LICENSE +21 -0
  112. package/skills/hr-code-review/NOTICE.md +26 -0
  113. package/skills/hr-code-review/SKILL.md +163 -0
  114. package/skills/hr-code-review/agents/openai.yaml +3 -0
  115. package/skills/hr-code-review/references/acp-client.md +43 -0
  116. package/skills/hr-code-review/references/evidence.md +57 -0
  117. package/skills/hr-code-review/references/impact.md +103 -0
  118. package/skills/hr-code-review/references/panel-adjudication.md +58 -0
  119. package/skills/hr-code-review/references/panel-plan.md +61 -0
  120. package/skills/hr-code-review/references/panel-recommendations.json +105 -0
  121. package/skills/hr-code-review/references/panel-recommendations.md +46 -0
  122. package/skills/hr-code-review/references/panel-setup.md +54 -0
  123. package/skills/hr-code-review/references/reviewer-role.md +31 -0
  124. package/skills/hr-code-review/scripts/acp-panel-client.mjs +299 -0
  125. package/skills/hr-code-review/scripts/check-receipts.mjs +263 -0
  126. package/skills/hr-code-review/scripts/panel-plan.mjs +69 -0
  127. package/skills/hr-code-review/scripts/panel-preferences.mjs +220 -0
  128. package/skills/hr-design-exploration/SKILL.md +105 -0
  129. package/skills/hr-design-exploration/agents/openai.yaml +4 -0
  130. package/skills/hr-diagnosing-bugs/NOTICE.md +45 -0
  131. package/skills/hr-diagnosing-bugs/SKILL.md +108 -0
  132. package/skills/hr-diagnosing-bugs/agents/openai.yaml +3 -0
  133. package/skills/hr-diagnosing-bugs/references/reporting.md +97 -0
  134. package/skills/hr-diagnosing-bugs/scripts/check-pr-offer.mjs +47 -0
  135. package/skills/hr-explain-code/NOTICE.md +37 -0
  136. package/skills/hr-explain-code/SKILL.md +110 -0
  137. package/skills/hr-explain-code/agents/openai.yaml +5 -0
  138. package/skills/hr-explain-code/references/helper-brief.md +39 -0
  139. package/skills/hr-extract-shared-steps/SKILL.md +134 -0
  140. package/skills/hr-extract-shared-steps/agents/openai.yaml +3 -0
  141. package/skills/hr-forgotten-work-audit/SKILL.md +130 -0
  142. package/skills/hr-forgotten-work-audit/references/brief-template.md +56 -0
  143. package/skills/hr-forgotten-work-audit/references/result-format.md +46 -0
  144. package/skills/hr-handoff/LICENSE +21 -0
  145. package/skills/hr-handoff/NOTICE.md +29 -0
  146. package/skills/hr-handoff/SKILL.md +114 -0
  147. package/skills/hr-handoff/agents/openai.yaml +5 -0
  148. package/skills/hr-handoff/assets/ledger.example.json +10 -0
  149. package/skills/hr-handoff/assets/receipt.example.json +76 -0
  150. package/skills/hr-handoff/assets/source.example.json +20 -0
  151. package/skills/hr-handoff/references/reconciliation.md +124 -0
  152. package/skills/hr-handoff/references/successor-thread.md +76 -0
  153. package/skills/hr-handoff/scripts/check-reconciliation.mjs +324 -0
  154. package/skills/hr-house-rules-setup/SKILL.md +114 -0
  155. package/skills/hr-house-rules-setup/agents/openai.yaml +5 -0
  156. package/skills/hr-issue-tracker-setup/SKILL.md +49 -0
  157. package/skills/hr-issue-tracker-setup/agents/openai.yaml +5 -0
  158. package/skills/hr-lean-plan/SKILL.md +146 -0
  159. package/skills/hr-lean-plan/agents/openai.yaml +5 -0
  160. package/skills/hr-maintainability-review/SKILL.md +186 -0
  161. package/skills/hr-maintainability-review/agents/openai.yaml +5 -0
  162. package/skills/hr-manual-qa/NOTICE.md +36 -0
  163. package/skills/hr-manual-qa/SKILL.md +37 -0
  164. package/skills/hr-manual-qa/agents/openai.yaml +3 -0
  165. package/skills/hr-navigation-retro/LICENSE +21 -0
  166. package/skills/hr-navigation-retro/NOTICE.md +5 -0
  167. package/skills/hr-navigation-retro/SKILL.md +86 -0
  168. package/skills/hr-navigation-retro/agents/openai.yaml +4 -0
  169. package/skills/hr-navigation-retro/references/inputs.md +67 -0
  170. package/skills/hr-navigation-retro/scripts/retro.py +552 -0
  171. package/skills/hr-navigation-retro/scripts/transcripts.py +205 -0
  172. package/skills/hr-ordering-tests/SKILL.md +51 -0
  173. package/skills/hr-ordering-tests/agents/openai.yaml +2 -0
  174. package/skills/hr-plain-prose/SKILL.md +264 -0
  175. package/skills/hr-plain-prose/agents/openai.yaml +3 -0
  176. package/skills/hr-plain-prose/scripts/check.mjs +331 -0
  177. package/skills/hr-pr-followup/LICENSE +21 -0
  178. package/skills/hr-pr-followup/NOTICE.md +9 -0
  179. package/skills/hr-pr-followup/SKILL.md +74 -0
  180. package/skills/hr-pr-followup/agents/openai.yaml +2 -0
  181. package/skills/hr-pr-followup/references/review-helpers.md +111 -0
  182. package/skills/hr-pr-followup/scripts/check-landing.py +204 -0
  183. package/skills/hr-pr-followup/scripts/check-pr-review.ts +510 -0
  184. package/skills/hr-pr-followup/scripts/merge-pr.sh +100 -0
  185. package/skills/hr-pr-followup/scripts/resolve-pr-thread.ts +219 -0
  186. package/skills/hr-pr-followup/scripts/verify-landed.sh +184 -0
  187. package/skills/hr-progress-report/SKILL.md +49 -0
  188. package/skills/hr-progress-report/agents/openai.yaml +5 -0
  189. package/skills/hr-read-reddit/SKILL.md +44 -0
  190. package/skills/hr-read-reddit/agents/openai.yaml +2 -0
  191. package/skills/hr-read-reddit/scripts/reddit.ts +252 -0
  192. package/skills/hr-read-x-links/SKILL.md +42 -0
  193. package/skills/hr-read-x-links/agents/openai.yaml +2 -0
  194. package/skills/hr-read-x-links/scripts/x-post.ts +264 -0
  195. package/skills/hr-research-shared-links/SKILL.md +103 -0
  196. package/skills/hr-split-to-prs/LICENSE +21 -0
  197. package/skills/hr-split-to-prs/NOTICE.md +9 -0
  198. package/skills/hr-split-to-prs/SKILL.md +61 -0
  199. package/skills/hr-split-to-prs/agents/openai.yaml +2 -0
  200. package/skills/hr-sqlite/SKILL.md +174 -0
  201. package/skills/hr-sqlite/agents/openai.yaml +2 -0
  202. package/skills/hr-sqlite/references/evidence.md +94 -0
  203. package/skills/hr-sqlite/references/tool-decisions.md +39 -0
  204. package/skills/hr-sqlite/scripts/inspect-sqlite.py +245 -0
  205. package/skills/hr-stock-ui-audit/SKILL.md +132 -0
  206. package/skills/hr-stock-ui-audit/agents/openai.yaml +3 -0
  207. package/skills/hr-stock-ui-audit/scripts/scan.mjs +619 -0
  208. package/skills/hr-tdd/LICENSE +21 -0
  209. package/skills/hr-tdd/NOTICE.md +10 -0
  210. package/skills/hr-tdd/SKILL.md +40 -0
  211. package/skills/hr-tdd/agents/openai.yaml +3 -0
  212. package/skills/hr-tdd/mocking.md +39 -0
  213. package/skills/hr-tdd/tests.md +77 -0
  214. package/skills/hr-test-audit/LICENSE +21 -0
  215. package/skills/hr-test-audit/NOTICE.md +67 -0
  216. package/skills/hr-test-audit/SKILL.md +146 -0
  217. package/skills/hr-test-audit/agents/openai.yaml +3 -0
  218. package/skills/hr-test-audit/scripts/floor-guard.ts +137 -0
  219. package/skills/hr-usage-report/SKILL.md +90 -0
  220. package/skills/hr-usage-report/agents/openai.yaml +2 -0
  221. package/skills/hr-usage-report/assets/example-report.json +125 -0
  222. package/skills/hr-usage-report/assets/report-template.html +377 -0
  223. package/skills/hr-usage-report/scripts/render-report.ts +86 -0
  224. package/skills/hr-usage-report/scripts/usage-by-model.ts +499 -0
  225. package/skills/hr-what-next/SKILL.md +151 -0
  226. package/skills/hr-what-next/agents/openai.yaml +4 -0
  227. package/skills/hr-what-next/references/reporting.md +59 -0
  228. package/skills/hr-what-next/scripts/check-open-work.mjs +711 -0
  229. package/skills/hr-writing-for-agents/NOTICE.md +46 -0
  230. package/skills/hr-writing-for-agents/SKILL-MECHANICS.md +83 -0
  231. package/skills/hr-writing-for-agents/SKILL.md +108 -0
  232. package/skills/hr-writing-for-agents/agents/openai.yaml +3 -0
  233. package/skills/hr-writing-pr/NOTICE.md +48 -0
  234. package/skills/hr-writing-pr/SKILL.md +119 -0
  235. package/skills/hr-writing-pr/agents/openai.yaml +2 -0
  236. package/skills/hr-writing-pr/scripts/benefit-chart.py +200 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: hr-maintainability-review
3
+ description: "Review a diff or an entire codebase for maintainability and structure, preserving behavior. Use when explicitly requested for a strict, deep or harsh maintainability review, or a whole-repository over-engineering or bloat audit. Report-only; correctness, UI quality, test coverage and measured performance need separate assessments."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Maintainability review
8
+
9
+ A demanding read of the requested code, asking a single question: is this
10
+ the simplest shape the code could take while doing exactly what it does now?
11
+ Correctness is out of scope. For a routine review against repository
12
+ standards, use `hr-code-review`; for hunting a bug, use `hr-diagnosing-bugs`. This
13
+ review changes no code; it reports findings and a verdict.
14
+
15
+ ## Choose the scope
16
+
17
+ Use the user's requested scope: a diff, a subsystem or the entire repository.
18
+ Record the revision and whether working-tree and untracked files are included.
19
+ For a whole-codebase review, recent changes may inform priority but never narrow
20
+ coverage to touched files. If the request names no scope, use the current
21
+ branch's changes against the repository's default branch.
22
+
23
+ ### Diff review
24
+
25
+ 1. Find the branch's base with the repository's default branch, not a guessed
26
+ name, and read the full diff against it.
27
+ 2. Read every touched file whole, not only the hunks. Structure problems sit in
28
+ how new lines fit the old ones.
29
+ 3. For each new function, type, flag or module, read its callers and look for
30
+ an existing helper, module or pattern that already does the job.
31
+ 4. Note each file's length before and after the change.
32
+
33
+ Done when you can explain, for every touched file, what it owned before the
34
+ change and what it owns now.
35
+
36
+ ### Whole-repository or subsystem review
37
+
38
+ 1. Inventory the in-scope packages, modules, entry points and shared code.
39
+ Record generated and vendor code, exclusions and inaccessible areas.
40
+ 2. Review each area and trace its consumers and cross-module boundaries.
41
+ Read candidate files whole; inspect callers, tests and configuration before
42
+ declaring a layer, branch or helper unnecessary. Search dynamic and string
43
+ references too when proposing deletion.
44
+ 3. Record each area's assessment, supporting files and remaining gaps. Mark
45
+ an area assessed only after inspecting its implementation and relevant
46
+ consumers; inventory or file counts alone do not establish coverage.
47
+
48
+ Done when every inventoried area has an assessment or an explicit note that it was
49
+ not reviewed. Report gaps rather than claiming a complete audit from a sample.
50
+
51
+ ## What to challenge
52
+
53
+ - **Special cases in shared flows.** An `if` for one caller, one tenant or one
54
+ feature inside a path everyone uses. Ask whether the case belongs at the
55
+ caller, in data, or in a separate path.
56
+ - **Files past what a reader can hold.** When a file grows large enough that
57
+ nobody can keep its whole shape in mind, ask whether it should be split
58
+ before this change lands, and where the seam is.
59
+ - **Pass-through layers.** Wrappers, adapters and services that forward calls
60
+ with renamed arguments. Indirection must buy clarity, isolation or a real
61
+ second implementation. Test a suspect module by imagining it deleted: if its
62
+ complexity would spread into every caller, it is earning its keep; propose
63
+ removal only when callers could use the underlying behavior directly without
64
+ duplicating or redistributing that complexity.
65
+ - **Generic machinery over a simple shape.** Registries, plugin systems,
66
+ builders or configurable pipelines where the data is a fixed list or a plain
67
+ record.
68
+ - **Loose types hiding an invariant.** Casts, `any`, broad unions and optional
69
+ fields that cover a rule nobody wrote down. Often the fix is two types, or a
70
+ required field set at construction.
71
+ - **Logic in the wrong home.** Code that reaches into another module's
72
+ internals, belongs beside the data it reads, or repeats a helper that already
73
+ exists.
74
+ - **Forced ordering.** Independent steps chained one after another, so a slow
75
+ or failing step blocks unrelated ones.
76
+ - **Half-applied updates.** A multi-step write that leaves state inconsistent
77
+ if it stops partway. Look for a single transaction, a write-then-swap, or a
78
+ shape where partial state cannot exist.
79
+ - **Modes and flags.** A boolean parameter or mode switch that splits one
80
+ function into two behaviors sharing a name.
81
+ - **Leftover scaffolding.** Stubs and placeholders still on a live path, fixed
82
+ sample data where real data should flow, functions that report success
83
+ without doing their work, handlers that silently do nothing, "temporary"
84
+ branches that shipped, and comments describing a refactor long finished.
85
+ Propose deleting what no consumer needs. When a consumer depends on one, the
86
+ real behavior is missing: report it under **Other assessments** as a
87
+ correctness concern, without guessing at the contract the code never showed.
88
+
89
+ ## Look for code that disappears
90
+
91
+ The most valuable finding removes moving parts outright: a branch, mode,
92
+ layer or helper that stops being needed once the change is framed differently
93
+ or leans on what the architecture already provides. Examples of the move:
94
+
95
+ - the new flag goes away if the caller passes the value it already has;
96
+ - the special case goes away if the shared type carries the field;
97
+ - the wrapper goes away if callers use the underlying API directly;
98
+ - the retry layer goes away if the operation is made idempotent.
99
+
100
+ Aim past a tidier copy of the same design. When a different framing would
101
+ make a whole branch, mode or layer unnecessary, argue for that framing
102
+ rather than for local cleanup.
103
+
104
+ Propose such a restructure only when you can name the files, the parts that
105
+ go, and what replaces them. A vague "this could be simpler" is not a finding.
106
+ Moving code between files without removing anything is weaker than deleting
107
+ it; renaming is not a remedy for a structural problem.
108
+
109
+ ## Filter
110
+
111
+ Keep a finding only when all of these hold:
112
+
113
+ - you can describe the restructure concretely;
114
+ - behavior stays the same after it, including errors and edge cases;
115
+ - it removes complexity a future maintainer would pay for.
116
+
117
+ Order findings by structural impact, largest first. Prefer three solid
118
+ findings to ten guesses. Drop cosmetic notes (naming, formatting, comment
119
+ wording) whenever any structural finding exists. If the change has no
120
+ structural problem, say so in one sentence; do not invent one to fill the
121
+ report.
122
+
123
+ ## Write each finding
124
+
125
+ For each finding, give in order:
126
+
127
+ 1. **Where**: file and line range, or the functions involved.
128
+ 2. **Problem**: what makes this shape costly to read or change, in one or two
129
+ sentences.
130
+ 3. **Restructure**: the concrete change, with a short sketch when prose is
131
+ ambiguous.
132
+ 4. **What goes away**: the branches, types, files or lines removed.
133
+ 5. **Behavior check**: why behavior is unchanged, and which tests would show
134
+ it.
135
+
136
+ ## Verdict
137
+
138
+ Include the scope and coverage limits with the verdict. Whole-repository and
139
+ subsystem reviews use **Priority fixes**, **Optional** and **Overall**: rank current
140
+ maintenance costs and state what was assessed, rather than judging whether
141
+ existing code is ready to merge. For a diff, use these three parts:
142
+
143
+ - **Before merge**: findings whose shape will be expensive to undo once other
144
+ code depends on it, each with its restructure.
145
+ - **Optional**: improvements worth doing now or later, each with its
146
+ restructure.
147
+ - **Overall**: one line stating whether the structure is ready to merge.
148
+
149
+ If nothing must change, the "Before merge" list says "none".
150
+
151
+ For diff reviews, working behavior alone does not make the structure ready. Each of these
152
+ goes under "Before merge" unless the author gives a clear reason to keep it:
153
+
154
+ - a visible restructure that would delete much of the change's incidental
155
+ complexity, left untaken;
156
+ - new special-case branches that tangle a shared flow;
157
+ - feature checks spread across shared code to solve a local problem;
158
+ - a new wrapper, cast or loosely typed contract that adds indirection
159
+ without paying for it;
160
+ - a near-copy of an existing helper, or logic placed outside the module
161
+ that owns the concept.
162
+
163
+ ## Other assessments
164
+
165
+ For a request combining several kinds of review, account for each separately:
166
+
167
+ - **Correctness:** `hr-code-review` assesses a diff against requirements;
168
+ `hr-diagnosing-bugs` investigates a concrete suspected failure. Neither a
169
+ structural verdict nor a diff review establishes whole-codebase correctness.
170
+ - **UI:** use the available `hr-better-*` skills for the requested layout,
171
+ typography, colors, accessibility or interface copy; `hr-stock-ui-audit`
172
+ targets template-default styling.
173
+ - **Tests:** `hr-test-audit` assesses test value and duplication. Record test
174
+ execution and coverage separately; do not infer coverage from test count.
175
+ - **Performance:** `hr-benchmarking` measures an authorized workload; inspect
176
+ build artifacts when bundle size is requested. Label unmeasured claims.
177
+ - **Agent guidance:** `hr-agent-guidance-audit` checks rules, skills and their
178
+ references for duplication, contradictions and stale instructions.
179
+
180
+ Use these workflows only for the requested dimensions and within their
181
+ invocation policies. Report unavailable or unassessed dimensions explicitly.
182
+
183
+ ## Tone
184
+
185
+ Direct and serious. Name the problem plainly and explain the cost. Never mock
186
+ the author, and never soften a required change into a suggestion.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "HR: Maintainability review"
3
+ short_description: "Strict maintainability or bloat review of a diff or codebase"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,36 @@
1
+ # Source notices
2
+
3
+ This notice accompanies the hr-manual-qa bundle when copied on its own.
4
+
5
+ ## Jeanno/jeanno-skills (ideas)
6
+
7
+ Source: https://github.com/Jeanno/jeanno-skills (compared at revision `db4e8fd66197ece38d622ca8b527dbe821843df2`)
8
+
9
+ - `skills/hr-manual-qa/SKILL.md`: independently written instructions informed by
10
+ the reproducible-checklist idea in `skills/qa-checklist/SKILL.md`.
11
+
12
+ No source text is copied; these instructions are independently written.
13
+
14
+ ## house-rules and MIT permission notice
15
+
16
+ MIT License
17
+
18
+ Copyright (c) 2026 Aaron Queen
19
+
20
+ Permission is hereby granted, free of charge, to any person obtaining a copy
21
+ of this software and associated documentation files (the "Software"), to deal
22
+ in the Software without restriction, including without limitation the rights
23
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
24
+ copies of the Software, and to permit persons to whom the Software is
25
+ furnished to do so, subject to the following conditions:
26
+
27
+ The above copyright notice and this permission notice shall be included in all
28
+ copies or substantial portions of the Software.
29
+
30
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
35
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
36
+ SOFTWARE.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: hr-manual-qa
3
+ description: "Make a reproducible manual verification checklist when the user requests manual QA, or a change needs a device, access or human judgment the agent lacks. Exclude checks the agent can automate or perform itself."
4
+ ---
5
+
6
+ # Manual QA
7
+
8
+ Turn changed behavior and credible regression risks into observations the user
9
+ can reproduce. Follow the project's verification and domain safeguards.
10
+
11
+ 1. Identify the changed flow and its expected behavior from the request, diff
12
+ and existing requirements. Name missing information that affects a check.
13
+ 2. Reuse verification results already obtained and run remaining relevant
14
+ agent-accessible checks within current authorization. Report each check's
15
+ command or context and actual result: passed, failed, blocked or not run.
16
+ Keep failed checks visible; a manual checklist does not establish a pass.
17
+ 3. Select the observations that still need the user's device, access or
18
+ judgment. Keep agent-runnable checks with the agent. When no manual
19
+ observation is needed, say so instead of inventing a checklist.
20
+ 4. Ground regression checks in the changed flow and supported surfaces. Use
21
+ available impact findings and UI guidance. When a consequential risk needs
22
+ investigation and `hr-code-review` is available, use it for that risk;
23
+ otherwise name the uncertainty. A checklist does not require a full impact
24
+ assessment.
25
+ 5. Present agent results first. When a manual observation remains, include a
26
+ quick smoke check of the changed flow and any further required user checks.
27
+ When none remains, do not request a user smoke check. Each manual check names:
28
+ - **Setup**: device, account, data and navigation needed to reach the state.
29
+ - **Action**: the interaction to perform.
30
+ - **Expected observation**: the visible result that distinguishes success
31
+ from failure.
32
+ - **Reason**: the changed requirement or credible regression it checks.
33
+ Keep the smoke check short without omitting required coverage to meet a
34
+ time limit. Report access gaps and checks still awaiting the user.
35
+
36
+ Done when each required manual observation has a reproducible check or a named
37
+ coverage gap. Distinguish agent verification from user checks still pending.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "HR: Manual QA"
3
+ short_description: "Reproducible checks needing human access or judgment"
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aaron Queen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ # Source notice
2
+
3
+ The navigation workflow, transcript parser and synthetic tests were written by
4
+ bompus. This bundle distributes no real session transcripts or findings.
5
+ The MIT licence in LICENSE applies to this bundle.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: hr-navigation-retro
3
+ description: "Audit agent navigation using selected tool-call transcripts: rank misses, widened searches, re-reads and stale-doc remarks, verify findings against current repositories, and propose findability fixes. Use for agent-navigation retrospectives or re-measuring navigation fixes; general project retrospectives are outside this scope."
4
+ argument-hint: "<transcript ...> --repo-root NAME=ROOT"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Navigation retro
9
+
10
+ Any coding agent with file and shell access can run this workflow. Find
11
+ navigation failures in recorded tool-call evidence, then verify their causes
12
+ against current source. Ordinary guidance audits belong to
13
+ `hr-agent-guidance-audit`. Changes need their existing implementation authority;
14
+ a request for a retrospective alone authorizes the investigation and proposals.
15
+
16
+ ## Select evidence
17
+
18
+ 1. Read each target repository's guidance and its restrictions on access.
19
+ 2. Locate transcripts through the host's existing tools. Select only authorized
20
+ input files; do not scan every account or transcript store to find them.
21
+ 3. Record the repository roots used in those sessions, including each checkout
22
+ when the same repository appears at several paths. Map each to one name.
23
+ 4. Keep transcripts, timelines, metric JSON and reports local. They expose raw
24
+ prompts, commands, assistant text and paths. Truncation is not redaction.
25
+
26
+ The bundled [parser](scripts/retro.py) requires Python 3.11 or newer and uses only
27
+ the standard library. It accepts Claude Code and Codex JSONL, OpenCode JSON
28
+ exports, Cursor CLI stream JSON and recorded ACP v1 updates.
29
+ Read [input formats and limits](references/inputs.md) before selecting evidence.
30
+ Its header defines metrics and limitations. It reads selected files, executes no recorded commands and makes
31
+ no network calls. `--json` overwrites its output; choose a task-owned output file.
32
+ `--repo` filters results after analysis and does not restrict which inputs are read.
33
+
34
+ ## Rank and inspect
35
+
36
+ Resolve the installed skill directory and task scratch directory before running
37
+ these commands. Pass actual selected paths for the placeholders:
38
+
39
+ ```bash
40
+ python3 <skill-directory>/scripts/retro.py rank \
41
+ --repo-root app=<absolute-recorded-repository-root> \
42
+ --json <task-scratch>/retro.json \
43
+ <selected-transcript.jsonl> <another-selected-transcript.jsonl>
44
+ ```
45
+
46
+ All selected events are included by default. Use `--since-days 30` for a dated
47
+ window; undated events are excluded with a warning. If a recording omits its
48
+ working directory, pass its actual recorded directory with `--cwd`.
49
+
50
+ Repeat `--repo-root` for multiple repositories or checkouts. The most specific
51
+ matching root owns a command; unmapped or unresolved paths remain unknown.
52
+ Use `--subagents` only when the selected subagent transcripts are in scope.
53
+ Report missing inputs and rows omitted by `--min-sessions` or `--min-tools`.
54
+ A heuristic score prioritizes misses, widening and repeated reads. Stale-text
55
+ matches remain visible but do not affect ranking; discussion and quoted examples
56
+ can match. Neither the score nor a repeated read proves a navigation mistake.
57
+
58
+ Read each top session through its timeline:
59
+
60
+ ```bash
61
+ python3 <skill-directory>/scripts/retro.py timeline <selected-transcript.jsonl>
62
+ ```
63
+
64
+ Record the transcript and tool-call number for each navigation finding.
65
+ Repeated reads during editing may be necessary. Distinguish misses, repeated
66
+ searches and stale instructions from useful revisits. Every inspected session
67
+ gets a verified finding or an explanation that no navigation cause was found.
68
+
69
+ ## Verify and propose
70
+
71
+ Verify each finding against the repository's fetched default branch.
72
+ Check the path or instruction that caused the search. Search the whole
73
+ repository, including docs, before claiming something is missing.
74
+ Drop findings already fixed or unsupported by current source.
75
+
76
+ Propose one repair per verified cause. Prefer deleting stale material, moving
77
+ or renaming it to where agents looked, simplifying it, then automating repeated
78
+ steps. Add prose only when those remedies cannot express what is missing.
79
+
80
+ Record source revision, session evidence, proposed repair and coverage in the
81
+ task's plan. Keep transcript evidence private. Offer implementation within the
82
+ user's existing authorization; do not treat a proposal as permission to apply it.
83
+
84
+ To assess a repair, compare a post-landing window with the saved baseline.
85
+ Normalize misses, re-reads and stale remarks by tool calls. State changes in
86
+ input coverage and concurrent conditions; totals alone do not show improvement.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "HR: Navigation retro"
3
+ policy:
4
+ allow_implicit_invocation: false
@@ -0,0 +1,67 @@
1
+ # Transcript inputs
2
+
3
+ The agent running the retrospective can use any model provider. Input support
4
+ depends on the application's recording format and the evidence it preserves.
5
+ Select one session per file and pass files explicitly. The parser does not
6
+ discover stores, open databases or export sessions for you.
7
+
8
+ ## Supported formats
9
+
10
+ - Claude Code JSONL with message tool-use and tool-result blocks.
11
+ - Codex JSONL with session context, function/custom tool calls and their results.
12
+ - OpenCode JSON exports containing `info` and `messages` with `info`/`parts`.
13
+ Export a selected session with `opencode export <session-id>` into task scratch.
14
+ Tool parts preserve their native input, output/error and start/end timestamps.
15
+ Sanitized exports can remove paths and commands needed for attribution.
16
+ - Cursor CLI `--print --output-format stream-json` recordings. Read/write calls
17
+ and named function calls are supported. Use complete assistant messages;
18
+ `--stream-partial-output` can duplicate text and is outside this adapter's
19
+ coverage. Cursor's final-result JSON and text output omit tool events.
20
+ - ACP v1 `session/update` JSONL recordings. Each record can be a JSON-RPC
21
+ notification, a `{sessionId, update}` envelope or a direct update object.
22
+ Calls and incremental updates are merged by session and tool-call ID, with
23
+ one call and one terminal result. This supports agents recording ACP v1,
24
+ including Grok recordings with this shape, regardless of model provider.
25
+
26
+ OpenCode and ACP tool names are normalized for read, grep, glob, list, shell,
27
+ write and edit operations. ACP can also supply a tool kind and file locations.
28
+ An unfamiliar tool remains in the total count; its navigation activity may be
29
+ unclassified. ACP display titles are not treated as tool names or shell commands.
30
+ Protocol v2, native Cursor databases, Devin databases and Antigravity protobuf
31
+ stores are outside the native adapters' verified coverage.
32
+
33
+ ## Missing evidence
34
+
35
+ The parser uses recorded ISO timestamps or numeric Unix seconds/milliseconds.
36
+ ACP itself does not supply timestamps. A recorder can add a top-level
37
+ `timestamp`; Cursor recordings can provide `timestamp_ms`. The parser does not
38
+ invent timestamps from file modification times or the time of analysis.
39
+
40
+ All selected events are analyzed by default. `--since-days` excludes events
41
+ without usable timestamps and reports undated tool calls on stderr. A file with
42
+ no supported tool calls also produces a warning; an empty report does not prove
43
+ the session had no navigation failures. Inspect warnings alongside metric JSON.
44
+
45
+ Use `--cwd <absolute-recorded-session-directory>` when a recording omits its
46
+ working directory. Recorded context takes precedence over this fallback. ACP
47
+ session-new/load/resume requests can provide cwd when included in the recording.
48
+ Repository-root mappings label paths; they do not establish a session's cwd.
49
+ Unmapped or unavailable directories remain unknown.
50
+
51
+ Missing-path checks inspect complete result diagnostics and known shell-result
52
+ JSON envelopes. Fenced examples and arbitrary source JSON are excluded. Unfenced
53
+ source text identical to a diagnostic remains ambiguous; verify the recorded
54
+ command and output before calling it a failure.
55
+
56
+ Missing result text, terminal references and unsupported tool fields are gaps
57
+ in evidence. They do not establish that a search found nothing. Synthetic tests
58
+ verify these adapters' metric behavior; time or token savings are unmeasured.
59
+
60
+ ## Format references
61
+
62
+ - [OpenCode export command](https://opencode.ai/docs/cli/#export).
63
+ - [OpenCode SDK tool and message types](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts).
64
+ - [Cursor CLI output format](https://cursor.com/docs/cli/reference/output-format).
65
+ - [ACP v1 tool calls and updates](https://agentclientprotocol.com/protocol/v1/tool-calls).
66
+
67
+ These external references describe input contracts, not installed agent guidance.