@bompus/house-rules 0.11.0 → 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/README.md +91 -60
- package/compose.mjs +8 -2
- package/composition.mjs +11 -3
- package/config-view.mjs +18 -3
- package/config.mjs +74 -13
- package/docs/assets/overview.png +0 -0
- package/docs/configuration.md +85 -9
- package/package.json +4 -2
- package/rules/core.md +118 -209
- package/rules/modifiers/backlog-outline.md +25 -0
- package/rules/modifiers/backlog-visual.md +16 -0
- package/rules/modifiers/coded-offers.md +47 -17
- package/rules/modifiers/cross-session-relay.md +23 -0
- package/rules/modifiers/low-quota-handoff.md +4 -3
- package/rules/modifiers/model-default-questions.md +33 -0
- package/rules/modifiers/multi-agent.md +6 -2
- package/rules/modifiers/no-attribution.md +7 -1
- package/rules/modifiers/periodic-updates.md +25 -0
- package/rules/modifiers/plan-files.md +35 -3
- package/rules/modifiers/release-batching.md +4 -2
- package/rules/modifiers/shared-host-load.md +13 -42
- package/rules/modifiers/squash-landing.md +1 -1
- 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/landing.md +14 -14
- package/rules/references/multi-agent.md +6 -2
- package/rules/references/release-batching.md +27 -4
- package/rules/references/squash-landing.md +10 -4
- package/rules/references/thread-visuals.md +45 -0
- package/setup.mjs +87 -17
- package/skills/hr-agent-guidance-audit/SKILL.md +10 -5
- package/skills/hr-agent-guidance-audit/references/prune-workflow.md +72 -0
- package/skills/hr-agent-guidance-audit/references/records-and-lessons.md +1 -1
- package/skills/hr-agent-guidance-audit/references/retirement-verdicts.md +49 -0
- package/skills/hr-agent-guidance-refresh/SKILL.md +25 -57
- package/skills/hr-agent-guidance-refresh/references/verification.md +1 -1
- package/skills/hr-audit-choices/SKILL.md +1 -1
- package/skills/hr-benchmarking/SKILL.md +122 -159
- package/skills/hr-benchmarking/references/javascript.md +113 -0
- package/skills/hr-benchmarking/references/tools.md +62 -57
- package/skills/hr-better-accessibility/SKILL.md +1 -1
- package/skills/hr-better-accessibility/screen-readers.md +1 -0
- package/skills/hr-code-review/SKILL.md +19 -3
- package/skills/hr-code-review/agents/openai.yaml +1 -1
- package/skills/hr-code-review/references/acp-client.md +43 -0
- package/skills/{hr-change-impact/SKILL.md → hr-code-review/references/impact.md} +2 -12
- 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 +24 -1
- package/skills/hr-design-exploration/agents/openai.yaml +2 -2
- package/skills/hr-diagnosing-bugs/SKILL.md +2 -2
- package/skills/hr-diagnosing-bugs/references/reporting.md +29 -4
- package/skills/hr-diagnosing-bugs/scripts/check-pr-offer.mjs +47 -0
- package/skills/hr-explain-code/SKILL.md +1 -1
- package/skills/hr-extract-shared-steps/SKILL.md +1 -1
- 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 +24 -1
- package/skills/hr-handoff/references/reconciliation.md +25 -6
- package/skills/hr-handoff/references/successor-thread.md +76 -0
- package/skills/hr-handoff/scripts/check-reconciliation.mjs +48 -6
- package/skills/hr-house-rules-setup/SKILL.md +22 -8
- package/skills/hr-lean-plan/SKILL.md +4 -0
- package/skills/hr-maintainability-review/SKILL.md +14 -4
- package/skills/hr-maintainability-review/agents/openai.yaml +1 -1
- package/skills/hr-manual-qa/SKILL.md +1 -1
- package/skills/hr-ordering-tests/SKILL.md +1 -1
- package/skills/hr-plain-prose/SKILL.md +7 -4
- package/skills/hr-pr-followup/SKILL.md +6 -3
- package/skills/hr-pr-followup/references/review-helpers.md +21 -0
- package/skills/hr-pr-followup/scripts/check-landing.py +204 -0
- package/skills/hr-pr-followup/scripts/merge-pr.sh +100 -0
- package/skills/hr-pr-followup/scripts/verify-landed.sh +184 -0
- package/skills/hr-read-reddit/SKILL.md +1 -1
- package/skills/hr-research-shared-links/SKILL.md +103 -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 +1 -1
- package/skills/hr-test-audit/LICENSE +21 -0
- package/skills/hr-test-audit/NOTICE.md +67 -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 +100 -10
- package/skills/hr-what-next/references/reporting.md +13 -22
- package/skills/hr-what-next/scripts/check-open-work.mjs +711 -0
- package/skills/hr-writing-pr/SKILL.md +29 -14
- package/skills/hr-writing-pr/scripts/benefit-chart.py +200 -0
- package/docs/npm-release.md +0 -45
- package/rules/modifiers/swarmail.md +0 -12
- package/skills/hr-benchmarking/references/priority-findings-20261006.md +0 -115
- package/skills/hr-change-impact/agents/openai.yaml +0 -5
|
@@ -10,9 +10,10 @@ Check your remaining usage allowance at session start or resume, after a model
|
|
|
10
10
|
switch and before substantial new work, using a reading the host shows or the
|
|
11
11
|
user reports. When a fresh reading shows the current session's provider and
|
|
12
12
|
model with less than 5% of its daily, weekly or monthly allowance left, use the
|
|
13
|
-
`hr-handoff` skill to checkpoint the work. Another model being low, context size
|
|
14
|
-
|
|
15
|
-
once that detection is unverified; never guess a low balance
|
|
13
|
+
`hr-handoff` skill to checkpoint the work. Another model being low, context size,
|
|
14
|
+
token totals and five-hour limits do not trigger it. When no reliable reading
|
|
15
|
+
is available, say once that detection is unverified; never guess a low balance,
|
|
16
|
+
poll for one, spend model turns on it or read credentials to get it.
|
|
16
17
|
|
|
17
18
|
This handoff is a stop under § End of every reply: after saving it, end the
|
|
18
19
|
reply with the handoff report and its recorded next action, which serve as the
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Leave how questions are asked to your host and model, with no text-only or question-card instruction.
|
|
3
|
+
replaces: Offers
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Offers
|
|
7
|
+
|
|
8
|
+
Ask for decisions the way your host and model normally ask questions. For each
|
|
9
|
+
decision, explain what would change and why it matters to the user, then
|
|
10
|
+
recommend an option. Put the option you recommend first marked "(Recommended)"
|
|
11
|
+
and use § Finishing work to select displayed candidates. Add any other alternative
|
|
12
|
+
only when the user raised it or leaving it out hides a real trade-off, and mark
|
|
13
|
+
it "(Not Recommended)".
|
|
14
|
+
|
|
15
|
+
A recommendation in prose without options is not an offer. When an option
|
|
16
|
+
produces a change (code, a document, a pull request), say what it changes and which steps it includes,
|
|
17
|
+
such as the pull request, review, landing and cleanup. Also say what it leaves
|
|
18
|
+
for a later offer. Choosing it authorizes that scope, and asking about it
|
|
19
|
+
authorizes nothing.
|
|
20
|
+
|
|
21
|
+
An option that creates a rule, skill, document or script also names the owning
|
|
22
|
+
repository, whether any project could use it unchanged, and what you searched.
|
|
23
|
+
|
|
24
|
+
Recommend the option that finishes the work properly and holds up over time,
|
|
25
|
+
not the one that is quickest to finish. When that work comes in dependent steps
|
|
26
|
+
(land a change, then adopt it), show each step as its own option labeled
|
|
27
|
+
"(Recommended, phase 1)", "(Recommended, phase 2)"; offer phase 2 after phase 1
|
|
28
|
+
lands. Do not present a required step as an optional alternative, and mark an
|
|
29
|
+
alternative that drops required work from the plan "(Not Recommended)".
|
|
30
|
+
|
|
31
|
+
When three or more offers are open and unanswered, present no further offer.
|
|
32
|
+
Load the `hr-what-next` skill and queue every new decision in its walk-through,
|
|
33
|
+
one line each.
|
|
@@ -21,8 +21,12 @@ constraints. Put mechanically enforceable standards in tooling; reserve style
|
|
|
21
21
|
and judgment for review. The user's direction is the judgment backstop when
|
|
22
22
|
no second reviewer runs. An advisor model is not a second review.
|
|
23
23
|
|
|
24
|
-
After review,
|
|
25
|
-
|
|
24
|
+
After review, treat each finding as a claim. Fix it when a reproduced failure
|
|
25
|
+
(a test that fails before the fix, where one fits) or a cited requirement
|
|
26
|
+
confirms it, with the smallest change that clears it; a reviewer's proposed
|
|
27
|
+
remedy is a suggestion. Answer an unconfirmed finding with the reason. Run
|
|
28
|
+
relevant checks. A logic change permits a follow-up review but does not
|
|
29
|
+
require one. Request it only for a named risk
|
|
26
30
|
local checks cannot resolve. Record its scope and round limit first; further
|
|
27
31
|
fixes do not reset that limit. At the limit, get the user's direction before
|
|
28
32
|
another model round. Required repository checks and review gates still apply.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Commits, pull requests and comments carry no agent or tool credit lines.
|
|
2
|
+
description: Commits, pull requests and comments carry no agent or tool credit lines unless the target repository asks for a disclosure.
|
|
3
3
|
after: Writing
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -8,3 +8,9 @@ after: Writing
|
|
|
8
8
|
Commits, pull requests, issues and comments carry no agent or tool credit: no
|
|
9
9
|
"Generated with" lines, no `Co-Authored-By` agent trailers, no "Made with"
|
|
10
10
|
footers. Where a host has a setting that turns attribution off, set it.
|
|
11
|
+
|
|
12
|
+
When the target repository's contribution guidelines or pull request template
|
|
13
|
+
ask for agent or model disclosure, give exactly what they ask for, where they
|
|
14
|
+
ask for it, and nothing beyond it. If models are asked for, name each that did
|
|
15
|
+
the work; one in a higher published tier of the same provider that reviewed or
|
|
16
|
+
advised goes first (Opus reviewing Sonnet: Opus, Sonnet); else in work order.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: A job expected to run longer than about 10 minutes posts a short status update every 5 minutes by default, with progress, an ETA with its basis or "unmeasured", and findings so far, until the job ends; a watcher event that changes nothing gets at most one line.
|
|
3
|
+
after: Reporting
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Periodic status updates
|
|
7
|
+
|
|
8
|
+
A job expected to run longer than about 10 minutes gets a status update on its
|
|
9
|
+
own schedule, without the user asking. So does a job that has run that long with
|
|
10
|
+
no estimate. This covers a build, test suite, benchmark, CI run, long search or
|
|
11
|
+
similar. The default interval is 5 minutes. That figure is a default, not a
|
|
12
|
+
measured value; use the interval the user names instead.
|
|
13
|
+
|
|
14
|
+
Each update is one short line, not a report, posted even when nothing has
|
|
15
|
+
changed. It gives completed/total or a percent (the current step when the job
|
|
16
|
+
reports no total), the ETA with its basis or the word "unmeasured", and a
|
|
17
|
+
one-line summary of findings so far. A milestone, failure, stall or change in
|
|
18
|
+
the forecast goes in full instead.
|
|
19
|
+
|
|
20
|
+
Where the host can run a background watcher or timer, arm it to post the
|
|
21
|
+
updates and to report in full only a milestone, failure, stall, forecast change
|
|
22
|
+
or the run's completion. A watcher event that changes nothing gets at most one
|
|
23
|
+
line. Otherwise post at the first natural checkpoint after each interval has
|
|
24
|
+
passed, when a step finishes or a tool call returns. Stop the updates when the
|
|
25
|
+
job ends; the final report replaces them.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Multi-step work keeps a visible task list mirrored to a plan file with a ledger of every item's outcome.
|
|
3
3
|
after: Durable notes
|
|
4
|
+
requires: hr-handoff, hr-what-next
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
## Task tracking
|
|
@@ -19,15 +20,24 @@ turn up, and use the same item states in both. At each reconciliation event in
|
|
|
19
20
|
the plan or handoff that owns an item instead of copying it; a handoff points
|
|
20
21
|
at its plan.
|
|
21
22
|
|
|
23
|
+
When you rebuild a ledger or inventory from an earlier one, carry
|
|
24
|
+
each open or deferred line over as an item, marked done with its outcome
|
|
25
|
+
when it has closed. Several lines may share one item only when the same next
|
|
26
|
+
action and completion evidence satisfy every line. A summary row such as "the
|
|
27
|
+
rest, reopen only if asked" loses them. The `hr-handoff` skill's `scripts/check-reconciliation.mjs` checks that
|
|
28
|
+
every such line maps to an item when the earlier plan is named as a source; it
|
|
29
|
+
does not judge the outcome.
|
|
30
|
+
|
|
22
31
|
- Head the plan with `Owner:` (session name, or `none` for a shared backlog)
|
|
23
32
|
and `Status:` (`active`, `paused`, `blocked-on-user`, `completed`); update both
|
|
24
|
-
when they change.
|
|
33
|
+
when they change. Add `Purpose:` with the session's purpose in one sentence
|
|
34
|
+
(§ Session purpose).
|
|
25
35
|
- For substantial plans, state the intended outcome and the evidence that will
|
|
26
36
|
show it is done; update both when findings change the task.
|
|
27
37
|
- When new work arrives mid-task, add it as pending before switching; never
|
|
28
38
|
drop an in-progress item silently.
|
|
29
39
|
- Keep the whole ledger in the plan: deferred items, follow-ups and incidental
|
|
30
|
-
findings with a one-line
|
|
40
|
+
findings with a one-line reason (`user-flagged`, `deferred-by`,
|
|
31
41
|
`blocked-by`, `low priority`), and closed items with their outcome (landed
|
|
32
42
|
commit, won't do and why, moved elsewhere) and start and end times. Note the
|
|
33
43
|
start time when you pick an item up.
|
|
@@ -38,9 +48,31 @@ at its plan.
|
|
|
38
48
|
changes and drops. Judge progress by evidence, not age or retry counts;
|
|
39
49
|
waiting on a dependency or ruling out a hypothesis does not by itself show
|
|
40
50
|
that an approach is not working.
|
|
51
|
+
- Keep the ledger as a `## Ledger` section of item lines a script can read:
|
|
52
|
+
`- [ ] text` is open, `- [~] text … trigger: <what reopens it>` deferred,
|
|
53
|
+
`- [x] text … evidence: <result>` done and `- [-] text … by: <who dropped it>`
|
|
54
|
+
dropped (`by: user, not selected` for an option the user passed over). Name
|
|
55
|
+
each scratch directory, checkout and branch you own in an item. Write each
|
|
56
|
+
follow-up as an item, not as a sentence elsewhere in the plan.
|
|
57
|
+
- An item that waits on another thread (an upstream issue or pull request, a
|
|
58
|
+
maintainer, another session) carries `recheck: YYYY-MM-DD`, because a
|
|
59
|
+
trigger such as "maintainer replies" does not fire by itself. A question you
|
|
60
|
+
send to another thread is an open item that names where the reply will
|
|
61
|
+
arrive and carries a `recheck:` date. On that date, look at the thread,
|
|
62
|
+
record what you found, and set a new date or close the item.
|
|
63
|
+
- Before claiming that nothing remains or the session can close, and before
|
|
64
|
+
archiving a plan, run the `hr-what-next` skill's
|
|
65
|
+
`scripts/check-open-work.mjs <plan>`, adding `--checkout <path>` for each
|
|
66
|
+
checkout you touched and `--repo <owner/repo>` when items name pull requests
|
|
67
|
+
or issues by number alone, and quote its result. Open or deferred items, and owned
|
|
68
|
+
resources no open item names, mean work remains. Check each item it lists as
|
|
69
|
+
possibly finished or due for a re-check, and update its line.
|
|
41
70
|
- Before archiving a completed plan, save its completed status, completion
|
|
42
71
|
time and evidence. Apply § Finishing work before marking the whole session
|
|
43
|
-
completed. Then
|
|
72
|
+
completed. Then archive with the same script's `--archive` flag; it moves the
|
|
73
|
+
plan to `plans/archive/<topic>-<date>/` beside it only when the status is
|
|
74
|
+
completed and nothing is open. A plan whose status is `active`, `paused` or
|
|
75
|
+
`blocked-on-user` stays where the session-start read finds it.
|
|
44
76
|
|
|
45
77
|
Sweep other sessions' plans and handoffs only when the user asks, such as
|
|
46
78
|
"what's waiting on me?", and only for the current project. Offer unowned items,
|
|
@@ -9,5 +9,7 @@ reference: ../references/release-batching.md
|
|
|
9
9
|
Landing does not authorize publishing. Follow the repository's release requirements.
|
|
10
10
|
Before preparing or publishing a release or public announcement, read
|
|
11
11
|
[the release procedure](../references/release-batching.md), including its factual
|
|
12
|
-
accuracy audit
|
|
13
|
-
|
|
12
|
+
accuracy audit and changelog audit. Run the accuracy audit on every public
|
|
13
|
+
repository's version bump and the changelog audit on every version bump, before
|
|
14
|
+
the first publish step, and land their corrections first. Do not publish with
|
|
15
|
+
unresolved accuracy blockers or expand scope to new benchmarks.
|
|
@@ -1,48 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: On a shared machine, follow its resource budgets; without one, get operator direction before parallel workers or whole-repository commands, and use memory controls.
|
|
3
3
|
after: Coordination and isolation
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Shared machine load
|
|
7
7
|
|
|
8
|
-
When local work shares a host, follow its declared
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
fresh benchmark-owner permission, a collector or a measurement receipt.
|
|
21
|
-
Inspection is sufficient qualification; missing resource samples alone is not
|
|
22
|
-
a blocker. Use the host's admission procedure when inspection cannot establish
|
|
23
|
-
that the complete invocation fits the host's budget and any active measurement's
|
|
24
|
-
light-work allowance. Admit the complete invocation when its children
|
|
25
|
-
need admission, and retain required hooks. This resource permission does not
|
|
26
|
-
lift checkout ownership, shared-write serialization, named input freezes or
|
|
27
|
-
explicit operation-specific user restrictions. A retained benchmark lock alone
|
|
28
|
-
does not suspend permitted light work.
|
|
29
|
-
|
|
30
|
-
Without a budget or qualification procedure, get
|
|
31
|
-
operator direction before launching parallel local workers or commands that
|
|
32
|
-
build, test, index or process an entire repository or dataset. Bounded reads
|
|
33
|
-
and edits may continue. Coordinate competing phases without blocking whole
|
|
34
|
-
sessions.
|
|
35
|
-
|
|
36
|
-
Use an exclusive slot when the host policy requires one or a local performance
|
|
37
|
-
measurement needs isolation. Remote inference, light CLI/API work and remote
|
|
38
|
-
waits need no exclusive slot. A memory cap, an agent/model comparison or
|
|
39
|
-
recording elapsed time alone does not make a phase heavy. Record timing
|
|
40
|
-
conditions and concurrent local work for shared or remote evaluations.
|
|
41
|
-
|
|
42
|
-
Other sessions may continue light reads, edits and remote requests within the
|
|
43
|
-
reservation's budget. Preserve measured files, runtimes, dependencies and
|
|
44
|
-
services. During isolated local performance measurements, the measuring session
|
|
45
|
-
only monitors. Release reservations while waiting on remote work or review.
|
|
46
|
-
|
|
47
|
-
Constrain work that risks exhausting memory using the host's supported controls.
|
|
48
|
-
Check host evidence of memory pressure before retrying with a larger budget.
|
|
8
|
+
When local work shares a host, follow its declared resource budgets. A phase is
|
|
9
|
+
resource-intensive when its expected CPU, memory or I/O demand exceeds the
|
|
10
|
+
host's budget for concurrent work. Before such a phase, check current load and
|
|
11
|
+
running jobs. Without a budget, get operator direction before launching
|
|
12
|
+
parallel local workers or commands that build, test, index or process an
|
|
13
|
+
entire repository or dataset; bounded reads and edits may continue.
|
|
14
|
+
|
|
15
|
+
Work risks exhausting memory when its expected or last measured peak leaves
|
|
16
|
+
little headroom in the memory available to it, or when its peak is unknown and
|
|
17
|
+
its input is large. Constrain such work using the host's supported controls.
|
|
18
|
+
Retry with a larger budget only when host evidence shows memory pressure caused
|
|
19
|
+
the failure; without that evidence, find the cause before raising the budget.
|
|
@@ -18,5 +18,5 @@ conditions in § Landing. After the merge, fetch first; move off a landed branch
|
|
|
18
18
|
only when its content is in the base and the tree is clean. When the base is
|
|
19
19
|
checked out elsewhere, detach at the fetched base. Never merge, reset or stash
|
|
20
20
|
to move the checkout. Leave app-managed checkouts for the app to retire.
|
|
21
|
-
If the tree is dirty or ownership is uncertain,
|
|
21
|
+
If the tree is dirty or ownership is uncertain, stop and record its owner.
|
|
22
22
|
Update the task record and follow § Cleanup after each landing.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: A measured optimization, fix or defect found in a third-party project is offered for submission to that project through its own contribution route.
|
|
3
|
+
after: Repository work
|
|
4
|
+
requires: hr-benchmarking, hr-writing-pr
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Upstream contributions
|
|
8
|
+
|
|
9
|
+
When work on a third-party project produces a finding that is worth a
|
|
10
|
+
maintainer's time, offer to submit it to that project rather than leaving it in
|
|
11
|
+
a local branch or a note. It qualifies when you reproduced or measured the
|
|
12
|
+
effect and it matches a kind of change the project's contribution guide or open
|
|
13
|
+
issues invite, such as performance fixes or a reported defect.
|
|
14
|
+
|
|
15
|
+
1. Offer the submission under § Offers as soon as the evidence is complete.
|
|
16
|
+
Name the channel and the scope.
|
|
17
|
+
2. Pick the channel from the project's contribution guide: a comment on an
|
|
18
|
+
existing matching issue, a new issue, a discussion for proposals, or a pull
|
|
19
|
+
request. A behavior change, or a project that asks for prior approval, starts
|
|
20
|
+
with a comment or discussion, not a pull request. Count the underlying
|
|
21
|
+
problems and split the submission when the guide asks for one per request.
|
|
22
|
+
3. Meet § Repository work first: the search for existing reports, the review of
|
|
23
|
+
the diff, the relevant checks, and the project's template and disclosure ask.
|
|
24
|
+
4. Show the user the exact text and channel once before posting. Posting is
|
|
25
|
+
public and cannot be undone; this rule makes submitting the expected next
|
|
26
|
+
step, not a waiver of that look. Only a user instruction naming the kind of
|
|
27
|
+
submission and the projects, such as "post issue comments on project X
|
|
28
|
+
without asking", removes it.
|
|
29
|
+
5. Title a performance discussion or issue with its headline result and the
|
|
30
|
+
workload it holds for, such as "saving a file takes 1.1 s with 500
|
|
31
|
+
open tabs, 0.17 s with the fix". Use a figure only when it clears the
|
|
32
|
+
`hr-benchmarking` bar (outside the declared variation criterion,
|
|
33
|
+
repetitions stated) and keep the caveats in the body. Title a defect by what
|
|
34
|
+
the person sees, not by the code involved, and add how often only when the
|
|
35
|
+
evidence supports a rate. Open the body with the same headline. A qualified
|
|
36
|
+
measured result also gets a chart of it (`hr-writing-pr`). A pull request keeps
|
|
37
|
+
the project's title convention; its opening body sentence carries the figure
|
|
38
|
+
(`hr-writing-pr`).
|
|
39
|
+
6. When a later measurement or review changes the headline, edit the title and
|
|
40
|
+
opening lines of your own submission to match, and say in a comment what
|
|
41
|
+
changed. A submission that buries its benefit under background gets rewritten,
|
|
42
|
+
not left.
|
|
43
|
+
|
|
44
|
+
A finding outside the session's purpose stays parked under § Session purpose
|
|
45
|
+
until the user opens it.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Prefer WebP for web raster images when it saves bytes at acceptable quality, with format exceptions and delivered-file checks.
|
|
3
|
+
after: Writing
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Web image formats
|
|
7
|
+
|
|
8
|
+
When creating, importing or replacing raster images a web project controls,
|
|
9
|
+
prefer WebP when its target browsers and publishing pipeline support it.
|
|
10
|
+
Compare files at the required dimensions and acceptable visual quality; use
|
|
11
|
+
WebP when it reduces bytes while preserving required detail, transparency and
|
|
12
|
+
animation. Convert existing assets only within the selected task's scope.
|
|
13
|
+
|
|
14
|
+
WebP supports lossy and lossless compression and transparency, with broad
|
|
15
|
+
browser support. Smaller files reduce data transfer and can shorten image
|
|
16
|
+
downloads. Page rendering also depends on discovery, layout and rendering
|
|
17
|
+
work; measure page timing separately before claiming a speed gain.
|
|
18
|
+
|
|
19
|
+
Keep SVG for suitable vector artwork. Use PNG or lossless WebP when exact
|
|
20
|
+
pixels or sharp text require it. Choose another supported format, including
|
|
21
|
+
AVIF, when a size/quality comparison or required consumer favors it. Preserve
|
|
22
|
+
fallbacks that supported clients or integrations require. Keep externally
|
|
23
|
+
hosted images in their provider's permitted delivery format; this preference
|
|
24
|
+
does not authorize downloading, transcoding or rehosting them.
|
|
25
|
+
|
|
26
|
+
Preserve editing sources when needed, attribution, alt text, intended crop,
|
|
27
|
+
dimensions and responsive sources. Compare the actual derivatives delivered
|
|
28
|
+
by the publishing system, whose encoder settings may differ from a local
|
|
29
|
+
preview. Verify image responses, MIME types and appearance at the relevant
|
|
30
|
+
viewports. A WebP filename alone establishes neither correct encoding nor
|
|
31
|
+
smaller delivery. Format and quality selection require judgment; this
|
|
32
|
+
preference has no automatic enforcement check.
|
|
33
|
+
|
|
34
|
+
References: [WebP overview](https://developers.google.com/speed/webp) and
|
|
35
|
+
[MDN image formats](https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Image_types).
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
## Backlog view
|
|
2
|
+
|
|
3
|
+
Whenever any item remains in a backlog, remaining-work or walk-through report,
|
|
4
|
+
show one panel of every open item beside the table, not only when the user asks
|
|
5
|
+
to see the backlog. Group the items by what each waits on and order the groups
|
|
6
|
+
bottom-up, so the items that can move sit last, next to the offer:
|
|
7
|
+
|
|
8
|
+
1. **Waiting on others or a date**, with its count and "not work to start yet".
|
|
9
|
+
A table with Trigger, Item and Owner columns, in date order with undated
|
|
10
|
+
events last. A long path or list goes on a second line under its item.
|
|
11
|
+
Never start these items or offer them.
|
|
12
|
+
2. **Needs your decision**, with its count. One bordered row per question: a Q
|
|
13
|
+
badge carrying the offer's question number, the item, a muted second line
|
|
14
|
+
with its status and owner, and answer chips on the right: the question's own
|
|
15
|
+
option codes when the offer uses codes (`1A`, `1B`), otherwise yes, no and
|
|
16
|
+
defer. The chips repeat the offer's choices; they are not controls and are
|
|
17
|
+
never a second set of reply labels. Mark the group being
|
|
18
|
+
asked "group N of M, this reply" in the header, tinted, with an accent rail
|
|
19
|
+
beside its rows. Put that group last, with its highest-ranked question last
|
|
20
|
+
within it.
|
|
21
|
+
3. **Actionable now**, with its count. Keep the group when it is empty: write
|
|
22
|
+
"Nothing." and the reason.
|
|
23
|
+
|
|
24
|
+
The panel has a fixed dark background (`#12151c`) with text `#e6e8ee` and muted
|
|
25
|
+
text `#98a1b5` (7.0:1 on the panel). Triggers are `#8fb4ff`; the current group
|
|
26
|
+
and Q badges use `#ffd479`, with dark text on the badge. Group names, counts,
|
|
27
|
+
Q numbers and the words "this reply" carry the meaning, not color alone. Below
|
|
28
|
+
about 520 px wide it becomes one column: hide the column headings and stack
|
|
29
|
+
trigger, item and owner. Render it with the host's own preview or rendering
|
|
30
|
+
tool, and check it at desktop and phone widths when the tool allows. Build it
|
|
31
|
+
from this skeleton, with the report's own items:
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<div class="w">
|
|
35
|
+
<section>
|
|
36
|
+
<h4>1. Waiting on others or a date · 2 <small>not work to start yet</small></h4>
|
|
37
|
+
<div class="cols"><span>Trigger</span><span>Item</span><span>Owner</span></div>
|
|
38
|
+
<div class="r">
|
|
39
|
+
<span class="d">Oct 14</span><span>Vendor replies to the support ticket</span
|
|
40
|
+
><span class="mu">vendor</span>
|
|
41
|
+
</div>
|
|
42
|
+
</section>
|
|
43
|
+
<section class="cur">
|
|
44
|
+
<h4>2. Needs your decision · 1 <small>group 1 of 1, this reply</small></h4>
|
|
45
|
+
<div class="dq">
|
|
46
|
+
<span class="q">Q1</span>
|
|
47
|
+
<span class="t">Drop the unused cache layer?<span class="m">parked · web app</span></span>
|
|
48
|
+
<span class="a"><span>yes</span><span>no</span><span>defer</span></span>
|
|
49
|
+
</div>
|
|
50
|
+
</section>
|
|
51
|
+
<section>
|
|
52
|
+
<h4>3. Actionable now · 0</h4>
|
|
53
|
+
<div class="none">Nothing. Every other open item waits on a date or someone else.</div>
|
|
54
|
+
</section>
|
|
55
|
+
</div>
|
|
56
|
+
<style>
|
|
57
|
+
.w {
|
|
58
|
+
background: #12151c;
|
|
59
|
+
color: #e6e8ee;
|
|
60
|
+
border-radius: 10px;
|
|
61
|
+
padding: 16px;
|
|
62
|
+
font:
|
|
63
|
+
13px/1.45 system-ui,
|
|
64
|
+
sans-serif;
|
|
65
|
+
}
|
|
66
|
+
.w section {
|
|
67
|
+
margin: 0 0 14px;
|
|
68
|
+
}
|
|
69
|
+
.w section:last-child {
|
|
70
|
+
margin: 0;
|
|
71
|
+
}
|
|
72
|
+
.w h4 {
|
|
73
|
+
margin: 0 0 6px;
|
|
74
|
+
padding: 5px 10px;
|
|
75
|
+
background: #181c27;
|
|
76
|
+
border-radius: 6px;
|
|
77
|
+
color: #c9d1e3;
|
|
78
|
+
display: flex;
|
|
79
|
+
justify-content: space-between;
|
|
80
|
+
}
|
|
81
|
+
.w small,
|
|
82
|
+
.mu,
|
|
83
|
+
.m {
|
|
84
|
+
color: #98a1b5;
|
|
85
|
+
font-weight: 400;
|
|
86
|
+
}
|
|
87
|
+
.cols,
|
|
88
|
+
.r {
|
|
89
|
+
display: grid;
|
|
90
|
+
grid-template-columns: 132px 1fr 168px;
|
|
91
|
+
gap: 10px;
|
|
92
|
+
padding: 6px 10px;
|
|
93
|
+
border-bottom: 1px solid #1c2130;
|
|
94
|
+
}
|
|
95
|
+
.cols {
|
|
96
|
+
color: #98a1b5;
|
|
97
|
+
font-size: 12px;
|
|
98
|
+
}
|
|
99
|
+
.d {
|
|
100
|
+
color: #8fb4ff;
|
|
101
|
+
}
|
|
102
|
+
.none {
|
|
103
|
+
padding: 6px 10px;
|
|
104
|
+
color: #98a1b5;
|
|
105
|
+
}
|
|
106
|
+
.cur h4 {
|
|
107
|
+
background: #2a2410;
|
|
108
|
+
color: #ffd479;
|
|
109
|
+
box-shadow: inset 3px 0 0 #ffd479;
|
|
110
|
+
}
|
|
111
|
+
.dq {
|
|
112
|
+
display: grid;
|
|
113
|
+
grid-template-columns: 34px 1fr auto;
|
|
114
|
+
gap: 8px;
|
|
115
|
+
border: 1px solid #ffd479;
|
|
116
|
+
border-radius: 8px;
|
|
117
|
+
padding: 7px 10px;
|
|
118
|
+
margin: 8px 0;
|
|
119
|
+
}
|
|
120
|
+
.q {
|
|
121
|
+
background: #ffd479;
|
|
122
|
+
color: #12151c;
|
|
123
|
+
border-radius: 4px;
|
|
124
|
+
font-weight: 700;
|
|
125
|
+
text-align: center;
|
|
126
|
+
align-self: start;
|
|
127
|
+
}
|
|
128
|
+
.m {
|
|
129
|
+
display: block;
|
|
130
|
+
font-size: 12px;
|
|
131
|
+
}
|
|
132
|
+
.a span {
|
|
133
|
+
border: 1px solid #2a3040;
|
|
134
|
+
border-radius: 5px;
|
|
135
|
+
padding: 0 7px;
|
|
136
|
+
margin-left: 4px;
|
|
137
|
+
}
|
|
138
|
+
@media (max-width: 520px) {
|
|
139
|
+
.cols {
|
|
140
|
+
display: none;
|
|
141
|
+
}
|
|
142
|
+
.r {
|
|
143
|
+
grid-template-columns: 1fr;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
</style>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Where the host has no render tool, give the same groups as a Markdown outline:
|
|
150
|
+
numbered group headings with counts, one bullet per item with its trigger in
|
|
151
|
+
bold first and its owner last, Q labels in bold with the item and its status,
|
|
152
|
+
"Nothing." and the reason for an empty actionable group, and "▶ group N of M,
|
|
153
|
+
this reply" on the group being asked. The offer keeps its own format; the view
|
|
154
|
+
adds no offer.
|
|
@@ -7,26 +7,24 @@ then, a task finishes committed on its branch with landing offered. Choosing an
|
|
|
7
7
|
offer option that includes landing, or replying with the accept line when the
|
|
8
8
|
recommended option includes it, is that direction.
|
|
9
9
|
|
|
10
|
-
At task completion, unlanded
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
what departs from that sequence, such as a direct merge or a step held for the
|
|
16
|
-
user. Choosing the option authorizes the whole landing, merge included. Land through the path the
|
|
17
|
-
repository requires (pull request or direct push), and never bypass required
|
|
18
|
-
checks. Landing is done when a fresh fetch shows the default branch contains
|
|
19
|
-
the change.
|
|
10
|
+
At task completion, unlanded or uncommitted task changes get one landing option, `Land PR #<n>` or `Commit and land <change>`, never a bare done; only an explicit user deferral (recorded with branch, commits and reason) leaves it out. The option covers this section and § Cleanup, merge included; name only departures from that. Land through the repository's required path without bypassing checks. Landing is done when a fresh fetch shows the change in the default branch.
|
|
11
|
+
|
|
12
|
+
Leave alone a checkout another
|
|
13
|
+
session or job uses, or whose use you cannot tell. Never merge, reset, stash or
|
|
14
|
+
switch it to make it match the default.
|
|
20
15
|
|
|
21
16
|
After integration:
|
|
22
17
|
|
|
23
18
|
- Fetch, then bring the local default branch current. When it is clean,
|
|
24
19
|
strictly behind and not checked out elsewhere, fast-forward it. When another
|
|
25
20
|
worktree has it checked out and you know no session or running job is using
|
|
26
|
-
that worktree (your own main checkout, for example), run
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
that worktree (your own main checkout, for example), run
|
|
22
|
+
`git merge --ff-only <sha>` there with the remote head you just fetched and
|
|
23
|
+
verified; unrelated uncommitted files may stay. Avoid `git pull` there: a
|
|
24
|
+
fetch by another process can rewrite the shared `FETCH_HEAD` mid-pull and
|
|
25
|
+
fail it with "Cannot fast-forward to multiple branches". When you cannot
|
|
26
|
+
tell, treat it as in use. Confirm the local and fetched remote heads match.
|
|
27
|
+
- If the default branch is diverged, on another branch, in use, or the merge
|
|
30
28
|
refuses because local edits would be overwritten, leave it and report its
|
|
31
29
|
path and the blocker. Never merge, reset, stash or switch branches to make it
|
|
32
30
|
match, and never update other sessions' worktrees or separate clones.
|
|
@@ -37,3 +35,5 @@ After integration:
|
|
|
37
35
|
- When the change landed by squash, verify the pull request's recorded squash
|
|
38
36
|
commit is in the fetched default branch and the intended changes landed; the
|
|
39
37
|
original feature commits need not be ancestors.
|
|
38
|
+
|
|
39
|
+
Before the first publish step of a version bump (tag, publish, release, announcement), review unreleased changelog entries and public materials (READMEs, charts, graphics with alt text, listing text, announcement) and fix what is stale first; an urgent release may limit only the materials to what it affects.
|
|
@@ -20,8 +20,12 @@ never in prose for either. When no second reviewer runs, the user's direction
|
|
|
20
20
|
is the only judgment backstop; say so instead of assuming review happened.
|
|
21
21
|
Asking an advisor model is not a second review.
|
|
22
22
|
|
|
23
|
-
After a model review,
|
|
24
|
-
|
|
23
|
+
After a model review, treat each finding as a claim. Fix it when a reproduced
|
|
24
|
+
failure (a test that fails before the fix, where one fits) or a cited
|
|
25
|
+
requirement confirms it, with the smallest change that clears it; a reviewer's
|
|
26
|
+
proposed remedy is a suggestion. Answer an unconfirmed finding with the reason.
|
|
27
|
+
Run the relevant checks. A fix that changes code logic permits a follow-up
|
|
28
|
+
review; it does not require one.
|
|
25
29
|
Code logic includes control flow, data handling, interfaces, queries and values
|
|
26
30
|
a program reads. Request a follow-up only for a named remaining risk that
|
|
27
31
|
local checks cannot resolve. Batch known fixes first, then focus the review on
|
|
@@ -15,17 +15,40 @@ or readiness condition in the task plan. Backlog items do not authorize
|
|
|
15
15
|
implementation or landing. Do not hold a ready batch for unrelated, unapproved
|
|
16
16
|
or indefinite work.
|
|
17
17
|
|
|
18
|
-
Before any release or public announcement, audit
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
Before any release or public announcement, audit every public-facing
|
|
19
|
+
material against the intended revision or artifact and current verified state:
|
|
20
|
+
the README and package READMEs, comparisons, performance metrics, graphics and
|
|
21
|
+
visuals (banners, charts, diagrams, screenshots and demo recordings, with their
|
|
22
|
+
alt text), relevant documentation, registry and marketplace listing text,
|
|
23
|
+
announcement plans and drafts, release notes and the release announcement.
|
|
24
|
+
|
|
25
|
+
Check each for old version numbers, figures and behavior. Regenerate or replace
|
|
26
|
+
a visual that shows them; where that is not possible, remove it or label the
|
|
27
|
+
version it shows. Record which materials were checked and the evidence for
|
|
22
28
|
claims in the task plan. Correct, add, remove or update content to resolve
|
|
23
29
|
outdated instructions, omissions, contradictions and unsupported claims.
|
|
30
|
+
|
|
24
31
|
Distinguish released, deployed and planned behavior; give performance claims
|
|
25
32
|
measurement conditions and evidence, and label unverified results. Preserve
|
|
26
33
|
historical results with their tested versions instead of presenting them as
|
|
27
34
|
current measurements.
|
|
28
35
|
|
|
36
|
+
Run the audit on every version bump, before the first publish step: the tag,
|
|
37
|
+
the registry or package publish, the GitHub release or any announcement. Land
|
|
38
|
+
each correction first. Landing the corrections is part of the audit; one made
|
|
39
|
+
after publishing means the audit did not finish. This applies to every public
|
|
40
|
+
repository, including ones created later.
|
|
41
|
+
|
|
42
|
+
Audit the pending changelog entries at the same point on every version bump,
|
|
43
|
+
public or private, and land the corrected changelog first. Check each entry
|
|
44
|
+
against the code that will ship: names, commands, counts and figures are
|
|
45
|
+
verified, not copied, and no transient number stays. Keep entries plain and no
|
|
46
|
+
longer than their reader needs. Merge entries that describe iterations of one
|
|
47
|
+
concern into one entry that states the final behavior; how a change evolved
|
|
48
|
+
stays in git. Keep whole any entry a user must act on (a breaking change, an
|
|
49
|
+
upgrade or a repair step); never merge it away. An urgent release does not narrow
|
|
50
|
+
this audit.
|
|
51
|
+
|
|
29
52
|
Recheck affected claims when the candidate or supporting evidence changes.
|
|
30
53
|
Before publishing, resolve unsupported or contradictory claims by correcting,
|
|
31
54
|
qualifying or removing them; record any remaining accuracy blocker. Do not
|
|
@@ -16,10 +16,16 @@ When a review bot reviews pull requests, merge only after its check finishes
|
|
|
16
16
|
and each finding is fixed or answered with a reason, threads resolved. Read
|
|
17
17
|
the review body too: findings outside the diff arrive there, not as threads.
|
|
18
18
|
|
|
19
|
+
Let an enabled automatic review start; do not comment to request one. When none
|
|
20
|
+
starts, check the integration's status instead of tagging the bot again. A bot's
|
|
21
|
+
config file in the repository does not show that it is enabled, and an existing
|
|
22
|
+
check on the head must report completion before you merge (for CodeRabbit, a
|
|
23
|
+
successful status whose description starts with "Review completed").
|
|
24
|
+
|
|
19
25
|
During integration, never switch, reset or remove the session's own checkout: no
|
|
20
26
|
`checkout` or `switch` to another ref, no `reset` or branch force-move, and no
|
|
21
27
|
`worktree remove` on it. Updating the default branch it has checked out
|
|
22
|
-
(`merge --squash`, `merge --ff-only
|
|
28
|
+
(`merge --squash`, or `merge --ff-only` to the fetched remote head after a remote merge)
|
|
23
29
|
under the fast-forward conditions in § Landing is expected; report other paths
|
|
24
30
|
to their owners.
|
|
25
31
|
|
|
@@ -33,9 +39,9 @@ Fetch first, then:
|
|
|
33
39
|
has the base checked out, detach at the fetched base (`git switch --detach
|
|
34
40
|
<remote>/<base>`) and create or switch to a branch before any further
|
|
35
41
|
commits.
|
|
36
|
-
- When an app manages the checkout, leave it
|
|
37
|
-
|
|
38
|
-
- When the tree is dirty or ownership is in doubt,
|
|
42
|
+
- When an app manages the checkout, leave it for the app to retire. Report it;
|
|
43
|
+
it is not a blocker.
|
|
44
|
+
- When the tree is dirty or ownership is in doubt, stop: record the
|
|
39
45
|
merged commit, the checkout path and the owner wherever you track the task.
|
|
40
46
|
|
|
41
47
|
After each landing, update the task list and any active handoff with the
|