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.
- copilot_session_usage-0.7.2/.github/guidelines/git-commit-message.guideline.md +193 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/guidelines/knowledge-base.guidelines.md +3 -1
- copilot_session_usage-0.7.2/.github/skills/gh-commit-changes/SKILL.md +31 -0
- copilot_session_usage-0.7.2/.github/skills/gh-create-pull-request/SKILL.md +34 -0
- copilot_session_usage-0.7.2/.github/skills/gh-release-notes/SKILL.md +461 -0
- copilot_session_usage-0.7.2/.github/skills/gh-release-notes/scripts/generate_release_notes.py +296 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/skills/record-finding/SKILL.md +5 -7
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/ci.yml +6 -12
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/publish.yml +11 -8
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/refresh-pricing.yml +2 -2
- copilot_session_usage-0.7.2/.github/workflows/release-notes.yml +95 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/workflows/release.yml +39 -50
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.gitignore +2 -0
- copilot_session_usage-0.7.2/AGENTS.md +82 -0
- copilot_session_usage-0.7.2/CHANGELOG.md +94 -0
- copilot_session_usage-0.7.2/CONSTITUTION.md +125 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/CONTRIBUTING.md +4 -2
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/PKG-INFO +2 -1
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/internal/automated_release_proces.md +41 -28
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/explanation/how-cost-estimation-works.md +11 -0
- copilot_session_usage-0.7.2/docs/source/reference/api.md +31 -0
- copilot_session_usage-0.7.2/docs/source/reference/cli.md +23 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/reference/pricing.md +57 -1
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/justfile +46 -9
- 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
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/findings/index.md +1 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/pyproject.toml +1 -0
- copilot_session_usage-0.7.2/scripts/refresh_pricing.py +9 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/core.py +460 -83
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/api.py +54 -9
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/cli.py +76 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/models-and-pricing.lock +2 -2
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/models-and-pricing.yml +50 -33
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_api.py +23 -3
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_cli.py +82 -3
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_core.py +88 -2
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_coverage_gaps.py +1 -1
- copilot_session_usage-0.7.2/tests/test_generate_release_notes.py +176 -0
- copilot_session_usage-0.7.2/tests/test_pricing_runtime.py +127 -0
- copilot_session_usage-0.7.2/tests/test_release_notes.py +79 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_rendering.py +5 -1
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/uv.lock +11 -0
- copilot_session_usage-0.6.4/.github/guidelines/git-commit-message.guideline.md +0 -99
- copilot_session_usage-0.6.4/.github/skills/gh-release-notes/SKILL.md +0 -325
- copilot_session_usage-0.6.4/.github/workflows/release-notes.yml +0 -134
- copilot_session_usage-0.6.4/AGENTS.md +0 -96
- copilot_session_usage-0.6.4/CHANGELOG.md +0 -48
- copilot_session_usage-0.6.4/docs/source/reference/api.md +0 -18
- copilot_session_usage-0.6.4/docs/source/reference/cli.md +0 -11
- copilot_session_usage-0.6.4/scripts/refresh_pricing.py +0 -9
- copilot_session_usage-0.6.4/scripts/validate_release_notes.py +0 -101
- copilot_session_usage-0.6.4/tests/test_release_notes.py +0 -94
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.editorconfig +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.gitattributes +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/changes/requests/skill-breakdown/01-request.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/pull_request_template.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.github/skills/consolidate-knowledge-base/SKILL.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/.readthedocs.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/LICENSE +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/README.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/_static/changelog.js +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/_static/custom.css +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/changelog.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/conf.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/explanation/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/add-commit-trailer.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/analyze-specific-session.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/batch-and-spending.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/export-json.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/how-to/wsl2.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/installation.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/reference/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/tutorials/getting-started.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/docs/source/tutorials/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Base.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Concept.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Experiment.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Finding.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Hypothesis.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Outcome.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Playbook.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Principle.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Reference.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/_schema/Structure.schema.yaml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/copilot-cli.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/overview.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/session-cost-analysis.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/concepts/threshold-based-pricing.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/experiments/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/experiments/verify-subagent-cost-attribution.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/automation-scripts.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/cost-optimization.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/guides/wsl2-setup.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/ideas/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/ideas/multi-session-efficiency-analytics.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/log.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/principles/findings-are-immutable.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/principles/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/debug-log-format.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/reference/pricing-formats.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/cache-cost-approximation.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/index.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/knowledge-base-information-types.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/session-discovery-algorithm.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/subagent-cost-tracking.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/knowledge/structures/vscode-copilot-extension.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/skills/copilot-session-usage/SKILL.md +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/__init__.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/__init__.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/copilot_cli.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/git.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/_internal/vscode.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/__init__.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/src/copilot_session_usage/data/custom-models-pricing.yml +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/conftest.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_git.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_vscode.py +0 -0
- {copilot_session_usage-0.6.4 → copilot_session_usage-0.7.2}/tests/test_vscode_platform.py +0 -0
- {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
|
-
- [ ]
|
|
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`.
|