@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.
- package/CODE_OF_CONDUCT.md +83 -0
- package/CONTRIBUTING.md +54 -0
- package/LICENSE +21 -0
- package/README.md +378 -2
- package/THIRD_PARTY_NOTICES.md +188 -0
- package/compose.mjs +125 -0
- package/composition.mjs +361 -0
- package/config-view.mjs +209 -0
- package/config.mjs +381 -0
- package/docs/assets/banner-dark.png +0 -0
- package/docs/assets/banner-light.png +0 -0
- package/docs/assets/overview.png +0 -0
- package/docs/configuration.md +269 -0
- package/docs/skill-names.md +50 -0
- package/examples/person/house-rules.json +15 -0
- package/examples/person/rules/10-tooling.md +8 -0
- package/examples/person/rules/20-reporting.md +9 -0
- package/examples/project/AGENTS.md +18 -0
- package/package.json +42 -4
- package/rule-references.mjs +91 -0
- package/rules/core.md +340 -0
- package/rules/modifiers/backlog-outline.md +25 -0
- package/rules/modifiers/backlog-visual.md +16 -0
- package/rules/modifiers/coded-offers.md +70 -0
- package/rules/modifiers/cross-session-relay.md +23 -0
- package/rules/modifiers/effort-estimates.md +41 -0
- package/rules/modifiers/land-when-done.md +12 -0
- package/rules/modifiers/low-quota-handoff.md +20 -0
- package/rules/modifiers/model-default-questions.md +33 -0
- package/rules/modifiers/multi-agent.md +38 -0
- package/rules/modifiers/no-attribution.md +16 -0
- package/rules/modifiers/periodic-updates.md +25 -0
- package/rules/modifiers/plan-files.md +82 -0
- package/rules/modifiers/question-cards.md +48 -0
- package/rules/modifiers/release-batching.md +15 -0
- package/rules/modifiers/scratch-on-disk.md +15 -0
- package/rules/modifiers/shared-host-load.md +19 -0
- package/rules/modifiers/solo-operator.md +13 -0
- package/rules/modifiers/squash-landing.md +22 -0
- package/rules/modifiers/upstream-contributions.md +45 -0
- package/rules/modifiers/web-image-formats.md +35 -0
- package/rules/references/backlog-view.md +154 -0
- package/rules/references/github-actions.md +45 -0
- package/rules/references/landing.md +39 -0
- package/rules/references/multi-agent.md +51 -0
- package/rules/references/release-batching.md +66 -0
- package/rules/references/squash-landing.md +50 -0
- package/rules/references/thread-visuals.md +45 -0
- package/setup.mjs +445 -0
- package/skills/hr-agent-guidance-audit/LICENSE +21 -0
- package/skills/hr-agent-guidance-audit/SKILL.md +91 -0
- package/skills/hr-agent-guidance-audit/agents/openai.yaml +2 -0
- package/skills/hr-agent-guidance-audit/references/prune-workflow.md +72 -0
- package/skills/hr-agent-guidance-audit/references/records-and-lessons.md +60 -0
- package/skills/hr-agent-guidance-audit/references/retirement-verdicts.md +49 -0
- package/skills/hr-agent-guidance-refresh/LICENSE +21 -0
- package/skills/hr-agent-guidance-refresh/SKILL.md +36 -0
- package/skills/hr-agent-guidance-refresh/agents/openai.yaml +2 -0
- package/skills/hr-agent-guidance-refresh/references/verification.md +47 -0
- package/skills/hr-api-exposure-check/SKILL.md +159 -0
- package/skills/hr-api-exposure-check/agents/openai.yaml +3 -0
- package/skills/hr-audit-choices/SKILL.md +67 -0
- package/skills/hr-audit-choices/agents/openai.yaml +2 -0
- package/skills/hr-benchmarking/NOTICE.md +36 -0
- package/skills/hr-benchmarking/SKILL.md +279 -0
- package/skills/hr-benchmarking/agents/openai.yaml +2 -0
- package/skills/hr-benchmarking/references/javascript.md +130 -0
- package/skills/hr-benchmarking/references/tools.md +165 -0
- package/skills/hr-benchmarking/scripts/process-attribution.ps1 +20 -0
- package/skills/hr-benchmarking/scripts/process-attribution.py +107 -0
- package/skills/hr-better-accessibility/LICENSE +22 -0
- package/skills/hr-better-accessibility/NOTICE.md +46 -0
- package/skills/hr-better-accessibility/SKILL.md +119 -0
- package/skills/hr-better-accessibility/agents/openai.yaml +3 -0
- package/skills/hr-better-accessibility/focus-and-keyboard.md +130 -0
- package/skills/hr-better-accessibility/forms.md +82 -0
- package/skills/hr-better-accessibility/hit-areas.md +98 -0
- package/skills/hr-better-accessibility/motion-and-zoom.md +81 -0
- package/skills/hr-better-accessibility/screen-readers.md +102 -0
- package/skills/hr-better-accessibility/semantics-and-aria.md +84 -0
- package/skills/hr-better-colors/LICENSE +21 -0
- package/skills/hr-better-colors/NOTICE.md +37 -0
- package/skills/hr-better-colors/SKILL.md +114 -0
- package/skills/hr-better-colors/agents/openai.yaml +3 -0
- package/skills/hr-better-colors/color-formats.md +90 -0
- package/skills/hr-better-colors/color-usage.md +140 -0
- package/skills/hr-better-colors/contrast.md +80 -0
- package/skills/hr-better-colors/palette-generation.md +104 -0
- package/skills/hr-better-colors/palette-structure.md +76 -0
- package/skills/hr-better-colors/token-naming.md +97 -0
- package/skills/hr-better-layout/LICENSE +22 -0
- package/skills/hr-better-layout/NOTICE.md +48 -0
- package/skills/hr-better-layout/SKILL.md +92 -0
- package/skills/hr-better-layout/agents/openai.yaml +3 -0
- package/skills/hr-better-layout/grouping-and-alignment.md +144 -0
- package/skills/hr-better-layout/spacing-and-adaptivity.md +215 -0
- package/skills/hr-better-typography/LICENSE +22 -0
- package/skills/hr-better-typography/NOTICE.md +46 -0
- package/skills/hr-better-typography/SKILL.md +172 -0
- package/skills/hr-better-typography/agents/openai.yaml +3 -0
- package/skills/hr-better-typography/choosing-fonts.md +69 -0
- package/skills/hr-better-typography/css-cheat-sheet.md +65 -0
- package/skills/hr-better-typography/details-and-accessibility.md +119 -0
- package/skills/hr-better-typography/spacing-and-sizing.md +131 -0
- package/skills/hr-better-typography/variable-fonts-and-opentype.md +105 -0
- package/skills/hr-better-typography/wrapping-and-punctuation.md +57 -0
- package/skills/hr-better-writing/LICENSE +22 -0
- package/skills/hr-better-writing/NOTICE.md +46 -0
- package/skills/hr-better-writing/SKILL.md +122 -0
- package/skills/hr-better-writing/agents/openai.yaml +3 -0
- package/skills/hr-code-review/LICENSE +21 -0
- package/skills/hr-code-review/NOTICE.md +26 -0
- package/skills/hr-code-review/SKILL.md +163 -0
- package/skills/hr-code-review/agents/openai.yaml +3 -0
- package/skills/hr-code-review/references/acp-client.md +43 -0
- package/skills/hr-code-review/references/evidence.md +57 -0
- package/skills/hr-code-review/references/impact.md +103 -0
- package/skills/hr-code-review/references/panel-adjudication.md +58 -0
- package/skills/hr-code-review/references/panel-plan.md +61 -0
- package/skills/hr-code-review/references/panel-recommendations.json +105 -0
- package/skills/hr-code-review/references/panel-recommendations.md +46 -0
- package/skills/hr-code-review/references/panel-setup.md +54 -0
- package/skills/hr-code-review/references/reviewer-role.md +31 -0
- package/skills/hr-code-review/scripts/acp-panel-client.mjs +299 -0
- package/skills/hr-code-review/scripts/check-receipts.mjs +263 -0
- package/skills/hr-code-review/scripts/panel-plan.mjs +69 -0
- package/skills/hr-code-review/scripts/panel-preferences.mjs +220 -0
- package/skills/hr-design-exploration/SKILL.md +105 -0
- package/skills/hr-design-exploration/agents/openai.yaml +4 -0
- package/skills/hr-diagnosing-bugs/NOTICE.md +45 -0
- package/skills/hr-diagnosing-bugs/SKILL.md +108 -0
- package/skills/hr-diagnosing-bugs/agents/openai.yaml +3 -0
- package/skills/hr-diagnosing-bugs/references/reporting.md +97 -0
- package/skills/hr-diagnosing-bugs/scripts/check-pr-offer.mjs +47 -0
- package/skills/hr-explain-code/NOTICE.md +37 -0
- package/skills/hr-explain-code/SKILL.md +110 -0
- package/skills/hr-explain-code/agents/openai.yaml +5 -0
- package/skills/hr-explain-code/references/helper-brief.md +39 -0
- package/skills/hr-extract-shared-steps/SKILL.md +134 -0
- package/skills/hr-extract-shared-steps/agents/openai.yaml +3 -0
- package/skills/hr-forgotten-work-audit/SKILL.md +130 -0
- package/skills/hr-forgotten-work-audit/references/brief-template.md +56 -0
- package/skills/hr-forgotten-work-audit/references/result-format.md +46 -0
- package/skills/hr-handoff/LICENSE +21 -0
- package/skills/hr-handoff/NOTICE.md +29 -0
- package/skills/hr-handoff/SKILL.md +114 -0
- package/skills/hr-handoff/agents/openai.yaml +5 -0
- package/skills/hr-handoff/assets/ledger.example.json +10 -0
- package/skills/hr-handoff/assets/receipt.example.json +76 -0
- package/skills/hr-handoff/assets/source.example.json +20 -0
- package/skills/hr-handoff/references/reconciliation.md +124 -0
- package/skills/hr-handoff/references/successor-thread.md +76 -0
- package/skills/hr-handoff/scripts/check-reconciliation.mjs +324 -0
- package/skills/hr-house-rules-setup/SKILL.md +114 -0
- package/skills/hr-house-rules-setup/agents/openai.yaml +5 -0
- package/skills/hr-issue-tracker-setup/SKILL.md +49 -0
- package/skills/hr-issue-tracker-setup/agents/openai.yaml +5 -0
- package/skills/hr-lean-plan/SKILL.md +146 -0
- package/skills/hr-lean-plan/agents/openai.yaml +5 -0
- package/skills/hr-maintainability-review/SKILL.md +186 -0
- package/skills/hr-maintainability-review/agents/openai.yaml +5 -0
- package/skills/hr-manual-qa/NOTICE.md +36 -0
- package/skills/hr-manual-qa/SKILL.md +37 -0
- package/skills/hr-manual-qa/agents/openai.yaml +3 -0
- package/skills/hr-navigation-retro/LICENSE +21 -0
- package/skills/hr-navigation-retro/NOTICE.md +5 -0
- package/skills/hr-navigation-retro/SKILL.md +86 -0
- package/skills/hr-navigation-retro/agents/openai.yaml +4 -0
- package/skills/hr-navigation-retro/references/inputs.md +67 -0
- package/skills/hr-navigation-retro/scripts/retro.py +552 -0
- package/skills/hr-navigation-retro/scripts/transcripts.py +205 -0
- package/skills/hr-ordering-tests/SKILL.md +51 -0
- package/skills/hr-ordering-tests/agents/openai.yaml +2 -0
- package/skills/hr-plain-prose/SKILL.md +264 -0
- package/skills/hr-plain-prose/agents/openai.yaml +3 -0
- package/skills/hr-plain-prose/scripts/check.mjs +331 -0
- package/skills/hr-pr-followup/LICENSE +21 -0
- package/skills/hr-pr-followup/NOTICE.md +9 -0
- package/skills/hr-pr-followup/SKILL.md +74 -0
- package/skills/hr-pr-followup/agents/openai.yaml +2 -0
- package/skills/hr-pr-followup/references/review-helpers.md +111 -0
- package/skills/hr-pr-followup/scripts/check-landing.py +204 -0
- package/skills/hr-pr-followup/scripts/check-pr-review.ts +510 -0
- package/skills/hr-pr-followup/scripts/merge-pr.sh +100 -0
- package/skills/hr-pr-followup/scripts/resolve-pr-thread.ts +219 -0
- package/skills/hr-pr-followup/scripts/verify-landed.sh +184 -0
- package/skills/hr-progress-report/SKILL.md +49 -0
- package/skills/hr-progress-report/agents/openai.yaml +5 -0
- package/skills/hr-read-reddit/SKILL.md +44 -0
- package/skills/hr-read-reddit/agents/openai.yaml +2 -0
- package/skills/hr-read-reddit/scripts/reddit.ts +252 -0
- package/skills/hr-read-x-links/SKILL.md +42 -0
- package/skills/hr-read-x-links/agents/openai.yaml +2 -0
- package/skills/hr-read-x-links/scripts/x-post.ts +264 -0
- package/skills/hr-research-shared-links/SKILL.md +103 -0
- package/skills/hr-split-to-prs/LICENSE +21 -0
- package/skills/hr-split-to-prs/NOTICE.md +9 -0
- package/skills/hr-split-to-prs/SKILL.md +61 -0
- package/skills/hr-split-to-prs/agents/openai.yaml +2 -0
- package/skills/hr-sqlite/SKILL.md +174 -0
- package/skills/hr-sqlite/agents/openai.yaml +2 -0
- package/skills/hr-sqlite/references/evidence.md +94 -0
- package/skills/hr-sqlite/references/tool-decisions.md +39 -0
- package/skills/hr-sqlite/scripts/inspect-sqlite.py +245 -0
- package/skills/hr-stock-ui-audit/SKILL.md +132 -0
- package/skills/hr-stock-ui-audit/agents/openai.yaml +3 -0
- package/skills/hr-stock-ui-audit/scripts/scan.mjs +619 -0
- package/skills/hr-tdd/LICENSE +21 -0
- package/skills/hr-tdd/NOTICE.md +10 -0
- package/skills/hr-tdd/SKILL.md +40 -0
- package/skills/hr-tdd/agents/openai.yaml +3 -0
- package/skills/hr-tdd/mocking.md +39 -0
- package/skills/hr-tdd/tests.md +77 -0
- package/skills/hr-test-audit/LICENSE +21 -0
- package/skills/hr-test-audit/NOTICE.md +67 -0
- package/skills/hr-test-audit/SKILL.md +146 -0
- package/skills/hr-test-audit/agents/openai.yaml +3 -0
- package/skills/hr-test-audit/scripts/floor-guard.ts +137 -0
- package/skills/hr-usage-report/SKILL.md +90 -0
- package/skills/hr-usage-report/agents/openai.yaml +2 -0
- package/skills/hr-usage-report/assets/example-report.json +125 -0
- package/skills/hr-usage-report/assets/report-template.html +377 -0
- package/skills/hr-usage-report/scripts/render-report.ts +86 -0
- package/skills/hr-usage-report/scripts/usage-by-model.ts +499 -0
- package/skills/hr-what-next/SKILL.md +151 -0
- package/skills/hr-what-next/agents/openai.yaml +4 -0
- package/skills/hr-what-next/references/reporting.md +59 -0
- package/skills/hr-what-next/scripts/check-open-work.mjs +711 -0
- package/skills/hr-writing-for-agents/NOTICE.md +46 -0
- package/skills/hr-writing-for-agents/SKILL-MECHANICS.md +83 -0
- package/skills/hr-writing-for-agents/SKILL.md +108 -0
- package/skills/hr-writing-for-agents/agents/openai.yaml +3 -0
- package/skills/hr-writing-pr/NOTICE.md +48 -0
- package/skills/hr-writing-pr/SKILL.md +119 -0
- package/skills/hr-writing-pr/agents/openai.yaml +2 -0
- 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,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,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,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,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.
|