Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .chglog/CHANGELOG.tpl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{{ if .Versions -}}
<a name="unreleased"></a>
## [Unreleased]

{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}

{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}

{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}

{{- if .RevertCommits -}}
### Reverts

{{ range .RevertCommits -}}
- {{ .Revert.Header }}
{{ end }}
{{ end -}}

{{- if .MergeCommits -}}
### Pull Requests
{{ range .MergeCommits -}}
- {{ .Header }}
{{ end }}
{{ end -}}

{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}

{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{- if .Versions }}
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
64 changes: 64 additions & 0 deletions .chglog/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
style: none
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: https://github.com/KubeRocketCI/claude-code-telemetry

options:
tag_filter_pattern: '^v'
sort: "semVer"

commits:
filters:
Type:
- feat
- fix
- perf
- refactor
- style
- test
- docs
- ci
- build
- deps
- chore

commit_groups:
group_by: Type
sort_by: Custom
title_order:
- feat
- fix
- perf
- refactor
- style
- test
- docs
- ci
- build
- deps
- chore
title_maps:
feat: Features
fix: Bug Fixes
perf: Performance Improvements
refactor: Code Refactoring
style: Formatting
test: Testing
docs: Documentation
ci: CI
build: Build
deps: Dependencies
chore: Routine

header:
# Matches optional Jira prefix (e.g. "EPMDEDP-123: "), a conventional-commit
# type, an optional scope like "(deps)", and an optional "!" breaking marker.
pattern: "^(?:[A-Z]+-\\d+:\\s)?(\\w+)(?:\\(.+?\\))?!?:\\s(.*)$"
pattern_maps:
- Type
- Subject

notes:
keywords:
- "BREAKING CHANGE:"
29 changes: 29 additions & 0 deletions .chglog/release.tpl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}

{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}

{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}

{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{- if .Versions }}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
48 changes: 48 additions & 0 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Commit Message Validation

on:
pull_request:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

permissions:
contents: read
pull-requests: read

jobs:
check-commit-message:
name: Validate commit messages
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Check commit format
uses: gsactions/commit-message-checker@v2
with:
# Human commits MUST carry a Jira ID: "EPMDEDP-<ID>: <type>: <desc>".
# The only exception is Dependabot bumps, which cannot reference a
# ticket (e.g. "deps(deps): bump ..." or "ci: bump ...").
pattern: '^(EPMDEDP-\d+: (build|chore|ci|docs|feat|fix|perf|refactor|style|test)(!)?: .+|(build|chore|ci|deps)(\(deps\))?: [Bb]ump .+)$'
error: 'Commit title must be "EPMDEDP-<ID>: <type>: <description>" (Jira ID is mandatory). Example: "EPMDEDP-16058: feat: add feature".'
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}

- name: Check commit title length
uses: gsactions/commit-message-checker@v2
with:
pattern: '^.{10,120}$'
error: 'Commit title must be between 10 and 120 characters long.'
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}
51 changes: 51 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Create KRCI release

on:
push:
tags:
- 'v*'

env:
GO_VERSION: '1.25.8'
GITCHGLOG_VERSION: 'v0.15.4'

permissions:
contents: write

jobs:
prepare-release:
name: Perform automatic release on trigger ${{ github.ref }}
runs-on: ubuntu-latest
env:
# The name of the tag as supplied by the GitHub event, e.g. refs/tags/v0.1.0
SOURCE_TAG: ${{ github.ref }}
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: ${{ env.GO_VERSION }}

- name: Generate release notes
run: |
set -xue

# refs/tags/v0.1.0 -> v0.1.0
RELEASE_TAG="${SOURCE_TAG##*/}"

go install github.com/git-chglog/git-chglog/cmd/git-chglog@${GITCHGLOG_VERSION}

git-chglog --template .chglog/release.tpl.md -o release.md "${RELEASE_TAG}"

echo "RELEASE_TAG=${RELEASE_TAG}" >> "$GITHUB_ENV"

- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: ${{ env.RELEASE_TAG }}
body_path: release.md
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ deploy-templates/Chart.lock

# Claude local
.claude/settings.local.json

# Tools
bin/
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<a name="unreleased"></a>
## [Unreleased]


<a name="v0.1.0"></a>
## v0.1.0 - 2026-07-11
### Features

- add role-audit Wave 1 widgets for delivery, safety, and session diagnostics
- add adoption, efficiency, and plugin governance panels
- add Session Explorer dashboard and security audit panels
- add Efficiency & ROI and Governance & Security dashboards
- add spec/ vocabulary of full Claude Code OTEL surface
- add Operations & Adoption dashboard for DAU/WAU/MAU and API health

### Bug Fixes

- pin prometheus server service name so the Grafana datasource resolves
- enable health_check extension so collector liveness probes pass on Kubernetes
- render audit bar charts as one bar per category instead of timestamp series
- align dashboards with OTel counter metric names and add collector health dashboard

### Documentation

- Update documentation

### Routine

- bootstrap claude-code-telemetry (local testbed + self-contained Helm bundle)


[Unreleased]: https://github.com/KubeRocketCI/claude-code-telemetry/compare/v0.1.0...HEAD
45 changes: 45 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
CURRENT_DIR = $(shell pwd)
LOCALBIN ?= $(CURRENT_DIR)/bin

# Tool Versions
GITCHGLOG_VERSION ?= v0.15.4
HELMDOCS_VERSION ?= v1.14.2

GITCHGLOG ?= $(LOCALBIN)/git-chglog
HELMDOCS ?= $(LOCALBIN)/helm-docs

SHELL = /bin/bash -o pipefail -o errexit

.PHONY: all
all: help

$(LOCALBIN):
mkdir -p $(LOCALBIN)

# use https://github.com/git-chglog/git-chglog/
.PHONY: changelog
changelog: git-chglog ## Generate CHANGELOG.md from conventional commits
ifneq (${NEXT_RELEASE_TAG},)
$(GITCHGLOG) --next-tag v${NEXT_RELEASE_TAG} -o CHANGELOG.md
else
$(GITCHGLOG) -o CHANGELOG.md
endif

.PHONY: git-chglog
git-chglog: $(GITCHGLOG) ## Download git-chglog locally if necessary
$(GITCHGLOG): $(LOCALBIN)
@test -x $(GITCHGLOG) || GOBIN=$(LOCALBIN) go install github.com/git-chglog/git-chglog/cmd/git-chglog@$(GITCHGLOG_VERSION)

# use https://github.com/norwoodj/helm-docs/
.PHONY: helm-docs
helm-docs: helmdocs ## Generate Helm chart docs (deploy-templates/README.md)
$(HELMDOCS) --chart-search-root deploy-templates

.PHONY: helmdocs
helmdocs: $(HELMDOCS) ## Download helm-docs locally if necessary
$(HELMDOCS): $(LOCALBIN)
@test -x $(HELMDOCS) || GOBIN=$(LOCALBIN) go install github.com/norwoodj/helm-docs/cmd/helm-docs@$(HELMDOCS_VERSION)

.PHONY: help
help: ## Display this help screen
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
9 changes: 9 additions & 0 deletions ct.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
validate-maintainers: false
# Register the remote repositories for the chart's external subchart
# dependencies so `ct lint` can build them on a clean CI node (where no
# `helm repo add` has run yet). See deploy-templates/Chart.yaml dependencies.
chart-repos:
- opentelemetry=https://open-telemetry.github.io/opentelemetry-helm-charts
- grafana=https://grafana.github.io/helm-charts
- prometheus-community=https://prometheus-community.github.io/helm-charts
helm-dependency-extra-args: "--skip-refresh"
Loading