copilot-session-usage 0.6.1__tar.gz → 0.6.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.6.1 → copilot_session_usage-0.6.2}/.github/skills/gh-release-notes/SKILL.md +78 -35
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/release-notes.yml +1 -1
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/release.yml +1 -1
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/AGENTS.md +10 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/PKG-INFO +1 -1
- copilot_session_usage-0.6.2/knowledge/findings/2026.07.13-14.27-release-notes-overreported-maintainer-changes.md +34 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/findings/index.md +1 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.editorconfig +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.gitattributes +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/changes/requests/skill-breakdown/01-request.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/guidelines/git-commit-message.guideline.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/guidelines/knowledge-base.guidelines.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/pull_request_template.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/skills/consolidate-knowledge-base/SKILL.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/skills/record-finding/SKILL.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/ci.yml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/publish.yml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/refresh-pricing.yml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.gitignore +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.readthedocs.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/CHANGELOG.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/CONTRIBUTING.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/LICENSE +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/README.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/internal/automated_release_proces.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/_static/changelog.js +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/_static/custom.css +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/changelog.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/conf.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/explanation/how-cost-estimation-works.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/explanation/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/add-commit-trailer.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/analyze-specific-session.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/batch-and-spending.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/export-json.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/wsl2.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/installation.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/reference/api.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/reference/cli.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/reference/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/reference/pricing.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/tutorials/getting-started.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/tutorials/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/justfile +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Base.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Concept.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Experiment.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Finding.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Hypothesis.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Outcome.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Playbook.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Principle.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Reference.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Structure.schema.yaml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/copilot-cli.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/overview.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/session-cost-analysis.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/threshold-based-pricing.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/experiments/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/experiments/verify-subagent-cost-attribution.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/findings/2026.07.02-00.00-subagent-logs-runsubagent-prefix.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/findings/2026.07.02-22.00-title-generation-not-counted-as-model-turn.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/findings/2026.07.02-23.00-cache-write-approximation.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/automation-scripts.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/cost-optimization.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/wsl2-setup.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/ideas/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/ideas/multi-session-efficiency-analytics.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/log.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/principles/findings-are-immutable.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/principles/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/reference/debug-log-format.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/reference/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/reference/pricing-formats.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/cache-cost-approximation.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/index.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/knowledge-base-information-types.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/session-discovery-algorithm.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/subagent-cost-tracking.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/structures/vscode-copilot-extension.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/pyproject.toml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/scripts/refresh_pricing.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/skills/copilot-session-usage/SKILL.md +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/__init__.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/_internal/__init__.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/_internal/copilot_cli.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/_internal/core.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/_internal/git.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/_internal/vscode.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/api.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/cli.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/data/__init__.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/data/custom-models-pricing.yml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/data/models-and-pricing.lock +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/data/models-and-pricing.yml +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/conftest.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_api.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_cli.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_core.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_coverage_gaps.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_git.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_rendering.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_vscode.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/tests/test_vscode_platform.py +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/uv.lock +0 -0
- {copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/uv.toml +0 -0
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/skills/gh-release-notes/SKILL.md
RENAMED
|
@@ -7,10 +7,10 @@ user-invocable: true
|
|
|
7
7
|
|
|
8
8
|
# Release Notes Generator (Git Diff Based)
|
|
9
9
|
|
|
10
|
-
Generate **end-user
|
|
11
|
-
No scripts required —
|
|
10
|
+
Generate **end-user-friendly, user-impact-only** release notes by analyzing the actual changes between releases.
|
|
11
|
+
No scripts required — use git commands to understand what changed and why it matters to someone using the product.
|
|
12
12
|
|
|
13
|
-
The output is meant to be **copy-pasted into a GitHub Release
|
|
13
|
+
The output is meant to be **copy-pasted into a GitHub Release**. It must contain release-note sections only: never add a document title, preamble, file summary, commit summary, or closing separator.
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
@@ -33,12 +33,13 @@ What changed since the last release tag?
|
|
|
33
33
|
## What It Does
|
|
34
34
|
|
|
35
35
|
1. **Reads actual diffs** — examines code changes, not just commit messages
|
|
36
|
-
2. **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
2. **Applies a user-impact gate** — includes a change only when a user-visible behavior, supported interface, user workflow, output, compatibility guarantee, or public documentation experience changed
|
|
37
|
+
4. **Interprets for end-users** — no technical jargon, functions, variable names, file paths, or implementation summaries
|
|
38
|
+
5. **Categorizes intelligently** — Features, Enhancements, Bug Fixes, Breaking Changes, or a no-product-impact classification
|
|
39
|
+
6. **Adds concrete examples** — shows what users see or can do after a qualifying change
|
|
40
|
+
7. **Links to public docs** — points to published documentation, not repo paths
|
|
41
|
+
8. **Consolidates related changes** — groups related diffs and eliminates back-and-forth noise
|
|
42
|
+
9. **Outputs clean markdown** — ready to paste into a GitHub Release note
|
|
42
43
|
|
|
43
44
|
---
|
|
44
45
|
|
|
@@ -58,19 +59,41 @@ Required:
|
|
|
58
59
|
|
|
59
60
|
## Analysis Process
|
|
60
61
|
|
|
62
|
+
### Step 0: Apply the release-worthiness gate
|
|
63
|
+
|
|
64
|
+
Before writing any bullet, ask: **What can a user do, observe, configure, rely on, or learn differently after this change?** Require evidence from the diff, public CLI/API help, supported configuration, user-facing output, migration behavior, or published documentation.
|
|
65
|
+
|
|
66
|
+
Include a change only if it has at least one of these effects:
|
|
67
|
+
|
|
68
|
+
- Adds, removes, fixes, or changes a user-facing feature, command, API, configuration option, output, error message, compatibility guarantee, or supported platform.
|
|
69
|
+
- Changes runtime behavior in a way users can observe, such as performance, reliability, pricing data, security behavior, or data handling.
|
|
70
|
+
- Changes public documentation that users actually consume to operate the product, including a new guide, changed instructions, or migration guidance.
|
|
71
|
+
|
|
72
|
+
Do **not** infer user impact from a commit type, changed filename, test coverage, or the fact that a change is large. If the evidence does not show a user consequence, exclude it.
|
|
73
|
+
|
|
61
74
|
### Step 1: Collect Commits
|
|
62
75
|
```bash
|
|
63
76
|
git log v1.0.0..v1.1.0 --oneline --no-merges
|
|
64
77
|
```
|
|
65
78
|
Gather all commits in the specified range with their messages.
|
|
66
79
|
|
|
67
|
-
### Step 2: Examine
|
|
80
|
+
### Step 2: Examine relevant diffs
|
|
68
81
|
```bash
|
|
69
|
-
git diff v1.0.0..v1.1.0 --
|
|
82
|
+
git diff v1.0.0..v1.1.0 -- . ':(exclude).github' ':(exclude)skills' ':(exclude)guidelines'
|
|
70
83
|
```
|
|
71
|
-
Read actual code changes line-by-line to understand
|
|
84
|
+
Read actual code changes line-by-line to understand behavior. Inspect excluded paths only when needed to verify whether they caused a direct user-visible consequence; never report the paths themselves.
|
|
72
85
|
|
|
73
|
-
|
|
86
|
+
Treat these as non-release content by default:
|
|
87
|
+
|
|
88
|
+
- CI/CD workflows, automation, release jobs, repository settings, and bot configuration
|
|
89
|
+
- Internal skills, agent prompts, contributor guidelines, engineering process, and maintainer runbooks
|
|
90
|
+
- Tests, fixtures, formatting, linting, refactors, type annotations, and code organization
|
|
91
|
+
- Dependency, lockfile, build, packaging, or development-environment changes without a user-visible runtime consequence
|
|
92
|
+
- File counts, changed-file lists, commit counts, authors, implementation details, and internal URLs
|
|
93
|
+
|
|
94
|
+
These exclusions can be overridden only when the diff proves a direct user impact, such as a packaging change that changes the installable artifact or a security fix that changes behavior for users.
|
|
95
|
+
|
|
96
|
+
### Step 3: Interpret qualifying changes
|
|
74
97
|
|
|
75
98
|
Translate technical changes into user impact:
|
|
76
99
|
|
|
@@ -85,6 +108,8 @@ Translate technical changes into user impact:
|
|
|
85
108
|
|
|
86
109
|
**Key: Focus on the user's experience, not the code implementation.**
|
|
87
110
|
|
|
111
|
+
Never turn a repository change into a release note merely by paraphrasing it. For example, “added CI workflow,” “updated contributor guidelines,” “improved project metadata,” and “7 files changed” are not release notes.
|
|
112
|
+
|
|
88
113
|
### Step 4: Identify Breaking Changes
|
|
89
114
|
|
|
90
115
|
Breaking changes come from:
|
|
@@ -99,11 +124,17 @@ Breaking changes come from:
|
|
|
99
124
|
|
|
100
125
|
### Step 6: Categorize & Format
|
|
101
126
|
|
|
102
|
-
Organize changes into buckets. **Only include sections that have content.** Omit empty sections entirely.
|
|
127
|
+
Organize qualifying changes into buckets. **Only include sections that have content.** Omit empty sections entirely. Do not add a title heading.
|
|
103
128
|
|
|
104
|
-
|
|
105
|
-
|
|
129
|
+
If there are no qualifying product changes, use exactly one concise fallback section:
|
|
130
|
+
|
|
131
|
+
- `## Maintenance` for a maintenance release containing internal upkeep, CI, release automation, dependency/build work, refactors, or other operational changes
|
|
132
|
+
- `## Documentation` for a documentation-update release whose meaningful outcome is public user documentation, even when no runtime behavior changed
|
|
133
|
+
- `## Internal` for an internal release containing changes intentionally limited to maintainers, contributors, or internal tooling
|
|
134
|
+
|
|
135
|
+
Choose the most accurate fallback; do not list the underlying files or tasks. A maintenance release may say only that it contains maintenance updates. An internal release may say only that it contains internal updates. Do not manufacture examples or links for either.
|
|
106
136
|
|
|
137
|
+
```markdown
|
|
107
138
|
## New Features
|
|
108
139
|
- Added dark mode toggle in settings
|
|
109
140
|
- New PDF export option
|
|
@@ -135,26 +166,25 @@ Organize changes into buckets. **Only include sections that have content.** Omit
|
|
|
135
166
|
|
|
136
167
|
1. **Parse input** — extract `from_tag`, `to_tag`, `repo_path`, and optional filters
|
|
137
168
|
2. **Discover public docs URL** — inspect `README.md`, `pyproject.toml`, `mkdocs.yml`, `docs/conf.py`, or `.readthedocs.yml` for the published documentation URL. Prefer ReadTheDocs, GitHub Pages, or the project's public docs site. If none is found, omit doc links.
|
|
138
|
-
3. **Fetch commits** — run `git log` with range, collect hashes
|
|
139
|
-
4. **Read diffs per file** — `git show <hash>` for each commit
|
|
140
|
-
5. **
|
|
141
|
-
6. **
|
|
142
|
-
7. **
|
|
143
|
-
8. **
|
|
144
|
-
9. **
|
|
145
|
-
10. **
|
|
146
|
-
11. **
|
|
147
|
-
12. **
|
|
169
|
+
3. **Fetch commits** — run `git log` with range, collect hashes and messages
|
|
170
|
+
4. **Read diffs per file** — use `git show <hash>` for each relevant commit and examine changed behavior, not just filenames
|
|
171
|
+
5. **Apply the user-impact gate** — discard CI, internal, process, and implementation-only changes unless the diff proves direct user impact
|
|
172
|
+
6. **Interpret impact** — state what users can do, observe, configure, rely on, or learn differently
|
|
173
|
+
7. **Detect breaking changes** — scan for BREAKING markers, public API removals, format changes, migrations, and changed defaults
|
|
174
|
+
8. **Group by category** — assign each qualifying change to **New Features**, **Enhancements**, **Bug Fixes**, **Breaking Changes**, **Examples**, or **Documentation**
|
|
175
|
+
9. **Build examples** — for each user-facing change, use README, public docs, tests, or CLI help as evidence and add a short example only when it clarifies the user outcome
|
|
176
|
+
10. **Consolidate** — merge related items, remove duplicates and flip-flops
|
|
177
|
+
11. **Use a fallback** — if no product change qualifies, emit exactly one of **Maintenance**, **Documentation**, or **Internal**
|
|
178
|
+
12. **Format markdown** — generate clean section headings and bullets with no title, preamble, footer, file summary, or commit summary
|
|
179
|
+
13. **Use public docs links** — every Documentation bullet and every feature/enhancement docs reference must use the public URL with a fragment identifier, not a repo-relative path
|
|
148
180
|
|
|
149
181
|
---
|
|
150
182
|
|
|
151
183
|
## Output Format
|
|
152
184
|
|
|
153
|
-
**Clean markdown** for a GitHub Release:
|
|
185
|
+
**Clean markdown** for a GitHub Release body:
|
|
154
186
|
|
|
155
187
|
```markdown
|
|
156
|
-
# Release Notes - v1.1.0
|
|
157
|
-
|
|
158
188
|
## New Features
|
|
159
189
|
- Added dark mode toggle in settings
|
|
160
190
|
- New PDF export option
|
|
@@ -179,16 +209,26 @@ Organize changes into buckets. **Only include sections that have content.** Omit
|
|
|
179
209
|
- [Upgrade instructions](https://docs.example.com/upgrade#database)
|
|
180
210
|
```
|
|
181
211
|
|
|
212
|
+
For a release with no runtime product impact, use a short note such as:
|
|
213
|
+
|
|
214
|
+
```markdown
|
|
215
|
+
## Maintenance
|
|
216
|
+
- Maintenance release with no user-facing behavior changes.
|
|
217
|
+
```
|
|
218
|
+
|
|
182
219
|
**Key Rules:**
|
|
183
220
|
- One line per bullet point
|
|
184
221
|
- No sub-bullets or elaborate descriptions
|
|
185
|
-
- User impact only (not implementation details)
|
|
222
|
+
- User impact only (not implementation details, changed-file summaries, CI, internal process, or contributor guidance)
|
|
223
|
+
- Do not include a title heading; the GitHub Release supplies the title
|
|
186
224
|
- Use public documentation URLs; never use repo-relative paths like `docs/...` or `README.md`
|
|
187
225
|
- Use fragment identifiers (`#section-name`) to point to specific docs sections
|
|
188
226
|
- Add an **Examples** section when the diff shows a CLI command, API call, config snippet, or before/after behavior
|
|
189
|
-
- Add a **Documentation** section when
|
|
227
|
+
- Add a **Documentation** section only when public user documentation changed in a way users need or benefit from; never report internal guidelines or maintainer documentation
|
|
190
228
|
- Multiple links OK if they point to different topics
|
|
191
229
|
- Omit any section that has no bullets
|
|
230
|
+
- If no user-facing change qualifies, emit exactly one concise `Maintenance`, `Documentation`, or `Internal` section
|
|
231
|
+
- Never include file counts, changed-file lists, commit metadata, CI/workflow summaries, or a closing separator
|
|
192
232
|
- Do not add a "Notes", "Miscellaneous", or "Other" catch-all section
|
|
193
233
|
|
|
194
234
|
---
|
|
@@ -199,7 +239,7 @@ When this skill is invoked by a CI job with an explicit request for machine-read
|
|
|
199
239
|
|
|
200
240
|
- Honor the requested tag range and repository path exactly.
|
|
201
241
|
- Do not modify, commit, or push repository files unless the caller explicitly requests it.
|
|
202
|
-
- Return only the final release-note Markdown, without an explanation or
|
|
242
|
+
- Return only the final release-note Markdown, without an explanation, title heading, or code fence.
|
|
203
243
|
- Preserve the user-impact categories, examples, breaking-change detection, and public documentation links described above.
|
|
204
244
|
|
|
205
245
|
## How to Use This Skill in a Session
|
|
@@ -226,6 +266,7 @@ Generate release notes from v2.1.0 to v2.2.0 for /path/to/my-app
|
|
|
226
266
|
✅ **Do:**
|
|
227
267
|
- Read actual diffs to understand changes
|
|
228
268
|
- Use end-user language ("improved performance" not "optimized O(n) loop")
|
|
269
|
+
- Require evidence of a user-visible consequence before including a change
|
|
229
270
|
- Include breaking changes prominently
|
|
230
271
|
- Group related changes
|
|
231
272
|
- Add concrete examples drawn from README, docs, tests, or CLI help in the diff
|
|
@@ -239,6 +280,8 @@ Generate release notes from v2.1.0 to v2.2.0 for /path/to/my-app
|
|
|
239
280
|
- Include dependency bumps or build changes unless they are user-visible
|
|
240
281
|
- Include secrets, passwords, or internal URLs
|
|
241
282
|
- Use repo-relative paths like `docs/source/how-to/...` or `README.md`
|
|
283
|
+
- Report CI, workflows, internal skills, contributor guidelines, maintainer process, file counts, or changed-file lists as release content
|
|
284
|
+
- Add a title heading to the generated body
|
|
242
285
|
- Make up changes not shown in diffs
|
|
243
286
|
|
|
244
287
|
---
|
|
@@ -264,8 +307,8 @@ Generate release notes from v2.1.0 to v2.2.0 for /path/to/my-app
|
|
|
264
307
|
|
|
265
308
|
## Limitations
|
|
266
309
|
|
|
267
|
-
- Requires git repository with proper tags
|
|
310
|
+
- Requires a git repository with proper tags
|
|
268
311
|
- Complex changes may need human interpretation
|
|
269
|
-
- Very large diffs
|
|
312
|
+
- Very large diffs should be reduced to their evidenced user impact; never summarize them by file count
|
|
270
313
|
- Works best with semantic versioning (v1.0.0 format)
|
|
271
|
-
- Needs meaningful commit messages for best results
|
|
314
|
+
- Needs meaningful commit messages for best results, but commit messages alone are never evidence of user impact
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/release-notes.yml
RENAMED
|
@@ -80,7 +80,7 @@ jobs:
|
|
|
80
80
|
|
|
81
81
|
Generate the final release notes for ${TARGET_TAG}, covering the actual changes from ${PREVIOUS_TAG} to ${TARGET_TAG} in ${GITHUB_WORKSPACE}.
|
|
82
82
|
|
|
83
|
-
Follow the skill's diff-based analysis process.
|
|
83
|
+
Follow the skill's diff-based analysis process. Include only changes with a proven user-facing consequence; exclude CI, workflows, release automation, internal skills, guidelines, tests, file lists, and other repository housekeeping unless the diff proves direct product impact. If there is no product impact, emit one concise Maintenance, Documentation, or Internal section. Return only the final release-note Markdown, with no title heading, introduction, explanation, file summary, or code fence. Do not modify any repository files."
|
|
84
84
|
|
|
85
85
|
gh copilot -- \
|
|
86
86
|
--prompt "$prompt" \
|
|
@@ -143,7 +143,7 @@ jobs:
|
|
|
143
143
|
|
|
144
144
|
Generate the final release notes for ${TARGET_TAG}, covering the actual changes from ${PREVIOUS_TAG} to ${TARGET_TAG} in ${GITHUB_WORKSPACE}.
|
|
145
145
|
|
|
146
|
-
Follow the skill's diff-based analysis process.
|
|
146
|
+
Follow the skill's diff-based analysis process. Include only changes with a proven user-facing consequence; exclude CI, workflows, release automation, internal skills, guidelines, tests, file lists, and other repository housekeeping unless the diff proves direct product impact. If there is no product impact, emit one concise Maintenance, Documentation, or Internal section. Return only the final release-note Markdown, with no title heading, introduction, explanation, file summary, or code fence. Do not modify, commit, or push any repository files."
|
|
147
147
|
|
|
148
148
|
gh copilot -- \
|
|
149
149
|
--prompt "$prompt" \
|
|
@@ -77,6 +77,16 @@ to understand the rules of the knowledge base in `knowledge/`.
|
|
|
77
77
|
- **Detail levels**: `minimal` < `compact` < `full`
|
|
78
78
|
- **Output formats**: `json`, `table`, `detailed` (alias for table + full detail)
|
|
79
79
|
|
|
80
|
+
## Git History and Pull Requests
|
|
81
|
+
|
|
82
|
+
This repository must maintain a linear history. **Never create a merge commit.**
|
|
83
|
+
|
|
84
|
+
- Rebase a feature branch onto the current target branch before opening or updating a pull request: `git fetch origin main && git rebase origin/main`.
|
|
85
|
+
- When the target branch advances, rebase again; do not merge `main` into the feature branch.
|
|
86
|
+
- Resolve conflicts during the rebase, run the relevant checks, and update the remote branch with `git push --force-with-lease` when required.
|
|
87
|
+
- Merge pull requests only with a squash merge or a rebase/fast-forward merge. Never use a merge commit or `--no-ff`.
|
|
88
|
+
- Do not force-push protected branches; `--force-with-lease` is permitted only for the contributor's feature branch.
|
|
89
|
+
|
|
80
90
|
## Before You Commit
|
|
81
91
|
|
|
82
92
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: copilot-session-usage
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Usage and cost analytics for GitHub Copilot and Copilot-CLI session logs
|
|
5
5
|
Project-URL: Homepage, https://github.com/gsemet/copilot-session-usage
|
|
6
6
|
Project-URL: Documentation, https://copilot-session-usage.readthedocs.io/en/stable/
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Finding
|
|
3
|
+
title: Release-note generation reported maintainer changes as user-facing
|
|
4
|
+
features
|
|
5
|
+
description: The generated v0.6.1 draft release notes described contributor
|
|
6
|
+
guidelines, project metadata, and file counts instead of observable product
|
|
7
|
+
changes.
|
|
8
|
+
tags: [release-notes, copilot, user-impact, github-actions]
|
|
9
|
+
timestamp: 2026-07-13T14:27:04Z
|
|
10
|
+
confidence: high
|
|
11
|
+
context: >-
|
|
12
|
+
Observed in the draft release generated for v0.6.1 from the v0.6.0 range in
|
|
13
|
+
gsemet/copilot-session-usage. The custom release-note skill and workflow did
|
|
14
|
+
not explicitly exclude internal guidelines, CI/process changes, or file
|
|
15
|
+
summaries, and the generated body included those items plus a title heading.
|
|
16
|
+
The comparison was made against the user-facing v0.5.0 release notes.
|
|
17
|
+
links: []
|
|
18
|
+
backlinks: []
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
The v0.6.1 release-note generation treated repository-maintenance changes as
|
|
22
|
+
product features: it listed knowledge-base and commit-message guidelines,
|
|
23
|
+
contributing documentation, project metadata, and counts of modified/added
|
|
24
|
+
files. These items were not shown as changes that users could observe or use.
|
|
25
|
+
|
|
26
|
+
This matters because a diff-based release-note prompt needs an explicit
|
|
27
|
+
user-impact gate and a hard exclusion for CI, internal process, contributor
|
|
28
|
+
material, and implementation-only changes. A no-product-impact release should
|
|
29
|
+
instead receive one concise internal, documentation-update, or maintenance
|
|
30
|
+
classification, and the generated body should not add its own title heading.
|
|
31
|
+
|
|
32
|
+
Caveat: this finding is based on one generated draft release and the local
|
|
33
|
+
skill/workflow revision made afterward; it does not establish that every
|
|
34
|
+
release range will produce the same pollution.
|
|
@@ -6,5 +6,6 @@ The body and claim are immutable once written. To correct a Finding, write a new
|
|
|
6
6
|
Belongs to the Storage layer. Findings are promoted into Concepts or Structures when they converge and stabilize. They may also support Principles.
|
|
7
7
|
|
|
8
8
|
- [cache_write approximated via fresh_input — matches AIC panel exactly](2026.07.02-23.00-cache-write-approximation.md) — VS Code JSONL logs and agent-traces.db both lack cache_creation token counts. Approximating cache_creation as fresh_input = inputTokens - cachedTokens and billing only the incremental delta (cache_write - input) / 1M produces an exact match to the VS Code AIC panel. Implemented in estimate_cost since v0.3. [Finding]
|
|
9
|
+
- [Release-note generation reported maintainer changes as user-facing features](2026.07.13-14.27-release-notes-overreported-maintainer-changes.md) — The generated v0.6.1 draft release notes described contributor guidelines, project metadata, and file counts instead of observable product changes. [Finding]
|
|
9
10
|
- [Subagent Logs Use runSubagent Prefix](2026.07.02-00.00-subagent-logs-runsubagent-prefix.md) — Subagent activity is recorded in separate JSONL files prefixed with "runSubagent-" inside the session debug-logs directory. [Finding]
|
|
10
11
|
- [title-*.jsonl adds 1 LLM call and its tokens to tool totals; VS Code panel excludes it](2026.07.02-22.00-title-generation-not-counted-as-model-turn.md) — The VS Code Agent Debug panel "Model Turns" counter excludes title-generation calls. copilot-session-usage counts them. The delta is exactly the title-*.jsonl file's token counts. [Finding]
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/ISSUE_TEMPLATE/bug_report.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/pull_request_template.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/skills/record-finding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/.github/workflows/refresh-pricing.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/_static/changelog.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/explanation/index.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/add-commit-trailer.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/batch-and-spending.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/how-to/export-json.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/reference/pricing.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/docs/source/tutorials/getting-started.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Base.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Concept.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Experiment.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Finding.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Hypothesis.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Outcome.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Playbook.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Principle.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Reference.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/_schema/Structure.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/concepts/copilot-cli.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/automation-scripts.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/guides/cost-optimization.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/reference/debug-log-format.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/knowledge/reference/pricing-formats.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/skills/copilot-session-usage/SKILL.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/api.py
RENAMED
|
File without changes
|
{copilot_session_usage-0.6.1 → copilot_session_usage-0.6.2}/src/copilot_session_usage/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|