copilot-session-usage 0.6.4__tar.gz → 0.7.2__tar.gz

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 (132) hide show
  1. copilot_session_usage-0.7.2/.github/guidelines/git-commit-message.guideline.md +193 -0
  2. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/guidelines/knowledge-base.guidelines.md +3 -1
  3. copilot_session_usage-0.7.2/.github/skills/gh-commit-changes/SKILL.md +31 -0
  4. copilot_session_usage-0.7.2/.github/skills/gh-create-pull-request/SKILL.md +34 -0
  5. copilot_session_usage-0.7.2/.github/skills/gh-release-notes/SKILL.md +461 -0
  6. copilot_session_usage-0.7.2/.github/skills/gh-release-notes/scripts/generate_release_notes.py +296 -0
  7. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/skills/record-finding/SKILL.md +5 -7
  8. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/ci.yml +6 -12
  9. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/publish.yml +11 -8
  10. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/refresh-pricing.yml +2 -2
  11. copilot_session_usage-0.7.2/.github/workflows/release-notes.yml +95 -0
  12. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/release.yml +39 -50
  13. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.gitignore +2 -0
  14. copilot_session_usage-0.7.2/AGENTS.md +82 -0
  15. copilot_session_usage-0.7.2/CHANGELOG.md +94 -0
  16. copilot_session_usage-0.7.2/CONSTITUTION.md +125 -0
  17. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/CONTRIBUTING.md +4 -2
  18. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/PKG-INFO +2 -1
  19. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/internal/automated_release_proces.md +41 -28
  20. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/explanation/how-cost-estimation-works.md +11 -0
  21. copilot_session_usage-0.7.2/docs/source/reference/api.md +31 -0
  22. copilot_session_usage-0.7.2/docs/source/reference/cli.md +23 -0
  23. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/reference/pricing.md +57 -1
  24. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/justfile +46 -9
  25. copilot_session_usage-0.7.2/knowledge/findings/2026.08.05-16.24-utility-models-appear-in-logs-but-are-not-billed.md +35 -0
  26. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/index.md +1 -0
  27. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/pyproject.toml +1 -0
  28. copilot_session_usage-0.7.2/scripts/refresh_pricing.py +9 -0
  29. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/core.py +460 -83
  30. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/api.py +54 -9
  31. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/cli.py +76 -0
  32. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/models-and-pricing.lock +2 -2
  33. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/models-and-pricing.yml +50 -33
  34. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_api.py +23 -3
  35. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_cli.py +82 -3
  36. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_core.py +88 -2
  37. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_coverage_gaps.py +1 -1
  38. copilot_session_usage-0.7.2/tests/test_generate_release_notes.py +176 -0
  39. copilot_session_usage-0.7.2/tests/test_pricing_runtime.py +127 -0
  40. copilot_session_usage-0.7.2/tests/test_release_notes.py +79 -0
  41. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_rendering.py +5 -1
  42. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/uv.lock +11 -0
  43. copilot_session_usage-0.6.4/.github/guidelines/git-commit-message.guideline.md +0 -99
  44. copilot_session_usage-0.6.4/.github/skills/gh-release-notes/SKILL.md +0 -325
  45. copilot_session_usage-0.6.4/.github/workflows/release-notes.yml +0 -134
  46. copilot_session_usage-0.6.4/AGENTS.md +0 -96
  47. copilot_session_usage-0.6.4/CHANGELOG.md +0 -48
  48. copilot_session_usage-0.6.4/docs/source/reference/api.md +0 -18
  49. copilot_session_usage-0.6.4/docs/source/reference/cli.md +0 -11
  50. copilot_session_usage-0.6.4/scripts/refresh_pricing.py +0 -9
  51. copilot_session_usage-0.6.4/scripts/validate_release_notes.py +0 -101
  52. copilot_session_usage-0.6.4/tests/test_release_notes.py +0 -94
  53. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.editorconfig +0 -0
  54. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.gitattributes +0 -0
  55. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  56. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  57. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/changes/requests/skill-breakdown/01-request.md +0 -0
  58. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/pull_request_template.md +0 -0
  59. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/skills/consolidate-knowledge-base/SKILL.md +0 -0
  60. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.readthedocs.yaml +0 -0
  61. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/LICENSE +0 -0
  62. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/README.md +0 -0
  63. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/_static/changelog.js +0 -0
  64. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/_static/custom.css +0 -0
  65. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/changelog.md +0 -0
  66. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/conf.py +0 -0
  67. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/explanation/index.md +0 -0
  68. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/add-commit-trailer.md +0 -0
  69. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/analyze-specific-session.md +0 -0
  70. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/batch-and-spending.md +0 -0
  71. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/export-json.md +0 -0
  72. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/index.md +0 -0
  73. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/wsl2.md +0 -0
  74. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/index.md +0 -0
  75. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/installation.md +0 -0
  76. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/reference/index.md +0 -0
  77. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/tutorials/getting-started.md +0 -0
  78. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/tutorials/index.md +0 -0
  79. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Base.schema.yaml +0 -0
  80. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Concept.schema.yaml +0 -0
  81. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Experiment.schema.yaml +0 -0
  82. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Finding.schema.yaml +0 -0
  83. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Hypothesis.schema.yaml +0 -0
  84. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Outcome.schema.yaml +0 -0
  85. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Playbook.schema.yaml +0 -0
  86. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Principle.schema.yaml +0 -0
  87. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Reference.schema.yaml +0 -0
  88. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Structure.schema.yaml +0 -0
  89. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/copilot-cli.md +0 -0
  90. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/index.md +0 -0
  91. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/overview.md +0 -0
  92. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/session-cost-analysis.md +0 -0
  93. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/threshold-based-pricing.md +0 -0
  94. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/experiments/index.md +0 -0
  95. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/experiments/verify-subagent-cost-attribution.md +0 -0
  96. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/2026.07.02-00.00-subagent-logs-runsubagent-prefix.md +0 -0
  97. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/2026.07.02-22.00-title-generation-not-counted-as-model-turn.md +0 -0
  98. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/2026.07.02-23.00-cache-write-approximation.md +0 -0
  99. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/2026.07.13-14.27-release-notes-overreported-maintainer-changes.md +0 -0
  100. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/2026.07.24-15.01-actions-token-cannot-create-pr.md +0 -0
  101. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/automation-scripts.md +0 -0
  102. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/cost-optimization.md +0 -0
  103. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/index.md +0 -0
  104. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/wsl2-setup.md +0 -0
  105. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/ideas/index.md +0 -0
  106. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/ideas/multi-session-efficiency-analytics.md +0 -0
  107. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/index.md +0 -0
  108. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/log.md +0 -0
  109. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/principles/findings-are-immutable.md +0 -0
  110. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/principles/index.md +0 -0
  111. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/debug-log-format.md +0 -0
  112. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/index.md +0 -0
  113. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/pricing-formats.md +0 -0
  114. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/cache-cost-approximation.md +0 -0
  115. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/index.md +0 -0
  116. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/knowledge-base-information-types.md +0 -0
  117. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/session-discovery-algorithm.md +0 -0
  118. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/subagent-cost-tracking.md +0 -0
  119. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/vscode-copilot-extension.md +0 -0
  120. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/skills/copilot-session-usage/SKILL.md +0 -0
  121. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/__init__.py +0 -0
  122. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/__init__.py +0 -0
  123. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/copilot_cli.py +0 -0
  124. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/git.py +0 -0
  125. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/vscode.py +0 -0
  126. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/__init__.py +0 -0
  127. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/custom-models-pricing.yml +0 -0
  128. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/conftest.py +0 -0
  129. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_git.py +0 -0
  130. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_vscode.py +0 -0
  131. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_vscode_platform.py +0 -0
  132. {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/uv.toml +0 -0
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: Git Commit Message Guideline 2.0
3
+ description: Guidelines for writing conventional commits that communicate intent and user impact
4
+ metadata:
5
+ owner: Gaetan Semet <gaetan.semet@ampere.cars>
6
+ keywords: [git, commit, conventional, message, changelog]
7
+ guideline-id: 45c42e46-0781-4954-a410-1f380f5553f3
8
+ ---
9
+
10
+ # Git Commit Message Guideline
11
+
12
+ Write clear, user-impact focused commit messages following Conventional Commits format.
13
+ Commit messages communicate *why* changes were made, enabling automated changelog generation,
14
+ bug investigation, and decision-making during upgrades.
15
+
16
+ **Important**: Focus on user impact, not implementation details.
17
+
18
+ ## Core Rules
19
+
20
+ ### Rule 1: Use Conventional Commit Format
21
+
22
+ **Apply:** Format every title as `type(scope): description`
23
+
24
+ Note: scope is optional.
25
+
26
+ **Why:** Enables automated changelog generation and consistent pattern parsing.
27
+
28
+ **Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `ci`, `chore`, `build`, `revert`
29
+
30
+ Choose the type from the category of change, not merely from whether the change
31
+ improves reliability or is important:
32
+
33
+ - `feat`: adds a new user-facing capability.
34
+ - `fix`: corrects an existing user-facing behavior or defect.
35
+ - `build`: changes packaging, release automation, build tooling, or distribution.
36
+ - `ci`: changes validation, test, or pipeline execution without changing release
37
+ or packaging behavior.
38
+ - `docs`: changes documentation only.
39
+ - `refactor`: changes internal structure without changing behavior.
40
+ - `test`: adds or changes tests without changing production behavior.
41
+ - `chore`: maintenance that does not fit the other categories.
42
+
43
+ Release workflows, package publication, versioning automation, and trusted
44
+ publishing configuration use `build`, even when they improve reliability. Use
45
+ `fix` only when correcting an already-observed user-facing defect.
46
+
47
+ **Examples:**
48
+
49
+ ```text
50
+ feat(auth): add two-factor authentication support
51
+ fix(api): resolve request timeout in user endpoint
52
+ docs(readme): update installation instructions
53
+ perf(cache): optimize query performance by 40%
54
+ test(validators): add email format validation tests
55
+ ```
56
+
57
+ ---
58
+
59
+ ### Rule 2: Keep Title Under 50 Characters, Body Under 72 Characters per Line
60
+
61
+ **Apply:** Enforce character limits for scannability and terminal compatibility.
62
+
63
+ **Why:** Short titles force clarity; wrapped body text maintains readability in terminals and email clients.
64
+
65
+ **Exception**: URLs, hashes, or other unbreakable strings in body may exceed limits. Use discretion.
66
+
67
+ **Example:**
68
+
69
+ ```text
70
+ feat(cache): implement LRU eviction policy
71
+
72
+ Reduces memory usage in long-running processes by
73
+ automatically removing least-recently-used items.
74
+
75
+ Changes:
76
+ - Cache drops oldest accessed items upon limit
77
+ - Configurable cache size (default 1000)
78
+ - < 2% performance overhead on reads
79
+
80
+ Users can set CACHE_SIZE environment variable.
81
+ ```
82
+
83
+ ---
84
+
85
+ ### Rule 3: Focus Body on User Impact, Not Implementation Details
86
+
87
+ **Apply:** Describe what users gain and must know; exclude refactoring details, internal functions, and test additions.
88
+
89
+ **Why:** Users deciding whether to upgrade, developers integrating changes, and bug investigators need user-level context—not code structure details.
90
+
91
+ **Do Not** describe function-level changes, test modifications, or test counts.
92
+ CI provides the authoritative check statistics.
93
+
94
+ **Explicit check before committing**: Ask yourself — "Does the commit body
95
+ read like a diff summary?" If it lists files changed, methods added, or
96
+ test counts, rewrite it. The body must answer: "What can a user now do
97
+ differently, or what error/limitation is now resolved?"
98
+
99
+ **Example:**
100
+
101
+ ```text
102
+ fix(api): allow null values in optional response fields
103
+
104
+ Optional fields now omitted from JSON when empty,
105
+ reducing response payload by ~15% for sparse data.
106
+
107
+ Migration:
108
+ - Check `field in response` instead of `field != null`
109
+ - Response schema updated in API reference
110
+ ```
111
+
112
+ ---
113
+
114
+ ### Rule 4: Include Breaking Changes with Migration Guidance
115
+
116
+ **Apply:** When a breaking change is introduced, use `!` in title and `BREAKING CHANGE:` section.
117
+ Provide explicit migration steps.
118
+
119
+ **Why:** Breaking changes require user action; clear guidance reduces upgrade confusion.
120
+
121
+ **Example:**
122
+
123
+ ```text
124
+ feat(api)!: change pagination to cursor-based tokens
125
+
126
+ Cursors improve performance with large datasets.
127
+
128
+ BREAKING CHANGE: Replaced `pagination_offset` and
129
+ `pagination_limit` with `pagination.cursor`.
130
+
131
+ Migration:
132
+ Old: GET /users?limit=10&offset=20
133
+ New: GET /users?limit=10&cursor=xyz123
134
+
135
+ Update code to use `response.pagination.cursor`
136
+ in next request instead of offset/limit.
137
+ ```
138
+
139
+ ### Rule 5: Keep ownership separate from AI assistance
140
+
141
+ **Apply:** Do not add a `Signed-off-by` line unless explicitly requested by a human.
142
+ The human may add it to indicate that they take ownership of the change. It is a
143
+ DCO attestation, not an AI attribution.
144
+
145
+ ### Rule 6: Attribute the assisting model for AI-generated commits
146
+
147
+ **Apply:** When the content of a commit was generated mainly with AI assistance,
148
+ include exactly one `Assisted-by` trailer at the end of the message body:
149
+
150
+ ```text
151
+ Assisted-by: PROVIDER:MODEL [FRAMEWORK]
152
+ ```
153
+
154
+ - **PROVIDER** is the underlying model vendor, not the chat interface or IDE
155
+ integration. For example, use `OpenAI`, not `GitHub Copilot`.
156
+ - **MODEL** is the exact display name reported by the active model selection or
157
+ current session metadata, for example `GPT-5.6 Luna`.
158
+ - **FRAMEWORK** is optional and names the SDD orchestration framework that drove
159
+ the implementation. Omit it when assistance was provided directly.
160
+
161
+ **Determine the value from the current session only:**
162
+
163
+ 1. Use the provider and model identifier exposed by the active harness or session
164
+ metadata.
165
+ 2. For Craftsman sessions, use the current session's
166
+ `Craftsman-Session-Model-Main` value or equivalent current usage record.
167
+ 3. Never copy an `Assisted-by` value from a previous commit, recent `git log`,
168
+ an example, or another session; those values describe historical assistance.
169
+ 4. If the current model cannot be verified, stop and obtain that information
170
+ before committing. Never guess a model or substitute the IDE/chat interface.
171
+
172
+ **Correct examples:**
173
+
174
+ ```text
175
+ # Direct AI assistance (no agentic framework):
176
+ Assisted-by: Anthropic:Claude Sonnet 4.6
177
+
178
+ # AI assistance via Craftsman Ralph Loop:
179
+ Assisted-by: Anthropic:Claude Sonnet 4.6 Craftsman
180
+
181
+ # GPT via Cursor, no framework:
182
+ Assisted-by: OpenAI:GPT-4o
183
+ ```
184
+
185
+ **Wrong (do not write these):**
186
+
187
+ ```text
188
+ Assisted-by: GitHub Copilot # ❌ interface name, not model
189
+ Assisted-by: Cursor # ❌ IDE name, not model
190
+ Assisted-by: AI # ❌ too vague
191
+ ```
192
+
193
+ A human may add a `Signed-off-by` line to indicate they take ownership of the change.
@@ -80,7 +80,9 @@ Pre-commit checklist:
80
80
  - [ ] Correct `type` and folder for the information recorded.
81
81
  - [ ] Required frontmatter present and valid.
82
82
  - [ ] No Finding body was reworded or deleted.
83
- - [ ] All three commands above pass (also covered by `just preflight`).
83
+ - [ ] Run `just knowledge-lint` when knowledge documents changed, then ensure
84
+ `just knowledge-lint-check` and `just knowledge-validate` pass. Both checks are
85
+ covered by `just preflight`.
84
86
 
85
87
  Add a dated entry to `knowledge/log.md` for significant changes. Use plain
86
88
  ISO-8601 date headings; avoid parenthetical annotations (they trigger warnings).
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: gh-commit-changes
3
+ description: 'Commit all changes already staged in the Git index as one new Conventional Commit without staging, amending, or pushing anything. Use when asked to commit staged changes or create a commit from the index.'
4
+ argument-hint: 'Optional intent or user-impact context for the commit message'
5
+ user-invocable: true
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # Commit Staged Changes
10
+
11
+ Create exactly one new commit from the Git index. Do not stage or unstage files,
12
+ include unstaged changes, amend or rewrite history, or push.
13
+
14
+ ## Rules
15
+
16
+ - Find applicable convention or guidelines applicable for the project first.
17
+ Follow those project conventions when creating commits.
18
+ - Inspect `git diff --cached` and `git diff --cached --check`. Stop if the index
19
+ is empty, contains secrets or machine-local artifacts, mixes unrelated work,
20
+ or fails the check. The caller owns index contents.
21
+ - Derive the commit message from all staged changes.
22
+ Ensure to strictly follow the project convention, then run `git commit` exactly once.
23
+ Do not use `--all`, `--amend`, or `--no-verify`.
24
+ - Construct the complete message before invoking Git: subject, body, and trailers.
25
+ Do not pass each wrapped body line as a separate `-m` argument. Each `-m`
26
+ argument creates a separate paragraph and introduces an unintended blank line.
27
+ Pass the complete body as one message or use a complete commit-message file.
28
+ - For AI-assisted commits, use exactly one verified `Assisted-by` trailer as
29
+ required by the guideline. Never guess the model or use the IDE name.
30
+ - Verify the new commit and report any remaining staged or unstaged changes. Do
31
+ not claim that anything was pushed or that CI passed.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: gh-create-pull-request
3
+ description: 'Publish the current Git branch with gh, create or reuse a pull request, monitor GitHub Actions, and repair pipeline failures with one Conventional Commit per fix. Use when asked to push a branch, open a pull request, watch CI, or fix pipeline failures.'
4
+ argument-hint: 'Optional PR title, body, or target branch'
5
+ user-invocable: true
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # Create Pull Request and Repair CI
10
+
11
+ Use only for an explicit request to publish the current branch, open a GitHub
12
+ pull request, monitor its pipeline, or repair a failed pipeline with `gh`.
13
+
14
+ ## Rules
15
+
16
+ - Find applicable convention or guidelines applicable for the project first.
17
+ Follow those project conventions when creating commits.
18
+ - Confirm `gh auth status`, the repository, current branch, default branch, and
19
+ a clean working tree. Stop for a detached/default branch, empty diff.
20
+ Use `/gh-commit-changes` for uncommitted or staged changes.
21
+ - Push without rewriting history, create or reuse the branch's PR with `gh pr`,
22
+ and do not merge it unless separately requested.
23
+ - Watch checks with `gh pr checks --watch`; inspect failures with `gh run list`
24
+ and `gh run view`. Rerun only clearly transient failures.
25
+ - For a code failure, make the smallest safe fix, run the relevant project
26
+ checks, stage only that fix, invoke `/gh-commit-changes` once, push, and watch
27
+ the new run. One independent root cause means one new commit.
28
+ - Never weaken checks, expose secrets, force-push, amend, or rewrite history.
29
+ Stop for administrative or unclear failures and report what is needed.
30
+
31
+ ## Completion
32
+
33
+ Report the PR URL, final commit, fix commits, confirmed check results, and any
34
+ remaining external action. Do not claim success without evidence from `gh`.