@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,83 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contributes to a positive environment for our community include:
12
+
13
+ - Demonstrating empathy and kindness toward other people
14
+ - Being respectful of differing opinions, viewpoints, and experiences
15
+ - Giving and gracefully accepting constructive feedback
16
+ - Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ - Focusing on what is best not just for us as individuals, but for the overall community
18
+
19
+ Examples of unacceptable behavior include:
20
+
21
+ - The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ - Trolling, insulting or derogatory comments, and personal or political attacks
23
+ - Public or private harassment
24
+ - Publishing others' private information, such as a physical or email address, without their explicit permission
25
+ - Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
32
+
33
+ ## Scope
34
+
35
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
36
+
37
+ ## Enforcement
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement through the repository's private reporting form: on the [Security tab](https://github.com/bompus/house-rules/security), choose **Report a vulnerability** and say the report is about conduct. Only the maintainer can read it. All complaints will be reviewed and investigated promptly and fairly.
40
+
41
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42
+
43
+ ## Enforcement Guidelines
44
+
45
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46
+
47
+ ### 1. Correction
48
+
49
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
50
+
51
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
52
+
53
+ ### 2. Warning
54
+
55
+ **Community Impact**: A violation through a single incident or series of actions.
56
+
57
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
58
+
59
+ ### 3. Temporary Ban
60
+
61
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
62
+
63
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
64
+
65
+ ### 4. Permanent Ban
66
+
67
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
68
+
69
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
74
+
75
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
76
+
77
+ For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
78
+
79
+ [homepage]: https://www.contributor-covenant.org
80
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
81
+ [Mozilla CoC]: https://github.com/mozilla/diversity
82
+ [FAQ]: https://www.contributor-covenant.org/faq
83
+ [translations]: https://www.contributor-covenant.org/translations
@@ -0,0 +1,54 @@
1
+ # Contributing
2
+
3
+ Issues and pull requests are welcome: a rule an agent misreads, a modifier
4
+ or skill that would help other setups, a bug in `compose.mjs`.
5
+ Everyone taking part follows the [code of conduct](CODE_OF_CONDUCT.md).
6
+
7
+ ## What fits
8
+
9
+ House-rules is a practical starting point for ordinary development with AI
10
+ coding agents. Include guidance for common work or a recurring failure with a
11
+ clear benefit over existing rules, tools and skills.
12
+
13
+ For a new rule, modifier or skill, show:
14
+
15
+ 1. The concrete problem and representative developer task.
16
+ 2. The existing alternative and why it is insufficient.
17
+ 3. Evidence for the behavior, including when it should stay inactive.
18
+ 4. Its cost in setup choices, loaded context, dependencies and maintenance.
19
+ 5. Why it belongs here rather than in personal or project guidance.
20
+
21
+ Portability and explicit invocation alone do not establish a reason to include
22
+ a workflow. Prefer improving existing guidance or tools. Keep speculative
23
+ procedures and personal operating habits in their own layers.
24
+
25
+ Always-on rules must be broadly useful and preserve project choices. Default
26
+ skills must support routine work with little setup. Specialist additions need
27
+ a concrete shared use case and stay out of fresh defaults. Introduce them when
28
+ the relevant task arises; setup should not require choosing from the catalog.
29
+
30
+ Everything here must work for anyone's projects. Leave out names of private
31
+ projects or repositories, local paths, home directories and credentials. A
32
+ preference only some users want belongs in an opt-in modifier, not in
33
+ `rules/core.md`.
34
+
35
+ When you change rule wording, say in the pull request which agent behavior
36
+ it changes and how you saw it. The end-of-reply eval in `evals/end-of-reply/`
37
+ is one way to show it.
38
+
39
+ ## Before you open a pull request
40
+
41
+ 1. Run the checks in the README's Development section. CI runs them too.
42
+ 2. Add a `CHANGELOG.md` entry under `Unreleased` for any change users will
43
+ notice. The maintainer batches approved changes into versioned releases;
44
+ each pull request does not need its own version or tag.
45
+
46
+ ## How changes land
47
+
48
+ The maintainer lands pull requests by rebasing them onto `main` and
49
+ fast-forwarding, so your commits keep you as their author. Contributions are
50
+ licensed under the MIT licence in `LICENSE`. When you adapt someone else's
51
+ work, record its source and applicable licence notices in `THIRD_PARTY_NOTICES.md`.
52
+ A skill copied on its own must carry those notices inside its bundle, such as
53
+ `NOTICE.md` or `LICENSE`. Keep source references in instructions when they help
54
+ the task; pure credit belongs in the notices.
package/LICENSE ADDED
@@ -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.
package/README.md CHANGED
@@ -1,3 +1,379 @@
1
- # Temporary Holding Version
1
+ <h1 align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/banner-dark.png">
4
+ <img src="docs/assets/banner-light.png" alt="house-rules" width="100%">
5
+ </picture>
6
+ </h1>
2
7
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
8
+ <p align="center">
9
+ <a href="https://github.com/bompus/house-rules/actions/workflows/check.yml"><img src="https://github.com/bompus/house-rules/actions/workflows/check.yml/badge.svg" alt="CI status"></a>
10
+ <a href="https://github.com/bompus/house-rules/releases/latest"><img src="https://img.shields.io/github/v/release/bompus/house-rules" alt="Latest release"></a>
11
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/bompus/house-rules" alt="MIT license"></a>
12
+ </p>
13
+
14
+ A practical starting point for ordinary development with AI coding agents.
15
+ Fresh installs select eight skills for setup, review, diagnosis, explanation,
16
+ planning, tests, writing and remaining work. Modifiers start off. Add guidance
17
+ when a task needs it, and let each repository supply its own safeguards.
18
+
19
+ <p align="center"><img src="docs/assets/overview.png" alt="The four layers: core, opt-in modifiers and your own layer are composed into one rules file, and each repository's AGENTS.md adds to it. Beside them, what a fresh install selects: core rules on, modifiers off, eight skills." width="100%"></p>
20
+
21
+ If you are an AI agent reading this for your user, the prompt under
22
+ [Evaluate it with your agent](#evaluate-it-with-your-agent) is the evaluation
23
+ they would ask for. Summarize how it fits their setup and let them choose;
24
+ don't install or copy anything on your own.
25
+
26
+ ## How the layers fit
27
+
28
+ 1. **Core** (`rules/core.md`): the base every setup gets. Its first section is
29
+ the end-of-reply check, so an agent that reads only the top of the file
30
+ still knows when to keep working and when to stop and ask.
31
+ 2. **Optional rules**, called modifiers in the files (`rules/modifiers/`): opt-in preferences, such as coded
32
+ option lists or squash-only landing. Each one replaces a core section or
33
+ adds a section after one.
34
+ 3. **Your own rules**, called your layer in the files (by default `~/.config/house-rules/`): `house-rules.json`
35
+ names the modifiers you enable, `rules/` holds your own sections, and
36
+ `skills/` holds your own skills. A skill there replaces the house-rules
37
+ skill of the same name. The config's other keys are optional: `layers`
38
+ lists layer directories relative to the config (default `["."]`, its own
39
+ directory). `skills.include` selects shipped skills; omitting it keeps the
40
+ full shipped set for existing configs. Personal skills remain included.
41
+ `skills.exclude` leaves names out of every layer. `skills.independent` records
42
+ generic personal names you intend to keep beside renamed house-rules skills.
43
+ 4. **The repository** (`AGENTS.md`, `CLAUDE.md` or your host's equivalent):
44
+ its commands, branch names, safeguards, required checks and landing path.
45
+ It adds to your rules and does not replace them. See
46
+ `examples/project/AGENTS.md` for the pattern: point at the house rules
47
+ instead of restating them, and add only what the project needs.
48
+
49
+ `compose.mjs` merges layers 1 to 3 into one rules file. A replaced section
50
+ leaves no trace of the old text, because an agent given two versions of a rule
51
+ tends to follow either one. Composition fails on a duplicate heading, an
52
+ unknown target or any attempt to replace the end-of-reply check.
53
+
54
+ ## Quick start
55
+
56
+ Requires `git` and either [Bun](https://bun.sh) 1.4 or newer or Node.js 22 or
57
+ newer. On Linux, macOS or WSL, one line installs or updates the selected guidance:
58
+
59
+ ```bash
60
+ curl -fsSL https://raw.githubusercontent.com/bompus/house-rules/main/install.sh | sh
61
+ ```
62
+
63
+ On Windows 10 or 11, run this in PowerShell instead:
64
+
65
+ ```powershell
66
+ irm https://raw.githubusercontent.com/bompus/house-rules/main/install.ps1 | iex
67
+ ```
68
+
69
+ To read the script before it runs:
70
+
71
+ ```bash
72
+ curl -fsSLO https://raw.githubusercontent.com/bompus/house-rules/main/install.sh
73
+ less install.sh
74
+ sh install.sh
75
+ ```
76
+
77
+ ```powershell
78
+ irm https://raw.githubusercontent.com/bompus/house-rules/main/install.ps1 -OutFile install.ps1
79
+ notepad install.ps1
80
+ powershell -ExecutionPolicy Bypass -File install.ps1
81
+ ```
82
+
83
+ The script picks the newest Bun 1.4 or newer it finds on `PATH` or in a
84
+ version manager's directory, otherwise the newest Node.js 22 or newer. It
85
+ clones this repository to `~/.local/share/house-rules` (or pulls it when it is
86
+ already there), copies `examples/person/house-rules.json` to
87
+ `~/.config/house-rules/` when you have no config yet, and composes
88
+ `~/.config/house-rules/rules.md` and `~/.config/house-rules/composed-skills`.
89
+ Those are the default paths: a set `XDG_DATA_HOME` replaces `~/.local/share`,
90
+ and a set `XDG_CONFIG_HOME` replaces `~/.config`. On Windows the checkout goes
91
+ to `%LOCALAPPDATA%\house-rules` and the config to
92
+ `%USERPROFILE%\.config\house-rules`.
93
+ The fresh config selects the eight skills named above and no modifiers.
94
+ Updates preserve your existing config. An explicit `skills.include` list keeps
95
+ later shipped additions off until selected. Browse the full catalog only when
96
+ you want more choices.
97
+
98
+ On a later run, if the composed skills changed, it keeps the previous skills
99
+ directory under a dated name instead of deleting it; if they match, it says so
100
+ and keeps nothing extra. It never edits an agent host's files. The comment at
101
+ the top of `install.sh` lists the environment variables that change its paths
102
+ or runtime; `install.ps1` takes the same variables. Some skill scripts need Bun
103
+ even when Node.js composes the rules.
104
+
105
+ Then connect the composed file to your agent. Claude Code reads
106
+ `@~/.config/house-rules/rules.md` on its own line in `~/.claude/CLAUDE.md`;
107
+ other hosts take a copy in their user-level rules file, with the
108
+ `house-rules-references/` directory placed beside it. Written rules link to the
109
+ procedures in that directory, which hold detail; an agent may act without opening
110
+ one, so each guard stays written in the rules themselves. Stdout and configuration
111
+ previews keep the procedures inline. See [reference output](docs/configuration.md#reference-output). To change modifiers or
112
+ skills, change to the checkout directory and run `node compose.mjs setup`,
113
+ or `bun compose.mjs setup` when Node.js is unavailable. Review the numbered
114
+ choices and use `save` to change only the configuration. Setup then prints the
115
+ command that applies the selection: the installer for a checkout, or
116
+ `house-rules --config` for the npm package.
117
+ The [configuration CLI guide](docs/configuration.md) covers status, previews,
118
+ question preferences, optional panel preferences and safe writes. The
119
+ `hr-house-rules-setup` skill preserves selections, offers relevant additions and connects
120
+ hosts, and asks before it touches a host file.
121
+
122
+ ### npm distribution
123
+
124
+ `@bompus/house-rules` is published to npm. The package provides the
125
+ `house-rules` composition and configuration commands. Installation has no
126
+ lifecycle hooks and does not connect an agent host or change its settings.
127
+
128
+ ```bash
129
+ npm install --global @bompus/house-rules
130
+ house-rules --list
131
+ house-rules config help
132
+ house-rules --config ./house-rules.json --out ./rules.md --skills-out ./composed-skills
133
+ ```
134
+
135
+ Create your configuration before composing. The
136
+ [configuration guide](docs/configuration.md) describes the available choices.
137
+ The package bundles rules, skills, their resources and documentation. With the
138
+ npm package, run `house-rules setup` to change modifiers or skills. Git-based
139
+ installers follow the default branch; npm follows published versions.
140
+
141
+ ### Manual steps
142
+
143
+ To keep the checkout somewhere else, run the same steps by hand. The commands use `node`; `bun` runs them the same way.
144
+
145
+ ```bash
146
+ git clone https://github.com/bompus/house-rules.git
147
+ cd house-rules
148
+ node compose.mjs --list
149
+ mkdir -p ~/.config/house-rules
150
+ cp examples/person/house-rules.json ~/.config/house-rules/
151
+ node compose.mjs --config ~/.config/house-rules/house-rules.json \
152
+ --out ~/.config/house-rules/rules.md --skills-out ~/.config/house-rules/composed-skills
153
+ ```
154
+
155
+ To recompose later, move or remove the old `composed-skills` directory first,
156
+ because `--skills-out` must be empty or absent. `compose.mjs` writes the rules
157
+ file, a `house-rules-references/` directory beside it (or at `--references-out`)
158
+ when the rules include reference procedures, and `--skills-out` when given. It never deletes anything.
159
+
160
+ When distributing a rules-only output, carry this checkout's `LICENSE` and
161
+ `THIRD_PARTY_NOTICES.md` alongside it. Copy them into an explicit destination
162
+ and reconcile existing notice files before replacing them. A full
163
+ `--skills-out` export already includes both at its root. When copying one
164
+ skill, keep its entire directory, including any `NOTICE.md` and `LICENSE`.
165
+ Personal layers must also carry notices required by their own sources.
166
+
167
+ ## Upgrading skill names
168
+
169
+ All shipped skill names use `hr-`. Before updating an older installation,
170
+ follow [the skill name upgrade guide](docs/skill-names.md) to preserve exclusions
171
+ and personal overrides. Composition stops on ambiguous old names before
172
+ writing output. Host links and copies need a separate update.
173
+
174
+ ## Evaluate it with your agent
175
+
176
+ Paste this into a session with the agent you use. It compares house-rules with
177
+ the rules you already have and changes nothing until you choose.
178
+
179
+ ```text
180
+ I'm considering house-rules (https://github.com/bompus/house-rules), working
181
+ rules and skills for AI coding agents. Read its README, rules/core.md,
182
+ rules/modifiers/ and the skills list, then compare them with the rules and
183
+ skills I already use (my user-level rules file for this host and this
184
+ repository's AGENTS.md or equivalent). Tell me:
185
+ 1. Which rules, modifiers or skills would change how you work with me, with
186
+ an example from how you work now.
187
+ 2. Which ones duplicate or conflict with what I already have.
188
+ 3. Whether to adopt it whole (compose.mjs plus my own layer) or copy single
189
+ sections into my existing rules. Taking individual ideas is fine.
190
+ Read only: don't install, compose or edit anything until I choose. When I
191
+ adopt a section or idea, record its source in distributed notices, such as
192
+ "Adapted from house-rules (https://github.com/bompus/house-rules)". Keep required
193
+ licence notices with copied text and standalone skill bundles.
194
+ ```
195
+
196
+ Taking individual ideas is welcome. If you adopt any, we'd appreciate a
197
+ source credit in your distributed notices. Copying substantial text also needs
198
+ the MIT notice kept (see `LICENSE`).
199
+
200
+ ## Writing your own sections
201
+
202
+ A rules file in your layer starts with frontmatter that names one operation
203
+ and a core heading, followed by its own `## ` heading:
204
+
205
+ ```markdown
206
+ ---
207
+ after: Implementation economy
208
+ ---
209
+
210
+ ## My tooling
211
+
212
+ Use pnpm for JavaScript projects unless the repository uses another manager.
213
+ ```
214
+
215
+ The operations are `replaces:`, `after:`, `before:` and `removes:`; a
216
+ `removes:` file has no body. A file without frontmatter is added at the end.
217
+ Frontmatter may also hold `description:`, `requires:` (a comma-separated
218
+ list of skills the section relies on; the core rules and any modifier that relies
219
+ on skills declare them, and composing warns when one is not in the composed
220
+ set) and `reference:` (a procedure file the section links to; see
221
+ [reference output](docs/configuration.md#reference-output)); any other key is an error. Files apply
222
+ in name order, after the modifiers.
223
+
224
+ ## Modifiers
225
+
226
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Modifier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | What it does |
227
+ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
228
+ | `backlog-outline` | A backlog report adds a Markdown outline of every open item grouped by what it waits on; nothing is rendered, so it reads the same on every host. |
229
+ | `backlog-visual` | A backlog report adds one dark panel of every open item grouped by what it waits on, with a table for waiting items and one row per decision; hosts without a render tool get the same outline in Markdown. |
230
+ | `coded-offers` | Offers use numbered questions and coded options (`1A`, `1B`) so one short reply answers every decision. |
231
+ | `cross-session-relay` | Relayed work between sessions keeps its source and authorized scope, and an authorized push that changes inherited guidance or tooling is announced to the affected sessions. |
232
+ | `effort-estimates` | Options that differ in cost, or work that waits on CI, a build or a deploy, carry a wall-clock estimate based on comparable finished work. Estimates from workers, docs or other models are converted the same way or dropped. |
233
+ | `land-when-done` | Authorized repository work is not finished until it is in the remote default branch. |
234
+ | `low-quota-handoff` | When the current model's usage allowance runs low, write a handoff before work stops. |
235
+ | `model-default-questions` | Leave how questions are asked to your host and model, with no text-only or question-card instruction. |
236
+ | `multi-agent` | Work is split across delegated workers and several agent hosts; worker reports, review standards and cleanup checks account for all of them. |
237
+ | `no-attribution` | Commits, pull requests and comments carry no agent or tool credit lines unless the target repository asks for a disclosure. |
238
+ | `periodic-updates` | 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. |
239
+ | `plan-files` | Multi-step work keeps a visible task list mirrored to a plan file with a ledger of every item's outcome. |
240
+ | `question-cards` | Opt in to question cards beside complete text offers when the host supports them; availability and presentation can vary by host, provider and model. |
241
+ | `release-batching` | Batch approved, compatible changes for releases and audit factual claims before releases or public announcements. |
242
+ | `scratch-on-disk` | Task scratch lives on disk under the user data directory, never in RAM-backed `/tmp`. |
243
+ | `shared-host-load` | On a shared machine, follow its resource budgets; without one, get operator direction before parallel workers or whole-repository commands, and use memory controls. |
244
+ | `solo-operator` | For repositories with one maintainer, the user's direction is the review; no review-gated steps. |
245
+ | `squash-landing` | Pull requests land by squash merge after review-bot findings are handled, and the session's checkout moves off the landed branch. |
246
+ | `upstream-contributions` | A measured optimization, fix or defect found in a third-party project is offered for submission to that project through its own contribution route. |
247
+ | `web-image-formats` | Prefer WebP for web raster images when it saves bytes at acceptable quality, with format exceptions and delivered-file checks. |
248
+
249
+ Questions use text only by default. Setup asks how you want questions asked:
250
+
251
+ - **Model default**: house-rules gives no instruction, so your model and host ask
252
+ their usual way (`model-default-questions`).
253
+ - **Text only**: plain text options, with or without short reply codes such as
254
+ `1A` (`coded-offers`). No question tools are called, even when the host
255
+ exposes them.
256
+ - **Clickable choices when available**: complete text options plus a
257
+ question card (`question-cards`). Cards can be unavailable, skipped or shown
258
+ unexpectedly across hosts, providers and models; the text offer remains usable
259
+ on its own.
260
+
261
+ `hr-house-rules-setup` asks which you want and explains these limits before
262
+ changing the configuration.
263
+
264
+ ## Skills
265
+
266
+ | Skill | Use it to |
267
+ | --------------------------- | --------------------------------------------------------------------------------------------------------- |
268
+ | `hr-agent-guidance-audit` | Audit agent guidance for stale or conflicting rules, and decide what to retire or merge. |
269
+ | `hr-agent-guidance-refresh` | Re-read guidance that changed since the session started. |
270
+ | `hr-api-exposure-check` | Keep API responses to the fields a consumer reads and the caller may see. |
271
+ | `hr-audit-choices` | List and check the decisions made while implementing a task. |
272
+ | `hr-benchmarking` | Design, run and assess timing, CPU and memory comparisons; choose tools by the question they answer. |
273
+ | `hr-better-accessibility` | Build and review keyboard access, semantics, forms, focus, motion and reflow in web UI. |
274
+ | `hr-better-colors` | Choose and check palettes, semantic tokens, themes, gamut and rendered contrast. |
275
+ | `hr-better-layout` | Build and review grouping, alignment, spacing, responsive layout and clipping. |
276
+ | `hr-better-typography` | Style and review type scales, wrapping, spacing, truncation and font loading. |
277
+ | `hr-better-writing` | Write and review interface labels, errors, empty states and product terminology. |
278
+ | `hr-code-review` | Review a diff against standards and the request, and check what it can break beyond its lines. |
279
+ | `hr-design-exploration` | Compare visual directions, or variants of one component, and refine toward one design. |
280
+ | `hr-diagnosing-bugs` | Work a hard bug or regression to a confirmed cause. |
281
+ | `hr-explain-code` | Trace how existing code works, read-only, before changing it. |
282
+ | `hr-extract-shared-steps` | Move operations repeated across workflows into shared functions. |
283
+ | `hr-forgotten-work-audit` | Audit past sessions, plans and handoffs for promised work that dropped off every list. |
284
+ | `hr-handoff` | Write a handoff a fresh session can resume from. |
285
+ | `hr-house-rules-setup` | Choose modifiers, create your layer and connect your hosts. |
286
+ | `hr-issue-tracker-setup` | Configure project tracker, domain-term and ADR conventions; explicit-only. |
287
+ | `hr-lean-plan` | Write or tighten an implementation plan with the fewest moving parts. |
288
+ | `hr-maintainability-review` | Review a diff or entire codebase strictly for structure, over-engineering and leftover scaffolding. |
289
+ | `hr-manual-qa` | Give reproducible human checks after reporting agent verification results. |
290
+ | `hr-navigation-retro` | Audit navigation failures in selected transcripts and propose verified findability fixes; explicit-only. |
291
+ | `hr-ordering-tests` | Enumerate event orderings through the real code to find race bugs. |
292
+ | `hr-plain-prose` | Make text people read plain and specific. |
293
+ | `hr-progress-report` | Report current task activity, milestone completion and remaining wall-clock time. |
294
+ | `hr-pr-followup` | Address conflicts, feedback and failing checks for a PR; honor landing authority; CodeRabbit review gate. |
295
+ | `hr-read-reddit` | Read Reddit feed output while supported; RSS support ends November 13, 2026. Partial web-search fallback. |
296
+ | `hr-read-x-links` | Read the full content of X posts. |
297
+ | `hr-research-shared-links` | Research a shared link or repository in depth, compare it with your setup and rate each idea. |
298
+ | `hr-split-to-prs` | Divide work into coherent PRs while preserving recovery points and verifying each slice. |
299
+ | `hr-sqlite` | Check settings, locking, queries and copies in SQLite code against measured findings. |
300
+ | `hr-stock-ui-audit` | Find and triage template-default styling in frontend code. |
301
+ | `hr-tdd` | Implement requested test-first work through one red-green slice at a time; simplify during review. |
302
+ | `hr-test-audit` | Decide which new tests are worth keeping and which old ones to prune. |
303
+ | `hr-usage-report` | Measure where agent usage went by provider, model and role, and chart model comparisons. |
304
+ | `hr-what-next` | Reconcile remaining session work and recommend priorities when asked what comes next. |
305
+ | `hr-writing-for-agents` | Write skills, rules and other documents agents read. |
306
+ | `hr-writing-pr` | Write a pull request title and body from the final diff. |
307
+
308
+ The `hr-navigation-retro` skill finds navigation failures in selected tool-call
309
+ transcripts, then proposes fixes verified against current source. Any agent with
310
+ file and shell access can run it. Supported inputs include Claude Code, Codex,
311
+ OpenCode exports, Cursor CLI streams and ACP v1 recordings from other agents.
312
+ See its [input limits](skills/hr-navigation-retro/references/inputs.md).
313
+ It is explicit-only, requires Python 3.11+ and keeps reports local.
314
+
315
+ ## Checking the rules against your models
316
+
317
+ `evals/end-of-reply/` (in the GitHub repository, not the npm package) runs short scenarios through any model CLI. It grades
318
+ whether the agent keeps working or ends with an offer at the right time,
319
+ including when it reads only the first 80 lines. A 2026-10-11 replay covered
320
+ its 18 scenarios, two runs each, on Claude Code 2.1.296 only, at revision
321
+ `efd4d7b`; `rules/core.md` has changed since. The rules scored
322
+ 22 of 36 replies with Opus 5.5 and 27 of 36 with Sonnet 5.5. A one-sentence
323
+ instruction scored 18 and 16, and no rules scored 17 and 16. The gains cluster
324
+ in follow-ups, parked findings, stacked offers and spin-offs, where the
325
+ controls scored 0. Two runs per scenario is a small sample, so read the counts,
326
+ not a percentage. No other agent was measured. The eval's README has the
327
+ breakdown and limits.
328
+
329
+ ## Development
330
+
331
+ ```bash
332
+ node --test test/*.test.mjs # composer and eval grader
333
+ bun test test/ # the same under Bun
334
+ bun test skills/ # skill scripts
335
+ npm run check:package -- --bun # npm tarball: packs, installs, runs the CLI
336
+ npx --yes oxlint@1.85.0 . && npx --yes oxfmt@0.70.0 --check .
337
+ ```
338
+
339
+ These versions match the pins in `.github/workflows/check.yml`; an unpinned `npx`
340
+ fetches the latest release, whose formatting can differ from CI's. Change both
341
+ together.
342
+
343
+ Oxfmt checks authored Markdown, HTML, JSON, JSONC, YAML, TOML and CSS as well
344
+ as JavaScript and TypeScript. Test fixtures stay excluded because scanner
345
+ tests depend on their exact text and line numbers. Package fields and
346
+ dependency maps are sorted; script order is preserved.
347
+
348
+ Tests remove their own fixture directories after each test, including failures.
349
+ Set `HOUSE_RULES_TEST_TMP` to an existing directory to choose their scratch root;
350
+ otherwise they use the operating system temporary directory. Choose a disk-backed
351
+ location when the system temporary directory is RAM-backed.
352
+
353
+ CI runs these checks on every pull request and on pushes to `main`, and also runs the tests and the tarball check on Windows. See
354
+ [CONTRIBUTING.md](CONTRIBUTING.md) before opening one.
355
+
356
+ The local-reference gate runs in `test/guidance-links.test.mjs`. Audit another
357
+ checkout with `node guidance-links.mjs --root <checkout> --repository
358
+ owner/repo=<local-checkout>`; repeat `--repository` for other available sources.
359
+ Its JSON report identifies GitHub file pointers to replace. When a remote
360
+ link deliberately cites current provenance, downloads a file or refreshes
361
+ upstream guidance, use one of these comments on that line. Each needs a reason:
362
+
363
+ - `<!-- local-reference: source <reason> -->`
364
+ - `<!-- local-reference: download <reason> -->`
365
+ - `<!-- local-reference: remote-refresh <reason> -->`
366
+
367
+ Pinned history and images are exempt.
368
+
369
+ ## Sponsoring
370
+
371
+ house-rules is built and maintained by one person. If it saves you time, you can
372
+ sponsor it monthly or once through
373
+ [GitHub Sponsors](https://github.com/sponsors/bompus), or leave a tip on
374
+ [Ko-fi](https://ko-fi.com/bompus).
375
+
376
+ ## Licence
377
+
378
+ MIT. Some skills adapt MIT-licensed work, and `CODE_OF_CONDUCT.md` is the
379
+ Contributor Covenant under CC BY 4.0; see `THIRD_PARTY_NOTICES.md`.